mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 08:28:32 +01:00
Core/PacketIO: SMSG_DESTRUCTIBLE_BUILDING_DAMAGE
This commit is contained in:
@@ -1985,14 +1985,13 @@ void GameObject::ModifyHealth(int32 change, Unit* attackerOrHealer /*= NULL*/, u
|
||||
// dealing damage, send packet
|
||||
if (player)
|
||||
{
|
||||
WorldPacket data(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, 8 + 8 + 8 + 4 + 4);
|
||||
data << GetPackGUID();
|
||||
data << attackerOrHealer->GetPackGUID();
|
||||
data << player->GetPackGUID();
|
||||
data << uint32(-change); // change < 0 triggers SPELL_BUILDING_HEAL combat log event
|
||||
// change >= 0 triggers SPELL_BUILDING_DAMAGE event
|
||||
data << uint32(spellId);
|
||||
player->SendDirectMessage(&data);
|
||||
WorldPackets::GameObject::DestructibleBuildingDamage packet;
|
||||
packet.Caster = attackerOrHealer->GetGUID(); // todo: this can be a GameObject
|
||||
packet.Target = GetGUID();
|
||||
packet.Damage = -change;
|
||||
packet.Owner = player->GetGUID();
|
||||
packet.SpellID = spellId;
|
||||
player->SendDirectMessage(packet.Write());
|
||||
}
|
||||
|
||||
GameObjectDestructibleState newState = GetDestructibleState();
|
||||
|
||||
@@ -48,3 +48,14 @@ WorldPacket const* WorldPackets::GameObject::GameObjectActivateAnimKit::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const * WorldPackets::GameObject::DestructibleBuildingDamage::Write()
|
||||
{
|
||||
_worldPacket << Target;
|
||||
_worldPacket << Owner;
|
||||
_worldPacket << Caster;
|
||||
_worldPacket << int32(Damage);
|
||||
_worldPacket << int32(SpellID);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -78,6 +78,20 @@ namespace WorldPackets
|
||||
int32 AnimKitID = 0;
|
||||
bool Maintain = false;
|
||||
};
|
||||
|
||||
class DestructibleBuildingDamage final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
DestructibleBuildingDamage() : ServerPacket(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, 16 + 16 + 16 + 4 + 4) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid Target;
|
||||
ObjectGuid Caster;
|
||||
ObjectGuid Owner;
|
||||
int32 Damage = 0;
|
||||
int32 SpellID = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
#endif // GOPackets_h__
|
||||
|
||||
@@ -1018,7 +1018,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEFENSE_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DELETE_CHAR, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTROY_ARENA_UNIT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DIFFERENT_INSTANCE_FROM_PARTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISENCHANT_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISMOUNT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
|
||||
Reference in New Issue
Block a user