diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CombatLogPackets.cpp | 17 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CombatLogPackets.h | 15 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 22 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 24 |
5 files changed, 63 insertions, 30 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b46783deffb..093efd0ac55 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -33,6 +33,7 @@ #include "CharacterPackets.h" #include "TalentPackets.h" #include "Chat.h" +#include "CombatLogPackets.h" #include "CombatPackets.h" #include "Common.h" #include "ConditionMgr.h" @@ -1293,13 +1294,13 @@ uint32 Player::EnvironmentalDamage(EnviromentalDamage type, uint32 damage) DealDamageMods(this, damage, &absorb); - WorldPacket data(SMSG_ENVIRONMENTALDAMAGELOG, (21)); - data << 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 = DealDamage(this, damage, NULL, SELF_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp index 3dd5237ac1f..e44db70c76a 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.cpp +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -41,3 +41,20 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::CombatLog::EnvironmentalDamageLog::Write() +{ + _worldPacket << Victim; + _worldPacket << Type; + _worldPacket << Amount; + _worldPacket << Resisted; + _worldPacket << Absorbed; + + _worldPacket.WriteBit(LogData.HasValue); + _worldPacket.FlushBits(); + + if (LogData.HasValue) + _worldPacket << LogData.Value; + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h index 3ab4fea2220..81e59b66c96 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.h +++ b/src/server/game/Server/Packets/CombatLogPackets.h @@ -46,6 +46,21 @@ namespace WorldPackets int32 Flags = 0; int32 Overkill = 0; }; + + class EnvironmentalDamageLog final : public ServerPacket + { + public: + EnvironmentalDamageLog() : ServerPacket(SMSG_ENVIRONMENTALDAMAGELOG, 23) { } + + WorldPacket const* Write() override; + + ObjectGuid Victim; + uint8 Type = 0; ///< @see enum EnviromentalDamage + int32 Amount = 0; + int32 Resisted = 0; + int32 Absorbed = 0; + Optional<Spells::SpellCastLogData> LogData; /// @todo: find the correct way where to use it, in sniff always false + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d425d5ddc46..f7425d61b93 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -669,7 +669,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_QUEST_AUTOLAUNCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_QUESTGIVER_REQUEST_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverRequestReward, &WorldSession::HandleQuestgiverRequestRewardOpcode); DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverStatusMultipleQuery, &WorldSession::HandleQuestgiverStatusMultipleQuery); - DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Quest::QuestGiverStatusQuery, &WorldSession::HandleQuestgiverStatusQueryOpcode); + DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Quest::QuestGiverStatusQuery, &WorldSession::HandleQuestgiverStatusQueryOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTLOG_REMOVE_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestLogRemoveQuest ); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTLOG_SWAP_QUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept ); @@ -1175,7 +1175,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCHANTMENT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTALDAMAGELOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTALDAMAGELOG, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_LIST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_SAVED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1447,7 +1447,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_GRAVITY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_KNOCK_BACK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_REMOVE_MOVEMENT_FORCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ROOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ROOT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ACTIVE_MOVER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ANIM_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_FLY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); @@ -1473,22 +1473,22 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_WATER_WALK, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SKIP_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_DISABLE_COLLISION, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_DISABLE_GRAVITY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_DISABLE_GRAVITY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_ENABLE_COLLISION, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_ENABLE_GRAVITY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_ROOT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_ENABLE_GRAVITY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_ROOT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_FEATHER_FALL, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_FLYING, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_FLYING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_HOVER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_LAND_WALK, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_NORMAL_FALL, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_PITCH_RATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_RUN_MODE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_RUN_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_RUN_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_SWIM_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_SET_TURN_RATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); @@ -1499,7 +1499,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_START_SWIM, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_STOP_SWIM, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_UNROOT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_UNSET_FLYING, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_UNSET_FLYING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_UNSET_HOVER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_TELEPORT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNROOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1633,7 +1633,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_QUEST_INVALID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_QUEST_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_REQUEST_ITEMS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS_MULTIPLE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_CONFIRM_ACCEPT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index b4a91ecd8de..165ed58da8a 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -579,7 +579,7 @@ enum OpcodeClient : uint32 CMSG_QUESTGIVER_QUEST_AUTOLAUNCH = 0xBADD, CMSG_QUESTGIVER_REQUEST_REWARD = 0xBADD, CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY = 0xBADD, - CMSG_QUESTGIVER_STATUS_QUERY = 0xBADD, + CMSG_QUESTGIVER_STATUS_QUERY = 0x0A7B, CMSG_QUESTLOG_REMOVE_QUEST = 0xBADD, CMSG_QUESTLOG_SWAP_QUEST = 0xBADD, CMSG_QUEST_CONFIRM_ACCEPT = 0xBADD, @@ -1386,7 +1386,7 @@ enum OpcodeServer : uint32 SMSG_MOVE_ENABLE_GRAVITY = 0xBADD, SMSG_MOVE_KNOCK_BACK = 0xBADD, SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0xBADD, - SMSG_MOVE_ROOT = 0xBADD, + SMSG_MOVE_ROOT = 0x0031, SMSG_MOVE_SET_ACTIVE_MOVER = 0xBADD, SMSG_MOVE_SET_ANIM_KIT = 0xBADD, SMSG_MOVE_SET_CAN_FLY = 0xBADD, @@ -1412,22 +1412,22 @@ enum OpcodeServer : uint32 SMSG_MOVE_SET_WATER_WALK = 0xBADD, SMSG_MOVE_SKIP_TIME = 0xBADD, SMSG_MOVE_SPLINE_DISABLE_COLLISION = 0xBADD, - SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0xBADD, + SMSG_MOVE_SPLINE_DISABLE_GRAVITY = 0x002A, SMSG_MOVE_SPLINE_ENABLE_COLLISION = 0xBADD, - SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0xBADD, - SMSG_MOVE_SPLINE_ROOT = 0xBADD, + SMSG_MOVE_SPLINE_ENABLE_GRAVITY = 0x0641, + SMSG_MOVE_SPLINE_ROOT = 0x0A4B, SMSG_MOVE_SPLINE_SET_ANIM = 0xBADD, SMSG_MOVE_SPLINE_SET_FEATHER_FALL = 0xBADD, SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED = 0xBADD, - SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0xBADD, - SMSG_MOVE_SPLINE_SET_FLYING = 0xBADD, + SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED = 0x0A5B, + SMSG_MOVE_SPLINE_SET_FLYING = 0x0212, SMSG_MOVE_SPLINE_SET_HOVER = 0xBADD, SMSG_MOVE_SPLINE_SET_LAND_WALK = 0xBADD, SMSG_MOVE_SPLINE_SET_NORMAL_FALL = 0xBADD, SMSG_MOVE_SPLINE_SET_PITCH_RATE = 0xBADD, SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED = 0xBADD, SMSG_MOVE_SPLINE_SET_RUN_MODE = 0xBADD, - SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0xBADD, + SMSG_MOVE_SPLINE_SET_RUN_SPEED = 0x0C89, SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED = 0xBADD, SMSG_MOVE_SPLINE_SET_SWIM_SPEED = 0xBADD, SMSG_MOVE_SPLINE_SET_TURN_RATE = 0xBADD, @@ -1438,11 +1438,11 @@ enum OpcodeServer : uint32 SMSG_MOVE_SPLINE_START_SWIM = 0xBADD, SMSG_MOVE_SPLINE_STOP_SWIM = 0xBADD, SMSG_MOVE_SPLINE_UNROOT = 0xBADD, - SMSG_MOVE_SPLINE_UNSET_FLYING = 0xBADD, + SMSG_MOVE_SPLINE_UNSET_FLYING = 0x1344, SMSG_MOVE_SPLINE_UNSET_HOVER = 0xBADD, SMSG_MOVE_TELEPORT = 0xBADD, - SMSG_MOVE_UNROOT = 0xBADD, - SMSG_MOVE_UNSET_CAN_FLY = 0xBADD, + SMSG_MOVE_UNROOT = 0x0A52, + SMSG_MOVE_UNSET_CAN_FLY = 0x0163, SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0xBADD, SMSG_MOVE_UNSET_HOVER = 0xBADD, SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0xBADD, @@ -1578,7 +1578,7 @@ enum OpcodeServer : uint32 SMSG_QUESTGIVER_QUEST_INVALID = 0xBADD, SMSG_QUESTGIVER_QUEST_LIST = 0xBADD, SMSG_QUESTGIVER_REQUEST_ITEMS = 0xBADD, - SMSG_QUESTGIVER_STATUS = 0xBADD, + SMSG_QUESTGIVER_STATUS = 0x039D, SMSG_QUESTGIVER_STATUS_MULTIPLE = 0x030F, SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0xBADD, SMSG_QUEST_CONFIRM_ACCEPT = 0xBADD, |