diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-04-04 20:24:31 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-04-04 20:24:31 +0200 |
commit | 38b326d27ba211b80a5028a3ce3e4381fd019b73 (patch) | |
tree | 225edaeff1c8c2d552753ae2f5b6d3b52d7deb67 | |
parent | e7e940db2255bdc06647cd4e81ec2ef3d2fbaa28 (diff) |
Core/PacketIO: Updated cooldown packets
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.h | 26 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Spells/SpellHistory.cpp | 13 |
4 files changed, 38 insertions, 31 deletions
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 389b18ab9e7..01164039420 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -482,19 +482,22 @@ WorldPacket const* WorldPackets::Spells::UnlearnedSpells::Write() WorldPacket const* WorldPackets::Spells::CooldownEvent::Write() { - _worldPacket << CasterGUID; _worldPacket << int32(SpellID); + _worldPacket.WriteBit(IsPet); + _worldPacket.FlushBits(); return &_worldPacket; } WorldPacket const* WorldPackets::Spells::ClearCooldowns::Write() { - _worldPacket << Guid; _worldPacket << uint32(SpellID.size()); if (!SpellID.empty()) _worldPacket.append(SpellID.data(), SpellID.size()); + _worldPacket.WriteBit(IsPet); + _worldPacket.FlushBits(); + return &_worldPacket; } @@ -502,7 +505,7 @@ WorldPacket const* WorldPackets::Spells::ClearCooldown::Write() { _worldPacket << uint32(SpellID); _worldPacket.WriteBit(ClearOnHold); - _worldPacket.WriteBit(Unk20); + _worldPacket.WriteBit(IsPet); _worldPacket.FlushBits(); return &_worldPacket; @@ -511,8 +514,9 @@ WorldPacket const* WorldPackets::Spells::ClearCooldown::Write() WorldPacket const* WorldPackets::Spells::ModifyCooldown::Write() { _worldPacket << int32(SpellID); - _worldPacket << UnitGUID; _worldPacket << int32(DeltaTime); + _worldPacket.WriteBit(IsPet); + _worldPacket.FlushBits(); return &_worldPacket; } @@ -559,15 +563,17 @@ WorldPacket const* WorldPackets::Spells::SendSpellHistory::Write() WorldPacket const* WorldPackets::Spells::ClearAllSpellCharges::Write() { - _worldPacket << Unit; + _worldPacket.WriteBit(IsPet); + _worldPacket.FlushBits(); return &_worldPacket; } WorldPacket const* WorldPackets::Spells::ClearSpellCharges::Write() { - _worldPacket << Unit; _worldPacket << int32(Category); + _worldPacket.WriteBit(IsPet); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index d5731ad1578..86bbf76b0c0 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -412,46 +412,46 @@ namespace WorldPackets class CooldownEvent final : public ServerPacket { public: - CooldownEvent() : ServerPacket(SMSG_COOLDOWN_EVENT, 16 + 4) { } - CooldownEvent(ObjectGuid casterGuid, int32 spellId) : ServerPacket(SMSG_COOLDOWN_EVENT, 16 + 4), CasterGUID(casterGuid), SpellID(spellId) { } + CooldownEvent() : ServerPacket(SMSG_COOLDOWN_EVENT, 1 + 4) { } + CooldownEvent(bool isPet, int32 spellId) : ServerPacket(SMSG_COOLDOWN_EVENT, 16 + 4), IsPet(isPet), SpellID(spellId) { } WorldPacket const* Write() override; - ObjectGuid CasterGUID; + bool IsPet = false; int32 SpellID; }; class ClearCooldowns final : public ServerPacket { public: - ClearCooldowns() : ServerPacket(SMSG_CLEAR_COOLDOWNS, 4 + 16) { } + ClearCooldowns() : ServerPacket(SMSG_CLEAR_COOLDOWNS, 4 + 1) { } WorldPacket const* Write() override; std::vector<int32> SpellID; - ObjectGuid Guid; + bool IsPet = false; }; class ClearCooldown final : public ServerPacket { public: - ClearCooldown() : ServerPacket(SMSG_CLEAR_COOLDOWN, 16 + 4 + 1) { } + ClearCooldown() : ServerPacket(SMSG_CLEAR_COOLDOWN, 1 + 4 + 1) { } WorldPacket const* Write() override; + bool IsPet = false; int32 SpellID = 0; bool ClearOnHold = false; - bool Unk20 = false; }; class ModifyCooldown final : public ServerPacket { public: - ModifyCooldown() : ServerPacket(SMSG_MODIFY_COOLDOWN, 16 + 4 + 4) { } + ModifyCooldown() : ServerPacket(SMSG_MODIFY_COOLDOWN, 1 + 4 + 4) { } WorldPacket const* Write() override; - ObjectGuid UnitGUID; + bool IsPet = false; int32 DeltaTime = 0; int32 SpellID = 0; }; @@ -500,21 +500,21 @@ namespace WorldPackets class ClearAllSpellCharges final : public ServerPacket { public: - ClearAllSpellCharges() : ServerPacket(SMSG_CLEAR_ALL_SPELL_CHARGES, 16) { } + ClearAllSpellCharges() : ServerPacket(SMSG_CLEAR_ALL_SPELL_CHARGES, 1) { } WorldPacket const* Write() override; - ObjectGuid Unit; + bool IsPet = false; }; class ClearSpellCharges final : public ServerPacket { public: - ClearSpellCharges() : ServerPacket(SMSG_CLEAR_SPELL_CHARGES, 20) { } + ClearSpellCharges() : ServerPacket(SMSG_CLEAR_SPELL_CHARGES, 1 + 4) { } WorldPacket const* Write() override; - ObjectGuid Unit; + bool IsPet = false; int32 Category = 0; }; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 8d33cdd9b64..cf082d266a0 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1008,12 +1008,12 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_WARGAME_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHUNKED_PACKET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_ALL_SPELL_CHARGES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_ALL_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_BOSS_EMOTES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWNS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWNS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_SPELL_CHARGES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COIN_REMOVED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMBAT_EVENT_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1030,7 +1030,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTROL_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_EVENT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_LOCATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_RECLAIM_DELAY, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_TRANSPORT_QUERY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1318,7 +1318,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRROR_IMAGE_COMPONENTED_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRROR_IMAGE_CREATURE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MISSILE_CANCEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MODIFY_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MODIFY_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOTD, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOUNT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_APPLY_MOVEMENT_FORCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index 5611480b2f6..40d5d75ba6f 100644 --- a/src/server/game/Spells/SpellHistory.cpp +++ b/src/server/game/Spells/SpellHistory.cpp @@ -504,7 +504,7 @@ void SpellHistory::SendCooldownEvent(SpellInfo const* spellInfo, uint32 itemId / if (Player* player = GetPlayerOwner()) { // Send activate cooldown timer (possible 0) at client side - player->SendDirectMessage(WorldPackets::Spells::CooldownEvent(_owner->GetGUID(), spellInfo->Id).Write()); + player->SendDirectMessage(WorldPackets::Spells::CooldownEvent(player != _owner, spellInfo->Id).Write()); uint32 category = spellInfo->GetCategory(); if (category && spellInfo->CategoryRecoveryTime) @@ -525,7 +525,7 @@ void SpellHistory::SendCooldownEvent(SpellInfo const* spellInfo, uint32 itemId / if (!spellInfo2->IsCooldownStartedOnEvent()) continue; - player->SendDirectMessage(WorldPackets::Spells::CooldownEvent(_owner->GetGUID(), categorySpell).Write()); + player->SendDirectMessage(WorldPackets::Spells::CooldownEvent(player != _owner, categorySpell).Write()); } } } @@ -556,7 +556,7 @@ void SpellHistory::ModifyCooldown(uint32 spellId, int32 cooldownModMs) if (Player* playerOwner = GetPlayerOwner()) { WorldPackets::Spells::ModifyCooldown modifyCooldown; - modifyCooldown.UnitGUID = _owner->GetGUID(); + modifyCooldown.IsPet = _owner != playerOwner; modifyCooldown.SpellID = spellId; modifyCooldown.DeltaTime = cooldownModMs; playerOwner->SendDirectMessage(modifyCooldown.Write()); @@ -579,6 +579,7 @@ void SpellHistory::ResetCooldown(CooldownStorageType::iterator& itr, bool update if (Player* playerOwner = GetPlayerOwner()) { WorldPackets::Spells::ClearCooldown clearCooldown; + clearCooldown.IsPet = _owner != playerOwner; clearCooldown.SpellID = itr->first; clearCooldown.ClearOnHold = false; playerOwner->SendDirectMessage(clearCooldown.Write()); @@ -752,7 +753,7 @@ void SpellHistory::ResetCharges(SpellCategoryEntry const* chargeCategoryEntry) if (Player* player = GetPlayerOwner()) { WorldPackets::Spells::ClearSpellCharges clearSpellCharges; - clearSpellCharges.Unit = _owner->GetGUID(); + clearSpellCharges.IsPet = _owner != player; clearSpellCharges.Category = chargeCategoryEntry->ID; player->SendDirectMessage(clearSpellCharges.Write()); } @@ -766,7 +767,7 @@ void SpellHistory::ResetAllCharges() if (Player* player = GetPlayerOwner()) { WorldPackets::Spells::ClearAllSpellCharges clearAllSpellCharges; - clearAllSpellCharges.Unit = _owner->GetGUID(); + clearAllSpellCharges.IsPet = _owner != player; player->SendDirectMessage(clearAllSpellCharges.Write()); } } @@ -841,7 +842,7 @@ void SpellHistory::SendClearCooldowns(std::vector<int32> const& cooldowns) const if (Player const* playerOwner = GetPlayerOwner()) { WorldPackets::Spells::ClearCooldowns clearCooldowns; - clearCooldowns.Guid = _owner->GetGUID(); + clearCooldowns.IsPet = _owner != playerOwner; clearCooldowns.SpellID = cooldowns; playerOwner->SendDirectMessage(clearCooldowns.Write()); } |