diff options
32 files changed, 1024 insertions, 538 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 87a12edfc58..b909b77271b 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1030,7 +1030,7 @@ bool Item::IsLimitedToAnotherMapOrZone(uint32 cur_mapId, uint32 cur_zoneId) cons void Item::SendUpdateSockets() { - WorldPacket data(SMSG_SOCKET_GEMS_RESULT, 8+4+4+4+4); + WorldPacket data(SMSG_SOCKET_GEMS, 8+4+4+4+4); data << GetGUID(); for (uint32 i = SOCK_ENCHANTMENT_SLOT; i <= BONUS_ENCHANTMENT_SLOT; ++i) data << uint32(GetEnchantmentId(EnchantmentSlot(i))); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index a36e3c34afd..5e419c2017f 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1193,6 +1193,15 @@ void Object::ApplyModInt32Value(uint16 index, int32 val, bool apply) SetInt32Value(index, cur); } +void Object::ApplyModUInt16Value(uint16 index, uint8 offset, int16 val, bool apply) +{ + int16 cur = GetUInt16Value(index, offset); + cur += (apply ? val : -val); + if (cur < 0) + cur = 0; + SetUInt16Value(index, offset, cur); +} + void Object::ApplyModSignedFloatValue(uint16 index, float val, bool apply) { float cur = GetFloatValue(index); diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index a1d68c2b80b..88d8cee9b2f 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -133,7 +133,6 @@ class Object void SetFloatValue(uint16 index, float value); void SetByteValue(uint16 index, uint8 offset, uint8 value); void SetUInt16Value(uint16 index, uint8 offset, uint16 value); - void SetInt16Value(uint16 index, uint8 offset, int16 value) { SetUInt16Value(index, offset, (uint16)value); } void SetGuidValue(uint16 index, ObjectGuid const& value); void SetStatFloatValue(uint16 index, float value); void SetStatInt32Value(uint16 index, int32 value); @@ -143,7 +142,7 @@ class Object void ApplyModUInt32Value(uint16 index, int32 val, bool apply); void ApplyModInt32Value(uint16 index, int32 val, bool apply); - void ApplyModUInt64Value(uint16 index, int32 val, bool apply); + void ApplyModUInt16Value(uint16 index, uint8 offset, int16 val, bool apply); void ApplyModPositiveFloatValue(uint16 index, float val, bool apply); void ApplyModSignedFloatValue(uint16 index, float val, bool apply); void ApplyPercentModFloatValue(uint16 index, float val, bool apply); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d8f9d679507..0a95fed3138 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -3339,17 +3339,9 @@ bool Player::AddTalent(TalentEntry const* talent, uint8 spec, bool learning) PlayerTalentMap::iterator itr = GetTalentMap(spec)->find(talent->ID); if (itr != GetTalentMap(spec)->end()) - itr->second->state = PLAYERSPELL_UNCHANGED; + itr->second = PLAYERSPELL_UNCHANGED; else - { - PlayerSpellState state = learning ? PLAYERSPELL_NEW : PLAYERSPELL_UNCHANGED; - PlayerTalent* newtalent = new PlayerTalent(); - - newtalent->state = state; - newtalent->spec = spec; - - (*GetTalentMap(spec))[talent->ID] = newtalent; - } + (*GetTalentMap(spec))[talent->ID] = learning ? PLAYERSPELL_NEW : PLAYERSPELL_UNCHANGED; return true; } @@ -3373,7 +3365,7 @@ void Player::RemoveTalent(TalentEntry const* talent) // if this talent rank can be found in the PlayerTalentMap, mark the talent as removed so it gets deleted PlayerTalentMap::iterator plrTalent = GetTalentMap(GetActiveTalentGroup())->find(talent->ID); if (plrTalent != GetTalentMap(GetActiveTalentGroup())->end()) - plrTalent->second->state = PLAYERSPELL_REMOVED; + plrTalent->second = PLAYERSPELL_REMOVED; } bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent, bool disabled, bool loading /*= false*/, bool fromSkill /*= false*/) @@ -3477,9 +3469,9 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent SendSupercededSpell(spellId, next_active_spell_id); else { - WorldPackets::Spells::SendRemovedSpell removedSpells; - removedSpells.Spells.push_back(spellId); - GetSession()->SendPacket(removedSpells.Write()); + WorldPackets::Spells::UnlearnedSpells unlearnedSpells; + unlearnedSpells.SpellID.push_back(spellId); + SendDirectMessage(unlearnedSpells.Write()); } } @@ -3920,9 +3912,9 @@ void Player::RemoveSpell(uint32 spell_id, bool disabled, bool learn_low_rank) // remove from spell book if not replaced by lesser rank if (!prev_activate) { - WorldPackets::Spells::SendRemovedSpell removedSpells; - removedSpells.Spells.push_back(spell_id); - GetSession()->SendPacket(removedSpells.Write()); + WorldPackets::Spells::UnlearnedSpells unlearnedSpells; + unlearnedSpells.SpellID.push_back(spell_id); + SendDirectMessage(unlearnedSpells.Write()); } } @@ -4248,7 +4240,7 @@ bool Player::HasSpell(uint32 spell) const bool Player::HasTalent(uint32 talentId, uint8 group) const { PlayerTalentMap::const_iterator itr = GetTalentMap(group)->find(talentId); - return (itr != GetTalentMap(group)->end() && itr->second->state != PLAYERSPELL_REMOVED); + return (itr != GetTalentMap(group)->end() && itr->second != PLAYERSPELL_REMOVED); } bool Player::HasActiveSpell(uint32 spell) const @@ -6719,13 +6711,13 @@ void Player::UpdateHonorFields() { time_t yesterday = today - DAY; - uint16 kills_today = PAIR32_LOPART(GetUInt32Value(PLAYER_FIELD_KILLS)); - // update yesterday's contribution if (m_lastHonorUpdateTime >= yesterday) { // this is the first update today, reset today's contribution - SetUInt32Value(PLAYER_FIELD_KILLS, MAKE_PAIR32(0, kills_today)); + uint16 killsToday = GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); + SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 0); + SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, killsToday); } else { @@ -6814,7 +6806,7 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto honor_f = std::ceil(Trinity::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey)); // count the number of playerkills in one day - ApplyModUInt32Value(PLAYER_FIELD_KILLS, 1, true); + ApplyModUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 1, true); // and those in a lifetime ApplyModUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 1, true); UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL); @@ -7562,7 +7554,7 @@ void Player::CheckDuelDistance(time_t currTime) { duel->outOfBound = currTime; - WorldPacket data(SMSG_DUEL_OUTOFBOUNDS, 0); + WorldPacket data(SMSG_DUEL_OUT_OF_BOUNDS, 0); GetSession()->SendPacket(&data); } } @@ -7572,7 +7564,7 @@ void Player::CheckDuelDistance(time_t currTime) { duel->outOfBound = 0; - WorldPacket data(SMSG_DUEL_INBOUNDS, 0); + WorldPacket data(SMSG_DUEL_IN_BOUNDS, 0); GetSession()->SendPacket(&data); } else if (currTime >= (duel->outOfBound+10)) @@ -16777,8 +16769,8 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) _LoadCurrency(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CURRENCY)); SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, fields[40].GetUInt32()); - SetUInt16Value(PLAYER_FIELD_KILLS, 0, fields[41].GetUInt16()); - SetUInt16Value(PLAYER_FIELD_KILLS, 1, fields[42].GetUInt16()); + SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, fields[41].GetUInt16()); + SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, fields[42].GetUInt16()); _LoadBoundInstances(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_BOUND_INSTANCES)); _LoadInstanceTimeRestrictions(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_INSTANCE_LOCK_TIMES)); @@ -18875,8 +18867,8 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setString(index++, ss.str()); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 0)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 1)); + stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); stmt->setUInt8(index++, GetDrunkValue()); @@ -19012,8 +19004,8 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setString(index++, ss.str()); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 0)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 1)); + stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); stmt->setUInt8(index++, GetDrunkValue()); @@ -25542,7 +25534,7 @@ void Player::SendTalentsInfoData() for (PlayerTalentMap::const_iterator itr = GetTalentMap(i)->begin(); itr != GetTalentMap(i)->end(); ++itr) { - if (itr->second->state == PLAYERSPELL_REMOVED) + if (itr->second == PLAYERSPELL_REMOVED) continue; TalentEntry const* talentInfo = sTalentStore.LookupEntry(itr->first); @@ -25574,49 +25566,6 @@ void Player::SendTalentsInfoData() SendDirectMessage(packet.Write()); } -void Player::BuildEnchantmentsInfoData(WorldPacket* data) -{ - uint32 slotUsedMask = 0; - size_t slotUsedMaskPos = data->wpos(); - *data << uint32(slotUsedMask); // slotUsedMask < 0x80000 - - for (uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i) - { - Item* item = GetItemByPos(INVENTORY_SLOT_BAG_0, i); - - if (!item) - continue; - - slotUsedMask |= (1 << i); - - *data << uint32(item->GetEntry()); // item entry - - uint16 enchantmentMask = 0; - size_t enchantmentMaskPos = data->wpos(); - *data << uint16(enchantmentMask); // enchantmentMask < 0x1000 - - for (uint32 j = 0; j < MAX_ENCHANTMENT_SLOT; ++j) - { - uint32 enchId = item->GetEnchantmentId(EnchantmentSlot(j)); - - if (!enchId) - continue; - - enchantmentMask |= (1 << j); - - *data << uint16(enchId); // enchantmentId? - } - - data->put<uint16>(enchantmentMaskPos, enchantmentMask); - - *data << uint16(0); // unknown - *data << item->GetGuidValue(ITEM_FIELD_CREATOR).WriteAsPacked(); // item creator - *data << uint32(0); // seed? - } - - data->put<uint32>(slotUsedMaskPos, slotUsedMask); -} - void Player::SendEquipmentSetList() { WorldPackets::EquipmentSet::LoadEquipmentSet data; @@ -25890,15 +25839,14 @@ void Player::_SaveTalents(SQLTransaction& trans) stmt->setUInt64(0, GetGUID().GetCounter()); trans->Append(stmt); - PlayerTalentMap* talents; + PlayerTalentMap* talents = nullptr; for (uint8 group = 0; group < MAX_TALENT_GROUPS; ++group) { talents = GetTalentMap(group); for (PlayerTalentMap::iterator itr = talents->begin(); itr != talents->end();) { - if (itr->second->state == PLAYERSPELL_REMOVED) + if (itr->second == PLAYERSPELL_REMOVED) { - delete itr->second; itr = talents->erase(itr); continue; } @@ -25906,7 +25854,7 @@ void Player::_SaveTalents(SQLTransaction& trans) stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_TALENT); stmt->setUInt64(0, GetGUID().GetCounter()); stmt->setUInt32(1, itr->first); - stmt->setUInt8(2, itr->second->spec); + stmt->setUInt8(2, group); trans->Append(stmt); ++itr; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index a22cd007ee0..064fba79fb1 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -100,7 +100,7 @@ enum BuyBankSlotResult ERR_BANKSLOT_OK = 3 }; -enum PlayerSpellState +enum PlayerSpellState : uint8 { PLAYERSPELL_UNCHANGED = 0, PLAYERSPELL_CHANGED = 1, @@ -117,12 +117,6 @@ struct PlayerSpell bool disabled : 1; // first rank has been learned in result talent learn but currently talent unlearned, save max learned ranks }; -struct PlayerTalent -{ - PlayerSpellState state : 8; - uint8 spec : 8; -}; - extern uint32 const MasterySpells[MAX_CLASSES]; enum TalentSpecialization // talent tabs @@ -193,7 +187,7 @@ struct PlayerCurrency uint8 Flags; }; -typedef std::unordered_map<uint32, PlayerTalent*> PlayerTalentMap; +typedef std::unordered_map<uint32, PlayerSpellState> PlayerTalentMap; typedef std::unordered_map<uint32, PlayerSpell*> PlayerSpellMap; typedef std::list<SpellModifier*> SpellModList; typedef std::unordered_map<uint32, PlayerCurrency> PlayerCurrenciesMap; @@ -581,6 +575,12 @@ enum PlayerFieldByte2Flags PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW = 0x40 }; +enum PlayerFieldKillsOffsets +{ + PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS = 0, + PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS = 1 +}; + enum MirrorTimerType { FATIGUE_TIMER = 0, @@ -1262,11 +1262,7 @@ struct PlayerTalentInfo ~PlayerTalentInfo() { for (uint8 i = 0; i < MAX_TALENT_GROUPS; ++i) - { - for (PlayerTalentMap::const_iterator itr = GroupInfo[i].Talents->begin(); itr != GroupInfo[i].Talents->end(); ++itr) - delete itr->second; delete GroupInfo[i].Talents; - } } struct TalentGroupInfo @@ -1564,7 +1560,6 @@ class Player : public Unit, public GridObject<Player> void ApplyEnchantment(Item* item, bool apply); void UpdateSkillEnchantments(uint16 skill_id, uint16 curr_value, uint16 new_value); void SendEnchantmentDurations(); - void BuildEnchantmentsInfoData(WorldPacket* data); void AddItemDurations(Item* item); void RemoveItemDurations(Item* item); void SendItemDurations(); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 3b63facf708..eaca64b08cf 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4840,7 +4840,7 @@ void Unit::SendSpellMiss(Unit* target, uint32 spellID, SpellMissInfo missInfo) void Unit::SendSpellDamageResist(Unit* target, uint32 spellId) { - WorldPacket data(SMSG_PROCRESIST, 8+8+4+1); + WorldPacket data(SMSG_PROC_RESIST, 8+8+4+1); data << GetGUID(); data << target->GetGUID(); data << uint32(spellId); diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index cf6d599eb04..bff4087bdd5 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -788,14 +788,14 @@ void WorldSession::HandleReportPvPAFK(WorldPacket& recvData) reportedPlayer->ReportedAfkBy(_player); } -void WorldSession::HandleRequestRatedBgInfo(WorldPacket & recvData) +void WorldSession::HandleRequestRatedBattlefieldInfo(WorldPacket& recvData) { - TC_LOG_DEBUG("network", "WORLD: CMSG_REQUEST_RATED_BG_INFO"); + TC_LOG_DEBUG("network", "WORLD: CMSG_REQUEST_RATED_BATTLEFIELD_INFO"); uint8 unk; recvData >> unk; - TC_LOG_DEBUG("bg.battleground", "WorldSession::HandleRequestRatedBgInfo: unk = %u", unk); + TC_LOG_DEBUG("bg.battleground", "WorldSession::HandleRequestRatedBattlefieldInfo: unk = %u", unk); /// @Todo: perfome research in this case /// The unk fields are related to arenas diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index c7a7bcbf62c..16fb72c88a4 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1638,7 +1638,7 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket& recvData) _player->SwapItem(item->GetPos(), dstpos); } - WorldPacket data(SMSG_EQUIPMENT_SET_USE_RESULT, 1); + WorldPacket data(SMSG_USE_EQUIPMENT_SET_RESULT, 1); data << uint8(0); // 4 - equipment swap failed - inventory is full SendPacket(&data); } diff --git a/src/server/game/Handlers/InspectHandler.cpp b/src/server/game/Handlers/InspectHandler.cpp new file mode 100644 index 00000000000..7a8749e0c8e --- /dev/null +++ b/src/server/game/Handlers/InspectHandler.cpp @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> + * + * 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 "WorldSession.h" +#include "GuildMgr.h" +#include "InspectPackets.h" +#include "Player.h" + +void WorldSession::HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect) +{ + Player* player = ObjectAccessor::FindPlayer(inspect.Target); + if (!player) + { + TC_LOG_DEBUG("network", "WorldSession::HandleInspectOpcode: Target %s not found.", inspect.Target.ToString().c_str()); + return; + } + + TC_LOG_DEBUG("network", "WorldSession::HandleInspectOpcode: Target %s.", inspect.Target.ToString().c_str()); + + if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false)) + return; + + if (GetPlayer()->IsValidAttackTarget(player)) + return; + + WorldPackets::Inspect::InspectResult inspectResult; + inspectResult.InspecteeGUID = inspect.Target; + + for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i) + { + if (Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i)) + inspectResult.Items.emplace_back(item, i); + } + + inspectResult.ClassID = player->getClass(); + inspectResult.GenderID = player->getGender(); + + if (sWorld->getBoolConfig(CONFIG_TALENTS_INSPECTING) || GetPlayer()->IsGameMaster()) + { + PlayerTalentMap const* talents = player->GetTalentMap(player->GetActiveTalentGroup()); + for (PlayerTalentMap::value_type const& v : *talents) + { + if (v.second != PLAYERSPELL_REMOVED) + inspectResult.Talents.push_back(v.first); + } + + for (uint8 i = 0; i < MAX_GLYPH_SLOT_INDEX; ++i) + inspectResult.Glyphs.push_back(player->GetGlyph(player->GetActiveTalentGroup(), i)); + } + + if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId())) + { + inspectResult.GuildData.HasValue = true; + + WorldPackets::Inspect::InspectGuildData& guildData = inspectResult.GuildData.Value; + guildData.GuildGUID = guild->GetGUID(); + guildData.NumGuildMembers = guild->GetMembersCount(); + guildData.AchievementPoints = guild->GetAchievementMgr().GetAchievementPoints(); + } + + inspectResult.InspecteeGUID = inspect.Target; + inspectResult.SpecializationID = player->GetSpecId(player->GetActiveTalentGroup()); + + SendPacket(inspectResult.Write()); +} + +void WorldSession::HandleRequestHonorStatsOpcode(WorldPackets::Inspect::RequestHonorStats& request) +{ + Player* player = ObjectAccessor::FindPlayer(request.TargetGUID); + if (!player) + { + TC_LOG_DEBUG("network", "WorldSession::HandleRequestHonorStatsOpcode: Target %s not found.", request.TargetGUID.ToString().c_str()); + return; + } + + TC_LOG_DEBUG("network", "WorldSession::HandleRequestHonorStatsOpcode: Target %s.", request.TargetGUID.ToString().c_str()); + + if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false)) + return; + + if (GetPlayer()->IsValidAttackTarget(player)) + return; + + WorldPackets::Inspect::InspectHonorStats honorStats; + honorStats.PlayerGUID = request.TargetGUID; + honorStats.LifetimeHK = player->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS); + honorStats.YesterdayHK = player->GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS); + honorStats.TodayHK = player->GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); + honorStats.LifetimeMaxRank = 0; /// @todo + + SendPacket(honorStats.Write()); +} + +void WorldSession::HandleInspectPVP(WorldPackets::Inspect::InspectPVPRequest& request) +{ + /// @todo: deal with request.InspectRealmAddress + + Player* player = ObjectAccessor::FindPlayer(request.InspectTarget); + if (!player) + { + TC_LOG_DEBUG("network", "WorldSession::HandleInspectPVP: Target %s not found.", request.InspectTarget.ToString().c_str()); + return; + } + + TC_LOG_DEBUG("network", "WorldSession::HandleInspectPVP: Target %s, InspectRealmAddress %u.", request.InspectTarget.ToString().c_str(), request.InspectTarget); + + if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false)) + return; + + if (GetPlayer()->IsValidAttackTarget(player)) + return; + + WorldPackets::Inspect::InspectPVPResponse response; + response.ClientGUID = request.InspectTarget; + /// @todo: fill brackets + + SendPacket(response.Write()); +} + +void WorldSession::HandleQueryInspectAchievements(WorldPackets::Inspect::QueryInspectAchievements& inspect) +{ + Player* player = ObjectAccessor::FindPlayer(inspect.Guid); + if (!player) + { + TC_LOG_DEBUG("network", "WorldSession::HandleQueryInspectAchievements: [%s] inspected unknown Player [%s]", GetPlayer()->GetGUID().ToString().c_str(), inspect.Guid.ToString().c_str()); + return; + } + + TC_LOG_DEBUG("network", "WorldSession::HandleQueryInspectAchievements: [%s] inspected Player [%s]", GetPlayer()->GetGUID().ToString().c_str(), inspect.Guid.ToString().c_str()); + + if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false)) + return; + + if (GetPlayer()->IsValidAttackTarget(player)) + return; + + player->SendRespondInspectAchievements(GetPlayer()); +} diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index d90cadaa119..87f98e232bb 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1237,17 +1237,17 @@ void WorldSession::HandleCancelTempEnchantmentOpcode(WorldPacket& recvData) item->ClearEnchantment(TEMP_ENCHANTMENT_SLOT); } -void WorldSession::HandleItemRefundInfoRequest(WorldPackets::Item::ItemRefundInfo& packet) +void WorldSession::HandleGetItemPurchaseData(WorldPackets::Item::GetItemPurchaseData& packet) { - TC_LOG_DEBUG("network", "WORLD: CMSG_ITEM_REFUND_INFO: Item %s", packet.ItemGUID.ToString().c_str()); - Item* item = _player->GetItemByGuid(packet.ItemGUID); if (!item) { - TC_LOG_DEBUG("network", "Item refund: item not found!"); + TC_LOG_DEBUG("network", "HandleGetItemPurchaseData: Item %s not found!", packet.ItemGUID.ToString().c_str()); return; } + TC_LOG_DEBUG("network", "HandleGetItemPurchaseData: Item %s", packet.ItemGUID.ToString().c_str()); + GetPlayer()->SendRefundInfo(item); } diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 1860904d617..933698d4aa1 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -551,7 +551,6 @@ void WorldSession::HandleStandStateChangeOpcode(WorldPackets::Misc::StandStateCh void WorldSession::HandleContactListOpcode(WorldPacket& recvData) { recvData.read_skip<uint32>(); // always 1 - TC_LOG_DEBUG("network", "WORLD: Received CMSG_CONTACT_LIST"); _player->GetSocial()->SendSocialList(_player); } @@ -588,9 +587,7 @@ void WorldSession::HandleAddFriendOpcodeCallBack(PreparedQueryResult result, std ObjectGuid friendGuid; uint32 friendAccountId; uint32 team; - FriendsResult friendResult; - - friendResult = FRIEND_NOT_FOUND; + FriendsResult friendResult = FRIEND_NOT_FOUND; if (result) { @@ -675,9 +672,7 @@ void WorldSession::HandleAddIgnoreOpcodeCallBack(PreparedQueryResult result) return; ObjectGuid IgnoreGuid; - FriendsResult ignoreResult; - - ignoreResult = FRIEND_IGNORE_NOT_FOUND; + FriendsResult ignoreResult = FRIEND_IGNORE_NOT_FOUND; if (result) { @@ -1191,110 +1186,6 @@ void WorldSession::HandlePlayedTime(WorldPacket& recvData) SendPacket(&data); } -void WorldSession::HandleInspectOpcode(WorldPacket& recvData) -{ - ObjectGuid guid; - recvData >> guid; - - TC_LOG_DEBUG("network", "WORLD: Received CMSG_INSPECT"); - - Player* player = ObjectAccessor::FindPlayer(guid); - if (!player) - { - TC_LOG_DEBUG("network", "CMSG_INSPECT: No player found from %s", guid.ToString().c_str()); - return; - } - - if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false)) - return; - - if (GetPlayer()->IsValidAttackTarget(player)) - return; - - uint32 talent_points = 41; - WorldPacket data(SMSG_INSPECT_TALENT, 8 + 4 + 1 + 1 + talent_points + 8 + 4 + 8 + 4); - data << player->GetGUID(); - - /* TODO: 6.x update packet structure (BuildPlayerTalentsInfoData no longer exists) - if (sWorld->getBoolConfig(CONFIG_TALENTS_INSPECTING) || _player->IsGameMaster()) - player->BuildPlayerTalentsInfoData(&data); - else - { - data << uint32(0); // unspentTalentPoints - data << uint8(0); // talentGroupCount - data << uint8(0); // talentGroupIndex - } - */ - - player->BuildEnchantmentsInfoData(&data); - if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId())) - { - data << guild->GetGUID(); - data << uint32(guild->GetLevel()); - data << uint64(guild->GetExperience()); - data << uint32(guild->GetMembersCount()); - } - SendPacket(&data); -} - -void WorldSession::HandleInspectHonorStatsOpcode(WorldPacket& recvData) -{ - ObjectGuid guid; - guid[1] = recvData.ReadBit(); - guid[5] = recvData.ReadBit(); - guid[7] = recvData.ReadBit(); - guid[3] = recvData.ReadBit(); - guid[2] = recvData.ReadBit(); - guid[4] = recvData.ReadBit(); - guid[0] = recvData.ReadBit(); - guid[6] = recvData.ReadBit(); - - recvData.ReadByteSeq(guid[4]); - recvData.ReadByteSeq(guid[7]); - recvData.ReadByteSeq(guid[0]); - recvData.ReadByteSeq(guid[5]); - recvData.ReadByteSeq(guid[1]); - recvData.ReadByteSeq(guid[6]); - recvData.ReadByteSeq(guid[2]); - recvData.ReadByteSeq(guid[3]); - Player* player = ObjectAccessor::FindPlayer(guid); - if (!player) - { - TC_LOG_DEBUG("network", "CMSG_REQUEST_HONOR_STATS: No player found from %s", guid.ToString().c_str()); - return; - } - - if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false)) - return; - - if (GetPlayer()->IsValidAttackTarget(player)) - return; - - ObjectGuid playerGuid = player->GetGUID(); - WorldPacket data(SMSG_INSPECT_HONOR_STATS, 8+1+4+4); - data.WriteBit(playerGuid[4]); - data.WriteBit(playerGuid[3]); - data.WriteBit(playerGuid[6]); - data.WriteBit(playerGuid[2]); - data.WriteBit(playerGuid[5]); - data.WriteBit(playerGuid[0]); - data.WriteBit(playerGuid[7]); - data.WriteBit(playerGuid[1]); - data << uint8(0); // rank - data << uint16(player->GetUInt16Value(PLAYER_FIELD_KILLS, 1)); // yesterday kills - data << uint16(player->GetUInt16Value(PLAYER_FIELD_KILLS, 0)); // today kills - data.WriteByteSeq(playerGuid[2]); - data.WriteByteSeq(playerGuid[0]); - data.WriteByteSeq(playerGuid[6]); - data.WriteByteSeq(playerGuid[3]); - data.WriteByteSeq(playerGuid[4]); - data.WriteByteSeq(playerGuid[1]); - data.WriteByteSeq(playerGuid[5]); - data << uint32(player->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - data.WriteByteSeq(playerGuid[7]); - SendPacket(&data); -} - void WorldSession::HandleWorldTeleportOpcode(WorldPacket& recvData) { uint32 time; @@ -1423,7 +1314,7 @@ void WorldSession::HandleComplainOpcode(WorldPacket& recvData) // if it's mail spam - ALL mails from this spammer automatically removed by client // Complaint Received message - WorldPacket data(SMSG_COMPLAIN_RESULT, 2); + WorldPacket data(SMSG_COMPLAINT_RESULT, 2); data << uint8(0); // value 1 resets CGChat::m_complaintsSystemStatus in client. (unused?) data << uint8(0); // value 0xC generates a "CalendarError" in client. SendPacket(&data); @@ -1741,25 +1632,6 @@ void WorldSession::HandleSetTaxiBenchmarkOpcode(WorldPacket& recvData) TC_LOG_DEBUG("network", "Client used \"/timetest %d\" command", mode); } -void WorldSession::HandleQueryInspectAchievements(WorldPacket& recvData) -{ - ObjectGuid guid; - recvData >> guid.ReadAsPacked(); - - TC_LOG_DEBUG("network", "CMSG_QUERY_INSPECT_ACHIEVEMENTS [%s] Inspected Player [%s]", _player->GetGUID().ToString().c_str(), guid.ToString().c_str()); - Player* player = ObjectAccessor::FindPlayer(guid); - if (!player) - return; - - if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false)) - return; - - if (GetPlayer()->IsValidAttackTarget(player)) - return; - - player->SendRespondInspectAchievements(_player); -} - void WorldSession::HandleGuildSetFocusedAchievement(WorldPackets::Achievement::GuildSetFocusedAchievement& setFocusedAchievement) { if (Guild* guild = sGuildMgr->GetGuildById(_player->GetGuildId())) @@ -1768,8 +1640,6 @@ void WorldSession::HandleGuildSetFocusedAchievement(WorldPackets::Achievement::G void WorldSession::HandleUITimeRequest(WorldPackets::Misc::UITimeRequest& /*request*/) { - TC_LOG_DEBUG("network", "WORLD: CMSG_UI_TIME_REQUEST"); - WorldPackets::Misc::UITime response; response.Time = time(NULL); SendPacket(response.Write()); diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 55574585246..72e286c8e07 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -563,7 +563,6 @@ void WorldSession::HandleSpellClick(WorldPacket& recvData) void WorldSession::HandleMirrorImageDataRequest(WorldPacket& recvData) { - TC_LOG_DEBUG("network", "WORLD: CMSG_GET_MIRRORIMAGE_DATA"); ObjectGuid guid; recvData >> guid; recvData.read_skip<uint32>(); // DisplayId ? @@ -581,7 +580,7 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPacket& recvData) if (!creator) return; - WorldPacket data(SMSG_MIRRORIMAGE_DATA, 68); + WorldPacket data(SMSG_MIRROR_IMAGE_COMPONENTED_DATA, 68); data << guid; data << uint32(creator->GetDisplayId()); data << uint8(creator->getRace()); diff --git a/src/server/game/Handlers/TicketHandler.cpp b/src/server/game/Handlers/TicketHandler.cpp index 0525a567c0b..a6b58f18ef4 100644 --- a/src/server/game/Handlers/TicketHandler.cpp +++ b/src/server/game/Handlers/TicketHandler.cpp @@ -90,7 +90,7 @@ void WorldSession::HandleGMTicketCreateOpcode(WorldPacket& recvData) } else { - TC_LOG_ERROR("network", "CMSG_GMTICKET_CREATE possibly corrupt. Uncompression failed."); + TC_LOG_ERROR("network", "CMSG_GM_TICKET_CREATE possibly corrupt. Uncompression failed."); recvData.rfinish(); return; } diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index b6a3cc3dd5e..5cffc0eb7aa 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -414,19 +414,6 @@ void LootItem::AddAllowedLooter(const Player* player) allowedGUIDs.insert(player->GetGUID()); } -void LootItem::BuildItemInstance(WorldPackets::Item::ItemInstance& instance) const -{ - instance.ItemID = itemid; - instance.RandomPropertiesSeed = randomSuffix; - instance.RandomPropertiesID = randomPropertyId; - if (!BonusListIDs.empty()) - { - WorldPackets::Item::ItemBonusInstanceData bonusData; - instance.ItemBonus.Value.BonusListIDs = BonusListIDs; - instance.ItemBonus.HasValue = true; - } -} - // // --------- Loot --------- // @@ -934,7 +921,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v lootItem.LootListID = packet.Items.size()+1; lootItem.LootItemType = slot_type; lootItem.Quantity = items[i].count; - items[i].BuildItemInstance(lootItem.Loot); + lootItem.Loot.Initalize(items[i]); packet.Items.push_back(lootItem); } } @@ -954,7 +941,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v lootItem.LootListID = packet.Items.size()+1; lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT; lootItem.Quantity = items[i].count; - items[i].BuildItemInstance(lootItem.Loot); + lootItem.Loot.Initalize(items[i]); packet.Items.push_back(lootItem); } } @@ -971,7 +958,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v lootItem.LootListID = packet.Items.size()+1; lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT; lootItem.Quantity = items[i].count; - items[i].BuildItemInstance(lootItem.Loot); + lootItem.Loot.Initalize(items[i]); packet.Items.push_back(lootItem); } } @@ -994,7 +981,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v WorldPackets::Loot::LootItem lootItem; lootItem.LootListID = packet.Items.size()+1; lootItem.Quantity = item.count; - item.BuildItemInstance(lootItem.Loot); + lootItem.Loot.Initalize(item); if (item.follow_loot_rules) { @@ -1040,7 +1027,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v lootItem.LootListID = packet.Items.size()+1; lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT; lootItem.Quantity = item.count; - item.BuildItemInstance(lootItem.Loot); + lootItem.Loot.Initalize(item); packet.Items.push_back(lootItem); } } @@ -1059,7 +1046,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v WorldPackets::Loot::LootItem lootItem; lootItem.LootListID = packet.Items.size()+1; lootItem.Quantity = item.count; - item.BuildItemInstance(lootItem.Loot); + lootItem.Loot.Initalize(item); if (item.follow_loot_rules) { diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h index 105a44f76d5..75ea54a9dc5 100644 --- a/src/server/game/Loot/LootMgr.h +++ b/src/server/game/Loot/LootMgr.h @@ -190,8 +190,6 @@ struct LootItem bool AllowedForPlayer(Player const* player) const; void AddAllowedLooter(Player const* player); GuidSet const& GetAllowedLooters() const { return allowedGUIDs; } - - void BuildItemInstance(WorldPackets::Item::ItemInstance& instance) const; }; struct QuestItem diff --git a/src/server/game/Movement/Spline/MoveSpline.h b/src/server/game/Movement/Spline/MoveSpline.h index cb42e4b589e..439cd9a14a4 100644 --- a/src/server/game/Movement/Spline/MoveSpline.h +++ b/src/server/game/Movement/Spline/MoveSpline.h @@ -129,8 +129,8 @@ namespace Movement bool Finalized() const { return splineflags.done; } bool isCyclic() const { return splineflags.cyclic; } bool isFalling() const { return splineflags.falling; } - Vector3 FinalDestination() const { return Initialized() ? spline.getPoint(spline.last()) : Vector3(); } - Vector3 CurrentDestination() const { return Initialized() ? spline.getPoint(point_Idx + 1) : Vector3(); } + Vector3 const& FinalDestination() const { return Initialized() ? spline.getPoint(spline.last()) : Vector3::zero(); } + Vector3 const& CurrentDestination() const { return Initialized() ? spline.getPoint(point_Idx + 1) : Vector3::zero(); } int32 currentPathIdx() const; bool onTransport; diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 00eda24524c..fa611d241a4 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -17,6 +17,7 @@ #include "CharacterPackets.h" #include "ObjectMgr.h" +#include "PacketUtilities.h" #include "World.h" WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Field* fields) @@ -130,9 +131,7 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write() _worldPacket << uint8(charInfo.Level); _worldPacket << int32(charInfo.ZoneId); _worldPacket << int32(charInfo.MapId); - _worldPacket << float(charInfo.PreLoadPosition.x); - _worldPacket << float(charInfo.PreLoadPosition.y); - _worldPacket << float(charInfo.PreLoadPosition.z); + _worldPacket << charInfo.PreLoadPosition; _worldPacket << charInfo.GuildGuid; _worldPacket << uint32(charInfo.Flags); _worldPacket << uint32(charInfo.CustomizationFlag); diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp new file mode 100644 index 00000000000..bdfdc4da06b --- /dev/null +++ b/src/server/game/Server/Packets/InspectPackets.cpp @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * 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 "InspectPackets.h" +#include "Item.h" + +void WorldPackets::Inspect::Inspect::Read() +{ + _worldPacket >> Target; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectEnchantData const& enchantData) +{ + data << uint32(enchantData.Id); + data << uint8(enchantData.Index); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectItemData const& itemData) +{ + data << itemData.CreatorGUID; + data << itemData.Item; + data << uint8(itemData.Index); + + data << uint32(itemData.Enchants.size()); + for (size_t i = 0; i < itemData.Enchants.size(); ++i) + data << itemData.Enchants[i]; + + data.WriteBit(itemData.Usable); + data.FlushBits(); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectGuildData const& guildData) +{ + data << guildData.GuildGUID; + data << int32(guildData.NumGuildMembers); + data << int32(guildData.AchievementPoints); + + return data; +} + +WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint8 index) +{ + CreatorGUID = item->GetGuidValue(ITEM_FIELD_CREATOR); + + Item.Initalize(item); + Index = index; + Usable = true; /// @todo + + for (uint8 i = 0; i < MAX_ENCHANTMENT_SLOT; ++i) + { + if (uint32 enchId = item->GetEnchantmentId(EnchantmentSlot(i))) + Enchants.emplace_back(enchId, i); + } +} + +WorldPacket const* WorldPackets::Inspect::InspectResult::Write() +{ + _worldPacket << InspecteeGUID; + + _worldPacket << uint32(Items.size()); + _worldPacket << uint32(Glyphs.size()); + _worldPacket << uint32(Talents.size()); + + _worldPacket << int32(ClassID); + _worldPacket << int32(SpecializationID); + _worldPacket << int32(GenderID); + + for (size_t i = 0; i < Items.size(); ++i) + _worldPacket << Items[i]; + + for (size_t i = 0; i < Glyphs.size(); ++i) + _worldPacket << uint16(Glyphs[i]); + + for (size_t i = 0; i < Talents.size(); ++i) + _worldPacket << uint16(Talents[i]); + + _worldPacket.WriteBit(GuildData.HasValue); + _worldPacket.FlushBits(); + + if (GuildData.HasValue) + _worldPacket << GuildData.Value; + + return &_worldPacket; +} + +void WorldPackets::Inspect::RequestHonorStats::Read() +{ + _worldPacket >> TargetGUID; +} + +WorldPacket const* WorldPackets::Inspect::InspectHonorStats::Write() +{ + _worldPacket << PlayerGUID; + _worldPacket << uint8(LifetimeMaxRank); + _worldPacket << uint16(YesterdayHK); /// @todo: confirm order + _worldPacket << uint16(TodayHK); /// @todo: confirm order + _worldPacket << uint32(LifetimeHK); + + return &_worldPacket; +} + +void WorldPackets::Inspect::InspectPVPRequest::Read() +{ + _worldPacket >> InspectTarget; + _worldPacket >> InspectRealmAddress; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData const& bracket) +{ + data << int32(bracket.Rating); + data << int32(bracket.Rank); + data << int32(bracket.WeeklyPlayed); + data << int32(bracket.WeeklyWon); + data << int32(bracket.SeasonPlayed); + data << int32(bracket.SeasonWon); + data << int32(bracket.WeeklyBestRating); + data << uint8(bracket.Bracket); + + return data; +} + +WorldPacket const* WorldPackets::Inspect::InspectPVPResponse::Write() +{ + _worldPacket << ClientGUID; + + _worldPacket.WriteBits(Bracket.size(), 3); + _worldPacket.FlushBits(); + + for (size_t i = 0; i < Bracket.size(); ++i) + _worldPacket << Bracket[i]; + + return &_worldPacket; +} + +void WorldPackets::Inspect::QueryInspectAchievements::Read() +{ + _worldPacket >> Guid; +} diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h new file mode 100644 index 00000000000..5f0fa45bb24 --- /dev/null +++ b/src/server/game/Server/Packets/InspectPackets.h @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * 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/>. + */ + +#pragma once + +#include "Packet.h" +#include "ItemPackets.h" +#include "ObjectGuid.h" + +class Item; + +namespace WorldPackets +{ + namespace Inspect + { + class Inspect final : public ClientPacket + { + public: + Inspect(WorldPacket&& packet) : ClientPacket(CMSG_INSPECT, std::move(packet)) { } + + void Read() override; + + ObjectGuid Target; + }; + + struct InspectEnchantData + { + InspectEnchantData(uint32 id, uint8 index) : Id(id), Index(Index) { } + + uint32 Id = 0; + uint8 Index = 0; + }; + + struct InspectItemData + { + InspectItemData(::Item const* item, uint8 index); + + ObjectGuid CreatorGUID; + Item::ItemInstance Item; + uint8 Index = 0; + bool Usable = false; + std::vector<InspectEnchantData> Enchants; + }; + + struct InspectGuildData + { + ObjectGuid GuildGUID; + int32 NumGuildMembers = 0; + int32 AchievementPoints = 0; + }; + + class InspectResult final : public ServerPacket + { + public: + InspectResult() : ServerPacket(SMSG_INSPECT_RESULT, 45) { } + + WorldPacket const* Write() override; + + std::vector<InspectItemData> Items; + int32 ClassID = CLASS_NONE; + int32 GenderID = GENDER_NONE; + std::vector<uint16> Talents; + std::vector<uint16> Glyphs; + Optional<InspectGuildData> GuildData; + ObjectGuid InspecteeGUID; + int32 SpecializationID = 0; + }; + + class RequestHonorStats final : public ClientPacket + { + public: + RequestHonorStats(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_HONOR_STATS, std::move(packet)) { } + + void Read() override; + + ObjectGuid TargetGUID; + }; + + class InspectHonorStats final : public ServerPacket + { + public: + InspectHonorStats() : ServerPacket(SMSG_INSPECT_HONOR_STATS, 25) { } + + WorldPacket const* Write() override; + + ObjectGuid PlayerGUID; + uint32 LifetimeHK = 0; + uint16 YesterdayHK = 0; + uint16 TodayHK = 0; + uint8 LifetimeMaxRank = 0; + }; + + class InspectPVPRequest final : public ClientPacket + { + public: + InspectPVPRequest(WorldPacket&& packet) : ClientPacket(CMSG_INSPECT_PVP, std::move(packet)) { } + + void Read() override; + + ObjectGuid InspectTarget; + uint32 InspectRealmAddress = 0; + }; + + struct PVPBracketData + { + int32 Rating = 0; + int32 Rank = 0; + int32 WeeklyPlayed = 0; + int32 WeeklyWon = 0; + int32 SeasonPlayed = 0; + int32 SeasonWon = 0; + int32 WeeklyBestRating = 0; + uint8 Bracket = 0; + }; + + class InspectPVPResponse final : public ServerPacket + { + public: + InspectPVPResponse() : ServerPacket(SMSG_INSPECT_PVP, 17) { } + + WorldPacket const* Write() override; + + std::vector<PVPBracketData> Bracket; + ObjectGuid ClientGUID; + }; + + class QueryInspectAchievements final : public ClientPacket + { + public: + QueryInspectAchievements(WorldPacket&& packet) : ClientPacket(CMSG_QUERY_INSPECT_ACHIEVEMENTS, std::move(packet)) { } + + void Read() override; + + ObjectGuid Guid; + }; + + /// RespondInspectAchievements in AchievementPackets + } +} diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 17f26852315..494d53b25f7 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -23,7 +23,7 @@ void WorldPackets::Item::BuyBackItem::Read() _worldPacket >> Slot; } -void WorldPackets::Item::ItemRefundInfo::Read() +void WorldPackets::Item::GetItemPurchaseData::Read() { _worldPacket >> ItemGUID; } @@ -75,18 +75,14 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemInstance const& data << itemInstance.RandomPropertiesID; data.WriteBit(itemInstance.ItemBonus.HasValue); - data.WriteBit(!itemInstance.Modifications.empty()); + data.WriteBit(itemInstance.Modifications.HasValue); data.FlushBits(); if (itemInstance.ItemBonus.HasValue) data << itemInstance.ItemBonus.Value; - if (!itemInstance.Modifications.empty()) - { - data << uint32(itemInstance.Modifications.size() * sizeof(uint32)); - for (int32 itemMod : itemInstance.Modifications) - data << itemMod; - } + if (itemInstance.Modifications.HasValue) + data << itemInstance.Modifications.Value; return data; } @@ -103,6 +99,44 @@ ByteBuffer& WorldPackets::Item::operator>>(ByteBuffer& data, InvUpdate& invUpdat return data; } +void WorldPackets::Item::ItemInstance::Initalize(::Item const* item) +{ + ItemID = item->GetEntry(); + RandomPropertiesSeed = item->GetTemplate()->GetRandomSuffix(); /// @todo: confirm this + RandomPropertiesID = item->GetItemRandomPropertyId(); + std::vector<uint32> const& bonusListIds = item->GetDynamicValues(ITEM_DYNAMIC_FIELD_BONUSLIST_IDS); + if (!bonusListIds.empty()) + { + ItemBonus.HasValue = true; + ItemBonus.Value.BonusListIDs.insert(ItemBonus.Value.BonusListIDs.end(), bonusListIds.begin(), bonusListIds.end()); + ItemBonus.Value.Context = 0; /// @todo + } + + for (uint8 i = 1; i < MAX_ITEM_MODIFIERS; ++i) + { + if (int32 mod = item->GetModifier(ItemModifier(i))) + { + Modifications.HasValue = true; + Modifications.Value.Insert(i - 1, mod); + } + } +} + +void WorldPackets::Item::ItemInstance::Initalize(::LootItem const& lootItem) +{ + ItemID = lootItem.itemid; + RandomPropertiesSeed = lootItem.randomSuffix; + RandomPropertiesID = lootItem.randomPropertyId; + if (!lootItem.BonusListIDs.empty()) + { + ItemBonus.HasValue = true; + ItemBonus.Value.BonusListIDs = lootItem.BonusListIDs; + ItemBonus.Value.Context = 0; /// @todo + } + + /// no Modifications +} + WorldPacket const* WorldPackets::Item::InventoryChangeFailure::Write() { _worldPacket << int8(BagResult); diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index 079d7839e90..65fdcdf3367 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -20,6 +20,7 @@ #include "Packet.h" #include "Item.h" +#include "PacketUtilities.h" namespace WorldPackets { @@ -36,10 +37,10 @@ namespace WorldPackets uint32 Slot = 0; }; - class ItemRefundInfo final : public ClientPacket + class GetItemPurchaseData final : public ClientPacket { public: - ItemRefundInfo(WorldPacket&& packet) : ClientPacket(CMSG_ITEM_REFUND_INFO, std::move(packet)) { } + GetItemPurchaseData(WorldPacket&& packet) : ClientPacket(CMSG_GET_ITEM_PURCHASE_DATA, std::move(packet)) { } void Read() override; @@ -94,17 +95,20 @@ namespace WorldPackets struct ItemBonusInstanceData { - uint8 Context = 0; + uint8 Context = 0; std::vector<int32> BonusListIDs; }; struct ItemInstance { + void Initalize(::Item const* item); + void Initalize(::LootItem const& lootItem); + uint32 ItemID = 0; uint32 RandomPropertiesSeed = 0; uint32 RandomPropertiesID = 0; Optional<ItemBonusInstanceData> ItemBonus; - std::vector<int32> Modifications; + Optional<CompactArray<int32>> Modifications; }; struct InvUpdate diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 699d504554e..422bd749d82 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -16,12 +16,11 @@ */ #include "MiscPackets.h" +#include "PacketUtilities.h" WorldPacket const* WorldPackets::Misc::BindPointUpdate::Write() { - _worldPacket << float(BindPosition.x); - _worldPacket << float(BindPosition.y); - _worldPacket << float(BindPosition.z); + _worldPacket << BindPosition; _worldPacket << uint32(BindMapID); _worldPacket << uint32(BindAreaID); @@ -218,9 +217,7 @@ WorldPacket const* WorldPackets::Misc::CorpseReclaimDelay::Write() WorldPacket const* WorldPackets::Misc::DeathReleaseLoc::Write() { _worldPacket << MapID; - _worldPacket << float(Loc.x); - _worldPacket << float(Loc.y); - _worldPacket << float(Loc.z); + _worldPacket << Loc; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 4a0d0bfbd12..7ec6ad5923a 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -177,7 +177,7 @@ namespace WorldPackets WorldPacket const* Write() override; - uint32 Time = 0; + uint32 Time = 0; ///< UnixTime }; class TutorialFlags : public ServerPacket diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 9a208670804..48aee03dfe8 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -19,20 +19,9 @@ #include "MoveSpline.h" #include "MoveSplineFlag.h" #include "MovementTypedefs.h" +#include "PacketUtilities.h" #include "Unit.h" -ByteBuffer& operator<<(ByteBuffer& data, G3D::Vector3 const& v) -{ - data << v.x << v.y << v.z; - return data; -} - -ByteBuffer& operator>>(ByteBuffer& data, G3D::Vector3& v) -{ - data >> v.x >> v.y >> v.z; - return data; -} - ByteBuffer& operator<<(ByteBuffer& data, MovementInfo& movementInfo) { bool hasTransportData = !movementInfo.transport.guid.IsEmpty(); @@ -189,7 +178,7 @@ void WorldPackets::Movement::ClientPlayerMovement::Read() _worldPacket >> movementInfo; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFilterKey const& monsterSplineFilterKey) +ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MonsterSplineFilterKey const& monsterSplineFilterKey) { data << monsterSplineFilterKey.Idx; data << monsterSplineFilterKey.Speed; @@ -197,7 +186,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFi return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFilter const& monsterSplineFilter) +ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MonsterSplineFilter const& monsterSplineFilter) { data << uint32(monsterSplineFilter.FilterKeys.size()); data << monsterSplineFilter.BaseSpeed; @@ -212,7 +201,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFi return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementSpline const& movementSpline) +ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline const& movementSpline) { data << movementSpline.Flags; data << movementSpline.AnimTier; @@ -255,7 +244,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementSpline return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementMonsterSpline const& movementMonsterSpline) +ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementMonsterSpline const& movementMonsterSpline) { data << movementMonsterSpline.ID; data << movementMonsterSpline.Destination; @@ -276,13 +265,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementMonster void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::Movement::MoveSpline const& moveSpline, ByteBuffer& data) { data << uint32(moveSpline.GetId()); // ID + if (!moveSpline.isCyclic()) // Destination - { - G3D::Vector3 dest = moveSpline.FinalDestination(); - data << float(dest.z); - data << float(dest.x); - data << float(dest.y); - } + data << moveSpline.FinalDestination().zxy(); else data << G3D::Vector3::zero(); diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 31f30d74c04..85156234477 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -286,10 +286,12 @@ namespace WorldPackets int32 MoveTime = 0; }; } -} -ByteBuffer& operator<<(ByteBuffer& data, G3D::Vector3 const& v); -ByteBuffer& operator>>(ByteBuffer& data, G3D::Vector3& v); + ByteBuffer& operator<<(ByteBuffer& data, Movement::MonsterSplineFilterKey const& monsterSplineFilterKey); + ByteBuffer& operator<<(ByteBuffer& data, Movement::MonsterSplineFilter const& monsterSplineFilter); + ByteBuffer& operator<<(ByteBuffer& data, Movement::MovementSpline const& movementSpline); + ByteBuffer& operator<<(ByteBuffer& data, Movement::MovementMonsterSpline const& movementMonsterSpline); +} ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo); ByteBuffer& operator<<(ByteBuffer& data, MovementInfo& movementInfo); @@ -297,9 +299,4 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo& movementInfo); ByteBuffer& operator>>(ByteBuffer& data, MovementInfo::TransportInfo& transportInfo); ByteBuffer& operator<<(ByteBuffer& data, MovementInfo::TransportInfo const& transportInfo); -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFilterKey const& monsterSplineFilterKey); -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFilter const& monsterSplineFilter); -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementSpline const& movementSpline); -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementMonsterSpline const& movementMonsterSpline); - #endif // MovementPackets_h__ diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h new file mode 100644 index 00000000000..25e6f27d1d4 --- /dev/null +++ b/src/server/game/Server/Packets/PacketUtilities.h @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * 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/>. + */ + +#pragma once + +namespace WorldPackets +{ + inline ByteBuffer& operator<<(ByteBuffer& data, G3D::Vector3 const& v) + { + data << v.x << v.y << v.z; + return data; + } + + inline ByteBuffer& operator>>(ByteBuffer& data, G3D::Vector3& v) + { + data >> v.x >> v.y >> v.z; + return data; + } + + template <typename T> + struct CompactArray + { + public: + uint32 GetMask() const { return _mask; } + T const& operator[](size_t index) const { return _contents.at(index); } + size_t GetSize() const { return _contents.size(); } + + void Insert(size_t index, T const& value) + { + ASSERT(index < 0x20); + + _mask |= 1 << index; + if (_contents.size() <= index) + _contents.resize(index + 1); + _contents[index] = value; + } + + void Clear() + { + _mask = 0; + _contents.clear(); + } + + private: + uint32 _mask = 0; + std::vector<T> _contents; + }; + + template <typename T> + ByteBuffer& operator<<(ByteBuffer& data, CompactArray<T> const& v) + { + uint32 mask = v.GetMask(); + data << uint32(mask); + for (size_t i = 0; i < v.GetSize(); ++i) + { + if (mask & (1 << i)) + data << v[i]; + } + + return data; + } +} diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 6f93fec73f2..6b2f126ec4c 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -462,10 +462,10 @@ WorldPacket const* WorldPackets::Spells::SetSpellModifier::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::Spells::SendRemovedSpell::Write() +WorldPacket const* WorldPackets::Spells::UnlearnedSpells::Write() { - _worldPacket << uint32(Spells.size()); - for (uint32 spellId : Spells) + _worldPacket << uint32(SpellID.size()); + for (uint32 spellId : SpellID) _worldPacket << uint32(spellId); return &_worldPacket; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index fa5af7b2882..5818e7e78ca 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -388,14 +388,14 @@ namespace WorldPackets std::vector<SpellModifier> Modifiers; }; - class SendRemovedSpell final : public ServerPacket + class UnlearnedSpells final : public ServerPacket { public: - SendRemovedSpell() : ServerPacket(SMSG_REMOVED_SPELL, 4) { } + UnlearnedSpells() : ServerPacket(SMSG_UNLEARNED_SPELLS, 4) { } WorldPacket const* Write() override; - std::vector<uint32> Spells; + std::vector<uint32> SpellID; }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 988a858e83b..6adaa748e0e 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -30,6 +30,7 @@ #include "Packets/EquipmentSetPackets.h" #include "Packets/GameObjectPackets.h" #include "Packets/GuildPackets.h" +#include "Packets/InspectPackets.h" #include "Packets/ItemPackets.h" #include "Packets/LootPackets.h" #include "Packets/MiscPackets.h" @@ -139,8 +140,10 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_GUILD_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_LEVEL_GRANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptGrantLevel ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptTradeOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_WARGAME_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ACTIVATE_TAXI, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ACTIVATE_TAXI_EXPRESS, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiExpressOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_ADD_BATTLENET_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ADD_FRIEND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAddFriendOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ADD_IGNORE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAddIgnoreOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ADD_MUTE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -244,12 +247,13 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_REMOVE_EVENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarRemoveEvent ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_REMOVE_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_UPDATE_EVENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarUpdateEvent ); - DEFINE_HANDLER(CMSG_CANCEL_AURA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::CancelAura, &WorldSession::HandleCancelAuraOpcode ); + DEFINE_HANDLER(CMSG_CANCEL_AURA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::CancelAura, &WorldSession::HandleCancelAuraOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_AUTO_REPEAT_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAutoRepeatSpellOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_CAST, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleCancelCastOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_CHANNELLING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelChanneling ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_GROWTH_AURA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelGrowthAuraOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_MASTER_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_MOUNT_AURA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelMountAuraOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_QUEUED_SPELL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_TEMP_ENCHANTMENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelTempEnchantmentOpcode); @@ -259,6 +263,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_CHALLENGE_MODE_REQUEST_LEADERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CHANGE_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_CHANGE_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle); DEFINE_OPCODE_HANDLER_OLD(CMSG_CHANGE_SUB_GROUP, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CHANGE_TROPHY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -291,8 +296,9 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharRaceOrFactionChange, &WorldSession::HandleCharRaceOrFactionChangeOpcode); DEFINE_HANDLER(CMSG_CHAR_RENAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharacterRenameRequest, &WorldSession::HandleCharRenameOpcode); DEFINE_HANDLER(CMSG_CHAR_UNDELETE_ENUM, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::EnumCharacters, &WorldSession::HandleCharUndeleteEnumOpcode); - DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_FILTERED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_IGNORED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_REPORT_FILTERED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_REPORT_IGNORED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_CHECK_RAF_EMAIL_ENABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CHOICE_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CLEAR_RAID_MARKER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CLEAR_TRADE_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode ); @@ -311,7 +317,6 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_COMPLETE_MOVIE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CONFIRM_RESPEC_WIPE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleConfirmRespecWipeOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CONNECT_TO_FAILED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_CONTACT_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleContactListOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CONVERSATION_UNK1, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CONVERT_RAID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -331,6 +336,9 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_JOIN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_LEAVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_PROPOSAL_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_SEARCH_JOIN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_SEARCH_LEAVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_SET_COMMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_SET_ROLES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_TELEPORT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_DISCARDED_TIME_SYNC_ACKS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -344,7 +352,6 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_ENABLE_NAGLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ENABLE_TAXI_NODE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes ); DEFINE_HANDLER(CMSG_EQUIPMENT_SET_SAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::SaveEquipmentSet, &WorldSession::HandleEquipmentSetSave); - DEFINE_OPCODE_HANDLER_OLD(CMSG_EQUIPMENT_SET_USE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetUse ); DEFINE_OPCODE_HANDLER_OLD(CMSG_FAR_SIGHT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleFarSightOpcode ); DEFINE_HANDLER(CMSG_GAMEOBJECT_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Query::QueryGameObject, &WorldSession::HandleGameObjectQueryOpcode); DEFINE_HANDLER(CMSG_GAMEOBJ_REPORT_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::GameObject::GameObjectReportUse, &WorldSession::HandleGameobjectReportUse); @@ -354,43 +361,39 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_COMPLETE_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_MISSION_BONUS_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_OPEN_TRADESKILL_NPC, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_PURCHASE_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_REQUEST_UPGRADEABLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_SET_FOLLOWER_INACTIVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_START_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GARRISON_UNK1, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GETDEATHBINDZONE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_GARRISON_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_HANDLER(CMSG_GET_ITEM_PURCHASE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::GetItemPurchaseData, &WorldSession::HandleGetItemPurchaseData); DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_MAIL_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGetMailList ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_MIRRORIMAGE_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMirrorImageDataRequest ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_MIRROR_IMAGE_DATA, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_MIRROR_IMAGE_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMirrorImageDataRequest ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_SHIPMENT_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_TROPHY_LIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_GET_UNDELETE_COOLDOWN_STATUS, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::GetUndeleteCooldownStatus, &WorldSession::HandleGetUndeleteCooldownStatus); DEFINE_OPCODE_HANDLER_OLD(CMSG_GHOST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GMRESPONSE_RESOLVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMResponseResolve ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GMSURVEY_SUBMIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMSurveySubmit ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GMTICKET_CREATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketCreateOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GMTICKET_DELETETICKET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketDeleteOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GMTICKET_GETTICKET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketGetTicketOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GMTICKET_SYSTEMSTATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketSystemStatusOpcode); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GMTICKET_UPDATETEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketUpdateOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_INVIS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_LAG_REPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReportLag ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_NUKE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_REPORT_LAG, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReportLag ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_SET_SECURITY_GROUP, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_SURVEY_SUBMIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMSurveySubmit ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_CREATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_DELETE_TICKET, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_CREATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketCreateOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_DELETE_TICKET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketDeleteOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_GET_CASE_STATUS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_GET_SYSTEM_STATUS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_GET_TICKET, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_RESPONSE_RESOLVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_UPDATE_TEXT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_GET_SYSTEM_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketSystemStatusOpcode); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_GET_TICKET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketGetTicketOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_RESPONSE_RESOLVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMResponseResolve ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_UPDATE_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketUpdateOpcode ); DEFINE_HANDLER(CMSG_GOSSIP_HELLO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleGossipHelloOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_GOSSIP_SELECT_OPTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGossipSelectOptionOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GRANT_LEVEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGrantLevel ); @@ -417,6 +420,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_QUERY_TAB, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankQueryTab ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_QUERY_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryGuildBankTabText ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_SET_TAB_TEXT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_SWAP_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSwapItems ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_UPDATE_TAB, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankUpdateTab ); DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_WITHDRAW_MONEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankWithdrawMoney ); @@ -458,17 +462,21 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_UPDATE_MOTD_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildMOTDOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_HEARTH_AND_RESURRECT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleHearthAndResurrect ); DEFINE_OPCODE_HANDLER_OLD(CMSG_IGNORE_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleIgnoreTradeOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_INCREASE_CAST_TIME_FOR_SPELL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_INITIATE_ROLE_POLL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_INITIATE_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleInitiateTradeOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_INSPECT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_INSTANCE_LOCK_WARNING_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_HANDLER(CMSG_INSPECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::Inspect, &WorldSession::HandleInspectOpcode); + DEFINE_HANDLER(CMSG_INSPECT_PVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::InspectPVPRequest, &WorldSession::HandleInspectPVP); + DEFINE_OPCODE_HANDLER_OLD(CMSG_INSTANCE_LOCK_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_ITEM_PURCHASE_REFUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ITEM_REFUND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleItemRefund ); - DEFINE_HANDLER(CMSG_ITEM_REFUND_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::ItemRefundInfo, &WorldSession::HandleItemRefundInfoRequest); DEFINE_OPCODE_HANDLER_OLD(CMSG_ITEM_TEXT_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleItemTextQuery ); DEFINE_OPCODE_HANDLER_OLD(CMSG_JOIN_ARENA_SKIRMISH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_JOIN_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Channel::JoinChannel, &WorldSession::HandleJoinChannel); DEFINE_OPCODE_HANDLER_OLD(CMSG_JOIN_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_JOIN_RATED_BATTLEGROUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_KEEP_ALIVE, STATUS_NEVER, PROCESS_THREADUNSAFE, &WorldSession::Handle_EarlyProccess ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_KEYBOUND_OVERRIDE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_LEARN_TALENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Talent::LearnTalents, &WorldSession::HandleLearnTalentsOpcode); DEFINE_HANDLER(CMSG_LEAVE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Channel::LeaveChannel, &WorldSession::HandleLeaveChannel); DEFINE_OPCODE_HANDLER_OLD(CMSG_LEAVE_GROUP, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -478,6 +486,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LEAVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgLeaveOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LFR_JOIN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LFR_LEAVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LIST_CANCEL_APPLICATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LIST_DECLINE_APPLICANT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LIST_GET_STATUS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LIST_INVITE_APPLICANT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -485,6 +494,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LIST_JOIN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LIST_LEAVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LIST_SEARCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LIST_UPDATE_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_LOCK_INFO_REQUEST, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleLfgGetLockInfoOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_PROPOSAL_RESULT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgProposalResultOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_LFG_SET_BOOT_VOTE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgSetBootVoteOpcode ); @@ -503,6 +513,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_LIST_INVENTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleListInventoryOpcode); DEFINE_HANDLER(CMSG_LOAD_SCREEN, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::LoadingScreenNotify, &WorldSession::HandleLoadScreenOpcode); DEFINE_HANDLER(CMSG_LOGOUT_CANCEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::LogoutCancel, &WorldSession::HandleLogoutCancelOpcode); + DEFINE_OPCODE_HANDLER_OLD(CMSG_LOGOUT_INSTANT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_LOGOUT_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::LogoutRequest, &WorldSession::HandleLogoutRequestOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_LOG_DISCONNECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess ); DEFINE_HANDLER(CMSG_LOOT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::LootUnit, &WorldSession::HandleLootOpcode); @@ -512,6 +523,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_LOOT_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::LootMoney, &WorldSession::HandleLootMoneyOpcode); DEFINE_HANDLER(CMSG_LOOT_RELEASE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::LootRelease, &WorldSession::HandleLootReleaseOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLootRoll ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_LOW_LEVEL_RAID1, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_LOW_LEVEL_RAID2, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MAIL_CREATE_TEXT_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMailCreateTextItem ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MAIL_DELETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMailDelete ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MAIL_MARK_AS_READ, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMailMarkAsRead ); @@ -520,6 +533,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_MAIL_TAKE_MONEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMailTakeMoney ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MASTER_LOOT_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MEETINGSTONE_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_MESSAGECHAT_ADDON_CHANNEL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_MESSAGECHAT_ADDON_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatAddonMessage, &WorldSession::HandleChatAddonMessageOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_MESSAGECHAT_ADDON_INSTANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_MESSAGECHAT_ADDON_OFFICER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatAddonMessage, &WorldSession::HandleChatAddonMessageOpcode); @@ -542,9 +556,8 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_MINIGAME_MOVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MINIMAP_PING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMinimapPingOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_MOUNTSPECIAL_ANIM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOUNT_SET_FAVORITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_MOUNT_SPECIAL_ANIM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_MOUNT_SPECIAL_ANIM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_CHANGE_TRANSPORT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_CHANGE_VEHICLE_SEATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -662,6 +675,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_PING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAYED_TIME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePlayedTime ); DEFINE_HANDLER(CMSG_PLAYER_LOGIN, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::PlayerLogin, &WorldSession::HandlePlayerLoginOpcode); + DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAYER_TIME_ADJUSTMENT_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAYER_VEHICLE_ENTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEnterPlayerVehicle ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAY_DANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_PORT_GRAVEYARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::PortGraveyard, &WorldSession::HandlePortGraveyard); @@ -671,7 +685,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_QUERY_CORPSE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryCorpseTransport, &WorldSession::HandleQueryCorpseTransport); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_COUNTDOWN_TIMER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_GUILD_XP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryXPOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryInspectAchievements ); + DEFINE_HANDLER(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::QueryInspectAchievements, &WorldSession::HandleQueryInspectAchievements); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_NEXT_MAIL_TIME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryNextMailTime ); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_PETITION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_SCENARIO_POI, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -698,6 +712,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_RANDOM_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_READY_CHECK_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_READ_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReadItem ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_REAGENT_BANK_BUY_TAB, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REALM_NAME_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_RECLAIM_CORPSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::ReclaimCorpse, &WorldSession::HandleReclaimCorpse); DEFINE_OPCODE_HANDLER_OLD(CMSG_RECRUIT_A_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -716,9 +731,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_FORCED_REACTIONS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_GUILD_REWARDS_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRewardsQueryOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_HONOR_STATS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectHonorStatsOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_INSPECT_PVP, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_INSPECT_RATED_BG_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_HANDLER(CMSG_REQUEST_HONOR_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::RequestHonorStats, &WorldSession::HandleRequestHonorStatsOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_LFG_LIST_BLACKLIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PARTY_JOIN_UPDATES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PARTY_MEMBER_STATS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPartyMemberStatsOpcode); @@ -726,8 +739,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PVP_OPTIONS_ENABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestPvpOptions ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PVP_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestPvpReward ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RAID_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RATED_BATTLEFIELD_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RATED_BG_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestRatedBgInfo ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RATED_BATTLEFIELD_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedBattlefieldInfo); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RATED_BG_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestRatedBgStats ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RESEARCH_HISTORY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_STABLED_PETS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleListStabledPetsOpcode ); @@ -735,10 +747,12 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_VEHICLE_NEXT_SEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_VEHICLE_PREV_SEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle); DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle); + DEFINE_OPCODE_HANDLER_OLD(CMSG_RESET_CHALLENGE_MODE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_RESET_FACTION_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_RESET_INSTANCES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleResetInstancesOpcode ); DEFINE_HANDLER(CMSG_RESURRECT_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::ResurrectResponse, &WorldSession::HandleResurrectResponse); DEFINE_OPCODE_HANDLER_OLD(CMSG_REVERT_TROPHY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_RIDE_VEHICLE_INTERACT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ROLE_POLL_BEGIN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRolePollBeginOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ROUTER_CLIENT_LOG_STREAMING_ERROR, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SAVE_CUF_PROFILES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSaveCUFProfiles ); @@ -749,23 +763,24 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_SCENE_TRIGGER_EVENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SELF_RES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSelfResOpcode ); DEFINE_HANDLER(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::SellItem, &WorldSession::HandleSellItemOpcode); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SEND_CONTACT_LIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SEND_CONTACT_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleContactListOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SEND_MAIL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSendMail ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SEND_SOR_REQUEST_VIA_ADDRESS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SEND_SOR_REQUEST_VIA_BNET_ACCOUNT_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SERVERTIME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SETDEATHBINDPOINT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SETSHEATHED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSetSheathedOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACHIEVEMENTS_HIDDEN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIONBAR_TOGGLES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActionBarToggles ); DEFINE_HANDLER(CMSG_SET_ACTION_BUTTON, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::SetActionButton, &WorldSession::HandleSetActionButtonOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIVE_MOVER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveMoverOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIVE_VOICE_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveVoiceChannel ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ALLOW_LOW_LEVEL_RAID1, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ALLOW_LOW_LEVEL_RAID2, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ADVANCED_COMBAT_LOGGING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ASSISTANT_LEADER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_CONTACT_NOTES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetContactNotesOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_CURRENCY_FLAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_DIFFICULTY_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_SET_DUNGEON_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetDungeonDifficulty, &WorldSession::HandleSetDungeonDifficultyOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_EVERYONE_IS_ASSISTANT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_FACTION_AT_WAR, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionAtWar ); @@ -773,6 +788,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_FACTION_INACTIVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionInactiveOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_FACTION_NOT_AT_WAR, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_GUILD_BANK_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetGuildBankTabText ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_LFG_BONUS_FACTION_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_LFG_COMMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_LOOT_SPECIALIZATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -787,6 +803,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ROLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SAVED_INSTANCE_EXTEND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetSavedInstanceExtend ); DEFINE_HANDLER(CMSG_SET_SELECTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetSelection, &WorldSession::HandleSetSelectionOpcode); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SHEATHED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSetSheathedOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SKILL_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_SET_SPECIALIZATION, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Talent::SetSpecialization, &WorldSession::HandleSetSpecializationOpcode); @@ -811,6 +828,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SPLIT_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::SplitItem, &WorldSession::HandleSplitItemOpcode); DEFINE_HANDLER(CMSG_STAND_STATE_CHANGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::StandStateChange, &WorldSession::HandleStandStateChangeOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_START_QUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_START_SPECTATOR_WARGAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_START_WARGAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_STOP_DANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_STORE_LOOT_IN_SLOT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SUBMIT_BUG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -838,8 +857,10 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_TIME_SYNC_RESPONSE, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::TimeSyncResponse, &WorldSession::HandleTimeSyncResponse); DEFINE_OPCODE_HANDLER_OLD(CMSG_TIME_SYNC_RESPONSE_DROPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_TIME_SYNC_RESPONSE_FAILED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_TOGGLE_DIFFICULTY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_TOGGLE_PVP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTogglePvP ); DEFINE_OPCODE_HANDLER_OLD(CMSG_TOTEM_DESTROYED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTotemDestroyed ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_TOY_SET_FAVORITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_TRAINER_BUY_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTrainerBuySpellOpcode ); DEFINE_HANDLER(CMSG_TRAINER_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleTrainerListOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_TRANSMOGRIFY_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems ); @@ -851,6 +872,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_UNACCEPT_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode ); DEFINE_HANDLER(CMSG_UNDELETE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::UndeleteCharacter, &WorldSession::HandleCharUndeleteOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_UNLEARN_SKILL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_UNLEARN_SPECIALIZATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAddonPrefixesOpcode); DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::ClientConfig::UserClientUpdateAccountData, &WorldSession::HandleUpdateAccountData); DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_CLIENT_SETTINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -858,8 +880,10 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_PROJECTILE_POSITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateProjectilePosition ); DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_RAID_TARGET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidTargetUpdateOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_UPGRADE_GARRISON, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_UPGRADE_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_USED_FOLLOW, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_USE_CRITTER_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_USE_EQUIPMENT_SET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetUse ); DEFINE_OPCODE_HANDLER_OLD(CMSG_USE_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUseItemOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_USE_TOY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_VIOLENCE_LEVEL, STATUS_AUTHED, PROCESS_INPLACE, WorldPackets::Misc::ViolenceLevel, &WorldSession::HandleViolenceLevel); @@ -912,6 +936,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTION_BUTTONS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATE_TAXI_REPLY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADDON_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_BATTLENET_FRIEND_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_ITEM_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_RUNE_POWER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADJUST_SPLINE_DURATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -921,13 +947,16 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ALL_ACCOUNT_CRITERIA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ALL_ACHIEVEMENT_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ALL_GUILD_ACHIEVEMENTS, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARCHAEOLOGY_SURVERY_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_SPIRIT_HEALER_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_DENIED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_MOVEMENT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_NO_CORPSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_PATH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_TEAM_CHANGE_FAILED_QUEUED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_TEAM_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_TEAM_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -939,6 +968,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTART, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTOP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_ERROR, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_LANDED_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_BIDDER_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_CLOSED_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -962,6 +992,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_AVERAGE_ITEM_LEVEL_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_MGR_DROP_TIMER_CANCELED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_MGR_DROP_TIMER_STARTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_MGR_EJECTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_MGR_EJECT_PENDING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_MGR_ENTERED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1008,7 +1040,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_LICENSE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_RESTORED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_REVOKED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_SLOT_UPDATES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_TRAP_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_UPDATES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDER_CONFIRM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1056,6 +1087,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_ORPHAN_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SCENE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SPELL_VISUAL_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAN_DUEL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_ALL_MAP_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1064,6 +1096,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1072,6 +1105,9 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_LOGIN_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_OBJECT_TEST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CREATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1079,23 +1115,29 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_ENUM, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_FACTION_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_RENAME, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_UPGRADE_STARTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_AUTO_RESPONDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_IGNORED_ACCOUNT_MUTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_IS_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_NOT_IN_PARTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_AMBIGUOUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_NOT_FOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_RECONNECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_RESTRICTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_SERVER_DISCONNECTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_SERVER_DISCONNECTED_2, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_SERVER_RECONNECTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_WRONG_FACTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_FOR_BOTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_WARGAME_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_ALL_SPELL_CHARGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_BOSS_EMOTES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWNS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_FAR_SIGHT_IMMEDIATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_QUEST_COMPLETED_BIT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_QUEST_COMPLETED_BITS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_SPELL_CHARGES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLIENTCACHE_VERSION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLIENT_CONTROL_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1108,7 +1150,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT1, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT2, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMMENTATOR_STATE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPLAIN_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPLAINT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPLETE_SHIPMENT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPRESSED_MOVES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMPRESSED_PACKET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1116,6 +1158,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMSAT_DISCONNECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COMSAT_RECONNECT_TRY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSOLE_WRITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTACT_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTACT_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1139,7 +1182,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_DANCE_STUDIO_CREATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DB_REPLY, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEATH_RELEASE_LOC, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEBUG_RUNE_REGEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEBUG_SERVER_GEO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEFENSE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTROY_ARENA_UNIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1147,7 +1189,7 @@ void OpcodeTable::Initialize() 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_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISMOUNTRESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISMOUNT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPEL_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_GAME_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_PLAYER_CHOICE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1158,8 +1200,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_DROP_NEW_CONNECTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_COUNTDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_INBOUNDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_OUTOFBOUNDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_IN_BOUNDS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_OUT_OF_BOUNDS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_REQUESTED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_WINNER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUMP_RIDE_TICKETS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1173,7 +1215,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTALDAMAGELOG, STATUS_UNHANDLED, 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_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_USE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FACTION_BONUS_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1189,6 +1230,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCED_DEATH_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_DISPLAY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_OBJECT_RELINK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORGE_MASTER_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FRIEND_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMEOBJECT_ACTIVATE_ANIM_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1197,11 +1239,12 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMEOBJECT_DESPAWN_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMEOBJECT_PAGETEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMEOBJECT_PLAY_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMEOBJECT_PLAY_SPELL_VISUAL_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMEOBJECT_QUERY_RESPONSE, STATUS_LOGGEDIN, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMEOBJECT_RESET_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMESPEED_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAMETIME_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_EVENT_DEBUG_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_SPEED_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1209,10 +1252,13 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_ACTIVATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_XP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LANDINGPAGE_SHIPMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MONUMENT_SELECTED_TROPHY_ID_LOADED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_TRADESKILL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_TRADESKILL_NPC_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLACE_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOTE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1223,11 +1269,13 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UPGRADEABLE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UPGRADE_FOLLOWER_ITEM_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UPGRADE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_GARRISON_INFO_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_SHIPMENT_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_TROPHY_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_MESSAGECHAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_PLAYER_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_REQUEST_PLAYER_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_CASE_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_GET_TICKET_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_RESOLVE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1236,7 +1284,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_STATUS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_SYSTEM_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GODMODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOD_MODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1319,24 +1367,26 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_NOTIFY_BLOB, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_IGNORE_DIMINISHING_RETURNS_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_IGNORE_REQUIREMENTS_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_INCREASE_CAST_TIME_FOR_SPELL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INITIALIZE_FACTIONS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INITIAL_SETUP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INITIAL_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INIT_WORLD_STATES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_HONOR_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_PVP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_RATED_BG_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_TALENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_HONOR_STATS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_PVP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_TIMER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_GROUP_SIZE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_LOCK_WARNING_QUERY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1348,7 +1398,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALID_PROMOTION_CODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_CHANGE_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_IS_QUEST_COMPLETE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ADD_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_BONUS_DEBUG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ENCHANT_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_EXPIRE_PURCHASE_REFUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1356,10 +1406,9 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_REFUND_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_REFUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_REMOVE_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_SEND_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TEXT_QUERY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_UPGRADE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_JOINED_BATTLEGROUND_QUEUE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_KICK_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_DANCE_MOVES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1438,7 +1487,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MINIGAME_SETUP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MINIGAME_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MINIMAP_PING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRRORIMAGE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRROR_IMAGE_COMPONENTED_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRROR_IMAGE_CREATURE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MISSILE_CANCEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1512,6 +1560,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_TELEPORT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNROOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_HOVER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_WALK_IN_AIR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1540,6 +1589,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DANCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DEST_LOC_SPELL_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MONEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_RECEIVED_MAIL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NPC_TEXT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NPC_WONT_TALK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1560,9 +1610,11 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATS_FULL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERIODICAURALOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETGODMODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_DECLINED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_RENAME_GUILD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_SIGNATURES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1584,11 +1636,12 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BATTLE_REPLACEMENTS_MADE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BATTLE_REQUEST_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BATTLE_ROUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BATTLE_SLOT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BATTLE_SLOT_UPDATES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BROKEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_CAST_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_CLEAR_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_DISMISS_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_GOD_MODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_GUIDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_LEARNED_SPELL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_MODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1606,7 +1659,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYED_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYERBINDERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_DIFFICULTY_CHANGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); 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); @@ -1623,7 +1675,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PONG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_POWER_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRE_RESSURECT, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROCRESIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROC_RESIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PUREMOUNT_CANCELLED_OBSOLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1657,6 +1708,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_FAILED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAF_EMAIL_ENABLED_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_GROUP_ONLY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_INSTANCE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_INSTANCE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1679,8 +1731,10 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_REDIRECT_CLIENT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_EXPIRED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_COMPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_SPELL_HISTORY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVED_SPELL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_ITEM_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REPLACE_TROPHY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REPORT_PVP_AFK_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_CEMETERY_LIST_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1705,13 +1759,15 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHOSEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_BEGIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_RWHOIS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_RUNE_REGEN_DEBUG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SAVE_GUILD_EMBLEM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_BOOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_OUT_OF_BOUNDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_POIS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_PROGRESS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1721,18 +1777,19 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCRIPT_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SELL_ITEM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SELL_RESPONSE, STATUS_UNHANDLED, 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); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_RAID_TARGET_UPDATE_SINGLE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_SPELL_CHARGES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_SPELL_HISTORY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_UNLEARN_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVERTIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_FIRST_ACHIEVEMENT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_FIRST_ACHIEVEMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_PERF, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SETUP_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SETUP_TROPHY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_AI_ANIM_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1741,7 +1798,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_DF_FAST_LAUNCH_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_DUNGEON_DIFFICULTY, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_FACTION_ATWAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_FACTION_AT_WAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_FACTION_NOT_VISIBLE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_FACTION_STANDING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_FACTION_VISIBLE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1772,7 +1829,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_RATINGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_TAXI_NODES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOW_TRADE_SKILL_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOCKET_GEMS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOCKET_GEMS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SORT_BAGS_ACK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOR_START_EXPERIENCE_INCOMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECIAL_MOUNT_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1849,12 +1906,14 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNIT_HEALTH_FREQUENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNIT_SPELLCAST_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLEARNED_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CAPTURE_POINT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CHARACTER_FLAGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_COMBO_POINTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CURRENCY_WEEK_LIMIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_DUNGEON_ENCOUNTER_FOR_LOOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_EXPANSION_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_OWNERSHIP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_LAST_INSTANCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1865,6 +1924,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_ADD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_REMOVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_USE_EQUIPMENT_SET_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOICESESSION_FULL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOICE_CHAT_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOICE_PARENTAL_CONTROLS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1881,6 +1941,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_CHECK_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_REQUEST_SENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEATHER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_LAST_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_RESET_CURRENCY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index fa0ffde42cb..ba2914c7901 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -49,8 +49,10 @@ enum OpcodeClient : uint32 CMSG_ACCEPT_GUILD_INVITE = 0x0384, CMSG_ACCEPT_LEVEL_GRANT = 0x0B12, CMSG_ACCEPT_TRADE = 0x01E5, + CMSG_ACCEPT_WARGAME_INVITE = 0x0B40, CMSG_ACTIVATE_TAXI = 0x0311, CMSG_ACTIVATE_TAXI_EXPRESS = 0x1B52, + CMSG_ADD_BATTLENET_FRIEND = 0x0B36, CMSG_ADD_FRIEND = 0x0DB9, CMSG_ADD_IGNORE = 0x1321, CMSG_ADD_MUTE = 0x098A, @@ -158,10 +160,11 @@ enum OpcodeClient : uint32 CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x0939, CMSG_CANCEL_CAST = 0x0071, CMSG_CANCEL_CHANNELLING = 0x0BE6, - CMSG_CANCEL_GROWTH_AURA = 0xBADD, + CMSG_CANCEL_GROWTH_AURA = 0x09B3, CMSG_CANCEL_MASTER_LOOT_ROLL = 0x0664, + CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x02AE, CMSG_CANCEL_MOUNT_AURA = 0x03E6, - CMSG_CANCEL_QUEUED_SPELL = 0xBADD, + CMSG_CANCEL_QUEUED_SPELL = 0x02DD, CMSG_CANCEL_TEMP_ENCHANTMENT = 0x13C4, CMSG_CANCEL_TRADE = 0x1159, CMSG_CAN_DUEL = 0x0B25, @@ -169,6 +172,7 @@ enum OpcodeClient : uint32 CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x0E66, CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS = 0x0E78, CMSG_CHANGE_BAG_SLOT_FLAG = 0x1959, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x0ADE, CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE = 0xBADD, CMSG_CHANGE_SUB_GROUP = 0x0BA4, CMSG_CHANGE_TROPHY = 0x0B91, @@ -201,27 +205,27 @@ enum OpcodeClient : uint32 CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x1209, CMSG_CHAR_RENAME = 0x038B, CMSG_CHAR_UNDELETE_ENUM = 0x0F2D, - CMSG_CHAT_FILTERED = 0xBADD, - CMSG_CHAT_IGNORED = 0xBADD, + CMSG_CHAT_REPORT_FILTERED = 0x1B5C, + CMSG_CHAT_REPORT_IGNORED = 0x1B14, + CMSG_CHECK_RAF_EMAIL_ENABLED = 0x0906, CMSG_CHOICE_RESPONSE = 0x00C3, - CMSG_CLEAR_RAID_MARKER = 0xBADD, + CMSG_CLEAR_RAID_MARKER = 0x1C9C, CMSG_CLEAR_TRADE_ITEM = 0x1149, CMSG_CLOSE_INTERACTION = 0x1B19, - CMSG_COMMENTATOR_ENABLE = 0xBADD, - CMSG_COMMENTATOR_ENTER_INSTANCE = 0xBADD, - CMSG_COMMENTATOR_EXIT_INSTANCE = 0xBADD, - CMSG_COMMENTATOR_GET_MAP_INFO = 0xBADD, + CMSG_COMMENTATOR_ENABLE = 0x0322, + CMSG_COMMENTATOR_ENTER_INSTANCE = 0x19A1, + CMSG_COMMENTATOR_EXIT_INSTANCE = 0x1303, + CMSG_COMMENTATOR_GET_MAP_INFO = 0x0B82, CMSG_COMMENTATOR_GET_PARTY_INFO = 0xBADD, - CMSG_COMMENTATOR_GET_PLAYER_INFO = 0xBADD, + CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x013D, CMSG_COMMENTATOR_INSTANCE_COMMAND = 0xBADD, CMSG_COMMENTATOR_SKIRMISH_QUEUE_COMMAND = 0xBADD, - CMSG_COMMENTATOR_START_WARGAME = 0xBADD, + CMSG_COMMENTATOR_START_WARGAME = 0x1B89, CMSG_COMPLAIN = 0x0917, CMSG_COMPLETE_CINEMATIC = 0x1B51, CMSG_COMPLETE_MOVIE = 0x13D4, CMSG_CONFIRM_RESPEC_WIPE = 0x14B4, CMSG_CONNECT_TO_FAILED = 0x0135, - CMSG_CONTACT_LIST = 0xBADD, CMSG_CONVERSATION_UNK1 = 0x0912, CMSG_CONVERT_RAID = 0x0137, CMSG_CREATE_SHIPMENT = 0x068B, @@ -241,6 +245,9 @@ enum OpcodeClient : uint32 CMSG_DF_JOIN = 0x0925, CMSG_DF_LEAVE = 0x01A2, CMSG_DF_PROPOSAL_RESPONSE = 0x0509, + CMSG_DF_SEARCH_JOIN = 0x1183, + CMSG_DF_SEARCH_LEAVE = 0x0983, + CMSG_DF_SET_COMMENT = 0x0B89, CMSG_DF_SET_ROLES = 0x1B82, CMSG_DF_TELEPORT = 0x0316, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x0142, @@ -249,12 +256,11 @@ enum OpcodeClient : uint32 CMSG_DO_MASTER_LOOT_ROLL = 0x09BE, CMSG_DO_READY_CHECK = 0x1221, CMSG_DUEL_RESPONSE = 0x1BD2, - CMSG_EJECT_PASSENGER = 0xBADD, + CMSG_EJECT_PASSENGER = 0x1029, CMSG_EMOTE = 0x0A27, CMSG_ENABLE_NAGLE = 0x0460, CMSG_ENABLE_TAXI_NODE = 0x00D2, CMSG_EQUIPMENT_SET_SAVE = 0x1B54, - CMSG_EQUIPMENT_SET_USE = 0xBADD, CMSG_FAR_SIGHT = 0x1C8A, CMSG_GAMEOBJECT_QUERY = 0x03AE, CMSG_GAMEOBJ_REPORT_USE = 0x082E, @@ -264,35 +270,31 @@ enum OpcodeClient : uint32 CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x095A, CMSG_GARRISON_COMPLETE_MISSION = 0x102C, CMSG_GARRISON_MISSION_BONUS_ROLL = 0x02C2, + CMSG_GARRISON_OPEN_TRADESKILL_NPC = 0x099D, CMSG_GARRISON_PURCHASE_BUILDING = 0x04A2, CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x01BB, CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x16F2, CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x0623, CMSG_GARRISON_REQUEST_UPGRADEABLE = 0x02BD, CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x03BC, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x0074, CMSG_GARRISON_START_MISSION = 0x1624, CMSG_GARRISON_UNK1 = 0x02F5, CMSG_GETDEATHBINDZONE = 0xBADD, CMSG_GET_CHALLENGE_MODE_REWARDS = 0x1C2F, CMSG_GET_GARRISON_INFO = 0x03CA, + CMSG_GET_ITEM_PURCHASE_DATA = 0x0924, CMSG_GET_MAIL_LIST = 0x0BD3, - CMSG_GET_MIRRORIMAGE_DATA = 0xBADD, CMSG_GET_MIRROR_IMAGE_DATA = 0x08F6, CMSG_GET_SHIPMENT_INFO = 0x06E3, CMSG_GET_TROPHY_LIST = 0x13B1, CMSG_GET_UNDELETE_COOLDOWN_STATUS = 0x19A9, CMSG_GHOST = 0xBADD, - CMSG_GMRESPONSE_RESOLVE = 0xBADD, - CMSG_GMSURVEY_SUBMIT = 0xBADD, - CMSG_GMTICKET_CREATE = 0xBADD, - CMSG_GMTICKET_DELETETICKET = 0xBADD, - CMSG_GMTICKET_GETTICKET = 0xBADD, - CMSG_GMTICKET_SYSTEMSTATUS = 0xBADD, - CMSG_GMTICKET_UPDATETEXT = 0xBADD, CMSG_GM_INVIS = 0xBADD, + CMSG_GM_LAG_REPORT = 0x0101, CMSG_GM_NUKE = 0xBADD, - CMSG_GM_REPORT_LAG = 0xBADD, CMSG_GM_SET_SECURITY_GROUP = 0xBADD, + CMSG_GM_SURVEY_SUBMIT = 0x01AB, CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x0327, CMSG_GM_TICKET_CREATE = 0x0935, CMSG_GM_TICKET_DELETE_TICKET = 0x0F2E, @@ -327,6 +329,7 @@ enum OpcodeClient : uint32 CMSG_GUILD_BANK_QUERY_TAB = 0x1139, CMSG_GUILD_BANK_QUERY_TEXT = 0x062D, CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x063D, + CMSG_GUILD_BANK_SET_TAB_TEXT = 0x0E30, CMSG_GUILD_BANK_SWAP_ITEMS = 0x1131, CMSG_GUILD_BANK_UPDATE_TAB = 0x13C1, CMSG_GUILD_BANK_WITHDRAW_MONEY = 0xBADD, @@ -368,17 +371,21 @@ enum OpcodeClient : uint32 CMSG_GUILD_UPDATE_MOTD_TEXT = 0x0C2F, CMSG_HEARTH_AND_RESURRECT = 0x0D9D, CMSG_IGNORE_TRADE = 0x1419, + CMSG_INCREASE_CAST_TIME_FOR_SPELL = 0x100A, + CMSG_INITIATE_ROLE_POLL = 0x1BA2, CMSG_INITIATE_TRADE = 0x19BB, CMSG_INSPECT = 0x01EC, - CMSG_INSTANCE_LOCK_WARNING_RESPONSE = 0xBADD, + CMSG_INSPECT_PVP = 0x0382, + CMSG_INSTANCE_LOCK_RESPONSE = 0x0808, + CMSG_ITEM_PURCHASE_REFUND = 0x1111, CMSG_ITEM_REFUND = 0xBADD, - CMSG_ITEM_REFUND_INFO = 0x0924, CMSG_ITEM_TEXT_QUERY = 0xBADD, CMSG_JOIN_ARENA_SKIRMISH = 0x09EB, CMSG_JOIN_CHANNEL = 0x0B4B, CMSG_JOIN_PET_BATTLE_QUEUE = 0x04F4, CMSG_JOIN_RATED_BATTLEGROUND = 0x065A, CMSG_KEEP_ALIVE = 0x0981, + CMSG_KEYBOUND_OVERRIDE = 0x0BBA, CMSG_LEARN_TALENTS = 0x0BB6, CMSG_LEAVE_CHANNEL = 0x19F2, CMSG_LEAVE_GROUP = 0x1BA3, @@ -388,6 +395,7 @@ enum OpcodeClient : uint32 CMSG_LFG_LEAVE = 0xBADD, CMSG_LFG_LFR_JOIN = 0xBADD, CMSG_LFG_LFR_LEAVE = 0xBADD, + CMSG_LFG_LIST_CANCEL_APPLICATION = 0x1B83, CMSG_LFG_LIST_DECLINE_APPLICANT = 0x0916, CMSG_LFG_LIST_GET_STATUS = 0x0B17, CMSG_LFG_LIST_INVITE_APPLICANT = 0x12AB, @@ -395,6 +403,7 @@ enum OpcodeClient : uint32 CMSG_LFG_LIST_JOIN = 0x0B84, CMSG_LFG_LIST_LEAVE = 0x0DA9, CMSG_LFG_LIST_SEARCH = 0x0915, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x07BD, CMSG_LFG_LOCK_INFO_REQUEST = 0x030F, CMSG_LFG_PROPOSAL_RESULT = 0xBADD, CMSG_LFG_SET_BOOT_VOTE = 0xBADD, @@ -413,6 +422,7 @@ enum OpcodeClient : uint32 CMSG_LIST_INVENTORY = 0x0B39, CMSG_LOAD_SCREEN = 0x0B08, CMSG_LOGOUT_CANCEL = 0x03C2, + CMSG_LOGOUT_INSTANT = 0x00F1, CMSG_LOGOUT_REQUEST = 0x1911, CMSG_LOG_DISCONNECT = 0x04D5, CMSG_LOOT = 0x01B1, @@ -422,6 +432,8 @@ enum OpcodeClient : uint32 CMSG_LOOT_MONEY = 0x1991, CMSG_LOOT_RELEASE = 0x1199, CMSG_LOOT_ROLL = 0x09C5, + CMSG_LOW_LEVEL_RAID1 = 0x09E9, + CMSG_LOW_LEVEL_RAID2 = 0x0102, CMSG_MAIL_CREATE_TEXT_ITEM = 0x13D1, CMSG_MAIL_DELETE = 0x068C, CMSG_MAIL_MARK_AS_READ = 0x02D1, @@ -430,6 +442,7 @@ enum OpcodeClient : uint32 CMSG_MAIL_TAKE_MONEY = 0x0806, CMSG_MASTER_LOOT_ITEM = 0x0AA6, CMSG_MEETINGSTONE_INFO = 0xBADD, + CMSG_MESSAGECHAT_ADDON_CHANNEL = 0x13DC, CMSG_MESSAGECHAT_ADDON_GUILD = 0x137C, CMSG_MESSAGECHAT_ADDON_INSTANCE = 0x1823, CMSG_MESSAGECHAT_ADDON_OFFICER = 0x188A, @@ -452,7 +465,6 @@ enum OpcodeClient : uint32 CMSG_MINIGAME_MOVE = 0xBADD, CMSG_MINIMAP_PING = 0x0116, CMSG_MISSILE_TRAJECTORY_COLLISION = 0x1B92, - CMSG_MOUNTSPECIAL_ANIM = 0xBADD, CMSG_MOUNT_SET_FAVORITE = 0x090E, CMSG_MOUNT_SPECIAL_ANIM = 0x06DB, CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x196C, @@ -531,7 +543,7 @@ enum OpcodeClient : uint32 CMSG_OBJECT_UPDATE_FAILED = 0x14E2, CMSG_OBJECT_UPDATE_RESCUED = 0x0AD6, CMSG_OFFER_PETITION = 0x0315, - CMSG_OPENING_CINEMATIC = 0xBADD, + CMSG_OPENING_CINEMATIC = 0x02D2, CMSG_OPEN_GARRISON_MISSION_NPC = 0x03D9, CMSG_OPEN_ITEM = 0x08AD, CMSG_OPEN_SHIPMENT_GAME_OBJ = 0x1359, @@ -559,7 +571,7 @@ enum OpcodeClient : uint32 CMSG_PET_BATTLE_REQUEST_PVP = 0x1CDC, CMSG_PET_BATTLE_REQUEST_WILD = 0x03C6, CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x09CA, - CMSG_PET_CANCEL_AURA = 0xBADD, + CMSG_PET_CANCEL_AURA = 0x0A30, CMSG_PET_CAST_SPELL = 0x0286, CMSG_PET_LEARN_TALENT = 0xBADD, CMSG_PET_NAME_CACHE = 0xBADD, @@ -572,6 +584,7 @@ enum OpcodeClient : uint32 CMSG_PING = 0x0416, CMSG_PLAYED_TIME = 0x1BB2, CMSG_PLAYER_LOGIN = 0x0B1D, + CMSG_PLAYER_TIME_ADJUSTMENT_RESPONSE = 0x0289, CMSG_PLAYER_VEHICLE_ENTER = 0xBADD, CMSG_PLAY_DANCE = 0xBADD, CMSG_PORT_GRAVEYARD = 0x0D3E, @@ -608,6 +621,7 @@ enum OpcodeClient : uint32 CMSG_RANDOM_ROLL = 0x12AA, CMSG_READY_CHECK_RESPONSE = 0x071A, CMSG_READ_ITEM = 0x09B9, + CMSG_REAGENT_BANK_BUY_TAB = 0x11E4, CMSG_REALM_NAME_QUERY = 0x1189, CMSG_RECLAIM_CORPSE = 0x1BC4, CMSG_RECRUIT_A_FRIEND = 0x07BA, @@ -627,8 +641,6 @@ enum OpcodeClient : uint32 CMSG_REQUEST_FORCED_REACTIONS = 0x02C3, CMSG_REQUEST_GUILD_REWARDS_LIST = 0x028D, CMSG_REQUEST_HONOR_STATS = 0x09FD, - CMSG_REQUEST_INSPECT_PVP = 0x0382, - CMSG_REQUEST_INSPECT_RATED_BG_STATS = 0xBADD, CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x0BCA, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x071D, CMSG_REQUEST_PARTY_MEMBER_STATS = 0x031D, @@ -637,18 +649,19 @@ enum OpcodeClient : uint32 CMSG_REQUEST_PVP_REWARDS = 0x1399, CMSG_REQUEST_RAID_INFO = 0x0104, CMSG_REQUEST_RATED_BATTLEFIELD_INFO = 0x1323, - CMSG_REQUEST_RATED_BG_INFO = 0xBADD, CMSG_REQUEST_RATED_BG_STATS = 0xBADD, CMSG_REQUEST_RESEARCH_HISTORY = 0xBADD, CMSG_REQUEST_STABLED_PETS = 0x059D, CMSG_REQUEST_VEHICLE_EXIT = 0x09CE, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0xBADD, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x1672, CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x0527, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0xBADD, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x0AED, + CMSG_RESET_CHALLENGE_MODE = 0x1619, CMSG_RESET_FACTION_CHEAT = 0xBADD, CMSG_RESET_INSTANCES = 0x0389, CMSG_RESURRECT_RESPONSE = 0x073E, CMSG_REVERT_TROPHY = 0x0085, + CMSG_RIDE_VEHICLE_INTERACT = 0x11BC, CMSG_ROLE_POLL_BEGIN = 0xBADD, CMSG_ROUTER_CLIENT_LOG_STREAMING_ERROR = 0x0C10, CMSG_SAVE_CUF_PROFILES = 0x0053, @@ -661,48 +674,51 @@ enum OpcodeClient : uint32 CMSG_SELL_ITEM = 0x0351, CMSG_SEND_CONTACT_LIST = 0x079E, CMSG_SEND_MAIL = 0x0910, - CMSG_SEND_SOR_REQUEST_VIA_ADDRESS = 0xBADD, - CMSG_SEND_SOR_REQUEST_VIA_BNET_ACCOUNT_ID = 0xBADD, + CMSG_SEND_SOR_REQUEST_VIA_ADDRESS = 0x0D39, + CMSG_SEND_SOR_REQUEST_VIA_BNET_ACCOUNT_ID = 0x13A2, CMSG_SERVERTIME = 0xBADD, CMSG_SETDEATHBINDPOINT = 0xBADD, - CMSG_SETSHEATHED = 0x1B43, + CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x0464, CMSG_SET_ACTIONBAR_TOGGLES = 0x0BD2, CMSG_SET_ACTION_BUTTON = 0x0599, CMSG_SET_ACTIVE_MOVER = 0x0971, CMSG_SET_ACTIVE_VOICE_CHANNEL = 0x031E, - CMSG_SET_ALLOW_LOW_LEVEL_RAID1 = 0xBADD, - CMSG_SET_ALLOW_LOW_LEVEL_RAID2 = 0xBADD, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x0ECC, + CMSG_SET_ASSISTANT_LEADER = 0x0B26, CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x0C9C, CMSG_SET_BANK_AUTOSORT_DISABLED = 0x1393, - CMSG_SET_CONTACT_NOTES = 0xBADD, - CMSG_SET_CURRENCY_FLAGS = 0xBADD, + CMSG_SET_CONTACT_NOTES = 0x03AC, + CMSG_SET_CURRENCY_FLAGS = 0x14A1, + CMSG_SET_DIFFICULTY_ID = 0x01F6, CMSG_SET_DUNGEON_DIFFICULTY = 0x012F, - CMSG_SET_EVERYONE_IS_ASSISTANT = 0xBADD, + CMSG_SET_EVERYONE_IS_ASSISTANT = 0x0F3D, CMSG_SET_FACTION_AT_WAR = 0x051E, CMSG_SET_FACTION_CHEAT = 0xBADD, CMSG_SET_FACTION_INACTIVE = 0x09E2, CMSG_SET_FACTION_NOT_AT_WAR = 0x0A06, CMSG_SET_GUILD_BANK_TEXT = 0xBADD, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x02C4, CMSG_SET_LFG_BONUS_FACTION_ID = 0x009D, CMSG_SET_LFG_COMMENT = 0xBADD, CMSG_SET_LOOT_SPECIALIZATION = 0x0226, CMSG_SET_PARTY_ASSIGNMENT = 0x050A, CMSG_SET_PARTY_LEADER = 0x091E, - CMSG_SET_PET_SLOT = 0xBADD, + CMSG_SET_PET_SLOT = 0x0BFD, CMSG_SET_PLAYER_DECLINED_NAMES = 0x018B, - CMSG_SET_PREFERED_CEMETERY = 0xBADD, + CMSG_SET_PREFERED_CEMETERY = 0x1461, CMSG_SET_PVP = 0x19B9, CMSG_SET_RAID_DIFFICULTY = 0x1121, CMSG_SET_RELATIVE_POSITION = 0xBADD, CMSG_SET_ROLE = 0x0326, CMSG_SET_SAVED_INSTANCE_EXTEND = 0x1222, CMSG_SET_SELECTION = 0x05BD, + CMSG_SET_SHEATHED = 0x1B43, CMSG_SET_SKILL_CHEAT = 0xBADD, CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x089D, CMSG_SET_SPECIALIZATION = 0x0AC5, CMSG_SET_TAXI_BENCHMARK_MODE = 0x1332, CMSG_SET_TITLE = 0x0BC6, - CMSG_SET_TRADE_CURRENCY = 0xBADD, + CMSG_SET_TRADE_CURRENCY = 0x1462, CMSG_SET_TRADE_GOLD = 0x064C, CMSG_SET_TRADE_ITEM = 0x14A2, CMSG_SET_VEHICLE_REC_ID_ACK = 0xBADD, @@ -721,12 +737,14 @@ enum OpcodeClient : uint32 CMSG_SPLIT_ITEM = 0x0795, CMSG_STAND_STATE_CHANGE = 0x0ABD, CMSG_START_QUEST = 0xBADD, + CMSG_START_SPECTATOR_WARGAME = 0x13A3, + CMSG_START_WARGAME = 0x03A2, CMSG_STOP_DANCE = 0xBADD, CMSG_STORE_LOOT_IN_SLOT = 0xBADD, CMSG_SUBMIT_BUG = 0xBADD, CMSG_SUBMIT_COMPLAIN = 0xBADD, CMSG_SUGGESTION_SUBMIT = 0xBADD, - CMSG_SUMMON_RESPONSE = 0xBADD, + CMSG_SUMMON_RESPONSE = 0x1124, CMSG_SUPPORT_TICKET_SUBMIT_BUG = 0x0B0D, CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x0B37, CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x0D0A, @@ -742,14 +760,16 @@ enum OpcodeClient : uint32 CMSG_TAXISHOWNODES = 0xBADD, CMSG_TAXI_NODE_STATUS_QUERY = 0x1BC1, CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x000E, - CMSG_TELEPORT_TO_UNIT = 0xBADD, + CMSG_TELEPORT_TO_UNIT = 0x0F19, CMSG_TEXT_EMOTE = 0x1901, CMSG_TIME_ADJUSTMENT_RESPONSE = 0xBADD, CMSG_TIME_SYNC_RESPONSE = 0x0003, CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x0D93, CMSG_TIME_SYNC_RESPONSE_FAILED = 0x1B73, + CMSG_TOGGLE_DIFFICULTY = 0x0123, CMSG_TOGGLE_PVP = 0x149B, CMSG_TOTEM_DESTROYED = 0x000D, + CMSG_TOY_SET_FAVORITE = 0x0105, CMSG_TRAINER_BUY_SPELL = 0x0A28, CMSG_TRAINER_LIST = 0x0A2E, CMSG_TRANSMOGRIFY_ITEMS = 0x0A85, @@ -761,15 +781,18 @@ enum OpcodeClient : uint32 CMSG_UNACCEPT_TRADE = 0x13BA, CMSG_UNDELETE_CHARACTER = 0x0D99, CMSG_UNLEARN_SKILL = 0x0A26, + CMSG_UNLEARN_SPECIALIZATION = 0x16CB, CMSG_UNREGISTER_ALL_ADDON_PREFIXES = 0x082A, CMSG_UPDATE_ACCOUNT_DATA = 0x12A1, CMSG_UPDATE_CLIENT_SETTINGS = 0x090F, - CMSG_UPDATE_MISSILE_TRAJECTORY = 0xBADD, + CMSG_UPDATE_MISSILE_TRAJECTORY = 0x1CDB, CMSG_UPDATE_PROJECTILE_POSITION = 0xBADD, CMSG_UPDATE_RAID_TARGET = 0x1122, CMSG_UPGRADE_GARRISON = 0x0526, + CMSG_UPGRADE_ITEM = 0x0518, CMSG_USED_FOLLOW = 0x1609, CMSG_USE_CRITTER_ITEM = 0x0BBE, + CMSG_USE_EQUIPMENT_SET = 0x0756, CMSG_USE_ITEM = 0x08B6, CMSG_USE_TOY = 0x16E2, CMSG_VIOLENCE_LEVEL = 0x098D, @@ -783,8 +806,8 @@ enum OpcodeClient : uint32 CMSG_WARGAME_START = 0xBADD, CMSG_WHO = 0x1322, CMSG_WHOIS = 0x011F, - CMSG_WORLD_TELEPORT = 0xBADD, - CMSG_WRAP_ITEM = 0xBADD, + CMSG_WORLD_TELEPORT = 0x038A, + CMSG_WRAP_ITEM = 0x0797, CMSG_ZONEUPDATE = 0xBADD, MSG_GM_BIND_OTHER = 0xBADD, MSG_GM_SHOWLABEL = 0xBADD, @@ -820,6 +843,8 @@ enum OpcodeServer : uint32 SMSG_ACTION_BUTTONS = 0x1D1F, SMSG_ACTIVATE_TAXI_REPLY = 0x1321, SMSG_ADDON_INFO = 0x1D9F, + SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x1BD4, + SMSG_ADD_ITEM_PASSIVE = 0x13D2, SMSG_ADD_LOSS_OF_CONTROL = 0x02F4, SMSG_ADD_RUNE_POWER = 0x0322, SMSG_ADJUST_SPLINE_DURATION = 0x0104, @@ -829,13 +854,16 @@ enum OpcodeServer : uint32 SMSG_ALL_ACCOUNT_CRITERIA = 0x0123, SMSG_ALL_ACHIEVEMENT_DATA = 0x0030, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x1866, + SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x0008, SMSG_AREA_SPIRIT_HEALER_TIME = 0x1182, SMSG_AREA_TRIGGER_DENIED = 0x018A, SMSG_AREA_TRIGGER_MESSAGE = 0xBADD, SMSG_AREA_TRIGGER_MOVEMENT_UPDATE = 0xBADD, SMSG_AREA_TRIGGER_NO_CORPSE = 0x0D3F, SMSG_AREA_TRIGGER_RE_PATH = 0x0D20, - SMSG_ARENA_ERROR = 0xBADD, + SMSG_AREA_TRIGGER_RE_SHAPE = 0x12A3, + SMSG_ARENA_ERROR = 0x120B, + SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x03AA, SMSG_ARENA_TEAM_CHANGE_FAILED_QUEUED = 0xBADD, SMSG_ARENA_TEAM_COMMAND_RESULT = 0xBADD, SMSG_ARENA_TEAM_EVENT = 0xBADD, @@ -847,6 +875,7 @@ enum OpcodeServer : uint32 SMSG_ATTACKSTART = 0x1D3E, SMSG_ATTACKSTOP = 0x1382, SMSG_ATTACKSWING_ERROR = 0x0509, + SMSG_ATTACKSWING_LANDED_LOG = 0x178E, SMSG_AUCTION_BIDDER_NOTIFICATION = 0xBADD, SMSG_AUCTION_CLOSED_NOTIFICATION = 0x058E, SMSG_AUCTION_COMMAND_RESULT = 0x0B2D, @@ -870,6 +899,8 @@ enum OpcodeServer : uint32 SMSG_AVERAGE_ITEM_LEVEL_INFORM = 0xBADD, SMSG_BARBER_SHOP_RESULT = 0x150D, SMSG_BATTLEFIELD_LIST = 0x11A1, + SMSG_BATTLEFIELD_MGR_DROP_TIMER_CANCELED = 0x179A, + SMSG_BATTLEFIELD_MGR_DROP_TIMER_STARTED = 0x098B, SMSG_BATTLEFIELD_MGR_EJECTED = 0x0DAF, SMSG_BATTLEFIELD_MGR_EJECT_PENDING = 0x09A1, SMSG_BATTLEFIELD_MGR_ENTERED = 0x11A3, @@ -916,7 +947,6 @@ enum OpcodeServer : uint32 SMSG_BATTLE_PET_LICENSE_CHANGED = 0x0FA9, SMSG_BATTLE_PET_RESTORED = 0x159D, SMSG_BATTLE_PET_REVOKED = 0x0936, - SMSG_BATTLE_PET_SLOT_UPDATES = 0x1D8F, SMSG_BATTLE_PET_TRAP_LEVEL = 0x0911, SMSG_BATTLE_PET_UPDATES = 0x0354, SMSG_BINDER_CONFIRM = 0x0B11, @@ -941,13 +971,13 @@ enum OpcodeServer : uint32 SMSG_CALENDAR_EVENT_INVITE_ALERT = 0x0A0F, SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS = 0x0B52, SMSG_CALENDAR_EVENT_INVITE_NOTES = 0x0208, - SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x1124, + SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x1104, SMSG_CALENDAR_EVENT_INVITE_REMOVED = 0x1F0E, SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT = 0x0116, SMSG_CALENDAR_EVENT_INVITE_STATUS = 0x1183, SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT = 0x1BD3, SMSG_CALENDAR_EVENT_MODERATOR_STATUS_ALERT = 0xBADD, - SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0xBADD, + SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x1124, SMSG_CALENDAR_EVENT_STATUS = 0xBADD, SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x1D9D, SMSG_CALENDAR_FILTER_GUILD = 0xBADD, @@ -958,12 +988,13 @@ enum OpcodeServer : uint32 SMSG_CALENDAR_SEND_EVENT = 0x0225, SMSG_CALENDAR_SEND_NUM_PENDING = 0x1B3A, SMSG_CALENDAR_UPDATE_INVITE_LIST = 0xBADD, - SMSG_CAMERA_SHAKE = 0xBADD, + SMSG_CAMERA_SHAKE = 0x0926, SMSG_CANCEL_AUTO_REPEAT = 0x0B18, SMSG_CANCEL_COMBAT = 0x05AD, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x1BFB, SMSG_CANCEL_SCENE = 0x033F, SMSG_CANCEL_SPELL_VISUAL = 0x0361, + SMSG_CANCEL_SPELL_VISUAL_KIT = 0x1173, SMSG_CAN_DUEL_RESULT = 0x03E9, SMSG_CAST_FAILED = 0x1A89, SMSG_CHALLENGE_MODE_ALL_MAP_STATS = 0x0904, @@ -972,6 +1003,7 @@ enum OpcodeServer : uint32 SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x13A3, SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x07AA, SMSG_CHALLENGE_MODE_REWARDS = 0x1CC9, + SMSG_CHALLENGE_MODE_START = 0x1221, SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x0826, SMSG_CHANNEL_LIST = 0x1411, SMSG_CHANNEL_NOTIFY = 0x0643, @@ -980,6 +1012,9 @@ enum OpcodeServer : uint32 SMSG_CHANNEL_START = 0x016C, SMSG_CHANNEL_UPDATE = 0x19DB, SMSG_CHARACTER_LOGIN_FAILED = 0x091E, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x038A, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x0806, + SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x0B23, SMSG_CHAR_CREATE = 0x0107, SMSG_CHAR_CUSTOMIZE = 0x1932, SMSG_CHAR_CUSTOMIZE_RESULT = 0x0BAA, @@ -987,36 +1022,42 @@ enum OpcodeServer : uint32 SMSG_CHAR_ENUM = 0x05AF, SMSG_CHAR_FACTION_CHANGE = 0x0810, SMSG_CHAR_RENAME = 0x0D89, - SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0xBADD, + SMSG_CHAR_UPGRADE_STARTED = 0x01E2, + SMSG_CHAT_AUTO_RESPONDED = 0x1482, + SMSG_CHAT_DOWN = 0x0611, + SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x14C2, + SMSG_CHAT_IS_DOWN = 0x0404, SMSG_CHAT_NOT_IN_PARTY = 0x0604, - SMSG_CHAT_PLAYER_AMBIGUOUS = 0xBADD, + SMSG_CHAT_PLAYER_AMBIGUOUS = 0x06C1, SMSG_CHAT_PLAYER_NOT_FOUND = 0x0614, + SMSG_CHAT_RECONNECT = 0x0613, SMSG_CHAT_RESTRICTED = 0x0484, - SMSG_CHAT_SERVER_DISCONNECTED = 0xBADD, - SMSG_CHAT_SERVER_DISCONNECTED_2 = 0xBADD, - SMSG_CHAT_SERVER_RECONNECTED = 0xBADD, SMSG_CHAT_WRONG_FACTION = 0xBADD, + SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x194C, SMSG_CHECK_FOR_BOTS = 0xBADD, + SMSG_CHECK_WARGAME_ENTRY = 0x1203, SMSG_CLEAR_ALL_SPELL_CHARGE = 0x088B, SMSG_CLEAR_BOSS_EMOTES = 0x118B, SMSG_CLEAR_COOLDOWN = 0x0226, SMSG_CLEAR_COOLDOWNS = 0x0BFA, SMSG_CLEAR_FAR_SIGHT_IMMEDIATE = 0xBADD, + SMSG_CLEAR_LOSS_OF_CONTROL = 0x1D20, SMSG_CLEAR_QUEST_COMPLETED_BIT = 0x1563, SMSG_CLEAR_QUEST_COMPLETED_BITS = 0x1D47, + SMSG_CLEAR_SPELL_CHARGES = 0x1AA1, SMSG_CLEAR_TARGET = 0x17AE, SMSG_CLIENTCACHE_VERSION = 0x080D, SMSG_CLIENT_CONTROL_UPDATE = 0x080E, SMSG_COIN_REMOVED = 0x0D30, SMSG_COMBAT_EVENT_FAILED = 0x1DAF, SMSG_COMBAT_LOG_MULTIPLE = 0xBADD, - SMSG_COMMENTATOR_MAP_INFO = 0xBADD, + SMSG_COMMENTATOR_MAP_INFO = 0x1922, SMSG_COMMENTATOR_PARTY_INFO = 0xBADD, - SMSG_COMMENTATOR_PLAYER_INFO = 0xBADD, + SMSG_COMMENTATOR_PLAYER_INFO = 0x1B23, SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT1 = 0xBADD, SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT2 = 0xBADD, - SMSG_COMMENTATOR_STATE_CHANGED = 0xBADD, - SMSG_COMPLAIN_RESULT = 0xBADD, + SMSG_COMMENTATOR_STATE_CHANGED = 0x133A, + SMSG_COMPLAINT_RESULT = 0x0B15, SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x0F3A, SMSG_COMPRESSED_MOVES = 0xBADD, SMSG_COMPRESSED_PACKET = 0x07CA, @@ -1024,10 +1065,11 @@ enum OpcodeServer : uint32 SMSG_COMSAT_DISCONNECT = 0xBADD, SMSG_COMSAT_RECONNECT_TRY = 0xBADD, SMSG_CONQUEST_FORMULA_CONSTANTS = 0x1342, + SMSG_CONSOLE_WRITE = 0x0230, SMSG_CONTACT_LIST = 0x0210, SMSG_CONTACT_STATUS = 0x1BEA, SMSG_CONVERT_RUNE = 0x1C89, - SMSG_COOLDOWN_CHEAT = 0xBADD, + SMSG_COOLDOWN_CHEAT = 0x118A, SMSG_COOLDOWN_EVENT = 0x05B0, SMSG_CORPSE_LOCATION = 0x09E1, SMSG_CORPSE_RECLAIM_DELAY = 0x0BE2, @@ -1041,13 +1083,12 @@ enum OpcodeServer : uint32 SMSG_CURRENCY_LOOT_RESTORED = 0xBADD, SMSG_CUSTOM_LOAD_SCREEN = 0x0D1A, SMSG_DAILY_QUESTS_RESET = 0x1514, - SMSG_DAMAGE_CALC_LOG = 0xBADD, + SMSG_DAMAGE_CALC_LOG = 0x1689, SMSG_DAMAGE_DONE_OBSOLETE = 0xBADD, SMSG_DANCE_QUERY_RESPONSE = 0xBADD, SMSG_DANCE_STUDIO_CREATE_RESULT = 0x178D, SMSG_DB_REPLY = 0x1939, SMSG_DEATH_RELEASE_LOC = 0x098C, - SMSG_DEBUG_RUNE_REGEN = 0xBADD, SMSG_DEBUG_SERVER_GEO = 0xBADD, SMSG_DEFENSE_MESSAGE = 0x1442, SMSG_DESTROY_ARENA_UNIT = 0x19E1, @@ -1055,19 +1096,19 @@ enum OpcodeServer : uint32 SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x0B12, SMSG_DISENCHANT_CREDIT = 0x050F, SMSG_DISMOUNT = 0x0B89, - SMSG_DISMOUNTRESULT = 0xBADD, - SMSG_DISPEL_FAILED = 0xBADD, + SMSG_DISMOUNT_RESULT = 0x0381, + SMSG_DISPEL_FAILED = 0x0AA3, SMSG_DISPLAY_GAME_ERROR = 0x090D, SMSG_DISPLAY_PLAYER_CHOICE = 0x0907, SMSG_DISPLAY_PROMOTION = 0x151D, SMSG_DISPLAY_QUEST_POPUP = 0x15D7, SMSG_DISPLAY_TOAST = 0x17BD, - SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0xBADD, + SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x13D1, SMSG_DROP_NEW_CONNECTION = 0xBADD, SMSG_DUEL_COMPLETE = 0x14C9, SMSG_DUEL_COUNTDOWN = 0x020E, - SMSG_DUEL_INBOUNDS = 0xBADD, - SMSG_DUEL_OUTOFBOUNDS = 0xBADD, + SMSG_DUEL_IN_BOUNDS = 0x03E4, + SMSG_DUEL_OUT_OF_BOUNDS = 0x0111, SMSG_DUEL_REQUESTED = 0x0827, SMSG_DUEL_WINNER = 0x0935, SMSG_DUMP_RIDE_TICKETS_RESPONSE = 0xBADD, @@ -1081,22 +1122,22 @@ enum OpcodeServer : uint32 SMSG_ENVIRONMENTALDAMAGELOG = 0x0AAB, SMSG_EQUIPMENT_SET_LIST = 0x0F1E, SMSG_EQUIPMENT_SET_SAVED = 0x0027, - SMSG_EQUIPMENT_SET_USE_RESULT = 0xBADD, - SMSG_EXPECTED_SPAM_RECORDS = 0xBADD, + SMSG_EXPECTED_SPAM_RECORDS = 0x0452, SMSG_EXPLORATION_EXPERIENCE = 0x07AE, SMSG_FACTION_BONUS_INFO = 0x0928, SMSG_FAILED_PLAYER_CONDITION = 0x09AB, SMSG_FEATURE_SYSTEM_STATUS = 0x0B1E, SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x1540, - SMSG_FEIGN_DEATH_RESISTED = 0xBADD, - SMSG_FISH_ESCAPED = 0xBADD, + SMSG_FEIGN_DEATH_RESISTED = 0x1B43, + SMSG_FISH_ESCAPED = 0x0530, SMSG_FISH_NOT_HOOKED = 0x0DC0, SMSG_FLIGHT_SPLINE_SYNC = 0x08A5, SMSG_FLOOD_DETECTED = 0xBADD, SMSG_FORCEACTIONSHOW = 0xBADD, - SMSG_FORCED_DEATH_UPDATE = 0xBADD, - SMSG_FORCE_ANIM = 0xBADD, + SMSG_FORCED_DEATH_UPDATE = 0x09EB, + SMSG_FORCE_ANIM = 0x0028, SMSG_FORCE_DISPLAY_UPDATE = 0xBADD, + SMSG_FORCE_OBJECT_RELINK = 0x059D, SMSG_FORGE_MASTER_SET = 0xBADD, SMSG_FRIEND_STATUS = 0xBADD, SMSG_GAMEOBJECT_ACTIVATE_ANIM_KIT = 0x038C, @@ -1105,11 +1146,12 @@ enum OpcodeServer : uint32 SMSG_GAMEOBJECT_DESPAWN_ANIM = 0xBADD, SMSG_GAMEOBJECT_PAGETEXT = 0xBADD, SMSG_GAMEOBJECT_PLAY_SPELL_VISUAL = 0x191B, + SMSG_GAMEOBJECT_PLAY_SPELL_VISUAL_KIT = 0x01DB, SMSG_GAMEOBJECT_QUERY_RESPONSE = 0x128A, SMSG_GAMEOBJECT_RESET_STATE = 0x090E, - SMSG_GAMESPEED_SET = 0xBADD, - SMSG_GAMETIME_SET = 0xBADD, SMSG_GAME_EVENT_DEBUG_LOG = 0xBADD, + SMSG_GAME_SPEED_SET = 0x0D40, + SMSG_GAME_TIME_SET = 0x0B40, SMSG_GAME_TIME_UPDATE = 0x1709, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x0544, SMSG_GARRISON_ADD_MISSION_RESULT = 0x0973, @@ -1117,11 +1159,13 @@ enum OpcodeServer : uint32 SMSG_GARRISON_BUILDING_ACTIVATED = 0x1974, SMSG_GARRISON_BUILDING_REMOVED = 0x1151, SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x0D54, - SMSG_GARRISON_FOLLOWER_XP_CHANGED = 0x1B64, + SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x1B64, SMSG_GARRISON_LANDINGPAGE_SHIPMENTS = 0x1901, + SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x000B, SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x0952, SMSG_GARRISON_MONUMENT_SELECTED_TROPHY_ID_LOADED = 0x09EA, - SMSG_GARRISON_OPEN_TRADESKILL = 0x09C1, + SMSG_GARRISON_OPEN_TRADESKILL_NPC_RESPONSE = 0x09C1, + SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x0082, SMSG_GARRISON_PLOT_REMOVED = 0x0513, SMSG_GARRISON_REMOTE_INFO = 0x0151, SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x0964, @@ -1132,11 +1176,13 @@ enum OpcodeServer : uint32 SMSG_GARRISON_UPGRADEABLE_RESULT = 0x0522, SMSG_GARRISON_UPGRADE_FOLLOWER_ITEM_LEVEL = 0x000C, SMSG_GARRISON_UPGRADE_RESULT = 0x0D51, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x1D3F, SMSG_GET_GARRISON_INFO_RESULT = 0x0521, SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x1BAB, SMSG_GET_TROPHY_LIST_RESPONSE = 0x0126, SMSG_GM_MESSAGECHAT = 0xBADD, - SMSG_GM_PLAYER_INFO = 0xBADD, + SMSG_GM_PLAYER_INFO = 0x0118, + SMSG_GM_REQUEST_PLAYER_INFO = 0x1381, SMSG_GM_TICKET_CASE_STATUS = 0x1D8D, SMSG_GM_TICKET_GET_TICKET_RESPONSE = 0x0389, SMSG_GM_TICKET_RESOLVE_RESPONSE = 0x091F, @@ -1145,7 +1191,7 @@ enum OpcodeServer : uint32 SMSG_GM_TICKET_STATUS_UPDATE = 0x1D2E, SMSG_GM_TICKET_SYSTEM_STATUS = 0x1229, SMSG_GM_TICKET_UPDATE = 0x13EB, - SMSG_GODMODE = 0xBADD, + SMSG_GOD_MODE = 0x0B36, SMSG_GOSSIP_COMPLETE = 0x15D1, SMSG_GOSSIP_MESSAGE = 0x1746, SMSG_GOSSIP_POI = 0x011E, @@ -1228,24 +1274,26 @@ enum OpcodeServer : uint32 SMSG_HOTFIX_NOTIFY_BLOB = 0x1D1D, SMSG_IGNORE_DIMINISHING_RETURNS_CHEAT = 0xBADD, SMSG_IGNORE_REQUIREMENTS_CHEAT = 0xBADD, + SMSG_INCREASE_CAST_TIME_FOR_SPELL = 0x1179, SMSG_INITIALIZE_FACTIONS = 0x0B10, SMSG_INITIAL_SETUP = 0x0B07, SMSG_INITIAL_SPELLS = 0x0A81, SMSG_INIT_WORLD_STATES = 0x0B04, - SMSG_INSPECT = 0xBADD, SMSG_INSPECT_HONOR_STATS = 0x02D3, SMSG_INSPECT_PVP = 0x050A, - SMSG_INSPECT_RATED_BG_STATS = 0xBADD, SMSG_INSPECT_RESULT = 0x052E, - SMSG_INSPECT_TALENT = 0xBADD, SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x0B03, SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x05AE, SMSG_INSTANCE_ENCOUNTER_END = 0x0B1A, SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x0137, SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x15BD, SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x13A1, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x150E, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x0F8D, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x0B0D, SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x19EA, SMSG_INSTANCE_ENCOUNTER_START = 0x051A, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x010F, SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x1B8B, SMSG_INSTANCE_INFO = 0x0DA0, SMSG_INSTANCE_LOCK_WARNING_QUERY = 0xBADD, @@ -1254,10 +1302,10 @@ enum OpcodeServer : uint32 SMSG_INSTANCE_SAVE_CREATED = 0x093A, SMSG_INVALIDATE_DANCE = 0xBADD, SMSG_INVALIDATE_PLAYER = 0x0B37, - SMSG_INVALID_PROMOTION_CODE = 0xBADD, + SMSG_INVALID_PROMOTION_CODE = 0x1F09, SMSG_INVENTORY_CHANGE_FAILURE = 0x0112, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x17E1, - SMSG_ITEM_ADD_PASSIVE = 0xBADD, + SMSG_ITEM_BONUS_DEBUG = 0x1D8E, SMSG_ITEM_COOLDOWN = 0x090F, SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x010D, SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x1282, @@ -1265,12 +1313,11 @@ enum OpcodeServer : uint32 SMSG_ITEM_PUSH_RESULT = 0x0183, SMSG_ITEM_REFUND_INFO_RESPONSE = 0xBADD, SMSG_ITEM_REFUND_RESULT = 0xBADD, - SMSG_ITEM_REMOVE_PASSIVE = 0xBADD, - SMSG_ITEM_SEND_PASSIVE = 0xBADD, - SMSG_ITEM_TEXT_QUERY_RESPONSE = 0xBADD, + SMSG_ITEM_TEXT_QUERY_RESPONSE = 0x011A, SMSG_ITEM_TIME_UPDATE = 0x0F3E, + SMSG_ITEM_UPGRADE_RESULT = 0x0B2E, SMSG_JOINED_BATTLEGROUND_QUEUE = 0xBADD, - SMSG_KICK_REASON = 0xBADD, + SMSG_KICK_REASON = 0x018C, SMSG_LEARNED_DANCE_MOVES = 0xBADD, SMSG_LEARNED_SPELLS = 0x08AB, SMSG_LEARN_TALENT_FAILED = 0x1BA3, @@ -1343,11 +1390,10 @@ enum OpcodeServer : uint32 SMSG_MEETINGSTONE_MEMBER_ADDED = 0xBADD, SMSG_MEETINGSTONE_SETQUEUE = 0xBADD, SMSG_MESSAGECHAT = 0x0603, - SMSG_MESSAGE_BOX = 0xBADD, + SMSG_MESSAGE_BOX = 0x0D10, SMSG_MINIGAME_SETUP = 0xBADD, SMSG_MINIGAME_STATE = 0xBADD, SMSG_MINIMAP_PING = 0x07BA, - SMSG_MIRRORIMAGE_DATA = 0xBADD, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x1B5C, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x1B14, SMSG_MISSILE_CANCEL = 0x0337, @@ -1357,10 +1403,10 @@ enum OpcodeServer : uint32 SMSG_MOUNT_RESULT = 0x000F, SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x06CB, SMSG_MOVE_DISABLE_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x00C5, - SMSG_MOVE_DISABLE_COLLISION = 0xBADD, + SMSG_MOVE_DISABLE_COLLISION = 0x135A, SMSG_MOVE_DISABLE_GRAVITY = 0x02C6, SMSG_MOVE_ENABLE_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x08CE, - SMSG_MOVE_ENABLE_COLLISION = 0xBADD, + SMSG_MOVE_ENABLE_COLLISION = 0x01B5, SMSG_MOVE_ENABLE_GRAVITY = 0x03B4, SMSG_MOVE_KNOCK_BACK = 0x0CCB, SMSG_MOVE_REMOVE_MOVEMENT_FORCE = 0x0073, @@ -1372,18 +1418,18 @@ enum OpcodeServer : uint32 SMSG_MOVE_SET_COLLISION_HEIGHT = 0x008D, SMSG_MOVE_SET_COMPOUND_STATE = 0x02E5, SMSG_MOVE_SET_FEATHER_FALL = 0x01DD, - SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0xBADD, + SMSG_MOVE_SET_FLIGHT_BACK_SPEED = 0x0BDA, SMSG_MOVE_SET_FLIGHT_SPEED = 0x100B, SMSG_MOVE_SET_HOVER = 0x0296, SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x1BD9, SMSG_MOVE_SET_LAND_WALK = 0x13DA, SMSG_MOVE_SET_NORMAL_FALL = 0x0193, - SMSG_MOVE_SET_PITCH_RATE = 0xBADD, + SMSG_MOVE_SET_PITCH_RATE = 0x0BBC, SMSG_MOVE_SET_RUN_BACK_SPEED = 0x09C5, SMSG_MOVE_SET_RUN_SPEED = 0x08F5, - SMSG_MOVE_SET_SWIM_BACK_SPEED = 0xBADD, + SMSG_MOVE_SET_SWIM_BACK_SPEED = 0x09E6, SMSG_MOVE_SET_SWIM_SPEED = 0x061A, - SMSG_MOVE_SET_TURN_RATE = 0xBADD, + SMSG_MOVE_SET_TURN_RATE = 0x0B4A, SMSG_MOVE_SET_VEHICLE_REC_ID = 0x09DD, SMSG_MOVE_SET_WALK_IN_AIR = 0xBADD, SMSG_MOVE_SET_WALK_SPEED = 0x0396, @@ -1421,6 +1467,7 @@ enum OpcodeServer : uint32 SMSG_MOVE_TELEPORT = 0x03A6, SMSG_MOVE_UNROOT = 0x08BD, SMSG_MOVE_UNSET_CAN_FLY = 0x0BAE, + SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x1192, SMSG_MOVE_UNSET_HOVER = 0x01A5, SMSG_MOVE_UNSET_IGNORE_MOVEMENT_FORCES = 0x039E, SMSG_MOVE_UNSET_WALK_IN_AIR = 0xBADD, @@ -1449,13 +1496,14 @@ enum OpcodeServer : uint32 SMSG_NOTIFY_DANCE = 0xBADD, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x01F1, SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x0B84, + SMSG_NOTIFY_MONEY = 0x19AC, SMSG_NOTIFY_RECEIVED_MAIL = 0x1F0D, SMSG_NPC_TEXT_UPDATE = 0x1122, SMSG_NPC_WONT_TALK = 0xBADD, SMSG_OFFER_PETITION_ERROR = 0x0B41, SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x053F, SMSG_ON_MONSTER_MOVE = 0x0994, - SMSG_OPEN_CONTAINER = 0xBADD, + SMSG_OPEN_CONTAINER = 0x05AA, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x0F17, SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x0709, SMSG_OVERRIDE_LIGHT = 0x01EA, @@ -1468,15 +1516,17 @@ enum OpcodeServer : uint32 SMSG_PARTY_MEMBER_STATS = 0x1729, SMSG_PARTY_MEMBER_STATS_FULL = 0xBADD, SMSG_PARTY_UPDATE = 0x15BE, - SMSG_PAUSE_MIRROR_TIMER = 0xBADD, + SMSG_PAUSE_MIRROR_TIMER = 0x073A, + SMSG_PENDING_RAID_LOCK = 0x178A, SMSG_PERIODICAURALOG = 0x0B1B, SMSG_PETGODMODE = 0xBADD, SMSG_PETITION_ALREADY_SIGNED = 0x0D8E, + SMSG_PETITION_DECLINED = 0x1B32, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x1055, SMSG_PETITION_SHOW_LIST = 0x0915, SMSG_PETITION_SHOW_SIGNATURES = 0x0830, SMSG_PETITION_SIGN_RESULTS = 0x11E9, - SMSG_PET_ACTION_FEEDBACK = 0xBADD, + SMSG_PET_ACTION_FEEDBACK = 0x0D9E, SMSG_PET_ACTION_SOUND = 0x0D39, SMSG_PET_ADDED = 0x0327, SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x0982, @@ -1493,15 +1543,16 @@ enum OpcodeServer : uint32 SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x1B83, SMSG_PET_BATTLE_REQUEST_FAILED = 0x1353, SMSG_PET_BATTLE_ROUND_RESULT = 0x0341, - SMSG_PET_BATTLE_SLOT_UPDATE = 0x1D8E, + SMSG_PET_BATTLE_SLOT_UPDATES = 0x1D8F, SMSG_PET_BROKEN = 0xBADD, SMSG_PET_CAST_FAILED = 0x1914, SMSG_PET_CLEAR_SPELLS = 0x1113, SMSG_PET_DISMISS_SOUND = 0x09A3, + SMSG_PET_GOD_MODE = 0x13EC, SMSG_PET_GUIDS = 0x150F, SMSG_PET_LEARNED_SPELL = 0x1822, SMSG_PET_MODE = 0x1D40, - SMSG_PET_NAME_INVALID = 0xBADD, + SMSG_PET_NAME_INVALID = 0x0007, SMSG_PET_NAME_QUERY_RESPONSE = 0x0D0E, SMSG_PET_REMOVED_SPELL = 0x011B, SMSG_PET_RENAMEABLE = 0xBADD, @@ -1510,12 +1561,11 @@ enum OpcodeServer : uint32 SMSG_PET_SPELLS = 0x0174, SMSG_PET_STABLE_LIST = 0x0B1F, SMSG_PET_STABLE_RESULT = 0x1383, - SMSG_PET_TAME_FAILURE = 0xBADD, + SMSG_PET_TAME_FAILURE = 0x0025, SMSG_PET_UPDATE_COMBO_POINTS = 0xBADD, SMSG_PLAYED_TIME = 0x038B, SMSG_PLAYERBINDERROR = 0xBADD, SMSG_PLAYER_BOUND = 0x078E, - SMSG_PLAYER_DIFFICULTY_CHANGE = 0xBADD, SMSG_PLAYER_SKINNED = 0x00D2, SMSG_PLAYER_VEHICLE_DATA = 0xBADD, SMSG_PLAY_DANCE = 0xBADD, @@ -1532,9 +1582,8 @@ enum OpcodeServer : uint32 SMSG_PONG = 0x17CA, SMSG_POWER_UPDATE = 0x0B27, SMSG_PRE_RESSURECT = 0x0D2E, - SMSG_PROCRESIST = 0xBADD, SMSG_PROC_RESIST = 0x1DAD, - SMSG_PROPOSE_LEVEL_GRANT = 0xBADD, + SMSG_PROPOSE_LEVEL_GRANT = 0x1B8C, SMSG_PUREMOUNT_CANCELLED_OBSOLETE = 0xBADD, SMSG_PVP_CREDIT = 0x13A9, SMSG_PVP_LOG_DATA = 0x1ECA, @@ -1566,6 +1615,7 @@ enum OpcodeServer : uint32 SMSG_QUEST_UPDATE_COMPLETE = 0x1787, SMSG_QUEST_UPDATE_FAILED = 0x1542, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x1D01, + SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x1111, SMSG_RAID_GROUP_ONLY = 0x0D9D, SMSG_RAID_INSTANCE_INFO = 0xBADD, SMSG_RAID_INSTANCE_MESSAGE = 0x0494, @@ -1578,23 +1628,25 @@ enum OpcodeServer : uint32 SMSG_READY_CHECK_COMPLETED = 0x0BC3, SMSG_READY_CHECK_RESPONSE = 0x0A10, SMSG_READY_CHECK_STARTED = 0x17A9, - SMSG_READ_ITEM_FAILED = 0xBADD, + SMSG_READ_ITEM_FAILED = 0x0BD4, SMSG_READ_ITEM_RESULT_OK = 0x1BE1, SMSG_REALM_QUERY_RESPONSE = 0x011D, - SMSG_REALM_SPLIT = 0xBADD, + SMSG_REALM_SPLIT = 0x19EC, SMSG_REAL_GROUP_UPDATE = 0xBADD, SMSG_RECEIVED_MAIL = 0xBADD, SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x0B3E, SMSG_REDIRECT_CLIENT = 0x175A, - SMSG_REFER_A_FRIEND_EXPIRED = 0xBADD, - SMSG_REFER_A_FRIEND_FAILURE = 0xBADD, + SMSG_REFER_A_FRIEND_EXPIRED = 0x0318, + SMSG_REFER_A_FRIEND_FAILURE = 0x0931, + SMSG_REFRESH_COMPONENT = 0x01A1, SMSG_REFRESH_SPELL_HISTORY = 0x0A2A, - SMSG_REMOVED_SPELL = 0x0B3B, + SMSG_REMOVE_ITEM_PASSIVE = 0x148A, + SMSG_REMOVE_LOSS_OF_CONTROL = 0x0307, SMSG_REPLACE_TROPHY_RESPONSE = 0x13C2, SMSG_REPORT_PVP_AFK_RESULT = 0x0A0E, SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x059E, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x1DAE, - SMSG_RESEARCH_COMPLETE = 0xBADD, + SMSG_RESEARCH_COMPLETE = 0x0B3A, SMSG_RESEARCH_SETUP_HISTORY = 0x0A25, SMSG_RESET_COMPRESSION_CONTEXT = 0xBADD, SMSG_RESET_FAILED_NOTIFY = 0x1B01, @@ -1614,13 +1666,15 @@ enum OpcodeServer : uint32 SMSG_ROLE_CHOSEN = 0x07D3, SMSG_ROLE_POLL_BEGIN = 0xBADD, SMSG_ROLE_POLL_INFORM = 0x0F89, - SMSG_RWHOIS = 0xBADD, + SMSG_RUNE_REGEN_DEBUG = 0x032E, SMSG_SAVE_GUILD_EMBLEM = 0x1037, SMSG_SCENARIO_BOOT = 0x1BEB, SMSG_SCENARIO_COMPLETED = 0x1BA4, + SMSG_SCENARIO_OUT_OF_BOUNDS = 0x01E4, SMSG_SCENARIO_POIS = 0x0343, SMSG_SCENARIO_PROGRESS_UPDATE = 0x0324, SMSG_SCENARIO_STATE = 0x152D, + SMSG_SCENE_OBJECT_EVENT = 0x0382, SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x092E, SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x1B44, SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x000E, @@ -1630,18 +1684,19 @@ enum OpcodeServer : uint32 SMSG_SCRIPT_CAST = 0x1B1C, SMSG_SELL_ITEM = 0xBADD, SMSG_SELL_RESPONSE = 0x1352, + SMSG_SEND_ITEM_PASSIVES = 0x059F, SMSG_SEND_MAIL_RESULT = 0x0302, SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x000D, SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x0D3E, SMSG_SEND_SPELL_CHARGES = 0x1A82, SMSG_SEND_SPELL_HISTORY = 0x1933, SMSG_SEND_UNLEARN_SPELLS = 0x0BCB, - SMSG_SERVERTIME = 0xBADD, SMSG_SERVER_FIRST_ACHIEVEMENT = 0x1413, SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x0BAC, SMSG_SERVER_INFO_RESPONSE = 0xBADD, SMSG_SERVER_MESSAGE = 0x0683, SMSG_SERVER_PERF = 0xBADD, + SMSG_SERVER_TIME = 0x0339, SMSG_SETUP_CURRENCY = 0x0B06, SMSG_SETUP_TROPHY = 0x0B63, SMSG_SET_AI_ANIM_KIT = 0x0335, @@ -1650,7 +1705,7 @@ enum OpcodeServer : uint32 SMSG_SET_CURRENCY = 0x17BE, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x0F52, SMSG_SET_DUNGEON_DIFFICULTY = 0x0719, - SMSG_SET_FACTION_ATWAR = 0xBADD, + SMSG_SET_FACTION_AT_WAR = 0x079A, SMSG_SET_FACTION_NOT_VISIBLE = 0x1224, SMSG_SET_FACTION_STANDING = 0x1B03, SMSG_SET_FACTION_VISIBLE = 0x138B, @@ -1660,11 +1715,11 @@ enum OpcodeServer : uint32 SMSG_SET_LFG_TIME_WALKER = 0x0731, SMSG_SET_LOOT_METHOD_FAILED = 0x070E, SMSG_SET_MAX_WEEKLY_QUANTITY = 0x1489, - SMSG_SET_MELEE_ANIM_KIT = 0xBADD, + SMSG_SET_MELEE_ANIM_KIT = 0x17AA, SMSG_SET_MOVEMENT_ANIM_KIT = 0xBADD, SMSG_SET_PCT_SPELL_MODIFIER = 0x113C, SMSG_SET_PHASE_SHIFT_CHANGE = 0x00D1, - SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0xBADD, + SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x13E2, SMSG_SET_PLAY_HOVER_ANIM = 0x02D4, SMSG_SET_PROFICIENCY = 0x00D3, SMSG_SET_PROJECTILE_POSITION = 0xBADD, @@ -1676,14 +1731,14 @@ enum OpcodeServer : uint32 SMSG_SET_VEHICLE_REC_ID = 0x1BA1, SMSG_SET_VIGNETTE = 0x09AC, SMSG_SHOW_BANK = 0x1B51, - SMSG_SHOW_MAILBOX = 0xBADD, + SMSG_SHOW_MAILBOX = 0x152F, SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x053D, SMSG_SHOW_RATINGS = 0xBADD, SMSG_SHOW_TAXI_NODES = 0x12A1, SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x15C0, - SMSG_SOCKET_GEMS_RESULT = 0xBADD, + SMSG_SOCKET_GEMS = 0x1302, SMSG_SORT_BAGS_ACK = 0x09E4, - SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0xBADD, + SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x198B, SMSG_SPECIAL_MOUNT_ANIM = 0x159F, SMSG_SPELLBREAKLOG = 0xBADD, SMSG_SPELLSTEALLOG = 0xBADD, @@ -1718,9 +1773,9 @@ enum OpcodeServer : uint32 SMSG_STOP_ELAPSED_TIMER = 0x1D10, SMSG_STOP_MIRROR_TIMER = 0x0D1E, SMSG_STREAMING_MOVIE = 0x158F, - SMSG_SUMMON_CANCEL = 0xBADD, + SMSG_SUMMON_CANCEL = 0x078A, SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x1B24, - SMSG_SUMMON_REQUEST = 0xBADD, + SMSG_SUMMON_REQUEST = 0x0599, SMSG_SUPERCEDED_SPELL = 0x0172, SMSG_SUPPRESS_NPC_GREETINGS = 0x193A, SMSG_SUSPEND_COMMS = 0x076A, @@ -1728,7 +1783,7 @@ enum OpcodeServer : uint32 SMSG_TABARD_VENDOR_ACTIVATE = 0x1389, SMSG_TALENTS_ERROR = 0xBADD, SMSG_TALENTS_INFO = 0x012D, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0xBADD, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x01E3, SMSG_TAXINODE_STATUS = 0x0338, SMSG_TEST_DROP_RATE_RESULT = 0xBADD, SMSG_TEXT_EMOTE = 0x0383, @@ -1761,11 +1816,13 @@ enum OpcodeServer : uint32 SMSG_UNLEARNED_SPELLS = 0x0B3B, SMSG_UPDATE_ACCOUNT_DATA = 0x1520, SMSG_UPDATE_CAPTURE_POINT = 0x1B11, + SMSG_UPDATE_CHARACTER_FLAGS = 0x03D3, SMSG_UPDATE_COMBO_POINTS = 0xBADD, SMSG_UPDATE_CURRENCY_WEEK_LIMIT = 0xBADD, SMSG_UPDATE_DUNGEON_ENCOUNTER_FOR_LOOT = 0x0774, + SMSG_UPDATE_EXPANSION_LEVEL = 0x173E, SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT = 0xBADD, - SMSG_UPDATE_INSTANCE_OWNERSHIP = 0xBADD, + SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x093E, SMSG_UPDATE_LAST_INSTANCE = 0x13A4, SMSG_UPDATE_OBJECT = 0x122C, SMSG_UPDATE_SERVER_PLAYER_POSITION = 0xBADD, @@ -1774,11 +1831,12 @@ enum OpcodeServer : uint32 SMSG_USERLIST_ADD = 0x0441, SMSG_USERLIST_REMOVE = 0x0641, SMSG_USERLIST_UPDATE = 0x04C4, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x0128, SMSG_VOICESESSION_FULL = 0xBADD, - SMSG_VOICE_CHAT_STATUS = 0xBADD, - SMSG_VOICE_PARENTAL_CONTROLS = 0xBADD, + SMSG_VOICE_CHAT_STATUS = 0x06D3, + SMSG_VOICE_PARENTAL_CONTROLS = 0x1414, SMSG_VOICE_SESSION_LEAVE = 0x0403, - SMSG_VOICE_SESSION_ROSTER_UPDATE = 0xBADD, + SMSG_VOICE_SESSION_ROSTER_UPDATE = 0x0443, SMSG_VOICE_SET_TALKER_MUTED = 0xBADD, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x1131, SMSG_VOID_STORAGE_CONTENTS = 0x0108, @@ -1790,8 +1848,9 @@ enum OpcodeServer : uint32 SMSG_WARDEN_DATA = 0x0BEC, SMSG_WARGAME_CHECK_ENTRY = 0xBADD, SMSG_WARGAME_REQUEST_SENT = 0xBADD, + SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x01A2, SMSG_WEATHER = 0x073E, - SMSG_WEEKLY_LAST_RESET = 0xBADD, + SMSG_WEEKLY_LAST_RESET = 0x030D, SMSG_WEEKLY_RESET_CURRENCY = 0xBADD, SMSG_WEEKLY_SPELL_USAGE = 0x13DC, SMSG_WEEKLY_SPELL_USAGE_UPDATE = 0x1829, @@ -1809,8 +1868,8 @@ inline bool IsInstanceOnlyOpcode(uint32 opcode) switch (opcode) { case SMSG_MOUNT_RESULT: // Client - case 0x0111: // Client - case 0x03E4: // Client + case SMSG_DUEL_OUT_OF_BOUNDS: // Client + case SMSG_DUEL_IN_BOUNDS: // Client case 0x0549: // Client case 0x055A: // Client case 0x055C: // Client diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 166a432077c..b61a0237ac2 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1207,7 +1207,7 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co //case CMSG_CORPSE_MAP_POSITION_QUERY: // 0 1 case CMSG_MOVE_TIME_SKIPPED: // 0 1 //case MSG_QUERY_NEXT_MAIL_TIME: // 0 1 - case CMSG_SETSHEATHED: // 0 1 + case CMSG_SET_SHEATHED: // 0 1 //case MSG_RAID_TARGET_UPDATE: // 0 1 case CMSG_LOGOUT_REQUEST: // 0 1 //case CMSG_PET_RENAME: // 0 1 @@ -1293,7 +1293,7 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_QUESTGIVER_ACCEPT_QUEST: // 0 4 //case CMSG_QUESTLOG_REMOVE_QUEST: // 0 4 case CMSG_QUESTGIVER_CHOOSE_REWARD: // 0 4 - //case CMSG_CONTACT_LIST: // 0 5 + //case CMSG_SEND_CONTACT_LIST: // 0 5 case CMSG_AUTOBANK_ITEM: // 0 6 case CMSG_AUTOSTORE_BANK_ITEM: // 0 6 case CMSG_WHO: // 0 7 @@ -1365,10 +1365,10 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_CHAR_CREATE: // 7 5 3 async db queries case CMSG_CHAR_ENUM: // 22 3 2 async db queries - //case CMSG_GMTICKET_CREATE: // 1 25 1 async db query - //case CMSG_GMTICKET_UPDATETEXT: // 0 15 1 async db query - //case CMSG_GMTICKET_DELETETICKET: // 1 25 1 async db query - //case CMSG_GMRESPONSE_RESOLVE: // 1 25 1 async db query + //case CMSG_GM_TICKET_CREATE: // 1 25 1 async db query + //case CMSG_GM_TICKET_UPDATETEXT: // 0 15 1 async db query + //case CMSG_GM_TICKET_DELETETICKET: // 1 25 1 async db query + //case CMSG_GM_TICKET_RESPONSE_RESOLVE: // 1 25 1 async db query //case CMSG_CALENDAR_UPDATE_EVENT: // not profiled //case CMSG_CALENDAR_REMOVE_EVENT: // not profiled //case CMSG_CALENDAR_COPY_EVENT: // not profiled @@ -1413,7 +1413,7 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co break; } - case CMSG_ITEM_REFUND_INFO: // not profiled + case CMSG_GET_ITEM_PURCHASE_DATA: // not profiled { maxPacketCounterAllowed = PLAYER_SLOTS_COUNT; break; diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 291ba0a9f66..e2a9634c228 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -167,13 +167,21 @@ namespace WorldPackets class QueryGuildInfo; } + namespace Inspect + { + class Inspect; + class InspectPVPRequest; + class QueryInspectAchievements; + class RequestHonorStats; + } + namespace Item { class AutoEquipItem; class AutoStoreBagItem; class BuyBackItem; class DestroyItem; - class ItemRefundInfo; + class GetItemPurchaseData; class RepairItem; class SellItem; class SplitItem; @@ -685,11 +693,11 @@ class WorldSession void HandlePortGraveyard(WorldPackets::Misc::PortGraveyard& packet); void HandleRequestCemeteryList(WorldPackets::Misc::RequestCemeteryList& packet); - // new inspect - void HandleInspectOpcode(WorldPacket& recvPacket); - - // new party stats - void HandleInspectHonorStatsOpcode(WorldPacket& recvPacket); + // Inspect + void HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect); + void HandleRequestHonorStatsOpcode(WorldPackets::Inspect::RequestHonorStats& request); + void HandleInspectPVP(WorldPackets::Inspect::InspectPVPRequest& request); + void HandleQueryInspectAchievements(WorldPackets::Inspect::QueryInspectAchievements& inspect); void HandleMoveWaterWalkAck(WorldPacket& recvPacket); void HandleFeatherFallAck(WorldPacket& recvData); @@ -1049,7 +1057,7 @@ class WorldSession void HandleBattlefieldLeaveOpcode(WorldPacket& recvData); void HandleBattlemasterJoinArena(WorldPacket& recvData); void HandleReportPvPAFK(WorldPacket& recvData); - void HandleRequestRatedBgInfo(WorldPacket& recvData); + void HandleRequestRatedBattlefieldInfo(WorldPacket& recvData); void HandleRequestPvpOptions(WorldPacket& recvData); void HandleRequestPvpReward(WorldPacket& recvData); void HandleRequestRatedBgStats(WorldPacket& recvData); @@ -1133,7 +1141,7 @@ class WorldSession void HandleCancelTempEnchantmentOpcode(WorldPacket& recvData); - void HandleItemRefundInfoRequest(WorldPackets::Item::ItemRefundInfo& packet); + void HandleGetItemPurchaseData(WorldPackets::Item::GetItemPurchaseData& packet); void HandleItemRefund(WorldPacket& recvData); void HandleSetTaxiBenchmarkOpcode(WorldPacket& recvData); @@ -1194,7 +1202,6 @@ class WorldSession void HandleSpellClick(WorldPacket& recvData); void HandleMirrorImageDataRequest(WorldPacket& recvData); void HandleRemoveGlyph(WorldPacket& recvData); - void HandleQueryInspectAchievements(WorldPacket& recvData); void HandleGuildSetFocusedAchievement(WorldPackets::Achievement::GuildSetFocusedAchievement& setFocusedAchievement); void HandleEquipmentSetSave(WorldPackets::EquipmentSet::SaveEquipmentSet& packet); void HandleEquipmentSetDelete(WorldPacket& recvData); |