Core/PacketIO: SMSG_DESTRUCTIBLE_BUILDING_DAMAGE

This commit is contained in:
Golrag
2016-01-01 12:03:31 +01:00
parent 2c9eddefd7
commit dec59b72cc
4 changed files with 33 additions and 9 deletions

View File

@@ -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();

View File

@@ -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;
}

View File

@@ -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__

View File

@@ -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);