aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/database/Database/Implementation/WorldDatabase.cpp2
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp51
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp4
-rw-r--r--src/server/game/Chat/Channels/Channel.cpp2
-rw-r--r--src/server/game/Chat/Channels/Channel.h2
-rw-r--r--src/server/game/Chat/Channels/ChannelMgr.cpp9
-rw-r--r--src/server/game/Chat/Channels/ChannelMgr.h1
-rw-r--r--src/server/game/Chat/ChatLink.cpp26
-rw-r--r--src/server/game/Chat/ChatLink.h1
-rw-r--r--src/server/game/DataStores/DBCEnums.h5
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp12
-rw-r--r--src/server/game/Entities/Creature/CreatureData.h3
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp2
-rw-r--r--src/server/game/Entities/Object/MovementInfo.h1
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp236
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h114
-rw-r--r--src/server/game/Entities/Player/EquipmentSet.h6
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp74
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp4
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp18
-rw-r--r--src/server/game/Quests/QuestDef.cpp56
-rw-r--r--src/server/game/Quests/QuestDef.h2
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp4
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h1
-rw-r--r--src/server/game/Server/Packets/BattlePetPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/BattlePetPackets.h1
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h1
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h11
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.cpp13
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.h4
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.h7
-rw-r--r--src/server/game/Server/Packets/GuildPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/GuildPackets.h3
-rw-r--r--src/server/game/Server/Packets/InspectPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/InspectPackets.h1
-rw-r--r--src/server/game/Server/Packets/MailPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/MailPackets.h1
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp124
-rw-r--r--src/server/game/Server/Packets/MythicPlusPacketsCommon.h106
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h2
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/PartyPackets.h5
-rw-r--r--src/server/game/Server/Packets/PetitionPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/PetitionPackets.h1
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h1
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp5
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h5
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h1
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h14
-rw-r--r--src/server/game/Server/Packets/TicketPackets.cpp15
-rw-r--r--src/server/game/Server/Packets/TicketPackets.h17
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp18
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2072
-rw-r--r--src/server/game/Server/WorldSession.h4
63 files changed, 1808 insertions, 1327 deletions
diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp
index a5ff404397f..42795730899 100644
--- a/src/server/database/Database/Implementation/WorldDatabase.cpp
+++ b/src/server/database/Database/Implementation/WorldDatabase.cpp
@@ -78,7 +78,7 @@ void WorldDatabaseConnection::DoPrepareStatements()
PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID, "SELECT id FROM waypoint_scripts WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_DEL_CREATURE, "DELETE FROM creature WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, permission, help FROM command", CONNECTION_SYNCH);
- PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ? OR 1 = ?", CONNECTION_SYNCH);
+ PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, CreatureDifficultyID, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ? OR 1 = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_GAMEOBJECT_NEAREST, "SELECT guid, id, position_x, position_y, position_z, map, (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) AS order_ FROM gameobject WHERE map = ? AND (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) <= ? ORDER BY order_", CONNECTION_SYNCH);
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index 641c515ee98..24e5134d845 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -3673,6 +3673,57 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
case ModifierTreeType::PlayerMythicPlusRatingEqualOrGreaterThan: // 321 NYI
case ModifierTreeType::PlayerMythicPlusRunCountInCurrentExpansionEqualOrGreaterThan: // 322 NYI
return false;
+ case ModifierTreeType::PlayerHasCustomizationChoice: // 323
+ {
+ int32 customizationChoiceIndex = referencePlayer->m_playerData->Customizations.FindIndexIf([reqValue](UF::ChrCustomizationChoice const& choice)
+ {
+ return choice.ChrCustomizationChoiceID == reqValue;
+ });
+ if (customizationChoiceIndex < 0)
+ return false;
+ break;
+ }
+ case ModifierTreeType::PlayerBestWeeklyWinPvpTier: // 324
+ {
+ PvpTierEntry const* pvpTier = sPvpTierStore.LookupEntry(reqValue);
+ if (!pvpTier)
+ return false;
+ if (std::size_t(pvpTier->BracketID) >= referencePlayer->m_activePlayerData->PvpInfo.size())
+ return false;
+ UF::PVPInfo const& pvpInfo = referencePlayer->m_activePlayerData->PvpInfo[pvpTier->BracketID];
+ if (pvpTier->ID != pvpInfo.WeeklyBestWinPvpTierID || *pvpInfo.Disqualified)
+ return false;
+ break;
+ }
+ case ModifierTreeType::PlayerBestWeeklyWinPvpTierInBracketEqualOrGreaterThan: // 325
+ {
+ if (secondaryAsset >= referencePlayer->m_activePlayerData->PvpInfo.size())
+ return false;
+ UF::PVPInfo const& pvpInfo = referencePlayer->m_activePlayerData->PvpInfo[secondaryAsset];
+ PvpTierEntry const* pvpTier = sPvpTierStore.LookupEntry(pvpInfo.WeeklyBestWinPvpTierID);
+ if (!pvpTier)
+ return false;
+ if (pvpTier->Rank < int32(reqValue))
+ return false;
+ break;
+ }
+ case ModifierTreeType::PlayerHasVanillaCollectorsEdition: // 326
+ return false;
+ case ModifierTreeType::PlayerHasItemWithKeystoneLevelModifierEqualOrGreaterThan: // 327
+ {
+ bool bagScanReachedEnd = referencePlayer->ForEachItem(ItemSearchLocation::Inventory, [reqValue, secondaryAsset](Item const* item)
+ {
+ if (item->GetEntry() != reqValue)
+ return ItemSearchCallbackResult::Continue;
+
+ if (item->GetModifier(ITEM_MODIFIER_CHALLENGE_KEYSTONE_LEVEL) < secondaryAsset)
+ return ItemSearchCallbackResult::Continue;
+
+ return ItemSearchCallbackResult::Stop;
+ });
+ if (bagScanReachedEnd)
+ return false;
+ }
default:
return false;
}
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index 12df2c1193a..7c9fc644d13 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -244,6 +244,10 @@ void AuctionPosting::BuildAuctionItem(WorldPackets::AuctionHouse::AuctionItem* a
// SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT, SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT, SMSG_AUCTION_REPLICATE_RESPONSE (if commodity)
if (sendKey)
auctionItem->AuctionBucketKey.emplace(AuctionsBucketKey::ForItem(Items[0]));
+
+ // all
+ if (!Items[0]->m_itemData->Creator->IsEmpty())
+ auctionItem->Creator = *Items[0]->m_itemData->Creator;
}
uint64 AuctionPosting::CalculateMinIncrement(uint64 bidAmount)
diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp
index 0c2494305c4..f91b2aeca59 100644
--- a/src/server/game/Chat/Channels/Channel.cpp
+++ b/src/server/game/Chat/Channels/Channel.cpp
@@ -739,6 +739,7 @@ void Channel::Say(ObjectGuid const& guid, std::string const& what, uint32 lang)
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
Trinity::PacketSenderOwning<WorldPackets::Chat::Chat>* packet = new Trinity::PacketSenderOwning<WorldPackets::Chat::Chat>();
+ packet->Data.ChannelGUID = _channelGuid;
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
packet->Data.Initialize(CHAT_MSG_CHANNEL, Language(lang), player, player, what, 0, GetName(localeIdx));
else
@@ -783,6 +784,7 @@ void Channel::AddonSay(ObjectGuid const& guid, std::string const& prefix, std::s
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
Trinity::PacketSenderOwning<WorldPackets::Chat::Chat>* packet = new Trinity::PacketSenderOwning<WorldPackets::Chat::Chat>();
+ packet->Data.ChannelGUID = _channelGuid;
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
packet->Data.Initialize(CHAT_MSG_CHANNEL, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, player, player, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
else
diff --git a/src/server/game/Chat/Channels/Channel.h b/src/server/game/Chat/Channels/Channel.h
index dbeaf49c757..9d6eb906a50 100644
--- a/src/server/game/Chat/Channels/Channel.h
+++ b/src/server/game/Chat/Channels/Channel.h
@@ -180,6 +180,8 @@ class TC_GAME_API Channel
uint32 GetChannelId() const { return _channelId; }
bool IsConstant() const { return _channelId != 0; }
+ ObjectGuid GetGUID() const { return _channelGuid; }
+
bool IsLFG() const { return (GetFlags() & CHANNEL_FLAG_LFG) != 0; }
bool IsAnnounce() const { return _announceEnabled; }
diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp
index 9fb4bb0c210..c572ee48704 100644
--- a/src/server/game/Chat/Channels/ChannelMgr.cpp
+++ b/src/server/game/Chat/Channels/ChannelMgr.cpp
@@ -73,6 +73,15 @@ Channel* ChannelMgr::GetChannelForPlayerByNamePart(std::string const& namePart,
return nullptr;
}
+Channel* ChannelMgr::GetChannelForPlayerByGuid(ObjectGuid channelGuid, Player* playerSearcher)
+{
+ for (Channel* channel : playerSearcher->GetJoinedChannels())
+ if (channel->GetGUID() == channelGuid)
+ return channel;
+
+ return nullptr;
+}
+
Channel* ChannelMgr::GetJoinChannel(uint32 channelId, std::string const& name, AreaTableEntry const* zoneEntry /*= nullptr*/)
{
if (channelId) // builtin
diff --git a/src/server/game/Chat/Channels/ChannelMgr.h b/src/server/game/Chat/Channels/ChannelMgr.h
index 23d268dc74c..796a1bd0d6e 100644
--- a/src/server/game/Chat/Channels/ChannelMgr.h
+++ b/src/server/game/Chat/Channels/ChannelMgr.h
@@ -38,6 +38,7 @@ class TC_GAME_API ChannelMgr
public:
static ChannelMgr* ForTeam(uint32 team);
static Channel* GetChannelForPlayerByNamePart(std::string const& namePart, Player* playerSearcher);
+ static Channel* GetChannelForPlayerByGuid(ObjectGuid channelGuid, Player* playerSearcher);
Channel* GetJoinChannel(uint32 channelId, std::string const& name, AreaTableEntry const* zoneEntry = nullptr);
Channel* GetChannel(uint32 channelId, std::string const& name, Player* player, bool notify = true, AreaTableEntry const* zoneEntry = nullptr) const;
diff --git a/src/server/game/Chat/ChatLink.cpp b/src/server/game/Chat/ChatLink.cpp
index d1cf52203a4..1641e216a95 100644
--- a/src/server/game/Chat/ChatLink.cpp
+++ b/src/server/game/Chat/ChatLink.cpp
@@ -106,7 +106,7 @@ bool ChatLink::ValidateName(char* buffer, char const* /*context*/)
return true;
}
-// |color|Hitem:item_id:perm_ench_id:gem1:gem2:gem3:0:random_property:property_seed:reporter_level:reporter_spec:modifiers_mask:context:numBonusListIDs:bonusListIDs(%d):numModifiers:(modifierType(%d):modifierValue(%d)):gem1numBonusListIDs:gem1bonusListIDs(%d):gem2numBonusListIDs:gem2bonusListIDs(%d):gem3numBonusListIDs:gem3bonusListIDs(%d)|h[name]|h|r
+// |color|Hitem:item_id:perm_ench_id:gem1:gem2:gem3:0:random_property:property_seed:reporter_level:reporter_spec:modifiers_mask:context:numBonusListIDs:bonusListIDs(%d):numModifiers:(modifierType(%d):modifierValue(%d)):gem1numBonusListIDs:gem1bonusListIDs(%d):gem2numBonusListIDs:gem2bonusListIDs(%d):gem3numBonusListIDs:gem3bonusListIDs(%d):creator:use_enchant_id|h[name]|h|r
// |cffa335ee|Hitem:124382:0:0:0:0:0:0:0:0:0:0:0:4:42:562:565:567|h[Edict of Argus]|h|r");
bool ItemChatLink::Initialize(std::istringstream& iss)
{
@@ -365,6 +365,30 @@ bool ItemChatLink::Initialize(std::istringstream& iss)
}
}
+ if (!CheckDelimiter(iss, DELIMITER, "item"))
+ return false;
+
+ // guid as string
+ if (HasValue(iss))
+ {
+ std::array<char, 128> guidBuffer = { };
+ if (!iss.getline(guidBuffer.data(), 128, DELIMITER))
+ {
+ TC_LOG_TRACE("chat.system", "ChatHandler::isValidChatMessage('%s'): sequence finished unexpectedly while reading creator guid string", iss.str().c_str());
+ return false;
+ }
+ iss.unget(); // put next : back into stream
+ }
+
+ if (!CheckDelimiter(iss, DELIMITER, "item"))
+ return false;
+
+ if (HasValue(iss) && !ReadInt32(iss, _useEnchantId))
+ {
+ TC_LOG_TRACE("chat.system", "ChatHandler::isValidChatMessage('%s'): sequence finished unexpectedly while reading on use enchatment id", iss.str().c_str());
+ return false;
+ }
+
return true;
}
diff --git a/src/server/game/Chat/ChatLink.h b/src/server/game/Chat/ChatLink.h
index 69d82678ddb..60be2a61f21 100644
--- a/src/server/game/Chat/ChatLink.h
+++ b/src/server/game/Chat/ChatLink.h
@@ -76,6 +76,7 @@ protected:
int32 _reporterLevel;
int32 _reporterSpec;
int32 _context;
+ int32 _useEnchantId;
std::vector<int32> _bonusListIDs;
std::vector<std::pair<uint32, int32>> _modifiers;
std::vector<int32> _gemBonusListIDs[3];
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 58ed8877447..a8852784022 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -1299,6 +1299,11 @@ enum class ModifierTreeType : int32
RapidRenownCatchupActive = 320, /*NYI*/ // Rapid Renown Catchup Active
PlayerMythicPlusRatingEqualOrGreaterThan = 321, /*NYI*/ // Player has Mythic+ Rating of at least "{#DungeonScore}"
PlayerMythicPlusRunCountInCurrentExpansionEqualOrGreaterThan = 322, /*NYI*/ // Player has completed at least "{#MythicKeystoneRuns}" Mythic+ runs in current expansion
+ PlayerHasCustomizationChoice = 323, // (Mainline) Player has Customization Choice "{ChrCustomizationChoice}"
+ PlayerBestWeeklyWinPvpTier = 324, // (Mainline) Player has best weekly win in PVP tier {PvpTier}
+ PlayerBestWeeklyWinPvpTierInBracketEqualOrGreaterThan = 325, // (Mainline) Player has best weekly win at or above "{@PVP_TIER_ENUM}" for "{@PVP_BRACKET}"
+ PlayerHasVanillaCollectorsEdition = 326, // Player has Vanilla Collector's Edition
+ PlayerHasItemWithKeystoneLevelModifierEqualOrGreaterThan = 327,
};
enum class ModifierTreeOperator : int8
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 3467bb93098..6f1e78e86d5 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -211,6 +211,7 @@ WorldPacket CreatureTemplate::BuildQueryData(LocaleConstant loc) const
stats.HealthScalingExpansion = HealthScalingExpansion;
stats.VignetteID = VignetteID;
stats.Class = unit_class;
+ stats.CreatureDifficultyID = CreatureDifficultyID;
stats.WidgetSetID = WidgetSetID;
stats.WidgetSetUnitConditionID = WidgetSetUnitConditionID;
@@ -243,8 +244,6 @@ CreatureLevelScaling const* CreatureTemplate::GetLevelScaling(Difficulty difficu
{
DefaultCreatureLevelScaling()
{
- MinLevel = 0;
- MaxLevel = 0;
DeltaLevelMin = 0;
DeltaLevelMax = 0;
ContentTuningID = 0;
@@ -1535,8 +1534,11 @@ void Creature::SelectLevel()
CreatureLevelScaling const* scaling = cInfo->GetLevelScaling(GetMap()->GetDifficultyID());
- SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ScalingLevelMin), scaling->MinLevel);
- SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ScalingLevelMax), scaling->MaxLevel);
+ if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(scaling->ContentTuningID, 0))
+ {
+ SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ScalingLevelMin), levels->MinLevel);
+ SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ScalingLevelMax), levels->MaxLevel);
+ }
int32 mindelta = std::min(scaling->DeltaLevelMax, scaling->DeltaLevelMin);
int32 maxdelta = std::max(scaling->DeltaLevelMax, scaling->DeltaLevelMin);
@@ -2798,7 +2800,7 @@ bool Creature::HasScalableLevels() const
CreatureTemplate const* cinfo = GetCreatureTemplate();
CreatureLevelScaling const* scaling = cinfo->GetLevelScaling(GetMap()->GetDifficultyID());
- return (scaling->MinLevel != 0 && scaling->MaxLevel != 0);
+ return scaling->ContentTuningID != 0;
}
uint64 Creature::GetMaxHealthByLevel(uint8 level) const
diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h
index 7a311bcbb31..4ce0e66670b 100644
--- a/src/server/game/Entities/Creature/CreatureData.h
+++ b/src/server/game/Entities/Creature/CreatureData.h
@@ -327,8 +327,6 @@ struct CreatureModel
struct CreatureLevelScaling
{
- uint16 MinLevel;
- uint16 MaxLevel;
int16 DeltaLevelMin;
int16 DeltaLevelMax;
int32 ContentTuningID;
@@ -395,6 +393,7 @@ struct TC_GAME_API CreatureTemplate
float ModExperience;
bool RacialLeader;
uint32 movementId;
+ int32 CreatureDifficultyID;
int32 WidgetSetID;
int32 WidgetSetUnitConditionID;
bool RegenHealth;
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index 304fb9e273f..9df67435686 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -431,6 +431,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU
packet.QuestID = quest->GetQuestId();
packet.PortraitGiver = quest->GetQuestGiverPortrait();
packet.PortraitGiverMount = quest->GetQuestGiverPortraitMount();
+ packet.PortraitGiverModelSceneID = quest->GetQuestGiverPortraitModelSceneId();
packet.PortraitTurnIn = quest->GetQuestTurnInPortrait();
packet.QuestSessionBonus = 0; //quest->GetQuestSessionBonus(); // this is only sent while quest session is active
packet.AutoLaunched = autoLaunched;
@@ -531,6 +532,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI
packet.PortraitTurnIn = quest->GetQuestTurnInPortrait();
packet.PortraitGiver = quest->GetQuestGiverPortrait();
packet.PortraitGiverMount = quest->GetQuestGiverPortraitMount();
+ packet.PortraitGiverModelSceneID = quest->GetQuestGiverPortraitModelSceneId();
packet.QuestPackageID = quest->GetQuestPackageID();
_session->SendPacket(packet.Write());
diff --git a/src/server/game/Entities/Object/MovementInfo.h b/src/server/game/Entities/Object/MovementInfo.h
index 63efcd18698..7dcc695721e 100644
--- a/src/server/game/Entities/Object/MovementInfo.h
+++ b/src/server/game/Entities/Object/MovementInfo.h
@@ -118,6 +118,7 @@ struct MovementForce
uint32 TransportID = 0;
float Magnitude = 0.0f;
uint8 Type = 0;
+ int32 Unused910 = 0;
};
class MovementForces
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 316927af52a..55ae7da41aa 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -1115,6 +1115,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << uint32(ChannelObjects.size());
data << SkinningOwnerGUID;
data << uint32(SilencedSchoolMask);
+ data << NameplateAttachToGUID;
for (std::size_t i = 0; i < PassiveSpells.size(); ++i)
{
PassiveSpells[i].WriteCreate(data, owner, receiver);
@@ -1131,7 +1132,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x03F8007Fu, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x07F000FFu, 0x00000000u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -1139,16 +1140,16 @@ void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- allowedMaskForTarget |= { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0400007Eu, 0xFC07FF80u, 0x1FFFFFFFu };
+ allowedMaskForTarget |= { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0800007Eu, 0xF80FFF00u, 0x3FFFFFFFu };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll))
- allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x04000000u, 0x0007FF80u, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x08000000u, 0x000FFF00u, 0x00000000u };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath))
- allowedMaskForTarget |= { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00007F80u };
+ allowedMaskForTarget |= { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0000FF00u };
}
void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
{
- Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x03F8007Fu, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x07F000FFu, 0x00000000u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
@@ -1682,90 +1683,94 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
{
data << uint32(SilencedSchoolMask);
}
+ if (changesMask[119])
+ {
+ data << NameplateAttachToGUID;
+ }
}
- if (changesMask[119])
+ if (changesMask[120])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[120 + i])
+ if (changesMask[121 + i])
{
data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(NpcFlags[i], i, owner, receiver));
}
}
}
- if (changesMask[122])
+ if (changesMask[123])
{
for (std::size_t i = 0; i < 6; ++i)
{
- if (changesMask[123 + i])
+ if (changesMask[124 + i])
{
data << int32(Power[i]);
}
- if (changesMask[129 + i])
+ if (changesMask[130 + i])
{
data << int32(MaxPower[i]);
}
- if (changesMask[135 + i])
+ if (changesMask[136 + i])
{
data << float(PowerRegenFlatModifier[i]);
}
- if (changesMask[141 + i])
+ if (changesMask[142 + i])
{
data << float(PowerRegenInterruptedFlatModifier[i]);
}
}
}
- if (changesMask[147])
+ if (changesMask[148])
{
for (std::size_t i = 0; i < 3; ++i)
{
- if (changesMask[148 + i])
+ if (changesMask[149 + i])
{
VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[151])
+ if (changesMask[152])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[152 + i])
+ if (changesMask[153 + i])
{
data << uint32(AttackRoundBaseTime[i]);
}
}
}
- if (changesMask[154])
+ if (changesMask[155])
{
for (std::size_t i = 0; i < 4; ++i)
{
- if (changesMask[155 + i])
+ if (changesMask[156 + i])
{
data << int32(Stats[i]);
}
- if (changesMask[159 + i])
+ if (changesMask[160 + i])
{
data << int32(StatPosBuff[i]);
}
- if (changesMask[163 + i])
+ if (changesMask[164 + i])
{
data << int32(StatNegBuff[i]);
}
}
}
- if (changesMask[167])
+ if (changesMask[168])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[168 + i])
+ if (changesMask[169 + i])
{
data << int32(Resistances[i]);
}
- if (changesMask[175 + i])
+ if (changesMask[176 + i])
{
data << int32(BonusResistanceMods[i]);
}
- if (changesMask[182 + i])
+ if (changesMask[183 + i])
{
data << int32(ManaCostModifier[i]);
}
@@ -1890,6 +1895,7 @@ void UnitData::ClearChangesMask()
Base::ClearChangesMask(GuildGUID);
Base::ClearChangesMask(SkinningOwnerGUID);
Base::ClearChangesMask(SilencedSchoolMask);
+ Base::ClearChangesMask(NameplateAttachToGUID);
Base::ClearChangesMask(NpcFlags);
Base::ClearChangesMask(Power);
Base::ClearChangesMask(MaxPower);
@@ -2115,7 +2121,7 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data << uint32(VirtualPlayerRealm);
data << uint32(CurrentSpecID);
data << int32(TaxiMountAnimKitID);
- for (std::size_t i = 0; i < 4; ++i)
+ for (std::size_t i = 0; i < 6; ++i)
{
data << float(AvgItemLevel[i]);
}
@@ -2147,12 +2153,13 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data.WriteBit(HasQuestSession);
}
data.WriteBit(HasLevelLink);
+ data << DungeonScore;
data.FlushBits();
}
void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0x01FFFFFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x00000007u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0FFFFFFEu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -2160,12 +2167,12 @@ void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
- allowedMaskForTarget |= { 0x00000012u, 0xFFFFFFFCu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000012u, 0xFFFFFFF8u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000001u };
}
void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
{
- Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0x01FFFFFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x00000007u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0FFFFFFEu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
@@ -2357,12 +2364,16 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
data << int32(SoulbindID);
}
+ if (changesMask[34])
+ {
+ data << DungeonScore;
+ }
}
- if (changesMask[34])
+ if (changesMask[35])
{
for (std::size_t i = 0; i < 125; ++i)
{
- if (changesMask[35 + i])
+ if (changesMask[36 + i])
{
if (noQuestLogChangesMask)
QuestLog[i].WriteCreate(data, owner, receiver);
@@ -2371,21 +2382,21 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[160])
+ if (changesMask[161])
{
for (std::size_t i = 0; i < 19; ++i)
{
- if (changesMask[161 + i])
+ if (changesMask[162 + i])
{
VisibleItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[180])
+ if (changesMask[181])
{
- for (std::size_t i = 0; i < 4; ++i)
+ for (std::size_t i = 0; i < 6; ++i)
{
- if (changesMask[181 + i])
+ if (changesMask[182 + i])
{
data << float(AvgItemLevel[i]);
}
@@ -2428,6 +2439,7 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(CtrOptions);
Base::ClearChangesMask(CovenantID);
Base::ClearChangesMask(SoulbindID);
+ Base::ClearChangesMask(DungeonScore);
Base::ClearChangesMask(QuestLog);
Base::ClearChangesMask(VisibleItems);
Base::ClearChangesMask(AvgItemLevel);
@@ -2555,6 +2567,7 @@ void PVPInfo::WriteCreate(ByteBuffer& data, Player const* owner, Player const* r
data << uint32(WeeklyBestRating);
data << uint32(SeasonBestRating);
data << uint32(PvpTierID);
+ data << uint32(WeeklyBestWinPvpTierID);
data.WriteBit(Disqualified);
data.FlushBits();
}
@@ -2565,7 +2578,7 @@ void PVPInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const
if (ignoreChangesMask)
changesMask.SetAll();
- data.WriteBits(changesMask.GetBlock(0), 10);
+ data.WriteBits(changesMask.GetBlock(0), 11);
if (changesMask[0])
{
@@ -2609,6 +2622,10 @@ void PVPInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const
{
data << uint32(PvpTierID);
}
+ if (changesMask[10])
+ {
+ data << uint32(WeeklyBestWinPvpTierID);
+ }
}
data.FlushBits();
}
@@ -2624,6 +2641,7 @@ void PVPInfo::ClearChangesMask()
Base::ClearChangesMask(WeeklyBestRating);
Base::ClearChangesMask(SeasonBestRating);
Base::ClearChangesMask(PvpTierID);
+ Base::ClearChangesMask(WeeklyBestWinPvpTierID);
_changesMask.ResetAll();
}
@@ -2906,7 +2924,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
Skill->WriteCreate(data, owner, receiver);
data << int32(CharacterPoints);
data << int32(MaxTalentTiers);
- data << int32(TrackCreatureMask);
+ data << uint32(TrackCreatureMask);
for (std::size_t i = 0; i < 2; ++i)
{
data << uint32(TrackResourceMask[i]);
@@ -2934,7 +2952,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << float(VersatilityBonus);
data << float(PvpPowerDamage);
data << float(PvpPowerHealing);
- for (std::size_t i = 0; i < 192; ++i)
+ for (std::size_t i = 0; i < 240; ++i)
{
data << uint64(ExploredZones[i]);
}
@@ -3022,11 +3040,6 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
}
data << int32(Honor);
data << int32(HonorNextLevel);
- data << int64(PvpRewardAchieved);
- data << int32(PvpTierMaxFromWins);
- data << int64(PvpLastWeeksRewardAchieved);
- data << int32(PvpLastWeeksTierMaxFromWins);
- data << int64(PvpLastWeeksRewardClaimed);
data << uint8(NumBankSlots);
data << uint32(ResearchSites.size());
data << uint32(ResearchSiteProgress.size());
@@ -3060,6 +3073,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << int32(UiChromieTimeExpansionID);
data << int32(TransportServerTime);
data << uint32(WeeklyRewardsPeriodSinceOrigin);
+ data << int16(DEBUGSoulbindConduitRank);
for (std::size_t i = 0; i < KnownTitles.size(); ++i)
{
data << uint64(KnownTitles[i]);
@@ -3159,6 +3173,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
QuestSession->WriteCreate(data, owner, receiver);
}
+ data << DungeonScore;
for (std::size_t i = 0; i < CharacterRestrictions.size(); ++i)
{
CharacterRestrictions[i].WriteCreate(data, owner, receiver);
@@ -3175,8 +3190,8 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
{
for (std::size_t i = 0; i < 1; ++i)
data << uint32(changesMask.GetBlocksMask(i));
- data.WriteBits(changesMask.GetBlocksMask(1), 16);
- for (std::size_t i = 0; i < 48; ++i)
+ data.WriteBits(changesMask.GetBlocksMask(1), 17);
+ for (std::size_t i = 0; i < 49; ++i)
if (changesMask.GetBlock(i))
data.WriteBits(changesMask.GetBlock(i), 32);
@@ -3641,7 +3656,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[39])
{
- data << int32(TrackCreatureMask);
+ data << uint32(TrackCreatureMask);
}
if (changesMask[40])
{
@@ -3899,211 +3914,199 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
if (changesMask[104])
{
- data << int64(PvpRewardAchieved);
- }
- if (changesMask[105])
- {
- data << int32(PvpTierMaxFromWins);
- }
- if (changesMask[106])
- {
- data << int64(PvpLastWeeksRewardAchieved);
+ data << uint8(NumBankSlots);
}
if (changesMask[107])
{
- data << int32(PvpLastWeeksTierMaxFromWins);
+ data << int32(UiChromieTimeExpansionID);
}
if (changesMask[108])
{
- data << int64(PvpLastWeeksRewardClaimed);
+ data << int32(TransportServerTime);
}
if (changesMask[109])
{
- data << uint8(NumBankSlots);
- }
- if (changesMask[112])
- {
- data << int32(UiChromieTimeExpansionID);
- }
- if (changesMask[113])
- {
- data << int32(TransportServerTime);
+ data << uint32(WeeklyRewardsPeriodSinceOrigin);
}
- if (changesMask[114])
+ if (changesMask[110])
{
- data << uint32(WeeklyRewardsPeriodSinceOrigin);
+ data << int16(DEBUGSoulbindConduitRank);
}
}
if (changesMask[98])
{
data.WriteBits(QuestSession.is_initialized(), 1);
- if (changesMask[111])
+ if (changesMask[106])
{
Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[110])
+ if (changesMask[105])
{
if (QuestSession.is_initialized())
{
QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
+ if (changesMask[111])
+ {
+ data << DungeonScore;
+ }
}
- if (changesMask[115])
+ if (changesMask[112])
{
for (std::size_t i = 0; i < 199; ++i)
{
- if (changesMask[116 + i])
+ if (changesMask[113 + i])
{
data << InvSlots[i];
}
}
}
- if (changesMask[315])
+ if (changesMask[312])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[316 + i])
+ if (changesMask[313 + i])
{
data << uint32(TrackResourceMask[i]);
}
}
}
- if (changesMask[318])
+ if (changesMask[315])
{
- for (std::size_t i = 0; i < 192; ++i)
+ for (std::size_t i = 0; i < 240; ++i)
{
- if (changesMask[319 + i])
+ if (changesMask[316 + i])
{
data << uint64(ExploredZones[i]);
}
}
}
- if (changesMask[511])
+ if (changesMask[556])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[512 + i])
+ if (changesMask[557 + i])
{
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[514])
+ if (changesMask[559])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[515 + i])
+ if (changesMask[560 + i])
{
data << int32(ModDamageDonePos[i]);
}
- if (changesMask[522 + i])
+ if (changesMask[567 + i])
{
data << int32(ModDamageDoneNeg[i]);
}
- if (changesMask[529 + i])
+ if (changesMask[574 + i])
{
data << float(ModDamageDonePercent[i]);
}
- if (changesMask[536 + i])
+ if (changesMask[581 + i])
{
data << float(ModHealingDonePercent[i]);
}
}
}
- if (changesMask[543])
+ if (changesMask[588])
{
for (std::size_t i = 0; i < 3; ++i)
{
- if (changesMask[544 + i])
+ if (changesMask[589 + i])
{
data << float(WeaponDmgMultipliers[i]);
}
- if (changesMask[547 + i])
+ if (changesMask[592 + i])
{
data << float(WeaponAtkSpeedMultipliers[i]);
}
}
}
- if (changesMask[550])
+ if (changesMask[595])
{
for (std::size_t i = 0; i < 12; ++i)
{
- if (changesMask[551 + i])
+ if (changesMask[596 + i])
{
data << uint32(BuybackPrice[i]);
}
- if (changesMask[563 + i])
+ if (changesMask[608 + i])
{
data << uint32(BuybackTimestamp[i]);
}
}
}
- if (changesMask[575])
+ if (changesMask[620])
{
for (std::size_t i = 0; i < 32; ++i)
{
- if (changesMask[576 + i])
+ if (changesMask[621 + i])
{
data << int32(CombatRatings[i]);
}
}
}
- if (changesMask[615])
+ if (changesMask[660])
{
for (std::size_t i = 0; i < 4; ++i)
{
- if (changesMask[616 + i])
+ if (changesMask[661 + i])
{
data << uint32(NoReagentCostMask[i]);
}
}
}
- if (changesMask[620])
+ if (changesMask[665])
{
for (std::size_t i = 0; i < 2; ++i)
{
- if (changesMask[621 + i])
+ if (changesMask[666 + i])
{
data << int32(ProfessionSkillLine[i]);
}
}
}
- if (changesMask[623])
+ if (changesMask[668])
{
for (std::size_t i = 0; i < 4; ++i)
{
- if (changesMask[624 + i])
+ if (changesMask[669 + i])
{
data << uint32(BagSlotFlags[i]);
}
}
}
- if (changesMask[628])
+ if (changesMask[673])
{
for (std::size_t i = 0; i < 7; ++i)
{
- if (changesMask[629 + i])
+ if (changesMask[674 + i])
{
data << uint32(BankBagSlotFlags[i]);
}
}
}
- if (changesMask[636])
+ if (changesMask[681])
{
for (std::size_t i = 0; i < 875; ++i)
{
- if (changesMask[637 + i])
+ if (changesMask[682 + i])
{
data << uint64(QuestCompleted[i]);
}
}
}
- if (changesMask[608])
+ if (changesMask[653])
{
for (std::size_t i = 0; i < 6; ++i)
{
- if (changesMask[609 + i])
+ if (changesMask[654 + i])
{
PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
@@ -4213,17 +4216,14 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(GuildClubMemberID);
Base::ClearChangesMask(Honor);
Base::ClearChangesMask(HonorNextLevel);
- Base::ClearChangesMask(PvpRewardAchieved);
- Base::ClearChangesMask(PvpTierMaxFromWins);
- Base::ClearChangesMask(PvpLastWeeksRewardAchieved);
- Base::ClearChangesMask(PvpLastWeeksTierMaxFromWins);
- Base::ClearChangesMask(PvpLastWeeksRewardClaimed);
Base::ClearChangesMask(NumBankSlots);
Base::ClearChangesMask(Field_1410);
Base::ClearChangesMask(QuestSession);
Base::ClearChangesMask(UiChromieTimeExpansionID);
Base::ClearChangesMask(TransportServerTime);
Base::ClearChangesMask(WeeklyRewardsPeriodSinceOrigin);
+ Base::ClearChangesMask(DEBUGSoulbindConduitRank);
+ Base::ClearChangesMask(DungeonScore);
Base::ClearChangesMask(InvSlots);
Base::ClearChangesMask(TrackResourceMask);
Base::ClearChangesMask(ExploredZones);
@@ -4904,11 +4904,13 @@ void ConversationData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
(*Lines)[i].WriteCreate(data, owner, receiver);
}
+ data.WriteBit(DontPlayBroadcastTextSounds);
data << uint32(Actors.size());
for (std::size_t i = 0; i < Actors.size(); ++i)
{
Actors[i].WriteCreate(data, owner, receiver);
}
+ data.FlushBits();
}
void ConversationData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const
@@ -4918,12 +4920,16 @@ void ConversationData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
void ConversationData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Conversation const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlock(0), 5);
+ data.WriteBits(changesMask.GetBlock(0), 6);
if (changesMask[0])
{
if (changesMask[1])
{
+ data.WriteBit(DontPlayBroadcastTextSounds);
+ }
+ if (changesMask[2])
+ {
data.WriteBits(Lines->size(), 32);
for (std::size_t i = 0; i < Lines->size(); ++i)
{
@@ -4934,7 +4940,7 @@ void ConversationData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[2])
+ if (changesMask[3])
{
if (!ignoreNestedChangesMask)
Actors.WriteUpdateMask(data);
@@ -4945,7 +4951,7 @@ void ConversationData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
data.FlushBits();
if (changesMask[0])
{
- if (changesMask[2])
+ if (changesMask[3])
{
for (std::size_t i = 0; i < Actors.size(); ++i)
{
@@ -4955,19 +4961,21 @@ void ConversationData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[3])
+ if (changesMask[4])
{
data << int32(LastLineEndTime);
}
- if (changesMask[4])
+ if (changesMask[5])
{
data << uint32(Progress);
}
}
+ data.FlushBits();
}
void ConversationData::ClearChangesMask()
{
+ Base::ClearChangesMask(DontPlayBroadcastTextSounds);
Base::ClearChangesMask(Lines);
Base::ClearChangesMask(Actors);
Base::ClearChangesMask(LastLineEndTime);
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index d65234a2286..5c3f61e5fae 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -19,6 +19,7 @@
#define UpdateFields_h__
#include "EnumFlag.h"
+#include "MythicPlusPacketsCommon.h"
#include "ObjectGuid.h"
#include "Position.h"
#include "QuaternionData.h"
@@ -251,7 +252,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag
bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); }
};
-struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<189>
+struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<190>
{
UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs;
DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells;
@@ -373,20 +374,21 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<189>
UpdateField<ObjectGuid, 96, 116> GuildGUID;
UpdateField<ObjectGuid, 96, 117> SkinningOwnerGUID;
UpdateField<uint32, 96, 118> SilencedSchoolMask;
- UpdateFieldArray<uint32, 2, 119, 120> NpcFlags;
+ UpdateField<ObjectGuid, 96, 119> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
+ UpdateFieldArray<uint32, 2, 120, 121> NpcFlags;
struct NpcFlagsTag : ViewerDependentValueTag<uint32> {};
- UpdateFieldArray<int32, 6, 122, 123> Power;
- UpdateFieldArray<int32, 6, 122, 129> MaxPower;
- UpdateFieldArray<float, 6, 122, 135> PowerRegenFlatModifier;
- UpdateFieldArray<float, 6, 122, 141> PowerRegenInterruptedFlatModifier;
- UpdateFieldArray<UF::VisibleItem, 3, 147, 148> VirtualItems;
- UpdateFieldArray<uint32, 2, 151, 152> AttackRoundBaseTime;
- UpdateFieldArray<int32, 4, 154, 155> Stats;
- UpdateFieldArray<int32, 4, 154, 159> StatPosBuff;
- UpdateFieldArray<int32, 4, 154, 163> StatNegBuff;
- UpdateFieldArray<int32, 7, 167, 168> Resistances;
- UpdateFieldArray<int32, 7, 167, 175> BonusResistanceMods;
- UpdateFieldArray<int32, 7, 167, 182> ManaCostModifier;
+ UpdateFieldArray<int32, 6, 123, 124> Power;
+ UpdateFieldArray<int32, 6, 123, 130> MaxPower;
+ UpdateFieldArray<float, 6, 123, 136> PowerRegenFlatModifier;
+ UpdateFieldArray<float, 6, 123, 142> PowerRegenInterruptedFlatModifier;
+ UpdateFieldArray<UF::VisibleItem, 3, 148, 149> VirtualItems;
+ UpdateFieldArray<uint32, 2, 152, 153> AttackRoundBaseTime;
+ UpdateFieldArray<int32, 4, 155, 156> Stats;
+ UpdateFieldArray<int32, 4, 155, 160> StatPosBuff;
+ UpdateFieldArray<int32, 4, 155, 164> StatNegBuff;
+ UpdateFieldArray<int32, 7, 168, 169> Resistances;
+ UpdateFieldArray<int32, 7, 168, 176> BonusResistanceMods;
+ UpdateFieldArray<int32, 7, 168, 183> ManaCostModifier;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const;
@@ -448,7 +450,7 @@ struct CTROptions : public IsUpdateFieldStructureTag
bool operator!=(CTROptions const& right) const { return !(*this == right); }
};
-struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<185>
+struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<188>
{
UpdateField<bool, 0, 1> HasQuestSession;
UpdateField<bool, 0, 2> HasLevelLink;
@@ -482,9 +484,10 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<185>
UpdateField<UF::CTROptions, 0, 30> CtrOptions;
UpdateField<int32, 0, 31> CovenantID;
UpdateField<int32, 32, 33> SoulbindID;
- UpdateFieldArray<UF::QuestLog, 125, 34, 35> QuestLog;
- UpdateFieldArray<UF::VisibleItem, 19, 160, 161> VisibleItems;
- UpdateFieldArray<float, 4, 180, 181> AvgItemLevel;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 34> DungeonScore;
+ UpdateFieldArray<UF::QuestLog, 125, 35, 36> QuestLog;
+ UpdateFieldArray<UF::VisibleItem, 19, 161, 162> VisibleItems;
+ UpdateFieldArray<float, 6, 181, 182> AvgItemLevel;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
@@ -520,7 +523,7 @@ struct RestInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3>
void ClearChangesMask();
};
-struct PVPInfo : public IsUpdateFieldStructureTag, public HasChangesMask<10>
+struct PVPInfo : public IsUpdateFieldStructureTag, public HasChangesMask<11>
{
UpdateField<bool, 0, 1> Disqualified;
UpdateField<uint32, 0, 2> WeeklyPlayed;
@@ -531,6 +534,7 @@ struct PVPInfo : public IsUpdateFieldStructureTag, public HasChangesMask<10>
UpdateField<uint32, 0, 7> WeeklyBestRating;
UpdateField<uint32, 0, 8> SeasonBestRating;
UpdateField<uint32, 0, 9> PvpTierID;
+ UpdateField<uint32, 0, 10> WeeklyBestWinPvpTierID;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
@@ -647,7 +651,7 @@ struct ReplayedQuest : public IsUpdateFieldStructureTag, public HasChangesMask<3
void ClearChangesMask();
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1512>
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1557>
{
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
UpdateField<bool, 0, 2> BankAutoSortDisabled;
@@ -685,7 +689,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateField<UF::SkillInfo, 34, 36> Skill;
UpdateField<int32, 34, 37> CharacterPoints;
UpdateField<int32, 34, 38> MaxTalentTiers;
- UpdateField<int32, 34, 39> TrackCreatureMask;
+ UpdateField<uint32, 34, 39> TrackCreatureMask;
UpdateField<float, 34, 40> MainhandExpertise;
UpdateField<float, 34, 41> OffhandExpertise;
UpdateField<float, 34, 42> RangedExpertise;
@@ -748,36 +752,33 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
UpdateField<uint64, 98, 101> GuildClubMemberID;
UpdateField<int32, 98, 102> Honor;
UpdateField<int32, 98, 103> HonorNextLevel;
- UpdateField<int64, 98, 104> PvpRewardAchieved;
- UpdateField<int32, 98, 105> PvpTierMaxFromWins;
- UpdateField<int64, 98, 106> PvpLastWeeksRewardAchieved;
- UpdateField<int32, 98, 107> PvpLastWeeksTierMaxFromWins;
- UpdateField<int64, 98, 108> PvpLastWeeksRewardClaimed;
- UpdateField<uint8, 98, 109> NumBankSlots;
- UpdateField<UF::ActivePlayerUnk901, 98, 111> Field_1410;
- OptionalUpdateField<UF::QuestSession, 98, 110> QuestSession;
- UpdateField<int32, 98, 112> UiChromieTimeExpansionID;
- UpdateField<int32, 98, 113> TransportServerTime;
- UpdateField<uint32, 98, 114> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
- UpdateFieldArray<ObjectGuid, 199, 115, 116> InvSlots;
- UpdateFieldArray<uint32, 2, 315, 316> TrackResourceMask;
- UpdateFieldArray<uint64, 192, 318, 319> ExploredZones;
- UpdateFieldArray<UF::RestInfo, 2, 511, 512> RestInfo;
- UpdateFieldArray<int32, 7, 514, 515> ModDamageDonePos;
- UpdateFieldArray<int32, 7, 514, 522> ModDamageDoneNeg;
- UpdateFieldArray<float, 7, 514, 529> ModDamageDonePercent;
- UpdateFieldArray<float, 7, 514, 536> ModHealingDonePercent;
- UpdateFieldArray<float, 3, 543, 544> WeaponDmgMultipliers;
- UpdateFieldArray<float, 3, 543, 547> WeaponAtkSpeedMultipliers;
- UpdateFieldArray<uint32, 12, 550, 551> BuybackPrice;
- UpdateFieldArray<uint32, 12, 550, 563> BuybackTimestamp;
- UpdateFieldArray<int32, 32, 575, 576> CombatRatings;
- UpdateFieldArray<UF::PVPInfo, 6, 608, 609> PvpInfo;
- UpdateFieldArray<uint32, 4, 615, 616> NoReagentCostMask;
- UpdateFieldArray<int32, 2, 620, 621> ProfessionSkillLine;
- UpdateFieldArray<uint32, 4, 623, 624> BagSlotFlags;
- UpdateFieldArray<uint32, 7, 628, 629> BankBagSlotFlags;
- UpdateFieldArray<uint64, 875, 636, 637> QuestCompleted;
+ UpdateField<uint8, 98, 104> NumBankSlots;
+ UpdateField<UF::ActivePlayerUnk901, 98, 106> Field_1410;
+ OptionalUpdateField<UF::QuestSession, 98, 105> QuestSession;
+ UpdateField<int32, 98, 107> UiChromieTimeExpansionID;
+ UpdateField<int32, 98, 108> TransportServerTime;
+ UpdateField<uint32, 98, 109> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
+ UpdateField<int16, 98, 110> DEBUGSoulbindConduitRank;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 98, 111> DungeonScore;
+ UpdateFieldArray<ObjectGuid, 199, 112, 113> InvSlots;
+ UpdateFieldArray<uint32, 2, 312, 313> TrackResourceMask;
+ UpdateFieldArray<uint64, 240, 315, 316> ExploredZones;
+ UpdateFieldArray<UF::RestInfo, 2, 556, 557> RestInfo;
+ UpdateFieldArray<int32, 7, 559, 560> ModDamageDonePos;
+ UpdateFieldArray<int32, 7, 559, 567> ModDamageDoneNeg;
+ UpdateFieldArray<float, 7, 559, 574> ModDamageDonePercent;
+ UpdateFieldArray<float, 7, 559, 581> ModHealingDonePercent;
+ UpdateFieldArray<float, 3, 588, 589> WeaponDmgMultipliers;
+ UpdateFieldArray<float, 3, 588, 592> WeaponAtkSpeedMultipliers;
+ UpdateFieldArray<uint32, 12, 595, 596> BuybackPrice;
+ UpdateFieldArray<uint32, 12, 595, 608> BuybackTimestamp;
+ UpdateFieldArray<int32, 32, 620, 621> CombatRatings;
+ UpdateFieldArray<UF::PVPInfo, 6, 653, 654> PvpInfo;
+ UpdateFieldArray<uint32, 4, 660, 661> NoReagentCostMask;
+ UpdateFieldArray<int32, 2, 665, 666> ProfessionSkillLine;
+ UpdateFieldArray<uint32, 4, 668, 669> BagSlotFlags;
+ UpdateFieldArray<uint32, 7, 673, 674> BankBagSlotFlags;
+ UpdateFieldArray<uint64, 875, 681, 682> QuestCompleted;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const;
@@ -931,12 +932,13 @@ struct ConversationActor : public IsUpdateFieldStructureTag
bool operator!=(ConversationActor const& right) const { return !(*this == right); }
};
-struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMask<5>
+struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMask<6>
{
- UpdateField<std::vector<UF::ConversationLine>, 0, 1> Lines;
- DynamicUpdateField<UF::ConversationActor, 0, 2> Actors;
- UpdateField<int32, 0, 3> LastLineEndTime;
- UpdateField<uint32, 0, 4> Progress;
+ UpdateField<bool, 0, 1> DontPlayBroadcastTextSounds;
+ UpdateField<std::vector<UF::ConversationLine>, 0, 2> Lines;
+ DynamicUpdateField<UF::ConversationActor, 0, 3> Actors;
+ UpdateField<int32, 0, 4> LastLineEndTime;
+ UpdateField<uint32, 0, 5> Progress;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Player/EquipmentSet.h b/src/server/game/Entities/Player/EquipmentSet.h
index 7181b7d89ee..26d7a4dd6a3 100644
--- a/src/server/game/Entities/Player/EquipmentSet.h
+++ b/src/server/game/Entities/Player/EquipmentSet.h
@@ -54,8 +54,10 @@ struct EquipmentSetInfo
std::array<ObjectGuid, EQUIPMENT_SET_SLOTS> Pieces;
std::array<int32, EQUIPMENT_SET_SLOTS> Appearances; ///< ItemModifiedAppearanceID
std::array<int32, 2> Enchants; ///< SpellItemEnchantmentID
- int32 Unknown901_1 = 0;
- int32 Unknown901_2 = 0;
+ int32 SecondaryShoulderApparanceID = 0; ///< Secondary shoulder appearance
+ int32 SecondaryShoulderSlot = 0; ///< Always 2 if secondary shoulder apperance is used
+ int32 SecondaryWeaponAppearanceID = 0; ///< For legion artifacts: linked child item appearance
+ int32 SecondaryWeaponSlot = 0; ///< For legion artifacts: which slot is used by child item
} Data;
/// Server-side data
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index ec58f379b9e..c223fd89b39 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -358,9 +358,11 @@ void ObjectMgr::LoadCreatureTemplates()
// "spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, "
// 60 61 62 63 64 65 66 67 68
// "InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, "
- // 69 70 71 72 73 74 75 76
- // "RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, "
- // 77
+ // 69 70 71 72 73 74
+ // "RacialLeader, movementId, CreatureDifficultyID, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, "
+ // 75 76 77
+ // "mechanic_immune_mask, spell_school_immune_mask, flags_extra, "
+ // 78
// "ScriptName FROM creature_template WHERE entry = ? OR 1 = ?");
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_CREATURE_TEMPLATE);
@@ -462,13 +464,14 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
creatureTemplate.ModExperience = fields[68].GetFloat();
creatureTemplate.RacialLeader = fields[69].GetBool();
creatureTemplate.movementId = fields[70].GetUInt32();
- creatureTemplate.WidgetSetID = fields[71].GetInt32();
- creatureTemplate.WidgetSetUnitConditionID = fields[72].GetInt32();
- creatureTemplate.RegenHealth = fields[73].GetBool();
- creatureTemplate.MechanicImmuneMask = fields[74].GetUInt32();
- creatureTemplate.SpellSchoolImmuneMask = fields[75].GetUInt32();
- creatureTemplate.flags_extra = fields[76].GetUInt32();
- creatureTemplate.ScriptID = GetScriptId(fields[77].GetString());
+ creatureTemplate.CreatureDifficultyID = fields[71].GetInt32();
+ creatureTemplate.WidgetSetID = fields[72].GetInt32();
+ creatureTemplate.WidgetSetUnitConditionID = fields[73].GetInt32();
+ creatureTemplate.RegenHealth = fields[74].GetBool();
+ creatureTemplate.MechanicImmuneMask = fields[75].GetUInt32();
+ creatureTemplate.SpellSchoolImmuneMask = fields[76].GetUInt32();
+ creatureTemplate.flags_extra = fields[77].GetUInt32();
+ creatureTemplate.ScriptID = GetScriptId(fields[78].GetString());
}
void ObjectMgr::LoadCreatureTemplateModels()
@@ -638,8 +641,8 @@ void ObjectMgr::LoadCreatureScalingData()
{
uint32 oldMSTime = getMSTime();
- // 0 1 2 3 4 5 6
- QueryResult result = WorldDatabase.Query("SELECT Entry, DifficultyID, LevelScalingMin, LevelScalingMax, LevelScalingDeltaMin, LevelScalingDeltaMax, ContentTuningID FROM creature_template_scaling ORDER BY Entry");
+ // 0 1 2 3 4
+ QueryResult result = WorldDatabase.Query("SELECT Entry, DifficultyID, LevelScalingDeltaMin, LevelScalingDeltaMax, ContentTuningID FROM creature_template_scaling ORDER BY Entry");
if (!result)
{
@@ -663,11 +666,9 @@ void ObjectMgr::LoadCreatureScalingData()
}
CreatureLevelScaling creatureLevelScaling;
- creatureLevelScaling.MinLevel = fields[2].GetUInt16();
- creatureLevelScaling.MaxLevel = fields[3].GetUInt16();
- creatureLevelScaling.DeltaLevelMin = fields[4].GetInt16();
- creatureLevelScaling.DeltaLevelMax = fields[5].GetInt16();
- creatureLevelScaling.ContentTuningID = fields[6].GetInt32();
+ creatureLevelScaling.DeltaLevelMin = fields[2].GetInt16();
+ creatureLevelScaling.DeltaLevelMax = fields[3].GetInt16();
+ creatureLevelScaling.ContentTuningID = fields[4].GetInt32();
itr->second.scalingStore[difficulty] = creatureLevelScaling;
@@ -4127,19 +4128,21 @@ void ObjectMgr::LoadQuests()
"RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, "
//52 53 54 55 56 57
"RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, "
- //58 59 60 61 62 63 64 65 66 67 68
- "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, PortraitGiver, PortraitGiverMount, PortraitTurnIn, "
- //69 70 71 72 73 74 75 76
+ //58 59 60 61 62 63 64 65
+ "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, "
+ //66 67 68 69
+ "PortraitGiver, PortraitGiverMount, PortraitGiverModelSceneID, PortraitTurnIn, "
+ //70 71 72 73 74 75 76 77
"RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, "
- //77 78 79 80 81 82 83 84
+ //78 79 80 81 82 83 84 85
"RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, "
- //85 86 87 88 89
+ //86 87 88 89 90
"RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, "
- //90 91 92 93 94 95 96 97
+ //91 92 93 94 95 96 97 98
"RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, "
- //98 99 100 101 102 103 104 105 106
+ //99 100 101 102 103 104 105 106 107
"AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, TreasurePickerID, Expansion, ManagedWorldStateID, QuestSessionBonus, "
- //107 108 109 110 111 112 113 114 115
+ //108 109 110 111 112 113 114 115 116
"LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog"
" FROM quest_template");
if (!result)
@@ -7844,8 +7847,8 @@ void ObjectMgr::LoadPointsOfInterest()
uint32 count = 0;
- // 0 1 2 3 4 5 6 7
- QueryResult result = WorldDatabase.Query("SELECT ID, PositionX, PositionY, Icon, Flags, Importance, Name, Unknown905 FROM points_of_interest");
+ // 0 1 2 3 4 5 6 7 8
+ QueryResult result = WorldDatabase.Query("SELECT ID, PositionX, PositionY, PositionZ, Icon, Flags, Importance, Name, Unknown905 FROM points_of_interest");
if (!result)
{
@@ -7861,16 +7864,17 @@ void ObjectMgr::LoadPointsOfInterest()
PointOfInterest pointOfInterest;
pointOfInterest.ID = id;
- pointOfInterest.Pos.Relocate(fields[1].GetFloat(), fields[2].GetFloat());
- pointOfInterest.Icon = fields[3].GetUInt32();
- pointOfInterest.Flags = fields[4].GetUInt32();
- pointOfInterest.Importance = fields[5].GetUInt32();
- pointOfInterest.Name = fields[6].GetString();
- pointOfInterest.Unknown905 = fields[7].GetInt32();
+ pointOfInterest.Pos.Relocate(fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat());
+ pointOfInterest.Icon = fields[4].GetUInt32();
+ pointOfInterest.Flags = fields[5].GetUInt32();
+ pointOfInterest.Importance = fields[6].GetUInt32();
+ pointOfInterest.Name = fields[7].GetString();
+ pointOfInterest.Unknown905 = fields[8].GetInt32();
- if (!Trinity::IsValidMapCoord(pointOfInterest.Pos.GetPositionX(), pointOfInterest.Pos.GetPositionY()))
+ if (!Trinity::IsValidMapCoord(pointOfInterest.Pos.GetPositionX(), pointOfInterest.Pos.GetPositionY(), pointOfInterest.Pos.GetPositionZ()))
{
- TC_LOG_ERROR("sql.sql", "Table `points_of_interest` (ID: %u) have invalid coordinates (PositionX: %f PositionY: %f), ignored.", id, pointOfInterest.Pos.GetPositionX(), pointOfInterest.Pos.GetPositionY());
+ TC_LOG_ERROR("sql.sql", "Table `points_of_interest` (ID: %u) have invalid coordinates (PositionX: %f PositionY: %f, PositionZ: %f), ignored.",
+ id, pointOfInterest.Pos.GetPositionX(), pointOfInterest.Pos.GetPositionY(), pointOfInterest.Pos.GetPositionZ());
continue;
}
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 1446a5ad9f9..bce4ccd7049 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1415,6 +1415,10 @@ void WorldSession::SendFeatureSystemStatus()
features.IsMuted = !CanSpeak();
SendPacket(features.Write());
+
+ WorldPackets::System::FeatureSystemStatus2 features2;
+ features2.TextToSpeechFeatureEnabled = false;
+ SendPacket(features2.Write());
}
void WorldSession::HandleSetFactionAtWar(WorldPackets::Character::SetFactionAtWar& packet)
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index 8f45920a5af..2b2ac0cbf06 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -87,7 +87,7 @@ void WorldSession::HandleChatMessageWhisperOpcode(WorldPackets::Chat::ChatMessag
void WorldSession::HandleChatMessageChannelOpcode(WorldPackets::Chat::ChatMessageChannel& chatMessageChannel)
{
- HandleChatMessage(CHAT_MSG_CHANNEL, Language(chatMessageChannel.Language), chatMessageChannel.Text, chatMessageChannel.Target);
+ HandleChatMessage(CHAT_MSG_CHANNEL, Language(chatMessageChannel.Language), chatMessageChannel.Text, chatMessageChannel.Target, chatMessageChannel.ChannelGUID);
}
void WorldSession::HandleChatMessageEmoteOpcode(WorldPackets::Chat::ChatMessageEmote& chatMessageEmote)
@@ -95,7 +95,7 @@ void WorldSession::HandleChatMessageEmoteOpcode(WorldPackets::Chat::ChatMessageE
HandleChatMessage(CHAT_MSG_EMOTE, LANG_UNIVERSAL, chatMessageEmote.Text);
}
-void WorldSession::HandleChatMessage(ChatMsg type, Language lang, std::string msg, std::string target /*= ""*/)
+void WorldSession::HandleChatMessage(ChatMsg type, Language lang, std::string msg, std::string target /*= ""*/, Optional<ObjectGuid> channelGuid /*= {}*/)
{
Player* sender = GetPlayer();
@@ -374,7 +374,10 @@ void WorldSession::HandleChatMessage(ChatMsg type, Language lang, std::string ms
}
}
- if (Channel* chn = ChannelMgr::GetChannelForPlayerByNamePart(target, sender))
+ Channel* chn = channelGuid
+ ? ChannelMgr::GetChannelForPlayerByGuid(*channelGuid, sender)
+ : ChannelMgr::GetChannelForPlayerByNamePart(target, sender);
+ if (chn)
{
sScriptMgr->OnPlayerChat(sender, type, lang, msg, chn);
chn->Say(sender->GetGUID(), msg, lang);
@@ -411,10 +414,10 @@ void WorldSession::HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMes
void WorldSession::HandleChatAddonMessageTargetedOpcode(WorldPackets::Chat::ChatAddonMessageTargeted& chatAddonMessageTargeted)
{
HandleChatAddonMessage(chatAddonMessageTargeted.Params.Type, chatAddonMessageTargeted.Params.Prefix, chatAddonMessageTargeted.Params.Text,
- chatAddonMessageTargeted.Params.IsLogged, chatAddonMessageTargeted.Target);
+ chatAddonMessageTargeted.Params.IsLogged, chatAddonMessageTargeted.Target, chatAddonMessageTargeted.ChannelGUID);
}
-void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, bool isLogged, std::string target /*= ""*/)
+void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, bool isLogged, std::string target /*= ""*/, Optional<ObjectGuid> channelGuid /*= {}*/)
{
Player* sender = GetPlayer();
@@ -480,7 +483,10 @@ void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std:
}
case CHAT_MSG_CHANNEL:
{
- if (Channel* chn = ChannelMgr::GetChannelForPlayerByNamePart(target, sender))
+ Channel* chn = channelGuid
+ ? ChannelMgr::GetChannelForPlayerByGuid(*channelGuid, sender)
+ : ChannelMgr::GetChannelForPlayerByNamePart(target, sender);
+ if (chn)
chn->AddonSay(sender->GetGUID(), prefix, text.c_str(), isLogged);
break;
}
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index 76097ffc300..07246cabeb6 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -88,46 +88,47 @@ Quest::Quest(Field* questRecord)
_questGiverPortrait = questRecord[66].GetUInt32();
_questGiverPortraitMount = questRecord[67].GetUInt32();
- _questTurnInPortrait = questRecord[68].GetUInt32();
+ _questGiverPortraitModelSceneId = questRecord[68].GetInt32();
+ _questTurnInPortrait = questRecord[69].GetUInt32();
for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i)
{
- RewardFactionId[i] = questRecord[69 + i * 4].GetUInt32();
- RewardFactionValue[i] = questRecord[70 + i * 4].GetInt32();
- RewardFactionOverride[i] = questRecord[71 + i * 4].GetInt32();
- RewardFactionCapIn[i] = questRecord[72 + i * 4].GetInt32();
+ RewardFactionId[i] = questRecord[70 + i * 4].GetUInt32();
+ RewardFactionValue[i] = questRecord[71 + i * 4].GetInt32();
+ RewardFactionOverride[i] = questRecord[72 + i * 4].GetInt32();
+ RewardFactionCapIn[i] = questRecord[73 + i * 4].GetInt32();
}
- _rewardReputationMask = questRecord[89].GetUInt32();
+ _rewardReputationMask = questRecord[90].GetUInt32();
for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i)
{
- RewardCurrencyId[i] = questRecord[90 + i * 2].GetUInt32();
- RewardCurrencyCount[i] = questRecord[91 + i * 2].GetUInt32();
+ RewardCurrencyId[i] = questRecord[91 + i * 2].GetUInt32();
+ RewardCurrencyCount[i] = questRecord[92 + i * 2].GetUInt32();
if (RewardCurrencyId[i])
++_rewCurrencyCount;
}
- _soundAccept = questRecord[98].GetUInt32();
- _soundTurnIn = questRecord[99].GetUInt32();
- _areaGroupID = questRecord[100].GetUInt32();
- _limitTime = questRecord[101].GetUInt32();
- _allowableRaces.RawValue = questRecord[102].GetUInt64();
- _treasurePickerID = questRecord[103].GetInt32();
- _expansion = questRecord[104].GetInt32();
- _managedWorldStateID = questRecord[105].GetInt32();
- _questSessionBonus = questRecord[106].GetInt32();
-
- _logTitle = questRecord[107].GetString();
- _logDescription = questRecord[108].GetString();
- _questDescription = questRecord[109].GetString();
- _areaDescription = questRecord[110].GetString();
- _portraitGiverText = questRecord[111].GetString();
- _portraitGiverName = questRecord[112].GetString();
- _portraitTurnInText = questRecord[113].GetString();
- _portraitTurnInName = questRecord[114].GetString();
- _questCompletionLog = questRecord[115].GetString();
+ _soundAccept = questRecord[99].GetUInt32();
+ _soundTurnIn = questRecord[100].GetUInt32();
+ _areaGroupID = questRecord[101].GetUInt32();
+ _limitTime = questRecord[102].GetUInt32();
+ _allowableRaces.RawValue = questRecord[103].GetUInt64();
+ _treasurePickerID = questRecord[104].GetInt32();
+ _expansion = questRecord[105].GetInt32();
+ _managedWorldStateID = questRecord[106].GetInt32();
+ _questSessionBonus = questRecord[107].GetInt32();
+
+ _logTitle = questRecord[108].GetString();
+ _logDescription = questRecord[109].GetString();
+ _questDescription = questRecord[110].GetString();
+ _areaDescription = questRecord[111].GetString();
+ _portraitGiverText = questRecord[112].GetString();
+ _portraitGiverName = questRecord[113].GetString();
+ _portraitTurnInText = questRecord[114].GetString();
+ _portraitTurnInName = questRecord[115].GetString();
+ _questCompletionLog = questRecord[116].GetString();
}
void Quest::LoadRewardDisplaySpell(Field* fields)
@@ -532,6 +533,7 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc) const
response.Info.RewardFactionFlags = GetRewardReputationMask();
response.Info.PortraitGiver = GetQuestGiverPortrait();
response.Info.PortraitGiverMount = GetQuestGiverPortraitMount();
+ response.Info.PortraitGiverModelSceneID = GetQuestGiverPortraitModelSceneId();
response.Info.PortraitTurnIn = GetQuestTurnInPortrait();
for (uint8 i = 0; i < QUEST_ITEM_DROP_COUNT; ++i)
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index 510e4e2e1df..9cf40a4da89 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -562,6 +562,7 @@ class TC_GAME_API Quest
int32 GetQuestSessionBonus() const { return _questSessionBonus; }
uint32 GetQuestGiverPortrait() const { return _questGiverPortrait; }
int32 GetQuestGiverPortraitMount() const { return _questGiverPortraitMount; }
+ int32 GetQuestGiverPortraitModelSceneId() const { return _questGiverPortraitModelSceneId; }
uint32 GetQuestTurnInPortrait() const { return _questTurnInPortrait; }
bool IsDaily() const { return (_flags & QUEST_FLAGS_DAILY) != 0; }
bool IsWeekly() const { return (_flags & QUEST_FLAGS_WEEKLY) != 0; }
@@ -652,6 +653,7 @@ class TC_GAME_API Quest
uint32 _rewardSkillPoints = 0;
uint32 _questGiverPortrait = 0;
int32 _questGiverPortraitMount = 0;
+ int32 _questGiverPortraitModelSceneId = 0;
uint32 _questTurnInPortrait = 0;
uint32 _rewardReputationMask;
uint32 _soundAccept = 0;
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp
index 0bf1acec836..a9d9ad0dafd 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.cpp
+++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp
@@ -195,6 +195,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem)
data.WriteBit(auctionItem.CensorServerSideInfo);
data.WriteBit(auctionItem.CensorBidInfo);
data.WriteBit(auctionItem.AuctionBucketKey.is_initialized());
+ data.WriteBit(auctionItem.Creator.is_initialized());
if (!auctionItem.CensorBidInfo)
{
data.WriteBit(auctionItem.Bidder.is_initialized());
@@ -236,6 +237,9 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem)
data << int32(auctionItem.EndTime);
}
+ if (auctionItem.Creator)
+ data << *auctionItem.Creator;
+
if (!auctionItem.CensorBidInfo)
{
if (auctionItem.Bidder)
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h
index 0e30f6f53f7..07b5e9b9260 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.h
+++ b/src/server/game/Server/Packets/AuctionHousePackets.h
@@ -130,6 +130,7 @@ namespace WorldPackets
Optional<uint64> BidAmount;
std::vector<Item::ItemGemData> Gems;
Optional<WorldPackets::AuctionHouse::AuctionBucketKey> AuctionBucketKey;
+ Optional<ObjectGuid> Creator;
};
struct AuctionBidderNotification
diff --git a/src/server/game/Server/Packets/BattlePetPackets.cpp b/src/server/game/Server/Packets/BattlePetPackets.cpp
index 4568103d7de..f664e92ea0f 100644
--- a/src/server/game/Server/Packets/BattlePetPackets.cpp
+++ b/src/server/game/Server/Packets/BattlePetPackets.cpp
@@ -65,7 +65,6 @@ WorldPacket const* WorldPackets::BattlePet::BattlePetJournal::Write()
_worldPacket << uint16(Trap);
_worldPacket << uint32(Slots.size());
_worldPacket << uint32(Pets.size());
- _worldPacket << int32(MaxPets);
_worldPacket.WriteBit(HasJournalLock);
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/BattlePetPackets.h b/src/server/game/Server/Packets/BattlePetPackets.h
index cce3bd49675..2cc13908abc 100644
--- a/src/server/game/Server/Packets/BattlePetPackets.h
+++ b/src/server/game/Server/Packets/BattlePetPackets.h
@@ -72,7 +72,6 @@ namespace WorldPackets
bool HasJournalLock = true;
std::vector<std::reference_wrapper<BattlePetSlot>> Slots;
std::vector<std::reference_wrapper<BattlePet>> Pets;
- int32 MaxPets = 1000;
};
class BattlePetJournalLockAcquired final : public ServerPacket
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index 5ee8725465c..70a09262cdb 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -325,6 +325,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::RatedPvpInf
data << int32(bracketInfo.BestSeasonRating);
data << int32(bracketInfo.PvpTierID);
data << int32(bracketInfo.Unused3);
+ data << int32(bracketInfo.WeeklyBestWinPvpTierID);
data.WriteBit(bracketInfo.Disqualified);
data.FlushBits();
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index b145cfbe47c..65281fce20b 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -448,6 +448,7 @@ namespace WorldPackets
int32 BestSeasonRating = 0;
int32 PvpTierID = 0;
int32 Unused3 = 0;
+ int32 WeeklyBestWinPvpTierID = 0;
bool Disqualified = false;
} Bracket[6];
};
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index 752b6b144c4..41fd5249b11 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -41,6 +41,7 @@ void WorldPackets::Chat::ChatMessageWhisper::Read()
void WorldPackets::Chat::ChatMessageChannel::Read()
{
_worldPacket >> Language;
+ _worldPacket >> ChannelGUID;
uint32 targetLen = _worldPacket.ReadBits(9);
uint32 textLen = _worldPacket.ReadBits(9);
Target = _worldPacket.ReadString(targetLen);
@@ -70,6 +71,7 @@ void WorldPackets::Chat::ChatAddonMessageTargeted::Read()
_worldPacket.ResetBitPos();
_worldPacket >> Params;
+ _worldPacket >> *ChannelGUID;
Target = _worldPacket.ReadString(targetLen);
}
@@ -180,6 +182,7 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
_worldPacket.WriteBit(HideChatLog);
_worldPacket.WriteBit(FakeSenderName);
_worldPacket.WriteBit(Unused_801.is_initialized());
+ _worldPacket.WriteBit(ChannelGUID.is_initialized());
_worldPacket.FlushBits();
_worldPacket.WriteString(SenderName);
@@ -191,6 +194,9 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
if (Unused_801)
_worldPacket << uint32(*Unused_801);
+ if (ChannelGUID)
+ _worldPacket << *ChannelGUID;
+
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index ad6fc825bf7..cb161ef3169 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -72,6 +72,7 @@ namespace WorldPackets
void Read() override;
int32 Language = LANG_UNIVERSAL;
+ ObjectGuid ChannelGUID;
std::string Text;
std::string Target;
};
@@ -99,12 +100,16 @@ namespace WorldPackets
class ChatAddonMessageTargeted final : public ClientPacket
{
public:
- ChatAddonMessageTargeted(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE_TARGETED, std::move(packet)) { }
+ ChatAddonMessageTargeted(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE_TARGETED, std::move(packet))
+ {
+ ChannelGUID.emplace();
+ }
void Read() override;
std::string Target;
ChatAddonMessageParams Params;
+ Optional<ObjectGuid> ChannelGUID; // not optional in the packet. Optional for api reasons
};
class ChatMessageDND final : public ClientPacket
@@ -144,7 +149,8 @@ namespace WorldPackets
Chat() : ServerPacket(SMSG_CHAT, 100) { }
Chat(Chat const& chat);
- void Initialize(ChatMsg chatType, Language language, WorldObject const* sender, WorldObject const* receiver, std::string message, uint32 achievementId = 0, std::string channelName = "", LocaleConstant locale = DEFAULT_LOCALE, std::string addonPrefix = "");
+ void Initialize(ChatMsg chatType, Language language, WorldObject const* sender, WorldObject const* receiver, std::string message, uint32 achievementId = 0,
+ std::string channelName = "", LocaleConstant locale = DEFAULT_LOCALE, std::string addonPrefix = "");
void SetSender(WorldObject const* sender, LocaleConstant locale);
void SetReceiver(WorldObject const* receiver, LocaleConstant locale);
@@ -170,6 +176,7 @@ namespace WorldPackets
Optional<uint32> Unused_801;
bool HideChatLog = false;
bool FakeSenderName = false;
+ Optional<ObjectGuid> ChannelGUID;
};
class Emote final : public ServerPacket
diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp
index e6a81be2bc1..7aafcfdd870 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.cpp
+++ b/src/server/game/Server/Packets/CombatLogPackets.cpp
@@ -345,14 +345,14 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write()
attackRoundInfo << uint8(ContentTuning.Type);
attackRoundInfo << uint8(ContentTuning.TargetLevel);
attackRoundInfo << uint8(ContentTuning.Expansion);
- attackRoundInfo << uint8(ContentTuning.TargetMinScalingLevel);
- attackRoundInfo << uint8(ContentTuning.TargetMaxScalingLevel);
attackRoundInfo << int16(ContentTuning.PlayerLevelDelta);
attackRoundInfo << int8(ContentTuning.TargetScalingLevelDelta);
attackRoundInfo << float(ContentTuning.PlayerItemLevel);
attackRoundInfo << float(ContentTuning.TargetItemLevel);
attackRoundInfo << uint16(ContentTuning.ScalingHealthItemLevelCurveID);
attackRoundInfo << uint32(ContentTuning.Flags);
+ attackRoundInfo << int32(ContentTuning.PlayerContentTuningID);
+ attackRoundInfo << int32(ContentTuning.TargetContentTuningID);
WriteLogDataBit();
FlushBits();
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
index 47d806aef30..c03f304a215 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
@@ -74,9 +74,8 @@ bool ContentTuningParams::GenerateDataForUnits<Creature, Player>(Creature* attac
ScalingHealthItemLevelCurveID = target->m_unitData->ScalingHealthItemLevelCurveID;
TargetLevel = target->getLevel();
Expansion = creatureTemplate->HealthScalingExpansion;
- TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
- TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
TargetScalingLevelDelta = int8(attacker->m_unitData->ScalingLevelDelta);
+ TargetContentTuningID = creatureScaling->ContentTuningID;
return true;
}
@@ -93,9 +92,8 @@ bool ContentTuningParams::GenerateDataForUnits<Player, Creature>(Player* attacke
ScalingHealthItemLevelCurveID = target->m_unitData->ScalingHealthItemLevelCurveID;
TargetLevel = target->getLevel();
Expansion = creatureTemplate->HealthScalingExpansion;
- TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
- TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
TargetScalingLevelDelta = int8(target->m_unitData->ScalingLevelDelta);
+ TargetContentTuningID = creatureScaling->ContentTuningID;
return true;
}
@@ -111,9 +109,8 @@ bool ContentTuningParams::GenerateDataForUnits<Creature, Creature>(Creature* att
PlayerItemLevel = 0;
TargetLevel = target->getLevel();
Expansion = creatureTemplate->HealthScalingExpansion;
- TargetMinScalingLevel = uint8(creatureScaling->MinLevel);
- TargetMaxScalingLevel = uint8(creatureScaling->MaxLevel);
TargetScalingLevelDelta = int8(accessor->m_unitData->ScalingLevelDelta);
+ TargetContentTuningID = creatureScaling->ContentTuningID;
return true;
}
@@ -174,10 +171,10 @@ ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTunin
data << uint16(contentTuningParams.ScalingHealthItemLevelCurveID);
data << uint8(contentTuningParams.TargetLevel);
data << uint8(contentTuningParams.Expansion);
- data << uint8(contentTuningParams.TargetMinScalingLevel);
- data << uint8(contentTuningParams.TargetMaxScalingLevel);
data << int8(contentTuningParams.TargetScalingLevelDelta);
data << uint32(contentTuningParams.Flags);
+ data << int32(contentTuningParams.PlayerContentTuningID);
+ data << int32(contentTuningParams.TargetContentTuningID);
data.WriteBits(contentTuningParams.Type, 4);
data.FlushBits();
return data;
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h
index c08298b0f58..1a1413c58e1 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h
@@ -72,10 +72,10 @@ namespace WorldPackets
uint16 ScalingHealthItemLevelCurveID = 0;
uint8 TargetLevel = 0;
uint8 Expansion = 0;
- uint8 TargetMinScalingLevel = 0;
- uint8 TargetMaxScalingLevel = 0;
int8 TargetScalingLevelDelta = 0;
uint32 Flags = NO_LEVEL_SCALING | NO_ITEM_LEVEL_SCALING;
+ int32 PlayerContentTuningID = 0;
+ int32 TargetContentTuningID = 0;
template<class T, class U>
bool GenerateDataForUnits(T* attacker, U* target);
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
index ff47852e429..45442f9db31 100644
--- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp
+++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
@@ -45,8 +45,10 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
_worldPacket.append(equipSet->Enchants.data(), equipSet->Enchants.size());
- _worldPacket << int32(equipSet->Unknown901_1);
- _worldPacket << int32(equipSet->Unknown901_2);
+ _worldPacket << int32(equipSet->SecondaryShoulderApparanceID);
+ _worldPacket << int32(equipSet->SecondaryShoulderSlot);
+ _worldPacket << int32(equipSet->SecondaryWeaponAppearanceID);
+ _worldPacket << int32(equipSet->SecondaryWeaponSlot);
_worldPacket.WriteBit(equipSet->AssignedSpecIndex != -1);
_worldPacket.WriteBits(equipSet->SetName.length(), 8);
@@ -79,8 +81,10 @@ void WorldPackets::EquipmentSet::SaveEquipmentSet::Read()
_worldPacket >> Set.Enchants[0];
_worldPacket >> Set.Enchants[1];
- _worldPacket >> Set.Unknown901_1;
- _worldPacket >> Set.Unknown901_2;
+ _worldPacket >> Set.SecondaryShoulderApparanceID;
+ _worldPacket >> Set.SecondaryShoulderSlot;
+ _worldPacket >> Set.SecondaryWeaponAppearanceID;
+ _worldPacket >> Set.SecondaryWeaponSlot;
bool hasSpecIndex = _worldPacket.ReadBit();
diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp
index 87e4cf56fa3..d226b521a47 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.cpp
+++ b/src/server/game/Server/Packets/GarrisonPackets.cpp
@@ -190,6 +190,14 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonEventList const& eventList)
return data;
}
+ByteBuffer& operator<<(ByteBuffer& data, GarrisonSpecGroup const& specGroup)
+{
+ data << int32(specGroup.ChrSpecializationID);
+ data << int32(specGroup.SoulbindID);
+
+ return data;
+}
+
ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison)
{
ASSERT(garrison.Missions.size() == garrison.MissionRewards.size());
@@ -210,6 +218,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison)
data << uint32(garrison.Talents.size());
data << uint32(garrison.Collections.size());
data << uint32(garrison.EventLists.size());
+ data << uint32(garrison.SpecGroups.size());
data << uint32(garrison.CanStartMission.size());
data << uint32(garrison.ArchivedMissions.size());
data << int32(garrison.NumFollowerActivationsRemaining);
@@ -237,6 +246,9 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison)
for (GarrisonEventList const& eventList : garrison.EventLists)
data << eventList;
+ for (GarrisonSpecGroup const& specGroup : garrison.SpecGroups)
+ data << specGroup;
+
if (!garrison.ArchivedMissions.empty())
data.append(garrison.ArchivedMissions.data(), garrison.ArchivedMissions.size());
diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h
index 27dc258aaf0..08e56820c10 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.h
+++ b/src/server/game/Server/Packets/GarrisonPackets.h
@@ -174,6 +174,12 @@ namespace WorldPackets
std::vector<GarrisonEventEntry> Events;
};
+ struct GarrisonSpecGroup
+ {
+ int32 ChrSpecializationID = 0;
+ int32 SoulbindID = 0;
+ };
+
struct GarrisonInfo
{
int32 GarrTypeID = 0;
@@ -193,6 +199,7 @@ namespace WorldPackets
std::vector<GarrisonTalent> Talents;
std::vector<GarrisonCollection> Collections;
std::vector<GarrisonEventList> EventLists;
+ std::vector<GarrisonSpecGroup> SpecGroups;
std::vector<bool> CanStartMission;
std::vector<int32> ArchivedMissions;
};
diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp
index 5ae849a0102..ca72da516d3 100644
--- a/src/server/game/Server/Packets/GuildPackets.cpp
+++ b/src/server/game/Server/Packets/GuildPackets.cpp
@@ -118,7 +118,13 @@ void WorldPackets::Guild::DeclineGuildInvites::Read()
void WorldPackets::Guild::GuildInviteByName::Read()
{
uint32 nameLen = _worldPacket.ReadBits(9);
+ if (_worldPacket.ReadBit())
+ Unused910.emplace();
+
Name = _worldPacket.ReadString(nameLen);
+
+ if (Unused910)
+ _worldPacket >> *Unused910;
}
WorldPacket const* WorldPackets::Guild::GuildInvite::Write()
@@ -181,6 +187,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberD
data.WriteBit(rosterMemberData.SorEligible);
data.FlushBits();
+ data << rosterMemberData.DungeonScore;
+
data.WriteString(rosterMemberData.Name);
data.WriteString(rosterMemberData.Note);
data.WriteString(rosterMemberData.OfficerNote);
diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h
index 536e68fed75..6aadb7d4a0f 100644
--- a/src/server/game/Server/Packets/GuildPackets.h
+++ b/src/server/game/Server/Packets/GuildPackets.h
@@ -21,6 +21,7 @@
#include "Packet.h"
#include "ItemPacketsCommon.h"
#include "Guild.h"
+#include "MythicPlusPacketsCommon.h"
#include "ObjectGuid.h"
#include "PacketUtilities.h"
@@ -120,6 +121,7 @@ namespace WorldPackets
bool Authenticated = false;
bool SorEligible = false;
GuildRosterProfessionData Profession[2];
+ MythicPlus::DungeonScoreSummary DungeonScore;
};
class GuildRoster final : public ServerPacket
@@ -203,6 +205,7 @@ namespace WorldPackets
void Read() override;
std::string Name;
+ Optional<int32> Unused910;
};
class GuildInvite final : public ServerPacket
diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp
index 0a2746dc44d..35055ebe414 100644
--- a/src/server/game/Server/Packets/InspectPackets.cpp
+++ b/src/server/game/Server/Packets/InspectPackets.cpp
@@ -131,6 +131,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData c
data << int32(bracket.WeeklyBestRating);
data << int32(bracket.SeasonBestRating);
data << int32(bracket.PvpTierID);
+ data << int32(bracket.WeeklyBestWinPvpTierID);
data.WriteBit(bracket.Disqualified);
data.FlushBits();
diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h
index 78676959094..c472920ea14 100644
--- a/src/server/game/Server/Packets/InspectPackets.h
+++ b/src/server/game/Server/Packets/InspectPackets.h
@@ -104,6 +104,7 @@ namespace WorldPackets
int32 WeeklyBestRating = 0;
int32 SeasonBestRating = 0;
int32 PvpTierID = 0;
+ int32 WeeklyBestWinPvpTierID = 0;
uint8 Bracket = 0;
bool Disqualified = false;
};
diff --git a/src/server/game/Server/Packets/MailPackets.cpp b/src/server/game/Server/Packets/MailPackets.cpp
index b0bb17e64f0..bb8e6ac87d5 100644
--- a/src/server/game/Server/Packets/MailPackets.cpp
+++ b/src/server/game/Server/Packets/MailPackets.cpp
@@ -213,7 +213,6 @@ void WorldPackets::Mail::MailMarkAsRead::Read()
{
_worldPacket >> Mailbox;
_worldPacket >> MailID;
- BiReceipt = _worldPacket.ReadBit();
}
void WorldPackets::Mail::MailDelete::Read()
diff --git a/src/server/game/Server/Packets/MailPackets.h b/src/server/game/Server/Packets/MailPackets.h
index 2218bd8367e..c7cb29bf4c0 100644
--- a/src/server/game/Server/Packets/MailPackets.h
+++ b/src/server/game/Server/Packets/MailPackets.h
@@ -159,7 +159,6 @@ namespace WorldPackets
ObjectGuid Mailbox;
int32 MailID = 0;
- bool BiReceipt = false;
};
class MailDelete final : public ClientPacket
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index 2c44b01bb7c..52460632213 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -469,7 +469,11 @@ void WorldPackets::Movement::CommonMovement::WriteMovementForceWithDirection(Mov
data << uint32(movementForce.TransportID);
data << float(movementForce.Magnitude);
data.WriteBits(movementForce.Type, 2);
+ data.WriteBit(movementForce.Unused910 != 0);
data.FlushBits();
+
+ if (movementForce.Unused910)
+ data << int32(movementForce.Unused910);
}
void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveSpline const& moveSpline)
@@ -693,6 +697,9 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementForce& movementForce)
data >> movementForce.TransportID;
data >> movementForce.Magnitude;
movementForce.Type = data.ReadBits(2);
+ bool has910 = data.ReadBit();
+ if (has910)
+ data >> movementForce.Unused910;
return data;
}
diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp
new file mode 100644
index 00000000000..91206bbb847
--- /dev/null
+++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp
@@ -0,0 +1,124 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "MythicPlusPacketsCommon.h"
+
+namespace WorldPackets
+{
+namespace MythicPlus
+{
+ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreMapSummary const& dungeonScoreMapSummary)
+{
+ data << int32(dungeonScoreMapSummary.ChallengeModeID);
+ data << int32(dungeonScoreMapSummary.MapScore);
+ data << int32(dungeonScoreMapSummary.BestRunLevel);
+ data << int32(dungeonScoreMapSummary.BestRunDurationMS);
+ data.WriteBit(dungeonScoreMapSummary.FinishedSuccess);
+ data.FlushBits();
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreSummary const& dungeonScoreSummary)
+{
+ data << int32(dungeonScoreSummary.CurrentSeasonScore);
+ data << uint32(dungeonScoreSummary.Runs.size());
+ for (DungeonScoreMapSummary const& dungeonScoreMapSummary : dungeonScoreSummary.Runs)
+ data << dungeonScoreMapSummary;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, MythicPlusMember const& mythicPlusMember)
+{
+ data << mythicPlusMember.BnetAccountGUID;
+ data << uint64(mythicPlusMember.GuildClubMemberID);
+ data << mythicPlusMember.GUID;
+ data << mythicPlusMember.GuildGUID;
+ data << uint32(mythicPlusMember.NativeRealmAddress);
+ data << uint32(mythicPlusMember.VirtualRealmAddress);
+ data << int16(mythicPlusMember.ChrSpecializationID);
+ data << int16(mythicPlusMember.RaceID);
+ data << int32(mythicPlusMember.ItemLevel);
+ data << int32(mythicPlusMember.CovenantID);
+ data << int32(mythicPlusMember.SoulbindID);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, MythicPlusRun const& mythicPlusRun)
+{
+ data << int32(mythicPlusRun.MapChallengeModeID);
+ data << uint32(mythicPlusRun.Level);
+ data << int32(mythicPlusRun.DurationMs);
+ data << mythicPlusRun.StartDate;
+ data << mythicPlusRun.CompletionDate;
+ data << int32(mythicPlusRun.Season);
+ data.append(mythicPlusRun.KeystoneAffixIDs.data(), mythicPlusRun.KeystoneAffixIDs.size());
+ data << uint32(mythicPlusRun.Members.size());
+ data << int32(mythicPlusRun.RunScore);
+ for (MythicPlusMember const& member : mythicPlusRun.Members)
+ data << member;
+
+ data.WriteBit(mythicPlusRun.Completed);
+ data.FlushBits();
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreBestRunForAffix const& dungeonScoreBestRunForAffix)
+{
+ data << int32(dungeonScoreBestRunForAffix.KeystoneAffixID);
+ data << int32(dungeonScoreBestRunForAffix.Score);
+ data << dungeonScoreBestRunForAffix.Run;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreMapData const& dungeonScoreMapData)
+{
+ data << int32(dungeonScoreMapData.MapChallengeModeID);
+ data << uint32(dungeonScoreMapData.BestRuns.size());
+ data << int32(dungeonScoreMapData.OverAllScore);
+ for (DungeonScoreBestRunForAffix const& bestRun : dungeonScoreMapData.BestRuns)
+ data << bestRun;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreSeasonData const& dungeonScoreSeasonData)
+{
+ data << int32(dungeonScoreSeasonData.Season);
+ data << uint32(dungeonScoreSeasonData.Maps.size());
+ data << int32(dungeonScoreSeasonData.SeasonScore);
+ for (DungeonScoreMapData const& map : dungeonScoreSeasonData.Maps)
+ data << map;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreData const& dungeonScoreData)
+{
+ data << uint32(dungeonScoreData.Seasons.size());
+ data << int32(dungeonScoreData.TotalRuns);
+ for (DungeonScoreSeasonData const& season : dungeonScoreData.Seasons)
+ data << season;
+
+ return data;
+}
+}
+}
diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.h b/src/server/game/Server/Packets/MythicPlusPacketsCommon.h
new file mode 100644
index 00000000000..dc48360aea7
--- /dev/null
+++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.h
@@ -0,0 +1,106 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MythicPlusPacketsCommon_h__
+#define MythicPlusPacketsCommon_h__
+
+#include "Packet.h"
+#include "ObjectGuid.h"
+#include "PacketUtilities.h"
+
+namespace WorldPackets
+{
+ namespace MythicPlus
+ {
+ struct DungeonScoreMapSummary
+ {
+ int32 ChallengeModeID = 0;
+ int32 MapScore = 0;
+ int32 BestRunLevel = 0;
+ int32 BestRunDurationMS = 0;
+ bool FinishedSuccess = false;
+ };
+
+ struct DungeonScoreSummary
+ {
+ int32 CurrentSeasonScore = 0;
+ std::vector<DungeonScoreMapSummary> Runs;
+ };
+
+ struct MythicPlusMember
+ {
+ ObjectGuid BnetAccountGUID;
+ uint64 GuildClubMemberID = 0;
+ ObjectGuid GUID;
+ ObjectGuid GuildGUID;
+ uint32 NativeRealmAddress = 0;
+ uint32 VirtualRealmAddress = 0;
+ int16 ChrSpecializationID = 0;
+ int16 RaceID = 0;
+ int32 ItemLevel = 0;
+ int32 CovenantID = 0;
+ int32 SoulbindID = 0;
+ };
+
+ struct MythicPlusRun
+ {
+ int32 MapChallengeModeID = 0;
+ bool Completed = false;
+ uint32 Level = 0;
+ int32 DurationMs = 0;
+ Timestamp<> StartDate;
+ Timestamp<> CompletionDate;
+ int32 Season;
+ std::vector<MythicPlusMember> Members;
+ int32 RunScore;
+ std::array<int32, 4> KeystoneAffixIDs;
+ };
+
+ struct DungeonScoreBestRunForAffix
+ {
+ int32 KeystoneAffixID = 0;
+ MythicPlusRun Run;
+ int32 Score = 0;
+ };
+
+ struct DungeonScoreMapData
+ {
+ int32 MapChallengeModeID = 0;
+ std::vector<DungeonScoreBestRunForAffix> BestRuns;
+ int32 OverAllScore = 0;
+
+ };
+
+ struct DungeonScoreSeasonData
+ {
+ int32 Season = 0;
+ std::vector<DungeonScoreMapData> Maps;
+ int32 SeasonScore = 0;
+ };
+
+ struct DungeonScoreData
+ {
+ std::vector<DungeonScoreSeasonData> Seasons;
+ int32 TotalRuns = 0;
+ };
+
+ ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreSummary const& dungeonScoreSummary);
+ ByteBuffer& operator<<(ByteBuffer& data, DungeonScoreData const& dungeonScoreData);
+ }
+}
+
+#endif // MythicPlusPacketsCommon_h__
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index 3bfa84438b3..a925b606cc3 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -203,7 +203,7 @@ namespace WorldPackets
int32 ID = 0;
uint32 Flags = 0;
- TaggedPosition<Position::XY> Pos;
+ TaggedPosition<Position::XYZ> Pos;
int32 Icon = 0;
int32 Importance = 0;
int32 Unknown905 = 0;
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 74a73352086..e4bda90f24c 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -223,6 +223,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberStats c
data.WriteBit(memberStats.PetStats.is_initialized());
data.FlushBits();
+ data << memberStats.DungeonScore;
+
if (memberStats.PetStats.is_initialized())
data << *memberStats.PetStats;
diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h
index 17d42c620a9..0e350e01c70 100644
--- a/src/server/game/Server/Packets/PartyPackets.h
+++ b/src/server/game/Server/Packets/PartyPackets.h
@@ -22,6 +22,7 @@
#include "AuthenticationPackets.h"
#include "ObjectGuid.h"
#include "Group.h"
+#include "MythicPlusPacketsCommon.h"
#include "Optional.h"
namespace WorldPackets
@@ -208,9 +209,11 @@ namespace WorldPackets
uint16 SpecID = 0;
uint16 WmoGroupID = 0;
uint32 WmoDoodadPlacementID = 0;
- int8 PartyType[2];
+ int8 PartyType[2] = { };
CTROptions ChromieTime;
+
+ MythicPlus::DungeonScoreSummary DungeonScore;
};
class PartyMemberFullState final : public ServerPacket
diff --git a/src/server/game/Server/Packets/PetitionPackets.cpp b/src/server/game/Server/Packets/PetitionPackets.cpp
index c60f4822fe5..9f42c3807bb 100644
--- a/src/server/game/Server/Packets/PetitionPackets.cpp
+++ b/src/server/game/Server/Packets/PetitionPackets.cpp
@@ -88,6 +88,7 @@ void WorldPackets::Petition::PetitionBuy::Read()
uint32 titleLen = _worldPacket.ReadBits(7);
_worldPacket >> Unit;
+ _worldPacket >> Unused910;
Title = _worldPacket.ReadString(titleLen);
}
diff --git a/src/server/game/Server/Packets/PetitionPackets.h b/src/server/game/Server/Packets/PetitionPackets.h
index 0967be2a0fc..e5f0a2e80ce 100644
--- a/src/server/game/Server/Packets/PetitionPackets.h
+++ b/src/server/game/Server/Packets/PetitionPackets.h
@@ -101,6 +101,7 @@ namespace WorldPackets
ObjectGuid Unit;
std::string Title;
+ uint32 Unused910 = 0;
};
class PetitionShowSignatures final : public ClientPacket
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 32544e7dab5..9a9f7233376 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -80,6 +80,7 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write()
_worldPacket << int32(Stats.RequiredExpansion);
_worldPacket << int32(Stats.VignetteID);
_worldPacket << int32(Stats.Class);
+ _worldPacket << int32(Stats.CreatureDifficultyID);
_worldPacket << int32(Stats.WidgetSetID);
_worldPacket << int32(Stats.WidgetSetUnitConditionID);
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index d4148eb6b38..693000219b3 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -83,6 +83,7 @@ namespace WorldPackets
uint32 RequiredExpansion = 0;
uint32 VignetteID = 0;
int32 Class = 0;
+ int32 CreatureDifficultyID = 0;
int32 WidgetSetID = 0;
int32 WidgetSetUnitConditionID = 0;
std::array<uint32, 2> Flags;
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 2672ab3ddf3..d15eed8dc0d 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -128,6 +128,7 @@ WorldPacket const* QueryQuestInfoResponse::Write()
_worldPacket << int32(Info.PortraitGiver);
_worldPacket << int32(Info.PortraitGiverMount);
+ _worldPacket << int32(Info.PortraitGiverModelSceneID);
_worldPacket << int32(Info.PortraitTurnIn);
for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i)
@@ -337,6 +338,7 @@ WorldPacket const* QuestGiverOfferRewardMessage::Write()
_worldPacket << int32(QuestPackageID);
_worldPacket << int32(PortraitGiver);
_worldPacket << int32(PortraitGiverMount);
+ _worldPacket << int32(PortraitGiverModelSceneID);
_worldPacket << int32(PortraitTurnIn);
_worldPacket.WriteBits(QuestTitle.size(), 9);
@@ -401,6 +403,7 @@ WorldPacket const* QuestGiverQuestDetails::Write()
_worldPacket << int32(QuestPackageID);
_worldPacket << int32(PortraitGiver);
_worldPacket << int32(PortraitGiverMount);
+ _worldPacket << int32(PortraitGiverModelSceneID);
_worldPacket << int32(PortraitTurnIn);
_worldPacket << uint32(QuestFlags[0]); // Flags
_worldPacket << uint32(QuestFlags[1]); // FlagsEx
@@ -733,6 +736,7 @@ WorldPacket const* DisplayPlayerChoice::Write()
_worldPacket << SenderGUID;
_worldPacket << int32(UiTextureKitID);
_worldPacket << uint32(SoundKitID);
+ _worldPacket << uint8(NumRerolls);
_worldPacket.WriteBits(Question.length(), 8);
_worldPacket.WriteBit(CloseChoiceFrame);
_worldPacket.WriteBit(HideWarboardHeader);
@@ -750,6 +754,7 @@ void ChoiceResponse::Read()
{
_worldPacket >> ChoiceID;
_worldPacket >> ResponseID;
+ IsReroll = _worldPacket.ReadBit();
}
}
}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 5d0fd7d553c..1b049cc0703 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -155,6 +155,7 @@ namespace WorldPackets
int32 RewardNumSkillUps = 0; // reward skill points
int32 PortraitGiver = 0; // quest giver entry ?
int32 PortraitGiverMount = 0;
+ int32 PortraitGiverModelSceneID = 0;
int32 PortraitTurnIn = 0; // quest turn in entry ?
std::string PortraitGiverText;
std::string PortraitGiverName;
@@ -299,6 +300,7 @@ namespace WorldPackets
int32 PortraitTurnIn = 0;
int32 PortraitGiver = 0;
int32 PortraitGiverMount = 0;
+ int32 PortraitGiverModelSceneID = 0;
std::string QuestTitle;
std::string RewardText;
std::string PortraitGiverText;
@@ -390,6 +392,7 @@ namespace WorldPackets
int32 PortraitTurnIn = 0;
int32 PortraitGiver = 0;
int32 PortraitGiverMount = 0;
+ int32 PortraitGiverModelSceneID = 0;
int32 QuestStartItemID = 0;
int32 QuestSessionBonus = 0;
std::string PortraitGiverText;
@@ -714,6 +717,7 @@ namespace WorldPackets
int32 ChoiceID = 0;
int32 UiTextureKitID = 0;
uint32 SoundKitID = 0;
+ uint8 NumRerolls = 0;
std::string Question;
std::vector<PlayerChoiceResponse> Responses;
bool CloseChoiceFrame = false;
@@ -730,6 +734,7 @@ namespace WorldPackets
int32 ChoiceID = 0;
int32 ResponseID = 0;
+ bool IsReroll = false;
};
}
}
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index d31647bb122..52b5056310d 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -209,7 +209,6 @@ ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Spells::SpellOptionalReag
{
data >> optionalReagent.ItemID;
data >> optionalReagent.Slot;
- data >> optionalReagent.Count;
return data;
}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index 97775684a08..22b23c388da 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -244,7 +244,6 @@ namespace WorldPackets
{
int32 ItemID = 0;
int32 Slot = 0;
- int32 Count = 0;
};
struct SpellExtraCurrencyCost
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index ca8be7045e7..b72a40c7da8 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -150,6 +150,15 @@ WorldPacket const* FeatureSystemStatus::Write()
return &_worldPacket;
}
+WorldPacket const* FeatureSystemStatus2::Write()
+{
+ _worldPacket.WriteBit(TextToSpeechFeatureEnabled);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+
WorldPacket const* FeatureSystemStatusGlueScreen::Write()
{
_worldPacket.WriteBit(BpayStoreEnabled);
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index 34d9aabfda0..dec27f1017c 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -98,7 +98,7 @@ namespace WorldPackets
uint32 DaysInCycle = 0;
};
- FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 48) { }
+ FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 200) { }
WorldPacket const* Write() override;
@@ -152,10 +152,20 @@ namespace WorldPackets
RafSystemFeatureInfo RAFSystem;
};
+ class FeatureSystemStatus2 final : ServerPacket
+ {
+ public:
+ FeatureSystemStatus2() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS2, 1) { }
+
+ WorldPacket const* Write() override;
+
+ bool TextToSpeechFeatureEnabled = false;
+ };
+
class FeatureSystemStatusGlueScreen final : public ServerPacket
{
public:
- FeatureSystemStatusGlueScreen() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, 1) { }
+ FeatureSystemStatusGlueScreen() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, 64) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp
index c453750f3fd..dd595eac2d7 100644
--- a/src/server/game/Server/Packets/TicketPackets.cpp
+++ b/src/server/game/Server/Packets/TicketPackets.cpp
@@ -250,6 +250,17 @@ ByteBuffer& operator>>(ByteBuffer& data, Optional<WorldPackets::Ticket::SupportT
return data;
}
+ByteBuffer& operator>>(ByteBuffer& data, Optional<WorldPackets::Ticket::SupportTicketSubmitComplaint::SupportTicketUnused910>& unused)
+{
+ unused = boost::in_place();
+
+ uint32 field_0Length = data.ReadBits(7);
+ data >> unused->field_104;
+ unused->field_0 = data.ReadString(field_0Length);
+
+ return data;
+}
+
void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read()
{
_worldPacket >> Header;
@@ -266,6 +277,7 @@ void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read()
bool hasLFGListApplicant = _worldPacket.ReadBit();
bool hasClubMessage = _worldPacket.ReadBit();
bool hasClubFinderResult = _worldPacket.ReadBit();
+ bool hasUnk910 = _worldPacket.ReadBit();
_worldPacket.ResetBitPos();
@@ -300,6 +312,9 @@ void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read()
if (hasClubFinderResult)
_worldPacket >> ClubFinderResult;
+
+ if (hasUnk910)
+ _worldPacket >> Unused910;
}
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Ticket::Complaint::ComplaintOffender& complaintOffender)
diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h
index 5f281df684a..9982d60da6c 100644
--- a/src/server/game/Server/Packets/TicketPackets.h
+++ b/src/server/game/Server/Packets/TicketPackets.h
@@ -89,7 +89,7 @@ namespace WorldPackets
void Read() override;
- int32 CaseID;
+ int32 CaseID = 0;
};
class SubmitUserFeedback final : public ClientPacket
@@ -156,8 +156,8 @@ namespace WorldPackets
struct SupportTicketCalendarEventInfo
{
- uint64 EventID;
- uint64 InviteID;
+ uint64 EventID = 0;
+ uint64 InviteID = 0;
std::string EventTitle;
};
@@ -200,12 +200,18 @@ namespace WorldPackets
struct SupportTicketClubFinderResult
{
- uint64 ClubFinderPostingID;
- uint64 ClubID;
+ uint64 ClubFinderPostingID = 0;
+ uint64 ClubID = 0;
ObjectGuid ClubFinderGUID;
std::string ClubName;
};
+ struct SupportTicketUnused910
+ {
+ std::string field_0;
+ ObjectGuid field_104;
+ };
+
SupportTicketSubmitComplaint(WorldPacket&& packet) : ClientPacket(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, std::move(packet)) { }
void Read() override;
@@ -224,6 +230,7 @@ namespace WorldPackets
Optional<SupportTicketLFGListApplicant> LFGListApplicant;
Optional<SupportTicketCommunityMessage> CommunityMessage;
Optional<SupportTicketClubFinderResult> ClubFinderResult;
+ Optional<SupportTicketUnused910> Unused910;
};
class Complaint final : public ClientPacket
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 0d726b221b2..21a7f023913 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -627,7 +627,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MOVE_UPDATE_FALL_SPEED, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_HANDLER(CMSG_MOVE_WATER_WALK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
DEFINE_HANDLER(CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_MYTHIC_PLUS_WEEKLY_REWARD_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_NEUTRAL_PLAYER_SELECT_FACTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_NEXT_CINEMATIC_CAMERA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleNextCinematicCamera);
DEFINE_HANDLER(CMSG_OBJECT_UPDATE_FAILED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleObjectUpdateFailedOpcode);
@@ -883,7 +882,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_TWITTER_CHECK_STATUS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TWITTER_CONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TWITTER_DISCONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_TWITTER_POST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UI_MAP_QUEST_LINES_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode);
DEFINE_HANDLER(CMSG_UNDELETE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteOpcode);
@@ -908,6 +906,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_VAS_GET_QUEUE_MINUTES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VAS_GET_SERVICE_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VIOLENCE_LEVEL, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleViolenceLevel);
+ DEFINE_HANDLER(CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VOICE_CHAT_JOIN_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VOICE_CHAT_LOGIN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_VOID_STORAGE_TRANSFER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleVoidStorageTransfer);
@@ -1042,8 +1041,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_VAS_GUILD_FOLLOW_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_VAS_GUILD_MASTER_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PETS_HEALED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_CAGE_DATE_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_DELETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1054,7 +1051,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_SET_MAX_PETS, 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_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1223,6 +1219,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_PLAYER_CHOICE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_PROMOTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_QUEST_POPUP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_TOAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_WORLD_TEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1254,6 +1251,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FAILED_QUEST_TURN_IN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS2, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEIGN_DEATH_RESISTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_ESCAPED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_NOT_HOOKED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1280,6 +1278,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_FOLLOWER_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_SPEC_GROUPS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1289,6 +1288,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT,STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CLEAR_COLLECTION, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CLEAR_EVENT_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CLEAR_SPEC_GROUPS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COLLECTION_REMOVE_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COLLECTION_UPDATE_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1641,10 +1641,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTI_FLOOR_NEW_FLOOR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_ALL_MAP_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_CURRENT_AFFIXES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_NEW_SEASON_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_SEASON_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_WEEKLY_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1724,6 +1722,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SAVE_GUILD_EMBLEM, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SHOW_UI_EVENT_TOAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SKINNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_TABARD_VENDOR_ACTIVATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1756,6 +1755,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_CREATURE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GAME_OBJECT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GARRISON_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_ITEM_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_NPC_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1765,6 +1765,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_CONFIRM_ACCEPT, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1779,6 +1780,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS_MULTIPLE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_LOG_FULL, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_NON_LOG_UPDATE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_UPDATE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1790,7 +1792,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL, 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_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEUE_SUMMARY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -2021,6 +2022,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VENDOR_INVENTORY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VIGNETTE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOICE_CHANNEL_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOICE_LOGIN_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_ITEM_SWAP_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_CONTENTS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 9e7250813df..74fccb661ae 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -44,31 +44,31 @@ enum OpcodeMisc : uint16
enum OpcodeClient : uint16
{
- CMSG_ABANDON_NPE_RESPONSE = 0x33F1,
+ CMSG_ABANDON_NPE_RESPONSE = 0x33EC,
CMSG_ACCEPT_GUILD_INVITE = 0x35FC,
CMSG_ACCEPT_TRADE = 0x315A,
CMSG_ACCEPT_WARGAME_INVITE = 0x35E0,
- CMSG_ACTIVATE_SOULBIND = 0x33E1,
+ CMSG_ACTIVATE_SOULBIND = 0x33DB,
CMSG_ACTIVATE_TAXI = 0x34B1,
CMSG_ADDON_LIST = 0x35D8,
- CMSG_ADD_BATTLENET_FRIEND = 0x365A,
- CMSG_ADD_FRIEND = 0x36D0,
- CMSG_ADD_IGNORE = 0x36D4,
- CMSG_ADD_TOY = 0x32A7,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3207,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E4,
- CMSG_ADVENTURE_MAP_START_QUEST = 0x335D,
+ CMSG_ADD_BATTLENET_FRIEND = 0x3659,
+ CMSG_ADD_FRIEND = 0x36CF,
+ CMSG_ADD_IGNORE = 0x36D3,
+ CMSG_ADD_TOY = 0x32A6,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3206,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DE,
+ CMSG_ADVENTURE_MAP_START_QUEST = 0x335B,
CMSG_ALTER_APPEARANCE = 0x3503,
CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B6,
CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B7,
- CMSG_AREA_TRIGGER = 0x31DA,
- CMSG_ARTIFACT_ADD_POWER = 0x31AC,
- CMSG_ARTIFACT_SET_APPEARANCE = 0x31AE,
- CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3210,
- CMSG_ATTACK_STOP = 0x325F,
- CMSG_ATTACK_SWING = 0x325E,
- CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E8,
- CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E9,
+ CMSG_AREA_TRIGGER = 0x31D9,
+ CMSG_ARTIFACT_ADD_POWER = 0x31AB,
+ CMSG_ARTIFACT_SET_APPEARANCE = 0x31AD,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320F,
+ CMSG_ATTACK_STOP = 0x325E,
+ CMSG_ATTACK_SWING = 0x325D,
+ CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E6,
+ CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E7,
CMSG_AUCTION_BROWSE_QUERY = 0x34D6,
CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34DE,
CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DD,
@@ -84,7 +84,7 @@ enum OpcodeClient : uint16
CMSG_AUCTION_REPLICATE_ITEMS = 0x34D4,
CMSG_AUCTION_SELL_COMMODITY = 0x34DF,
CMSG_AUCTION_SELL_ITEM = 0x34D2,
- CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3735,
+ CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3734,
CMSG_AUTH_CONTINUED_SESSION = 0x3766,
CMSG_AUTH_SESSION = 0x3765,
CMSG_AUTOBANK_ITEM = 0x3997,
@@ -95,31 +95,31 @@ enum OpcodeClient : uint16
CMSG_AUTO_EQUIP_ITEM_SLOT = 0x399F,
CMSG_AUTO_STORE_BAG_ITEM = 0x399B,
CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x34C6,
- CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3386,
- CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3368,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3388,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3387,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3383,
+ CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3366,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3385,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3384,
CMSG_BANKER_ACTIVATE = 0x34B9,
CMSG_BATTLEFIELD_LEAVE = 0x3173,
CMSG_BATTLEFIELD_LIST = 0x317F,
CMSG_BATTLEFIELD_PORT = 0x3537,
- CMSG_BATTLEMASTER_HELLO = 0x32C1,
+ CMSG_BATTLEMASTER_HELLO = 0x32C0,
CMSG_BATTLEMASTER_JOIN = 0x3530,
CMSG_BATTLEMASTER_JOIN_ARENA = 0x3531,
CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3535,
CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3532,
- CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D3,
- CMSG_BATTLENET_REQUEST = 0x36F7,
- CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CD,
- CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3714,
- CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CC,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C3,
- CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BB,
- CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BC,
- CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370E,
- CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x370A,
- CMSG_BATTLE_PAY_START_PURCHASE = 0x36CB,
- CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F4,
+ CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D2,
+ CMSG_BATTLENET_REQUEST = 0x36F5,
+ CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CC,
+ CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3713,
+ CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CB,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C2,
+ CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BA,
+ CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BB,
+ CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370C,
+ CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3708,
+ CMSG_BATTLE_PAY_START_PURCHASE = 0x36CA,
+ CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F2,
CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C,
CMSG_BATTLE_PET_DELETE_PET = 0x3624,
CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3625,
@@ -127,65 +127,65 @@ enum OpcodeClient : uint16
CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3623,
CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3622,
CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362C,
- CMSG_BATTLE_PET_SET_FLAGS = 0x3630,
+ CMSG_BATTLE_PET_SET_FLAGS = 0x362F,
CMSG_BATTLE_PET_SUMMON = 0x3628,
- CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E4,
- CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E3,
+ CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E3,
+ CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E2,
CMSG_BEGIN_TRADE = 0x3157,
CMSG_BINDER_ACTIVATE = 0x34B8,
CMSG_BLACK_MARKET_BID_ON_ITEM = 0x353F,
CMSG_BLACK_MARKET_OPEN = 0x353D,
CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353E,
- CMSG_BONUS_ROLL = 0x3389,
- CMSG_BUG_REPORT = 0x3686,
+ CMSG_BONUS_ROLL = 0x3386,
+ CMSG_BUG_REPORT = 0x3684,
CMSG_BUSY_TRADE = 0x3158,
CMSG_BUY_BACK_ITEM = 0x34AA,
CMSG_BUY_BANK_SLOT = 0x34BA,
CMSG_BUY_ITEM = 0x34A9,
CMSG_BUY_REAGENT_BANK = 0x34BB,
- CMSG_CAGE_BATTLE_PET = 0x31F6,
- CMSG_CALENDAR_ADD_EVENT = 0x367D,
- CMSG_CALENDAR_COMMUNITY_INVITE = 0x3671,
- CMSG_CALENDAR_COMPLAIN = 0x3679,
- CMSG_CALENDAR_COPY_EVENT = 0x3678,
- CMSG_CALENDAR_EVENT_SIGN_UP = 0x367B,
- CMSG_CALENDAR_GET = 0x366F,
- CMSG_CALENDAR_GET_EVENT = 0x3670,
- CMSG_CALENDAR_GET_NUM_PENDING = 0x367A,
- CMSG_CALENDAR_INVITE = 0x3672,
- CMSG_CALENDAR_MODERATOR_STATUS = 0x3676,
- CMSG_CALENDAR_REMOVE_EVENT = 0x3677,
- CMSG_CALENDAR_REMOVE_INVITE = 0x3673,
- CMSG_CALENDAR_RSVP = 0x3674,
- CMSG_CALENDAR_STATUS = 0x3675,
- CMSG_CALENDAR_UPDATE_EVENT = 0x367E,
- CMSG_CANCEL_AURA = 0x31B0,
+ CMSG_CAGE_BATTLE_PET = 0x31F5,
+ CMSG_CALENDAR_ADD_EVENT = 0x367C,
+ CMSG_CALENDAR_COMMUNITY_INVITE = 0x3670,
+ CMSG_CALENDAR_COMPLAIN = 0x3678,
+ CMSG_CALENDAR_COPY_EVENT = 0x3677,
+ CMSG_CALENDAR_EVENT_SIGN_UP = 0x367A,
+ CMSG_CALENDAR_GET = 0x366E,
+ CMSG_CALENDAR_GET_EVENT = 0x366F,
+ CMSG_CALENDAR_GET_NUM_PENDING = 0x3679,
+ CMSG_CALENDAR_INVITE = 0x3671,
+ CMSG_CALENDAR_MODERATOR_STATUS = 0x3675,
+ CMSG_CALENDAR_REMOVE_EVENT = 0x3676,
+ CMSG_CALENDAR_REMOVE_INVITE = 0x3672,
+ CMSG_CALENDAR_RSVP = 0x3673,
+ CMSG_CALENDAR_STATUS = 0x3674,
+ CMSG_CALENDAR_UPDATE_EVENT = 0x367D,
+ CMSG_CANCEL_AURA = 0x31AF,
CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F5,
- CMSG_CANCEL_CAST = 0x32AD,
- CMSG_CANCEL_CHANNELLING = 0x3277,
- CMSG_CANCEL_GROWTH_AURA = 0x327C,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3218,
- CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AF,
- CMSG_CANCEL_MOUNT_AURA = 0x328F,
+ CMSG_CANCEL_CAST = 0x32AC,
+ CMSG_CANCEL_CHANNELLING = 0x3276,
+ CMSG_CANCEL_GROWTH_AURA = 0x327B,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3217,
+ CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AE,
+ CMSG_CANCEL_MOUNT_AURA = 0x328E,
CMSG_CANCEL_QUEUED_SPELL = 0x3180,
CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500,
CMSG_CANCEL_TRADE = 0x315C,
- CMSG_CAN_DUEL = 0x3662,
- CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3709,
- CMSG_CAST_SPELL = 0x32AA,
+ CMSG_CAN_DUEL = 0x3661,
+ CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3707,
+ CMSG_CAST_SPELL = 0x32A9,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x3090,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x3341,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3342,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3322,
- CMSG_CHANGE_REALM_TICKET = 0x36FC,
- CMSG_CHANGE_SUB_GROUP = 0x364C,
- CMSG_CHARACTER_CHECK_UPGRADE = 0x36C6,
- CMSG_CHARACTER_RENAME_REQUEST = 0x36C1,
- CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C4,
- CMSG_CHARACTER_UPGRADE_START = 0x36C5,
- CMSG_CHAR_CUSTOMIZE = 0x3690,
- CMSG_CHAR_DELETE = 0x369E,
- CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3696,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x3340,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3341,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3321,
+ CMSG_CHANGE_REALM_TICKET = 0x36FA,
+ CMSG_CHANGE_SUB_GROUP = 0x364B,
+ CMSG_CHARACTER_CHECK_UPGRADE = 0x36C5,
+ CMSG_CHARACTER_RENAME_REQUEST = 0x36C0,
+ CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C3,
+ CMSG_CHARACTER_UPGRADE_START = 0x36C4,
+ CMSG_CHAR_CUSTOMIZE = 0x368E,
+ CMSG_CHAR_DELETE = 0x369D,
+ CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3694,
CMSG_CHAT_ADDON_MESSAGE = 0x37EE,
CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF,
CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3,
@@ -222,29 +222,29 @@ enum OpcodeClient : uint16
CMSG_CHAT_REPORT_FILTERED = 0x37CC,
CMSG_CHAT_REPORT_IGNORED = 0x37CB,
CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE,
- CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3645,
- CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3250,
- CMSG_CHOICE_RESPONSE = 0x32B1,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33E0,
- CMSG_CLAIM_WEEKLY_REWARD = 0x33BB,
+ CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3644,
+ CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x324F,
+ CMSG_CHOICE_RESPONSE = 0x32B0,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33DA,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x33B7,
CMSG_CLEAR_NEW_APPEARANCE = 0x312F,
- CMSG_CLEAR_RAID_MARKER = 0x31A8,
+ CMSG_CLEAR_RAID_MARKER = 0x31A7,
CMSG_CLEAR_TRADE_ITEM = 0x315E,
CMSG_CLIENT_PORT_GRAVEYARD = 0x3539,
CMSG_CLOSE_INTERACTION = 0x3499,
- CMSG_CLOSE_QUEST_CHOICE = 0x32B2,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E8,
- CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371F,
- CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371D,
- CMSG_CLUB_FINDER_POST = 0x371A,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x3721,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x371B,
- CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x371C,
- CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x3720,
- CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x3722,
- CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371E,
- CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F9,
- CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3633,
+ CMSG_CLOSE_QUEST_CHOICE = 0x32B1,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E2,
+ CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371E,
+ CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371C,
+ CMSG_CLUB_FINDER_POST = 0x3719,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x3720,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x371A,
+ CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x371B,
+ CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371F,
+ CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x3721,
+ CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371D,
+ CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F7,
+ CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3632,
CMSG_COMMENTATOR_ENABLE = 0x35F0,
CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4,
CMSG_COMMENTATOR_EXIT_INSTANCE = 0x35F5,
@@ -252,36 +252,36 @@ enum OpcodeClient : uint16
CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3,
CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2,
CMSG_COMMENTATOR_START_WARGAME = 0x35EF,
- CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E6,
- CMSG_COMMERCE_TOKEN_GET_LOG = 0x36F0,
- CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E7,
- CMSG_COMPLAINT = 0x366C,
+ CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E4,
+ CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EE,
+ CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E5,
+ CMSG_COMPLAINT = 0x366B,
CMSG_COMPLETE_CINEMATIC = 0x3557,
CMSG_COMPLETE_MOVIE = 0x34EB,
- CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AD,
- CMSG_CONFIRM_RESPEC_WIPE = 0x3212,
+ CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AC,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x3211,
CMSG_CONNECT_TO_FAILED = 0x35D4,
- CMSG_CONSUMABLE_TOKEN_BUY = 0x36EB,
- CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36EC,
- CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36EA,
- CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36EE,
- CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EF,
+ CMSG_CONSUMABLE_TOKEN_BUY = 0x36E9,
+ CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36EA,
+ CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E8,
+ CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36EC,
+ CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36ED,
CMSG_CONTRIBUTION_CONTRIBUTE = 0x3569,
CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356A,
CMSG_CONVERSATION_LINE_STARTED = 0x3558,
- CMSG_CONVERT_RAID = 0x364E,
+ CMSG_CONVERT_RAID = 0x364D,
CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x357D,
- CMSG_CREATE_CHARACTER = 0x3644,
- CMSG_CREATE_SHIPMENT = 0x330E,
+ CMSG_CREATE_CHARACTER = 0x3643,
+ CMSG_CREATE_SHIPMENT = 0x330D,
CMSG_DB_QUERY_BULK = 0x35E4,
CMSG_DECLINE_GUILD_INVITES = 0x352D,
CMSG_DECLINE_PETITION = 0x3546,
CMSG_DELETE_EQUIPMENT_SET = 0x3519,
- CMSG_DEL_FRIEND = 0x36D1,
- CMSG_DEL_IGNORE = 0x36D5,
+ CMSG_DEL_FRIEND = 0x36D0,
+ CMSG_DEL_IGNORE = 0x36D4,
CMSG_DEPOSIT_GUILD_BANK_ITEM = 0x34BD,
- CMSG_DEPOSIT_REAGENT_BANK = 0x334A,
- CMSG_DESTROY_ITEM = 0x32A1,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x3349,
+ CMSG_DESTROY_ITEM = 0x32A0,
CMSG_DF_BOOT_PLAYER_VOTE = 0x3615,
CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3607,
CMSG_DF_GET_JOIN_STATUS = 0x3613,
@@ -294,66 +294,66 @@ enum OpcodeClient : uint16
CMSG_DF_TELEPORT = 0x3616,
CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3E,
CMSG_DISMISS_CRITTER = 0x3507,
- CMSG_DO_COUNTDOWN = 0x3719,
- CMSG_DO_MASTER_LOOT_ROLL = 0x3217,
- CMSG_DO_READY_CHECK = 0x3634,
+ CMSG_DO_COUNTDOWN = 0x3718,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x3216,
+ CMSG_DO_READY_CHECK = 0x3633,
CMSG_DUEL_RESPONSE = 0x34F0,
- CMSG_EJECT_PASSENGER = 0x3245,
+ CMSG_EJECT_PASSENGER = 0x3244,
CMSG_EMOTE = 0x3553,
CMSG_ENABLE_NAGLE = 0x376B,
CMSG_ENABLE_TAXI_NODE = 0x34AF,
- CMSG_ENGINE_SURVEY = 0x36E4,
+ CMSG_ENGINE_SURVEY = 0x36E2,
CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3767,
CMSG_ENUM_CHARACTERS = 0x35E8,
- CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DE,
+ CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DC,
CMSG_FAR_SIGHT = 0x34F6,
- CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B4,
- CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B3,
+ CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B3,
+ CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B2,
CMSG_GAME_OBJ_REPORT_USE = 0x34FD,
CMSG_GAME_OBJ_USE = 0x34FC,
- CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3309,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32EF,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32DC,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x333D,
- CMSG_GARRISON_COMPLETE_MISSION = 0x332F,
- CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x330A,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x32F2,
- CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3301,
- CMSG_GARRISON_GET_MAP_DATA = 0x3308,
- CMSG_GARRISON_GET_MISSION_REWARD = 0x3361,
- CMSG_GARRISON_LEARN_TALENT = 0x32FD,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3331,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x32D8,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32F4,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x3326,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32F0,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x32F1,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32D7,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x330C,
- CMSG_GARRISON_RESEARCH_TALENT = 0x32F5,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32D9,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32ED,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32E5,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32F3,
- CMSG_GARRISON_SOCKET_TALENT = 0x33F4,
- CMSG_GARRISON_START_MISSION = 0x332E,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x32DD,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3308,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32EE,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32DB,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x333C,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x332E,
+ CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3309,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x32F1,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3300,
+ CMSG_GARRISON_GET_MAP_DATA = 0x3307,
+ CMSG_GARRISON_GET_MISSION_REWARD = 0x335F,
+ CMSG_GARRISON_LEARN_TALENT = 0x32FC,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3330,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x32D7,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32F3,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x3325,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32EF,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x32F0,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32D6,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x330B,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x32F4,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32D8,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32EC,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32E4,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32F2,
+ CMSG_GARRISON_SOCKET_TALENT = 0x33EF,
+ CMSG_GARRISON_START_MISSION = 0x332D,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x32DC,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7,
- CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B6,
- CMSG_GET_GARRISON_INFO = 0x32D2,
+ CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B5,
+ CMSG_GET_GARRISON_INFO = 0x32D1,
CMSG_GET_ITEM_PURCHASE_DATA = 0x3541,
- CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x330D,
- CMSG_GET_MIRROR_IMAGE_DATA = 0x32A5,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x330C,
+ CMSG_GET_MIRROR_IMAGE_DATA = 0x32A4,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE,
- CMSG_GET_RAF_ACCOUNT_INFO = 0x3723,
- CMSG_GET_REMAINING_GAME_TIME = 0x36ED,
- CMSG_GET_TROPHY_LIST = 0x331F,
- CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E0,
- CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36F2,
- CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36F3,
- CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3694,
- CMSG_GM_TICKET_GET_CASE_STATUS = 0x3693,
- CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3692,
+ CMSG_GET_RAF_ACCOUNT_INFO = 0x3722,
+ CMSG_GET_REMAINING_GAME_TIME = 0x36EB,
+ CMSG_GET_TROPHY_LIST = 0x331E,
+ CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DE,
+ CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36F0,
+ CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36F1,
+ CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3692,
+ CMSG_GM_TICKET_GET_CASE_STATUS = 0x3691,
+ CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3690,
CMSG_GOSSIP_REFRESH_OPTIONS = 0x357C,
CMSG_GOSSIP_SELECT_OPTION = 0x349A,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308E,
@@ -393,41 +393,41 @@ enum OpcodeClient : uint16
CMSG_GUILD_REPLACE_GUILD_MASTER = 0x3089,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x3070,
CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x3071,
- CMSG_GUILD_SET_GUILD_MASTER = 0x36C8,
+ CMSG_GUILD_SET_GUILD_MASTER = 0x36C7,
CMSG_GUILD_SET_MEMBER_NOTE = 0x3073,
CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3068,
CMSG_GUILD_SHIFT_RANK = 0x3067,
CMSG_GUILD_UPDATE_INFO_TEXT = 0x3076,
CMSG_GUILD_UPDATE_MOTD_TEXT = 0x3075,
CMSG_HEARTH_AND_RESURRECT = 0x3515,
- CMSG_HIDE_QUEST_CHOICE = 0x32B3,
+ CMSG_HIDE_QUEST_CHOICE = 0x32B2,
CMSG_HOTFIX_REQUEST = 0x35E5,
CMSG_IGNORE_TRADE = 0x3159,
CMSG_INITIATE_ROLE_POLL = 0x35DA,
CMSG_INITIATE_TRADE = 0x3156,
CMSG_INSPECT = 0x353B,
CMSG_INSTANCE_LOCK_RESPONSE = 0x351A,
- CMSG_ISLAND_QUEUE = 0x33B7,
+ CMSG_ISLAND_QUEUE = 0x33B3,
CMSG_ITEM_PURCHASE_REFUND = 0x3542,
- CMSG_ITEM_TEXT_QUERY = 0x333E,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0x31E1,
+ CMSG_ITEM_TEXT_QUERY = 0x333D,
+ CMSG_JOIN_PET_BATTLE_QUEUE = 0x31E0,
CMSG_JOIN_RATED_BATTLEGROUND = 0x3179,
- CMSG_KEEP_ALIVE = 0x367F,
- CMSG_KEYBOUND_OVERRIDE = 0x322A,
+ CMSG_KEEP_ALIVE = 0x367E,
+ CMSG_KEYBOUND_OVERRIDE = 0x3229,
CMSG_LEARN_PVP_TALENTS = 0x3568,
CMSG_LEARN_TALENTS = 0x3566,
- CMSG_LEAVE_GROUP = 0x3649,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E2,
+ CMSG_LEAVE_GROUP = 0x3648,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E1,
CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360C,
CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360D,
CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360E,
CMSG_LFG_LIST_GET_STATUS = 0x360A,
CMSG_LFG_LIST_INVITE_APPLICANT = 0x360F,
CMSG_LFG_LIST_INVITE_RESPONSE = 0x3610,
- CMSG_LFG_LIST_JOIN = 0x3384,
+ CMSG_LFG_LIST_JOIN = 0x3381,
CMSG_LFG_LIST_LEAVE = 0x3609,
CMSG_LFG_LIST_SEARCH = 0x360B,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x3385,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x3382,
CMSG_LF_GUILD_ADD_RECRUIT = 0x361B,
CMSG_LF_GUILD_BROWSE = 0x361D,
CMSG_LF_GUILD_DECLINE_RECRUIT = 0x3079,
@@ -437,41 +437,41 @@ enum OpcodeClient : uint16
CMSG_LF_GUILD_REMOVE_RECRUIT = 0x307B,
CMSG_LF_GUILD_SET_GUILD_POST = 0x361C,
CMSG_LIST_INVENTORY = 0x34A7,
- CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B9,
- CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B8,
- CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B7,
- CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36BA,
+ CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B8,
+ CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B7,
+ CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B6,
+ CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B9,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
- CMSG_LOAD_SELECTED_TROPHY = 0x3320,
+ CMSG_LOAD_SELECTED_TROPHY = 0x331F,
CMSG_LOGOUT_CANCEL = 0x34E6,
CMSG_LOGOUT_INSTANT = 0x34E7,
CMSG_LOGOUT_REQUEST = 0x34E4,
CMSG_LOG_DISCONNECT = 0x3769,
CMSG_LOG_STREAMING_ERROR = 0x376D,
- CMSG_LOOT_ITEM = 0x3215,
- CMSG_LOOT_MONEY = 0x3214,
- CMSG_LOOT_RELEASE = 0x3219,
- CMSG_LOOT_ROLL = 0x321A,
- CMSG_LOOT_UNIT = 0x3213,
- CMSG_LOW_LEVEL_RAID1 = 0x36A2,
+ CMSG_LOOT_ITEM = 0x3214,
+ CMSG_LOOT_MONEY = 0x3213,
+ CMSG_LOOT_RELEASE = 0x3218,
+ CMSG_LOOT_ROLL = 0x3219,
+ CMSG_LOOT_UNIT = 0x3212,
+ CMSG_LOW_LEVEL_RAID1 = 0x36A1,
CMSG_LOW_LEVEL_RAID2 = 0x3521,
CMSG_MAIL_CREATE_TEXT_ITEM = 0x354D,
- CMSG_MAIL_DELETE = 0x322C,
+ CMSG_MAIL_DELETE = 0x322B,
CMSG_MAIL_GET_LIST = 0x3548,
CMSG_MAIL_MARK_AS_READ = 0x354C,
- CMSG_MAIL_RETURN_TO_SENDER = 0x3655,
+ CMSG_MAIL_RETURN_TO_SENDER = 0x3654,
CMSG_MAIL_TAKE_ITEM = 0x354A,
CMSG_MAIL_TAKE_MONEY = 0x3549,
- CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322E,
- CMSG_MASTER_LOOT_ITEM = 0x3216,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x322D,
+ CMSG_MASTER_LOOT_ITEM = 0x3215,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C7,
CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x34C4,
CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C2,
- CMSG_MINIMAP_PING = 0x364B,
+ CMSG_MINIMAP_PING = 0x364A,
CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318B,
CMSG_MOUNT_CLEAR_FANFARE = 0x312D,
- CMSG_MOUNT_SET_FAVORITE = 0x3632,
- CMSG_MOUNT_SPECIAL_ANIM = 0x3290,
+ CMSG_MOUNT_SET_FAVORITE = 0x3631,
+ CMSG_MOUNT_SPECIAL_ANIM = 0x328F,
CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A14,
CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2E,
CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A33,
@@ -541,42 +541,41 @@ enum OpcodeClient : uint16
CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A19,
CMSG_MOVE_WATER_WALK_ACK = 0x3A1C,
CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x308F,
- CMSG_MYTHIC_PLUS_WEEKLY_REWARD_REQUEST = 0x3683,
- CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D7,
+ CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D6,
CMSG_NEXT_CINEMATIC_CAMERA = 0x3556,
CMSG_OBJECT_UPDATE_FAILED = 0x3181,
CMSG_OBJECT_UPDATE_RESCUED = 0x3182,
- CMSG_OFFER_PETITION = 0x33DF,
+ CMSG_OFFER_PETITION = 0x33D9,
CMSG_OPENING_CINEMATIC = 0x3555,
- CMSG_OPEN_ITEM = 0x333F,
- CMSG_OPEN_MISSION_NPC = 0x3303,
- CMSG_OPEN_SHIPMENT_NPC = 0x330B,
- CMSG_OPEN_TRADESKILL_NPC = 0x3316,
+ CMSG_OPEN_ITEM = 0x333E,
+ CMSG_OPEN_MISSION_NPC = 0x3302,
+ CMSG_OPEN_SHIPMENT_NPC = 0x330A,
+ CMSG_OPEN_TRADESKILL_NPC = 0x3315,
CMSG_OPT_OUT_OF_LOOT = 0x3504,
CMSG_OVERRIDE_SCREEN_FLASH = 0x352E,
CMSG_PARTY_INVITE = 0x3602,
CMSG_PARTY_INVITE_RESPONSE = 0x3603,
- CMSG_PARTY_UNINVITE = 0x3647,
- CMSG_PERFORM_ITEM_INTERACTION = 0x3236,
+ CMSG_PARTY_UNINVITE = 0x3646,
+ CMSG_PERFORM_ITEM_INTERACTION = 0x3235,
CMSG_PETITION_BUY = 0x34CF,
- CMSG_PETITION_RENAME_GUILD = 0x36C9,
+ CMSG_PETITION_RENAME_GUILD = 0x36C8,
CMSG_PETITION_SHOW_LIST = 0x34CE,
CMSG_PETITION_SHOW_SIGNATURES = 0x34D0,
CMSG_PET_ABANDON = 0x3493,
CMSG_PET_ACTION = 0x3491,
- CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E6,
- CMSG_PET_BATTLE_INPUT = 0x3641,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322B,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E5,
- CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3642,
- CMSG_PET_BATTLE_REQUEST_PVP = 0x31DF,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31E0,
- CMSG_PET_BATTLE_REQUEST_WILD = 0x31DD,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E7,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DE,
+ CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E5,
+ CMSG_PET_BATTLE_INPUT = 0x3640,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322A,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E4,
+ CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3641,
+ CMSG_PET_BATTLE_REQUEST_PVP = 0x31DE,
+ CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DF,
+ CMSG_PET_BATTLE_REQUEST_WILD = 0x31DC,
+ CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E6,
+ CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DD,
CMSG_PET_CANCEL_AURA = 0x3494,
- CMSG_PET_CAST_SPELL = 0x32A9,
- CMSG_PET_RENAME = 0x3685,
+ CMSG_PET_CAST_SPELL = 0x32A8,
+ CMSG_PET_RENAME = 0x3683,
CMSG_PET_SET_ACTION = 0x3490,
CMSG_PET_SPELL_AUTOCAST = 0x3495,
CMSG_PET_STOP_ATTACK = 0x3492,
@@ -584,30 +583,30 @@ enum OpcodeClient : uint16
CMSG_PLAYER_LOGIN = 0x35EA,
CMSG_PUSH_QUEST_TO_PARTY = 0x34A5,
CMSG_PVP_LOG_DATA = 0x317C,
- CMSG_QUERY_BATTLE_PET_NAME = 0x3283,
- CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660,
- CMSG_QUERY_CORPSE_TRANSPORT = 0x3661,
- CMSG_QUERY_COUNTDOWN_TIMER = 0x31AB,
- CMSG_QUERY_CREATURE = 0x327D,
- CMSG_QUERY_GAME_OBJECT = 0x327E,
- CMSG_QUERY_GARRISON_PET_NAME = 0x3284,
- CMSG_QUERY_GUILD_INFO = 0x368E,
+ CMSG_QUERY_BATTLE_PET_NAME = 0x3282,
+ CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365F,
+ CMSG_QUERY_CORPSE_TRANSPORT = 0x3660,
+ CMSG_QUERY_COUNTDOWN_TIMER = 0x31AA,
+ CMSG_QUERY_CREATURE = 0x327C,
+ CMSG_QUERY_GAME_OBJECT = 0x327D,
+ CMSG_QUERY_GARRISON_PET_NAME = 0x3283,
+ CMSG_QUERY_GUILD_INFO = 0x368C,
CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350E,
CMSG_QUERY_NEXT_MAIL_TIME = 0x354B,
- CMSG_QUERY_NPC_TEXT = 0x327F,
- CMSG_QUERY_PAGE_TEXT = 0x3281,
- CMSG_QUERY_PETITION = 0x3285,
- CMSG_QUERY_PET_NAME = 0x3282,
- CMSG_QUERY_PLAYER_NAME = 0x368A,
- CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x368C,
- CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x368B,
+ CMSG_QUERY_NPC_TEXT = 0x327E,
+ CMSG_QUERY_PAGE_TEXT = 0x3280,
+ CMSG_QUERY_PETITION = 0x3284,
+ CMSG_QUERY_PET_NAME = 0x3281,
+ CMSG_QUERY_PLAYER_NAME = 0x3688,
+ CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x368A,
+ CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x3689,
CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175,
- CMSG_QUERY_QUEST_INFO = 0x3280,
- CMSG_QUERY_REALM_NAME = 0x368D,
- CMSG_QUERY_SCENARIO_POI = 0x3656,
+ CMSG_QUERY_QUEST_INFO = 0x327F,
+ CMSG_QUERY_REALM_NAME = 0x368B,
+ CMSG_QUERY_SCENARIO_POI = 0x3655,
CMSG_QUERY_TIME = 0x34E3,
- CMSG_QUERY_TREASURE_PICKER = 0x3364,
- CMSG_QUERY_VOID_STORAGE = 0x31A4,
+ CMSG_QUERY_TREASURE_PICKER = 0x3362,
+ CMSG_QUERY_VOID_STORAGE = 0x31A3,
CMSG_QUEST_CONFIRM_ACCEPT = 0x34A4,
CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349E,
CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x34A0,
@@ -619,138 +618,138 @@ enum OpcodeClient : uint16
CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x34A3,
CMSG_QUEST_GIVER_STATUS_QUERY = 0x34A2,
CMSG_QUEST_LOG_REMOVE_QUEST = 0x3540,
- CMSG_QUEST_POI_QUERY = 0x36B0,
+ CMSG_QUEST_POI_QUERY = 0x36AF,
CMSG_QUEST_PUSH_RESULT = 0x34A6,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33D0,
- CMSG_QUEST_SESSION_REQUEST_START = 0x33CF,
- CMSG_QUEST_SESSION_REQUEST_STOP = 0x372E,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33CA,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x33C9,
+ CMSG_QUEST_SESSION_REQUEST_STOP = 0x372D,
CMSG_QUEUED_MESSAGES_END = 0x376C,
- CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3708,
- CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3707,
- CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3733,
- CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3706,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3705,
+ CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3706,
+ CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3705,
+ CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3732,
+ CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3704,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3703,
CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3512,
- CMSG_RAF_CLAIM_NEXT_REWARD = 0x3724,
- CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3726,
- CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3725,
- CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E5,
- CMSG_RANDOM_ROLL = 0x3654,
- CMSG_READY_CHECK_RESPONSE = 0x3635,
- CMSG_READ_ITEM = 0x3340,
+ CMSG_RAF_CLAIM_NEXT_REWARD = 0x3723,
+ CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3725,
+ CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3724,
+ CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E3,
+ CMSG_RANDOM_ROLL = 0x3653,
+ CMSG_READY_CHECK_RESPONSE = 0x3634,
+ CMSG_READ_ITEM = 0x333F,
CMSG_RECLAIM_CORPSE = 0x34E9,
- CMSG_REMOVE_NEW_ITEM = 0x3367,
- CMSG_REMOVE_RAF_RECRUIT = 0x3727,
+ CMSG_REMOVE_NEW_ITEM = 0x3365,
+ CMSG_REMOVE_RAF_RECRUIT = 0x3726,
CMSG_REORDER_CHARACTERS = 0x35E9,
CMSG_REPAIR_ITEM = 0x34FA,
- CMSG_REPLACE_TROPHY = 0x3321,
+ CMSG_REPLACE_TROPHY = 0x3320,
CMSG_REPOP_REQUEST = 0x3538,
- CMSG_REPORT_CLIENT_VARIABLES = 0x3702,
- CMSG_REPORT_ENABLED_ADDONS = 0x3701,
- CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3703,
+ CMSG_REPORT_CLIENT_VARIABLES = 0x3700,
+ CMSG_REPORT_ENABLED_ADDONS = 0x36FF,
+ CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3701,
CMSG_REPORT_PVP_PLAYER_AFK = 0x3502,
- CMSG_REPORT_SERVER_LAG = 0x33C6,
- CMSG_REPORT_STUCK_IN_COMBAT = 0x33C7,
- CMSG_REQUEST_ACCOUNT_DATA = 0x3698,
- CMSG_REQUEST_AREA_POI_UPDATE = 0x3366,
+ CMSG_REPORT_SERVER_LAG = 0x33C2,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x33C3,
+ CMSG_REQUEST_ACCOUNT_DATA = 0x3696,
+ CMSG_REQUEST_AREA_POI_UPDATE = 0x3364,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC,
CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317E,
CMSG_REQUEST_CEMETERY_LIST = 0x3177,
- CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368F,
- CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32C4,
- CMSG_REQUEST_COVENANT_CALLINGS = 0x33B9,
+ CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368D,
+ CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32C3,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x33B5,
CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353C,
- CMSG_REQUEST_FORCED_REACTIONS = 0x320E,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F3,
- CMSG_REQUEST_GUILD_PARTY_STATE = 0x31AA,
- CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A9,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C8,
- CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32B4,
- CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x320B,
- CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320C,
+ CMSG_REQUEST_FORCED_REACTIONS = 0x320D,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33EE,
+ CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A9,
+ CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A8,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C4,
+ CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32B3,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x320A,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x320B,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7,
- CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653,
+ CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3652,
CMSG_REQUEST_PET_INFO = 0x3496,
- CMSG_REQUEST_PLAYED_TIME = 0x3288,
- CMSG_REQUEST_PVP_REWARDS = 0x3197,
- CMSG_REQUEST_RAID_INFO = 0x36CA,
+ CMSG_REQUEST_PLAYED_TIME = 0x3287,
+ CMSG_REQUEST_PVP_REWARDS = 0x3196,
+ CMSG_REQUEST_RAID_INFO = 0x36C9,
CMSG_REQUEST_RATED_PVP_INFO = 0x35E3,
CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309B,
CMSG_REQUEST_RESEARCH_HISTORY = 0x3167,
- CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3198,
+ CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3197,
CMSG_REQUEST_STABLED_PETS = 0x3497,
- CMSG_REQUEST_VEHICLE_EXIT = 0x3240,
- CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3242,
- CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3241,
- CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3243,
- CMSG_REQUEST_WEEKLY_REWARDS = 0x33BC,
- CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3365,
- CMSG_RESET_CHALLENGE_MODE = 0x3209,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x320A,
- CMSG_RESET_INSTANCES = 0x3668,
- CMSG_RESURRECT_RESPONSE = 0x3684,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x3323,
- CMSG_RIDE_VEHICLE_INTERACT = 0x3244,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x323F,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3241,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3240,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3242,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x33B8,
+ CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3363,
+ CMSG_RESET_CHALLENGE_MODE = 0x3208,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3209,
+ CMSG_RESET_INSTANCES = 0x3667,
+ CMSG_RESURRECT_RESPONSE = 0x3682,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x3322,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x3243,
CMSG_SAVE_CUF_PROFILES = 0x318C,
CMSG_SAVE_EQUIPMENT_SET = 0x3518,
- CMSG_SAVE_GUILD_EMBLEM = 0x32B8,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x3227,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x3226,
- CMSG_SCENE_TRIGGER_EVENT = 0x3228,
+ CMSG_SAVE_GUILD_EMBLEM = 0x32B7,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x3226,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x3225,
+ CMSG_SCENE_TRIGGER_EVENT = 0x3227,
CMSG_SELF_RES = 0x3543,
CMSG_SELL_ITEM = 0x34A8,
- CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36FB,
- CMSG_SEND_CONTACT_LIST = 0x36CF,
+ CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F9,
+ CMSG_SEND_CONTACT_LIST = 0x36CE,
CMSG_SEND_MAIL = 0x35FA,
CMSG_SEND_TEXT_EMOTE = 0x348E,
- CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369D,
- CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x322D,
+ CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369C,
+ CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x322C,
CMSG_SET_ACTION_BAR_TOGGLES = 0x3544,
- CMSG_SET_ACTION_BUTTON = 0x3636,
+ CMSG_SET_ACTION_BUTTON = 0x3635,
CMSG_SET_ACTIVE_MOVER = 0x3A39,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32C5,
- CMSG_SET_ASSISTANT_LEADER = 0x364F,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3343,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3344,
- CMSG_SET_CONTACT_NOTES = 0x36D2,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32C4,
+ CMSG_SET_ASSISTANT_LEADER = 0x364E,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3342,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3343,
+ CMSG_SET_CONTACT_NOTES = 0x36D1,
CMSG_SET_CURRENCY_FLAGS = 0x3169,
- CMSG_SET_DIFFICULTY_ID = 0x3229,
- CMSG_SET_DUNGEON_DIFFICULTY = 0x3682,
+ CMSG_SET_DIFFICULTY_ID = 0x3228,
+ CMSG_SET_DUNGEON_DIFFICULTY = 0x3681,
CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3617,
CMSG_SET_FACTION_AT_WAR = 0x34EC,
CMSG_SET_FACTION_INACTIVE = 0x34EE,
CMSG_SET_FACTION_NOT_AT_WAR = 0x34ED,
- CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31BB,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3346,
- CMSG_SET_LOOT_METHOD = 0x3648,
+ CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31BA,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3345,
+ CMSG_SET_LOOT_METHOD = 0x3647,
CMSG_SET_LOOT_SPECIALIZATION = 0x3551,
- CMSG_SET_PARTY_ASSIGNMENT = 0x3651,
- CMSG_SET_PARTY_LEADER = 0x364A,
+ CMSG_SET_PARTY_ASSIGNMENT = 0x3650,
+ CMSG_SET_PARTY_LEADER = 0x3649,
CMSG_SET_PET_SLOT = 0x3168,
- CMSG_SET_PLAYER_DECLINED_NAMES = 0x3689,
+ CMSG_SET_PLAYER_DECLINED_NAMES = 0x3687,
CMSG_SET_PREFERRED_CEMETERY = 0x3178,
- CMSG_SET_PVP = 0x32BC,
- CMSG_SET_RAID_DIFFICULTY = 0x36DC,
+ CMSG_SET_PVP = 0x32BB,
+ CMSG_SET_RAID_DIFFICULTY = 0x36DA,
CMSG_SET_ROLE = 0x35D9,
- CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3687,
+ CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3685,
CMSG_SET_SELECTION = 0x353A,
CMSG_SET_SHEATHED = 0x348F,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3345,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3344,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x3501,
- CMSG_SET_TITLE = 0x328E,
+ CMSG_SET_TITLE = 0x328D,
CMSG_SET_TRADE_CURRENCY = 0x3160,
CMSG_SET_TRADE_GOLD = 0x315F,
CMSG_SET_TRADE_ITEM = 0x315D,
- CMSG_SET_USING_PARTY_GARRISON = 0x3305,
- CMSG_SET_WAR_MODE = 0x32BD,
+ CMSG_SET_USING_PARTY_GARRISON = 0x3304,
+ CMSG_SET_WAR_MODE = 0x32BC,
CMSG_SET_WATCHED_FACTION = 0x34EF,
- CMSG_SHOW_TRADE_SKILL = 0x36C2,
+ CMSG_SHOW_TRADE_SKILL = 0x36C1,
CMSG_SIGN_PETITION = 0x3545,
- CMSG_SILENCE_PARTY_TALKER = 0x3652,
+ CMSG_SILENCE_PARTY_TALKER = 0x3651,
CMSG_SOCKET_GEMS = 0x34F9,
- CMSG_SORT_BAGS = 0x3347,
- CMSG_SORT_BANK_BAGS = 0x3348,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x3349,
+ CMSG_SORT_BAGS = 0x3346,
+ CMSG_SORT_BANK_BAGS = 0x3347,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x3348,
CMSG_SPELL_CLICK = 0x349B,
CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B5,
CMSG_SPLIT_GUILD_BANK_ITEM = 0x34C8,
@@ -762,10 +761,10 @@ enum OpcodeClient : uint16
CMSG_START_SPECTATOR_WAR_GAME = 0x35DF,
CMSG_START_WAR_GAME = 0x35DE,
CMSG_STORE_GUILD_BANK_ITEM = 0x34BE,
- CMSG_SUBMIT_USER_FEEDBACK = 0x3697,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E9,
- CMSG_SUMMON_RESPONSE = 0x366A,
- CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3646,
+ CMSG_SUBMIT_USER_FEEDBACK = 0x3695,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E3,
+ CMSG_SUMMON_RESPONSE = 0x3669,
+ CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3645,
CMSG_SURRENDER_ARENA = 0x3174,
CMSG_SUSPEND_COMMS_ACK = 0x3764,
CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A,
@@ -773,9 +772,9 @@ enum OpcodeClient : uint16
CMSG_SWAP_INV_ITEM = 0x399D,
CMSG_SWAP_ITEM = 0x399C,
CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x34BF,
- CMSG_SWAP_SUB_GROUPS = 0x364D,
- CMSG_SWAP_VOID_ITEM = 0x31A6,
- CMSG_TABARD_VENDOR_ACTIVATE = 0x32B9,
+ CMSG_SWAP_SUB_GROUPS = 0x364C,
+ CMSG_SWAP_VOID_ITEM = 0x31A5,
+ CMSG_TABARD_VENDOR_ACTIVATE = 0x32B8,
CMSG_TALK_TO_GOSSIP = 0x3498,
CMSG_TAXI_NODE_STATUS_QUERY = 0x34AE,
CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B0,
@@ -784,50 +783,50 @@ enum OpcodeClient : uint16
CMSG_TIME_SYNC_RESPONSE = 0x3A3A,
CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3C,
CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3B,
- CMSG_TOGGLE_DIFFICULTY = 0x3657,
- CMSG_TOGGLE_PVP = 0x32BB,
+ CMSG_TOGGLE_DIFFICULTY = 0x3656,
+ CMSG_TOGGLE_PVP = 0x32BA,
CMSG_TOTEM_DESTROYED = 0x3506,
CMSG_TOY_CLEAR_FANFARE = 0x312E,
- CMSG_TRADE_SKILL_SET_FAVORITE = 0x3363,
+ CMSG_TRADE_SKILL_SET_FAVORITE = 0x3361,
CMSG_TRAINER_BUY_SPELL = 0x34B4,
CMSG_TRAINER_LIST = 0x34B3,
- CMSG_TRANSMOGRIFY_ITEMS = 0x3199,
+ CMSG_TRANSMOGRIFY_ITEMS = 0x3198,
CMSG_TURN_IN_PETITION = 0x3547,
- CMSG_TUTORIAL = 0x36DD,
+ CMSG_TUTORIAL = 0x36DB,
CMSG_TWITTER_CHECK_STATUS = 0x312A,
CMSG_TWITTER_CONNECT = 0x3127,
CMSG_TWITTER_DISCONNECT = 0x312B,
- CMSG_TWITTER_POST = 0x334B,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B8,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B4,
CMSG_UNACCEPT_TRADE = 0x315B,
- CMSG_UNDELETE_CHARACTER = 0x36DF,
+ CMSG_UNDELETE_CHARACTER = 0x36DD,
CMSG_UNLEARN_SKILL = 0x34F3,
- CMSG_UNLEARN_SPECIALIZATION = 0x31A7,
- CMSG_UNLOCK_VOID_STORAGE = 0x31A3,
- CMSG_UPDATE_ACCOUNT_DATA = 0x3699,
- CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32AC,
- CMSG_UPDATE_CLIENT_SETTINGS = 0x3664,
+ CMSG_UNLEARN_SPECIALIZATION = 0x31A6,
+ CMSG_UNLOCK_VOID_STORAGE = 0x31A2,
+ CMSG_UPDATE_ACCOUNT_DATA = 0x3697,
+ CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32AB,
+ CMSG_UPDATE_CLIENT_SETTINGS = 0x3663,
CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A40,
- CMSG_UPDATE_RAID_TARGET = 0x3650,
- CMSG_UPDATE_SPELL_VISUAL = 0x32AB,
- CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F5,
- CMSG_UPGRADE_GARRISON = 0x32CD,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E7,
+ CMSG_UPDATE_RAID_TARGET = 0x364F,
+ CMSG_UPDATE_SPELL_VISUAL = 0x32AA,
+ CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F3,
+ CMSG_UPGRADE_GARRISON = 0x32CC,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E1,
CMSG_USED_FOLLOW = 0x3187,
- CMSG_USE_CRITTER_ITEM = 0x324A,
+ CMSG_USE_CRITTER_ITEM = 0x3249,
CMSG_USE_EQUIPMENT_SET = 0x3995,
- CMSG_USE_ITEM = 0x32A6,
- CMSG_USE_TOY = 0x32A8,
- CMSG_VAS_CHECK_TRANSFER_OK = 0x370D,
- CMSG_VAS_GET_QUEUE_MINUTES = 0x370C,
- CMSG_VAS_GET_SERVICE_STATUS = 0x370B,
+ CMSG_USE_ITEM = 0x32A5,
+ CMSG_USE_TOY = 0x32A7,
+ CMSG_VAS_CHECK_TRANSFER_OK = 0x370B,
+ CMSG_VAS_GET_QUEUE_MINUTES = 0x370A,
+ CMSG_VAS_GET_SERVICE_STATUS = 0x3709,
CMSG_VIOLENCE_LEVEL = 0x3185,
- CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3711,
- CMSG_VOICE_CHAT_LOGIN = 0x3710,
- CMSG_VOID_STORAGE_TRANSFER = 0x31A5,
+ CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370F,
+ CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3710,
+ CMSG_VOICE_CHAT_LOGIN = 0x370E,
+ CMSG_VOID_STORAGE_TRANSFER = 0x31A4,
CMSG_WARDEN3_DATA = 0x35EC,
- CMSG_WHO = 0x3681,
- CMSG_WHO_IS = 0x3680,
+ CMSG_WHO = 0x3680,
+ CMSG_WHO_IS = 0x367F,
CMSG_WORLD_PORT_RESPONSE = 0x35F9,
CMSG_WRAP_ITEM = 0x3994,
@@ -838,84 +837,84 @@ enum OpcodeClient : uint16
enum OpcodeServer : uint16
{
- SMSG_ABORT_NEW_WORLD = 0x259F,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x287D,
- SMSG_ACCOUNT_DATA_TIMES = 0x270F,
- SMSG_ACCOUNT_MOUNT_UPDATE = 0x25B1,
- SMSG_ACCOUNT_TOY_UPDATE = 0x25B2,
- SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B5,
- SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B4,
- SMSG_ACHIEVEMENT_DELETED = 0x26EC,
- SMSG_ACHIEVEMENT_EARNED = 0x2640,
+ SMSG_ABORT_NEW_WORLD = 0x259A,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x286B,
+ SMSG_ACCOUNT_DATA_TIMES = 0x26FC,
+ SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AC,
+ SMSG_ACCOUNT_TOY_UPDATE = 0x25AD,
+ SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B0,
+ SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25AF,
+ SMSG_ACHIEVEMENT_DELETED = 0x26DB,
+ SMSG_ACHIEVEMENT_EARNED = 0x2638,
SMSG_ACTIVATE_ESSENCE_FAILED = 0x3016,
SMSG_ACTIVATE_SOULBIND_FAILED = 0x3018,
- SMSG_ACTIVATE_TAXI_REPLY = 0x267B,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x2673,
SMSG_ACTIVE_GLYPHS = 0x2C54,
- SMSG_ADDON_LIST_REQUEST = 0x263F,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263A,
- SMSG_ADD_ITEM_PASSIVE = 0x25AD,
- SMSG_ADD_LOSS_OF_CONTROL = 0x266D,
- SMSG_ADD_RUNE_POWER = 0x26B5,
- SMSG_ADJUST_SPLINE_DURATION = 0x25CF,
- SMSG_ADVANCED_COMBAT_LOG = 0x2893,
- SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x288D,
- SMSG_ADVENTURE_MAP_OPEN_NPC = 0x27F7,
- SMSG_AE_LOOT_TARGETS = 0x2615,
- SMSG_AE_LOOT_TARGET_ACK = 0x2616,
- SMSG_AI_REACTION = 0x26B2,
- SMSG_ALLIED_RACE_DETAILS = 0x27FD,
+ SMSG_ADDON_LIST_REQUEST = 0x2637,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2632,
+ SMSG_ADD_ITEM_PASSIVE = 0x25A8,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x2665,
+ SMSG_ADD_RUNE_POWER = 0x26AD,
+ SMSG_ADJUST_SPLINE_DURATION = 0x25CA,
+ SMSG_ADVANCED_COMBAT_LOG = 0x2881,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x287B,
+ SMSG_ADVENTURE_MAP_OPEN_NPC = 0x27E4,
+ SMSG_AE_LOOT_TARGETS = 0x260D,
+ SMSG_AE_LOOT_TARGET_ACK = 0x260E,
+ SMSG_AI_REACTION = 0x26AA,
+ SMSG_ALLIED_RACE_DETAILS = 0x27EA,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2571,
SMSG_ALL_ACHIEVEMENT_DATA = 0x2570,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x286A,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2858,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2588,
SMSG_AREA_POI_UPDATE_RESPONSE = 0x3011,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x2744,
- SMSG_AREA_TRIGGER_DENIED = 0x2917,
- SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2914,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x271B,
- SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x2913,
- SMSG_AREA_TRIGGER_RE_PATH = 0x2911,
- SMSG_AREA_TRIGGER_RE_SHAPE = 0x2916,
- SMSG_AREA_TRIGGER_SET_VISUAL_ANIM = 0x2912,
- SMSG_AREA_TRIGGER_UNATTACH = 0x2915,
- SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262F,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2645,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x27A6,
- SMSG_ARTIFACT_FORGE_ERROR = 0x27A4,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0x27A5,
- SMSG_ARTIFACT_XP_GAIN = 0x27EF,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x2731,
+ SMSG_AREA_TRIGGER_DENIED = 0x2903,
+ SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2900,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x2708,
+ SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FF,
+ SMSG_AREA_TRIGGER_RE_PATH = 0x28FD,
+ SMSG_AREA_TRIGGER_RE_SHAPE = 0x2902,
+ SMSG_AREA_TRIGGER_SET_VISUAL_ANIM = 0x28FE,
+ SMSG_AREA_TRIGGER_UNATTACH = 0x2901,
+ SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2627,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x263D,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x2794,
+ SMSG_ARTIFACT_FORGE_ERROR = 0x2792,
+ SMSG_ARTIFACT_RESPEC_PROMPT = 0x2793,
+ SMSG_ARTIFACT_XP_GAIN = 0x27DC,
SMSG_ATTACKER_STATE_UPDATE = 0x294C,
SMSG_ATTACK_START = 0x2937,
SMSG_ATTACK_STOP = 0x2938,
SMSG_ATTACK_SWING_ERROR = 0x2946,
SMSG_ATTACK_SWING_LANDED_LOG = 0x2947,
- SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D8,
- SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27D7,
- SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27D6,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26F6,
- SMSG_AUCTION_COMMAND_RESULT = 0x26F3,
- SMSG_AUCTION_FAVORITE_LIST = 0x2884,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x287B,
- SMSG_AUCTION_HELLO_RESPONSE = 0x26F1,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x287A,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2877,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2878,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2879,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26F5,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26F7,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x26F2,
- SMSG_AUCTION_WON_NOTIFICATION = 0x26F4,
+ SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27C5,
+ SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27C4,
+ SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27C3,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26E5,
+ SMSG_AUCTION_COMMAND_RESULT = 0x26E2,
+ SMSG_AUCTION_FAVORITE_LIST = 0x2872,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x2869,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x26E0,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2868,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2865,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2866,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2867,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26E4,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26E6,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E1,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x26E3,
SMSG_AURA_POINTS_DEPLETED = 0x2C23,
SMSG_AURA_UPDATE = 0x2C22,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_FAILED = 0x256C,
SMSG_AUTH_RESPONSE = 0x256D,
- SMSG_AVAILABLE_HOTFIXES = 0x2595,
- SMSG_AZERITE_RESPEC_NPC = 0x27FA,
+ SMSG_AVAILABLE_HOTFIXES = 0x290F,
+ SMSG_AZERITE_RESPEC_NPC = 0x27E7,
SMSG_BAG_CLEANUP_FINISHED = 0x2DA7,
- SMSG_BARBER_SHOP_RESULT = 0x26BB,
- SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x285B,
+ SMSG_BARBER_SHOP_RESULT = 0x26B2,
+ SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x2849,
SMSG_BATTLEFIELD_LIST = 0x2927,
SMSG_BATTLEFIELD_PORT_DENIED = 0x292D,
SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923,
@@ -930,114 +929,111 @@ enum OpcodeServer : uint16
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C,
SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928,
SMSG_BATTLEGROUND_POINTS = 0x2948,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x278D,
- SMSG_BATTLENET_CHALLENGE_START = 0x278C,
- SMSG_BATTLENET_NOTIFICATION = 0x2808,
- SMSG_BATTLENET_RESPONSE = 0x2807,
- SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2809,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x2787,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x277C,
- SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x277D,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2786,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x277A,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2779,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2778,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2776,
- SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2777,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2774,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2775,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x277B,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2785,
- SMSG_BATTLE_PAY_START_CHECKOUT = 0x2825,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2783,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2782,
- SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2819,
- SMSG_BATTLE_PAY_VAS_GUILD_FOLLOW_INFO = 0x29E7,
- SMSG_BATTLE_PAY_VAS_GUILD_MASTER_LIST = 0x29E6,
- SMSG_BATTLE_PETS_HEALED = 0x25F0,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2676,
- SMSG_BATTLE_PET_DELETED = 0x25ED,
- SMSG_BATTLE_PET_ERROR = 0x2635,
- SMSG_BATTLE_PET_JOURNAL = 0x25EC,
- SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EA,
- SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25EB,
- SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25F1,
- SMSG_BATTLE_PET_RESTORED = 0x25EF,
- SMSG_BATTLE_PET_REVOKED = 0x25EE,
- SMSG_BATTLE_PET_SET_MAX_PETS = 0x25E8,
- SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E7,
- SMSG_BATTLE_PET_UPDATES = 0x25E6,
- SMSG_BINDER_CONFIRM = 0x2700,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x277B,
+ SMSG_BATTLENET_CHALLENGE_START = 0x277A,
+ SMSG_BATTLENET_NOTIFICATION = 0x27F5,
+ SMSG_BATTLENET_RESPONSE = 0x27F4,
+ SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27F6,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x2775,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x276A,
+ SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x276B,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2774,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2768,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2767,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2765,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2766,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2764,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2762,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2763,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2769,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2773,
+ SMSG_BATTLE_PAY_START_CHECKOUT = 0x2811,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2771,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2770,
+ SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2805,
+ SMSG_BATTLE_PETS_HEALED = 0x25EA,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x266E,
+ SMSG_BATTLE_PET_DELETED = 0x25E7,
+ SMSG_BATTLE_PET_ERROR = 0x262D,
+ SMSG_BATTLE_PET_JOURNAL = 0x25E6,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25E4,
+ SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25E5,
+ SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25EB,
+ SMSG_BATTLE_PET_RESTORED = 0x25E9,
+ SMSG_BATTLE_PET_REVOKED = 0x25E8,
+ SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E2,
+ SMSG_BATTLE_PET_UPDATES = 0x25E1,
+ SMSG_BINDER_CONFIRM = 0x26EF,
SMSG_BIND_POINT_UPDATE = 0x257D,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2625,
- SMSG_BLACK_MARKET_OPEN_RESULT = 0x2623,
- SMSG_BLACK_MARKET_OUTBID = 0x2626,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2624,
- SMSG_BLACK_MARKET_WON = 0x2627,
- SMSG_BONUS_ROLL_EMPTY = 0x2642,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x261D,
+ SMSG_BLACK_MARKET_OPEN_RESULT = 0x261B,
+ SMSG_BLACK_MARKET_OUTBID = 0x261E,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x261C,
+ SMSG_BLACK_MARKET_WON = 0x261F,
+ SMSG_BONUS_ROLL_EMPTY = 0x263A,
SMSG_BOSS_KILL = 0x294B,
SMSG_BREAK_TARGET = 0x2936,
SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC,
- SMSG_BROADCAST_SUMMON_CAST = 0x285D,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0x285E,
- SMSG_BUY_FAILED = 0x26C4,
- SMSG_BUY_SUCCEEDED = 0x26C3,
- SMSG_CACHE_INFO = 0x2709,
- SMSG_CACHE_VERSION = 0x2708,
- SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269B,
- SMSG_CALENDAR_COMMAND_RESULT = 0x269C,
- SMSG_CALENDAR_COMMUNITY_INVITE = 0x268B,
- SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2693,
- SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2694,
- SMSG_CALENDAR_INVITE_ADDED = 0x268C,
- SMSG_CALENDAR_INVITE_ALERT = 0x2690,
- SMSG_CALENDAR_INVITE_NOTES = 0x2695,
- SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2696,
- SMSG_CALENDAR_INVITE_REMOVED = 0x268D,
- SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2692,
- SMSG_CALENDAR_INVITE_STATUS = 0x268E,
- SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2691,
- SMSG_CALENDAR_MODERATOR_STATUS = 0x268F,
- SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2697,
- SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2698,
- SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2699,
- SMSG_CALENDAR_SEND_CALENDAR = 0x2689,
- SMSG_CALENDAR_SEND_EVENT = 0x268A,
- SMSG_CALENDAR_SEND_NUM_PENDING = 0x269A,
- SMSG_CAMERA_EFFECT = 0x272A,
- SMSG_CANCEL_AUTO_REPEAT = 0x26E2,
+ SMSG_BROADCAST_SUMMON_CAST = 0x284B,
+ SMSG_BROADCAST_SUMMON_RESPONSE = 0x284C,
+ SMSG_BUY_FAILED = 0x26BB,
+ SMSG_BUY_SUCCEEDED = 0x26BA,
+ SMSG_CACHE_INFO = 0x291D,
+ SMSG_CACHE_VERSION = 0x291C,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x2693,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x2694,
+ SMSG_CALENDAR_COMMUNITY_INVITE = 0x2683,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x268B,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x268C,
+ SMSG_CALENDAR_INVITE_ADDED = 0x2684,
+ SMSG_CALENDAR_INVITE_ALERT = 0x2688,
+ SMSG_CALENDAR_INVITE_NOTES = 0x268D,
+ SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x268E,
+ SMSG_CALENDAR_INVITE_REMOVED = 0x2685,
+ SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x268A,
+ SMSG_CALENDAR_INVITE_STATUS = 0x2686,
+ SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2689,
+ SMSG_CALENDAR_MODERATOR_STATUS = 0x2687,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x268F,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2690,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2691,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x2681,
+ SMSG_CALENDAR_SEND_EVENT = 0x2682,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x2692,
+ SMSG_CAMERA_EFFECT = 0x2717,
+ SMSG_CANCEL_AUTO_REPEAT = 0x26D1,
SMSG_CANCEL_COMBAT = 0x2945,
SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46,
- SMSG_CANCEL_SCENE = 0x2634,
+ SMSG_CANCEL_SCENE = 0x262C,
SMSG_CANCEL_SPELL_VISUAL = 0x2C44,
SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48,
SMSG_CAN_DUEL_RESULT = 0x2941,
- SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2818,
+ SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2804,
SMSG_CAPTURE_POINT_REMOVED = 0x292A,
SMSG_CAST_FAILED = 0x2C57,
SMSG_CATEGORY_COOLDOWN = 0x2C16,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x2607,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260C,
- SMSG_CHALLENGE_MODE_RESET = 0x2606,
- SMSG_CHALLENGE_MODE_START = 0x2604,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2605,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x2601,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2605,
+ SMSG_CHALLENGE_MODE_RESET = 0x2600,
+ SMSG_CHALLENGE_MODE_START = 0x25FE,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x25FF,
SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3005,
- SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x280A,
+ SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x27F7,
SMSG_CHANNEL_LIST = 0x2BC3,
SMSG_CHANNEL_NOTIFY = 0x2BC0,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2,
- SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27C0,
- SMSG_CHARACTER_LOGIN_FAILED = 0x270A,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x278B,
- SMSG_CHARACTER_RENAME_RESULT = 0x2766,
- SMSG_CHARACTER_UPGRADE_ABORTED = 0x27BF,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27BE,
- SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27C1,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x27BD,
- SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26E6,
- SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26E7,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27AA,
+ SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27AE,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x26F7,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2779,
+ SMSG_CHARACTER_RENAME_RESULT = 0x2754,
+ SMSG_CHARACTER_UPGRADE_ABORTED = 0x27AD,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27AC,
+ SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27AF,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x27AB,
+ SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26D5,
+ SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26D6,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x2798,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BB8,
SMSG_CHAT_DOWN = 0x2BBD,
@@ -1054,88 +1050,89 @@ enum OpcodeServer : uint16
SMSG_CHECK_ABANDON_NPE = 0x3019,
SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584,
SMSG_CHECK_WARGAME_ENTRY = 0x2592,
- SMSG_CHROMIE_TIME_OPEN_NPC = 0x27FF,
- SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2887,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x286E,
+ SMSG_CHROMIE_TIME_OPEN_NPC = 0x27EC,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2875,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x285C,
SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C27,
- SMSG_CLEAR_BOSS_EMOTES = 0x25BC,
- SMSG_CLEAR_COOLDOWN = 0x26B7,
+ SMSG_CLEAR_BOSS_EMOTES = 0x25B7,
+ SMSG_CLEAR_COOLDOWN = 0x26AF,
SMSG_CLEAR_COOLDOWNS = 0x2C26,
- SMSG_CLEAR_LOSS_OF_CONTROL = 0x266F,
+ SMSG_CLEAR_LOSS_OF_CONTROL = 0x2667,
SMSG_CLEAR_RESURRECT = 0x257F,
SMSG_CLEAR_SPELL_CHARGES = 0x2C28,
SMSG_CLEAR_TARGET = 0x2942,
SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1,
- SMSG_CLOSE_ARTIFACT_FORGE = 0x27A3,
- SMSG_CLOSE_HEART_FORGE = 0x282B,
- SMSG_CLOSE_ITEM_FORGE = 0x27A1,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2866,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2869,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2867,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2864,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2868,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2865,
- SMSG_COIN_REMOVED = 0x2614,
+ SMSG_CLOSE_ARTIFACT_FORGE = 0x2791,
+ SMSG_CLOSE_HEART_FORGE = 0x2817,
+ SMSG_CLOSE_ITEM_FORGE = 0x278F,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2854,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2857,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2855,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2852,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2856,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2853,
+ SMSG_COIN_REMOVED = 0x260C,
SMSG_COMBAT_EVENT_FAILED = 0x2939,
- SMSG_COMMENTATOR_MAP_INFO = 0x270C,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x270D,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x270B,
- SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27D3,
- SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27DF,
- SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27D5,
- SMSG_COMMERCE_TOKEN_UPDATE = 0x27D4,
- SMSG_COMPLAINT_RESULT = 0x26A9,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x279C,
- SMSG_CONFIRM_PARTY_INVITE = 0x2817,
+ SMSG_COMMENTATOR_MAP_INFO = 0x26F9,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x26FA,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x26F8,
+ SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27C0,
+ SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27CC,
+ SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27C2,
+ SMSG_COMMERCE_TOKEN_UPDATE = 0x27C1,
+ SMSG_COMPLAINT_RESULT = 0x26A1,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x278A,
+ SMSG_CONFIRM_PARTY_INVITE = 0x2803,
SMSG_CONNECT_TO = 0x304D,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2788,
- SMSG_CONSOLE_WRITE = 0x2632,
- SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27DB,
- SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27DA,
- SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D9,
- SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27DD,
- SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27DE,
- SMSG_CONTACT_LIST = 0x2789,
- SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x281E,
- SMSG_CONTROL_UPDATE = 0x2644,
- SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2890,
- SMSG_COOLDOWN_CHEAT = 0x273D,
- SMSG_COOLDOWN_EVENT = 0x26B6,
- SMSG_CORPSE_LOCATION = 0x264B,
- SMSG_CORPSE_RECLAIM_DELAY = 0x274E,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x2717,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2776,
+ SMSG_CONSOLE_WRITE = 0x262A,
+ SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27C8,
+ SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27C7,
+ SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27C6,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27CA,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27CB,
+ SMSG_CONTACT_LIST = 0x2777,
+ SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x280A,
+ SMSG_CONTROL_UPDATE = 0x263C,
+ SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x287E,
+ SMSG_COOLDOWN_CHEAT = 0x272A,
+ SMSG_COOLDOWN_EVENT = 0x26AE,
+ SMSG_CORPSE_LOCATION = 0x2643,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x273B,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x2704,
SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3,
- SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x2800,
- SMSG_COVENANT_RENOWN_OPEN_NPC = 0x288F,
- SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2891,
- SMSG_CREATE_CHAR = 0x2704,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x279B,
- SMSG_CRITERIA_DELETED = 0x26EB,
- SMSG_CRITERIA_UPDATE = 0x26E5,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BF,
- SMSG_CUSTOM_LOAD_SCREEN = 0x25CA,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27ED,
+ SMSG_COVENANT_RENOWN_OPEN_NPC = 0x287D,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x287F,
+ SMSG_CREATE_CHAR = 0x26F3,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x2789,
+ SMSG_CRITERIA_DELETED = 0x26DA,
+ SMSG_CRITERIA_UPDATE = 0x26D4,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26B6,
+ SMSG_CUSTOM_LOAD_SCREEN = 0x25C5,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
- SMSG_DAMAGE_CALC_LOG = 0x27C8,
- SMSG_DB_REPLY = 0x2594,
- SMSG_DEATH_RELEASE_LOC = 0x26D8,
- SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2651,
+ SMSG_DAMAGE_CALC_LOG = 0x27B5,
+ SMSG_DB_REPLY = 0x290E,
+ SMSG_DEATH_RELEASE_LOC = 0x26C7,
+ SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2649,
SMSG_DEFENSE_MESSAGE = 0x2BB6,
- SMSG_DELETE_CHAR = 0x2705,
- SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2976,
- SMSG_DESTROY_ARENA_UNIT = 0x2746,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26FC,
+ SMSG_DELETE_CHAR = 0x26F4,
+ SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980,
+ SMSG_DESTROY_ARENA_UNIT = 0x2733,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26EB,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C,
- SMSG_DISCONNECT_REASON = 0x27F1,
- SMSG_DISENCHANT_CREDIT = 0x25AA,
+ SMSG_DISCONNECT_REASON = 0x27DE,
+ SMSG_DISENCHANT_CREDIT = 0x25A5,
SMSG_DISMOUNT_RESULT = 0x257C,
SMSG_DISPEL_FAILED = 0x2C30,
- SMSG_DISPLAY_GAME_ERROR = 0x25A4,
+ SMSG_DISPLAY_GAME_ERROR = 0x259F,
SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC,
- SMSG_DISPLAY_PROMOTION = 0x2648,
+ SMSG_DISPLAY_PROMOTION = 0x2640,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9E,
- SMSG_DISPLAY_TOAST = 0x2621,
- SMSG_DISPLAY_WORLD_TEXT = 0x27F0,
- SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DD,
+ SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2883,
+ SMSG_DISPLAY_TOAST = 0x2619,
+ SMSG_DISPLAY_WORLD_TEXT = 0x27DD,
+ SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25D8,
SMSG_DROP_NEW_CONNECTION = 0x304C,
SMSG_DUEL_ARRANGED = 0x293B,
SMSG_DUEL_COMPLETE = 0x293F,
@@ -1144,147 +1141,150 @@ enum OpcodeServer : uint16
SMSG_DUEL_OUT_OF_BOUNDS = 0x293C,
SMSG_DUEL_REQUESTED = 0x293A,
SMSG_DUEL_WINNER = 0x2940,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x274A,
- SMSG_EMOTE = 0x27C9,
- SMSG_ENABLE_BARBER_SHOP = 0x26BA,
- SMSG_ENCHANTMENT_LOG = 0x2718,
- SMSG_ENCOUNTER_END = 0x2781,
- SMSG_ENCOUNTER_START = 0x2780,
- SMSG_END_LIGHTNING_STORM = 0x26A6,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x2737,
+ SMSG_EMOTE = 0x27B6,
+ SMSG_ENABLE_BARBER_SHOP = 0x26B1,
+ SMSG_ENCHANTMENT_LOG = 0x2705,
+ SMSG_ENCOUNTER_END = 0x276F,
+ SMSG_ENCOUNTER_START = 0x276E,
+ SMSG_END_LIGHTNING_STORM = 0x269E,
SMSG_ENTER_ENCRYPTED_MODE = 0x3049,
SMSG_ENUM_CHARACTERS_RESULT = 0x2583,
- SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27F6,
+ SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27E3,
SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21,
- SMSG_EQUIPMENT_SET_ID = 0x26AF,
+ SMSG_EQUIPMENT_SET_ID = 0x26A7,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x2763,
- SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x288E,
- SMSG_FACTION_BONUS_INFO = 0x2729,
+ SMSG_EXPLORATION_EXPERIENCE = 0x2750,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x287C,
+ SMSG_FACTION_BONUS_INFO = 0x2716,
SMSG_FAILED_PLAYER_CONDITION = 0x2FFA,
- SMSG_FAILED_QUEST_TURN_IN = 0x2814,
- SMSG_FEATURE_SYSTEM_STATUS = 0x25C0,
- SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25C1,
- SMSG_FEIGN_DEATH_RESISTED = 0x2749,
- SMSG_FISH_ESCAPED = 0x26CD,
- SMSG_FISH_NOT_HOOKED = 0x26CC,
+ SMSG_FAILED_QUEST_TURN_IN = 0x2800,
+ SMSG_FEATURE_SYSTEM_STATUS = 0x25BB,
+ SMSG_FEATURE_SYSTEM_STATUS2 = 0x2884,
+ SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BC,
+ SMSG_FEIGN_DEATH_RESISTED = 0x2736,
+ SMSG_FISH_ESCAPED = 0x26C4,
+ SMSG_FISH_NOT_HOOKED = 0x26C3,
SMSG_FLIGHT_SPLINE_SYNC = 0x2E29,
- SMSG_FORCED_DEATH_UPDATE = 0x26D9,
- SMSG_FORCE_ANIM = 0x2755,
- SMSG_FORCE_ANIMATIONS = 0x2756,
- SMSG_FORCE_OBJECT_RELINK = 0x2647,
- SMSG_FRIEND_STATUS = 0x278A,
- SMSG_GAIN_MAW_POWER = 0x27E4,
- SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C3,
- SMSG_GAME_OBJECT_BASE = 0x282C,
- SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C4,
- SMSG_GAME_OBJECT_DESPAWN = 0x25C5,
+ SMSG_FORCED_DEATH_UPDATE = 0x26C8,
+ SMSG_FORCE_ANIM = 0x2742,
+ SMSG_FORCE_ANIMATIONS = 0x2743,
+ SMSG_FORCE_OBJECT_RELINK = 0x263F,
+ SMSG_FRIEND_STATUS = 0x2778,
+ SMSG_GAIN_MAW_POWER = 0x27D1,
+ SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25BE,
+ SMSG_GAME_OBJECT_BASE = 0x2818,
+ SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25BF,
+ SMSG_GAME_OBJECT_DESPAWN = 0x25C0,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B,
SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A,
- SMSG_GAME_OBJECT_RESET_STATE = 0x2723,
- SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x2806,
- SMSG_GAME_OBJECT_UI_LINK = 0x271F,
- SMSG_GAME_SPEED_SET = 0x267F,
- SMSG_GAME_TIME_SET = 0x2711,
- SMSG_GAME_TIME_UPDATE = 0x2710,
- SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2978,
- SMSG_GARRISON_ADD_EVENT = 0x299B,
- SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x296A,
- SMSG_GARRISON_ADD_MISSION_RESULT = 0x296E,
- SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x29A0,
- SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2980,
- SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x29A2,
- SMSG_GARRISON_BUILDING_ACTIVATED = 0x295F,
- SMSG_GARRISON_BUILDING_REMOVED = 0x2958,
- SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x295A,
- SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0x2971,
- SMSG_GARRISON_CLEAR_COLLECTION = 0x299A,
- SMSG_GARRISON_CLEAR_EVENT_LIST = 0x299D,
- SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x2999,
- SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x2998,
- SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x2990,
- SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x2970,
- SMSG_GARRISON_CREATE_RESULT = 0x2960,
- SMSG_GARRISON_DELETE_MISSION_RESULT = 0x2977,
- SMSG_GARRISON_DELETE_RESULT = 0x2989,
- SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = 0x297F,
- SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = 0x297D,
- SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x297B,
- SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = 0x297C,
- SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x297A,
- SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = 0x297E,
- SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0x2987,
- SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0x2969,
- SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0x2972,
- SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x2992,
- SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x295B,
- SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x2959,
- SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x2993,
- SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x296D,
- SMSG_GARRISON_MAP_DATA_RESPONSE = 0x2995,
- SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x2974,
- SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x2996,
- SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0x2979,
- SMSG_GARRISON_OPEN_ARCHITECT = 0x298A,
- SMSG_GARRISON_OPEN_CRAFTER = 0x298B,
- SMSG_GARRISON_OPEN_MISSION_NPC = 0x298C,
- SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x2984,
- SMSG_GARRISON_OPEN_TALENT_NPC = 0x2985,
- SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x2957,
- SMSG_GARRISON_PLOT_PLACED = 0x2955,
- SMSG_GARRISON_PLOT_REMOVED = 0x2956,
- SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x2988,
- SMSG_GARRISON_REMOTE_INFO = 0x295E,
- SMSG_GARRISON_REMOVE_EVENT = 0x299C,
- SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0x2983,
- SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x2981,
- SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x296B,
- SMSG_GARRISON_RENAME_FOLLOWER_RESULT = 0x2982,
- SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x295D,
- SMSG_GARRISON_RESEARCH_TALENT_RESULT = 0x2962,
- SMSG_GARRISON_RESET_TALENT_TREE = 0x2967,
- SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0x2968,
- SMSG_GARRISON_START_MISSION_RESULT = 0x296F,
- SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x298F,
- SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x299E,
- SMSG_GARRISON_TALENT_COMPLETED = 0x2963,
- SMSG_GARRISON_TALENT_REMOVED = 0x2964,
- SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0x2966,
- SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0x2965,
- SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0x299F,
- SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x295C,
- SMSG_GARRISON_UPDATE_FOLLOWER = 0x296C,
- SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x2991,
- SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x29A1,
- SMSG_GARRISON_UPGRADE_RESULT = 0x2961,
- SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x2973,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x2710,
+ SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27F3,
+ SMSG_GAME_OBJECT_UI_LINK = 0x270C,
+ SMSG_GAME_SPEED_SET = 0x2677,
+ SMSG_GAME_TIME_SET = 0x26FE,
+ SMSG_GAME_TIME_UPDATE = 0x26FD,
+ SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982,
+ SMSG_GARRISON_ADD_EVENT = 0x29A5,
+ SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974,
+ SMSG_GARRISON_ADD_MISSION_RESULT = 0x2978,
+ SMSG_GARRISON_ADD_SPEC_GROUPS = 0x29A8,
+ SMSG_GARRISON_APPLY_TALENT_SOCKET_DATA_CHANGES = 0x29AC,
+ SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x298A,
+ SMSG_GARRISON_AUTO_TROOP_MIN_LEVEL_UPDATE_RESULT = 0x29AE,
+ SMSG_GARRISON_BUILDING_ACTIVATED = 0x2969,
+ SMSG_GARRISON_BUILDING_REMOVED = 0x2962,
+ SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x2964,
+ SMSG_GARRISON_CHANGE_MISSION_START_TIME_RESULT = 0x297B,
+ SMSG_GARRISON_CLEAR_COLLECTION = 0x29A4,
+ SMSG_GARRISON_CLEAR_EVENT_LIST = 0x29A7,
+ SMSG_GARRISON_CLEAR_SPEC_GROUPS = 0x29A9,
+ SMSG_GARRISON_COLLECTION_REMOVE_ENTRY = 0x29A3,
+ SMSG_GARRISON_COLLECTION_UPDATE_ENTRY = 0x29A2,
+ SMSG_GARRISON_COMPLETE_BUILDING_CONSTRUCTION_RESULT = 0x299A,
+ SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x297A,
+ SMSG_GARRISON_CREATE_RESULT = 0x296A,
+ SMSG_GARRISON_DELETE_MISSION_RESULT = 0x2981,
+ SMSG_GARRISON_DELETE_RESULT = 0x2993,
+ SMSG_GARRISON_FOLLOWER_ACTIVATIONS_SET = 0x2989,
+ SMSG_GARRISON_FOLLOWER_CHANGED_FLAGS = 0x2987,
+ SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x2985,
+ SMSG_GARRISON_FOLLOWER_CHANGED_QUALITY = 0x2986,
+ SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x2984,
+ SMSG_GARRISON_FOLLOWER_FATIGUE_CLEARED = 0x2988,
+ SMSG_GARRISON_GENERATE_FOLLOWERS_RESULT = 0x2991,
+ SMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO_RESULT = 0x2973,
+ SMSG_GARRISON_GET_RECALL_PORTAL_LAST_USED_TIME_RESULT = 0x297C,
+ SMSG_GARRISON_IS_UPGRADEABLE_RESPONSE = 0x299C,
+ SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x2965,
+ SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x2963,
+ SMSG_GARRISON_LIST_COMPLETED_MISSIONS_CHEAT_RESULT = 0x299D,
+ SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x2977,
+ SMSG_GARRISON_MAP_DATA_RESPONSE = 0x299F,
+ SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT = 0x297E,
+ SMSG_GARRISON_MISSION_REQUEST_REWARD_INFO_RESPONSE = 0x29A0,
+ SMSG_GARRISON_MISSION_START_CONDITION_UPDATE = 0x2983,
+ SMSG_GARRISON_OPEN_ARCHITECT = 0x2994,
+ SMSG_GARRISON_OPEN_CRAFTER = 0x2995,
+ SMSG_GARRISON_OPEN_MISSION_NPC = 0x2996,
+ SMSG_GARRISON_OPEN_RECRUITMENT_NPC = 0x298E,
+ SMSG_GARRISON_OPEN_TALENT_NPC = 0x298F,
+ SMSG_GARRISON_PLACE_BUILDING_RESULT = 0x2961,
+ SMSG_GARRISON_PLOT_PLACED = 0x295F,
+ SMSG_GARRISON_PLOT_REMOVED = 0x2960,
+ SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT = 0x2992,
+ SMSG_GARRISON_REMOTE_INFO = 0x2968,
+ SMSG_GARRISON_REMOVE_EVENT = 0x29A6,
+ SMSG_GARRISON_REMOVE_FOLLOWER_ABILITY_RESULT = 0x298D,
+ SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT = 0x298B,
+ SMSG_GARRISON_REMOVE_FOLLOWER_RESULT = 0x2975,
+ SMSG_GARRISON_RENAME_FOLLOWER_RESULT = 0x298C,
+ SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT = 0x2967,
+ SMSG_GARRISON_RESEARCH_TALENT_RESULT = 0x296C,
+ SMSG_GARRISON_RESET_TALENT_TREE = 0x2971,
+ SMSG_GARRISON_RESET_TALENT_TREE_SOCKET_DATA = 0x2972,
+ SMSG_GARRISON_START_MISSION_RESULT = 0x2979,
+ SMSG_GARRISON_SWAP_BUILDINGS_RESPONSE = 0x2999,
+ SMSG_GARRISON_SWITCH_TALENT_TREE_BRANCH = 0x29AA,
+ SMSG_GARRISON_TALENT_COMPLETED = 0x296D,
+ SMSG_GARRISON_TALENT_REMOVED = 0x296E,
+ SMSG_GARRISON_TALENT_REMOVE_SOCKET_DATA = 0x2970,
+ SMSG_GARRISON_TALENT_UPDATE_SOCKET_DATA = 0x296F,
+ SMSG_GARRISON_TALENT_WORLD_QUEST_UNLOCKS_RESPONSE = 0x29AB,
+ SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x2966,
+ SMSG_GARRISON_UPDATE_FOLLOWER = 0x2976,
+ SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS = 0x299B,
+ SMSG_GARRISON_UPDATE_MISSION_CHEAT_RESULT = 0x29AD,
+ SMSG_GARRISON_UPGRADE_RESULT = 0x296B,
+ SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x297D,
SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585,
- SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x281F,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2764,
- SMSG_GET_GARRISON_INFO_RESULT = 0x2954,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x279E,
- SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27DC,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27C5,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x279D,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2799,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x27C4,
- SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27F2,
- SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27F3,
+ SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x280B,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2752,
+ SMSG_GET_GARRISON_INFO_RESULT = 0x295E,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x278C,
+ SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27C9,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27B3,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x278B,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2787,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x27B2,
+ SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27DF,
+ SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E0,
SMSG_GM_PLAYER_INFO = 0x3006,
SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB,
- SMSG_GM_TICKET_CASE_STATUS = 0x26A1,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x26A0,
- SMSG_GOD_MODE = 0x26FF,
+ SMSG_GM_TICKET_CASE_STATUS = 0x2699,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x2698,
+ SMSG_GOD_MODE = 0x26EE,
SMSG_GOSSIP_COMPLETE = 0x2A97,
SMSG_GOSSIP_MESSAGE = 0x2A98,
- SMSG_GOSSIP_POI = 0x2796,
+ SMSG_GOSSIP_POI = 0x2784,
SMSG_GOSSIP_QUEST_UPDATE = 0x2A99,
SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6,
SMSG_GROUP_ACTION_THROTTLED = 0x2590,
- SMSG_GROUP_AUTO_KICK = 0x2794,
- SMSG_GROUP_DECLINE = 0x2791,
- SMSG_GROUP_DESTROYED = 0x2793,
- SMSG_GROUP_NEW_LEADER = 0x262A,
- SMSG_GROUP_UNINVITE = 0x2792,
+ SMSG_GROUP_AUTO_KICK = 0x2782,
+ SMSG_GROUP_DECLINE = 0x277F,
+ SMSG_GROUP_DESTROYED = 0x2781,
+ SMSG_GROUP_NEW_LEADER = 0x2622,
+ SMSG_GROUP_UNINVITE = 0x2780,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1338,59 +1338,59 @@ enum OpcodeServer : uint16
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x26D0,
- SMSG_HIGHEST_THREAT_UPDATE = 0x26DE,
- SMSG_HOTFIX_CONNECT = 0x2597,
- SMSG_HOTFIX_MESSAGE = 0x2596,
- SMSG_INITIALIZE_FACTIONS = 0x2728,
+ SMSG_HEALTH_UPDATE = 0x26C5,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x26CD,
+ SMSG_HOTFIX_CONNECT = 0x2911,
+ SMSG_HOTFIX_MESSAGE = 0x2910,
+ SMSG_INITIALIZE_FACTIONS = 0x2715,
SMSG_INITIAL_SETUP = 0x2580,
- SMSG_INIT_WORLD_STATES = 0x274B,
- SMSG_INSPECT_RESULT = 0x262E,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27B0,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27AF,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27B8,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27AE,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27BA,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B9,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27B3,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27B2,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B7,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27BB,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27B4,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27B1,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27B6,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27B5,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26FD,
- SMSG_INSTANCE_INFO = 0x2631,
- SMSG_INSTANCE_RESET = 0x2684,
- SMSG_INSTANCE_RESET_FAILED = 0x2685,
- SMSG_INSTANCE_SAVE_CREATED = 0x277F,
+ SMSG_INIT_WORLD_STATES = 0x2738,
+ SMSG_INSPECT_RESULT = 0x2626,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x279E,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x279D,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x27A6,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x279C,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27A8,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27A7,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27A1,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27A0,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27A5,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27A9,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x27A2,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x279F,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27A4,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27A3,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26EC,
+ SMSG_INSTANCE_INFO = 0x2629,
+ SMSG_INSTANCE_RESET = 0x267C,
+ SMSG_INSTANCE_RESET_FAILED = 0x267D,
+ SMSG_INSTANCE_SAVE_CREATED = 0x276D,
SMSG_INTERRUPT_POWER_REGEN = 0x2C59,
- SMSG_INVALIDATE_PAGE_TEXT = 0x26D4,
+ SMSG_INVALIDATE_PAGE_TEXT = 0x2918,
SMSG_INVALIDATE_PLAYER = 0x2FFF,
- SMSG_INVALID_PROMOTION_CODE = 0x2757,
+ SMSG_INVALID_PROMOTION_CODE = 0x2744,
SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5,
- SMSG_INVENTORY_FIXUP_COMPLETE = 0x2816,
- SMSG_INVENTORY_FULL_OVERFLOW = 0x2827,
- SMSG_ISLANDS_MISSION_NPC = 0x27FC,
- SMSG_ISLAND_AZERITE_GAIN = 0x2760,
- SMSG_ISLAND_COMPLETE = 0x2761,
+ SMSG_INVENTORY_FIXUP_COMPLETE = 0x2802,
+ SMSG_INVENTORY_FULL_OVERFLOW = 0x2813,
+ SMSG_ISLANDS_MISSION_NPC = 0x27E9,
+ SMSG_ISLAND_AZERITE_GAIN = 0x274D,
+ SMSG_ISLAND_COMPLETE = 0x274E,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84,
- SMSG_ITEM_CHANGED = 0x26EE,
- SMSG_ITEM_COOLDOWN = 0x27C7,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2759,
- SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25A3,
- SMSG_ITEM_INTERACTION_COMPLETE = 0x2886,
- SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x25A1,
- SMSG_ITEM_PUSH_RESULT = 0x2620,
- SMSG_ITEM_TIME_UPDATE = 0x2758,
- SMSG_KICK_REASON = 0x2687,
+ SMSG_ITEM_CHANGED = 0x26DD,
+ SMSG_ITEM_COOLDOWN = 0x27B4,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2746,
+ SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x259E,
+ SMSG_ITEM_INTERACTION_COMPLETE = 0x2874,
+ SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259C,
+ SMSG_ITEM_PUSH_RESULT = 0x2618,
+ SMSG_ITEM_TIME_UPDATE = 0x2745,
+ SMSG_KICK_REASON = 0x267F,
SMSG_LEARNED_SPELLS = 0x2C4D,
- SMSG_LEARN_PVP_TALENT_FAILED = 0x25D1,
- SMSG_LEARN_TALENT_FAILED = 0x25D0,
- SMSG_LEGACY_LOOT_RULES = 0x282D,
- SMSG_LEVEL_LINKING_RESULT = 0x286C,
- SMSG_LEVEL_UP_INFO = 0x26ED,
+ SMSG_LEARN_PVP_TALENT_FAILED = 0x25CC,
+ SMSG_LEARN_TALENT_FAILED = 0x25CB,
+ SMSG_LEGACY_LOOT_RULES = 0x2819,
+ SMSG_LEVEL_LINKING_RESULT = 0x285A,
+ SMSG_LEVEL_UP_INFO = 0x26DC,
SMSG_LFG_BOOT_PLAYER = 0x2A35,
SMSG_LFG_DISABLED = 0x2A33,
SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B,
@@ -1425,44 +1425,44 @@ enum OpcodeServer : uint16
SMSG_LF_GUILD_COMMAND_RESULT = 0x29D0,
SMSG_LF_GUILD_POST = 0x29CD,
SMSG_LF_GUILD_RECRUITS = 0x29CF,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2771,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2770,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2765,
- SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2772,
- SMSG_LOAD_CUF_PROFILES = 0x25BD,
- SMSG_LOAD_EQUIPMENT_SET = 0x2713,
- SMSG_LOGIN_SET_TIME_SPEED = 0x2712,
- SMSG_LOGIN_VERIFY_WORLD = 0x259E,
- SMSG_LOGOUT_CANCEL_ACK = 0x2683,
- SMSG_LOGOUT_COMPLETE = 0x2682,
- SMSG_LOGOUT_RESPONSE = 0x2681,
- SMSG_LOG_XP_GAIN = 0x26E9,
- SMSG_LOOT_ALL_PASSED = 0x261E,
- SMSG_LOOT_LIST = 0x2745,
- SMSG_LOOT_MONEY_NOTIFY = 0x2619,
- SMSG_LOOT_RELEASE = 0x2618,
- SMSG_LOOT_RELEASE_ALL = 0x2617,
- SMSG_LOOT_REMOVED = 0x2613,
- SMSG_LOOT_RESPONSE = 0x2612,
- SMSG_LOOT_ROLL = 0x261B,
- SMSG_LOOT_ROLLS_COMPLETE = 0x261D,
- SMSG_LOOT_ROLL_WON = 0x261F,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266C,
- SMSG_MAIL_COMMAND_RESULT = 0x2638,
- SMSG_MAIL_LIST_RESULT = 0x275A,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x275B,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x275F,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x275E,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2753,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2760,
+ SMSG_LOAD_CUF_PROFILES = 0x25B8,
+ SMSG_LOAD_EQUIPMENT_SET = 0x2700,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x26FF,
+ SMSG_LOGIN_VERIFY_WORLD = 0x2599,
+ SMSG_LOGOUT_CANCEL_ACK = 0x267B,
+ SMSG_LOGOUT_COMPLETE = 0x267A,
+ SMSG_LOGOUT_RESPONSE = 0x2679,
+ SMSG_LOG_XP_GAIN = 0x26D8,
+ SMSG_LOOT_ALL_PASSED = 0x2616,
+ SMSG_LOOT_LIST = 0x2732,
+ SMSG_LOOT_MONEY_NOTIFY = 0x2611,
+ SMSG_LOOT_RELEASE = 0x2610,
+ SMSG_LOOT_RELEASE_ALL = 0x260F,
+ SMSG_LOOT_REMOVED = 0x260B,
+ SMSG_LOOT_RESPONSE = 0x260A,
+ SMSG_LOOT_ROLL = 0x2613,
+ SMSG_LOOT_ROLLS_COMPLETE = 0x2615,
+ SMSG_LOOT_ROLL_WON = 0x2617,
+ SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2664,
+ SMSG_MAIL_COMMAND_RESULT = 0x2630,
+ SMSG_MAIL_LIST_RESULT = 0x2747,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2748,
SMSG_MAP_OBJECTIVES_INIT = 0x294A,
- SMSG_MAP_OBJ_EVENTS = 0x25C6,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261C,
+ SMSG_MAP_OBJ_EVENTS = 0x25C1,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2614,
SMSG_MESSAGE_BOX = 0x2576,
- SMSG_MINIMAP_PING = 0x26CB,
+ SMSG_MINIMAP_PING = 0x26C2,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
- SMSG_MISSILE_CANCEL = 0x25C7,
- SMSG_MODIFY_COOLDOWN = 0x2767,
+ SMSG_MISSILE_CANCEL = 0x25C2,
+ SMSG_MODIFY_COOLDOWN = 0x2755,
SMSG_MOTD = 0x2BAF,
SMSG_MOUNT_RESULT = 0x257B,
- SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x285C,
+ SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x284A,
SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E13,
SMSG_MOVE_DISABLE_COLLISION = 0x2E0F,
SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x2DFD,
@@ -1547,83 +1547,81 @@ enum OpcodeServer : uint16
SMSG_MOVE_UPDATE_TELEPORT = 0x2DE1,
SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD,
SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8,
- SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27E1,
- SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27E0,
- SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2609,
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260B,
- SMSG_MYTHIC_PLUS_NEW_SEASON_RECORD = 0x260F,
- SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260E,
- SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260A,
- SMSG_MYTHIC_PLUS_WEEKLY_REWARD_RESPONSE = 0x2608,
- SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25D8,
- SMSG_NEW_TAXI_PATH = 0x267C,
- SMSG_NEW_WORLD = 0x259D,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27CE,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27CD,
+ SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2602,
+ SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x2604,
+ SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2607,
+ SMSG_MYTHIC_PLUS_SEASON_DATA = 0x2603,
+ SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25D3,
+ SMSG_NEW_TAXI_PATH = 0x2674,
+ SMSG_NEW_WORLD = 0x2598,
SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A8,
- SMSG_NOTIFY_MONEY = 0x25A0,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x2639,
- SMSG_OFFER_PETITION_ERROR = 0x26B3,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26EA,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A0,
+ SMSG_NOTIFY_MONEY = 0x259B,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x2631,
+ SMSG_OFFER_PETITION_ERROR = 0x26AB,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26D9,
SMSG_ON_MONSTER_MOVE = 0x2DD4,
- SMSG_OPEN_ANIMA_DIVERSION_UI = 0x2720,
- SMSG_OPEN_ARTIFACT_FORGE = 0x27A2,
+ SMSG_OPEN_ANIMA_DIVERSION_UI = 0x270D,
+ SMSG_OPEN_ARTIFACT_FORGE = 0x2790,
SMSG_OPEN_CONTAINER = 0x2DA6,
- SMSG_OPEN_HEART_FORGE = 0x282A,
- SMSG_OPEN_ITEM_FORGE = 0x27A0,
+ SMSG_OPEN_HEART_FORGE = 0x2816,
+ SMSG_OPEN_ITEM_FORGE = 0x278E,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31,
- SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x2798,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x279A,
- SMSG_OVERRIDE_LIGHT = 0x26B9,
- SMSG_PAGE_TEXT = 0x271E,
- SMSG_PARTY_COMMAND_RESULT = 0x2795,
- SMSG_PARTY_INVITE = 0x25BE,
- SMSG_PARTY_KILL_LOG = 0x275E,
- SMSG_PARTY_MEMBER_FULL_STATE = 0x275D,
- SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x275C,
- SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x288C,
- SMSG_PARTY_UPDATE = 0x25F2,
- SMSG_PAUSE_MIRROR_TIMER = 0x2715,
- SMSG_PENDING_RAID_LOCK = 0x26FB,
- SMSG_PETITION_ALREADY_SIGNED = 0x25A6,
+ SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x2786,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2788,
+ SMSG_OVERRIDE_LIGHT = 0x26B0,
+ SMSG_PAGE_TEXT = 0x270B,
+ SMSG_PARTY_COMMAND_RESULT = 0x2783,
+ SMSG_PARTY_INVITE = 0x25B9,
+ SMSG_PARTY_KILL_LOG = 0x274B,
+ SMSG_PARTY_MEMBER_FULL_STATE = 0x274A,
+ SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2749,
+ SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x287A,
+ SMSG_PARTY_UPDATE = 0x25EC,
+ SMSG_PAUSE_MIRROR_TIMER = 0x2702,
+ SMSG_PENDING_RAID_LOCK = 0x26EA,
+ SMSG_PETITION_ALREADY_SIGNED = 0x25A1,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA,
- SMSG_PETITION_SHOW_LIST = 0x26BC,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26BD,
- SMSG_PETITION_SIGN_RESULTS = 0x2750,
- SMSG_PET_ACTION_FEEDBACK = 0x274D,
- SMSG_PET_ACTION_SOUND = 0x269E,
- SMSG_PET_ADDED = 0x259A,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x25FF,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2673,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F8,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x25FD,
- SMSG_PET_BATTLE_FINISHED = 0x25FE,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x25FA,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25F9,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2600,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F7,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2636,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x2637,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FC,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F6,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x25FB,
- SMSG_PET_BATTLE_SLOT_UPDATES = 0x25E9,
+ SMSG_PETITION_SHOW_LIST = 0x26B3,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26B4,
+ SMSG_PETITION_SIGN_RESULTS = 0x273D,
+ SMSG_PET_ACTION_FEEDBACK = 0x273A,
+ SMSG_PET_ACTION_SOUND = 0x2696,
+ SMSG_PET_ADDED = 0x2595,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x25F9,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x266B,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F2,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x25F7,
+ SMSG_PET_BATTLE_FINISHED = 0x25F8,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x25F4,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25F3,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x25FA,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F1,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x262E,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x262F,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25F6,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F0,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x25F5,
+ SMSG_PET_BATTLE_SLOT_UPDATES = 0x25E3,
SMSG_PET_CAST_FAILED = 0x2C58,
SMSG_PET_CLEAR_SPELLS = 0x2C24,
- SMSG_PET_DISMISS_SOUND = 0x269F,
- SMSG_PET_GOD_MODE = 0x2679,
- SMSG_PET_GUIDS = 0x2707,
+ SMSG_PET_DISMISS_SOUND = 0x2697,
+ SMSG_PET_GOD_MODE = 0x2671,
+ SMSG_PET_GUIDS = 0x26F6,
SMSG_PET_LEARNED_SPELLS = 0x2C4F,
SMSG_PET_MODE = 0x258B,
- SMSG_PET_NAME_INVALID = 0x26C1,
+ SMSG_PET_NAME_INVALID = 0x26B8,
SMSG_PET_NEWLY_TAMED = 0x2589,
SMSG_PET_SLOT_UPDATED = 0x258A,
SMSG_PET_SPELLS_MESSAGE = 0x2C25,
- SMSG_PET_STABLE_LIST = 0x259B,
- SMSG_PET_STABLE_RESULT = 0x259C,
- SMSG_PET_TAME_FAILURE = 0x26B0,
+ SMSG_PET_STABLE_LIST = 0x2596,
+ SMSG_PET_STABLE_RESULT = 0x2597,
+ SMSG_PET_TAME_FAILURE = 0x26A8,
SMSG_PET_UNLEARNED_SPELLS = 0x2C50,
SMSG_PHASE_SHIFT_CHANGE = 0x2578,
- SMSG_PLAYED_TIME = 0x26DA,
+ SMSG_PLAYED_TIME = 0x26C9,
SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3015,
SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3014,
SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3017,
@@ -1634,27 +1632,28 @@ enum OpcodeServer : uint16
SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x300A,
SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x300F,
SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F9,
+ SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x301A,
SMSG_PLAYER_SKINNED = 0x3007,
SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x3008,
SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300E,
SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300D,
- SMSG_PLAY_MUSIC = 0x276C,
- SMSG_PLAY_OBJECT_SOUND = 0x276D,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2735,
+ SMSG_PLAY_MUSIC = 0x275A,
+ SMSG_PLAY_OBJECT_SOUND = 0x275B,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2722,
SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47,
- SMSG_PLAY_SCENE = 0x2633,
- SMSG_PLAY_SOUND = 0x276B,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x276E,
+ SMSG_PLAY_SCENE = 0x262B,
+ SMSG_PLAY_SOUND = 0x2759,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x275C,
SMSG_PLAY_SPELL_VISUAL = 0x2C45,
SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49,
- SMSG_PLAY_TIME_WARNING = 0x2701,
+ SMSG_PLAY_TIME_WARNING = 0x26F0,
SMSG_PONG = 0x304E,
- SMSG_POWER_UPDATE = 0x26D1,
+ SMSG_POWER_UPDATE = 0x26C6,
SMSG_PRELOAD_CHILD_MAP = 0x2579,
- SMSG_PREPOPULATE_NAME_CACHE = 0x285F,
- SMSG_PRE_RESSURECT = 0x276A,
- SMSG_PRINT_NOTIFICATION = 0x25C9,
- SMSG_PROC_RESIST = 0x275F,
+ SMSG_PREPOPULATE_NAME_CACHE = 0x284D,
+ SMSG_PRE_RESSURECT = 0x2758,
+ SMSG_PRINT_NOTIFICATION = 0x25C4,
+ SMSG_PROC_RESIST = 0x274C,
SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51,
SMSG_PVP_CREDIT = 0x2944,
SMSG_PVP_MATCH_COMPLETE = 0x294E,
@@ -1662,20 +1661,22 @@ enum OpcodeServer : uint16
SMSG_PVP_MATCH_START = 0x294D,
SMSG_PVP_MATCH_STATISTICS = 0x2931,
SMSG_PVP_OPTIONS_ENABLED = 0x2933,
- SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x26D6,
- SMSG_QUERY_CREATURE_RESPONSE = 0x26CE,
- SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x26CF,
- SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x2994,
+ SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A,
+ SMSG_QUERY_CREATURE_RESPONSE = 0x2914,
+ SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915,
+ SMSG_QUERY_GARRISON_PET_NAME_RESPONSE = 0x299E,
+ SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE = 0x29E7,
SMSG_QUERY_GUILD_INFO_RESPONSE = 0x29E5,
- SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x27C6,
- SMSG_QUERY_NPC_TEXT_RESPONSE = 0x26D2,
- SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x26D3,
- SMSG_QUERY_PETITION_RESPONSE = 0x26D7,
- SMSG_QUERY_PET_NAME_RESPONSE = 0x26D5,
+ SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x291E,
+ SMSG_QUERY_NPC_TEXT_RESPONSE = 0x2916,
+ SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x2917,
+ SMSG_QUERY_PETITION_RESPONSE = 0x291B,
+ SMSG_QUERY_PET_NAME_RESPONSE = 0x2919,
SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3003,
SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x3002,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96,
- SMSG_QUERY_TIME_RESPONSE = 0x26E8,
+ SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E6,
+ SMSG_QUERY_TIME_RESPONSE = 0x26D7,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F,
SMSG_QUEST_FORCE_REMOVED = 0x2A9C,
@@ -1689,139 +1690,139 @@ enum OpcodeServer : uint16
SMSG_QUEST_GIVER_STATUS = 0x2A9B,
SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x2A91,
SMSG_QUEST_LOG_FULL = 0x2A87,
+ SMSG_QUEST_NON_LOG_UPDATE_COMPLETE = 0x2A88,
SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D,
SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F,
SMSG_QUEST_PUSH_RESULT = 0x2A90,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2882,
- SMSG_QUEST_SESSION_READY_CHECK = 0x2870,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2871,
- SMSG_QUEST_SESSION_RESULT = 0x286F,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2870,
+ SMSG_QUEST_SESSION_READY_CHECK = 0x285E,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x285F,
+ SMSG_QUEST_SESSION_RESULT = 0x285D,
SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8C,
SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8D,
SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8E,
SMSG_QUEST_UPDATE_COMPLETE = 0x2A89,
- SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A88,
SMSG_QUEST_UPDATE_FAILED = 0x2A8A,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B,
- SMSG_QUEUE_SUMMARY_UPDATE = 0x2815,
- SMSG_RAF_ACCOUNT_INFO = 0x286D,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x287E,
- SMSG_RAID_DIFFICULTY_SET = 0x27AB,
- SMSG_RAID_GROUP_ONLY = 0x27AD,
+ SMSG_QUEUE_SUMMARY_UPDATE = 0x2801,
+ SMSG_RAF_ACCOUNT_INFO = 0x285B,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x286C,
+ SMSG_RAID_DIFFICULTY_SET = 0x2799,
+ SMSG_RAID_GROUP_ONLY = 0x279B,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4,
- SMSG_RAID_MARKERS_CHANGED = 0x25A7,
- SMSG_RANDOM_ROLL = 0x262D,
+ SMSG_RAID_MARKERS_CHANGED = 0x25A2,
+ SMSG_RANDOM_ROLL = 0x2625,
SMSG_RATED_PVP_INFO = 0x2930,
- SMSG_READY_CHECK_COMPLETED = 0x25F5,
- SMSG_READY_CHECK_RESPONSE = 0x25F4,
- SMSG_READY_CHECK_STARTED = 0x25F3,
- SMSG_READ_ITEM_RESULT_FAILED = 0x27A7,
- SMSG_READ_ITEM_RESULT_OK = 0x279F,
- SMSG_REALM_LOOKUP_INFO = 0x27CC,
- SMSG_REALM_QUERY_RESPONSE = 0x26B8,
- SMSG_REATTACH_RESURRECT = 0x274F,
- SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BE,
- SMSG_REFRESH_COMPONENT = 0x264D,
+ SMSG_READY_CHECK_COMPLETED = 0x25EF,
+ SMSG_READY_CHECK_RESPONSE = 0x25EE,
+ SMSG_READY_CHECK_STARTED = 0x25ED,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x2795,
+ SMSG_READ_ITEM_RESULT_OK = 0x278D,
+ SMSG_REALM_LOOKUP_INFO = 0x27B9,
+ SMSG_REALM_QUERY_RESPONSE = 0x2913,
+ SMSG_REATTACH_RESURRECT = 0x273C,
+ SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26B5,
+ SMSG_REFRESH_COMPONENT = 0x2645,
SMSG_REFRESH_SPELL_HISTORY = 0x2C2C,
- SMSG_REMOVE_ITEM_PASSIVE = 0x25AE,
- SMSG_REMOVE_LOSS_OF_CONTROL = 0x266E,
+ SMSG_REMOVE_ITEM_PASSIVE = 0x25A9,
+ SMSG_REMOVE_LOSS_OF_CONTROL = 0x2666,
SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C52,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x27C3,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x27B1,
SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001,
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x2591,
SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2934,
SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2935,
SMSG_RESEARCH_COMPLETE = 0x2587,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
- SMSG_RESET_FAILED_NOTIFY = 0x26B4,
+ SMSG_RESET_FAILED_NOTIFY = 0x26AC,
SMSG_RESET_QUEST_POI = 0x2AA0,
SMSG_RESET_RANGED_COMBAT_TIMER = 0x2943,
SMSG_RESET_WEEKLY_CURRENCY = 0x2575,
- SMSG_RESPEC_WIPE_CONFIRM = 0x2610,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x2608,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572,
- SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25BA,
+ SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B5,
SMSG_RESUME_CAST = 0x2C3B,
SMSG_RESUME_CAST_BAR = 0x2C3E,
SMSG_RESUME_COMMS = 0x304B,
- SMSG_RESUME_TOKEN = 0x25AC,
+ SMSG_RESUME_TOKEN = 0x25A7,
SMSG_RESURRECT_REQUEST = 0x257E,
SMSG_RESYNC_RUNES = 0x2C5F,
- SMSG_RETURN_APPLICANT_LIST = 0x2863,
- SMSG_RETURN_RECRUITING_CLUBS = 0x2862,
+ SMSG_RETURN_APPLICANT_LIST = 0x2851,
+ SMSG_RETURN_RECRUITING_CLUBS = 0x2850,
SMSG_ROLE_CHANGED_INFORM = 0x258D,
SMSG_ROLE_CHOSEN = 0x2A39,
SMSG_ROLE_POLL_INFORM = 0x258E,
- SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x2801,
- SMSG_RUNE_REGEN_DEBUG = 0x25B7,
- SMSG_SCENARIO_COMPLETED = 0x27EE,
- SMSG_SCENARIO_POIS = 0x2630,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x2629,
- SMSG_SCENARIO_SHOW_CRITERIA = 0x2804,
- SMSG_SCENARIO_STATE = 0x2628,
- SMSG_SCENARIO_UI_UPDATE = 0x2803,
- SMSG_SCENARIO_VACATE = 0x27A8,
- SMSG_SCENE_OBJECT_EVENT = 0x25DE,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E3,
- SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E4,
- SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E0,
- SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25DF,
- SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E2,
- SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E1,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27EE,
+ SMSG_RUNE_REGEN_DEBUG = 0x25B2,
+ SMSG_SCENARIO_COMPLETED = 0x27DB,
+ SMSG_SCENARIO_POIS = 0x2628,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x2621,
+ SMSG_SCENARIO_SHOW_CRITERIA = 0x27F1,
+ SMSG_SCENARIO_STATE = 0x2620,
+ SMSG_SCENARIO_UI_UPDATE = 0x27F0,
+ SMSG_SCENARIO_VACATE = 0x2796,
+ SMSG_SCENE_OBJECT_EVENT = 0x25D9,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25DE,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25DF,
+ SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25DB,
+ SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25DA,
+ SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25DD,
+ SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25DC,
SMSG_SCRIPT_CAST = 0x2C56,
- SMSG_SEASON_INFO = 0x25C2,
- SMSG_SELL_RESPONSE = 0x26C2,
- SMSG_SEND_ITEM_PASSIVES = 0x25AF,
+ SMSG_SEASON_INFO = 0x25BD,
+ SMSG_SELL_RESPONSE = 0x26B9,
+ SMSG_SEND_ITEM_PASSIVES = 0x25AA,
SMSG_SEND_KNOWN_SPELLS = 0x2C2A,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262B,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262C,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x2623,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2624,
SMSG_SEND_SPELL_CHARGES = 0x2C2D,
SMSG_SEND_SPELL_HISTORY = 0x2C2B,
SMSG_SEND_UNLEARN_SPELLS = 0x2C2E,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264A,
- SMSG_SERVER_TIME = 0x2680,
- SMSG_SERVER_TIME_OFFSET = 0x2719,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x2642,
+ SMSG_SERVER_TIME = 0x2678,
+ SMSG_SERVER_TIME_OFFSET = 0x2706,
SMSG_SETUP_CURRENCY = 0x2573,
SMSG_SETUP_RESEARCH_HISTORY = 0x2586,
- SMSG_SET_AI_ANIM_KIT = 0x2734,
- SMSG_SET_ALL_TASK_PROGRESS = 0x278F,
- SMSG_SET_ANIM_TIER = 0x2738,
- SMSG_SET_CHR_UPGRADE_TIER = 0x25DB,
+ SMSG_SET_AI_ANIM_KIT = 0x2721,
+ SMSG_SET_ALL_TASK_PROGRESS = 0x277D,
+ SMSG_SET_ANIM_TIER = 0x2725,
+ SMSG_SET_CHR_UPGRADE_TIER = 0x25D6,
SMSG_SET_CURRENCY = 0x2574,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x26A2,
- SMSG_SET_FACTION_AT_WAR = 0x2703,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x272F,
- SMSG_SET_FACTION_STANDING = 0x2730,
- SMSG_SET_FACTION_VISIBLE = 0x272E,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x269A,
+ SMSG_SET_FACTION_AT_WAR = 0x26F2,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x271C,
+ SMSG_SET_FACTION_STANDING = 0x271D,
+ SMSG_SET_FACTION_VISIBLE = 0x271B,
SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36,
- SMSG_SET_FORCED_REACTIONS = 0x2722,
- SMSG_SET_ITEM_PURCHASE_DATA = 0x25A2,
- SMSG_SET_LOOT_METHOD_FAILED = 0x27D2,
- SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A5,
- SMSG_SET_MELEE_ANIM_KIT = 0x2737,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x2736,
+ SMSG_SET_FORCED_REACTIONS = 0x270F,
+ SMSG_SET_ITEM_PURCHASE_DATA = 0x259D,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x27BF,
+ SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A0,
+ SMSG_SET_MELEE_ANIM_KIT = 0x2724,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x2723,
SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37,
- SMSG_SET_PET_SPECIALIZATION = 0x2622,
+ SMSG_SET_PET_SPECIALIZATION = 0x261A,
SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3004,
- SMSG_SET_PLAY_HOVER_ANIM = 0x25BB,
- SMSG_SET_PROFICIENCY = 0x2739,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2876,
- SMSG_SET_SHIPMENT_READY_RESPONSE = 0x298D,
+ SMSG_SET_PLAY_HOVER_ANIM = 0x25B6,
+ SMSG_SET_PROFICIENCY = 0x2726,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2864,
+ SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2997,
SMSG_SET_SPELL_CHARGES = 0x2C29,
- SMSG_SET_TASK_COMPLETE = 0x2790,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x2675,
- SMSG_SET_VEHICLE_REC_ID = 0x26FA,
- SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x298E,
- SMSG_SHOW_BANK = 0x267D,
- SMSG_SHOW_MAILBOX = 0x27A9,
- SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D7,
+ SMSG_SET_TASK_COMPLETE = 0x277E,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x266D,
+ SMSG_SET_VEHICLE_REC_ID = 0x26E9,
+ SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2998,
+ SMSG_SHOW_BANK = 0x2675,
+ SMSG_SHOW_MAILBOX = 0x2797,
+ SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D2,
SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95,
- SMSG_SHOW_TAXI_NODES = 0x26CA,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2773,
- SMSG_SOCKET_GEMS_FAILURE = 0x272C,
- SMSG_SOCKET_GEMS_SUCCESS = 0x272B,
- SMSG_SPECIAL_MOUNT_ANIM = 0x269D,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x271D,
+ SMSG_SHOW_TAXI_NODES = 0x26C1,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2761,
+ SMSG_SOCKET_GEMS_FAILURE = 0x2719,
+ SMSG_SOCKET_GEMS_SUCCESS = 0x2718,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x2695,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x270A,
SMSG_SPELL_ABSORB_LOG = 0x2C1F,
SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17,
SMSG_SPELL_CHANNEL_START = 0x2C34,
@@ -1846,92 +1847,93 @@ enum OpcodeServer : uint16
SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B,
SMSG_SPELL_PREPARE = 0x2C38,
SMSG_SPELL_START = 0x2C3A,
- SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CB,
- SMSG_SPIRIT_HEALER_CONFIRM = 0x271A,
- SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2888,
- SMSG_STAND_STATE_UPDATE = 0x2721,
- SMSG_START_ELAPSED_TIMER = 0x2601,
- SMSG_START_ELAPSED_TIMERS = 0x2603,
- SMSG_START_LIGHTNING_STORM = 0x26A5,
- SMSG_START_LOOT_ROLL = 0x261A,
- SMSG_START_MIRROR_TIMER = 0x2714,
- SMSG_START_TIMER = 0x25A9,
- SMSG_STOP_ELAPSED_TIMER = 0x2602,
- SMSG_STOP_MIRROR_TIMER = 0x2716,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x276F,
- SMSG_STREAMING_MOVIES = 0x25A8,
- SMSG_SUMMON_CANCEL = 0x26AE,
+ SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25C6,
+ SMSG_SPIRIT_HEALER_CONFIRM = 0x2707,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2876,
+ SMSG_STAND_STATE_UPDATE = 0x270E,
+ SMSG_START_ELAPSED_TIMER = 0x25FB,
+ SMSG_START_ELAPSED_TIMERS = 0x25FD,
+ SMSG_START_LIGHTNING_STORM = 0x269D,
+ SMSG_START_LOOT_ROLL = 0x2612,
+ SMSG_START_MIRROR_TIMER = 0x2701,
+ SMSG_START_TIMER = 0x25A4,
+ SMSG_STOP_ELAPSED_TIMER = 0x25FC,
+ SMSG_STOP_MIRROR_TIMER = 0x2703,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x275D,
+ SMSG_STREAMING_MOVIES = 0x25A3,
+ SMSG_SUMMON_CANCEL = 0x26A6,
SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F,
- SMSG_SUMMON_REQUEST = 0x2726,
+ SMSG_SUMMON_REQUEST = 0x2713,
SMSG_SUPERCEDED_SPELLS = 0x2C4C,
SMSG_SUSPEND_COMMS = 0x304A,
- SMSG_SUSPEND_TOKEN = 0x25AB,
- SMSG_SYNC_WOW_ENTITLEMENTS = 0x2880,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x271C,
- SMSG_TAXI_NODE_STATUS = 0x267A,
- SMSG_TEXT_EMOTE = 0x2678,
- SMSG_THREAT_CLEAR = 0x26E1,
- SMSG_THREAT_REMOVE = 0x26E0,
- SMSG_THREAT_UPDATE = 0x26DF,
+ SMSG_SUSPEND_TOKEN = 0x25A6,
+ SMSG_SYNC_WOW_ENTITLEMENTS = 0x286E,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2709,
+ SMSG_TAXI_NODE_STATUS = 0x2672,
+ SMSG_TEXT_EMOTE = 0x2670,
+ SMSG_THREAT_CLEAR = 0x26D0,
+ SMSG_THREAT_REMOVE = 0x26CF,
+ SMSG_THREAT_UPDATE = 0x26CE,
SMSG_TIME_ADJUSTMENT = 0x2DD3,
SMSG_TIME_SYNC_REQUEST = 0x2DD2,
- SMSG_TITLE_EARNED = 0x26DC,
- SMSG_TITLE_LOST = 0x26DD,
- SMSG_TOTEM_CREATED = 0x26C5,
- SMSG_TOTEM_DURATION_CHANGED = 0x26C6,
- SMSG_TOTEM_MOVED = 0x26C7,
+ SMSG_TITLE_EARNED = 0x26CB,
+ SMSG_TITLE_LOST = 0x26CC,
+ SMSG_TOTEM_CREATED = 0x26BC,
+ SMSG_TOTEM_DURATION_CHANGED = 0x26BD,
+ SMSG_TOTEM_MOVED = 0x26BE,
SMSG_TRADE_STATUS = 0x2582,
SMSG_TRADE_UPDATED = 0x2581,
- SMSG_TRAINER_BUY_FAILED = 0x26E4,
- SMSG_TRAINER_LIST = 0x26E3,
- SMSG_TRANSFER_ABORTED = 0x2706,
- SMSG_TRANSFER_PENDING = 0x25CC,
- SMSG_TRANSMOGRIFY_NPC = 0x27F9,
- SMSG_TREASURE_PICKER_RESPONSE = 0x280B,
- SMSG_TRIGGER_CINEMATIC = 0x27CA,
- SMSG_TRIGGER_MOVIE = 0x26C8,
- SMSG_TURN_IN_PETITION_RESULT = 0x2752,
- SMSG_TUTORIAL_FLAGS = 0x27BC,
+ SMSG_TRAINER_BUY_FAILED = 0x26D3,
+ SMSG_TRAINER_LIST = 0x26D2,
+ SMSG_TRANSFER_ABORTED = 0x26F5,
+ SMSG_TRANSFER_PENDING = 0x25C7,
+ SMSG_TRANSMOGRIFY_NPC = 0x27E6,
+ SMSG_TREASURE_PICKER_RESPONSE = 0x291F,
+ SMSG_TRIGGER_CINEMATIC = 0x27B7,
+ SMSG_TRIGGER_MOVIE = 0x26BF,
+ SMSG_TURN_IN_PETITION_RESULT = 0x273F,
+ SMSG_TUTORIAL_FLAGS = 0x27AA,
SMSG_TWITTER_STATUS = 0x3043,
- SMSG_UI_HEALING_RANGE_MODIFIED = 0x2748,
- SMSG_UI_ITEM_INTERACTION_NPC = 0x27FB,
+ SMSG_UI_HEALING_RANGE_MODIFIED = 0x2735,
+ SMSG_UI_ITEM_INTERACTION_NPC = 0x27E8,
SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27CD,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27CE,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27BA,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27BB,
SMSG_UNLEARNED_SPELLS = 0x2C4E,
SMSG_UNLOAD_CHILD_MAP = 0x257A,
- SMSG_UPDATE_ACCOUNT_DATA = 0x270E,
- SMSG_UPDATE_ACTION_BUTTONS = 0x25DC,
- SMSG_UPDATE_BNET_SESSION_KEY = 0x2826,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x26FB,
+ SMSG_UPDATE_ACTION_BUTTONS = 0x25D7,
+ SMSG_UPDATE_BNET_SESSION_KEY = 0x2812,
SMSG_UPDATE_CAPTURE_POINT = 0x2929,
- SMSG_UPDATE_CELESTIAL_BODY = 0x2822,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x27C2,
- SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2769,
- SMSG_UPDATE_COOLDOWN = 0x2768,
- SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x2975,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x2643,
- SMSG_UPDATE_GAME_TIME_STATE = 0x2829,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A7,
- SMSG_UPDATE_LAST_INSTANCE = 0x2686,
- SMSG_UPDATE_OBJECT = 0x27CB,
- SMSG_UPDATE_PRIMARY_SPEC = 0x25D4,
- SMSG_UPDATE_TALENT_DATA = 0x25D3,
- SMSG_UPDATE_TASK_PROGRESS = 0x278E,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x280E,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x27B0,
+ SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2757,
+ SMSG_UPDATE_COOLDOWN = 0x2756,
+ SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x263B,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x2815,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x269F,
+ SMSG_UPDATE_LAST_INSTANCE = 0x267E,
+ SMSG_UPDATE_OBJECT = 0x27B8,
+ SMSG_UPDATE_PRIMARY_SPEC = 0x25CF,
+ SMSG_UPDATE_TALENT_DATA = 0x25CE,
+ SMSG_UPDATE_TASK_PROGRESS = 0x277C,
SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19,
- SMSG_UPDATE_WORLD_STATE = 0x274C,
+ SMSG_UPDATE_WORLD_STATE = 0x2739,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,
SMSG_USERLIST_UPDATE = 0x2BBB,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x2753,
- SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x281D,
- SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x281B,
- SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x281A,
- SMSG_VAS_PURCHASE_COMPLETE = 0x27F5,
- SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27F4,
- SMSG_VENDOR_INVENTORY = 0x25B9,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x2740,
+ SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2809,
+ SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2807,
+ SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2806,
+ SMSG_VAS_PURCHASE_COMPLETE = 0x27E2,
+ SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E1,
+ SMSG_VENDOR_INVENTORY = 0x25B4,
SMSG_VIGNETTE_UPDATE = 0x3009,
- SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2821,
- SMSG_VOICE_LOGIN_RESPONSE = 0x2820,
+ SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x280D,
+ SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2882,
+ SMSG_VOICE_LOGIN_RESPONSE = 0x280C,
SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4,
SMSG_VOID_STORAGE_CONTENTS = 0x2DA1,
SMSG_VOID_STORAGE_FAILED = 0x2DA0,
@@ -1940,28 +1942,28 @@ enum OpcodeServer : uint16
SMSG_WAIT_QUEUE_FINISH = 0x256F,
SMSG_WAIT_QUEUE_UPDATE = 0x256E,
SMSG_WARDEN3_DATA = 0x2577,
- SMSG_WARDEN3_DISABLED = 0x2824,
- SMSG_WARDEN3_ENABLED = 0x2823,
- SMSG_WARFRONT_COMPLETE = 0x2762,
+ SMSG_WARDEN3_DISABLED = 0x2810,
+ SMSG_WARDEN3_ENABLED = 0x280F,
+ SMSG_WARFRONT_COMPLETE = 0x274F,
SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2932,
- SMSG_WEATHER = 0x26A4,
- SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x288B,
- SMSG_WEEKLY_REWARDS_RESULT = 0x2889,
- SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x288A,
+ SMSG_WEATHER = 0x269C,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2879,
+ SMSG_WEEKLY_REWARDS_RESULT = 0x2877,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2878,
SMSG_WEEKLY_SPELL_USAGE = 0x2C18,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x26A3,
- SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2828,
- SMSG_WORLD_MAP_OPEN_NPC = 0x27F8,
+ SMSG_WHO_IS = 0x269B,
+ SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2814,
+ SMSG_WORLD_MAP_OPEN_NPC = 0x27E5,
SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x3010,
- SMSG_WORLD_SERVER_INFO = 0x25B0,
- SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2881,
- SMSG_XP_GAIN_ABORTED = 0x25C8,
- SMSG_XP_GAIN_ENABLED = 0x27AC,
+ SMSG_WORLD_SERVER_INFO = 0x25AB,
+ SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x286F,
+ SMSG_XP_GAIN_ABORTED = 0x25C3,
+ SMSG_XP_GAIN_ENABLED = 0x279A,
SMSG_ZONE_UNDER_ATTACK = 0x2BB5,
// Opcodes that are not generated automatically
- SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25B3, // no client handler
+ SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25AE, // no client handler
SMSG_COMPRESSED_PACKET = 0x3052,
SMSG_MULTIPLE_PACKETS = 0x3051,
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index ad8bba5a316..acf57a30be5 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -1506,10 +1506,10 @@ class TC_GAME_API WorldSession
void HandleChatMessageOpcode(WorldPackets::Chat::ChatMessage& chatMessage);
void HandleChatMessageWhisperOpcode(WorldPackets::Chat::ChatMessageWhisper& chatMessageWhisper);
void HandleChatMessageChannelOpcode(WorldPackets::Chat::ChatMessageChannel& chatMessageChannel);
- void HandleChatMessage(ChatMsg type, Language lang, std::string msg, std::string target = "");
+ void HandleChatMessage(ChatMsg type, Language lang, std::string msg, std::string target = "", Optional<ObjectGuid> channelGuid = {});
void HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMessage& chatAddonMessage);
void HandleChatAddonMessageTargetedOpcode(WorldPackets::Chat::ChatAddonMessageTargeted& chatAddonMessageTargeted);
- void HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, bool isLogged, std::string target = "");
+ void HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, bool isLogged, std::string target = "", Optional<ObjectGuid> channelGuid = {});
void HandleChatMessageAFKOpcode(WorldPackets::Chat::ChatMessageAFK& chatMessageAFK);
void HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND& chatMessageDND);
void HandleChatMessageEmoteOpcode(WorldPackets::Chat::ChatMessageEmote& chatMessageEmote);