aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Item/Item.cpp2
-rw-r--r--src/server/game/Entities/Object/Object.cpp9
-rw-r--r--src/server/game/Entities/Object/Object.h3
-rw-r--r--src/server/game/Entities/Player/Player.cpp104
-rw-r--r--src/server/game/Entities/Player/Player.h21
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Handlers/BattleGroundHandler.cpp6
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp2
-rw-r--r--src/server/game/Handlers/InspectHandler.cpp153
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp8
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp136
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp3
-rw-r--r--src/server/game/Handlers/TicketHandler.cpp2
-rw-r--r--src/server/game/Loot/LootMgr.cpp25
-rw-r--r--src/server/game/Loot/LootMgr.h2
-rw-r--r--src/server/game/Movement/Spline/MoveSpline.h4
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp5
-rw-r--r--src/server/game/Server/Packets/InspectPackets.cpp156
-rw-r--r--src/server/game/Server/Packets/InspectPackets.h153
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp50
-rw-r--r--src/server/game/Server/Packets/ItemPackets.h12
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h2
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp29
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h13
-rw-r--r--src/server/game/Server/Packets/PacketUtilities.h76
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h6
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp199
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h325
-rw-r--r--src/server/game/Server/WorldSession.cpp14
-rw-r--r--src/server/game/Server/WorldSession.h25
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);