From 1fb8a520321804d3ccee36b2962e042a29391375 Mon Sep 17 00:00:00 2001 From: GriffonHeart Date: Sun, 15 Feb 2009 12:00:47 +0300 Subject: [PATCH] Propertly send SMSG_SET_PHASE_SHIFT to inform client about phase shift at phase change. Signed-off-by: VladimirMangos --- src/game/Chat.cpp | 1 + src/game/Chat.h | 1 + src/game/SpellAuras.cpp | 2 ++ src/game/WorldSession.cpp | 7 +++++++ src/game/WorldSession.h | 1 + src/game/debugcmds.cpp | 10 ++++++++++ 6 files changed, 22 insertions(+) diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 84e33eb8f..92ae6b394 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -210,6 +210,7 @@ ChatCommand * ChatHandler::getCommandTable() { "ps", SEC_ADMINISTRATOR, false, &ChatHandler::HandlePlaySound2Command, "", NULL }, { "scn", SEC_ADMINISTRATOR, false, &ChatHandler::HandleSendChannelNotifyCommand, "", NULL }, { "scm", SEC_ADMINISTRATOR, false, &ChatHandler::HandleSendChatMsgCommand, "", NULL }, + { "sps", SEC_ADMINISTRATOR, false, &ChatHandler::HandleSendSetPhaseShiftCommand, "", NULL }, { "getitemstate", SEC_ADMINISTRATOR, false, &ChatHandler::HandleGetItemState, "", NULL }, { "playsound", SEC_MODERATOR, false, &ChatHandler::HandlePlaySoundCommand, "", NULL }, { "update", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUpdate, "", NULL }, diff --git a/src/game/Chat.h b/src/game/Chat.h index 02e47f4e2..a3b34885b 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -442,6 +442,7 @@ class ChatHandler bool HandleDebugBattlegroundCommand(const char * args); bool HandleSpawnVehicle(const char * args); bool HandleSendLargePacketCommand(const char * args); + bool HandleSendSetPhaseShiftCommand(const char * args); Player* getSelectedPlayer(); Creature* getSelectedCreature(); diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index d095f17bb..39604ab5f 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -6585,6 +6585,8 @@ void Aura::HandlePhase(bool apply, bool Real) // GM-mode have mask 0xFFFFFFFF if(!((Player*)m_target)->isGameMaster()) m_target->SetPhaseMask(apply ? GetMiscValue() : PHASEMASK_NORMAL,false); + + ((Player*)m_target)->GetSession()->SendSetPhaseShift(apply ? GetMiscValue() : PHASEMASK_NORMAL); } else m_target->SetPhaseMask(apply ? GetMiscValue() : PHASEMASK_NORMAL,false); diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp index 993c3aa04..9101711a9 100644 --- a/src/game/WorldSession.cpp +++ b/src/game/WorldSession.cpp @@ -464,6 +464,13 @@ void WorldSession::SendNotification(int32 string_id,...) } } +void WorldSession::SendSetPhaseShift(uint32 PhaseShift) +{ + WorldPacket data(SMSG_SET_PHASE_SHIFT, 4); + data << uint32(PhaseShift); + SendPacket(&data); +} + const char * WorldSession::GetMangosString( int32 entry ) const { return objmgr.GetMangosString(entry,GetSessionDbLocaleIndex()); diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h index 9765ed5a7..59ee0d9cf 100644 --- a/src/game/WorldSession.h +++ b/src/game/WorldSession.h @@ -99,6 +99,7 @@ class MANGOS_DLL_SPEC WorldSession void SendLfgResult(uint32 type, uint32 entry, uint8 lfg_type); void SendPartyResult(PartyOperation operation, const std::string& member, PartyResult res); void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2,3); + void SendSetPhaseShift(uint32 phaseShift); uint32 GetSecurity() const { return _security; } uint32 GetAccountId() const { return _accountId; } diff --git a/src/game/debugcmds.cpp b/src/game/debugcmds.cpp index 189a077d7..61f2d20ec 100644 --- a/src/game/debugcmds.cpp +++ b/src/game/debugcmds.cpp @@ -592,3 +592,13 @@ bool ChatHandler::HandleSendLargePacketCommand(const char* args) SendSysMessage(ss.str().c_str()); return true; } + +bool ChatHandler::HandleSendSetPhaseShiftCommand(const char* args) +{ + if(!args) + return false; + + uint32 PhaseShift = atoi(args); + m_session->SendSetPhaseShift(PhaseShift); + return true; +}