diff options
Diffstat (limited to 'src')
22 files changed, 164 insertions, 156 deletions
diff --git a/src/server/bnetserver/Main.cpp b/src/server/bnetserver/Main.cpp index ab7c91512e2..5f4f63287e5 100644 --- a/src/server/bnetserver/Main.cpp +++ b/src/server/bnetserver/Main.cpp @@ -61,7 +61,7 @@ boost::asio::deadline_timer _dbPingTimer(_ioService); uint32 _dbPingInterval; LoginDatabaseWorkerPool LoginDatabase; -int mainImpl(int argc, char** argv) +int main(int argc, char** argv) { std::string configFile = _TRINITY_BNET_CONFIG; auto vm = GetConsoleArguments(argc, argv, configFile); @@ -156,23 +156,6 @@ int mainImpl(int argc, char** argv) return 0; } -int main(int argc, char** argv) -{ - try - { - return mainImpl(argc, argv); - } - catch (std::exception& ex) - { - std::cerr << "Top-level exception caught:" << ex.what() << "\n"; - -#ifndef NDEBUG // rethrow exception for the debugger - throw; -#else - return 1; -#endif - } -} /// Initialize connection to the database bool StartDB() diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 108e5cedd09..b80e861c4df 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3199,7 +3199,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui std::list<Creature*> list; me->GetCreatureListWithEntryInGrid(list, e.event.distance.entry, (float)e.event.distance.dist); - if (list.size() > 0) + if (!list.empty()) creature = list.front(); } @@ -3230,7 +3230,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui std::list<GameObject*> list; me->GetGameObjectListWithEntryInGrid(list, e.event.distance.entry, (float)e.event.distance.dist); - if (list.size() > 0) + if (!list.empty()) gameobject = list.front(); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b46783deffb..7c5d5911161 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); @@ -8743,12 +8744,26 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type) if (permission != NONE_PERMISSION) { + LootMethod _lootMethod = FREE_FOR_ALL; + if (Group* group = GetGroup()) + { + if (Creature* creature = GetMap()->GetCreature(guid)) + { + if (Player* recipient = creature->GetLootRecipient()) + { + if (group == recipient->GetGroup()) + _lootMethod = group->GetLootMethod(); + } + } + } + SetLootGUID(guid); WorldPackets::Loot::LootResponse packet; packet.LootObj = guid; packet.Owner = loot->GetGUID(); - packet.LootMethod = loot_type; + packet.LootMethod = _lootMethod; + packet.AcquireReason = loot_type; if (!GetGroup()) packet.PersonalLooting = true; else @@ -12917,11 +12932,11 @@ void Player::SendBuyError(BuyResult msg, Creature* creature, uint32 item, uint32 void Player::SendSellError(SellResult msg, Creature* creature, ObjectGuid guid) { TC_LOG_DEBUG("network", "WORLD: Sent SMSG_SELL_RESPONSE"); - WorldPacket data(SMSG_SELL_RESPONSE, (8+8+1)); // last check 4.3.4 - data << (creature ? creature->GetGUID() : ObjectGuid::Empty); - data << guid; - data << uint8(msg); - GetSession()->SendPacket(&data); + WorldPackets::Item::SellResponse sellResponse; + sellResponse.VendorGUID = (creature ? creature->GetGUID() : ObjectGuid::Empty); + sellResponse.ItemGUID = guid; + sellResponse.Reason = msg; + GetSession()->SendPacket(sellResponse.Write()); } bool Player::IsUseEquipedWeapon(bool mainhand) const diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 214871e8fc9..71d05031483 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3494,12 +3494,7 @@ void Map::SendZoneDynamicInfo(Player* player) return; if (uint32 music = itr->second.MusicId) - { - WorldPacket data(SMSG_PLAY_MUSIC, 4); - data << uint32(music); - data << player->GetGUID(); - player->SendDirectMessage(&data); - } + player->SendDirectMessage(WorldPackets::Misc::PlayMusic(music).Write()); if (WeatherState weatherId = itr->second.WeatherId) { @@ -3530,12 +3525,7 @@ void Map::SetZoneMusic(uint32 zoneId, uint32 musicId) for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) if (Player* player = itr->GetSource()) if (player->GetZoneId() == zoneId) - { - WorldPacket data(SMSG_PLAY_MUSIC, 4); - data << uint32(musicId); - data << player->GetGUID(); - player->SendDirectMessage(&data); - } + player->SendDirectMessage(WorldPackets::Misc::PlayMusic(musicId).Write()); } } diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 735328a0f1f..dd996ee0f50 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -182,9 +182,8 @@ struct TSpellSummary uint8 Effects; // set of enum SelectEffect } *SpellSummary; -ScriptMgr::ScriptMgr() : _scriptCount(0) +ScriptMgr::ScriptMgr() : _scriptCount(0), _scheduledScripts(0) { - _scheduledScripts = 0; } ScriptMgr::~ScriptMgr() { } 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/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 9277e0b73d5..e9a0c213aee 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -271,3 +271,12 @@ void WorldPackets::Item::DestroyItem::Read() >> ContainerId >> SlotNum; } + +WorldPacket const* WorldPackets::Item::SellResponse::Write() +{ + _worldPacket << VendorGUID + << ItemGUID + << uint8(Reason); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index 1645af8275a..dedc3a389ce 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -258,6 +258,18 @@ namespace WorldPackets uint8 ContainerId = 0; }; + class SellResponse final : public ServerPacket + { + public: + SellResponse() : ServerPacket(SMSG_SELL_RESPONSE, 8 + 8 + 1) { } + + WorldPacket const* Write() override; + + ObjectGuid VendorGUID; + ObjectGuid ItemGUID; + SellResult Reason; + }; + ByteBuffer& operator>>(ByteBuffer& data, InvUpdate& invUpdate); } } diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h index e62cb47b41a..8c92e671b4b 100644 --- a/src/server/game/Server/Packets/LFGPackets.h +++ b/src/server/game/Server/Packets/LFGPackets.h @@ -29,7 +29,7 @@ namespace WorldPackets ObjectGuid RequesterGuid; int32 Id = 0; int32 Type = 0; - time_t Time = 0; + uint32 Time = 0; }; } } diff --git a/src/server/game/Server/Packets/LootPackets.cpp b/src/server/game/Server/Packets/LootPackets.cpp index e8c365ea45b..62bae290cce 100644 --- a/src/server/game/Server/Packets/LootPackets.cpp +++ b/src/server/game/Server/Packets/LootPackets.cpp @@ -26,10 +26,10 @@ WorldPacket const* WorldPackets::Loot::LootResponse::Write() { _worldPacket << LootObj; _worldPacket << Owner; - _worldPacket << Threshold; - _worldPacket << LootMethod; - _worldPacket << AcquireReason; _worldPacket << FailureReason; + _worldPacket << AcquireReason; + _worldPacket << LootMethod; + _worldPacket << Threshold; _worldPacket << Coins; _worldPacket << uint32(Items.size()); _worldPacket << uint32(Currencies.size()); diff --git a/src/server/game/Server/Packets/LootPackets.h b/src/server/game/Server/Packets/LootPackets.h index 74a5c58d649..02e367b1fd7 100644 --- a/src/server/game/Server/Packets/LootPackets.h +++ b/src/server/game/Server/Packets/LootPackets.h @@ -64,16 +64,16 @@ namespace WorldPackets ObjectGuid LootObj; ObjectGuid Owner; - uint8 Threshold = 17; // Most common value - uint8 LootMethod = 0; - uint8 AcquireReason = 0; - uint8 FailureReason = 2; // Most common value - uint32 Coins = 0; + uint8 Threshold = 2; // Most common value, 2 = Uncommon + uint8 LootMethod = 0; + uint8 AcquireReason = 0; + uint8 FailureReason = 17; // Most common value + uint32 Coins = 0; std::vector<LootItem> Items; std::vector<LootCurrency> Currencies; bool PersonalLooting = false; bool Acquired = false; - bool AELooting = false; + bool AELooting = false; }; struct LootRequest diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index b597e6e5de2..61a008f0e9b 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -354,3 +354,10 @@ WorldPacket const* WorldPackets::Misc::LevelUpInfo::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Misc::PlayMusic::Write() +{ + _worldPacket << uint32(SoundKitID); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 5511660eced..58409ff4282 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -493,6 +493,17 @@ namespace WorldPackets std::array<int32, MAX_STATS> StatDelta; int32 Cp = 0; }; + + class PlayMusic final : public ServerPacket + { + public: + PlayMusic() : ServerPacket(SMSG_PLAY_MUSIC, 4) { } + PlayMusic(uint32 soundKitID) : ServerPacket(SMSG_PLAY_MUSIC, 4), SoundKitID(soundKitID) { } + + WorldPacket const* Write() override; + + uint32 SoundKitID = 0; + }; } } diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 1a4d4d00c0a..70ef53551da 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -16,8 +16,8 @@ */ #include "LFGPackets.h" -#include "PacketUtilities.h" #include "TicketPackets.h" +#include "PacketUtilities.h" using namespace WorldPackets; @@ -203,10 +203,9 @@ WorldPackets::Ticket::SupportTicketSubmitComplaint::SupportTicketChatLine::Suppo Text = data.ReadString(textLength); } -WorldPackets::Ticket::SupportTicketSubmitComplaint::SupportTicketChatLine::SupportTicketChatLine(uint32 timestamp, std::string const& text) +WorldPackets::Ticket::SupportTicketSubmitComplaint::SupportTicketChatLine::SupportTicketChatLine(uint32 timestamp, std::string const& text) : + Timestamp(timestamp), Text(text) { - Timestamp = timestamp; - Text = text; } ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Ticket::SupportTicketSubmitComplaint::SupportTicketChatLine& line) diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d425d5ddc46..79f9a599074 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); @@ -1603,7 +1603,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SKINNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_VEHICLE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_DANCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_MUSIC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_MUSIC, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_ONE_SHOT_ANIM_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_ORPHAN_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SCENE, 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); @@ -1712,7 +1712,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCRIPT_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SELL_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SELL_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_ITEM_PASSIVES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_MAIL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_RAID_TARGET_UPDATE_ALL, 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..9d0babeab36 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, @@ -1543,7 +1543,7 @@ enum OpcodeServer : uint32 SMSG_PLAYER_SKINNED = 0xBADD, SMSG_PLAYER_VEHICLE_DATA = 0xBADD, SMSG_PLAY_DANCE = 0xBADD, - SMSG_PLAY_MUSIC = 0xBADD, + SMSG_PLAY_MUSIC = 0x1BBA, SMSG_PLAY_OBJECT_SOUND = 0x1BB9, SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0xBADD, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 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, @@ -1659,7 +1659,7 @@ enum OpcodeServer : uint32 SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0xBADD, SMSG_SCRIPT_CAST = 0xBADD, SMSG_SCRIPT_MESSAGE = 0xBADD, - SMSG_SELL_RESPONSE = 0xBADD, + SMSG_SELL_RESPONSE = 0x0933, SMSG_SEND_ITEM_PASSIVES = 0xBADD, SMSG_SEND_MAIL_RESULT = 0xBADD, SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0xBADD, diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index a307b60f76b..919f11a5db4 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -7229,7 +7229,7 @@ void Spell::CallScriptDestinationTargetSelectHandlers(SpellDestination& target, bool Spell::CheckScriptEffectImplicitTargets(uint32 effIndex, uint32 effIndexToCheck) { // Skip if there are not any script - if (!m_loadedScripts.size()) + if (m_loadedScripts.empty()) return true; for (std::list<SpellScript*>::iterator itr = m_loadedScripts.begin(); itr != m_loadedScripts.end(); ++itr) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index d718ad4db08..06cf95c77d2 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5500,10 +5500,7 @@ void Spell::EffectPlayMusic(SpellEffIndex /*effIndex*/) return; } - WorldPacket data(SMSG_PLAY_MUSIC, 4); - data << uint32(soundid); - data << unitTarget->GetGUID(); - unitTarget->ToPlayer()->GetSession()->SendPacket(&data); + unitTarget->ToPlayer()->GetSession()->SendPacket(WorldPackets::Misc::PlayMusic(soundid).Write()); } void Spell::EffectSpecCount(SpellEffIndex /*effIndex*/) diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index c5e2deaac24..8105f7de5ff 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -1301,7 +1301,7 @@ class spell_mage_ring_of_frost : public SpellScriptLoader GetTarget()->GetAllMinionsByEntry(MinionList, GetSpellInfo()->GetEffect(EFFECT_0)->MiscValue); // Get the last summoned RoF, save it and despawn older ones - for (std::list<TempSummon*>::iterator itr = MinionList.begin(); itr != MinionList.end(); itr++) + for (std::list<TempSummon*>::iterator itr = MinionList.begin(); itr != MinionList.end(); ++itr) { TempSummon* summon = (*itr); diff --git a/src/server/scripts/Spells/spell_pet.cpp b/src/server/scripts/Spells/spell_pet.cpp index d8b63150e3c..9a7ebc9625c 100644 --- a/src/server/scripts/Spells/spell_pet.cpp +++ b/src/server/scripts/Spells/spell_pet.cpp @@ -392,9 +392,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - float ownerBonus = 0.0f; - - ownerBonus = CalculatePct(owner->GetStat(STAT_INTELLECT), 30); + int32 const ownerBonus = CalculatePct(owner->GetStat(STAT_INTELLECT), 30); amount += ownerBonus; _tempBonus = ownerBonus; @@ -445,8 +443,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - float ownerBonus = 0.0f; - ownerBonus = CalculatePct(owner->GetArmor(), 35); + int32 const ownerBonus = CalculatePct(owner->GetArmor(), 35); amount += ownerBonus; } } @@ -457,8 +454,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - float ownerBonus = 0.0f; - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FIRE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FIRE), 40); amount += ownerBonus; } } @@ -504,8 +500,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - float ownerBonus = 0.0f; - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FROST), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FROST), 40); amount += ownerBonus; } } @@ -516,8 +511,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - float ownerBonus = 0.0f; - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_ARCANE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_ARCANE), 40); amount += ownerBonus; } } @@ -528,8 +522,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - float ownerBonus = 0.0f; - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_NATURE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_NATURE), 40); amount += ownerBonus; } } @@ -570,8 +563,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - float ownerBonus = 0.0f; - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_SHADOW), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_SHADOW), 40); amount += ownerBonus; } } @@ -906,7 +898,6 @@ public: if (Unit* owner = pet->ToPet()->GetOwner()) { float mod = 0.45f; - float ownerBonus = 0.0f; PetSpellMap::const_iterator itr = (pet->ToPet()->m_spells.find(62758)); // Wild Hunt rank 1 if (itr == pet->ToPet()->m_spells.end()) @@ -918,8 +909,7 @@ public: AddPct(mod, spellInfo->GetEffect(EFFECT_0)->CalcValue()); } - ownerBonus = owner->GetStat(STAT_STAMINA)*mod; - + int32 const ownerBonus = owner->GetStat(STAT_STAMINA) * mod; amount += ownerBonus; } } @@ -1043,10 +1033,7 @@ public: if (!owner) return; - float ownerBonus = 0.0f; - - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FROST), 40); - + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FROST), 40); amount += ownerBonus; } } @@ -1062,10 +1049,7 @@ public: if (!owner) return; - float ownerBonus = 0.0f; - - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FIRE), 40); - + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FIRE), 40); amount += ownerBonus; } } @@ -1081,10 +1065,7 @@ public: if (!owner) return; - float ownerBonus = 0.0f; - - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_NATURE), 40); - + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_NATURE), 40); amount += ownerBonus; } } @@ -1130,10 +1111,7 @@ public: if (!owner) return; - float ownerBonus = 0.0f; - - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_SHADOW), 40); - + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_SHADOW), 40); amount += ownerBonus; } } @@ -1149,10 +1127,7 @@ public: if (!owner) return; - float ownerBonus = 0.0f; - - ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_ARCANE), 40); - + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_ARCANE), 40); amount += ownerBonus; } } @@ -1168,10 +1143,7 @@ public: if (!owner) return; - float ownerBonus = 0.0f; - - ownerBonus = CalculatePct(owner->GetArmor(), 35); - + int32 const ownerBonus = CalculatePct(owner->GetArmor(), 35); amount += ownerBonus; } } diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 362b5b05168..15d08a903b9 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -97,7 +97,8 @@ void ShutdownThreadPool(std::vector<std::thread>& threadPool); bool LoadRealmInfo(); variables_map GetConsoleArguments(int argc, char** argv, std::string& cfg_file, std::string& cfg_service); -int mainImpl(int argc, char** argv) +/// Launch the Trinity server +extern int main(int argc, char** argv) { std::string configFile = _TRINITY_CORE_CONFIG; std::string configService; @@ -305,25 +306,6 @@ int mainImpl(int argc, char** argv) return World::GetExitCode(); } -/// Launch the Trinity server -extern int main(int argc, char** argv) -{ - try - { - return mainImpl(argc, argv); - } - catch (std::exception& ex) - { - std::cerr << "Top-level exception caught:" << ex.what() << "\n"; - -#ifndef NDEBUG // rethrow exception for the debugger - throw; -#else - return 1; -#endif - } -} - void ShutdownCLIThread(std::thread* cliThread) { if (cliThread != nullptr) |