diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Server/Packets/AllPackets.h | 1 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CombatLogPackets.cpp | 29 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CombatLogPackets.h | 44 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 2 |
6 files changed, 84 insertions, 9 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 3b568a1e3a4..15185492bc6 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -34,6 +34,7 @@ #include "CharacterDatabaseCleaner.h" #include "Chat.h" #include "CinematicMgr.h" +#include "CombatLogPackets.h" #include "CombatPackets.h" #include "Common.h" #include "ConditionMgr.h" @@ -774,13 +775,13 @@ uint32 Player::EnvironmentalDamage(EnviromentalDamage type, uint32 damage) Unit::DealDamageMods(this, damage, &absorb); - WorldPacket data(SMSG_ENVIRONMENTALDAMAGELOG, (21)); - data << uint64(GetGUID()); - data << uint8(type != DAMAGE_FALL_TO_VOID ? type : DAMAGE_FALL); - data << uint32(damage); - data << uint32(absorb); - data << uint32(resist); - SendMessageToSet(&data, true); + WorldPackets::CombatLog::EnvironmentalDamageLog packet; + packet.Victim = GetGUID(); + packet.Type = type != DAMAGE_FALL_TO_VOID ? type : DAMAGE_FALL; + packet.Amount = damage; + packet.Absorbed = absorb; + packet.Resisted = resist; + SendMessageToSet(packet.Write(), true); uint32 final_damage = Unit::DealDamage(this, this, damage, nullptr, SELF_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false); diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h index 0a5e574a8c2..3fdad4e577f 100644 --- a/src/server/game/Server/Packets/AllPackets.h +++ b/src/server/game/Server/Packets/AllPackets.h @@ -20,6 +20,7 @@ #include "CharacterPackets.h" #include "ChatPackets.h" +#include "CombatLogPackets.h" #include "CombatPackets.h" #include "GuildPackets.h" #include "NPCPackets.h" diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp new file mode 100644 index 00000000000..a138d4aa251 --- /dev/null +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -0,0 +1,29 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "CombatLogPackets.h" + +WorldPacket const* WorldPackets::CombatLog::EnvironmentalDamageLog::Write() +{ + _worldPacket << Victim; + _worldPacket << uint8(Type); + _worldPacket << uint32(Amount); + _worldPacket << uint32(Resisted); + _worldPacket << uint32(Absorbed); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h new file mode 100644 index 00000000000..e08745d5277 --- /dev/null +++ b/src/server/game/Server/Packets/CombatLogPackets.h @@ -0,0 +1,44 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef CombatLogPackets_h__ +#define CombatLogPackets_h__ + +#include "Packet.h" +#include "Player.h" + +namespace WorldPackets +{ + namespace CombatLog + { + class EnvironmentalDamageLog final : public ServerPacket + { + public: + EnvironmentalDamageLog() : ServerPacket(SMSG_ENVIRONMENTAL_DAMAGE_LOG, 21) { } + + WorldPacket const* Write() override; + + ObjectGuid Victim; + EnviromentalDamage Type = DAMAGE_EXHAUSTED; + uint32 Amount = 0; + uint32 Resisted = 0; + uint32 Absorbed = 0; + }; + } +} + +#endif // CombatLogPackets_h__ diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 4c1496de6c4..a2ac0c42277 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -636,7 +636,7 @@ void OpcodeTable::Initialize() /*0x1F9*/ DEFINE_HANDLER(CMSG_GM_SET_SECURITY_GROUP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); /*0x1FA*/ DEFINE_HANDLER(CMSG_GM_NUKE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); /*0x1FB*/ DEFINE_HANDLER(MSG_RANDOM_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode ); - /*0x1FC*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTALDAMAGELOG, STATUS_NEVER); + /*0x1FC*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTAL_DAMAGE_LOG, STATUS_NEVER); /*0x1FD*/ DEFINE_HANDLER(CMSG_CHANGEPLAYER_DIFFICULTY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); /*0x1FE*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RWHOIS, STATUS_NEVER); /*0x1FF*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_PLAYER_REWARD, STATUS_NEVER); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 9fb20367c00..585faf4f4c9 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -534,7 +534,7 @@ enum Opcodes : uint16 CMSG_GM_SET_SECURITY_GROUP = 0x1F9, CMSG_GM_NUKE = 0x1FA, MSG_RANDOM_ROLL = 0x1FB, - SMSG_ENVIRONMENTALDAMAGELOG = 0x1FC, + SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x1FC, CMSG_CHANGEPLAYER_DIFFICULTY = 0x1FD, SMSG_RWHOIS = 0x1FE, SMSG_LFG_PLAYER_REWARD = 0x1FF, // uint32, uint8, uint32, uint32, uint32, uint32, uint32, uint8, for (uint8) {uint32, uint32, uint32} |