aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-04-04 20:24:31 +0200
committerShauren <shauren.trinity@gmail.com>2015-04-04 20:24:31 +0200
commit38b326d27ba211b80a5028a3ce3e4381fd019b73 (patch)
tree225edaeff1c8c2d552753ae2f5b6d3b52d7deb67 /src
parente7e940db2255bdc06647cd4e81ec2ef3d2fbaa28 (diff)
Core/PacketIO: Updated cooldown packets
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp18
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h26
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp12
-rw-r--r--src/server/game/Spells/SpellHistory.cpp13
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());
}