Core/PacketIO: Updated cooldown packets
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user