aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-05-04 17:00:52 +0200
committerShauren <shauren.trinity@gmail.com>2023-05-04 17:00:52 +0200
commit16bc74667e8996b64258718e95b97258dfc0217a (patch)
tree20c19a6ecd393c55608f2be2f94a74fab2c1b6f1 /src
parent64f8693751090bd28e6dc840a2c218c3c609fcf8 (diff)
Core: Update to 10.1
Diffstat (limited to 'src')
-rw-r--r--src/common/DataStores/DB2FileLoader.cpp90
-rw-r--r--src/common/DataStores/DB2FileLoader.h2
-rw-r--r--src/server/database/Database/Implementation/CharacterDatabase.cpp16
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp14
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp4
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h34
-rw-r--r--src/server/game/DataStores/DB2Metadata.h349
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp6
-rw-r--r--src/server/game/DataStores/DB2Structure.h14
-rw-r--r--src/server/game/Entities/GameObject/GameObjectData.h1
-rw-r--r--src/server/game/Entities/Item/ItemDefines.h5
-rw-r--r--src/server/game/Entities/Object/MovementInfo.h2
-rw-r--r--src/server/game/Entities/Object/Object.cpp21
-rw-r--r--src/server/game/Entities/Object/ObjectDefines.h2
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp519
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h322
-rw-r--r--src/server/game/Entities/Player/Player.cpp111
-rw-r--r--src/server/game/Entities/Player/Player.h21
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp9
-rw-r--r--src/server/game/Entities/Unit/Unit.h8
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp5
-rw-r--r--src/server/game/Loot/Loot.cpp4
-rw-r--r--src/server/game/Loot/Loot.h4
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h49
-rw-r--r--src/server/game/Quests/QuestDef.cpp6
-rw-r--r--src/server/game/Server/Packets/BattlePetPackets.h2
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h1
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h12
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp25
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h6
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.cpp2
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.h2
-rw-r--r--src/server/game/Server/Packets/LootPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/LootPackets.h6
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp24
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h6
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp44
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h30
-rw-r--r--src/server/game/Server/Packets/TaxiPackets.cpp4
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp24
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2022
-rw-r--r--src/server/game/Server/WorldSession.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h1
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp13
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h1
-rw-r--r--src/server/game/Spells/SpellEffects.cpp8
-rw-r--r--src/server/game/Spells/SpellInfo.cpp10
-rw-r--r--src/tools/map_extractor/System.cpp2
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h18
53 files changed, 2265 insertions, 1640 deletions
diff --git a/src/common/DataStores/DB2FileLoader.cpp b/src/common/DataStores/DB2FileLoader.cpp
index 1997438b774..5e14920e45d 100644
--- a/src/common/DataStores/DB2FileLoader.cpp
+++ b/src/common/DataStores/DB2FileLoader.cpp
@@ -114,6 +114,11 @@ struct DB2IndexData
std::vector<DB2IndexEntry> Entries;
};
+static bool IsKnownTactId(uint64 tactId)
+{
+ return tactId == 0 || tactId == DUMMY_KNOWN_TACT_ID;
+}
+
uint32 DB2FileLoadInfo::GetStringFieldCount(bool localizedOnly) const
{
uint32 stringFields = 0;
@@ -409,7 +414,7 @@ char* DB2FileLoaderRegularImpl::AutoProduceData(uint32& indexTableSize, char**&
for (uint32 section = 0; section < _header->SectionCount; ++section)
{
DB2SectionHeader const& sectionHeader = GetSection(section);
- if (sectionHeader.TactId)
+ if (!IsKnownTactId(sectionHeader.TactId))
{
offset += recordsize * sectionHeader.RecordCount;
recordIndex += sectionHeader.RecordCount;
@@ -552,7 +557,7 @@ char* DB2FileLoaderRegularImpl::AutoProduceStrings(char** indexTable, uint32 ind
for (uint32 section = 0; section < _header->SectionCount; ++section)
{
DB2SectionHeader const& sectionHeader = GetSection(section);
- if (sectionHeader.TactId)
+ if (!IsKnownTactId(sectionHeader.TactId))
{
y += sectionHeader.RecordCount;
continue;
@@ -655,7 +660,7 @@ void DB2FileLoaderRegularImpl::FillParentLookup(char* dataTable, char** indexTab
for (uint32 i = 0; i < _header->SectionCount; ++i)
{
DB2SectionHeader const& section = GetSection(i);
- if (!section.TactId)
+ if (IsKnownTactId(section.TactId))
{
for (std::size_t j = 0; j < _parentIndexes[i][0].Entries.size(); ++j)
{
@@ -758,7 +763,7 @@ unsigned char const* DB2FileLoaderRegularImpl::GetRawRecordData(uint32 recordNum
if (recordNumber >= _header->RecordCount)
return nullptr;
- if (GetSection(section ? *section : GetRecordSection(recordNumber)).TactId)
+ if (!IsKnownTactId(GetSection(section ? *section : GetRecordSection(recordNumber)).TactId))
return nullptr;
return &_data[recordNumber * _header->RecordSize];
@@ -1146,7 +1151,7 @@ char* DB2FileLoaderSparseImpl::AutoProduceData(uint32& indexTableSize, char**& i
for (uint32 section = 0; section < _header->SectionCount; ++section)
{
DB2SectionHeader const& sectionHeader = GetSection(section);
- if (sectionHeader.TactId)
+ if (!IsKnownTactId(sectionHeader.TactId))
{
offset += recordsize * sectionHeader.RecordCount;
y += sectionHeader.RecordCount;
@@ -1292,7 +1297,7 @@ char* DB2FileLoaderSparseImpl::AutoProduceStrings(char** indexTable, uint32 inde
for (uint32 section = 0; section < _header->SectionCount; ++section)
{
DB2SectionHeader const& sectionHeader = GetSection(section);
- if (sectionHeader.TactId)
+ if (!IsKnownTactId(sectionHeader.TactId))
{
y += sectionHeader.RecordCount;
continue;
@@ -1424,7 +1429,7 @@ void DB2FileLoaderSparseImpl::FillParentLookup(char* dataTable)
for (uint32 i = 0; i < _header->SectionCount; ++i)
{
DB2SectionHeader const& section = GetSection(i);
- if (!section.TactId)
+ if (IsKnownTactId(section.TactId))
{
for (std::size_t j = 0; j < _parentIndexes[i][0].Entries.size(); ++j)
{
@@ -1498,7 +1503,7 @@ unsigned char const* DB2FileLoaderSparseImpl::GetRawRecordData(uint32 recordNumb
if (recordNumber >= _catalog.size())
return nullptr;
- if (GetSection(section ? *section : GetRecordSection(recordNumber)).TactId)
+ if (!IsKnownTactId(GetSection(section ? *section : GetRecordSection(recordNumber)).TactId))
return nullptr;
_source->SetPosition(_catalog[recordNumber].FileOffset);
@@ -1844,7 +1849,7 @@ void DB2FileLoader::LoadHeaders(DB2FileSource* source, DB2FileLoadInfo const* lo
EndianConvert(_header.PalletDataSize);
EndianConvert(_header.SectionCount);
- if (_header.Signature != 0x33434457) //'WDC3'
+ if (_header.Signature != 0x34434457) //'WDC4'
throw DB2FileLoadException(Trinity::StringFormat("Incorrect file signature in {}, expected 'WDC3', got %c%c%c%c", source->GetFileName(),
char(_header.Signature & 0xFF), char((_header.Signature >> 8) & 0xFF), char((_header.Signature >> 16) & 0xFF), char((_header.Signature >> 24) & 0xFF)));
@@ -1867,33 +1872,6 @@ void DB2FileLoader::LoadHeaders(DB2FileSource* source, DB2FileLoadInfo const* lo
if (_header.SectionCount && !source->Read(sections.get(), sizeof(DB2SectionHeader) * _header.SectionCount))
throw DB2FileLoadException(Trinity::StringFormat("Unable to read section headers from {}", source->GetFileName()));
- uint32 totalCopyTableSize = 0;
- uint32 totalParentLookupDataSize = 0;
- for (uint32 i = 0; i < _header.SectionCount; ++i)
- {
- totalCopyTableSize += sections[i].CopyTableCount * sizeof(DB2RecordCopy);
- totalParentLookupDataSize += sections[i].ParentLookupDataSize;
- }
-
- if (loadInfo && !(_header.Flags & 0x1))
- {
- int64 expectedFileSize =
- sizeof(DB2Header) +
- sizeof(DB2SectionHeader) * _header.SectionCount +
- sizeof(DB2FieldEntry) * _header.FieldCount +
- int64(_header.RecordSize) * _header.RecordCount +
- _header.StringTableSize +
- (loadInfo->Meta->IndexField == -1 ? sizeof(uint32) * _header.RecordCount : 0) +
- totalCopyTableSize +
- _header.ColumnMetaSize +
- _header.PalletDataSize +
- _header.CommonDataSize +
- totalParentLookupDataSize;
-
- if (source->GetFileSize() != expectedFileSize)
- throw DB2FileLoadException(Trinity::StringFormat("{} failed size consistency check, expected {}, got {}", source->GetFileName(), expectedFileSize, source->GetFileSize()));
- }
-
std::unique_ptr<DB2FieldEntry[]> fieldData = std::make_unique<DB2FieldEntry[]>(_header.FieldCount);
if (!source->Read(fieldData.get(), sizeof(DB2FieldEntry) * _header.FieldCount))
throw DB2FileLoadException(Trinity::StringFormat("Unable to read field information from {}", source->GetFileName()));
@@ -1995,6 +1973,44 @@ void DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo)
if (section.TactId)
{
+ uint32 encryptedIdCount;
+ if (!source->Read(&encryptedIdCount, sizeof(encryptedIdCount)))
+ throw DB2FileLoadException(Trinity::StringFormat("Unable to read number of encrypted records in {} for section {}", source->GetFileName(), i));
+
+ // it doesnt matter what the encrypted ids are, we have no use for them
+ source->SetPosition(source->GetPosition() + sizeof(uint32) * encryptedIdCount);
+ }
+ }
+
+ if (loadInfo && !(_header.Flags & 0x1))
+ {
+ uint32 totalCopyTableSize = 0;
+ uint32 totalParentLookupDataSize = 0;
+ for (uint32 i = 0; i < _header.SectionCount; ++i)
+ {
+ DB2SectionHeader& section = _impl->GetSection(i);
+ totalCopyTableSize += section.CopyTableCount * sizeof(DB2RecordCopy);
+ totalParentLookupDataSize += section.ParentLookupDataSize;
+ }
+
+ int64 expectedFileSize =
+ source->GetPosition() +
+ int64(_header.RecordSize) * _header.RecordCount +
+ _header.StringTableSize +
+ (loadInfo->Meta->IndexField == -1 ? sizeof(uint32) * _header.RecordCount : 0) +
+ totalCopyTableSize +
+ totalParentLookupDataSize;
+
+ if (source->GetFileSize() != expectedFileSize)
+ throw DB2FileLoadException(Trinity::StringFormat("{} failed size consistency check, expected {}, got {}", source->GetFileName(), expectedFileSize, source->GetFileSize()));
+ }
+
+ for (uint32 i = 0; i < _header.SectionCount; ++i)
+ {
+ DB2SectionHeader& section = _impl->GetSection(i);
+
+ if (!IsKnownTactId(section.TactId))
+ {
switch (source->HandleEncryptedSection(section))
{
case DB2EncryptedSectionHandling::Skip:
@@ -2002,7 +2018,7 @@ void DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo)
idTable.resize(idTable.size() + section.IdTableSize / sizeof(uint32));
continue;
case DB2EncryptedSectionHandling::Process:
- section.TactId = 0;
+ section.TactId = DUMMY_KNOWN_TACT_ID;
break;
default:
break;
diff --git a/src/common/DataStores/DB2FileLoader.h b/src/common/DataStores/DB2FileLoader.h
index b8e8e222a8b..29e78463f38 100644
--- a/src/common/DataStores/DB2FileLoader.h
+++ b/src/common/DataStores/DB2FileLoader.h
@@ -66,6 +66,8 @@ struct DB2SectionHeader
#pragma pack(pop)
+inline constinit uint64 DUMMY_KNOWN_TACT_ID = 0x5452494E49545900; // TRINITY
+
struct DB2FieldMeta
{
bool IsSigned;
diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp
index c609bc8a620..bef3fa0b778 100644
--- a/src/server/database/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp
@@ -86,8 +86,8 @@ void CharacterDatabaseConnection::DoPrepareStatements()
"position_x, position_y, position_z, map, orientation, taximask, createTime, createMode, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, "
"resettalents_time, primarySpecialization, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, summonedPetNumber, at_login, zone, online, death_expire_time, taxi_path, dungeonDifficulty, "
"totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, "
- "health, power1, power2, power3, power4, power5, power6, power7, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, raidDifficulty, legacyRaidDifficulty, fishingSteps, "
- "honor, honorLevel, honorRestState, honorRestBonus, numRespecs "
+ "health, power1, power2, power3, power4, power5, power6, power7, power8, power9, power10, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, "
+ "raidDifficulty, legacyRaidDifficulty, fishingSteps, honor, honorLevel, honorRestState, honorRestBonus, numRespecs "
"FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_CHARACTER_CUSTOMIZATIONS, "SELECT chrCustomizationOptionID, chrCustomizationChoiceID FROM character_customizations WHERE guid = ? ORDER BY chrCustomizationOptionID", CONNECTION_ASYNC);
@@ -469,13 +469,13 @@ void CharacterDatabaseConnection::DoPrepareStatements()
"extra_flags, summonedPetNumber, at_login, "
"death_expire_time, taxi_path, totalKills, "
"todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, power1, power2, power3, "
- "power4, power5, power6, power7, latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, lastLoginBuild) VALUES "
- "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", CONNECTION_ASYNC);
+ "power4, power5, power6, power7, power8, power9, power10, latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, lastLoginBuild) VALUES "
+ "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_CHARACTER, "UPDATE characters SET name=?,race=?,class=?,gender=?,level=?,xp=?,money=?,inventorySlots=?,bankSlots=?,restState=?,playerFlags=?,playerFlagsEx=?,"
"map=?,instance_id=?,dungeonDifficulty=?,raidDifficulty=?,legacyRaidDifficulty=?,position_x=?,position_y=?,position_z=?,orientation=?,trans_x=?,trans_y=?,trans_z=?,trans_o=?,transguid=?,taximask=?,cinematic=?,totaltime=?,leveltime=?,rest_bonus=?,"
"logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,numRespecs=?,primarySpecialization=?,extra_flags=?,summonedPetNumber=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?,"
"totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?,"
- "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,power7=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?,"
+ "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,power7=?,power8=?,power9=?,power10=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?,"
"equipmentCache=?,knownTitles=?,actionBars=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?", CONNECTION_ASYNC);
@@ -643,9 +643,9 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_DEL_CHAR_SPELL_FAVORITE_BY_CHAR, "DELETE FROM character_spell_favorite WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_CHAR_SPELL_FAVORITE, "INSERT INTO character_spell_favorite (guid, spell) VALUES (?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_CHAR_STATS, "DELETE FROM character_stats WHERE guid = ?", CONNECTION_ASYNC);
- PrepareStatement(CHAR_INS_CHAR_STATS, "INSERT INTO character_stats (guid, maxhealth, maxpower1, maxpower2, maxpower3, maxpower4, maxpower5, maxpower6, maxpower7, strength, agility, stamina, intellect, "
- "armor, resHoly, resFire, resNature, resFrost, resShadow, resArcane, blockPct, dodgePct, parryPct, critPct, rangedCritPct, spellCritPct, attackPower, rangedAttackPower, "
- "spellPower, resilience) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_INS_CHAR_STATS, "INSERT INTO character_stats (guid, maxhealth, maxpower1, maxpower2, maxpower3, maxpower4, maxpower5, maxpower6, maxpower7, maxpower8, maxpower9, maxpower10, "
+ "strength, agility, stamina, intellect, armor, resHoly, resFire, resNature, resFrost, resShadow, resArcane, blockPct, dodgePct, parryPct, critPct, rangedCritPct, spellCritPct, "
+ "attackPower, rangedAttackPower, spellPower, resilience) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_BY_OWNER, "DELETE FROM petition WHERE ownerguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER, "DELETE FROM petition_sign WHERE ownerguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_CHAR_GLYPHS, "INSERT INTO character_glyphs VALUES(?, ?, ?)", CONNECTION_ASYNC);
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp
index 37826e5341d..f87b13cb55d 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp
@@ -342,7 +342,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ChrCustomizationChoice.db2
PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_CHOICE, "SELECT Name, ID, ChrCustomizationOptionID, ChrCustomizationReqID, "
- "ChrCustomizationVisReqID, SortOrder, UiOrderIndex, Flags, AddedInPatch, SwatchColor1, SwatchColor2 FROM chr_customization_choice"
+ "ChrCustomizationVisReqID, SortOrder, UiOrderIndex, Flags, AddedInPatch, SoundKitID, SwatchColor1, SwatchColor2 FROM chr_customization_choice"
" WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_CHOICE, "SELECT MAX(ID) + 1 FROM chr_customization_choice", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_CHOICE, "SELECT ID, Name_lang FROM chr_customization_choice_locale"
@@ -356,8 +356,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ChrCustomizationElement.db2
PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT, "SELECT ID, ChrCustomizationChoiceID, RelatedChrCustomizationChoiceID, "
"ChrCustomizationGeosetID, ChrCustomizationSkinnedModelID, ChrCustomizationMaterialID, ChrCustomizationBoneSetID, "
- "ChrCustomizationCondModelID, ChrCustomizationDisplayInfoID, ChrCustItemGeoModifyID, ChrCustomizationVoiceID FROM chr_customization_element"
- " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "ChrCustomizationCondModelID, ChrCustomizationDisplayInfoID, ChrCustItemGeoModifyID, ChrCustomizationVoiceID, AnimKitID"
+ " FROM chr_customization_element WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT, "SELECT MAX(ID) + 1 FROM chr_customization_element", CONNECTION_SYNCH);
// ChrCustomizationOption.db2
@@ -429,7 +429,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ContentTuning.db2
PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, Flags, ExpansionID, MinLevel, MaxLevel, MinLevelType, MaxLevelType, TargetLevelDelta, "
- "TargetLevelMaxDelta, TargetLevelMin, TargetLevelMax, MinItemLevel FROM content_tuning WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "TargetLevelMaxDelta, TargetLevelMin, TargetLevelMax, MinItemLevel, QuestXpMultiplier FROM content_tuning WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONTENT_TUNING, "SELECT MAX(ID) + 1 FROM content_tuning", CONNECTION_SYNCH);
// ContentTuningXExpected.db2
@@ -828,7 +828,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ItemBonusTreeNode.db2
PrepareStatement(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT ID, ItemContext, ChildItemBonusTreeID, ChildItemBonusListID, ChildItemLevelSelectorID, "
- "ChildItemBonusListGroupID, IblGroupPointsModSetID, ParentItemBonusTreeID FROM item_bonus_tree_node WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ "ChildItemBonusListGroupID, IblGroupPointsModSetID, Unknown1010_1, Unknown1010_2, ParentItemBonusTreeID FROM item_bonus_tree_node"
+ " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT MAX(ID) + 1 FROM item_bonus_tree_node", CONNECTION_SYNCH);
// ItemChildEquipment.db2
@@ -1135,7 +1136,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT_X_DISPLAY, "SELECT MAX(ID) + 1 FROM mount_x_display", CONNECTION_SYNCH);
// Movie.db2
- PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Volume, KeyID, AudioFileDataID, SubtitleFileDataID FROM movie WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Volume, KeyID, AudioFileDataID, SubtitleFileDataID, SubtitleFileFormat FROM movie"
+ " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOVIE, "SELECT MAX(ID) + 1 FROM movie", CONNECTION_SYNCH);
// NameGen.db2
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index 536e1559d0a..3b641adcb95 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -361,7 +361,7 @@ bool Battlefield::HasPlayer(Player* player) const
return m_players[player->GetTeamId()].find(player->GetGUID()) != m_players[player->GetTeamId()].end();
}
-// Called in WorldSession::HandleBfQueueInviteResponse
+// Called in Battlefield::InvitePlayerToQueue
void Battlefield::PlayerAcceptInviteToQueue(Player* player)
{
// Add player in queue
@@ -383,7 +383,7 @@ void Battlefield::PlayerAskToLeave(Player* player)
player->TeleportTo(571, 5804.1499f, 624.7710f, 647.7670f, 1.6400f);
}
-// Called in WorldSession::HandleBfEntryInviteResponse
+// Called in Battlefield::InvitePlayerToWar
void Battlefield::PlayerAcceptInviteToWar(Player* player)
{
if (!IsWarTime())
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h
index 8757dfd0570..96acddf6a11 100644
--- a/src/server/game/DataStores/DB2LoadInfo.h
+++ b/src/server/game/DataStores/DB2LoadInfo.h
@@ -938,7 +938,7 @@ struct ChrClassesXPowerTypesLoadInfo
struct ChrCustomizationChoiceLoadInfo
{
- static constexpr DB2FieldMeta Fields[11] =
+ static constexpr DB2FieldMeta Fields[12] =
{
{ false, FT_STRING, "Name" },
{ false, FT_INT, "ID" },
@@ -949,11 +949,12 @@ struct ChrCustomizationChoiceLoadInfo
{ false, FT_SHORT, "UiOrderIndex" },
{ true, FT_INT, "Flags" },
{ true, FT_INT, "AddedInPatch" },
+ { true, FT_INT, "SoundKitID" },
{ true, FT_INT, "SwatchColor1" },
{ true, FT_INT, "SwatchColor2" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 11, &ChrCustomizationChoiceMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_CHOICE };
+ static constexpr DB2LoadInfo Instance{ Fields, 12, &ChrCustomizationChoiceMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_CHOICE };
};
struct ChrCustomizationDisplayInfoLoadInfo
@@ -972,7 +973,7 @@ struct ChrCustomizationDisplayInfoLoadInfo
struct ChrCustomizationElementLoadInfo
{
- static constexpr DB2FieldMeta Fields[11] =
+ static constexpr DB2FieldMeta Fields[12] =
{
{ false, FT_INT, "ID" },
{ true, FT_INT, "ChrCustomizationChoiceID" },
@@ -985,9 +986,10 @@ struct ChrCustomizationElementLoadInfo
{ true, FT_INT, "ChrCustomizationDisplayInfoID" },
{ true, FT_INT, "ChrCustItemGeoModifyID" },
{ true, FT_INT, "ChrCustomizationVoiceID" },
+ { true, FT_INT, "AnimKitID" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 11, &ChrCustomizationElementMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT };
+ static constexpr DB2LoadInfo Instance{ Fields, 12, &ChrCustomizationElementMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_ELEMENT };
};
struct ChrCustomizationOptionLoadInfo
@@ -1218,7 +1220,7 @@ struct CinematicSequencesLoadInfo
struct ContentTuningLoadInfo
{
- static constexpr DB2FieldMeta Fields[12] =
+ static constexpr DB2FieldMeta Fields[13] =
{
{ false, FT_INT, "ID" },
{ true, FT_INT, "Flags" },
@@ -1232,9 +1234,10 @@ struct ContentTuningLoadInfo
{ true, FT_INT, "TargetLevelMin" },
{ true, FT_INT, "TargetLevelMax" },
{ true, FT_INT, "MinItemLevel" },
+ { false, FT_FLOAT, "QuestXpMultiplier" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 12, &ContentTuningMeta::Instance, HOTFIX_SEL_CONTENT_TUNING };
+ static constexpr DB2LoadInfo Instance{ Fields, 13, &ContentTuningMeta::Instance, HOTFIX_SEL_CONTENT_TUNING };
};
struct ContentTuningXExpectedLoadInfo
@@ -1520,7 +1523,7 @@ struct CurvePointLoadInfo
{ false, FT_FLOAT, "PreSLSquishPosX" },
{ false, FT_FLOAT, "PreSLSquishPosY" },
{ false, FT_INT, "ID" },
- { false, FT_SHORT, "CurveID" },
+ { true, FT_INT, "CurveID" },
{ false, FT_BYTE, "OrderIndex" },
};
@@ -2597,7 +2600,7 @@ struct ItemBonusListLevelDeltaLoadInfo
struct ItemBonusTreeNodeLoadInfo
{
- static constexpr DB2FieldMeta Fields[8] =
+ static constexpr DB2FieldMeta Fields[10] =
{
{ false, FT_INT, "ID" },
{ false, FT_BYTE, "ItemContext" },
@@ -2606,10 +2609,12 @@ struct ItemBonusTreeNodeLoadInfo
{ false, FT_SHORT, "ChildItemLevelSelectorID" },
{ true, FT_INT, "ChildItemBonusListGroupID" },
{ true, FT_INT, "IblGroupPointsModSetID" },
+ { true, FT_INT, "Unknown1010_1" },
+ { true, FT_INT, "Unknown1010_2" },
{ false, FT_INT, "ParentItemBonusTreeID" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 8, &ItemBonusTreeNodeMeta::Instance, HOTFIX_SEL_ITEM_BONUS_TREE_NODE };
+ static constexpr DB2LoadInfo Instance{ Fields, 10, &ItemBonusTreeNodeMeta::Instance, HOTFIX_SEL_ITEM_BONUS_TREE_NODE };
};
struct ItemChildEquipmentLoadInfo
@@ -3690,16 +3695,17 @@ struct MountXDisplayLoadInfo
struct MovieLoadInfo
{
- static constexpr DB2FieldMeta Fields[5] =
+ static constexpr DB2FieldMeta Fields[6] =
{
{ false, FT_INT, "ID" },
{ false, FT_BYTE, "Volume" },
{ false, FT_BYTE, "KeyID" },
{ false, FT_INT, "AudioFileDataID" },
{ false, FT_INT, "SubtitleFileDataID" },
+ { true, FT_INT, "SubtitleFileFormat" },
};
- static constexpr DB2LoadInfo Instance{ Fields, 5, &MovieMeta::Instance, HOTFIX_SEL_MOVIE };
+ static constexpr DB2LoadInfo Instance{ Fields, 6, &MovieMeta::Instance, HOTFIX_SEL_MOVIE };
};
struct NameGenLoadInfo
@@ -5949,8 +5955,8 @@ struct UiMapLoadInfo
{ false, FT_INT, "ID" },
{ true, FT_INT, "ParentUiMapID" },
{ true, FT_INT, "Flags" },
- { false, FT_INT, "System" },
- { false, FT_INT, "Type" },
+ { false, FT_BYTE, "System" },
+ { false, FT_BYTE, "Type" },
{ true, FT_INT, "BountySetID" },
{ false, FT_INT, "BountyDisplayLocation" },
{ true, FT_INT, "VisibilityPlayerConditionID" },
@@ -6125,7 +6131,7 @@ struct VehicleLoadInfo
{
{ false, FT_INT, "ID" },
{ true, FT_INT, "Flags" },
- { false, FT_BYTE, "FlagsB" },
+ { true, FT_INT, "FlagsB" },
{ false, FT_FLOAT, "TurnSpeed" },
{ false, FT_FLOAT, "PitchSpeed" },
{ false, FT_FLOAT, "PitchMin" },
diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h
index 0c275f5c918..fda46a4ec97 100644
--- a/src/server/game/DataStores/DB2Metadata.h
+++ b/src/server/game/DataStores/DB2Metadata.h
@@ -59,6 +59,30 @@ struct Achievement_CategoryMeta
static constexpr DB2Meta Instance{ 1324299, 1, 4, 4, 0xC3562871, Fields, 3 };
};
+struct ActionBarGroupMeta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 4572795, -1, 1, 1, 0xE490BC05, Fields, -1 };
+};
+
+struct ActionBarGroupEntryMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 4572797, -1, 5, 4, 0x40E3832D, Fields, 4 };
+};
+
struct AdventureJournalMeta
{
static constexpr DB2MetaField Fields[22] =
@@ -1279,6 +1303,24 @@ struct BeamEffectMeta
static constexpr DB2Meta Instance{ 1525607, -1, 10, 10, 0xF1E61217, Fields, -1 };
};
+struct BeckonTriggerMeta
+{
+ static constexpr DB2MetaField Fields[9] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_BYTE, 1, false },
+ { FT_INT, 1, true },
+ { FT_FLOAT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 3491563, -1, 9, 8, 0x7DF24A7B, Fields, 8 };
+};
+
struct BoneWindModifierModelMeta
{
static constexpr DB2MetaField Fields[2] =
@@ -1595,11 +1637,11 @@ struct CharComponentTextureLayoutsMeta
{
static constexpr DB2MetaField Fields[2] =
{
- { FT_SHORT, 1, true },
- { FT_SHORT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1360262, -1, 2, 2, 0xB4407510, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1360262, -1, 2, 2, 0x7F7D8978, Fields, -1 };
};
struct CharComponentTextureSectionsMeta
@@ -1721,6 +1763,22 @@ struct CharStartKitMeta
static constexpr DB2Meta Instance{ 3055696, -1, 16, 15, 0x00B44453, Fields, 15 };
};
+struct CharStartOutfitMeta
+{
+ static constexpr DB2MetaField Fields[7] =
+ {
+ { FT_BYTE, 1, false },
+ { FT_BYTE, 1, false },
+ { FT_BYTE, 1, false },
+ { FT_INT, 1, false },
+ { FT_BYTE, 1, false },
+ { FT_INT, 24, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 1237591, -1, 7, 6, 0x3CF88584, Fields, 6 };
+};
+
struct CharTitlesMeta
{
static constexpr DB2MetaField Fields[4] =
@@ -1734,6 +1792,20 @@ struct CharTitlesMeta
static constexpr DB2Meta Instance{ 1349054, -1, 4, 4, 0xD7398A05, Fields, -1 };
};
+struct CharacterFaceBoneSetMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { FT_BYTE, 1, false },
+ { FT_INT, 1, true },
+ { FT_BYTE, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 1028733, -1, 5, 4, 0xD21C8EC2, Fields, 4 };
+};
+
struct CharacterFacialHairStylesMeta
{
static constexpr DB2MetaField Fields[4] =
@@ -2052,7 +2124,7 @@ struct ChrCustomizationCategoryMeta
struct ChrCustomizationChoiceMeta
{
- static constexpr DB2MetaField Fields[10] =
+ static constexpr DB2MetaField Fields[11] =
{
{ FT_STRING, 1, true },
{ FT_INT, 1, false },
@@ -2063,10 +2135,11 @@ struct ChrCustomizationChoiceMeta
{ FT_SHORT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
{ FT_INT, 2, true },
};
- static constexpr DB2Meta Instance{ 3450554, 1, 10, 10, 0x03A6DCB1, Fields, 2 };
+ static constexpr DB2Meta Instance{ 3450554, 1, 11, 11, 0xAA548AE1, Fields, 2 };
};
struct ChrCustomizationCondModelMeta
@@ -2112,7 +2185,7 @@ struct ChrCustomizationDisplayInfoMeta
struct ChrCustomizationElementMeta
{
- static constexpr DB2MetaField Fields[10] =
+ static constexpr DB2MetaField Fields[11] =
{
{ FT_INT, 1, true },
{ FT_INT, 1, true },
@@ -2124,9 +2197,10 @@ struct ChrCustomizationElementMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 3512765, -1, 10, 10, 0x0E39F850, Fields, -1 };
+ static constexpr DB2Meta Instance{ 3512765, -1, 11, 11, 0x978B6C48, Fields, -1 };
};
struct ChrCustomizationGeosetMeta
@@ -2395,7 +2469,7 @@ struct ChrRacesCreateScreenIconMeta
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 4566929, 0, 4, 4, 0xD69ECEFF, Fields, -1 };
+ static constexpr DB2Meta Instance{ 4566929, 0, 4, 4, 0x892075D2, Fields, 1 };
};
struct ChrSelectBackgroundCDIMeta
@@ -2685,7 +2759,7 @@ struct ContentRestrictionRuleSetMeta
struct ContentTuningMeta
{
- static constexpr DB2MetaField Fields[11] =
+ static constexpr DB2MetaField Fields[12] =
{
{ FT_INT, 1, true },
{ FT_INT, 1, true },
@@ -2698,9 +2772,10 @@ struct ContentTuningMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_FLOAT, 1, true },
};
- static constexpr DB2Meta Instance{ 1962930, -1, 11, 11, 0xACA848DF, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1962930, -1, 12, 12, 0x3E5D4B74, Fields, -1 };
};
struct ContentTuningXExpectedMeta
@@ -2954,6 +3029,17 @@ struct CraftingReagentQualityMeta
static constexpr DB2Meta Instance{ 4382197, 0, 6, 5, 0xCE4DB0CC, Fields, 5 };
};
+struct CraftingReagentRequirementMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5049814, -1, 2, 1, 0x3F971F7F, Fields, 1 };
+};
+
struct CreatureMeta
{
static constexpr DB2MetaField Fields[11] =
@@ -3467,11 +3553,11 @@ struct CurvePointMeta
{ FT_FLOAT, 2, true },
{ FT_FLOAT, 2, true },
{ FT_INT, 1, false },
- { FT_SHORT, 1, false },
+ { FT_INT, 1, true },
{ FT_BYTE, 1, false },
};
- static constexpr DB2Meta Instance{ 892586, 2, 5, 5, 0x7B45328E, Fields, 3 };
+ static constexpr DB2Meta Instance{ 892586, 2, 5, 5, 0x32694505, Fields, 3 };
};
struct DeathThudLookupsMeta
@@ -3610,16 +3696,17 @@ struct DifficultyMeta
struct DisplaySeasonMeta
{
- static constexpr DB2MetaField Fields[5] =
+ static constexpr DB2MetaField Fields[6] =
{
{ FT_STRING, 1, true },
+ { FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 4279827, -1, 5, 5, 0xA2007E11, Fields, -1 };
+ static constexpr DB2Meta Instance{ 4279827, 1, 6, 6, 0x307B0C4C, Fields, -1 };
};
struct DissolveEffectMeta
@@ -4108,6 +4195,21 @@ struct GameClockDebugMeta
static constexpr DB2Meta Instance{ 2922072, -1, 1, 1, 0xD30981EC, Fields, -1 };
};
+struct GameModeMeta
+{
+ static constexpr DB2MetaField Fields[6] =
+ {
+ { FT_STRING, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5008306, -1, 6, 6, 0x45EE0D98, Fields, -1 };
+};
+
struct GameObjectAnimGroupMemberMeta
{
static constexpr DB2MetaField Fields[4] =
@@ -5856,15 +5958,16 @@ struct ItemBonusListMeta
struct ItemBonusListGroupMeta
{
- static constexpr DB2MetaField Fields[4] =
+ static constexpr DB2MetaField Fields[5] =
{
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 3755382, -1, 4, 4, 0x63FD68EB, Fields, -1 };
+ static constexpr DB2Meta Instance{ 3755382, -1, 5, 5, 0xF169B927, Fields, -1 };
};
struct ItemBonusListGroupEntryMeta
@@ -5907,6 +6010,46 @@ struct ItemBonusListWarforgeLevelDeltaMeta
static constexpr DB2Meta Instance{ 2924997, 1, 2, 2, 0xC6EA2151, Fields, -1 };
};
+struct ItemBonusSeasonMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5155639, 0, 2, 2, 0x7F150202, Fields, -1 };
+};
+
+struct ItemBonusSeasonBonusListGroupMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5155640, 0, 4, 4, 0x284E8A83, Fields, 3 };
+};
+
+struct ItemBonusSeasonUpgradeCostMeta
+{
+ static constexpr DB2MetaField Fields[7] =
+ {
+ { FT_STRING, 1, true },
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5155641, 1, 7, 7, 0xCFA99EBB, Fields, 4 };
+};
+
struct ItemBonusSequenceSpellMeta
{
static constexpr DB2MetaField Fields[2] =
@@ -5942,7 +6085,7 @@ struct ItemBonusTreeGroupEntryMeta
struct ItemBonusTreeNodeMeta
{
- static constexpr DB2MetaField Fields[7] =
+ static constexpr DB2MetaField Fields[9] =
{
{ FT_BYTE, 1, false },
{ FT_SHORT, 1, false },
@@ -5951,9 +6094,11 @@ struct ItemBonusTreeNodeMeta
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 987134, -1, 7, 6, 0xC1AEA21E, Fields, 6 };
+ static constexpr DB2Meta Instance{ 987134, -1, 9, 8, 0xF5BD96C0, Fields, 8 };
};
struct ItemChildEquipmentMeta
@@ -5981,6 +6126,16 @@ struct ItemClassMeta
static constexpr DB2Meta Instance{ 1140189, -1, 4, 4, 0xC21C5BEA, Fields, -1 };
};
+struct ItemConditionMeta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5128111, -1, 1, 1, 0xC2F7FE6F, Fields, -1 };
+};
+
struct ItemContextPickerEntryMeta
{
static constexpr DB2MetaField Fields[7] =
@@ -6211,6 +6366,30 @@ struct ItemFallbackVisualMeta
static constexpr DB2Meta Instance{ 2358574, -1, 3, 3, 0xB0198BA2, Fields, -1 };
};
+struct ItemFixupMeta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5152256, -1, 1, 1, 0x31DF97E4, Fields, -1 };
+};
+
+struct ItemGroupIlvlScalingEntryMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_FLOAT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5015219, -1, 5, 4, 0x38E9D642, Fields, 4 };
+};
+
struct ItemGroupSoundsMeta
{
static constexpr DB2MetaField Fields[1] =
@@ -6390,6 +6569,20 @@ struct ItemRangedDisplayInfoMeta
static constexpr DB2Meta Instance{ 1270315, -1, 4, 4, 0x08C2EB5B, Fields, -1 };
};
+struct ItemRecraftMeta
+{
+ static constexpr DB2MetaField Fields[5] =
+ {
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5150118, 0, 5, 4, 0xE00E7F34, Fields, 4 };
+};
+
struct ItemSalvageMeta
{
static constexpr DB2MetaField Fields[3] =
@@ -6798,14 +6991,15 @@ struct JournalTierMeta
struct JournalTierXInstanceMeta
{
- static constexpr DB2MetaField Fields[3] =
+ static constexpr DB2MetaField Fields[4] =
{
{ FT_SHORT, 1, false },
{ FT_SHORT, 1, false },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1285009, -1, 3, 3, 0x003E6589, Fields, 0 };
+ static constexpr DB2Meta Instance{ 1285009, -1, 4, 4, 0x1351FB2E, Fields, 0 };
};
struct KeychainMeta
@@ -7179,6 +7373,19 @@ struct LivingWorldObjectTemplateMeta
static constexpr DB2Meta Instance{ 4276965, -1, 1, 1, 0x74706E81, Fields, -1 };
};
+struct LivingWorldObjectTemplateModelMeta
+{
+ static constexpr DB2MetaField Fields[4] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 4276966, -1, 4, 3, 0xA5D81C93, Fields, 3 };
+};
+
struct LoadingScreenSkinMeta
{
static constexpr DB2MetaField Fields[1] =
@@ -7437,6 +7644,16 @@ struct ManifestInterfaceTOCDataMeta
static constexpr DB2Meta Instance{ 1267335, -1, 1, 1, 0x1FBF8808, Fields, -1 };
};
+struct ManifestMP3Meta
+{
+ static constexpr DB2MetaField Fields[1] =
+ {
+ { FT_INT, 1, false },
+ };
+
+ static constexpr DB2Meta Instance{ 1375802, 0, 1, 1, 0x6657BD0A, Fields, -1 };
+};
+
struct MapMeta
{
static constexpr DB2MetaField Fields[24] =
@@ -7694,7 +7911,7 @@ struct ModifiedCraftingCategoryMeta
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 3386486, -1, 5, 5, 0x0BD1387B, Fields, -1 };
+ static constexpr DB2Meta Instance{ 3386486, -1, 5, 5, 0xB8B17FD4, Fields, -1 };
};
struct ModifiedCraftingItemMeta
@@ -7736,7 +7953,7 @@ struct ModifiedCraftingReagentSlotMeta
{ FT_BYTE, 1, false },
};
- static constexpr DB2Meta Instance{ 3386488, 1, 6, 6, 0xFEE69CA3, Fields, -1 };
+ static constexpr DB2Meta Instance{ 3386488, 1, 6, 6, 0x24D8DB66, Fields, -1 };
};
struct ModifiedCraftingSpellSlotMeta
@@ -7874,15 +8091,16 @@ struct MountXSpellVisualKitPickerMeta
struct MovieMeta
{
- static constexpr DB2MetaField Fields[4] =
+ static constexpr DB2MetaField Fields[5] =
{
{ FT_BYTE, 1, false },
{ FT_BYTE, 1, false },
{ FT_INT, 1, false },
{ FT_INT, 1, false },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1332556, -1, 4, 4, 0xA3A2FAF5, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1332556, -1, 5, 5, 0x214C1925, Fields, -1 };
};
struct MovieFileDataMeta
@@ -7943,14 +8161,15 @@ struct MultiTransitionPropertiesMeta
struct MythicPlusSeasonMeta
{
- static constexpr DB2MetaField Fields[3] =
+ static constexpr DB2MetaField Fields[4] =
{
+ { FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 2400282, -1, 3, 3, 0x37FBB583, Fields, -1 };
+ static constexpr DB2Meta Instance{ 2400282, 0, 4, 4, 0x0FE9B9A8, Fields, -1 };
};
struct MythicPlusSeasonRewardLevelsMeta
@@ -8243,14 +8462,15 @@ struct PVPScoreboardCellInfoMeta
struct PVPScoreboardColumnHeaderMeta
{
- static constexpr DB2MetaField Fields[3] =
+ static constexpr DB2MetaField Fields[4] =
{
{ FT_STRING, 1, true },
{ FT_STRING, 1, true },
+ { FT_STRING, 1, true },
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 2992917, -1, 3, 3, 0x268E3459, Fields, -1 };
+ static constexpr DB2Meta Instance{ 2992917, -1, 4, 4, 0x10110777, Fields, -1 };
};
struct PVPScoreboardLayoutMeta
@@ -8414,16 +8634,18 @@ struct PathPropertyMeta
struct PerksActivityMeta
{
- static constexpr DB2MetaField Fields[5] =
+ static constexpr DB2MetaField Fields[7] =
{
{ FT_STRING, 1, true },
{ FT_STRING, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 4519766, 2, 5, 5, 0x6FD48C11, Fields, -1 };
+ static constexpr DB2Meta Instance{ 4519766, 2, 7, 7, 0x4FF9AFB2, Fields, -1 };
};
struct PerksActivityTagMeta
@@ -9126,15 +9348,16 @@ struct QuestInfoMeta
struct QuestLineMeta
{
- static constexpr DB2MetaField Fields[4] =
+ static constexpr DB2MetaField Fields[5] =
{
{ FT_STRING, 1, true },
{ FT_STRING, 1, true },
+ { FT_INT, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 973430, -1, 4, 4, 0x8972E620, Fields, -1 };
+ static constexpr DB2Meta Instance{ 973430, -1, 5, 5, 0xA360A782, Fields, -1 };
};
struct QuestLineXQuestMeta
@@ -9179,11 +9402,12 @@ struct QuestObjectiveMeta
struct QuestPOIBlobMeta
{
- static constexpr DB2MetaField Fields[9] =
+ static constexpr DB2MetaField Fields[10] =
{
{ FT_INT, 1, false },
{ FT_SHORT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
{ FT_BYTE, 1, false },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
@@ -9192,7 +9416,7 @@ struct QuestPOIBlobMeta
{ FT_INT, 1, false },
};
- static constexpr DB2Meta Instance{ 1251882, 0, 9, 9, 0xBD552CA4, Fields, 1 };
+ static constexpr DB2Meta Instance{ 1251882, 0, 10, 10, 0x714523FD, Fields, 1 };
};
struct QuestPOIPointMeta
@@ -11073,6 +11297,17 @@ struct SpellMechanicMeta
static constexpr DB2Meta Instance{ 1014438, -1, 1, 1, 0x4E0C4A43, Fields, -1 };
};
+struct SpellMemorizeCostMeta
+{
+ static constexpr DB2MetaField Fields[2] =
+ {
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 3549053, -1, 2, 1, 0x6F1A6B5A, Fields, 1 };
+};
+
struct SpellMiscMeta
{
static constexpr DB2MetaField Fields[16] =
@@ -11132,7 +11367,7 @@ struct SpellMissileMotionMeta
{ FT_BYTE, 1, false },
};
- static constexpr DB2Meta Instance{ 897955, -1, 4, 4, 0xE98CFA44, Fields, -1 };
+ static constexpr DB2Meta Instance{ 897955, -1, 4, 4, 0x65CEAA0A, Fields, -1 };
};
struct SpellNameMeta
@@ -12441,6 +12676,24 @@ struct TrophyMeta
static constexpr DB2Meta Instance{ 975024, -1, 4, 4, 0x72D11E6D, Fields, -1 };
};
+struct UIArrowCalloutMeta
+{
+ static constexpr DB2MetaField Fields[9] =
+ {
+ { FT_STRING, 1, true },
+ { FT_STRING_NOT_LOCALIZED, 1, true },
+ { FT_INT, 1, false },
+ { FT_BYTE, 1, false },
+ { FT_BYTE, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
+ };
+
+ static constexpr DB2Meta Instance{ 5011999, 2, 9, 9, 0xC42C586B, Fields, -1 };
+};
+
struct UIChromieTimeExpansionInfoMeta
{
static constexpr DB2MetaField Fields[11] =
@@ -12595,17 +12848,21 @@ struct UIExpansionDisplayInfoIconMeta
struct UIGenericWidgetDisplayMeta
{
- static constexpr DB2MetaField Fields[6] =
+ static constexpr DB2MetaField Fields[10] =
{
{ FT_STRING, 1, true },
+ { FT_STRING, 1, true },
+ { FT_STRING, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 4861207, 1, 6, 6, 0xDE7C26FF, Fields, -1 };
+ static constexpr DB2Meta Instance{ 4861207, 3, 10, 10, 0x15320583, Fields, -1 };
};
struct UIModifiedInstanceMeta
@@ -12808,8 +13065,8 @@ struct UiMapMeta
{ FT_INT, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
- { FT_INT, 1, false },
- { FT_INT, 1, false },
+ { FT_BYTE, 1, false },
+ { FT_BYTE, 1, false },
{ FT_INT, 1, true },
{ FT_INT, 1, false },
{ FT_INT, 1, true },
@@ -13030,8 +13287,12 @@ struct UiModelSceneCameraMeta
struct UiPartyPoseMeta
{
- static constexpr DB2MetaField Fields[6] =
+ static constexpr DB2MetaField Fields[10] =
{
+ { FT_STRING, 1, true },
+ { FT_INT, 1, false },
+ { FT_INT, 1, true },
+ { FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
{ FT_INT, 1, true },
@@ -13040,7 +13301,7 @@ struct UiPartyPoseMeta
{ FT_INT, 1, true },
};
- static constexpr DB2Meta Instance{ 1993323, -1, 6, 5, 0xCE023AA8, Fields, 5 };
+ static constexpr DB2Meta Instance{ 1993323, 1, 10, 9, 0xF02E09B6, Fields, 9 };
};
struct UiQuestDetailsThemeMeta
@@ -13314,7 +13575,7 @@ struct VehicleMeta
static constexpr DB2MetaField Fields[18] =
{
{ FT_INT, 1, true },
- { FT_BYTE, 1, false },
+ { FT_INT, 1, true },
{ FT_FLOAT, 1, true },
{ FT_FLOAT, 1, true },
{ FT_FLOAT, 1, true },
@@ -13333,7 +13594,7 @@ struct VehicleMeta
{ FT_SHORT, 3, false },
};
- static constexpr DB2Meta Instance{ 1368621, -1, 18, 18, 0xA0087D9F, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1368621, -1, 18, 18, 0xC064602E, Fields, -1 };
};
struct VehiclePOITypeMeta
@@ -13417,7 +13678,7 @@ struct VehicleSeatMeta
{ FT_SHORT, 1, true },
};
- static constexpr DB2Meta Instance{ 1345447, -1, 61, 61, 0x50B6088F, Fields, -1 };
+ static constexpr DB2Meta Instance{ 1345447, -1, 61, 61, 0x8FE8854B, Fields, -1 };
};
struct VehicleUIIndSeatMeta
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index 99b13a10860..6aa2d59b967 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -1062,6 +1062,7 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul
}
}
+ _broadcastTextDurations.reserve(sBroadcastTextDurationStore.GetNumRows());
for (BroadcastTextDurationEntry const* broadcastTextDuration : sBroadcastTextDurationStore)
_broadcastTextDurations[{ broadcastTextDuration->BroadcastTextID, CascLocaleBit(broadcastTextDuration->Locale) }] = broadcastTextDuration->Duration;
@@ -3497,7 +3498,10 @@ bool ItemLevelSelectorQualityEntryComparator::Compare(ItemLevelSelectorQualityEn
TaxiMask::TaxiMask()
{
if (sTaxiNodesStore.GetNumRows())
- _data.resize(((sTaxiNodesStore.GetNumRows() - 1) / (sizeof(value_type) * 8)) + 1, 0);
+ {
+ _data.resize(((sTaxiNodesStore.GetNumRows() - 1) / (sizeof(value_type) * 64) + 1) * 8, 0);
+ ASSERT((_data.size() % 8) == 0, "TaxiMask size must be aligned to a multiple of uint64");
+ }
}
bool DB2Manager::FriendshipRepReactionEntryComparator::Compare(FriendshipRepReactionEntry const* left, FriendshipRepReactionEntry const* right)
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index 410988e1ef7..387a67a8dcd 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -668,6 +668,7 @@ struct ChrCustomizationChoiceEntry
uint16 UiOrderIndex;
int32 Flags;
int32 AddedInPatch;
+ int32 SoundKitID;
std::array<int32, 2> SwatchColor;
};
@@ -693,6 +694,7 @@ struct ChrCustomizationElementEntry
int32 ChrCustomizationDisplayInfoID;
int32 ChrCustItemGeoModifyID;
int32 ChrCustomizationVoiceID;
+ int32 AnimKitID;
};
struct ChrCustomizationOptionEntry
@@ -877,6 +879,7 @@ struct ContentTuningEntry
int32 TargetLevelMin;
int32 TargetLevelMax;
int32 MinItemLevel;
+ float QuestXpMultiplier;
EnumFlag<ContentTuningFlag> GetFlags() const { return static_cast<ContentTuningFlag>(Flags); }
@@ -1364,7 +1367,7 @@ struct CurvePointEntry
DBCPosition2D Pos;
DBCPosition2D PreSLSquishPos;
uint32 ID;
- uint16 CurveID;
+ int32 CurveID;
uint8 OrderIndex;
};
@@ -2101,6 +2104,8 @@ struct ItemBonusTreeNodeEntry
uint16 ChildItemLevelSelectorID;
int32 ChildItemBonusListGroupID;
int32 IblGroupPointsModSetID;
+ int32 Unknown1010_1;
+ int32 Unknown1010_2;
uint32 ParentItemBonusTreeID;
};
@@ -2808,6 +2813,7 @@ struct MovieEntry
uint8 KeyID;
uint32 AudioFileDataID;
uint32 SubtitleFileDataID;
+ int32 SubtitleFileFormat;
};
struct NameGenEntry
@@ -4222,8 +4228,8 @@ struct UiMapEntry
uint32 ID;
int32 ParentUiMapID;
int32 Flags;
- uint32 System;
- uint32 Type;
+ uint8 System;
+ uint8 Type;
int32 BountySetID;
uint32 BountyDisplayLocation;
int32 VisibilityPlayerConditionID;
@@ -4331,7 +4337,7 @@ struct VehicleEntry
{
uint32 ID;
int32 Flags;
- uint8 FlagsB;
+ int32 FlagsB;
float TurnSpeed;
float PitchSpeed;
float PitchMin;
diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h
index ae75a4d5ec9..3e8645f9398 100644
--- a/src/server/game/Entities/GameObject/GameObjectData.h
+++ b/src/server/game/Entities/GameObject/GameObjectData.h
@@ -730,6 +730,7 @@ struct GameObjectTemplate
uint32 turnpersonallootsecurityoff; // 22 turn personal loot security off, enum { false, true, }; Default: false
uint32 ClearObjectVignetteonOpening; // 23 Clear Object Vignette on Opening, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 24 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Overrideminimaptrackingicon; // 25 Override minimap tracking icon, References: UiTextureAtlasMember, NoValue = 0
} gatheringNode;
// 51 GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD
struct
diff --git a/src/server/game/Entities/Item/ItemDefines.h b/src/server/game/Entities/Item/ItemDefines.h
index fea408adb30..8a0aa7d2fd9 100644
--- a/src/server/game/Entities/Item/ItemDefines.h
+++ b/src/server/game/Entities/Item/ItemDefines.h
@@ -257,6 +257,11 @@ enum ItemModifier : uint16
ITEM_MODIFIER_CRAFTING_REAGENT_SLOT_7 = 50,
ITEM_MODIFIER_CRAFTING_REAGENT_SLOT_8 = 51,
ITEM_MODIFIER_CRAFTING_REAGENT_SLOT_9 = 52,
+ ITEM_MODIFIER_CRAFTING_REAGENT_SLOT_10 = 53,
+ ITEM_MODIFIER_CRAFTING_REAGENT_SLOT_11 = 54,
+ ITEM_MODIFIER_CRAFTING_REAGENT_SLOT_12 = 55,
+ ITEM_MODIFIER_CRAFTING_REAGENT_SLOT_13 = 56,
+ ITEM_MODIFIER_CRAFTING_REAGENT_SLOT_14 = 57,
MAX_ITEM_MODIFIERS
};
diff --git a/src/server/game/Entities/Object/MovementInfo.h b/src/server/game/Entities/Object/MovementInfo.h
index 9e8c3909b36..768785fdfb9 100644
--- a/src/server/game/Entities/Object/MovementInfo.h
+++ b/src/server/game/Entities/Object/MovementInfo.h
@@ -95,6 +95,8 @@ struct MovementInfo
Optional<AdvFlying> advFlying;
+ Optional<ObjectGuid> standingOnGameObjectGUID;
+
MovementInfo() :
flags(0), flags2(0), flags3(0), time(0), pitch(0.0f), stepUpStartElevation(0.0f)
{
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index a710e31bf71..a911aaec5ab 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -279,6 +279,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
bool HasSpline = unit->IsSplineEnabled();
bool HasInertia = unit->m_movementInfo.inertia.has_value();
bool HasAdvFlying = unit->m_movementInfo.advFlying.has_value();
+ bool HasStandingOnGameObjectGUID = unit->m_movementInfo.standingOnGameObjectGUID.has_value();
*data << GetGUID(); // MoverGUID
@@ -301,6 +302,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
//for (std::size_t i = 0; i < RemoveForcesIDs.size(); ++i)
// *data << ObjectGuid(RemoveForcesIDs);
+ data->WriteBit(HasStandingOnGameObjectGUID); // HasStandingOnGameObjectGUID
data->WriteBit(!unit->m_movementInfo.transport.guid.IsEmpty()); // HasTransport
data->WriteBit(HasFall); // HasFall
data->WriteBit(HasSpline); // HasSpline - marks that the unit uses spline movement
@@ -312,6 +314,9 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
if (!unit->m_movementInfo.transport.guid.IsEmpty())
*data << unit->m_movementInfo.transport;
+ if (HasStandingOnGameObjectGUID)
+ *data << *unit->m_movementInfo.standingOnGameObjectGUID;
+
if (HasInertia)
{
*data << unit->m_movementInfo.inertia->id;
@@ -842,6 +847,22 @@ void MovementInfo::OutDebug()
if (flags & MOVEMENTFLAG_SPLINE_ELEVATION)
TC_LOG_DEBUG("misc", "stepUpStartElevation: {}", stepUpStartElevation);
+
+ if (inertia)
+ {
+ TC_LOG_DEBUG("misc", "inertia->id: {}", inertia->id);
+ TC_LOG_DEBUG("misc", "inertia->force: {}", inertia->force.ToString());
+ TC_LOG_DEBUG("misc", "inertia->lifetime: {}", inertia->lifetime);
+ }
+
+ if (advFlying)
+ {
+ TC_LOG_DEBUG("misc", "advFlying->forwardVelocity: {}", advFlying->forwardVelocity);
+ TC_LOG_DEBUG("misc", "advFlying->upVelocity: {}", advFlying->upVelocity);
+ }
+
+ if (standingOnGameObjectGUID)
+ TC_LOG_DEBUG("misc", "standingOnGameObjectGUID: {}", standingOnGameObjectGUID->ToString());
}
WorldObject::WorldObject(bool isWorldObject) : Object(), WorldLocation(), LastUsedScriptID(0),
diff --git a/src/server/game/Entities/Object/ObjectDefines.h b/src/server/game/Entities/Object/ObjectDefines.h
index 964743fbc0e..86b2c3be09b 100644
--- a/src/server/game/Entities/Object/ObjectDefines.h
+++ b/src/server/game/Entities/Object/ObjectDefines.h
@@ -58,7 +58,7 @@ enum class VisibilityDistanceType : uint8
Max
};
-enum TempSummonType
+enum TempSummonType : uint8
{
TEMPSUMMON_TIMED_OR_DEAD_DESPAWN = 1, // despawns after a specified time OR when the creature disappears
TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN = 2, // despawns after a specified time OR when the creature dies
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 8d125ed74db..ebb9c34207e 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -968,14 +968,14 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << uint8(DisplayPower);
data << uint32(OverrideDisplayPowerID);
data << int64(Health);
- for (uint32 i = 0; i < 7; ++i)
+ for (uint32 i = 0; i < 10; ++i)
{
data << int32(Power[i]);
data << int32(MaxPower[i]);
}
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner | UpdateFieldFlag::UnitAll))
{
- for (uint32 i = 0; i < 7; ++i)
+ for (uint32 i = 0; i < 10; ++i)
{
data << float(PowerRegenFlatModifier[i]);
data << float(PowerRegenInterruptedFlatModifier[i]);
@@ -1132,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, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xF8001FFFu, 0x00000003u, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0x0007FFFFu, 0x00003F80u, 0x00000000u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -1140,16 +1140,16 @@ void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- allowedMaskForTarget |= { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x400000FEu, 0x07FFE000u, 0xFFFFFFFCu, 0x0000001Fu };
+ allowedMaskForTarget |= { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x400000FEu, 0xFFF80000u, 0xFFFFC07Fu, 0x0001FFFFu };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll))
- allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x40000000u, 0x07FFE000u, 0x00000000u, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x40000000u, 0xFFF80000u, 0x0000007Fu, 0x00000000u };
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath))
- allowedMaskForTarget |= { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x007F8000u, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xF8000000u, 0x00000007u };
}
void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0xF8001FFFu, 0x00000003u, 0x00000000u });
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0x0007FFFFu, 0x00003F80u, 0x00000000u });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
@@ -1712,77 +1712,77 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[126])
{
- for (uint32 i = 0; i < 7; ++i)
+ for (uint32 i = 0; i < 10; ++i)
{
if (changesMask[127 + i])
{
data << int32(Power[i]);
}
- if (changesMask[134 + i])
+ if (changesMask[137 + i])
{
data << int32(MaxPower[i]);
}
- if (changesMask[141 + i])
+ if (changesMask[147 + i])
{
data << float(PowerRegenFlatModifier[i]);
}
- if (changesMask[148 + i])
+ if (changesMask[157 + i])
{
data << float(PowerRegenInterruptedFlatModifier[i]);
}
}
}
- if (changesMask[155])
+ if (changesMask[167])
{
for (uint32 i = 0; i < 3; ++i)
{
- if (changesMask[156 + i])
+ if (changesMask[168 + i])
{
VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[159])
+ if (changesMask[171])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[160 + i])
+ if (changesMask[172 + i])
{
data << uint32(AttackRoundBaseTime[i]);
}
}
}
- if (changesMask[162])
+ if (changesMask[174])
{
for (uint32 i = 0; i < 4; ++i)
{
- if (changesMask[163 + i])
+ if (changesMask[175 + i])
{
data << int32(Stats[i]);
}
- if (changesMask[167 + i])
+ if (changesMask[179 + i])
{
data << int32(StatPosBuff[i]);
}
- if (changesMask[171 + i])
+ if (changesMask[183 + i])
{
data << int32(StatNegBuff[i]);
}
}
}
- if (changesMask[175])
+ if (changesMask[187])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[176 + i])
+ if (changesMask[188 + i])
{
data << int32(Resistances[i]);
}
- if (changesMask[183 + i])
+ if (changesMask[195 + i])
{
data << int32(BonusResistanceMods[i]);
}
- if (changesMask[190 + i])
+ if (changesMask[202 + i])
{
data << int32(ManaCostModifier[i]);
}
@@ -2146,10 +2146,15 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
data << uint32(ArenaCooldowns.size());
data << int32(Field_B0);
data << int32(Field_B4);
+ data << int32(CurrentBattlePetSpeciesID);
CtrOptions->WriteCreate(data, owner, receiver);
data << int32(CovenantID);
data << int32(SoulbindID);
data << uint32(VisualItemReplacements.size());
+ for (uint32 i = 0; i < 19; ++i)
+ {
+ data << uint32(Field_3120[i]);
+ }
for (uint32 i = 0; i < Customizations.size(); ++i)
{
Customizations[i].WriteCreate(data, owner, receiver);
@@ -2180,7 +2185,7 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
{
- Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000001Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFE00000u, 0x0000FFFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000003Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFC00000u, 0xFFFFFFFFu, 0x0000001Fu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
}
@@ -2188,20 +2193,20 @@ void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVi
void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
- allowedMaskForTarget |= { 0x00000012u, 0xFFFFFFE0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x001FFFFFu, 0x00000000u };
+ allowedMaskForTarget |= { 0x00000012u, 0xFFFFFFC0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x003FFFFFu, 0x00000000u, 0x00000000u };
}
void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags)
{
- Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000001Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFE00000u, 0x0000FFFFu });
+ Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x0000003Fu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFC00000u, 0xFFFFFFFFu, 0x0000001Fu });
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
changesMask &= allowedMaskForTarget;
}
void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlocksMask(0), 8);
- for (uint32 i = 0; i < 8; ++i)
+ data.WriteBits(changesMask.GetBlocksMask(0), 9);
+ for (uint32 i = 0; i < 9; ++i)
if (changesMask.GetBlock(i))
data.WriteBits(changesMask.GetBlock(i), 32);
@@ -2396,26 +2401,30 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
{
if (changesMask[33])
{
- CtrOptions->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data << int32(CurrentBattlePetSpeciesID);
}
if (changesMask[34])
{
- data << int32(CovenantID);
+ CtrOptions->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
if (changesMask[35])
{
- data << int32(SoulbindID);
+ data << int32(CovenantID);
}
if (changesMask[36])
{
+ data << int32(SoulbindID);
+ }
+ if (changesMask[37])
+ {
data << DungeonScore;
}
}
- if (changesMask[37])
+ if (changesMask[38])
{
for (uint32 i = 0; i < 175; ++i)
{
- if (changesMask[38 + i])
+ if (changesMask[39 + i])
{
if (noQuestLogChangesMask)
QuestLog[i].WriteCreate(data, owner, receiver);
@@ -2424,26 +2433,36 @@ void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
}
}
- if (changesMask[213])
+ if (changesMask[214])
{
for (uint32 i = 0; i < 19; ++i)
{
- if (changesMask[214 + i])
+ if (changesMask[215 + i])
{
VisibleItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[233])
+ if (changesMask[234])
{
for (uint32 i = 0; i < 6; ++i)
{
- if (changesMask[234 + i])
+ if (changesMask[235 + i])
{
data << float(AvgItemLevel[i]);
}
}
}
+ if (changesMask[241])
+ {
+ for (uint32 i = 0; i < 19; ++i)
+ {
+ if (changesMask[242 + i])
+ {
+ data << uint32(Field_3120[i]);
+ }
+ }
+ }
data.FlushBits();
}
@@ -2480,6 +2499,7 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(LogoutTime);
Base::ClearChangesMask(Field_B0);
Base::ClearChangesMask(Field_B4);
+ Base::ClearChangesMask(CurrentBattlePetSpeciesID);
Base::ClearChangesMask(CtrOptions);
Base::ClearChangesMask(CovenantID);
Base::ClearChangesMask(SoulbindID);
@@ -2487,6 +2507,7 @@ void PlayerData::ClearChangesMask()
Base::ClearChangesMask(QuestLog);
Base::ClearChangesMask(VisibleItems);
Base::ClearChangesMask(AvgItemLevel);
+ Base::ClearChangesMask(Field_3120);
_changesMask.ResetAll();
}
@@ -3523,9 +3544,45 @@ bool PersonalCraftingOrderCount::operator==(PersonalCraftingOrderCount const& ri
&& Count == right.Count;
}
+void CategoryCooldownMod::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
+{
+ data << int32(SpellCategoryID);
+ data << int32(ModCooldown);
+}
+
+void CategoryCooldownMod::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
+{
+ data << int32(SpellCategoryID);
+ data << int32(ModCooldown);
+}
+
+bool CategoryCooldownMod::operator==(CategoryCooldownMod const& right) const
+{
+ return SpellCategoryID == right.SpellCategoryID
+ && ModCooldown == right.ModCooldown;
+}
+
+void WeeklySpellUse::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const
+{
+ data << int32(SpellCategoryID);
+ data << uint8(Uses);
+}
+
+void WeeklySpellUse::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const
+{
+ data << int32(SpellCategoryID);
+ data << uint8(Uses);
+}
+
+bool WeeklySpellUse::operator==(WeeklySpellUse const& right) const
+{
+ return SpellCategoryID == right.SpellCategoryID
+ && Uses == right.Uses;
+}
+
void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const
{
- for (uint32 i = 0; i < 218; ++i)
+ for (uint32 i = 0; i < 227; ++i)
{
data << InvSlots[i];
}
@@ -3691,6 +3748,13 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
data << uint32(ActiveCombatTraitConfigID);
data << uint32(CraftingOrders.size());
data << uint32(PersonalCraftingOrderCounts.size());
+ data << uint32(CategoryCooldownMods.size());
+ data << uint32(WeeklySpellUses.size());
+ for (uint32 i = 0; i < 17; ++i)
+ {
+ data << float(ItemUpgradeHighWatermark[i]);
+ }
+ data << uint64(LootHistoryInstanceID);
for (uint32 i = 0; i < KnownTitles.size(); ++i)
{
data << uint64(KnownTitles[i]);
@@ -3779,6 +3843,14 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f
{
PersonalCraftingOrderCounts[i].WriteCreate(data, owner, receiver);
}
+ for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i)
+ {
+ CategoryCooldownMods[i].WriteCreate(data, owner, receiver);
+ }
+ for (uint32 i = 0; i < WeeklySpellUses.size(); ++i)
+ {
+ WeeklySpellUses[i].WriteCreate(data, owner, receiver);
+ }
data.FlushBits();
data.WriteBit(BackpackAutoSortDisabled);
data.WriteBit(BankAutoSortDisabled);
@@ -3821,8 +3893,8 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
{
for (uint32 i = 0; i < 1; ++i)
data << uint32(changesMask.GetBlocksMask(i));
- data.WriteBits(changesMask.GetBlocksMask(1), 18);
- for (uint32 i = 0; i < 50; ++i)
+ data.WriteBits(changesMask.GetBlocksMask(1), 19);
+ for (uint32 i = 0; i < 51; ++i)
if (changesMask.GetBlock(i))
data.WriteBits(changesMask.GetBlock(i), 32);
@@ -3975,11 +4047,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.size(), data);
}
}
- if (changesMask[32])
+ if (changesMask[35])
{
for (uint32 i = 0; i < 1; ++i)
{
- if (changesMask[33 + i])
+ if (changesMask[36 + i])
{
if (!ignoreNestedChangesMask)
Research[i].WriteUpdateMask(data);
@@ -4055,6 +4127,23 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
WriteCompleteDynamicFieldUpdateMask(PersonalCraftingOrderCounts.size(), data);
}
}
+ if (changesMask[32])
+ {
+ if (changesMask[33])
+ {
+ if (!ignoreNestedChangesMask)
+ CategoryCooldownMods.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(CategoryCooldownMods.size(), data);
+ }
+ if (changesMask[34])
+ {
+ if (!ignoreNestedChangesMask)
+ WeeklySpellUses.WriteUpdateMask(data);
+ else
+ WriteCompleteDynamicFieldUpdateMask(WeeklySpellUses.size(), data);
+ }
+ }
data.FlushBits();
if (changesMask[0])
{
@@ -4278,6 +4367,32 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
+ }
+ if (changesMask[32])
+ {
+ if (changesMask[33])
+ {
+ for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i)
+ {
+ if (CategoryCooldownMods.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ CategoryCooldownMods[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ if (changesMask[34])
+ {
+ for (uint32 i = 0; i < WeeklySpellUses.size(); ++i)
+ {
+ if (WeeklySpellUses.HasChanged(i) || ignoreNestedChangesMask)
+ {
+ WeeklySpellUses[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ }
+ }
+ }
+ }
+ if (changesMask[0])
+ {
if (changesMask[7])
{
for (uint32 i = 0; i < PvpInfo.size(); ++i)
@@ -4319,494 +4434,508 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo
}
}
}
- if (changesMask[34])
+ if (changesMask[32])
{
- if (changesMask[35])
- {
- data << FarsightObject;
- }
- if (changesMask[36])
- {
- data << SummonedBattlePetGUID;
- }
if (changesMask[37])
{
- data << uint64(Coinage);
+ data << FarsightObject;
}
if (changesMask[38])
{
- data << int32(XP);
+ data << SummonedBattlePetGUID;
}
if (changesMask[39])
{
- data << int32(NextLevelXP);
+ data << uint64(Coinage);
}
if (changesMask[40])
{
- data << int32(TrialXP);
+ data << int32(XP);
}
if (changesMask[41])
{
- Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
+ data << int32(NextLevelXP);
}
if (changesMask[42])
{
- data << int32(CharacterPoints);
+ data << int32(TrialXP);
}
if (changesMask[43])
{
- data << int32(MaxTalentTiers);
+ Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
if (changesMask[44])
{
- data << uint32(TrackCreatureMask);
+ data << int32(CharacterPoints);
}
if (changesMask[45])
{
- data << float(MainhandExpertise);
+ data << int32(MaxTalentTiers);
}
if (changesMask[46])
{
- data << float(OffhandExpertise);
+ data << uint32(TrackCreatureMask);
}
if (changesMask[47])
{
- data << float(RangedExpertise);
+ data << float(MainhandExpertise);
}
if (changesMask[48])
{
- data << float(CombatRatingExpertise);
+ data << float(OffhandExpertise);
}
if (changesMask[49])
{
- data << float(BlockPercentage);
+ data << float(RangedExpertise);
}
if (changesMask[50])
{
- data << float(DodgePercentage);
+ data << float(CombatRatingExpertise);
}
if (changesMask[51])
{
- data << float(DodgePercentageFromAttribute);
+ data << float(BlockPercentage);
}
if (changesMask[52])
{
- data << float(ParryPercentage);
+ data << float(DodgePercentage);
}
if (changesMask[53])
{
- data << float(ParryPercentageFromAttribute);
+ data << float(DodgePercentageFromAttribute);
}
if (changesMask[54])
{
- data << float(CritPercentage);
+ data << float(ParryPercentage);
}
if (changesMask[55])
{
- data << float(RangedCritPercentage);
+ data << float(ParryPercentageFromAttribute);
}
if (changesMask[56])
{
- data << float(OffhandCritPercentage);
+ data << float(CritPercentage);
}
if (changesMask[57])
{
- data << float(SpellCritPercentage);
+ data << float(RangedCritPercentage);
}
if (changesMask[58])
{
- data << int32(ShieldBlock);
+ data << float(OffhandCritPercentage);
}
if (changesMask[59])
{
- data << float(ShieldBlockCritPercentage);
+ data << float(SpellCritPercentage);
}
if (changesMask[60])
{
- data << float(Mastery);
+ data << int32(ShieldBlock);
}
if (changesMask[61])
{
- data << float(Speed);
+ data << float(ShieldBlockCritPercentage);
}
if (changesMask[62])
{
- data << float(Avoidance);
+ data << float(Mastery);
}
if (changesMask[63])
{
- data << float(Sturdiness);
+ data << float(Speed);
}
if (changesMask[64])
{
- data << int32(Versatility);
+ data << float(Avoidance);
}
if (changesMask[65])
{
- data << float(VersatilityBonus);
+ data << float(Sturdiness);
}
}
if (changesMask[66])
{
if (changesMask[67])
{
- data << float(PvpPowerDamage);
+ data << int32(Versatility);
}
if (changesMask[68])
{
- data << float(PvpPowerHealing);
+ data << float(VersatilityBonus);
}
if (changesMask[69])
{
- data << int32(ModHealingDonePos);
+ data << float(PvpPowerDamage);
}
if (changesMask[70])
{
- data << float(ModHealingPercent);
+ data << float(PvpPowerHealing);
}
if (changesMask[71])
{
- data << float(ModPeriodicHealingDonePercent);
+ data << int32(ModHealingDonePos);
}
if (changesMask[72])
{
- data << float(ModSpellPowerPercent);
+ data << float(ModHealingPercent);
}
if (changesMask[73])
{
- data << float(ModResiliencePercent);
+ data << float(ModPeriodicHealingDonePercent);
}
if (changesMask[74])
{
- data << float(OverrideSpellPowerByAPPercent);
+ data << float(ModSpellPowerPercent);
}
if (changesMask[75])
{
- data << float(OverrideAPBySpellPowerPercent);
+ data << float(ModResiliencePercent);
}
if (changesMask[76])
{
- data << int32(ModTargetResistance);
+ data << float(OverrideSpellPowerByAPPercent);
}
if (changesMask[77])
{
- data << int32(ModTargetPhysicalResistance);
+ data << float(OverrideAPBySpellPowerPercent);
}
if (changesMask[78])
{
- data << uint32(LocalFlags);
+ data << int32(ModTargetResistance);
}
if (changesMask[79])
{
- data << uint8(GrantableLevels);
+ data << int32(ModTargetPhysicalResistance);
}
if (changesMask[80])
{
- data << uint8(MultiActionBars);
+ data << uint32(LocalFlags);
}
if (changesMask[81])
{
- data << uint8(LifetimeMaxRank);
+ data << uint8(GrantableLevels);
}
if (changesMask[82])
{
- data << uint8(NumRespecs);
+ data << uint8(MultiActionBars);
}
if (changesMask[83])
{
- data << uint32(PvpMedals);
+ data << uint8(LifetimeMaxRank);
}
if (changesMask[84])
{
- data << uint16(TodayHonorableKills);
+ data << uint8(NumRespecs);
}
if (changesMask[85])
{
- data << uint16(YesterdayHonorableKills);
+ data << uint32(PvpMedals);
}
if (changesMask[86])
{
- data << uint32(LifetimeHonorableKills);
+ data << uint16(TodayHonorableKills);
}
if (changesMask[87])
{
- data << int32(WatchedFactionIndex);
+ data << uint16(YesterdayHonorableKills);
}
if (changesMask[88])
{
- data << int32(MaxLevel);
+ data << uint32(LifetimeHonorableKills);
}
if (changesMask[89])
{
- data << int32(ScalingPlayerLevelDelta);
+ data << int32(WatchedFactionIndex);
}
if (changesMask[90])
{
- data << int32(MaxCreatureScalingLevel);
+ data << int32(MaxLevel);
}
if (changesMask[91])
{
- data << int32(PetSpellPower);
+ data << int32(ScalingPlayerLevelDelta);
}
if (changesMask[92])
{
- data << float(UiHitModifier);
+ data << int32(MaxCreatureScalingLevel);
}
if (changesMask[93])
{
- data << float(UiSpellHitModifier);
+ data << int32(PetSpellPower);
}
if (changesMask[94])
{
- data << int32(HomeRealmTimeOffset);
+ data << float(UiHitModifier);
}
if (changesMask[95])
{
- data << float(ModPetHaste);
+ data << float(UiSpellHitModifier);
}
if (changesMask[96])
{
- data << int8(JailersTowerLevelMax);
+ data << int32(HomeRealmTimeOffset);
}
if (changesMask[97])
{
- data << int8(JailersTowerLevel);
+ data << float(ModPetHaste);
}
}
if (changesMask[98])
{
if (changesMask[99])
{
- data << uint8(LocalRegenFlags);
+ data << int8(JailersTowerLevelMax);
}
if (changesMask[100])
{
- data << uint8(AuraVision);
+ data << int8(JailersTowerLevel);
}
if (changesMask[101])
{
- data << uint8(NumBackpackSlots);
+ data << uint8(LocalRegenFlags);
}
if (changesMask[102])
{
- data << int32(OverrideSpellsID);
+ data << uint8(AuraVision);
}
if (changesMask[103])
{
- data << uint16(LootSpecID);
+ data << uint8(NumBackpackSlots);
}
if (changesMask[104])
{
- data << uint32(OverrideZonePVPType);
+ data << int32(OverrideSpellsID);
}
if (changesMask[105])
{
- data << BnetAccount;
+ data << uint16(LootSpecID);
}
if (changesMask[106])
{
- data << uint64(GuildClubMemberID);
+ data << uint32(OverrideZonePVPType);
}
if (changesMask[107])
{
- data << int32(Honor);
+ data << BnetAccount;
}
if (changesMask[108])
{
- data << int32(HonorNextLevel);
+ data << uint64(GuildClubMemberID);
}
if (changesMask[109])
{
- data << int32(PerksProgramCurrency);
+ data << int32(Honor);
}
if (changesMask[110])
{
+ data << int32(HonorNextLevel);
+ }
+ if (changesMask[111])
+ {
+ data << int32(PerksProgramCurrency);
+ }
+ if (changesMask[112])
+ {
data << uint8(NumBankSlots);
}
- if (changesMask[114])
+ if (changesMask[116])
{
data << int32(UiChromieTimeExpansionID);
}
- if (changesMask[115])
+ if (changesMask[117])
{
data << int32(TransportServerTime);
}
- if (changesMask[116])
+ if (changesMask[118])
{
data << uint32(WeeklyRewardsPeriodSinceOrigin);
}
- if (changesMask[117])
+ if (changesMask[119])
{
data << int16(DEBUGSoulbindConduitRank);
}
- if (changesMask[119])
+ if (changesMask[121])
{
data << uint32(ActiveCombatTraitConfigID);
}
+ if (changesMask[122])
+ {
+ data << uint64(LootHistoryInstanceID);
+ }
}
if (changesMask[98])
{
data.WriteBits(QuestSession.has_value(), 1);
- if (changesMask[111])
+ if (changesMask[113])
{
data << FrozenPerksVendorItem;
}
- if (changesMask[112])
+ if (changesMask[114])
{
if (QuestSession.has_value())
{
QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
- if (changesMask[113])
+ if (changesMask[115])
{
Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[118])
+ if (changesMask[120])
{
data << DungeonScore;
}
}
- if (changesMask[120])
+ if (changesMask[123])
{
- for (uint32 i = 0; i < 218; ++i)
+ for (uint32 i = 0; i < 227; ++i)
{
- if (changesMask[121 + i])
+ if (changesMask[124 + i])
{
data << InvSlots[i];
}
}
}
- if (changesMask[339])
+ if (changesMask[351])
{
for (uint32 i = 0; i < 240; ++i)
{
- if (changesMask[340 + i])
+ if (changesMask[352 + i])
{
data << uint64(ExploredZones[i]);
}
}
}
- if (changesMask[580])
+ if (changesMask[592])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[581 + i])
+ if (changesMask[593 + i])
{
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
}
- if (changesMask[583])
+ if (changesMask[595])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[584 + i])
+ if (changesMask[596 + i])
{
data << int32(ModDamageDonePos[i]);
}
- if (changesMask[591 + i])
+ if (changesMask[603 + i])
{
data << int32(ModDamageDoneNeg[i]);
}
- if (changesMask[598 + i])
+ if (changesMask[610 + i])
{
data << float(ModDamageDonePercent[i]);
}
- if (changesMask[605 + i])
+ if (changesMask[617 + i])
{
data << float(ModHealingDonePercent[i]);
}
}
}
- if (changesMask[612])
+ if (changesMask[624])
{
for (uint32 i = 0; i < 3; ++i)
{
- if (changesMask[613 + i])
+ if (changesMask[625 + i])
{
data << float(WeaponDmgMultipliers[i]);
}
- if (changesMask[616 + i])
+ if (changesMask[628 + i])
{
data << float(WeaponAtkSpeedMultipliers[i]);
}
}
}
- if (changesMask[619])
+ if (changesMask[631])
{
for (uint32 i = 0; i < 12; ++i)
{
- if (changesMask[620 + i])
+ if (changesMask[632 + i])
{
data << uint32(BuybackPrice[i]);
}
- if (changesMask[632 + i])
+ if (changesMask[644 + i])
{
data << int64(BuybackTimestamp[i]);
}
}
}
- if (changesMask[644])
+ if (changesMask[656])
{
for (uint32 i = 0; i < 32; ++i)
{
- if (changesMask[645 + i])
+ if (changesMask[657 + i])
{
data << int32(CombatRatings[i]);
}
}
}
- if (changesMask[677])
+ if (changesMask[689])
{
for (uint32 i = 0; i < 4; ++i)
{
- if (changesMask[678 + i])
+ if (changesMask[690 + i])
{
data << uint32(NoReagentCostMask[i]);
}
}
}
- if (changesMask[682])
+ if (changesMask[694])
{
for (uint32 i = 0; i < 2; ++i)
{
- if (changesMask[683 + i])
+ if (changesMask[695 + i])
{
data << int32(ProfessionSkillLine[i]);
}
}
}
- if (changesMask[685])
+ if (changesMask[697])
{
for (uint32 i = 0; i < 5; ++i)
{
- if (changesMask[686 + i])
+ if (changesMask[698 + i])
{
data << uint32(BagSlotFlags[i]);
}
}
}
- if (changesMask[691])
+ if (changesMask[703])
{
for (uint32 i = 0; i < 7; ++i)
{
- if (changesMask[692 + i])
+ if (changesMask[704 + i])
{
data << uint32(BankBagSlotFlags[i]);
}
}
}
- if (changesMask[699])
+ if (changesMask[711])
{
for (uint32 i = 0; i < 875; ++i)
{
- if (changesMask[700 + i])
+ if (changesMask[712 + i])
{
data << uint64(QuestCompleted[i]);
}
}
}
+ if (changesMask[1587])
+ {
+ for (uint32 i = 0; i < 17; ++i)
+ {
+ if (changesMask[1588 + i])
+ {
+ data << float(ItemUpgradeHighWatermark[i]);
+ }
+ }
+ }
data.FlushBits();
}
@@ -4840,6 +4969,8 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(ReplayedQuests);
Base::ClearChangesMask(DisabledSpells);
Base::ClearChangesMask(PersonalCraftingOrderCounts);
+ Base::ClearChangesMask(CategoryCooldownMods);
+ Base::ClearChangesMask(WeeklySpellUses);
Base::ClearChangesMask(PvpInfo);
Base::ClearChangesMask(CharacterRestrictions);
Base::ClearChangesMask(TraitConfigs);
@@ -4927,6 +5058,7 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(DEBUGSoulbindConduitRank);
Base::ClearChangesMask(DungeonScore);
Base::ClearChangesMask(ActiveCombatTraitConfigID);
+ Base::ClearChangesMask(LootHistoryInstanceID);
Base::ClearChangesMask(InvSlots);
Base::ClearChangesMask(ExploredZones);
Base::ClearChangesMask(RestInfo);
@@ -4944,6 +5076,7 @@ void ActivePlayerData::ClearChangesMask()
Base::ClearChangesMask(BagSlotFlags);
Base::ClearChangesMask(BankBagSlotFlags);
Base::ClearChangesMask(QuestCompleted);
+ Base::ClearChangesMask(ItemUpgradeHighWatermark);
_changesMask.ResetAll();
}
@@ -5497,10 +5630,14 @@ void AreaTriggerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi
data << Field_88;
data << Field_F8;
ExtraScaleCurve->WriteCreate(data, owner, receiver);
+ data.WriteBit(Field_260);
+ data.WriteBit(Field_261);
Field_C38->WriteCreate(data, owner, receiver);
Field_C54->WriteCreate(data, owner, receiver);
Field_C70->WriteCreate(data, owner, receiver);
VisualAnim->WriteCreate(data, owner, receiver);
+ data.FlushBits();
+ data.FlushBits();
}
void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const
@@ -5510,104 +5647,118 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi
void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AreaTrigger const* owner, Player const* receiver) const
{
- data.WriteBits(changesMask.GetBlock(0), 23);
+ data.WriteBits(changesMask.GetBlock(0), 25);
- data.FlushBits();
if (changesMask[0])
{
if (changesMask[1])
{
+ data.WriteBit(Field_260);
+ }
+ if (changesMask[2])
+ {
+ data.WriteBit(Field_261);
+ }
+ }
+ data.FlushBits();
+ if (changesMask[0])
+ {
+ if (changesMask[3])
+ {
OverrideScaleCurve->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[6])
+ if (changesMask[8])
{
data << Caster;
}
- if (changesMask[7])
+ if (changesMask[9])
{
data << uint32(Duration);
}
- if (changesMask[8])
+ if (changesMask[10])
{
data << uint32(TimeToTarget);
}
- if (changesMask[9])
+ if (changesMask[11])
{
data << uint32(TimeToTargetScale);
}
- if (changesMask[10])
+ if (changesMask[12])
{
data << uint32(TimeToTargetExtraScale);
}
- if (changesMask[11])
+ if (changesMask[13])
{
data << uint32(Field_B0);
}
- if (changesMask[12])
+ if (changesMask[14])
{
data << int32(SpellID);
}
- if (changesMask[13])
+ if (changesMask[15])
{
data << int32(SpellForVisuals);
}
- if (changesMask[14])
+ if (changesMask[16])
{
SpellVisual->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[15])
+ if (changesMask[17])
{
data << float(BoundsRadius2D);
}
- if (changesMask[16])
+ if (changesMask[18])
{
data << uint32(DecalPropertiesID);
}
- if (changesMask[17])
+ if (changesMask[19])
{
data << CreatingEffectGUID;
}
- if (changesMask[18])
+ if (changesMask[20])
{
data << uint32(Field_80);
}
- if (changesMask[19])
+ if (changesMask[21])
{
data << uint32(Field_84);
}
- if (changesMask[20])
+ if (changesMask[22])
{
data << Field_88;
}
- if (changesMask[21])
+ if (changesMask[23])
{
data << Field_F8;
}
- if (changesMask[2])
+ if (changesMask[4])
{
ExtraScaleCurve->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[3])
+ if (changesMask[5])
{
Field_C38->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[4])
+ if (changesMask[6])
{
Field_C54->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[5])
+ if (changesMask[7])
{
Field_C70->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
- if (changesMask[22])
+ if (changesMask[24])
{
VisualAnim->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
}
}
+ data.FlushBits();
}
void AreaTriggerData::ClearChangesMask()
{
+ Base::ClearChangesMask(Field_260);
+ Base::ClearChangesMask(Field_261);
Base::ClearChangesMask(OverrideScaleCurve);
Base::ClearChangesMask(ExtraScaleCurve);
Base::ClearChangesMask(Field_C38);
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index ee689dd4fa4..9af78fef00f 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -256,7 +256,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag
bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); }
};
-struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<197>
+struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<209>
{
UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs;
DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells;
@@ -385,18 +385,18 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<197>
UpdateField<ObjectGuid, 96, 122> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object
UpdateFieldArray<uint32, 2, 123, 124> NpcFlags;
struct NpcFlagsTag : ViewerDependentValueTag<uint32> {};
- UpdateFieldArray<int32, 7, 126, 127> Power;
- UpdateFieldArray<int32, 7, 126, 134> MaxPower;
- UpdateFieldArray<float, 7, 126, 141> PowerRegenFlatModifier;
- UpdateFieldArray<float, 7, 126, 148> PowerRegenInterruptedFlatModifier;
- UpdateFieldArray<UF::VisibleItem, 3, 155, 156> VirtualItems;
- UpdateFieldArray<uint32, 2, 159, 160> AttackRoundBaseTime;
- UpdateFieldArray<int32, 4, 162, 163> Stats;
- UpdateFieldArray<int32, 4, 162, 167> StatPosBuff;
- UpdateFieldArray<int32, 4, 162, 171> StatNegBuff;
- UpdateFieldArray<int32, 7, 175, 176> Resistances;
- UpdateFieldArray<int32, 7, 175, 183> BonusResistanceMods;
- UpdateFieldArray<int32, 7, 175, 190> ManaCostModifier;
+ UpdateFieldArray<int32, 10, 126, 127> Power;
+ UpdateFieldArray<int32, 10, 126, 137> MaxPower;
+ UpdateFieldArray<float, 10, 126, 147> PowerRegenFlatModifier;
+ UpdateFieldArray<float, 10, 126, 157> PowerRegenInterruptedFlatModifier;
+ UpdateFieldArray<UF::VisibleItem, 3, 167, 168> VirtualItems;
+ UpdateFieldArray<uint32, 2, 171, 172> AttackRoundBaseTime;
+ UpdateFieldArray<int32, 4, 174, 175> Stats;
+ UpdateFieldArray<int32, 4, 174, 179> StatPosBuff;
+ UpdateFieldArray<int32, 4, 174, 183> StatNegBuff;
+ UpdateFieldArray<int32, 7, 187, 188> Resistances;
+ UpdateFieldArray<int32, 7, 187, 195> BonusResistanceMods;
+ UpdateFieldArray<int32, 7, 187, 202> 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;
@@ -458,7 +458,7 @@ struct CTROptions : public IsUpdateFieldStructureTag
bool operator!=(CTROptions const& right) const { return !(*this == right); }
};
-struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<240>
+struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<261>
{
UpdateField<bool, 0, 1> HasQuestSession;
UpdateField<bool, 0, 2> HasLevelLink;
@@ -491,13 +491,15 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<240>
UpdateField<int64, 0, 29> LogoutTime;
UpdateField<int32, 0, 30> Field_B0;
UpdateField<int32, 0, 31> Field_B4;
- UpdateField<UF::CTROptions, 32, 33> CtrOptions;
- UpdateField<int32, 32, 34> CovenantID;
- UpdateField<int32, 32, 35> SoulbindID;
- UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 36> DungeonScore;
- UpdateFieldArray<UF::QuestLog, 175, 37, 38> QuestLog;
- UpdateFieldArray<UF::VisibleItem, 19, 213, 214> VisibleItems;
- UpdateFieldArray<float, 6, 233, 234> AvgItemLevel;
+ UpdateField<int32, 32, 33> CurrentBattlePetSpeciesID;
+ UpdateField<UF::CTROptions, 32, 34> CtrOptions;
+ UpdateField<int32, 32, 35> CovenantID;
+ UpdateField<int32, 32, 36> SoulbindID;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreSummary, 32, 37> DungeonScore;
+ UpdateFieldArray<UF::QuestLog, 175, 38, 39> QuestLog;
+ UpdateFieldArray<UF::VisibleItem, 19, 214, 215> VisibleItems;
+ UpdateFieldArray<float, 6, 234, 235> AvgItemLevel;
+ UpdateFieldArray<uint32, 19, 241, 242> Field_3120;
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;
@@ -764,14 +766,36 @@ struct PersonalCraftingOrderCount : public IsUpdateFieldStructureTag
bool operator!=(PersonalCraftingOrderCount const& right) const { return !(*this == right); }
};
-struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1575>
+struct CategoryCooldownMod : public IsUpdateFieldStructureTag
+{
+ int32 SpellCategoryID;
+ int32 ModCooldown;
+
+ void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
+ bool operator==(CategoryCooldownMod const& right) const;
+ bool operator!=(CategoryCooldownMod const& right) const { return !(*this == right); }
+};
+
+struct WeeklySpellUse : public IsUpdateFieldStructureTag
+{
+ int32 SpellCategoryID;
+ uint8 Uses;
+
+ void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
+ void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const;
+ bool operator==(WeeklySpellUse const& right) const;
+ bool operator!=(WeeklySpellUse const& right) const { return !(*this == right); }
+};
+
+struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1605>
{
UpdateField<bool, 0, 1> BackpackAutoSortDisabled;
UpdateField<bool, 0, 2> BankAutoSortDisabled;
UpdateField<bool, 0, 3> SortBagsRightToLeft;
UpdateField<bool, 0, 4> InsertItemsLeftToRight;
UpdateField<bool, 0, 5> HasPerksProgramPendingReward;
- UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 32, 33> Research;
+ UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 35, 36> Research;
DynamicUpdateField<uint64, 0, 6> KnownTitles;
DynamicUpdateField<uint16, 0, 8> ResearchSites;
DynamicUpdateField<uint32, 0, 9> ResearchSiteProgress;
@@ -794,110 +818,114 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas
DynamicUpdateField<UF::ReplayedQuest, 0, 27> ReplayedQuests;
DynamicUpdateField<int32, 0, 28> DisabledSpells;
DynamicUpdateField<UF::PersonalCraftingOrderCount, 0, 31> PersonalCraftingOrderCounts;
+ DynamicUpdateField<UF::CategoryCooldownMod, 32, 33> CategoryCooldownMods;
+ DynamicUpdateField<UF::WeeklySpellUse, 32, 34> WeeklySpellUses;
DynamicUpdateField<UF::PVPInfo, 0, 7> PvpInfo;
DynamicUpdateField<UF::CharacterRestriction, 0, 21> CharacterRestrictions;
DynamicUpdateField<UF::TraitConfig, 0, 29> TraitConfigs;
DynamicUpdateField<UF::CraftingOrder, 0, 30> CraftingOrders;
- UpdateField<ObjectGuid, 34, 35> FarsightObject;
- UpdateField<ObjectGuid, 34, 36> SummonedBattlePetGUID;
- UpdateField<uint64, 34, 37> Coinage;
- UpdateField<int32, 34, 38> XP;
- UpdateField<int32, 34, 39> NextLevelXP;
- UpdateField<int32, 34, 40> TrialXP;
- UpdateField<UF::SkillInfo, 34, 41> Skill;
- UpdateField<int32, 34, 42> CharacterPoints;
- UpdateField<int32, 34, 43> MaxTalentTiers;
- UpdateField<uint32, 34, 44> TrackCreatureMask;
- UpdateField<float, 34, 45> MainhandExpertise;
- UpdateField<float, 34, 46> OffhandExpertise;
- UpdateField<float, 34, 47> RangedExpertise;
- UpdateField<float, 34, 48> CombatRatingExpertise;
- UpdateField<float, 34, 49> BlockPercentage;
- UpdateField<float, 34, 50> DodgePercentage;
- UpdateField<float, 34, 51> DodgePercentageFromAttribute;
- UpdateField<float, 34, 52> ParryPercentage;
- UpdateField<float, 34, 53> ParryPercentageFromAttribute;
- UpdateField<float, 34, 54> CritPercentage;
- UpdateField<float, 34, 55> RangedCritPercentage;
- UpdateField<float, 34, 56> OffhandCritPercentage;
- UpdateField<float, 34, 57> SpellCritPercentage;
- UpdateField<int32, 34, 58> ShieldBlock;
- UpdateField<float, 34, 59> ShieldBlockCritPercentage;
- UpdateField<float, 34, 60> Mastery;
- UpdateField<float, 34, 61> Speed;
- UpdateField<float, 34, 62> Avoidance;
- UpdateField<float, 34, 63> Sturdiness;
- UpdateField<int32, 34, 64> Versatility;
- UpdateField<float, 34, 65> VersatilityBonus;
- UpdateField<float, 66, 67> PvpPowerDamage;
- UpdateField<float, 66, 68> PvpPowerHealing;
- UpdateField<int32, 66, 69> ModHealingDonePos;
- UpdateField<float, 66, 70> ModHealingPercent;
- UpdateField<float, 66, 71> ModPeriodicHealingDonePercent;
- UpdateField<float, 66, 72> ModSpellPowerPercent;
- UpdateField<float, 66, 73> ModResiliencePercent;
- UpdateField<float, 66, 74> OverrideSpellPowerByAPPercent;
- UpdateField<float, 66, 75> OverrideAPBySpellPowerPercent;
- UpdateField<int32, 66, 76> ModTargetResistance;
- UpdateField<int32, 66, 77> ModTargetPhysicalResistance;
- UpdateField<uint32, 66, 78> LocalFlags;
- UpdateField<uint8, 66, 79> GrantableLevels;
- UpdateField<uint8, 66, 80> MultiActionBars;
- UpdateField<uint8, 66, 81> LifetimeMaxRank;
- UpdateField<uint8, 66, 82> NumRespecs;
- UpdateField<uint32, 66, 83> PvpMedals;
- UpdateField<uint16, 66, 84> TodayHonorableKills;
- UpdateField<uint16, 66, 85> YesterdayHonorableKills;
- UpdateField<uint32, 66, 86> LifetimeHonorableKills;
- UpdateField<int32, 66, 87> WatchedFactionIndex;
- UpdateField<int32, 66, 88> MaxLevel;
- UpdateField<int32, 66, 89> ScalingPlayerLevelDelta;
- UpdateField<int32, 66, 90> MaxCreatureScalingLevel;
- UpdateField<int32, 66, 91> PetSpellPower;
- UpdateField<float, 66, 92> UiHitModifier;
- UpdateField<float, 66, 93> UiSpellHitModifier;
- UpdateField<int32, 66, 94> HomeRealmTimeOffset;
- UpdateField<float, 66, 95> ModPetHaste;
- UpdateField<int8, 66, 96> JailersTowerLevelMax;
- UpdateField<int8, 66, 97> JailersTowerLevel;
- UpdateField<uint8, 98, 99> LocalRegenFlags;
- UpdateField<uint8, 98, 100> AuraVision;
- UpdateField<uint8, 98, 101> NumBackpackSlots;
- UpdateField<int32, 98, 102> OverrideSpellsID;
- UpdateField<uint16, 98, 103> LootSpecID;
- UpdateField<uint32, 98, 104> OverrideZonePVPType;
- UpdateField<ObjectGuid, 98, 105> BnetAccount;
- UpdateField<uint64, 98, 106> GuildClubMemberID;
- UpdateField<int32, 98, 107> Honor;
- UpdateField<int32, 98, 108> HonorNextLevel;
- UpdateField<int32, 98, 109> PerksProgramCurrency;
- UpdateField<uint8, 98, 110> NumBankSlots;
- UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 98, 111> FrozenPerksVendorItem;
- UpdateField<UF::ActivePlayerUnk901, 98, 113> Field_1410;
- OptionalUpdateField<UF::QuestSession, 98, 112> QuestSession;
- UpdateField<int32, 98, 114> UiChromieTimeExpansionID;
- UpdateField<int32, 98, 115> TransportServerTime;
- UpdateField<uint32, 98, 116> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
- UpdateField<int16, 98, 117> DEBUGSoulbindConduitRank;
- UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 98, 118> DungeonScore;
- UpdateField<uint32, 98, 119> ActiveCombatTraitConfigID;
- UpdateFieldArray<ObjectGuid, 218, 120, 121> InvSlots;
- UpdateFieldArray<uint64, 240, 339, 340> ExploredZones;
- UpdateFieldArray<UF::RestInfo, 2, 580, 581> RestInfo;
- UpdateFieldArray<int32, 7, 583, 584> ModDamageDonePos;
- UpdateFieldArray<int32, 7, 583, 591> ModDamageDoneNeg;
- UpdateFieldArray<float, 7, 583, 598> ModDamageDonePercent;
- UpdateFieldArray<float, 7, 583, 605> ModHealingDonePercent;
- UpdateFieldArray<float, 3, 612, 613> WeaponDmgMultipliers;
- UpdateFieldArray<float, 3, 612, 616> WeaponAtkSpeedMultipliers;
- UpdateFieldArray<uint32, 12, 619, 620> BuybackPrice;
- UpdateFieldArray<int64, 12, 619, 632> BuybackTimestamp;
- UpdateFieldArray<int32, 32, 644, 645> CombatRatings;
- UpdateFieldArray<uint32, 4, 677, 678> NoReagentCostMask;
- UpdateFieldArray<int32, 2, 682, 683> ProfessionSkillLine;
- UpdateFieldArray<uint32, 5, 685, 686> BagSlotFlags;
- UpdateFieldArray<uint32, 7, 691, 692> BankBagSlotFlags;
- UpdateFieldArray<uint64, 875, 699, 700> QuestCompleted;
+ UpdateField<ObjectGuid, 32, 37> FarsightObject;
+ UpdateField<ObjectGuid, 32, 38> SummonedBattlePetGUID;
+ UpdateField<uint64, 32, 39> Coinage;
+ UpdateField<int32, 32, 40> XP;
+ UpdateField<int32, 32, 41> NextLevelXP;
+ UpdateField<int32, 32, 42> TrialXP;
+ UpdateField<UF::SkillInfo, 32, 43> Skill;
+ UpdateField<int32, 32, 44> CharacterPoints;
+ UpdateField<int32, 32, 45> MaxTalentTiers;
+ UpdateField<uint32, 32, 46> TrackCreatureMask;
+ UpdateField<float, 32, 47> MainhandExpertise;
+ UpdateField<float, 32, 48> OffhandExpertise;
+ UpdateField<float, 32, 49> RangedExpertise;
+ UpdateField<float, 32, 50> CombatRatingExpertise;
+ UpdateField<float, 32, 51> BlockPercentage;
+ UpdateField<float, 32, 52> DodgePercentage;
+ UpdateField<float, 32, 53> DodgePercentageFromAttribute;
+ UpdateField<float, 32, 54> ParryPercentage;
+ UpdateField<float, 32, 55> ParryPercentageFromAttribute;
+ UpdateField<float, 32, 56> CritPercentage;
+ UpdateField<float, 32, 57> RangedCritPercentage;
+ UpdateField<float, 32, 58> OffhandCritPercentage;
+ UpdateField<float, 32, 59> SpellCritPercentage;
+ UpdateField<int32, 32, 60> ShieldBlock;
+ UpdateField<float, 32, 61> ShieldBlockCritPercentage;
+ UpdateField<float, 32, 62> Mastery;
+ UpdateField<float, 32, 63> Speed;
+ UpdateField<float, 32, 64> Avoidance;
+ UpdateField<float, 32, 65> Sturdiness;
+ UpdateField<int32, 66, 67> Versatility;
+ UpdateField<float, 66, 68> VersatilityBonus;
+ UpdateField<float, 66, 69> PvpPowerDamage;
+ UpdateField<float, 66, 70> PvpPowerHealing;
+ UpdateField<int32, 66, 71> ModHealingDonePos;
+ UpdateField<float, 66, 72> ModHealingPercent;
+ UpdateField<float, 66, 73> ModPeriodicHealingDonePercent;
+ UpdateField<float, 66, 74> ModSpellPowerPercent;
+ UpdateField<float, 66, 75> ModResiliencePercent;
+ UpdateField<float, 66, 76> OverrideSpellPowerByAPPercent;
+ UpdateField<float, 66, 77> OverrideAPBySpellPowerPercent;
+ UpdateField<int32, 66, 78> ModTargetResistance;
+ UpdateField<int32, 66, 79> ModTargetPhysicalResistance;
+ UpdateField<uint32, 66, 80> LocalFlags;
+ UpdateField<uint8, 66, 81> GrantableLevels;
+ UpdateField<uint8, 66, 82> MultiActionBars;
+ UpdateField<uint8, 66, 83> LifetimeMaxRank;
+ UpdateField<uint8, 66, 84> NumRespecs;
+ UpdateField<uint32, 66, 85> PvpMedals;
+ UpdateField<uint16, 66, 86> TodayHonorableKills;
+ UpdateField<uint16, 66, 87> YesterdayHonorableKills;
+ UpdateField<uint32, 66, 88> LifetimeHonorableKills;
+ UpdateField<int32, 66, 89> WatchedFactionIndex;
+ UpdateField<int32, 66, 90> MaxLevel;
+ UpdateField<int32, 66, 91> ScalingPlayerLevelDelta;
+ UpdateField<int32, 66, 92> MaxCreatureScalingLevel;
+ UpdateField<int32, 66, 93> PetSpellPower;
+ UpdateField<float, 66, 94> UiHitModifier;
+ UpdateField<float, 66, 95> UiSpellHitModifier;
+ UpdateField<int32, 66, 96> HomeRealmTimeOffset;
+ UpdateField<float, 66, 97> ModPetHaste;
+ UpdateField<int8, 98, 99> JailersTowerLevelMax;
+ UpdateField<int8, 98, 100> JailersTowerLevel;
+ UpdateField<uint8, 98, 101> LocalRegenFlags;
+ UpdateField<uint8, 98, 102> AuraVision;
+ UpdateField<uint8, 98, 103> NumBackpackSlots;
+ UpdateField<int32, 98, 104> OverrideSpellsID;
+ UpdateField<uint16, 98, 105> LootSpecID;
+ UpdateField<uint32, 98, 106> OverrideZonePVPType;
+ UpdateField<ObjectGuid, 98, 107> BnetAccount;
+ UpdateField<uint64, 98, 108> GuildClubMemberID;
+ UpdateField<int32, 98, 109> Honor;
+ UpdateField<int32, 98, 110> HonorNextLevel;
+ UpdateField<int32, 98, 111> PerksProgramCurrency;
+ UpdateField<uint8, 98, 112> NumBankSlots;
+ UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 98, 113> FrozenPerksVendorItem;
+ UpdateField<UF::ActivePlayerUnk901, 98, 115> Field_1410;
+ OptionalUpdateField<UF::QuestSession, 98, 114> QuestSession;
+ UpdateField<int32, 98, 116> UiChromieTimeExpansionID;
+ UpdateField<int32, 98, 117> TransportServerTime;
+ UpdateField<uint32, 98, 118> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin
+ UpdateField<int16, 98, 119> DEBUGSoulbindConduitRank;
+ UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 98, 120> DungeonScore;
+ UpdateField<uint32, 98, 121> ActiveCombatTraitConfigID;
+ UpdateField<uint64, 98, 122> LootHistoryInstanceID;
+ UpdateFieldArray<ObjectGuid, 227, 123, 124> InvSlots;
+ UpdateFieldArray<uint64, 240, 351, 352> ExploredZones;
+ UpdateFieldArray<UF::RestInfo, 2, 592, 593> RestInfo;
+ UpdateFieldArray<int32, 7, 595, 596> ModDamageDonePos;
+ UpdateFieldArray<int32, 7, 595, 603> ModDamageDoneNeg;
+ UpdateFieldArray<float, 7, 595, 610> ModDamageDonePercent;
+ UpdateFieldArray<float, 7, 595, 617> ModHealingDonePercent;
+ UpdateFieldArray<float, 3, 624, 625> WeaponDmgMultipliers;
+ UpdateFieldArray<float, 3, 624, 628> WeaponAtkSpeedMultipliers;
+ UpdateFieldArray<uint32, 12, 631, 632> BuybackPrice;
+ UpdateFieldArray<int64, 12, 631, 644> BuybackTimestamp;
+ UpdateFieldArray<int32, 32, 656, 657> CombatRatings;
+ UpdateFieldArray<uint32, 4, 689, 690> NoReagentCostMask;
+ UpdateFieldArray<int32, 2, 694, 695> ProfessionSkillLine;
+ UpdateFieldArray<uint32, 5, 697, 698> BagSlotFlags;
+ UpdateFieldArray<uint32, 7, 703, 704> BankBagSlotFlags;
+ UpdateFieldArray<uint64, 875, 711, 712> QuestCompleted;
+ UpdateFieldArray<float, 17, 1587, 1588> ItemUpgradeHighWatermark;
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;
@@ -1001,30 +1029,32 @@ struct VisualAnim : public IsUpdateFieldStructureTag, public HasChangesMask<5>
void ClearChangesMask();
};
-struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<23>
+struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<25>
{
- UpdateField<UF::ScaleCurve, 0, 1> OverrideScaleCurve;
- UpdateField<UF::ScaleCurve, 0, 2> ExtraScaleCurve;
- UpdateField<UF::ScaleCurve, 0, 3> Field_C38;
- UpdateField<UF::ScaleCurve, 0, 4> Field_C54;
- UpdateField<UF::ScaleCurve, 0, 5> Field_C70;
- UpdateField<ObjectGuid, 0, 6> Caster;
- UpdateField<uint32, 0, 7> Duration;
- UpdateField<uint32, 0, 8> TimeToTarget;
- UpdateField<uint32, 0, 9> TimeToTargetScale;
- UpdateField<uint32, 0, 10> TimeToTargetExtraScale;
- UpdateField<uint32, 0, 11> Field_B0;
- UpdateField<int32, 0, 12> SpellID;
- UpdateField<int32, 0, 13> SpellForVisuals;
- UpdateField<UF::SpellCastVisual, 0, 14> SpellVisual;
- UpdateField<float, 0, 15> BoundsRadius2D;
- UpdateField<uint32, 0, 16> DecalPropertiesID;
- UpdateField<ObjectGuid, 0, 17> CreatingEffectGUID;
- UpdateField<uint32, 0, 18> Field_80;
- UpdateField<uint32, 0, 19> Field_84;
- UpdateField<ObjectGuid, 0, 20> Field_88;
- UpdateField<TaggedPosition<Position::XYZ>, 0, 21> Field_F8;
- UpdateField<UF::VisualAnim, 0, 22> VisualAnim;
+ UpdateField<bool, 0, 1> Field_260;
+ UpdateField<bool, 0, 2> Field_261;
+ UpdateField<UF::ScaleCurve, 0, 3> OverrideScaleCurve;
+ UpdateField<UF::ScaleCurve, 0, 4> ExtraScaleCurve;
+ UpdateField<UF::ScaleCurve, 0, 5> Field_C38;
+ UpdateField<UF::ScaleCurve, 0, 6> Field_C54;
+ UpdateField<UF::ScaleCurve, 0, 7> Field_C70;
+ UpdateField<ObjectGuid, 0, 8> Caster;
+ UpdateField<uint32, 0, 9> Duration;
+ UpdateField<uint32, 0, 10> TimeToTarget;
+ UpdateField<uint32, 0, 11> TimeToTargetScale;
+ UpdateField<uint32, 0, 12> TimeToTargetExtraScale;
+ UpdateField<uint32, 0, 13> Field_B0;
+ UpdateField<int32, 0, 14> SpellID;
+ UpdateField<int32, 0, 15> SpellForVisuals;
+ UpdateField<UF::SpellCastVisual, 0, 16> SpellVisual;
+ UpdateField<float, 0, 17> BoundsRadius2D;
+ UpdateField<uint32, 0, 18> DecalPropertiesID;
+ UpdateField<ObjectGuid, 0, 19> CreatingEffectGUID;
+ UpdateField<uint32, 0, 20> Field_80;
+ UpdateField<uint32, 0, 21> Field_84;
+ UpdateField<ObjectGuid, 0, 22> Field_88;
+ UpdateField<TaggedPosition<Position::XYZ>, 0, 23> Field_F8;
+ UpdateField<UF::VisualAnim, 0, 24> VisualAnim;
void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 39c1e05d338..a0c68227033 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1298,9 +1298,9 @@ void Player::ToggleDND()
SetPlayerFlag(PLAYER_FLAGS_DND);
}
-uint8 Player::GetChatFlags() const
+uint16 Player::GetChatFlags() const
{
- uint8 tag = CHAT_FLAG_NONE;
+ uint16 tag = CHAT_FLAG_NONE;
if (isGMChat())
tag |= CHAT_FLAG_GM;
@@ -17311,8 +17311,8 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol
// "position_x, position_y, position_z, map, orientation, taximask, createTime, createMode, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, "
// "resettalents_time, primarySpecialization, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, summonedPetNumber, at_login, zone, online, death_expire_time, taxi_path, dungeonDifficulty, "
// "totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, "
- // "health, power1, power2, power3, power4, power5, power6, power7, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, raidDifficulty, legacyRaidDifficulty, fishingSteps, "
- // "honor, honorLevel, honorRestState, honorRestBonus, numRespecs "
+ // "health, power1, power2, power3, power4, power5, power6, power7, power8, power9, power10, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, "
+ // "raidDifficulty, legacyRaidDifficulty, fishingSteps, honor, honorLevel, honorRestState, honorRestBonus, numRespecs "
// "FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?", CONNECTION_ASYNC);
ObjectGuid::LowType guid;
@@ -19705,19 +19705,8 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
stmt->setUInt8(index++, GetDrunkValue());
stmt->setUInt32(index++, GetHealth());
- uint32 storedPowers = 0;
- for (uint32 i = 0; i < MAX_POWERS; ++i)
- {
- if (GetPowerIndex(Powers(i)) != MAX_POWERS)
- {
- stmt->setUInt32(index++, m_unitData->Power[storedPowers]);
- if (++storedPowers >= MAX_POWERS_PER_CLASS)
- break;
- }
- }
-
- for (; storedPowers < MAX_POWERS_PER_CLASS; ++storedPowers)
- stmt->setUInt32(index++, 0);
+ for (uint32 i = 0; i < MAX_POWERS_PER_CLASS; ++i)
+ stmt->setUInt32(index++, m_unitData->Power[i]);
stmt->setUInt32(index++, GetSession()->GetLatency());
@@ -19853,19 +19842,8 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
stmt->setUInt8(index++, GetDrunkValue());
stmt->setUInt32(index++, GetHealth());
- uint32 storedPowers = 0;
- for (uint32 i = 0; i < MAX_POWERS; ++i)
- {
- if (GetPowerIndex(Powers(i)) != MAX_POWERS)
- {
- stmt->setUInt32(index++, m_unitData->Power[storedPowers]);
- if (++storedPowers >= MAX_POWERS_PER_CLASS)
- break;
- }
- }
-
- for (; storedPowers < MAX_POWERS_PER_CLASS; ++storedPowers)
- stmt->setUInt32(index++, 0);
+ for (uint32 i = 0; i < MAX_POWERS_PER_CLASS; ++i)
+ stmt->setUInt32(index++, m_unitData->Power[i]);
stmt->setUInt32(index++, GetSession()->GetLatency());
@@ -28896,38 +28874,65 @@ void Player::RemoveSpecializationSpells()
}
}
-void Player::RemoveSocial()
+void Player::AddSpellCategoryCooldownMod(int32 spellCategoryId, int32 mod)
{
- sSocialMgr->RemovePlayerSocial(GetGUID());
- m_social = nullptr;
-}
+ int32 categoryIndex = m_activePlayerData->CategoryCooldownMods.FindIndexIf([spellCategoryId](UF::CategoryCooldownMod const& mod)
+ {
+ return mod.SpellCategoryID == spellCategoryId;
+ });
-uint32 Player::GetDefaultSpecId() const
-{
- return ASSERT_NOTNULL(sDB2Manager.GetDefaultChrSpecializationForClass(GetClass()))->ID;
+ if (categoryIndex < 0)
+ {
+ UF::CategoryCooldownMod& newMod = AddDynamicUpdateFieldValue(m_values
+ .ModifyValue(&Player::m_activePlayerData)
+ .ModifyValue(&UF::ActivePlayerData::CategoryCooldownMods));
+
+ newMod.SpellCategoryID = spellCategoryId;
+ newMod.ModCooldown = -mod;
+ }
+ else
+ {
+ SetUpdateFieldValue(m_values
+ .ModifyValue(&Player::m_activePlayerData)
+ .ModifyValue(&UF::ActivePlayerData::CategoryCooldownMods, categoryIndex)
+ .ModifyValue(&UF::CategoryCooldownMod::ModCooldown), m_activePlayerData->CategoryCooldownMods[categoryIndex].ModCooldown - mod);
+ }
}
-void Player::SendSpellCategoryCooldowns() const
+void Player::RemoveSpellCategoryCooldownMod(int32 spellCategoryId, int32 mod)
{
- WorldPackets::Spells::CategoryCooldown cooldowns;
-
- Unit::AuraEffectList const& categoryCooldownAuras = GetAuraEffectsByType(SPELL_AURA_MOD_SPELL_CATEGORY_COOLDOWN);
- for (AuraEffect* aurEff : categoryCooldownAuras)
+ int32 categoryIndex = m_activePlayerData->CategoryCooldownMods.FindIndexIf([spellCategoryId](UF::CategoryCooldownMod const& mod)
{
- uint32 categoryId = aurEff->GetMiscValue();
- auto cItr = std::find_if(cooldowns.CategoryCooldowns.begin(), cooldowns.CategoryCooldowns.end(),
- [categoryId](WorldPackets::Spells::CategoryCooldown::CategoryCooldownInfo const& cooldown)
- {
- return cooldown.Category == categoryId;
- });
+ return mod.SpellCategoryID == spellCategoryId;
+ });
- if (cItr == cooldowns.CategoryCooldowns.end())
- cooldowns.CategoryCooldowns.emplace_back(categoryId, -aurEff->GetAmount());
- else
- cItr->ModCooldown -= aurEff->GetAmount();
+ if (categoryIndex < 0)
+ return;
+
+ if (m_activePlayerData->CategoryCooldownMods[categoryIndex].ModCooldown + mod == 0)
+ {
+ RemoveDynamicUpdateFieldValue(m_values
+ .ModifyValue(&Player::m_activePlayerData)
+ .ModifyValue(&UF::ActivePlayerData::CategoryCooldownMods), categoryIndex);
+ }
+ else
+ {
+ SetUpdateFieldValue(m_values
+ .ModifyValue(&Player::m_activePlayerData)
+ .ModifyValue(&UF::ActivePlayerData::CategoryCooldownMods, categoryIndex)
+ .ModifyValue(&UF::CategoryCooldownMod::ModCooldown), m_activePlayerData->CategoryCooldownMods[categoryIndex].ModCooldown + mod);
}
+}
+
+void Player::RemoveSocial()
+{
+ sSocialMgr->RemovePlayerSocial(GetGUID());
+ m_social = nullptr;
+}
- SendDirectMessage(cooldowns.Write());
+uint32 Player::GetDefaultSpecId() const
+{
+ return ASSERT_NOTNULL(sDB2Manager.GetDefaultChrSpecializationForClass(GetClass()))->ID;
}
void Player::SendRaidGroupOnlyMessage(RaidGroupReason reason, int32 delay) const
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 76862cfd9e6..798925e5c85 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -647,7 +647,7 @@ enum PlayerSlots
// first slot for item stored (in any way in player m_items data)
PLAYER_SLOT_START = 0,
// last+1 slot for item stored (in any way in player m_items data)
- PLAYER_SLOT_END = 218,
+ PLAYER_SLOT_END = 227,
PLAYER_SLOTS_COUNT = (PLAYER_SLOT_END - PLAYER_SLOT_START)
};
@@ -750,6 +750,7 @@ enum ChildEquipmentSlots
CHILD_EQUIPMENT_SLOT_END = 211,
};
+// slots past 214 are guessed (unused in client)
enum EquipableSpellSlots
{
EQUIPABLE_SPELL_OFFENSIVE_SLOT1 = 211,
@@ -757,8 +758,17 @@ enum EquipableSpellSlots
EQUIPABLE_SPELL_OFFENSIVE_SLOT3 = 213,
EQUIPABLE_SPELL_OFFENSIVE_SLOT4 = 214,
EQUIPABLE_SPELL_UTILITY_SLOT1 = 215,
- EQUIPABLE_SPELL_DEFENSIVE_SLOT1 = 216,
- EQUIPABLE_SPELL_MOBILITY_SLOT1 = 217
+ EQUIPABLE_SPELL_UTILITY_SLOT2 = 216,
+ EQUIPABLE_SPELL_UTILITY_SLOT3 = 217,
+ EQUIPABLE_SPELL_UTILITY_SLOT4 = 218,
+ EQUIPABLE_SPELL_DEFENSIVE_SLOT1 = 219,
+ EQUIPABLE_SPELL_DEFENSIVE_SLOT2 = 220,
+ EQUIPABLE_SPELL_DEFENSIVE_SLOT3 = 221,
+ EQUIPABLE_SPELL_DEFENSIVE_SLOT4 = 222,
+ EQUIPABLE_SPELL_WEAPON_SLOT1 = 223,
+ EQUIPABLE_SPELL_WEAPON_SLOT2 = 224,
+ EQUIPABLE_SPELL_WEAPON_SLOT3 = 225,
+ EQUIPABLE_SPELL_WEAPON_SLOT4 = 226,
};
struct ItemPosCount
@@ -1171,7 +1181,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void ToggleDND();
bool isAFK() const { return HasPlayerFlag(PLAYER_FLAGS_AFK); }
bool isDND() const { return HasPlayerFlag(PLAYER_FLAGS_DND); }
- uint8 GetChatFlags() const;
+ uint16 GetChatFlags() const;
std::string autoReplyMsg;
int64 GetBarberShopCost(Trinity::IteratorPair<UF::ChrCustomizationChoice const*> newCustomizations) const;
@@ -1819,7 +1829,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void RemoveOverrideSpell(uint32 overridenSpellId, uint32 newSpellId);
void LearnSpecializationSpells();
void RemoveSpecializationSpells();
- void SendSpellCategoryCooldowns() const;
+ void AddSpellCategoryCooldownMod(int32 spellCategoryId, int32 mod);
+ void RemoveSpellCategoryCooldownMod(int32 spellCategoryId, int32 mod);
void SetSpellFavorite(uint32 spellId, bool favorite);
void AddStoredAuraTeleportLocation(uint32 spellId);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 25cfd6be60d..bd5a69bd878 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -8862,7 +8862,14 @@ void Unit::UpdateUnitMod(UnitMods unitMod)
case UNIT_MOD_DEMONIC_FURY:
case UNIT_MOD_ARCANE_CHARGES:
case UNIT_MOD_FURY:
- case UNIT_MOD_PAIN: UpdateMaxPower(Powers(unitMod - UNIT_MOD_POWER_START)); break;
+ case UNIT_MOD_PAIN:
+ case UNIT_MOD_ESSENCE:
+ case UNIT_MOD_RUNE_BLOOD:
+ case UNIT_MOD_RUNE_FROST:
+ case UNIT_MOD_RUNE_UNHOLY:
+ case UNIT_MOD_ALTERNATE_QUEST:
+ case UNIT_MOD_ALTERNATE_ENCOUNTER:
+ case UNIT_MOD_ALTERNATE_MOUNT: UpdateMaxPower(Powers(unitMod - UNIT_MOD_POWER_START)); break;
case UNIT_MOD_RESISTANCE_HOLY:
case UNIT_MOD_RESISTANCE_FIRE:
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index b0de657556d..6fb9b7c0894 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -190,6 +190,12 @@ enum UnitMods
UNIT_MOD_FURY,
UNIT_MOD_PAIN,
UNIT_MOD_ESSENCE,
+ UNIT_MOD_RUNE_BLOOD,
+ UNIT_MOD_RUNE_FROST,
+ UNIT_MOD_RUNE_UNHOLY,
+ UNIT_MOD_ALTERNATE_QUEST,
+ UNIT_MOD_ALTERNATE_ENCOUNTER,
+ UNIT_MOD_ALTERNATE_MOUNT,
UNIT_MOD_ARMOR, // UNIT_MOD_ARMOR..UNIT_MOD_RESISTANCE_ARCANE must be in existed order, it's accessed by index values of SpellSchools enum.
UNIT_MOD_RESISTANCE_HOLY,
UNIT_MOD_RESISTANCE_FIRE,
@@ -209,7 +215,7 @@ enum UnitMods
UNIT_MOD_RESISTANCE_START = UNIT_MOD_ARMOR,
UNIT_MOD_RESISTANCE_END = UNIT_MOD_RESISTANCE_ARCANE + 1,
UNIT_MOD_POWER_START = UNIT_MOD_MANA,
- UNIT_MOD_POWER_END = UNIT_MOD_ESSENCE + 1
+ UNIT_MOD_POWER_END = UNIT_MOD_ALTERNATE_MOUNT + 1
};
static_assert(UNIT_MOD_POWER_END - UNIT_MOD_POWER_START == MAX_POWERS, "UnitMods powers section does not match Powers enum!");
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index c91a2714ff5..da29e00af5b 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -679,11 +679,6 @@ void WorldSession::HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMis
HandleMovementOpcode(CMSG_MOVE_STOP, *packet.Status);
}
-void WorldSession::HandleRequestCategoryCooldowns(WorldPackets::Spells::RequestCategoryCooldowns& /*requestCategoryCooldowns*/)
-{
- _player->SendSpellCategoryCooldowns();
-}
-
void WorldSession::HandleKeyboundOverride(WorldPackets::Spells::KeyboundOverride& keyboundOverride)
{
Player* player = GetPlayer();
diff --git a/src/server/game/Loot/Loot.cpp b/src/server/game/Loot/Loot.cpp
index 77e2775f76e..40e185463ec 100644
--- a/src/server/game/Loot/Loot.cpp
+++ b/src/server/game/Loot/Loot.cpp
@@ -235,6 +235,7 @@ void LootRoll::SendStartRoll()
FillPacket(startLootRoll.Item);
startLootRoll.Item.UIType = LOOT_SLOT_TYPE_ROLL_ONGOING;
+ startLootRoll.DungeonEncounterID = m_loot->GetDungeonEncounterId();
player->SendDirectMessage(startLootRoll.Write());
}
@@ -256,6 +257,7 @@ void LootRoll::SendAllPassed()
lootAllPassed.LootObj = m_loot->GetGUID();
FillPacket(lootAllPassed.Item);
lootAllPassed.Item.UIType = LOOT_SLOT_TYPE_ALLOW_LOOT;
+ lootAllPassed.DungeonEncounterID = m_loot->GetDungeonEncounterId();
lootAllPassed.Write();
for (auto const& [playerGuid, roll] : m_rollVoteMap)
@@ -282,6 +284,7 @@ void LootRoll::SendRoll(ObjectGuid const& targetGuid, int32 rollNumber, RollVote
lootRoll.Autopassed = false;
FillPacket(lootRoll.Item);
lootRoll.Item.UIType = LOOT_SLOT_TYPE_ROLL_ONGOING;
+ lootRoll.DungeonEncounterID = m_loot->GetDungeonEncounterId();
lootRoll.Write();
for (auto const& [playerGuid, roll] : m_rollVoteMap)
@@ -337,6 +340,7 @@ void LootRoll::SendLootRollWon(ObjectGuid const& targetGuid, int32 rollNumber, R
lootRollWon.RollType = AsUnderlyingType(rollType);
FillPacket(lootRollWon.Item);
lootRollWon.Item.UIType = LOOT_SLOT_TYPE_LOCKED;
+ lootRollWon.DungeonEncounterID = m_loot->GetDungeonEncounterId();
lootRollWon.MainSpec = true; // offspec rolls not implemented
lootRollWon.Write();
diff --git a/src/server/game/Loot/Loot.h b/src/server/game/Loot/Loot.h
index b13ae06ff9d..d80bcb78ffa 100644
--- a/src/server/game/Loot/Loot.h
+++ b/src/server/game/Loot/Loot.h
@@ -56,7 +56,8 @@ enum RollType
ROLL_NEED = 1,
ROLL_GREED = 2,
ROLL_DISENCHANT = 3,
- MAX_ROLL_TYPE = 4
+ ROLL_TRANSMOG = 4,
+ MAX_ROLL_TYPE = 5
};
enum class RollVote
@@ -75,6 +76,7 @@ enum RollMask
ROLL_FLAG_TYPE_NEED = 0x02,
ROLL_FLAG_TYPE_GREED = 0x04,
ROLL_FLAG_TYPE_DISENCHANT = 0x08,
+ ROLL_FLAG_TYPE_TRANSMOG = 0x10,
ROLL_ALL_TYPE_NO_DISENCHANT = 0x07,
ROLL_ALL_TYPE_MASK = 0x0F
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 874a5d6dfd5..7d19e472109 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -297,11 +297,17 @@ enum Powers : int8
POWER_FURY = 17, // TITLE Fury
POWER_PAIN = 18, // TITLE Pain
POWER_ESSENCE = 19, // TITLE Essence
- MAX_POWERS = 20, // SKIP
+ POWER_RUNE_BLOOD = 20, // TITLE Blood Runes
+ POWER_RUNE_FROST = 21, // TITLE Frost Runes
+ POWER_RUNE_UNHOLY = 22, // TITLE Unholy Runes
+ POWER_ALTERNATE_QUEST = 23, // TITLE Alternate (Quest)
+ POWER_ALTERNATE_ENCOUNTER = 24, // TITLE Alternate (Encounter)
+ POWER_ALTERNATE_MOUNT = 25, // TITLE Alternate (Mount)
+ MAX_POWERS = 26, // SKIP
POWER_ALL = 127 // SKIP
};
-#define MAX_POWERS_PER_CLASS 7
+#define MAX_POWERS_PER_CLASS 10
// EnumUtils: DESCRIBE THIS
enum SpellSchools : uint16
@@ -1435,11 +1441,19 @@ enum SpellEffectName
SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG = 304,
SPELL_EFFECT_305 = 305,
SPELL_EFFECT_306 = 306,
+ SPELL_EFFECT_307 = 307,
+ SPELL_EFFECT_CANCEL_PRELOAD_WORLD = 308,
+ SPELL_EFFECT_PRELOAD_WORLD = 309,
+ SPELL_EFFECT_310 = 310,
+ SPELL_EFFECT_ENSURE_WORLD_LOADED = 311,
+ SPELL_EFFECT_312 = 312,
+ SPELL_EFFECT_CHANGE_ITEM_BONUSES_2 = 313, // MiscValue[0] = ItemBonusTreeID to preserve
+ SPELL_EFFECT_ADD_SOCKET_BONUS = 314, // MiscValue[0] = required ItemBonusTreeID
TOTAL_SPELL_EFFECTS
};
// EnumUtils: DESCRIBE THIS
-enum SpellCastResult
+enum SpellCastResult : int32
{
SPELL_FAILED_SUCCESS = 0,
SPELL_FAILED_AFFECTING_COMBAT = 1,
@@ -2347,6 +2361,7 @@ enum SpellCustomErrors
SPELL_CUSTOM_ERROR_YOU_CAN_ONLY_DO_THIS_WHILE_MIDAIR = 638, // You can only do this while midair.
SPELL_CUSTOM_ERROR_YOU_CANNOT_DO_THAT_WHILE_AIRBORNE = 639, // You cannot do that while airborne.
SPELL_CUSTOM_ERROR_POCOPOC_IS_UNAVAILABLE_ON_QUESTLINE = 640, // Pocopoc is unavailable to summon during the questline A Means to an End.
+ SPELL_CUSTOM_ERROR_CANNOT_CAST_THAT_WITH_AURA_OF_RECKONING_TALENT = 650, // You cannot cast that while Aura of Reckoning is talented.
SPELL_CUSTOM_ERROR_REQUIRES_SULFURON_SLAMMER = 711, // Requires Sulfuron Slammer
SPELL_CUSTOM_ERROR_NOT_READY_YET = 788, // Not ready yet.
SPELL_CUSTOM_ERROR_QUALITY_OF_TIERED_MEDALLION_SETTING_IS_TOO_LOW = 789, // The quality of your Tiered Medallion Setting is too low to add another socket to this item.
@@ -2381,8 +2396,25 @@ enum SpellCustomErrors
SPELL_CUSTOM_ERROR_YOU_ARE_ALREADY_BRAVE_ENOUGH_TO_CONTINUE_WITH_YOUR_EXPERIMENTATION = 818, // You are already brave enough to continue with your experimentation.
SPELL_CUSTOM_ERROR_YOU_DONT_KNOW_HOW_TO_REPAIR_THIS_ITEM = 819, // You don't know how to repair this item.
SPELL_CUSTOM_ERROR_THERE_IS_NO_MORE_ROOM_ON_THAT_HANDHOLD = 820, // There is no more room on that handhold.
- SPELL_CUSTOM_ERROR_YOU_MUST_UNBLOCK_THIS_SPOT_BY_COMPLETING_A_DAILY_QUest = 821, // You must unblock this spot by completing a daily quest.
+ SPELL_CUSTOM_ERROR_YOU_MUST_UNBLOCK_THIS_SPOT_BY_COMPLETING_A_DAILY_QUEST = 821, // You must unblock this spot by completing a daily quest.
SPELL_CUSTOM_ERROR_YOU_MUST_BE_CLOSER_TO_AN_ICE_HOLE_TO_DO_THAT = 822, // You must be closer to an ice hole to do that.
+ SPELL_CUSTOM_ERROR_SHADOWFLAME_IS_TOO_STRONG_TO_BEAR = 823, // The shadowflame is too strong to bear.
+ SPELL_CUSTOM_ERROR_SOMEONE_HAS_ALREADY_OVERLOADED_THIS = 824, // Someone has already overloaded this.
+ SPELL_CUSTOM_ERROR_REQUIRES_NOKHUD_TRAINING_COURSE = 825, // Requires Nokhud Training Course.
+ SPELL_CUSTOM_ERROR_THIS_RECIPE_IS_CURRENTLY_DISABLED = 826, // This recipe is currently disabled. Please try again later.
+ SPELL_CUSTOM_ERROR_YOU_DO_NOT_HAVE_THE_CORRECT_BATTLE_PET_SUMMONED = 827, // You do not have the correct battle pet summoned.
+ SPELL_CUSTOM_ERROR_YOU_ALREADY_HAVE_AT_LEAST_ONE_CONJURED_PHIAL = 828, // You already have at least one conjured phial.
+ SPELL_CUSTOM_ERROR_MARKED_TOO_MANY_TREASURES_IN_THE_FORBIDDEN_REACH = 830, // You have already marked too many treasures in the Forbidden Reach. Collect a few before unsealing more Forbidden Reach treasure scrolls.
+ SPELL_CUSTOM_ERROR_REQUIRES_A_DJARADIN_PILLAR_SHARD = 831, // Requires a Djaradin Pillar Shard.
+ SPELL_CUSTOM_ERROR_REQUIRES_A_RESILIENT_STONE = 832, // Requires a Resilient Stone.
+ SPELL_CUSTOM_ERROR_MYRRIT_CANNOT_CARRY_ANY_MORE_MAPS = 835, // Myrrit cannot carry any more maps. Go on a dig with him!
+ SPELL_CUSTOM_ERROR_REQUIRES_NIFFEN_CAVE_DIVE_KEYAND_SHIELD_DISABLED = 850, // Requires Niffen Cave Dive Key and shield disabled.
+ SPELL_CUSTOM_ERROR_ELUSIVE_CREATURE_BAIT_WAS_RECENTLY_USED = 851, // You cannot lure anything in this area for a few minutes. Elusive Creature Bait was recently used.
+ SPELL_CUSTOM_ERROR_YOU_DONT_HAVE_THE_SWIRLING_MOJO_STONE = 999, // You don't have the Swirling Mojo Stone equipped.
+ SPELL_CUSTOM_ERROR_YOU_MUST_BE_NEAR_A_DRAGONFLIGHT_OATHSTONE = 1000, // You must be near one of the five dragonflight oathstones in the Dragon Isles.
+ SPELL_CUSTOM_ERROR_CAN_ONLY_USE_THIS_ITEM_WHILE_AIRBORNE = 1001, // You can only use this item while airborne.
+ SPELL_CUSTOM_ERROR_YOU_MUST_BE_IN_VISAGE_FORM = 2222, // You must be in visage form to do this.
+ SPELL_CUSTOM_ERROR_TOO_CLOSE_TO_ANOTHER_MOLTEN_RITUAL = 2424, // You can't begin a molten ritual this close to another one.
};
enum StealthType
@@ -5902,7 +5934,8 @@ enum ChatFlags
CHAT_FLAG_BOSS_SOUND = 0x0020, // Plays "RaidBossEmoteWarning" sound on raid boss emote/whisper
CHAT_FLAG_MOBILE = 0x0040,
CHAT_FLAG_GUIDE = 0x1000,
- CHAT_FLAG_NEWCOMER = 0x2000
+ CHAT_FLAG_NEWCOMER = 0x2000,
+ CHAT_FLAG_CENSORED = 0x4000
};
enum ChatLinkColors : uint32
@@ -7997,6 +8030,12 @@ enum class GameError : uint32
ERR_CROSS_FACTION_GROUP_JOINED = 1114,
ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1115,
ERR_EQUIPABLESPELLS_SLOTS_FULL = 1116,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1117,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1118,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1119,
+ ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1120,
+ ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1121,
+ ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1122,
};
enum class MountResult : uint32
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index 2eb08ff9862..542bce38d3a 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -369,13 +369,17 @@ uint32 Quest::XPValue(Player const* player, uint32 contentTuningId, uint32 xpDif
if (!questXp || xpDifficulty >= 10)
return 0;
+ uint32 xp = questXp->Difficulty[xpDifficulty];
+ if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(contentTuningId))
+ xp = xp * contentTuning->QuestXpMultiplier;
+
int32 diffFactor = 2 * (questLevel - player->GetLevel()) + 12;
if (diffFactor < 1)
diffFactor = 1;
else if (diffFactor > 10)
diffFactor = 10;
- uint32 xp = diffFactor * questXp->Difficulty[xpDifficulty] * xpMultiplier / 10;
+ xp = diffFactor * xp * xpMultiplier / 10;
if (player->GetLevel() >= GetMaxLevelForExpansion(CURRENT_EXPANSION - 1) && player->GetSession()->GetExpansion() == CURRENT_EXPANSION && expansion >= 0 && expansion < CURRENT_EXPANSION)
xp = uint32(xp / 9.0f);
diff --git a/src/server/game/Server/Packets/BattlePetPackets.h b/src/server/game/Server/Packets/BattlePetPackets.h
index afcfe50f013..164c7b51aa6 100644
--- a/src/server/game/Server/Packets/BattlePetPackets.h
+++ b/src/server/game/Server/Packets/BattlePetPackets.h
@@ -200,7 +200,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid PetGuid;
- uint32 Flags = 0;
+ uint16 Flags = 0;
uint8 ControlType = 0;
};
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index 921dd72cde0..08ee119117f 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -116,6 +116,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPMatchSta
if (playerData.MmrChange)
data << int32(*playerData.MmrChange);
+ if (playerData.PostMatchMMR)
+ data << uint32(*playerData.PostMatchMMR);
+
return data;
}
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index 06d5339f81b..28d337c7698 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -135,6 +135,7 @@ namespace WorldPackets
Optional<int32> RatingChange;
Optional<uint32> PreMatchMMR;
Optional<int32> MmrChange;
+ Optional<uint32> PostMatchMMR;
std::vector<PVPMatchPlayerPVPStat> Stats;
int32 PrimaryTalentTree = 0;
int32 Sex = 0;
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 210b22f9d18..3d84f568498 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -46,7 +46,7 @@ namespace WorldPackets
{
namespace Character
{
-void SortCustomizations(Array<ChrCustomizationChoice, 72>& customizations)
+void SortCustomizations(Array<ChrCustomizationChoice, 125>& customizations)
{
auto first = customizations.begin();
auto last = customizations.end();
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index d82c45e87e3..2f04c0add51 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -60,7 +60,7 @@ namespace WorldPackets
uint8 Race = RACE_NONE;
uint8 Class = CLASS_NONE;
uint8 Sex = GENDER_NONE;
- Array<ChrCustomizationChoice, 72> Customizations;
+ Array<ChrCustomizationChoice, 125> Customizations;
Optional<int32> TemplateSet;
bool IsTrialBoost = false;
bool UseNPE = false;
@@ -81,7 +81,7 @@ namespace WorldPackets
ObjectGuid CharGUID;
uint8 SexID = GENDER_NONE;
std::string CharName;
- Array<ChrCustomizationChoice, 72> Customizations;
+ Array<ChrCustomizationChoice, 125> Customizations;
};
struct CharRaceOrFactionChangeInfo
@@ -92,7 +92,7 @@ namespace WorldPackets
ObjectGuid Guid;
bool FactionChange = false;
std::string Name;
- Array<ChrCustomizationChoice, 72> Customizations;
+ Array<ChrCustomizationChoice, 125> Customizations;
};
struct CharacterUndeleteInfo
@@ -366,7 +366,7 @@ namespace WorldPackets
std::string Name;
uint8 SexID = 0;
uint8 RaceID = RACE_NONE;
- Array<ChrCustomizationChoice, 72> const* Customizations = nullptr;
+ Array<ChrCustomizationChoice, 125> const* Customizations = nullptr;
};
class CharFactionChangeResult final : public ServerPacket
@@ -637,7 +637,7 @@ namespace WorldPackets
void Read() override;
uint8 NewSex = 0;
- Array<ChrCustomizationChoice, 72> Customizations;
+ Array<ChrCustomizationChoice, 125> Customizations;
int32 CustomizedRace = 0;
};
@@ -744,7 +744,7 @@ namespace WorldPackets
ObjectGuid CharGUID;
std::string CharName;
uint8 SexID = 0;
- Array<ChrCustomizationChoice, 72> const& Customizations;
+ Array<ChrCustomizationChoice, 125> const& Customizations;
};
class CharCustomizeFailure final : public ServerPacket
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index fccac7ce49a..48f1691564f 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -26,6 +26,18 @@ void WorldPackets::Chat::ChatMessage::Read()
{
_worldPacket >> Language;
uint32 len = _worldPacket.ReadBits(11);
+ switch (GetOpcode())
+ {
+ case CMSG_CHAT_MESSAGE_SAY:
+ case CMSG_CHAT_MESSAGE_PARTY:
+ case CMSG_CHAT_MESSAGE_RAID:
+ case CMSG_CHAT_MESSAGE_RAID_WARNING:
+ case CMSG_CHAT_MESSAGE_INSTANCE_CHAT:
+ IsSecure = _worldPacket.ReadBit();
+ break;
+ default:
+ break;
+ }
Text = _worldPacket.ReadString(len);
}
@@ -44,6 +56,9 @@ void WorldPackets::Chat::ChatMessageChannel::Read()
_worldPacket >> ChannelGUID;
uint32 targetLen = _worldPacket.ReadBits(9);
uint32 textLen = _worldPacket.ReadBits(11);
+ if (_worldPacket.ReadBit())
+ IsSecure = _worldPacket.ReadBit();
+
Target = _worldPacket.ReadString(targetLen);
Text = _worldPacket.ReadString(textLen);
}
@@ -95,7 +110,7 @@ void WorldPackets::Chat::ChatMessageEmote::Read()
WorldPackets::Chat::Chat::Chat(Chat const& chat) : ServerPacket(SMSG_CHAT, chat._worldPacket.size()),
SlashCmd(chat.SlashCmd), _Language(chat._Language), SenderGUID(chat.SenderGUID),
- SenderGuildGUID(chat.SenderGuildGUID), SenderAccountGUID(chat.SenderAccountGUID), TargetGUID(chat.TargetGUID), PartyGUID(chat.PartyGUID),
+ SenderGuildGUID(chat.SenderGuildGUID), SenderAccountGUID(chat.SenderAccountGUID), TargetGUID(chat.TargetGUID),
SenderVirtualAddress(chat.SenderVirtualAddress), TargetVirtualAddress(chat.TargetVirtualAddress), SenderName(chat.SenderName), TargetName(chat.TargetName),
Prefix(chat.Prefix), _Channel(chat._Channel), ChatText(chat.ChatText), AchievementID(chat.AchievementID), _ChatFlags(chat._ChatFlags),
DisplayTime(chat.DisplayTime), HideChatLog(chat.HideChatLog), FakeSenderName(chat.FakeSenderName)
@@ -111,7 +126,6 @@ void WorldPackets::Chat::Chat::Initialize(ChatMsg chatType, Language language, W
SenderGUID.Clear();
SenderAccountGUID.Clear();
SenderGuildGUID.Clear();
- PartyGUID.Clear();
TargetGUID.Clear();
SenderName.clear();
TargetName.clear();
@@ -147,9 +161,6 @@ void WorldPackets::Chat::Chat::SetSender(WorldObject const* sender, LocaleConsta
_ChatFlags = playerSender->GetChatFlags();
SenderGuildGUID = ObjectGuid::Create<HighGuid::Guild>(playerSender->GetGuildId());
-
- if (Group const* group = playerSender->GetGroup())
- PartyGUID = group->GetGUID();
}
}
@@ -170,9 +181,9 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
_worldPacket << TargetGUID;
_worldPacket << uint32(TargetVirtualAddress);
_worldPacket << uint32(SenderVirtualAddress);
- _worldPacket << PartyGUID;
- _worldPacket << uint32(AchievementID);
+ _worldPacket << int32(AchievementID);
_worldPacket << float(DisplayTime);
+ _worldPacket << int32(SpellID);
_worldPacket.WriteBits(SenderName.length(), 11);
_worldPacket.WriteBits(TargetName.length(), 11);
_worldPacket.WriteBits(Prefix.length(), 5);
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index c4a79438d56..8f03d8aa4b5 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -49,6 +49,7 @@ namespace WorldPackets
std::string Text;
int32 Language = LANG_UNIVERSAL;
+ bool IsSecure = true;
};
// CMSG_CHAT_MESSAGE_WHISPER
@@ -76,6 +77,7 @@ namespace WorldPackets
ObjectGuid ChannelGUID;
std::string Text;
std::string Target;
+ Optional<bool> IsSecure;
};
struct ChatAddonMessageParams
@@ -163,7 +165,6 @@ namespace WorldPackets
ObjectGuid SenderGuildGUID;
ObjectGuid SenderAccountGUID;
ObjectGuid TargetGUID;
- ObjectGuid PartyGUID;
uint32 SenderVirtualAddress = 0;
uint32 TargetVirtualAddress = 0;
std::string SenderName;
@@ -172,8 +173,9 @@ namespace WorldPackets
std::string _Channel; ///< Channel Name
std::string ChatText;
uint32 AchievementID = 0;
- uint8 _ChatFlags = 0; ///< @see enum ChatFlags
+ uint16 _ChatFlags = 0; ///< @see enum ChatFlags
float DisplayTime = 0.0f;
+ int32 SpellID = 0;
Optional<uint32> Unused_801;
bool HideChatLog = false;
bool FakeSenderName = false;
diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp
index 938c77b40b3..7b2f1c71134 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.cpp
+++ b/src/server/game/Server/Packets/CombatLogPackets.cpp
@@ -361,7 +361,7 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write()
attackRoundInfo << int8(ContentTuning.TargetScalingLevelDelta);
attackRoundInfo << float(ContentTuning.PlayerItemLevel);
attackRoundInfo << float(ContentTuning.TargetItemLevel);
- attackRoundInfo << uint16(ContentTuning.ScalingHealthItemLevelCurveID);
+ attackRoundInfo << uint32(ContentTuning.ScalingHealthItemLevelCurveID);
attackRoundInfo << uint32(ContentTuning.Flags);
attackRoundInfo << int32(ContentTuning.PlayerContentTuningID);
attackRoundInfo << int32(ContentTuning.TargetContentTuningID);
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
index f0ee217503d..acaeacb9b9f 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp
@@ -171,7 +171,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTunin
data << float(contentTuningParams.PlayerItemLevel);
data << float(contentTuningParams.TargetItemLevel);
data << int16(contentTuningParams.PlayerLevelDelta);
- data << uint16(contentTuningParams.ScalingHealthItemLevelCurveID);
+ data << uint32(contentTuningParams.ScalingHealthItemLevelCurveID);
data << uint8(contentTuningParams.TargetLevel);
data << uint8(contentTuningParams.Expansion);
data << int8(contentTuningParams.TargetScalingLevelDelta);
diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h
index 325338223c2..a5cd2eaa4ef 100644
--- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h
+++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h
@@ -69,7 +69,7 @@ namespace WorldPackets
int16 PlayerLevelDelta = 0;
float PlayerItemLevel = 0;
float TargetItemLevel = 0;
- uint16 ScalingHealthItemLevelCurveID = 0;
+ uint32 ScalingHealthItemLevelCurveID = 0;
uint8 TargetLevel = 0;
uint8 Expansion = 0;
int8 TargetScalingLevelDelta = 0;
diff --git a/src/server/game/Server/Packets/LootPackets.cpp b/src/server/game/Server/Packets/LootPackets.cpp
index 883fa6d4cea..140e8ce6d85 100644
--- a/src/server/game/Server/Packets/LootPackets.cpp
+++ b/src/server/game/Server/Packets/LootPackets.cpp
@@ -177,6 +177,7 @@ WorldPacket const* WorldPackets::Loot::StartLootRoll::Write()
_worldPacket << uint8(ValidRolls);
_worldPacket.append(LootRollIneligibleReason.data(), LootRollIneligibleReason.size());
_worldPacket << uint8(Method);
+ _worldPacket << int32(DungeonEncounterID);
_worldPacket << Item;
return &_worldPacket;
@@ -188,8 +189,10 @@ WorldPacket const* WorldPackets::Loot::LootRollBroadcast::Write()
_worldPacket << Player;
_worldPacket << int32(Roll);
_worldPacket << uint8(RollType);
+ _worldPacket << int32(DungeonEncounterID);
_worldPacket << Item;
_worldPacket.WriteBit(Autopassed);
+ _worldPacket.WriteBit(OffSpec);
_worldPacket.FlushBits();
return &_worldPacket;
@@ -201,6 +204,7 @@ WorldPacket const* WorldPackets::Loot::LootRollWon::Write()
_worldPacket << Winner;
_worldPacket << int32(Roll);
_worldPacket << uint8(RollType);
+ _worldPacket << int32(DungeonEncounterID);
_worldPacket << Item;
_worldPacket.WriteBit(MainSpec);
_worldPacket.FlushBits();
@@ -211,6 +215,7 @@ WorldPacket const* WorldPackets::Loot::LootRollWon::Write()
WorldPacket const* WorldPackets::Loot::LootAllPassed::Write()
{
_worldPacket << LootObj;
+ _worldPacket << int32(DungeonEncounterID);
_worldPacket << Item;
return &_worldPacket;
@@ -220,6 +225,7 @@ WorldPacket const* WorldPackets::Loot::LootRollsComplete::Write()
{
_worldPacket << LootObj;
_worldPacket << uint8(LootListID);
+ _worldPacket << int32(DungeonEncounterID);
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/LootPackets.h b/src/server/game/Server/Packets/LootPackets.h
index 6f6f6456f2c..b553c8275cc 100644
--- a/src/server/game/Server/Packets/LootPackets.h
+++ b/src/server/game/Server/Packets/LootPackets.h
@@ -228,6 +228,7 @@ namespace WorldPackets
uint8 ValidRolls = 0;
std::array<LootRollIneligibilityReason, 4> LootRollIneligibleReason = { };
LootItemData Item;
+ int32 DungeonEncounterID = 0;
};
class LootRollBroadcast final : public ServerPacket
@@ -243,6 +244,8 @@ namespace WorldPackets
uint8 RollType = 0;
LootItemData Item;
bool Autopassed = false; ///< Triggers message |HlootHistory:%d|h[Loot]|h: You automatically passed on: %s because you cannot loot that item.
+ bool OffSpec = false;
+ int32 DungeonEncounterID = 0;
};
class LootRollWon final : public ServerPacket
@@ -258,6 +261,7 @@ namespace WorldPackets
uint8 RollType = 0;
LootItemData Item;
bool MainSpec = false;
+ int32 DungeonEncounterID = 0;
};
class LootAllPassed final : public ServerPacket
@@ -269,6 +273,7 @@ namespace WorldPackets
ObjectGuid LootObj;
LootItemData Item;
+ int32 DungeonEncounterID = 0;
};
class LootRollsComplete final : public ServerPacket
@@ -280,6 +285,7 @@ namespace WorldPackets
ObjectGuid LootObj;
uint8 LootListID = 0;
+ int32 DungeonEncounterID = 0;
};
class MasterLootCandidateList final : public ServerPacket
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index 9f39f3334ca..9b2eedb8f90 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -64,7 +64,7 @@ WorldPacket const* WorldPackets::Misc::SetCurrency::Write()
_worldPacket.WriteBit(QuantityGainSource.has_value());
_worldPacket.WriteBit(QuantityLostSource.has_value());
_worldPacket.WriteBit(FirstCraftOperationID.has_value());
- _worldPacket.WriteBit(LastSpendTime.has_value());
+ _worldPacket.WriteBit(NextRechargeTime.has_value());
_worldPacket.FlushBits();
if (WeeklyQuantity)
@@ -91,8 +91,11 @@ WorldPacket const* WorldPackets::Misc::SetCurrency::Write()
if (FirstCraftOperationID)
_worldPacket << uint32(*FirstCraftOperationID);
- if (LastSpendTime)
- _worldPacket << *LastSpendTime;
+ if (NextRechargeTime)
+ _worldPacket << *NextRechargeTime;
+
+ if (RechargeCycleStartTime)
+ _worldPacket << *RechargeCycleStartTime;
return &_worldPacket;
}
@@ -116,7 +119,8 @@ WorldPacket const* WorldPackets::Misc::SetupCurrency::Write()
_worldPacket.WriteBit(data.TrackedQuantity.has_value());
_worldPacket.WriteBit(data.MaxQuantity.has_value());
_worldPacket.WriteBit(data.TotalEarned.has_value());
- _worldPacket.WriteBit(data.LastSpendTime.has_value());
+ _worldPacket.WriteBit(data.NextRechargeTime.has_value());
+ _worldPacket.WriteBit(data.RechargeCycleStartTime.has_value());
_worldPacket.WriteBits(uint8(data.Flags), 5);
_worldPacket.FlushBits();
@@ -130,8 +134,10 @@ WorldPacket const* WorldPackets::Misc::SetupCurrency::Write()
_worldPacket << int32(*data.MaxQuantity);
if (data.TotalEarned)
_worldPacket << int32(*data.TotalEarned);
- if (data.LastSpendTime)
- _worldPacket << *data.LastSpendTime;
+ if (data.NextRechargeTime)
+ _worldPacket << *data.NextRechargeTime;
+ if (data.RechargeCycleStartTime)
+ _worldPacket << *data.RechargeCycleStartTime;
}
return &_worldPacket;
@@ -716,10 +722,10 @@ WorldPacket const* WorldPackets::Misc::AccountMountUpdate::Write()
_worldPacket.WriteBit(IsFullUpdate);
_worldPacket << uint32(Mounts->size());
- for (auto const& spell : *Mounts)
+ for (auto [spellId, flags] : *Mounts)
{
- _worldPacket << int32(spell.first);
- _worldPacket.WriteBits(spell.second, 2);
+ _worldPacket << int32(spellId);
+ _worldPacket.WriteBits(flags, 4);
}
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 5f29600d31d..d39bcb26e0a 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -113,7 +113,8 @@ namespace WorldPackets
Optional<CurrencyGainSource> QuantityGainSource;
Optional<CurrencyDestroyReason> QuantityLostSource;
Optional<uint32> FirstCraftOperationID;
- Optional<Timestamp<>> LastSpendTime;
+ Optional<Timestamp<>> NextRechargeTime;
+ Optional<Timestamp<>> RechargeCycleStartTime;
bool SuppressChatLog = false;
};
@@ -139,7 +140,8 @@ namespace WorldPackets
Optional<int32> TrackedQuantity;
Optional<int32> MaxQuantity;
Optional<int32> TotalEarned;
- Optional<Timestamp<>> LastSpendTime;
+ Optional<Timestamp<>> NextRechargeTime;
+ Optional<Timestamp<>> RechargeCycleStartTime;
uint8 Flags = 0;
};
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index 391be953ee7..02833e95525 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -30,6 +30,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
bool hasSpline = false; // todo 6.x send this infos
bool hasInertia = movementInfo.inertia.has_value();
bool hasAdvFlying = movementInfo.advFlying.has_value();
+ bool hasStandingOnGameObjectGUID = movementInfo.standingOnGameObjectGUID.has_value();
data << movementInfo.guid;
data << uint32(movementInfo.flags);
@@ -51,6 +52,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
data << ObjectGuid;
}*/
+ data.WriteBit(hasStandingOnGameObjectGUID);
data.WriteBit(hasTransportData);
data.WriteBit(hasFallData);
data.WriteBit(hasSpline);
@@ -65,6 +67,9 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
if (hasTransportData)
data << movementInfo.transport;
+ if (hasStandingOnGameObjectGUID)
+ data << *movementInfo.standingOnGameObjectGUID;
+
if (hasInertia)
{
data << uint32(movementInfo.inertia->id);
@@ -121,6 +126,7 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo)
data >> guid;
}
+ bool hasStandingOnGameObjectGUID = data.ReadBit();
bool hasTransport = data.ReadBit();
bool hasFall = data.ReadBit();
/*hasSpline = */data.ReadBit(); // todo 6.x read this infos
@@ -133,6 +139,9 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo)
if (hasTransport)
data >> movementInfo.transport;
+ if (hasStandingOnGameObjectGUID)
+ data >> movementInfo.standingOnGameObjectGUID.emplace();
+
if (hasInertia)
{
movementInfo.inertia.emplace();
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 72c5b922bc0..ed8239331c8 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -44,21 +44,6 @@ void PetCancelAura::Read()
_worldPacket >> SpellID;
}
-WorldPacket const* CategoryCooldown::Write()
-{
- _worldPacket.reserve(4 + 8 * CategoryCooldowns.size());
-
- _worldPacket << uint32(CategoryCooldowns.size());
-
- for (CategoryCooldownInfo const& cooldown : CategoryCooldowns)
- {
- _worldPacket << uint32(cooldown.Category);
- _worldPacket << int32(cooldown.ModCooldown);
- }
-
- return &_worldPacket;
-}
-
WorldPacket const* SendKnownSpells::Write()
{
_worldPacket.reserve(1 + 4 * KnownSpells.size() + 4 * FavoriteSpells.size());
@@ -165,13 +150,12 @@ WorldPacket const* AuraUpdate::Write()
return &_worldPacket;
}
-ByteBuffer& operator>>(ByteBuffer& buffer, Optional<TargetLocation>& location)
+ByteBuffer& operator>>(ByteBuffer& buffer, TargetLocation& location)
{
- location.emplace();
- buffer >> location->Transport;
- buffer >> location->Location.m_positionX;
- buffer >> location->Location.m_positionY;
- buffer >> location->Location.m_positionZ;
+ buffer >> location.Transport;
+ buffer >> location.Location.m_positionX;
+ buffer >> location.Location.m_positionY;
+ buffer >> location.Location.m_positionZ;
return buffer;
}
@@ -190,10 +174,10 @@ ByteBuffer& operator>>(ByteBuffer& buffer, SpellTargetData& targetData)
buffer >> targetData.Item;
if (hasSrcLocation)
- buffer >> targetData.SrcLocation;
+ buffer >> targetData.SrcLocation.emplace();
if (hasDstLocation)
- buffer >> targetData.DstLocation;
+ buffer >> targetData.DstLocation.emplace();
if (hasOrientation)
targetData.Orientation = buffer.read<float>();
@@ -242,6 +226,7 @@ ByteBuffer& operator>>(ByteBuffer& buffer, SpellCastRequest& request)
buffer >> request.CraftingNPC;
request.OptionalCurrencies.resize(buffer.read<uint32>());
request.OptionalReagents.resize(buffer.read<uint32>());
+ request.RemovedModifications.resize(buffer.read<uint32>());
for (SpellExtraCurrencyCost& optionalCurrency : request.OptionalCurrencies)
buffer >> optionalCurrency;
@@ -258,11 +243,11 @@ ByteBuffer& operator>>(ByteBuffer& buffer, SpellCastRequest& request)
for (SpellCraftingReagent& optionalReagent : request.OptionalReagents)
buffer >> optionalReagent;
+ for (SpellCraftingReagent& optionalReagent : request.RemovedModifications)
+ buffer >> optionalReagent;
+
if (hasMoveUpdate)
- {
- request.MoveUpdate.emplace();
- buffer >> *request.MoveUpdate;
- }
+ buffer >> request.MoveUpdate.emplace();
for (SpellWeight& weight : request.Weight)
{
@@ -997,10 +982,7 @@ void UpdateMissileTrajectory::Read()
_worldPacket.ResetBitPos();
if (hasStatus)
- {
- Status.emplace();
- _worldPacket >> *Status;
- }
+ _worldPacket >> Status.emplace();
}
WorldPacket const* SpellDelayed::Write()
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index 3f57ea4f205..6872687f1d1 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -103,33 +103,6 @@ namespace WorldPackets
uint32 SpellID = 0;
};
- class RequestCategoryCooldowns final : public ClientPacket
- {
- public:
- RequestCategoryCooldowns(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_CATEGORY_COOLDOWNS, std::move(packet)) { }
-
- void Read() override { }
- };
-
- class CategoryCooldown final : public ServerPacket
- {
- public:
- struct CategoryCooldownInfo
- {
- CategoryCooldownInfo(uint32 category, int32 cooldown)
- : Category(category), ModCooldown(cooldown) { }
-
- uint32 Category = 0; ///< SpellCategory Id
- int32 ModCooldown = 0; ///< Reduced Cooldown in ms
- };
-
- CategoryCooldown() : ServerPacket(SMSG_CATEGORY_COOLDOWN, 4) { }
-
- WorldPacket const* Write() override;
-
- std::vector<CategoryCooldownInfo> CategoryCooldowns;
- };
-
class SendKnownSpells final : public ServerPacket
{
public:
@@ -274,7 +247,8 @@ namespace WorldPackets
MissileTrajectoryRequest MissileTrajectory;
Optional<MovementInfo> MoveUpdate;
std::vector<SpellWeight> Weight;
- Array<SpellCraftingReagent, 3> OptionalReagents;
+ Array<SpellCraftingReagent, 6> OptionalReagents;
+ Array<SpellCraftingReagent, 6> RemovedModifications;
Array<SpellExtraCurrencyCost, 5 /*MAX_ITEM_EXT_COST_CURRENCIES*/> OptionalCurrencies;
Optional<uint64> CraftingOrderID;
ObjectGuid CraftingNPC;
diff --git a/src/server/game/Server/Packets/TaxiPackets.cpp b/src/server/game/Server/Packets/TaxiPackets.cpp
index c0075bc111c..3fe652aa590 100644
--- a/src/server/game/Server/Packets/TaxiPackets.cpp
+++ b/src/server/game/Server/Packets/TaxiPackets.cpp
@@ -36,8 +36,8 @@ WorldPacket const* WorldPackets::Taxi::ShowTaxiNodes::Write()
_worldPacket.WriteBit(WindowInfo.has_value());
_worldPacket.FlushBits();
- _worldPacket << uint32(CanLandNodes.size());
- _worldPacket << uint32(CanUseNodes.size());
+ _worldPacket << uint32(CanLandNodes.size() / 8); // client reads this in uint64 blocks, size is ensured to be divisible by 8 in TaxiMask constructor
+ _worldPacket << uint32(CanUseNodes.size() / 8); // client reads this in uint64 blocks, size is ensured to be divisible by 8 in TaxiMask constructor
if (WindowInfo.has_value())
{
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 9d76171bc53..401ee974de2 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -342,7 +342,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode);
DEFINE_HANDLER(CMSG_CLIENT_PORT_GRAVEYARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePortGraveyard);
DEFINE_HANDLER(CMSG_CLOSE_INTERACTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCloseInteraction);
- DEFINE_HANDLER(CMSG_CLOSE_QUEST_CHOICE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLOSE_RUNEFORGE_INTERACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLUB_FINDER_APPLICATION_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
@@ -797,7 +796,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REQUEST_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestAccountData);
DEFINE_HANDLER(CMSG_REQUEST_AREA_POI_UPDATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestBattlefieldStatusOpcode);
- DEFINE_HANDLER(CMSG_REQUEST_CATEGORY_COOLDOWNS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCategoryCooldowns);
DEFINE_HANDLER(CMSG_REQUEST_CEMETERY_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCemeteryList);
DEFINE_HANDLER(CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
@@ -917,7 +915,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSupportTicketSubmitComplaint);
DEFINE_HANDLER(CMSG_SURRENDER_ARENA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SUSPEND_COMMS_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_SUSPEND_TOKEN_RESPONSE, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleSuspendTokenResponse);
+ DEFINE_HANDLER(CMSG_SUSPEND_TOKEN_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSuspendTokenResponse);
DEFINE_HANDLER(CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSwapGuildBankItemWithGuildBankItem);
DEFINE_HANDLER(CMSG_SWAP_INV_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSwapInvItemOpcode);
DEFINE_HANDLER(CMSG_SWAP_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSwapItem);
@@ -981,10 +979,6 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_WORLD_PORT_RESPONSE, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode);
DEFINE_HANDLER(CMSG_WRAP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWrapItem);
- //DEFINE_HANDLER(CMSG_BF_MGR_ENTRY_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfEntryInviteResponse);
- //DEFINE_HANDLER(CMSG_BF_MGR_QUEUE_EXIT_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfQueueExitRequest);
- //DEFINE_HANDLER(CMSG_BF_MGR_QUEUE_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBfQueueInviteResponse);
-
#undef DEFINE_HANDLER
#define DEFINE_SERVER_OPCODE_HANDLER(opcode, status, con) \
@@ -995,6 +989,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_COSMETIC_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_DATA_TIMES, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_EXPORT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_HEIRLOOM_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACCOUNT_MOUNT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1008,6 +1003,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATE_SOULBIND_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATE_TAXI_REPLY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVE_GLYPHS, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADDON_LIST_REQUEST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_BATTLENET_FRIEND_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_ITEM_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1034,6 +1030,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_UNATTACH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_CLEAR_OPPONENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1069,6 +1066,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AVAILABLE_HOTFIXES, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BACKPACK_DEFAULT_SIZE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BAG_CLEANUP_FINISHED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATCH_PRESENCE_SUBSCRIPTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1117,7 +1115,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_JOURNAL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED, STATUS_NEVER, CONNECTION_TYPE_REALM);
- 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_TRAP_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1169,7 +1166,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAPTURE_POINT_REMOVED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CATEGORY_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAIN_MISSILE_BOUNCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1592,6 +1588,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_CUF_PROFILES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_EQUIPMENT_SET, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_PARTY_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_SET_TIME_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_VERIFY_WORLD, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGOUT_CANCEL_ACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1810,6 +1808,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PHASE_SHIFT_CHANGE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYED_TIME, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_AZERITE_ITEM_GAINS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BONUS_ROLL_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1817,10 +1816,13 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CHOICE_CLEAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CHOICE_DISPLAY_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_CONDITION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_HIDE_ARROW_CALLOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
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_ARROW_CALLOUT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SHOW_PARTY_POSE_UI, STATUS_UNHANDLED, 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_TUTORIAL_HIGHLIGHT_SPELL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1899,6 +1901,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEUE_SUMMARY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAF_ACCOUNT_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAF_ACTIVITY_STATE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAF_DEBUG_FRIEND_MONTHS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_DIFFICULTY_SET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_GROUP_ONLY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_INSTANCE_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2095,7 +2098,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_MOVIE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TURN_IN_PETITION_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TUTORIAL_FLAGS, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_HEALING_RANGE_MODIFIED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_MAP_QUEST_LINES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_CHARACTER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2121,7 +2123,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_RECENT_PLAYER_GUIDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_TALENT_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_TASK_PROGRESS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WORLD_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_ADD, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_REMOVE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -2153,7 +2154,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_REWARDS_PROGRESS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_REWARDS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_REWARD_CLAIM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO_IS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index a46c9bea1c5..4d8e39feb13 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -44,35 +44,35 @@ enum OpcodeMisc : uint16
enum OpcodeClient : uint16
{
- CMSG_ABANDON_NPE_RESPONSE = 0x33EA,
- CMSG_ACCEPT_GUILD_INVITE = 0x35FC,
- CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x3395,
- CMSG_ACCEPT_SOCIAL_CONTRACT = 0x373D,
+ CMSG_ABANDON_NPE_RESPONSE = 0x33EB,
+ CMSG_ACCEPT_GUILD_INVITE = 0x35FD,
+ CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x3396,
+ CMSG_ACCEPT_SOCIAL_CONTRACT = 0x3744,
CMSG_ACCEPT_TRADE = 0x315A,
CMSG_ACCEPT_WARGAME_INVITE = 0x35E0,
- CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3732,
- CMSG_ACTIVATE_SOULBIND = 0x33D9,
+ CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3733,
+ CMSG_ACTIVATE_SOULBIND = 0x33DA,
CMSG_ACTIVATE_TAXI = 0x34B1,
CMSG_ADDON_LIST = 0x35D8,
- CMSG_ADD_ACCOUNT_COSMETIC = 0x32B1,
- CMSG_ADD_BATTLENET_FRIEND = 0x3658,
- CMSG_ADD_FRIEND = 0x36CC,
- CMSG_ADD_IGNORE = 0x36D0,
- CMSG_ADD_TOY = 0x32B0,
- CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3204,
- CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DC,
+ CMSG_ADD_ACCOUNT_COSMETIC = 0x32B0,
+ CMSG_ADD_BATTLENET_FRIEND = 0x3659,
+ CMSG_ADD_FRIEND = 0x36CD,
+ CMSG_ADD_IGNORE = 0x36D1,
+ CMSG_ADD_TOY = 0x32AF,
+ CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3203,
+ CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DD,
CMSG_ADVENTURE_MAP_START_QUEST = 0x3369,
CMSG_ALTER_APPEARANCE = 0x3503,
CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B6,
CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B7,
- CMSG_AREA_TRIGGER = 0x31D8,
- CMSG_ARTIFACT_ADD_POWER = 0x31AB,
- CMSG_ARTIFACT_SET_APPEARANCE = 0x31AD,
- CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3210,
- CMSG_ATTACK_STOP = 0x3263,
- CMSG_ATTACK_SWING = 0x3262,
- CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E2,
- CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E3,
+ CMSG_AREA_TRIGGER = 0x31D7,
+ CMSG_ARTIFACT_ADD_POWER = 0x31AA,
+ CMSG_ARTIFACT_SET_APPEARANCE = 0x31AC,
+ CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320F,
+ CMSG_ATTACK_STOP = 0x3262,
+ CMSG_ATTACK_SWING = 0x3261,
+ CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E3,
+ CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E4,
CMSG_AUCTION_BROWSE_QUERY = 0x34D6,
CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34DE,
CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DD,
@@ -86,10 +86,10 @@ enum OpcodeClient : uint16
CMSG_AUCTION_PLACE_BID = 0x34D5,
CMSG_AUCTION_REMOVE_ITEM = 0x34D3,
CMSG_AUCTION_REPLICATE_ITEMS = 0x34D4,
- CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3734,
+ CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3735,
CMSG_AUCTION_SELL_COMMODITY = 0x34DF,
CMSG_AUCTION_SELL_ITEM = 0x34D2,
- CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3733,
+ CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3734,
CMSG_AUTH_CONTINUED_SESSION = 0x3766,
CMSG_AUTH_SESSION = 0x3765,
CMSG_AUTOBANK_ITEM = 0x3997,
@@ -101,102 +101,102 @@ enum OpcodeClient : uint16
CMSG_AUTO_GUILD_BANK_ITEM = 0x34BD,
CMSG_AUTO_STORE_BAG_ITEM = 0x399B,
CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x34C6,
- CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3391,
+ CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3392,
CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3374,
- CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3393,
- CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3392,
+ CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3394,
+ CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3393,
CMSG_BANKER_ACTIVATE = 0x34B9,
CMSG_BATTLEFIELD_LEAVE = 0x3173,
- CMSG_BATTLEFIELD_LIST = 0x317F,
+ CMSG_BATTLEFIELD_LIST = 0x317E,
CMSG_BATTLEFIELD_PORT = 0x3538,
- CMSG_BATTLEMASTER_HELLO = 0x32CD,
+ CMSG_BATTLEMASTER_HELLO = 0x32CC,
CMSG_BATTLEMASTER_JOIN = 0x3530,
CMSG_BATTLEMASTER_JOIN_ARENA = 0x3531,
CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3536,
CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3532,
CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3533,
- CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36CF,
- CMSG_BATTLENET_REQUEST = 0x36F1,
- CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36C9,
- CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3710,
- CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C8,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36BF,
- CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3737,
- CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B7,
- CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36B8,
- CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x3709,
- CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3705,
- CMSG_BATTLE_PAY_START_PURCHASE = 0x36C7,
- CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36EE,
+ CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D0,
+ CMSG_BATTLENET_REQUEST = 0x36F2,
+ CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CA,
+ CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3711,
+ CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C9,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C0,
+ CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x3738,
+ CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36B8,
+ CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36B9,
+ CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370A,
+ CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3706,
+ CMSG_BATTLE_PAY_START_PURCHASE = 0x36C8,
+ CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36EF,
CMSG_BATTLE_PET_CLEAR_FANFARE = 0x3126,
- CMSG_BATTLE_PET_DELETE_PET = 0x3623,
- CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3624,
- CMSG_BATTLE_PET_MODIFY_NAME = 0x3626,
- CMSG_BATTLE_PET_REQUEST_JOURNAL = 0x3622,
- CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK = 0x3621,
- CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362B,
- CMSG_BATTLE_PET_SET_FLAGS = 0x362E,
- CMSG_BATTLE_PET_SUMMON = 0x3627,
- CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E2,
- CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E1,
+ CMSG_BATTLE_PET_DELETE_PET = 0x3624,
+ CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3625,
+ CMSG_BATTLE_PET_MODIFY_NAME = 0x3627,
+ 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 = 0x362F,
+ CMSG_BATTLE_PET_SUMMON = 0x3628,
+ CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E1,
+ CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E0,
CMSG_BEGIN_TRADE = 0x3157,
CMSG_BINDER_ACTIVATE = 0x34B8,
CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3540,
CMSG_BLACK_MARKET_OPEN = 0x353E,
CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353F,
- CMSG_BONUS_ROLL = 0x3394,
- CMSG_BUG_REPORT = 0x3683,
+ CMSG_BONUS_ROLL = 0x3395,
+ 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 = 0x31F4,
- CMSG_CALENDAR_ADD_EVENT = 0x367B,
- CMSG_CALENDAR_COMMUNITY_INVITE = 0x366F,
- CMSG_CALENDAR_COMPLAIN = 0x3677,
- CMSG_CALENDAR_COPY_EVENT = 0x3676,
- CMSG_CALENDAR_EVENT_SIGN_UP = 0x3679,
- CMSG_CALENDAR_GET = 0x366D,
- CMSG_CALENDAR_GET_EVENT = 0x366E,
- CMSG_CALENDAR_GET_NUM_PENDING = 0x3678,
- CMSG_CALENDAR_INVITE = 0x3670,
- CMSG_CALENDAR_MODERATOR_STATUS = 0x3674,
- CMSG_CALENDAR_REMOVE_EVENT = 0x3675,
- CMSG_CALENDAR_REMOVE_INVITE = 0x3671,
- CMSG_CALENDAR_RSVP = 0x3672,
- CMSG_CALENDAR_STATUS = 0x3673,
- CMSG_CALENDAR_UPDATE_EVENT = 0x367C,
- CMSG_CANCEL_AURA = 0x31AF,
+ CMSG_CAGE_BATTLE_PET = 0x31F3,
+ 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 = 0x31AE,
CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F5,
- CMSG_CANCEL_CAST = 0x32B7,
- CMSG_CANCEL_CHANNELLING = 0x327B,
- CMSG_CANCEL_GROWTH_AURA = 0x3283,
- CMSG_CANCEL_MASTER_LOOT_ROLL = 0x321C,
- CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AE,
- CMSG_CANCEL_MOUNT_AURA = 0x3296,
- CMSG_CANCEL_QUEUED_SPELL = 0x3180,
+ CMSG_CANCEL_CAST = 0x32B6,
+ CMSG_CANCEL_CHANNELLING = 0x327A,
+ CMSG_CANCEL_GROWTH_AURA = 0x3282,
+ CMSG_CANCEL_MASTER_LOOT_ROLL = 0x321B,
+ CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AD,
+ CMSG_CANCEL_MOUNT_AURA = 0x3295,
+ CMSG_CANCEL_QUEUED_SPELL = 0x317F,
CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500,
CMSG_CANCEL_TRADE = 0x315C,
- CMSG_CAN_DUEL = 0x3660,
- CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3704,
- CMSG_CAST_SPELL = 0x32B4,
+ CMSG_CAN_DUEL = 0x3661,
+ CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3705,
+ CMSG_CAST_SPELL = 0x32B3,
CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x308F,
- CMSG_CHANGE_BAG_SLOT_FLAG = 0x334E,
- CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x334F,
- CMSG_CHANGE_MONUMENT_APPEARANCE = 0x332F,
- CMSG_CHANGE_REALM_TICKET = 0x36F6,
- CMSG_CHANGE_SUB_GROUP = 0x364A,
- CMSG_CHARACTER_CHECK_UPGRADE = 0x36C2,
- CMSG_CHARACTER_RENAME_REQUEST = 0x36BD,
- CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C0,
- CMSG_CHARACTER_UPGRADE_START = 0x36C1,
- CMSG_CHAR_CUSTOMIZE = 0x368A,
- CMSG_CHAR_DELETE = 0x369A,
- CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3690,
+ CMSG_CHANGE_BAG_SLOT_FLAG = 0x334D,
+ CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x334E,
+ CMSG_CHANGE_MONUMENT_APPEARANCE = 0x332E,
+ CMSG_CHANGE_REALM_TICKET = 0x36F7,
+ CMSG_CHANGE_SUB_GROUP = 0x364B,
+ CMSG_CHARACTER_CHECK_UPGRADE = 0x36C3,
+ CMSG_CHARACTER_RENAME_REQUEST = 0x36BE,
+ CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x36C1,
+ CMSG_CHARACTER_UPGRADE_START = 0x36C2,
+ CMSG_CHAR_CUSTOMIZE = 0x368B,
+ CMSG_CHAR_DELETE = 0x369B,
+ CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3691,
CMSG_CHAT_ADDON_MESSAGE = 0x37EE,
CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF,
- CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x37F4,
+ CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x37F6,
CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3,
CMSG_CHAT_CHANNEL_BAN = 0x37E1,
CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x37E6,
@@ -231,65 +231,64 @@ 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 = 0x3643,
- CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3254,
- CMSG_CHOICE_RESPONSE = 0x32BC,
- CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33D8,
- CMSG_CLAIM_WEEKLY_REWARD = 0x33B4,
- CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x340F,
- CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3214,
- CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3411,
- CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x340E,
- CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x340D,
- CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3412,
- CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3213,
+ CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3644,
+ CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3253,
+ CMSG_CHOICE_RESPONSE = 0x32BB,
+ CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33D9,
+ CMSG_CLAIM_WEEKLY_REWARD = 0x33B5,
+ CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3411,
+ CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3213,
+ CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3413,
+ CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3410,
+ CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x340F,
+ CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3414,
+ CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3212,
CMSG_CLEAR_NEW_APPEARANCE = 0x3129,
- CMSG_CLEAR_RAID_MARKER = 0x31A7,
+ CMSG_CLEAR_RAID_MARKER = 0x31A6,
CMSG_CLEAR_TRADE_ITEM = 0x315E,
CMSG_CLIENT_PORT_GRAVEYARD = 0x353A,
CMSG_CLOSE_INTERACTION = 0x3499,
- CMSG_CLOSE_QUEST_CHOICE = 0x32BD,
- CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E0,
- CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3413,
- CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371B,
- CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x3719,
- CMSG_CLUB_FINDER_POST = 0x3716,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371D,
- CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3717,
- CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3718,
- CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371C,
- CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371E,
- CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371A,
- CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x373A,
- CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F3,
- CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3631,
+ CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E1,
+ CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3415,
+ CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371C,
+ CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371A,
+ CMSG_CLUB_FINDER_POST = 0x3717,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x371E,
+ CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x3718,
+ CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x3719,
+ CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x371D,
+ CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x371F,
+ CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x371B,
+ CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x373B,
+ CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x36F4,
+ CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3632,
CMSG_COMMENTATOR_ENABLE = 0x35F0,
CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4,
CMSG_COMMENTATOR_EXIT_INSTANCE = 0x35F5,
CMSG_COMMENTATOR_GET_MAP_INFO = 0x35F1,
CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x35F3,
CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2,
- CMSG_COMMENTATOR_SPECTATE = 0x3738,
+ CMSG_COMMENTATOR_SPECTATE = 0x3739,
CMSG_COMMENTATOR_START_WARGAME = 0x35EF,
- CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E0,
- CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EA,
- CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E1,
- CMSG_COMPLAINT = 0x366A,
+ CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36E1,
+ CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EB,
+ CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E2,
+ CMSG_COMPLAINT = 0x366B,
CMSG_COMPLETE_CINEMATIC = 0x3558,
CMSG_COMPLETE_MOVIE = 0x34EB,
- CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AC,
- CMSG_CONFIRM_RESPEC_WIPE = 0x3216,
+ CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AB,
+ CMSG_CONFIRM_RESPEC_WIPE = 0x3215,
CMSG_CONNECT_TO_FAILED = 0x35D4,
- CMSG_CONSUMABLE_TOKEN_BUY = 0x36E5,
- CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E6,
- CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E4,
- CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E8,
- CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36E9,
+ CMSG_CONSUMABLE_TOKEN_BUY = 0x36E6,
+ CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E7,
+ CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E5,
+ CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E9,
+ CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EA,
CMSG_CONTRIBUTION_CONTRIBUTE = 0x356C,
CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356D,
CMSG_CONVERSATION_CINEMATIC_READY = 0x355A,
CMSG_CONVERSATION_LINE_STARTED = 0x3559,
- CMSG_CONVERT_RAID = 0x364C,
+ CMSG_CONVERT_RAID = 0x364D,
CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3580,
CMSG_CRAFTING_ORDER_CANCEL = 0x358B,
CMSG_CRAFTING_ORDER_CLAIM = 0x3588,
@@ -300,89 +299,89 @@ enum OpcodeClient : uint16
CMSG_CRAFTING_ORDER_REJECT = 0x358C,
CMSG_CRAFTING_ORDER_RELEASE = 0x3589,
CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x358D,
- CMSG_CREATE_CHARACTER = 0x3642,
- CMSG_CREATE_SHIPMENT = 0x331A,
+ CMSG_CREATE_CHARACTER = 0x3643,
+ CMSG_CREATE_SHIPMENT = 0x3319,
CMSG_DB_QUERY_BULK = 0x35E4,
CMSG_DECLINE_GUILD_INVITES = 0x352D,
CMSG_DECLINE_PETITION = 0x3547,
CMSG_DELETE_EQUIPMENT_SET = 0x3519,
- CMSG_DEL_FRIEND = 0x36CD,
- CMSG_DEL_IGNORE = 0x36D1,
- CMSG_DEPOSIT_REAGENT_BANK = 0x3357,
- CMSG_DESTROY_ITEM = 0x32AA,
- CMSG_DF_BOOT_PLAYER_VOTE = 0x3616,
- CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3608,
- CMSG_DF_GET_JOIN_STATUS = 0x3614,
- CMSG_DF_GET_SYSTEM_INFO = 0x3613,
- CMSG_DF_JOIN = 0x3609,
- CMSG_DF_LEAVE = 0x3612,
- CMSG_DF_PROPOSAL_RESPONSE = 0x3607,
- CMSG_DF_READY_CHECK_RESPONSE = 0x3619,
- CMSG_DF_SET_ROLES = 0x3615,
- CMSG_DF_TELEPORT = 0x3617,
+ CMSG_DEL_FRIEND = 0x36CE,
+ CMSG_DEL_IGNORE = 0x36D2,
+ CMSG_DEPOSIT_REAGENT_BANK = 0x3356,
+ CMSG_DESTROY_ITEM = 0x32A9,
+ CMSG_DF_BOOT_PLAYER_VOTE = 0x3617,
+ CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3609,
+ CMSG_DF_GET_JOIN_STATUS = 0x3615,
+ CMSG_DF_GET_SYSTEM_INFO = 0x3614,
+ CMSG_DF_JOIN = 0x360A,
+ CMSG_DF_LEAVE = 0x3613,
+ CMSG_DF_PROPOSAL_RESPONSE = 0x3608,
+ CMSG_DF_READY_CHECK_RESPONSE = 0x361A,
+ CMSG_DF_SET_ROLES = 0x3616,
+ CMSG_DF_TELEPORT = 0x3618,
CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A41,
CMSG_DISMISS_CRITTER = 0x3507,
- CMSG_DO_COUNTDOWN = 0x3715,
- CMSG_DO_MASTER_LOOT_ROLL = 0x321B,
- CMSG_DO_READY_CHECK = 0x3632,
+ CMSG_DO_COUNTDOWN = 0x3716,
+ CMSG_DO_MASTER_LOOT_ROLL = 0x321A,
+ CMSG_DO_READY_CHECK = 0x3633,
CMSG_DUEL_RESPONSE = 0x34F0,
- CMSG_EJECT_PASSENGER = 0x3249,
+ CMSG_EJECT_PASSENGER = 0x3248,
CMSG_EMOTE = 0x3554,
CMSG_ENABLE_NAGLE = 0x376B,
CMSG_ENABLE_TAXI_NODE = 0x34AF,
- CMSG_ENGINE_SURVEY = 0x36DF,
+ CMSG_ENGINE_SURVEY = 0x36E0,
CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3767,
CMSG_ENUM_CHARACTERS = 0x35E8,
- CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36D9,
+ CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DA,
CMSG_FAR_SIGHT = 0x34F6,
- CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B3,
- CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B2,
+ CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B2,
+ CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B1,
CMSG_GAME_OBJ_REPORT_USE = 0x34FD,
CMSG_GAME_OBJ_USE = 0x34FC,
- CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3315,
- CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32FB,
- CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32E8,
- CMSG_GARRISON_CHECK_UPGRADEABLE = 0x334A,
- CMSG_GARRISON_COMPLETE_MISSION = 0x333C,
- CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3316,
- CMSG_GARRISON_GENERATE_RECRUITS = 0x32FE,
- CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x330D,
- CMSG_GARRISON_GET_MAP_DATA = 0x3314,
+ CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3314,
+ CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32FA,
+ CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32E7,
+ CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3349,
+ CMSG_GARRISON_COMPLETE_MISSION = 0x333B,
+ CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3315,
+ CMSG_GARRISON_GENERATE_RECRUITS = 0x32FD,
+ CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x330C,
+ CMSG_GARRISON_GET_MAP_DATA = 0x3313,
CMSG_GARRISON_GET_MISSION_REWARD = 0x336D,
- CMSG_GARRISON_LEARN_TALENT = 0x3309,
- CMSG_GARRISON_MISSION_BONUS_ROLL = 0x333E,
- CMSG_GARRISON_PURCHASE_BUILDING = 0x32E4,
- CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3300,
- CMSG_GARRISON_REMOVE_FOLLOWER = 0x3333,
- CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32FC,
- CMSG_GARRISON_RENAME_FOLLOWER = 0x32FD,
- CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32E3,
- CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3318,
- CMSG_GARRISON_RESEARCH_TALENT = 0x3301,
- CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32E5,
- CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32F9,
- CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32F1,
- CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32FF,
- CMSG_GARRISON_SOCKET_TALENT = 0x33ED,
- CMSG_GARRISON_START_MISSION = 0x333B,
- CMSG_GARRISON_SWAP_BUILDINGS = 0x32E9,
+ CMSG_GARRISON_LEARN_TALENT = 0x3308,
+ CMSG_GARRISON_MISSION_BONUS_ROLL = 0x333D,
+ CMSG_GARRISON_PURCHASE_BUILDING = 0x32E3,
+ CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32FF,
+ CMSG_GARRISON_REMOVE_FOLLOWER = 0x3332,
+ CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32FB,
+ CMSG_GARRISON_RENAME_FOLLOWER = 0x32FC,
+ CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32E2,
+ CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3317,
+ CMSG_GARRISON_RESEARCH_TALENT = 0x3300,
+ CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32E4,
+ CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32F8,
+ CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32F0,
+ CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32FE,
+ CMSG_GARRISON_SOCKET_TALENT = 0x33EE,
+ CMSG_GARRISON_START_MISSION = 0x333A,
+ CMSG_GARRISON_SWAP_BUILDINGS = 0x32E8,
CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7,
- CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B2,
- CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3731,
- CMSG_GET_GARRISON_INFO = 0x32DE,
+ CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B3,
+ CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3732,
+ CMSG_GET_GARRISON_INFO = 0x32DD,
CMSG_GET_ITEM_PURCHASE_DATA = 0x3542,
- CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3319,
- CMSG_GET_MIRROR_IMAGE_DATA = 0x32AE,
+ CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3318,
+ CMSG_GET_MIRROR_IMAGE_DATA = 0x32AD,
CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE,
- CMSG_GET_RAF_ACCOUNT_INFO = 0x371F,
- CMSG_GET_REMAINING_GAME_TIME = 0x36E7,
- CMSG_GET_TROPHY_LIST = 0x332C,
- CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DB,
- CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36EC,
- CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36ED,
- CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x368E,
- CMSG_GM_TICKET_GET_CASE_STATUS = 0x368D,
- CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368C,
+ CMSG_GET_RAF_ACCOUNT_INFO = 0x3720,
+ CMSG_GET_REMAINING_GAME_TIME = 0x36E8,
+ CMSG_GET_TROPHY_LIST = 0x332B,
+ CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DC,
+ CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36ED,
+ CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EE,
+ CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x368F,
+ CMSG_GM_TICKET_GET_CASE_STATUS = 0x368E,
+ CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368D,
CMSG_GOSSIP_REFRESH_OPTIONS = 0x357F,
CMSG_GOSSIP_SELECT_OPTION = 0x349A,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308D,
@@ -409,7 +408,7 @@ enum OpcodeClient : uint16
CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS = 0x3072,
CMSG_GUILD_GET_RANKS = 0x306E,
CMSG_GUILD_GET_ROSTER = 0x3074,
- CMSG_GUILD_INVITE_BY_NAME = 0x3606,
+ CMSG_GUILD_INVITE_BY_NAME = 0x3607,
CMSG_GUILD_LEAVE = 0x3063,
CMSG_GUILD_NEWS_UPDATE_STICKY = 0x306F,
CMSG_GUILD_OFFICER_REMOVE_MEMBER = 0x3064,
@@ -422,78 +421,78 @@ 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 = 0x36C4,
+ CMSG_GUILD_SET_GUILD_MASTER = 0x36C5,
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 = 0x32BE,
+ CMSG_HIDE_QUEST_CHOICE = 0x32BD,
CMSG_HOTFIX_REQUEST = 0x35E5,
CMSG_IGNORE_TRADE = 0x3159,
CMSG_INITIATE_ROLE_POLL = 0x35DA,
CMSG_INITIATE_TRADE = 0x3156,
CMSG_INSPECT = 0x353C,
CMSG_INSTANCE_LOCK_RESPONSE = 0x351A,
- CMSG_ISLAND_QUEUE = 0x33B0,
+ CMSG_ISLAND_QUEUE = 0x33B1,
CMSG_ITEM_PURCHASE_REFUND = 0x3543,
- CMSG_ITEM_TEXT_QUERY = 0x334B,
- CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DF,
+ CMSG_ITEM_TEXT_QUERY = 0x334A,
+ CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DE,
CMSG_JOIN_RATED_BATTLEGROUND = 0x3179,
- CMSG_KEEP_ALIVE = 0x367D,
- CMSG_KEYBOUND_OVERRIDE = 0x322E,
+ CMSG_KEEP_ALIVE = 0x367E,
+ CMSG_KEYBOUND_OVERRIDE = 0x322D,
CMSG_LATENCY_REPORT = 0x3771,
CMSG_LEARN_PVP_TALENTS = 0x356B,
CMSG_LEARN_TALENTS = 0x3569,
- CMSG_LEAVE_GROUP = 0x3647,
- CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31E0,
- CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360D,
- CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360E,
- CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360F,
- CMSG_LFG_LIST_GET_STATUS = 0x360B,
- CMSG_LFG_LIST_INVITE_APPLICANT = 0x3610,
- CMSG_LFG_LIST_INVITE_RESPONSE = 0x3611,
- CMSG_LFG_LIST_JOIN = 0x338F,
- CMSG_LFG_LIST_LEAVE = 0x360A,
- CMSG_LFG_LIST_SEARCH = 0x360C,
- CMSG_LFG_LIST_UPDATE_REQUEST = 0x3390,
+ CMSG_LEAVE_GROUP = 0x3648,
+ CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DF,
+ CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360E,
+ CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360F,
+ CMSG_LFG_LIST_DECLINE_APPLICANT = 0x3610,
+ CMSG_LFG_LIST_GET_STATUS = 0x360C,
+ CMSG_LFG_LIST_INVITE_APPLICANT = 0x3611,
+ CMSG_LFG_LIST_INVITE_RESPONSE = 0x3612,
+ CMSG_LFG_LIST_JOIN = 0x3390,
+ CMSG_LFG_LIST_LEAVE = 0x360B,
+ CMSG_LFG_LIST_SEARCH = 0x360D,
+ CMSG_LFG_LIST_UPDATE_REQUEST = 0x3391,
CMSG_LIST_INVENTORY = 0x34A7,
- CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B5,
- CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B4,
- CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B3,
- CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B6,
+ CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B6,
+ CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B5,
+ CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B4,
+ CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B7,
CMSG_LOADING_SCREEN_NOTIFY = 0x35F8,
- CMSG_LOAD_SELECTED_TROPHY = 0x332D,
+ CMSG_LOAD_SELECTED_TROPHY = 0x332C,
CMSG_LOGOUT_CANCEL = 0x34E6,
CMSG_LOGOUT_INSTANT = 0x34E7,
CMSG_LOGOUT_REQUEST = 0x34E4,
CMSG_LOG_DISCONNECT = 0x3769,
CMSG_LOG_STREAMING_ERROR = 0x376D,
- CMSG_LOOT_ITEM = 0x3219,
- CMSG_LOOT_MONEY = 0x3218,
- CMSG_LOOT_RELEASE = 0x321D,
- CMSG_LOOT_ROLL = 0x321E,
- CMSG_LOOT_UNIT = 0x3217,
- CMSG_LOW_LEVEL_RAID1 = 0x369E,
+ CMSG_LOOT_ITEM = 0x3218,
+ CMSG_LOOT_MONEY = 0x3217,
+ CMSG_LOOT_RELEASE = 0x321C,
+ CMSG_LOOT_ROLL = 0x321D,
+ CMSG_LOOT_UNIT = 0x3216,
+ CMSG_LOW_LEVEL_RAID1 = 0x369F,
CMSG_LOW_LEVEL_RAID2 = 0x3521,
CMSG_MAIL_CREATE_TEXT_ITEM = 0x354E,
- CMSG_MAIL_DELETE = 0x3230,
+ CMSG_MAIL_DELETE = 0x322F,
CMSG_MAIL_GET_LIST = 0x3549,
CMSG_MAIL_MARK_AS_READ = 0x354D,
- CMSG_MAIL_RETURN_TO_SENDER = 0x3653,
+ CMSG_MAIL_RETURN_TO_SENDER = 0x3654,
CMSG_MAIL_TAKE_ITEM = 0x354B,
CMSG_MAIL_TAKE_MONEY = 0x354A,
- CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3232,
- CMSG_MASTER_LOOT_ITEM = 0x321A,
+ CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3231,
+ CMSG_MASTER_LOOT_ITEM = 0x3219,
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 = 0x3649,
- CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318B,
+ CMSG_MINIMAP_PING = 0x364A,
+ CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A,
CMSG_MOUNT_CLEAR_FANFARE = 0x3127,
- CMSG_MOUNT_SET_FAVORITE = 0x3630,
- CMSG_MOUNT_SPECIAL_ANIM = 0x3297,
+ CMSG_MOUNT_SET_FAVORITE = 0x3631,
+ CMSG_MOUNT_SPECIAL_ANIM = 0x3296,
CMSG_MOVE_ADD_IMPULSE_ACK = 0x3A50,
CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4E,
CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A15,
@@ -584,46 +583,46 @@ enum OpcodeClient : uint16
CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A1A,
CMSG_MOVE_WATER_WALK_ACK = 0x3A1D,
CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x308E,
- CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D5,
+ CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D4,
CMSG_NEXT_CINEMATIC_CAMERA = 0x3557,
- CMSG_OBJECT_UPDATE_FAILED = 0x3181,
- CMSG_OBJECT_UPDATE_RESCUED = 0x3182,
- CMSG_OFFER_PETITION = 0x33D7,
+ CMSG_OBJECT_UPDATE_FAILED = 0x3180,
+ CMSG_OBJECT_UPDATE_RESCUED = 0x3181,
+ CMSG_OFFER_PETITION = 0x33D8,
CMSG_OPENING_CINEMATIC = 0x3556,
- CMSG_OPEN_ITEM = 0x334C,
- CMSG_OPEN_MISSION_NPC = 0x330F,
- CMSG_OPEN_SHIPMENT_NPC = 0x3317,
- CMSG_OPEN_TRADESKILL_NPC = 0x3322,
+ CMSG_OPEN_ITEM = 0x334B,
+ CMSG_OPEN_MISSION_NPC = 0x330E,
+ CMSG_OPEN_SHIPMENT_NPC = 0x3316,
+ CMSG_OPEN_TRADESKILL_NPC = 0x3321,
CMSG_OPT_OUT_OF_LOOT = 0x3504,
CMSG_OVERRIDE_SCREEN_FLASH = 0x352E,
- CMSG_PARTY_INVITE = 0x3602,
- CMSG_PARTY_INVITE_RESPONSE = 0x3604,
- CMSG_PARTY_UNINVITE = 0x3645,
- CMSG_PERFORM_ITEM_INTERACTION = 0x323A,
+ CMSG_PARTY_INVITE = 0x3603,
+ CMSG_PARTY_INVITE_RESPONSE = 0x3605,
+ CMSG_PARTY_UNINVITE = 0x3646,
+ CMSG_PERFORM_ITEM_INTERACTION = 0x3239,
CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x3135,
- CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x33FF,
- CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3400,
- CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3401,
- CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x33FE,
+ CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3401,
+ CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3402,
+ CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3403,
+ CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3400,
CMSG_PETITION_BUY = 0x34CF,
- CMSG_PETITION_RENAME_GUILD = 0x36C5,
+ CMSG_PETITION_RENAME_GUILD = 0x36C6,
CMSG_PETITION_SHOW_LIST = 0x34CE,
CMSG_PETITION_SHOW_SIGNATURES = 0x34D0,
CMSG_PET_ABANDON = 0x3493,
CMSG_PET_ACTION = 0x3491,
- CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E4,
- CMSG_PET_BATTLE_INPUT = 0x363F,
- CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322F,
- CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E3,
- CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3640,
- CMSG_PET_BATTLE_REQUEST_PVP = 0x31DD,
- CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DE,
- CMSG_PET_BATTLE_REQUEST_WILD = 0x31DB,
- CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E5,
- CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DC,
+ CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E3,
+ CMSG_PET_BATTLE_INPUT = 0x3640,
+ CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322E,
+ CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E2,
+ CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3641,
+ CMSG_PET_BATTLE_REQUEST_PVP = 0x31DC,
+ CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DD,
+ CMSG_PET_BATTLE_REQUEST_WILD = 0x31DA,
+ CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E4,
+ CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DB,
CMSG_PET_CANCEL_AURA = 0x3494,
- CMSG_PET_CAST_SPELL = 0x32B3,
- CMSG_PET_RENAME = 0x3682,
+ CMSG_PET_CAST_SPELL = 0x32B2,
+ CMSG_PET_RENAME = 0x3683,
CMSG_PET_SET_ACTION = 0x3490,
CMSG_PET_SPELL_AUTOCAST = 0x3495,
CMSG_PET_STOP_ATTACK = 0x3492,
@@ -631,31 +630,31 @@ enum OpcodeClient : uint16
CMSG_PLAYER_LOGIN = 0x35EA,
CMSG_PUSH_QUEST_TO_PARTY = 0x34A5,
CMSG_PVP_LOG_DATA = 0x317C,
- CMSG_QUERY_BATTLE_PET_NAME = 0x328A,
- CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365E,
- CMSG_QUERY_CORPSE_TRANSPORT = 0x365F,
- CMSG_QUERY_COUNTDOWN_TIMER = 0x31AA,
- CMSG_QUERY_CREATURE = 0x3284,
- CMSG_QUERY_GAME_OBJECT = 0x3285,
- CMSG_QUERY_GARRISON_PET_NAME = 0x328B,
- CMSG_QUERY_GUILD_INFO = 0x3688,
+ CMSG_QUERY_BATTLE_PET_NAME = 0x3289,
+ CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365F,
+ CMSG_QUERY_CORPSE_TRANSPORT = 0x3660,
+ CMSG_QUERY_COUNTDOWN_TIMER = 0x31A9,
+ CMSG_QUERY_CREATURE = 0x3283,
+ CMSG_QUERY_GAME_OBJECT = 0x3284,
+ CMSG_QUERY_GARRISON_PET_NAME = 0x328A,
+ CMSG_QUERY_GUILD_INFO = 0x3689,
CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350E,
CMSG_QUERY_NEXT_MAIL_TIME = 0x354C,
- CMSG_QUERY_NPC_TEXT = 0x3286,
- CMSG_QUERY_PAGE_TEXT = 0x3288,
- CMSG_QUERY_PETITION = 0x328C,
- CMSG_QUERY_PET_NAME = 0x3289,
+ CMSG_QUERY_NPC_TEXT = 0x3285,
+ CMSG_QUERY_PAGE_TEXT = 0x3287,
+ CMSG_QUERY_PETITION = 0x328B,
+ CMSG_QUERY_PET_NAME = 0x3288,
CMSG_QUERY_PLAYER_NAMES = 0x3772,
CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3770,
CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x376F,
CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175,
- CMSG_QUERY_QUEST_INFO = 0x3287,
+ CMSG_QUERY_QUEST_INFO = 0x3286,
CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3176,
- CMSG_QUERY_REALM_NAME = 0x3687,
- CMSG_QUERY_SCENARIO_POI = 0x3654,
+ CMSG_QUERY_REALM_NAME = 0x3688,
+ CMSG_QUERY_SCENARIO_POI = 0x3655,
CMSG_QUERY_TIME = 0x34E3,
CMSG_QUERY_TREASURE_PICKER = 0x3370,
- CMSG_QUERY_VOID_STORAGE = 0x31A3,
+ CMSG_QUERY_VOID_STORAGE = 0x31A2,
CMSG_QUEST_CONFIRM_ACCEPT = 0x34A4,
CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349E,
CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x34A0,
@@ -668,159 +667,158 @@ enum OpcodeClient : uint16
CMSG_QUEST_GIVER_STATUS_QUERY = 0x34A2,
CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY = 0x358F,
CMSG_QUEST_LOG_REMOVE_QUEST = 0x3541,
- CMSG_QUEST_POI_QUERY = 0x36AC,
+ CMSG_QUEST_POI_QUERY = 0x36AD,
CMSG_QUEST_PUSH_RESULT = 0x34A6,
- CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33C8,
- CMSG_QUEST_SESSION_REQUEST_START = 0x33C7,
- CMSG_QUEST_SESSION_REQUEST_STOP = 0x372A,
+ CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33C9,
+ CMSG_QUEST_SESSION_REQUEST_START = 0x33C8,
+ CMSG_QUEST_SESSION_REQUEST_STOP = 0x372B,
CMSG_QUEUED_MESSAGES_END = 0x376C,
- CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3702,
- CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3701,
- CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x372F,
- CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3700,
- CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36FF,
+ CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3703,
+ CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3702,
+ CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3730,
+ CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3701,
+ CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3700,
CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3512,
- CMSG_RAF_CLAIM_NEXT_REWARD = 0x3720,
- CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3722,
- CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3721,
- CMSG_RANDOM_ROLL = 0x3652,
- CMSG_READY_CHECK_RESPONSE = 0x3633,
- CMSG_READ_ITEM = 0x334D,
+ CMSG_RAF_CLAIM_NEXT_REWARD = 0x3721,
+ CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3723,
+ CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3722,
+ CMSG_RANDOM_ROLL = 0x3653,
+ CMSG_READY_CHECK_RESPONSE = 0x3634,
+ CMSG_READ_ITEM = 0x334C,
CMSG_RECLAIM_CORPSE = 0x34E9,
CMSG_REMOVE_NEW_ITEM = 0x3373,
- CMSG_REMOVE_RAF_RECRUIT = 0x3723,
+ CMSG_REMOVE_RAF_RECRUIT = 0x3724,
CMSG_REORDER_CHARACTERS = 0x35E9,
CMSG_REPAIR_ITEM = 0x34FA,
- CMSG_REPLACE_TROPHY = 0x332E,
+ CMSG_REPLACE_TROPHY = 0x332D,
CMSG_REPOP_REQUEST = 0x3539,
- CMSG_REPORT_CLIENT_VARIABLES = 0x36FC,
- CMSG_REPORT_ENABLED_ADDONS = 0x36FB,
- CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A4,
- CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FD,
+ CMSG_REPORT_CLIENT_VARIABLES = 0x36FD,
+ CMSG_REPORT_ENABLED_ADDONS = 0x36FC,
+ CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A5,
+ CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FE,
CMSG_REPORT_PVP_PLAYER_AFK = 0x3502,
- CMSG_REPORT_SERVER_LAG = 0x33C0,
- CMSG_REPORT_STUCK_IN_COMBAT = 0x33C1,
- CMSG_REQUEST_ACCOUNT_DATA = 0x3692,
+ CMSG_REPORT_SERVER_LAG = 0x33C1,
+ CMSG_REPORT_STUCK_IN_COMBAT = 0x33C2,
+ CMSG_REQUEST_ACCOUNT_DATA = 0x3693,
CMSG_REQUEST_AREA_POI_UPDATE = 0x3372,
CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC,
- CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317E,
CMSG_REQUEST_CEMETERY_LIST = 0x3177,
- CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3689,
- CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32D0,
- CMSG_REQUEST_COVENANT_CALLINGS = 0x33B2,
+ CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368A,
+ CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32CF,
+ CMSG_REQUEST_COVENANT_CALLINGS = 0x33B3,
CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353D,
- CMSG_REQUEST_FORCED_REACTIONS = 0x320E,
- CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33EC,
- CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A9,
- CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A8,
- CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C2,
- CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32BF,
- CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3208,
- CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3209,
+ CMSG_REQUEST_FORCED_REACTIONS = 0x320D,
+ CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33ED,
+ CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A8,
+ CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A7,
+ CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C3,
+ CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32BE,
+ CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3207,
+ CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3208,
CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7,
- CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3651,
+ CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3652,
CMSG_REQUEST_PET_INFO = 0x3496,
- CMSG_REQUEST_PLAYED_TIME = 0x328F,
- CMSG_REQUEST_PVP_REWARDS = 0x3196,
- CMSG_REQUEST_RAID_INFO = 0x36C6,
+ CMSG_REQUEST_PLAYED_TIME = 0x328E,
+ CMSG_REQUEST_PVP_REWARDS = 0x3195,
+ CMSG_REQUEST_RAID_INFO = 0x36C7,
CMSG_REQUEST_RATED_PVP_INFO = 0x35E3,
CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309A,
CMSG_REQUEST_RESEARCH_HISTORY = 0x3167,
- CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3197,
+ CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3196,
CMSG_REQUEST_STABLED_PETS = 0x3497,
- CMSG_REQUEST_VEHICLE_EXIT = 0x3244,
- CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3246,
- CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3245,
- CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3247,
- CMSG_REQUEST_WEEKLY_REWARDS = 0x33B5,
+ CMSG_REQUEST_VEHICLE_EXIT = 0x3243,
+ CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3245,
+ CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3244,
+ CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3246,
+ CMSG_REQUEST_WEEKLY_REWARDS = 0x33B6,
CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3371,
- CMSG_RESET_CHALLENGE_MODE = 0x3206,
- CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3207,
- CMSG_RESET_INSTANCES = 0x3666,
- CMSG_RESURRECT_RESPONSE = 0x3681,
- CMSG_REVERT_MONUMENT_APPEARANCE = 0x3330,
- CMSG_RIDE_VEHICLE_INTERACT = 0x3248,
- CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3741,
- CMSG_SAVE_CUF_PROFILES = 0x318C,
+ CMSG_RESET_CHALLENGE_MODE = 0x3205,
+ CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3206,
+ CMSG_RESET_INSTANCES = 0x3667,
+ CMSG_RESURRECT_RESPONSE = 0x3682,
+ CMSG_REVERT_MONUMENT_APPEARANCE = 0x332F,
+ CMSG_RIDE_VEHICLE_INTERACT = 0x3247,
+ CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3748,
+ CMSG_SAVE_CUF_PROFILES = 0x318B,
CMSG_SAVE_EQUIPMENT_SET = 0x3518,
- CMSG_SAVE_GUILD_EMBLEM = 0x32C3,
- CMSG_SCENE_PLAYBACK_CANCELED = 0x322B,
- CMSG_SCENE_PLAYBACK_COMPLETE = 0x322A,
- CMSG_SCENE_TRIGGER_EVENT = 0x322C,
+ CMSG_SAVE_GUILD_EMBLEM = 0x32C2,
+ CMSG_SCENE_PLAYBACK_CANCELED = 0x322A,
+ CMSG_SCENE_PLAYBACK_COMPLETE = 0x3229,
+ CMSG_SCENE_TRIGGER_EVENT = 0x322B,
CMSG_SELF_RES = 0x3544,
CMSG_SELL_ITEM = 0x34A8,
- CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F5,
- CMSG_SEND_CONTACT_LIST = 0x36CB,
+ CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F6,
+ CMSG_SEND_CONTACT_LIST = 0x36CC,
CMSG_SEND_MAIL = 0x35FA,
CMSG_SEND_TEXT_EMOTE = 0x348E,
- CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3699,
- CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3231,
+ CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369A,
+ CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3230,
CMSG_SET_ACTION_BAR_TOGGLES = 0x3545,
- CMSG_SET_ACTION_BUTTON = 0x3634,
+ CMSG_SET_ACTION_BUTTON = 0x3635,
CMSG_SET_ACTIVE_MOVER = 0x3A3C,
- CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32D1,
- CMSG_SET_ASSISTANT_LEADER = 0x364D,
- CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3350,
- CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3351,
- CMSG_SET_CONTACT_NOTES = 0x36CE,
+ CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32D0,
+ CMSG_SET_ASSISTANT_LEADER = 0x364E,
+ CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x334F,
+ CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3350,
+ CMSG_SET_CONTACT_NOTES = 0x36CF,
CMSG_SET_CURRENCY_FLAGS = 0x3169,
- CMSG_SET_DIFFICULTY_ID = 0x322D,
- CMSG_SET_DUNGEON_DIFFICULTY = 0x3680,
- CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x327E,
- CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3618,
- CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3703,
+ CMSG_SET_DIFFICULTY_ID = 0x322C,
+ CMSG_SET_DUNGEON_DIFFICULTY = 0x3681,
+ CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x327D,
+ CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3619,
+ CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3704,
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 = 0x31BA,
- CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3353,
- CMSG_SET_LOOT_METHOD = 0x3646,
+ CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B9,
+ CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3352,
+ CMSG_SET_LOOT_METHOD = 0x3647,
CMSG_SET_LOOT_SPECIALIZATION = 0x3552,
- CMSG_SET_PARTY_ASSIGNMENT = 0x364F,
- CMSG_SET_PARTY_LEADER = 0x3648,
+ CMSG_SET_PARTY_ASSIGNMENT = 0x3650,
+ CMSG_SET_PARTY_LEADER = 0x3649,
CMSG_SET_PET_SLOT = 0x3168,
- CMSG_SET_PLAYER_DECLINED_NAMES = 0x3686,
+ CMSG_SET_PLAYER_DECLINED_NAMES = 0x3687,
CMSG_SET_PREFERRED_CEMETERY = 0x3178,
- CMSG_SET_PVP = 0x32C7,
- CMSG_SET_RAID_DIFFICULTY = 0x36D7,
+ CMSG_SET_PVP = 0x32C6,
+ CMSG_SET_RAID_DIFFICULTY = 0x36D8,
CMSG_SET_ROLE = 0x35D9,
- CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3684,
+ CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3685,
CMSG_SET_SELECTION = 0x353B,
CMSG_SET_SHEATHED = 0x348F,
- CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3352,
+ CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3351,
CMSG_SET_TAXI_BENCHMARK_MODE = 0x3501,
- CMSG_SET_TITLE = 0x3295,
+ CMSG_SET_TITLE = 0x3294,
CMSG_SET_TRADE_CURRENCY = 0x3160,
CMSG_SET_TRADE_GOLD = 0x315F,
CMSG_SET_TRADE_ITEM = 0x315D,
- CMSG_SET_USING_PARTY_GARRISON = 0x3311,
- CMSG_SET_WAR_MODE = 0x32C8,
+ CMSG_SET_USING_PARTY_GARRISON = 0x3310,
+ CMSG_SET_WAR_MODE = 0x32C7,
CMSG_SET_WATCHED_FACTION = 0x34EF,
- CMSG_SHOW_TRADE_SKILL = 0x36BE,
+ CMSG_SHOW_TRADE_SKILL = 0x36BF,
CMSG_SIGN_PETITION = 0x3546,
- CMSG_SILENCE_PARTY_TALKER = 0x3650,
- CMSG_SOCIAL_CONTRACT_REQUEST = 0x373C,
+ CMSG_SILENCE_PARTY_TALKER = 0x3651,
+ CMSG_SOCIAL_CONTRACT_REQUEST = 0x3743,
CMSG_SOCKET_GEMS = 0x34F9,
- CMSG_SORT_BAGS = 0x3354,
- CMSG_SORT_BANK_BAGS = 0x3355,
- CMSG_SORT_REAGENT_BANK_BAGS = 0x3356,
+ CMSG_SORT_BAGS = 0x3353,
+ CMSG_SORT_BANK_BAGS = 0x3354,
+ CMSG_SORT_REAGENT_BANK_BAGS = 0x3355,
CMSG_SPELL_CLICK = 0x349B,
- CMSG_SPELL_EMPOWER_RELEASE = 0x327C,
- CMSG_SPELL_EMPOWER_RESTART = 0x327D,
+ CMSG_SPELL_EMPOWER_RELEASE = 0x327B,
+ CMSG_SPELL_EMPOWER_RESTART = 0x327C,
CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B5,
CMSG_SPLIT_GUILD_BANK_ITEM = 0x34C8,
CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x34C5,
CMSG_SPLIT_ITEM = 0x399E,
CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x34C3,
- CMSG_STAND_STATE_CHANGE = 0x318A,
+ CMSG_STAND_STATE_CHANGE = 0x3189,
CMSG_START_CHALLENGE_MODE = 0x355E,
CMSG_START_SPECTATOR_WAR_GAME = 0x35DF,
CMSG_START_WAR_GAME = 0x35DE,
CMSG_STORE_GUILD_BANK_ITEM = 0x34BE,
- CMSG_SUBMIT_USER_FEEDBACK = 0x3691,
- CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E1,
- CMSG_SUMMON_RESPONSE = 0x3668,
- CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644,
+ CMSG_SUBMIT_USER_FEEDBACK = 0x3692,
+ CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E2,
+ CMSG_SUMMON_RESPONSE = 0x3669,
+ CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3645,
CMSG_SURRENDER_ARENA = 0x3174,
CMSG_SUSPEND_COMMS_ACK = 0x3764,
CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A,
@@ -828,9 +826,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 = 0x364B,
- CMSG_SWAP_VOID_ITEM = 0x31A5,
- CMSG_TABARD_VENDOR_ACTIVATE = 0x32C4,
+ CMSG_SWAP_SUB_GROUPS = 0x364C,
+ CMSG_SWAP_VOID_ITEM = 0x31A4,
+ CMSG_TABARD_VENDOR_ACTIVATE = 0x32C3,
CMSG_TALK_TO_GOSSIP = 0x3498,
CMSG_TAXI_NODE_STATUS_QUERY = 0x34AE,
CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B0,
@@ -839,51 +837,51 @@ enum OpcodeClient : uint16
CMSG_TIME_SYNC_RESPONSE = 0x3A3D,
CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3F,
CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3E,
- CMSG_TOGGLE_DIFFICULTY = 0x3655,
- CMSG_TOGGLE_PVP = 0x32C6,
+ CMSG_TOGGLE_DIFFICULTY = 0x3656,
+ CMSG_TOGGLE_PVP = 0x32C5,
CMSG_TOTEM_DESTROYED = 0x3506,
CMSG_TOY_CLEAR_FANFARE = 0x3128,
CMSG_TRADE_SKILL_SET_FAVORITE = 0x336F,
CMSG_TRAINER_BUY_SPELL = 0x34B4,
CMSG_TRAINER_LIST = 0x34B3,
- CMSG_TRAITS_COMMIT_CONFIG = 0x3407,
- CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3405,
- CMSG_TRANSMOGRIFY_ITEMS = 0x3198,
+ CMSG_TRAITS_COMMIT_CONFIG = 0x3409,
+ CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3407,
+ CMSG_TRANSMOGRIFY_ITEMS = 0x3197,
CMSG_TURN_IN_PETITION = 0x3548,
- CMSG_TUTORIAL = 0x36D8,
- CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B1,
+ CMSG_TUTORIAL = 0x36D9,
+ CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B2,
CMSG_UNACCEPT_TRADE = 0x315B,
- CMSG_UNDELETE_CHARACTER = 0x36DA,
+ CMSG_UNDELETE_CHARACTER = 0x36DB,
CMSG_UNLEARN_SKILL = 0x34F3,
- CMSG_UNLEARN_SPECIALIZATION = 0x31A6,
- CMSG_UNLOCK_VOID_STORAGE = 0x31A2,
- CMSG_UPDATE_AADC_STATUS = 0x3736,
- CMSG_UPDATE_ACCOUNT_DATA = 0x3693,
- CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32B6,
- CMSG_UPDATE_CLIENT_SETTINGS = 0x3662,
- CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3323,
+ CMSG_UNLEARN_SPECIALIZATION = 0x31A5,
+ CMSG_UNLOCK_VOID_STORAGE = 0x31A1,
+ CMSG_UPDATE_AADC_STATUS = 0x3737,
+ CMSG_UPDATE_ACCOUNT_DATA = 0x3694,
+ CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32B5,
+ CMSG_UPDATE_CLIENT_SETTINGS = 0x3663,
+ CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3322,
CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A43,
- CMSG_UPDATE_RAID_TARGET = 0x364E,
- CMSG_UPDATE_SPELL_VISUAL = 0x32B5,
- CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36EF,
- CMSG_UPGRADE_GARRISON = 0x32D9,
- CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33DF,
- CMSG_USED_FOLLOW = 0x3187,
- CMSG_USE_CRITTER_ITEM = 0x324E,
+ CMSG_UPDATE_RAID_TARGET = 0x364F,
+ CMSG_UPDATE_SPELL_VISUAL = 0x32B4,
+ CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F0,
+ CMSG_UPGRADE_GARRISON = 0x32D8,
+ CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E0,
+ CMSG_USED_FOLLOW = 0x3186,
+ CMSG_USE_CRITTER_ITEM = 0x324D,
CMSG_USE_EQUIPMENT_SET = 0x3995,
- CMSG_USE_ITEM = 0x32AF,
- CMSG_USE_TOY = 0x32B2,
- CMSG_VAS_CHECK_TRANSFER_OK = 0x3708,
- CMSG_VAS_GET_QUEUE_MINUTES = 0x3707,
- CMSG_VAS_GET_SERVICE_STATUS = 0x3706,
- CMSG_VIOLENCE_LEVEL = 0x3185,
- CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370C,
- CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370D,
- CMSG_VOICE_CHAT_LOGIN = 0x370B,
- CMSG_VOID_STORAGE_TRANSFER = 0x31A4,
+ CMSG_USE_ITEM = 0x32AE,
+ CMSG_USE_TOY = 0x32B1,
+ CMSG_VAS_CHECK_TRANSFER_OK = 0x3709,
+ CMSG_VAS_GET_QUEUE_MINUTES = 0x3708,
+ CMSG_VAS_GET_SERVICE_STATUS = 0x3707,
+ CMSG_VIOLENCE_LEVEL = 0x3184,
+ CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370D,
+ CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370E,
+ CMSG_VOICE_CHAT_LOGIN = 0x370C,
+ CMSG_VOID_STORAGE_TRANSFER = 0x31A3,
CMSG_WARDEN3_DATA = 0x35EC,
- CMSG_WHO = 0x367F,
- CMSG_WHO_IS = 0x367E,
+ CMSG_WHO = 0x3680,
+ CMSG_WHO_IS = 0x367F,
CMSG_WORLD_PORT_RESPONSE = 0x35F9,
CMSG_WRAP_ITEM = 0x3994,
};
@@ -891,85 +889,89 @@ enum OpcodeClient : uint16
enum OpcodeServer : uint16
{
SMSG_ABORT_NEW_WORLD = 0x259C,
- SMSG_ACCOUNT_COSMETIC_ADDED = 0x287C,
- SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2862,
- SMSG_ACCOUNT_DATA_TIMES = 0x2705,
+ SMSG_ACCOUNT_COSMETIC_ADDED = 0x287A,
+ SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2860,
+ SMSG_ACCOUNT_DATA_TIMES = 0x2704,
+ SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28B6,
SMSG_ACCOUNT_MOUNT_REMOVED = 0x25B0,
SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AF,
- SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x287B,
+ SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2879,
SMSG_ACCOUNT_TOY_UPDATE = 0x25B1,
SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B4,
SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B3,
- SMSG_ACHIEVEMENT_DELETED = 0x26E3,
- SMSG_ACHIEVEMENT_EARNED = 0x2641,
+ SMSG_ACHIEVEMENT_DELETED = 0x26E2,
+ SMSG_ACHIEVEMENT_EARNED = 0x2640,
SMSG_ACTIVATE_ESSENCE_FAILED = 0x3015,
SMSG_ACTIVATE_SOULBIND_FAILED = 0x3017,
- SMSG_ACTIVATE_TAXI_REPLY = 0x267B,
- SMSG_ACTIVE_GLYPHS = 0x2C57,
- SMSG_ADDON_LIST_REQUEST = 0x2640,
- SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263B,
+ SMSG_ACTIVATE_TAXI_REPLY = 0x267A,
+ SMSG_ACTIVE_GLYPHS = 0x2C54,
+ SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x2740,
+ SMSG_ADDON_LIST_REQUEST = 0x263F,
+ SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263A,
SMSG_ADD_ITEM_PASSIVE = 0x25AB,
- SMSG_ADD_LOSS_OF_CONTROL = 0x266F,
- SMSG_ADD_RUNE_POWER = 0x26B5,
+ SMSG_ADD_LOSS_OF_CONTROL = 0x266E,
+ SMSG_ADD_RUNE_POWER = 0x26B4,
SMSG_ADJUST_SPLINE_DURATION = 0x25D0,
- SMSG_ADVANCED_COMBAT_LOG = 0x2878,
- SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2872,
- SMSG_AE_LOOT_TARGETS = 0x2616,
- SMSG_AE_LOOT_TARGET_ACK = 0x2617,
- SMSG_AI_REACTION = 0x26B2,
- SMSG_ALLIED_RACE_DETAILS = 0x27F6,
+ SMSG_ADVANCED_COMBAT_LOG = 0x2876,
+ SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2870,
+ SMSG_AE_LOOT_TARGETS = 0x2615,
+ SMSG_AE_LOOT_TARGET_ACK = 0x2616,
+ SMSG_AI_REACTION = 0x26B1,
+ SMSG_ALLIED_RACE_DETAILS = 0x27F4,
SMSG_ALL_ACCOUNT_CRITERIA = 0x2571,
SMSG_ALL_ACHIEVEMENT_DATA = 0x2570,
SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8,
- SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x284F,
+ SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x284D,
SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2588,
SMSG_AREA_POI_UPDATE_RESPONSE = 0x3010,
- SMSG_AREA_SPIRIT_HEALER_TIME = 0x273A,
- SMSG_AREA_TRIGGER_DENIED = 0x2902,
- SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x28FF,
- SMSG_AREA_TRIGGER_NO_CORPSE = 0x2711,
+ SMSG_AREA_SPIRIT_HEALER_TIME = 0x2739,
+ SMSG_AREA_TRIGGER_DENIED = 0x2903,
+ SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2900,
+ SMSG_AREA_TRIGGER_NO_CORPSE = 0x2710,
SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FE,
SMSG_AREA_TRIGGER_RE_PATH = 0x28FD,
- SMSG_AREA_TRIGGER_RE_SHAPE = 0x2901,
- SMSG_AREA_TRIGGER_UNATTACH = 0x2900,
- SMSG_ARENA_CLEAR_OPPONENTS = 0x2647,
- SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x2630,
- SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2646,
- SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x27A0,
- SMSG_ARTIFACT_FORGE_ERROR = 0x279E,
- SMSG_ARTIFACT_RESPEC_PROMPT = 0x279F,
- SMSG_ARTIFACT_XP_GAIN = 0x27E9,
+ SMSG_AREA_TRIGGER_RE_SHAPE = 0x2902,
+ SMSG_AREA_TRIGGER_UNATTACH = 0x2901,
+ SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x28FF,
+ SMSG_ARENA_CLEAR_OPPONENTS = 0x2646,
+ SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262F,
+ SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2645,
+ SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279E,
+ SMSG_ARTIFACT_FORGE_ERROR = 0x279C,
+ SMSG_ARTIFACT_RESPEC_PROMPT = 0x279D,
+ SMSG_ARTIFACT_XP_GAIN = 0x27E7,
SMSG_ATTACKER_STATE_UPDATE = 0x294D,
SMSG_ATTACK_START = 0x2938,
SMSG_ATTACK_STOP = 0x2939,
SMSG_ATTACK_SWING_ERROR = 0x2947,
SMSG_ATTACK_SWING_LANDED_LOG = 0x2948,
- SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D2,
- SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27D1,
- SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27D0,
- SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26EE,
- SMSG_AUCTION_COMMAND_RESULT = 0x26EB,
- SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2895,
- SMSG_AUCTION_FAVORITE_LIST = 0x2869,
- SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x2860,
- SMSG_AUCTION_HELLO_RESPONSE = 0x26E9,
- SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x285F,
- SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x285C,
- SMSG_AUCTION_LIST_ITEMS_RESULT = 0x285D,
- SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x285E,
- SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26ED,
- SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EF,
- SMSG_AUCTION_REPLICATE_RESPONSE = 0x26EA,
- SMSG_AUCTION_WON_NOTIFICATION = 0x26EC,
- SMSG_AURA_POINTS_DEPLETED = 0x2C23,
- SMSG_AURA_UPDATE = 0x2C22,
+ SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D0,
+ SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27CF,
+ SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CE,
+ SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26ED,
+ SMSG_AUCTION_COMMAND_RESULT = 0x26EA,
+ SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2896,
+ SMSG_AUCTION_FAVORITE_LIST = 0x2867,
+ SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x285E,
+ SMSG_AUCTION_HELLO_RESPONSE = 0x26E8,
+ SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x285D,
+ SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x285A,
+ SMSG_AUCTION_LIST_ITEMS_RESULT = 0x285B,
+ SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x285C,
+ SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26EC,
+ SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EE,
+ SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E9,
+ SMSG_AUCTION_WON_NOTIFICATION = 0x26EB,
+ SMSG_AURA_POINTS_DEPLETED = 0x2C20,
+ SMSG_AURA_UPDATE = 0x2C1F,
SMSG_AUTH_CHALLENGE = 0x3048,
SMSG_AUTH_FAILED = 0x256C,
SMSG_AUTH_RESPONSE = 0x256D,
SMSG_AVAILABLE_HOTFIXES = 0x290F,
+ SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x289B,
SMSG_BAG_CLEANUP_FINISHED = 0x2DA7,
- SMSG_BARBER_SHOP_RESULT = 0x26BA,
- SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x2840,
+ SMSG_BARBER_SHOP_RESULT = 0x26B9,
+ SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x283E,
SMSG_BATTLEFIELD_LIST = 0x2927,
SMSG_BATTLEFIELD_PORT_DENIED = 0x292D,
SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923,
@@ -985,112 +987,110 @@ enum OpcodeServer : uint16
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C,
SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928,
SMSG_BATTLEGROUND_POINTS = 0x2949,
- SMSG_BATTLENET_CHALLENGE_ABORT = 0x2785,
- SMSG_BATTLENET_CHALLENGE_START = 0x2784,
- SMSG_BATTLENET_NOTIFICATION = 0x2802,
- SMSG_BATTLENET_RESPONSE = 0x2801,
- SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2803,
- SMSG_BATTLE_PAY_ACK_FAILED = 0x277F,
- SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2774,
- SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2775,
- SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277E,
- SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2772,
- SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x2771,
- SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2881,
- SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276F,
- SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x2770,
- SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276E,
- SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276C,
- SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276D,
- SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2773,
- SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277D,
- SMSG_BATTLE_PAY_START_CHECKOUT = 0x281E,
- SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x277B,
- SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x277A,
- SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2812,
+ SMSG_BATTLENET_CHALLENGE_ABORT = 0x2783,
+ SMSG_BATTLENET_CHALLENGE_START = 0x2782,
+ SMSG_BATTLENET_NOTIFICATION = 0x2800,
+ SMSG_BATTLENET_RESPONSE = 0x27FF,
+ SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2801,
+ SMSG_BATTLE_PAY_ACK_FAILED = 0x277D,
+ SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2772,
+ SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2773,
+ SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277C,
+ SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2770,
+ SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x276F,
+ SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x287F,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276D,
+ SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276E,
+ SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276C,
+ SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276A,
+ SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276B,
+ SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2771,
+ SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277B,
+ SMSG_BATTLE_PAY_START_CHECKOUT = 0x281C,
+ SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2779,
+ SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2778,
+ SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2810,
SMSG_BATTLE_PETS_HEALED = 0x25F2,
- SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2676,
+ SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2675,
SMSG_BATTLE_PET_DELETED = 0x25EF,
- SMSG_BATTLE_PET_ERROR = 0x2636,
+ SMSG_BATTLE_PET_ERROR = 0x2635,
SMSG_BATTLE_PET_JOURNAL = 0x25EE,
SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EC,
SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25ED,
- SMSG_BATTLE_PET_LICENSE_CHANGED = 0x25F3,
SMSG_BATTLE_PET_RESTORED = 0x25F1,
SMSG_BATTLE_PET_REVOKED = 0x25F0,
SMSG_BATTLE_PET_TRAP_LEVEL = 0x25EA,
SMSG_BATTLE_PET_UPDATES = 0x25E9,
SMSG_BIND_POINT_UPDATE = 0x257D,
- SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2626,
- SMSG_BLACK_MARKET_OUTBID = 0x2627,
- SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2625,
- SMSG_BLACK_MARKET_WON = 0x2628,
- SMSG_BONUS_ROLL_EMPTY = 0x2643,
+ SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2625,
+ SMSG_BLACK_MARKET_OUTBID = 0x2626,
+ SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2624,
+ SMSG_BLACK_MARKET_WON = 0x2627,
+ SMSG_BONUS_ROLL_EMPTY = 0x2642,
SMSG_BOSS_KILL = 0x294C,
SMSG_BREAK_TARGET = 0x2937,
SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC,
- SMSG_BROADCAST_SUMMON_CAST = 0x2842,
- SMSG_BROADCAST_SUMMON_RESPONSE = 0x2843,
- SMSG_BUY_FAILED = 0x26C3,
- SMSG_BUY_SUCCEEDED = 0x26C2,
+ SMSG_BROADCAST_SUMMON_CAST = 0x2840,
+ SMSG_BROADCAST_SUMMON_RESPONSE = 0x2841,
+ SMSG_BUY_FAILED = 0x26C2,
+ SMSG_BUY_SUCCEEDED = 0x26C1,
SMSG_CACHE_INFO = 0x291D,
SMSG_CACHE_VERSION = 0x291C,
- 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 = 0x2720,
- SMSG_CANCEL_AUTO_REPEAT = 0x26D9,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269A,
+ SMSG_CALENDAR_COMMAND_RESULT = 0x269B,
+ SMSG_CALENDAR_COMMUNITY_INVITE = 0x268A,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2692,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2693,
+ SMSG_CALENDAR_INVITE_ADDED = 0x268B,
+ SMSG_CALENDAR_INVITE_ALERT = 0x268F,
+ SMSG_CALENDAR_INVITE_NOTES = 0x2694,
+ SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2695,
+ SMSG_CALENDAR_INVITE_REMOVED = 0x268C,
+ SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2691,
+ SMSG_CALENDAR_INVITE_STATUS = 0x268D,
+ SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2690,
+ SMSG_CALENDAR_MODERATOR_STATUS = 0x268E,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2696,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2697,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2698,
+ SMSG_CALENDAR_SEND_CALENDAR = 0x2688,
+ SMSG_CALENDAR_SEND_EVENT = 0x2689,
+ SMSG_CALENDAR_SEND_NUM_PENDING = 0x2699,
+ SMSG_CAMERA_EFFECT = 0x271F,
+ SMSG_CANCEL_AUTO_REPEAT = 0x26D8,
SMSG_CANCEL_COMBAT = 0x2946,
- SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C49,
+ SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46,
SMSG_CANCEL_PRELOAD_WORLD = 0x259A,
- SMSG_CANCEL_SCENE = 0x2635,
- SMSG_CANCEL_SPELL_VISUAL = 0x2C47,
- SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C4B,
+ SMSG_CANCEL_SCENE = 0x2634,
+ SMSG_CANCEL_SPELL_VISUAL = 0x2C44,
+ SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48,
SMSG_CAN_DUEL_RESULT = 0x2942,
- SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2811,
+ SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x280F,
SMSG_CAPTURE_POINT_REMOVED = 0x292A,
- SMSG_CAST_FAILED = 0x2C5A,
- SMSG_CATEGORY_COOLDOWN = 0x2C16,
+ SMSG_CAST_FAILED = 0x2C57,
SMSG_CHAIN_MISSILE_BOUNCE = 0x25C8,
- SMSG_CHALLENGE_MODE_COMPLETE = 0x260A,
- SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260E,
- SMSG_CHALLENGE_MODE_RESET = 0x2609,
- SMSG_CHALLENGE_MODE_START = 0x2607,
- SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2608,
+ SMSG_CHALLENGE_MODE_COMPLETE = 0x2609,
+ SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260D,
+ SMSG_CHALLENGE_MODE_RESET = 0x2608,
+ SMSG_CHALLENGE_MODE_START = 0x2606,
+ SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2607,
SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004,
- SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2804,
+ SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2802,
SMSG_CHANNEL_LIST = 0x2BC3,
SMSG_CHANNEL_NOTIFY = 0x2BC0,
SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1,
SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2,
- SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27BB,
- SMSG_CHARACTER_LOGIN_FAILED = 0x2700,
- SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2783,
- SMSG_CHARACTER_RENAME_RESULT = 0x275E,
- SMSG_CHARACTER_UPGRADE_ABORTED = 0x27BA,
- SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B9,
- SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BC,
- SMSG_CHARACTER_UPGRADE_STARTED = 0x27B8,
- SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DD,
- SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DE,
- SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A5,
+ SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B9,
+ SMSG_CHARACTER_LOGIN_FAILED = 0x26FF,
+ SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2781,
+ SMSG_CHARACTER_RENAME_RESULT = 0x275C,
+ SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B8,
+ SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B7,
+ SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BA,
+ SMSG_CHARACTER_UPGRADE_STARTED = 0x27B6,
+ SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DC,
+ SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DD,
+ SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A3,
SMSG_CHAT = 0x2BAD,
SMSG_CHAT_AUTO_RESPONDED = 0x2BB8,
SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x2BCA,
@@ -1108,95 +1108,95 @@ enum OpcodeServer : uint16
SMSG_CHECK_ABANDON_NPE = 0x3018,
SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584,
SMSG_CHECK_WARGAME_ENTRY = 0x2592,
- SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x286C,
- SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2853,
- SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C27,
+ SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x286A,
+ SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2851,
+ SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C24,
SMSG_CLEAR_BOSS_EMOTES = 0x25BB,
- SMSG_CLEAR_COOLDOWN = 0x26B7,
- SMSG_CLEAR_COOLDOWNS = 0x2C26,
+ SMSG_CLEAR_COOLDOWN = 0x26B6,
+ SMSG_CLEAR_COOLDOWNS = 0x2C23,
SMSG_CLEAR_RESURRECT = 0x257F,
- SMSG_CLEAR_SPELL_CHARGES = 0x2C28,
+ SMSG_CLEAR_SPELL_CHARGES = 0x2C25,
SMSG_CLEAR_TARGET = 0x2943,
SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1,
- SMSG_CLOSE_ARTIFACT_FORGE = 0x279D,
- SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x284B,
- SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284E,
- SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x284C,
- SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2849,
- SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x284D,
- SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x284A,
- SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x288F,
- SMSG_COIN_REMOVED = 0x2615,
+ SMSG_CLOSE_ARTIFACT_FORGE = 0x279B,
+ SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2849,
+ SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284C,
+ SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x284A,
+ SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2847,
+ SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x284B,
+ SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2848,
+ SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x288D,
+ SMSG_COIN_REMOVED = 0x2614,
SMSG_COMBAT_EVENT_FAILED = 0x293A,
- SMSG_COMMENTATOR_MAP_INFO = 0x2702,
- SMSG_COMMENTATOR_PLAYER_INFO = 0x2703,
- SMSG_COMMENTATOR_STATE_CHANGED = 0x2701,
- SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CD,
- SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D9,
- SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CF,
- SMSG_COMMERCE_TOKEN_UPDATE = 0x27CE,
- SMSG_COMPLAINT_RESULT = 0x26A9,
- SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2796,
- SMSG_CONFIRM_PARTY_INVITE = 0x2810,
+ SMSG_COMMENTATOR_MAP_INFO = 0x2701,
+ SMSG_COMMENTATOR_PLAYER_INFO = 0x2702,
+ SMSG_COMMENTATOR_STATE_CHANGED = 0x2700,
+ SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CB,
+ SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D7,
+ SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CD,
+ SMSG_COMMERCE_TOKEN_UPDATE = 0x27CC,
+ SMSG_COMPLAINT_RESULT = 0x26A8,
+ SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2794,
+ SMSG_CONFIRM_PARTY_INVITE = 0x280E,
SMSG_CONNECT_TO = 0x304D,
- SMSG_CONQUEST_FORMULA_CONSTANTS = 0x2780,
- SMSG_CONSOLE_WRITE = 0x2633,
- SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D5,
- SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D4,
- SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D3,
- SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D7,
- SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D8,
- SMSG_CONTACT_LIST = 0x2781,
- SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2817,
- SMSG_CONTROL_UPDATE = 0x2645,
- SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2875,
- SMSG_COOLDOWN_CHEAT = 0x2733,
- SMSG_COOLDOWN_EVENT = 0x26B6,
- SMSG_CORPSE_LOCATION = 0x264D,
- SMSG_CORPSE_RECLAIM_DELAY = 0x2745,
- SMSG_CORPSE_TRANSPORT_QUERY = 0x270D,
+ SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277E,
+ SMSG_CONSOLE_WRITE = 0x2632,
+ SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D3,
+ SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D2,
+ SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D1,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D5,
+ SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D6,
+ SMSG_CONTACT_LIST = 0x277F,
+ SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2815,
+ SMSG_CONTROL_UPDATE = 0x2644,
+ SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2873,
+ SMSG_COOLDOWN_CHEAT = 0x2732,
+ SMSG_COOLDOWN_EVENT = 0x26B5,
+ SMSG_CORPSE_LOCATION = 0x264C,
+ SMSG_CORPSE_RECLAIM_DELAY = 0x2743,
+ SMSG_CORPSE_TRANSPORT_QUERY = 0x270C,
SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3,
- SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F9,
- SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2876,
- SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A6,
- SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A2,
- SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x289E,
- SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x28A0,
- SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x289C,
- SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x28A1,
- SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x289D,
- SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A4,
- SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x289F,
- SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28A7,
- SMSG_CRAFT_ENCHANT_RESULT = 0x28A5,
- SMSG_CREATE_CHAR = 0x26FC,
- SMSG_CREATE_SHIPMENT_RESPONSE = 0x2795,
- SMSG_CREATOR_VISUALS_OVERRIDE = 0x28AA,
- SMSG_CRITERIA_DELETED = 0x26E2,
- SMSG_CRITERIA_UPDATE = 0x26DC,
- SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BE,
+ SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F7,
+ SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2874,
+ SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A9,
+ SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A5,
+ SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x28A1,
+ SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x28A3,
+ SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x289F,
+ SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x28A4,
+ SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x28A0,
+ SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A7,
+ SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x28A2,
+ SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28AA,
+ SMSG_CRAFT_ENCHANT_RESULT = 0x28A8,
+ SMSG_CREATE_CHAR = 0x26FB,
+ SMSG_CREATE_SHIPMENT_RESPONSE = 0x2793,
+ SMSG_CREATOR_VISUALS_OVERRIDE = 0x28AD,
+ SMSG_CRITERIA_DELETED = 0x26E1,
+ SMSG_CRITERIA_UPDATE = 0x26DB,
+ SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BD,
SMSG_CUSTOM_LOAD_SCREEN = 0x25CB,
SMSG_DAILY_QUESTS_RESET = 0x2A80,
- SMSG_DAMAGE_CALC_LOG = 0x27C2,
+ SMSG_DAMAGE_CALC_LOG = 0x27C0,
SMSG_DB_REPLY = 0x290E,
- SMSG_DEATH_RELEASE_LOC = 0x26CF,
- SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2653,
+ SMSG_DEATH_RELEASE_LOC = 0x26CE,
+ SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2652,
SMSG_DEFENSE_MESSAGE = 0x2BB6,
- SMSG_DELETE_CHAR = 0x26FD,
+ SMSG_DELETE_CHAR = 0x26FC,
SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980,
- SMSG_DESTROY_ARENA_UNIT = 0x273C,
- SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F4,
+ SMSG_DESTROY_ARENA_UNIT = 0x273B,
+ SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F3,
SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C,
SMSG_DISENCHANT_CREDIT = 0x25A8,
SMSG_DISMOUNT_RESULT = 0x257C,
- SMSG_DISPEL_FAILED = 0x2C30,
+ SMSG_DISPEL_FAILED = 0x2C2D,
SMSG_DISPLAY_GAME_ERROR = 0x25A1,
SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC,
- SMSG_DISPLAY_PROMOTION = 0x264A,
+ SMSG_DISPLAY_PROMOTION = 0x2649,
SMSG_DISPLAY_QUEST_POPUP = 0x2A9E,
- SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x287A,
- SMSG_DISPLAY_TOAST = 0x2622,
- SMSG_DISPLAY_WORLD_TEXT = 0x27EA,
+ SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2878,
+ SMSG_DISPLAY_TOAST = 0x2621,
+ SMSG_DISPLAY_WORLD_TEXT = 0x27E8,
SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25E0,
SMSG_DROP_NEW_CONNECTION = 0x304C,
SMSG_DUEL_ARRANGED = 0x293C,
@@ -1206,50 +1206,50 @@ enum OpcodeServer : uint16
SMSG_DUEL_OUT_OF_BOUNDS = 0x293D,
SMSG_DUEL_REQUESTED = 0x293B,
SMSG_DUEL_WINNER = 0x2941,
- SMSG_DURABILITY_DAMAGE_DEATH = 0x2740,
- SMSG_EMOTE = 0x27C3,
- SMSG_ENABLE_BARBER_SHOP = 0x26B9,
- SMSG_ENCHANTMENT_LOG = 0x270E,
- SMSG_ENCOUNTER_END = 0x2779,
- SMSG_ENCOUNTER_START = 0x2778,
- SMSG_END_LIGHTNING_STORM = 0x26A6,
- SMSG_ENSURE_WORLD_LOADED = 0x2889,
+ SMSG_DURABILITY_DAMAGE_DEATH = 0x273E,
+ SMSG_EMOTE = 0x27C1,
+ SMSG_ENABLE_BARBER_SHOP = 0x26B8,
+ SMSG_ENCHANTMENT_LOG = 0x270D,
+ SMSG_ENCOUNTER_END = 0x2777,
+ SMSG_ENCOUNTER_START = 0x2776,
+ SMSG_END_LIGHTNING_STORM = 0x26A5,
+ SMSG_ENSURE_WORLD_LOADED = 0x2887,
SMSG_ENTER_ENCRYPTED_MODE = 0x3049,
SMSG_ENUM_CHARACTERS_RESULT = 0x2583,
- SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27EF,
- SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21,
- SMSG_EQUIPMENT_SET_ID = 0x26AF,
+ SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27ED,
+ SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C1E,
+ SMSG_EQUIPMENT_SET_ID = 0x26AE,
SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1,
- SMSG_EXPLORATION_EXPERIENCE = 0x275A,
- SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2873,
- SMSG_FACTION_BONUS_INFO = 0x271F,
+ SMSG_EXPLORATION_EXPERIENCE = 0x2758,
+ SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2871,
+ SMSG_FACTION_BONUS_INFO = 0x271E,
SMSG_FAILED_PLAYER_CONDITION = 0x2FFA,
- SMSG_FAILED_QUEST_TURN_IN = 0x280D,
+ SMSG_FAILED_QUEST_TURN_IN = 0x280B,
SMSG_FEATURE_SYSTEM_STATUS = 0x25BF,
SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25C0,
- SMSG_FEIGN_DEATH_RESISTED = 0x273F,
- SMSG_FISH_ESCAPED = 0x26CC,
- SMSG_FISH_NOT_HOOKED = 0x26CB,
+ SMSG_FEIGN_DEATH_RESISTED = 0x273D,
+ SMSG_FISH_ESCAPED = 0x26CB,
+ SMSG_FISH_NOT_HOOKED = 0x26CA,
SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B,
- SMSG_FORCED_DEATH_UPDATE = 0x26D0,
- SMSG_FORCE_ANIM = 0x274C,
- SMSG_FORCE_ANIMATIONS = 0x274D,
- SMSG_FORCE_OBJECT_RELINK = 0x2649,
- SMSG_FRIEND_STATUS = 0x2782,
- SMSG_GAIN_MAW_POWER = 0x27DE,
+ SMSG_FORCED_DEATH_UPDATE = 0x26CF,
+ SMSG_FORCE_ANIM = 0x274A,
+ SMSG_FORCE_ANIMATIONS = 0x274B,
+ SMSG_FORCE_OBJECT_RELINK = 0x2648,
+ SMSG_FRIEND_STATUS = 0x2780,
+ SMSG_GAIN_MAW_POWER = 0x27DC,
SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C3,
- SMSG_GAME_OBJECT_BASE = 0x2824,
- SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x288D,
+ SMSG_GAME_OBJECT_BASE = 0x2822,
+ SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x288B,
SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C4,
SMSG_GAME_OBJECT_DESPAWN = 0x25C5,
- SMSG_GAME_OBJECT_INTERACTION = 0x288C,
- SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4E,
- SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4D,
- SMSG_GAME_OBJECT_RESET_STATE = 0x2719,
- SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x2800,
- SMSG_GAME_SPEED_SET = 0x267F,
- SMSG_GAME_TIME_SET = 0x2707,
- SMSG_GAME_TIME_UPDATE = 0x2706,
+ SMSG_GAME_OBJECT_INTERACTION = 0x288A,
+ SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B,
+ SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A,
+ SMSG_GAME_OBJECT_RESET_STATE = 0x2718,
+ SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FE,
+ SMSG_GAME_SPEED_SET = 0x267E,
+ SMSG_GAME_TIME_SET = 0x2706,
+ SMSG_GAME_TIME_UPDATE = 0x2705,
SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982,
SMSG_GARRISON_ADD_EVENT = 0x29A6,
SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974,
@@ -1321,35 +1321,35 @@ enum OpcodeServer : uint16
SMSG_GARRISON_UPGRADE_RESULT = 0x296B,
SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x297D,
SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585,
- SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2818,
- SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275C,
+ SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2816,
+ SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275A,
SMSG_GET_GARRISON_INFO_RESULT = 0x295E,
- SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2798,
- SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D6,
- SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27C0,
- SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2797,
- SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2793,
- SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BF,
- SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27EB,
- SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EC,
+ SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2796,
+ SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D4,
+ SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BE,
+ SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2795,
+ SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2791,
+ SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BD,
+ SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E9,
+ SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EA,
SMSG_GM_PLAYER_INFO = 0x3005,
SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB,
- SMSG_GM_TICKET_CASE_STATUS = 0x26A1,
- SMSG_GM_TICKET_SYSTEM_STATUS = 0x26A0,
- SMSG_GOD_MODE = 0x26F7,
+ SMSG_GM_TICKET_CASE_STATUS = 0x26A0,
+ SMSG_GM_TICKET_SYSTEM_STATUS = 0x269F,
+ SMSG_GOD_MODE = 0x26F6,
SMSG_GOSSIP_COMPLETE = 0x2A97,
SMSG_GOSSIP_MESSAGE = 0x2A98,
SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA7,
- SMSG_GOSSIP_POI = 0x2790,
+ SMSG_GOSSIP_POI = 0x278E,
SMSG_GOSSIP_QUEST_UPDATE = 0x2A99,
SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6,
SMSG_GROUP_ACTION_THROTTLED = 0x2590,
- SMSG_GROUP_AUTO_KICK = 0x278D,
- SMSG_GROUP_DECLINE = 0x2789,
- SMSG_GROUP_DESTROYED = 0x278C,
- SMSG_GROUP_NEW_LEADER = 0x262B,
- SMSG_GROUP_REQUEST_DECLINE = 0x278A,
- SMSG_GROUP_UNINVITE = 0x278B,
+ SMSG_GROUP_AUTO_KICK = 0x278B,
+ SMSG_GROUP_DECLINE = 0x2787,
+ SMSG_GROUP_DESTROYED = 0x278A,
+ SMSG_GROUP_NEW_LEADER = 0x262A,
+ SMSG_GROUP_REQUEST_DECLINE = 0x2788,
+ SMSG_GROUP_UNINVITE = 0x2789,
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7,
@@ -1403,59 +1403,59 @@ enum OpcodeServer : uint16
SMSG_GUILD_ROSTER = 0x29BB,
SMSG_GUILD_ROSTER_UPDATE = 0x29BC,
SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9,
- SMSG_HEALTH_UPDATE = 0x26CD,
- SMSG_HIGHEST_THREAT_UPDATE = 0x26D5,
+ SMSG_HEALTH_UPDATE = 0x26CC,
+ SMSG_HIGHEST_THREAT_UPDATE = 0x26D4,
SMSG_HOTFIX_CONNECT = 0x2911,
SMSG_HOTFIX_MESSAGE = 0x2910,
- SMSG_INITIALIZE_FACTIONS = 0x271E,
+ SMSG_INITIALIZE_FACTIONS = 0x271D,
SMSG_INITIAL_SETUP = 0x2580,
- SMSG_INIT_WORLD_STATES = 0x2741,
- SMSG_INSPECT_RESULT = 0x262F,
- SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27AB,
- SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27AA,
- SMSG_INSTANCE_ENCOUNTER_END = 0x27B3,
- SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A9,
- SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B5,
- SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B4,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AE,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AD,
- SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B2,
- SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B6,
- SMSG_INSTANCE_ENCOUNTER_START = 0x27AF,
- SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AC,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27B1,
- SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27B0,
- SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F5,
- SMSG_INSTANCE_INFO = 0x2632,
- SMSG_INSTANCE_RESET = 0x2684,
- SMSG_INSTANCE_RESET_FAILED = 0x2685,
- SMSG_INSTANCE_SAVE_CREATED = 0x2777,
- SMSG_INTERRUPT_POWER_REGEN = 0x2C5C,
+ SMSG_INIT_WORLD_STATES = 0x273F,
+ SMSG_INSPECT_RESULT = 0x262E,
+ SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A9,
+ SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A8,
+ SMSG_INSTANCE_ENCOUNTER_END = 0x27B1,
+ SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A7,
+ SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B3,
+ SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B2,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AC,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AB,
+ SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B0,
+ SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B4,
+ SMSG_INSTANCE_ENCOUNTER_START = 0x27AD,
+ SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AA,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27AF,
+ SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AE,
+ SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F4,
+ SMSG_INSTANCE_INFO = 0x2631,
+ SMSG_INSTANCE_RESET = 0x2683,
+ SMSG_INSTANCE_RESET_FAILED = 0x2684,
+ SMSG_INSTANCE_SAVE_CREATED = 0x2775,
+ SMSG_INTERRUPT_POWER_REGEN = 0x2C59,
SMSG_INVALIDATE_PAGE_TEXT = 0x2918,
SMSG_INVALIDATE_PLAYER = 0x2FFF,
- SMSG_INVALID_PROMOTION_CODE = 0x274E,
+ SMSG_INVALID_PROMOTION_CODE = 0x274C,
SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5,
- SMSG_INVENTORY_FIXUP_COMPLETE = 0x280F,
- SMSG_INVENTORY_FULL_OVERFLOW = 0x2820,
- SMSG_ISLAND_AZERITE_GAIN = 0x2757,
- SMSG_ISLAND_COMPLETE = 0x2758,
+ SMSG_INVENTORY_FIXUP_COMPLETE = 0x280D,
+ SMSG_INVENTORY_FULL_OVERFLOW = 0x281E,
+ SMSG_ISLAND_AZERITE_GAIN = 0x2755,
+ SMSG_ISLAND_COMPLETE = 0x2756,
SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84,
- SMSG_ITEM_CHANGED = 0x26E6,
- SMSG_ITEM_COOLDOWN = 0x27C1,
- SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2750,
+ SMSG_ITEM_CHANGED = 0x26E5,
+ SMSG_ITEM_COOLDOWN = 0x27BF,
+ SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274E,
SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25A0,
- SMSG_ITEM_INTERACTION_COMPLETE = 0x286B,
+ SMSG_ITEM_INTERACTION_COMPLETE = 0x2869,
SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259E,
- SMSG_ITEM_PUSH_RESULT = 0x2621,
- SMSG_ITEM_TIME_UPDATE = 0x274F,
- SMSG_KICK_REASON = 0x2687,
- SMSG_LATENCY_REPORT_PING = 0x287D,
- SMSG_LEARNED_SPELLS = 0x2C50,
+ SMSG_ITEM_PUSH_RESULT = 0x2620,
+ SMSG_ITEM_TIME_UPDATE = 0x274D,
+ SMSG_KICK_REASON = 0x2686,
+ SMSG_LATENCY_REPORT_PING = 0x287B,
+ SMSG_LEARNED_SPELLS = 0x2C4D,
SMSG_LEARN_PVP_TALENT_FAILED = 0x25D4,
SMSG_LEARN_TALENT_FAILED = 0x25D3,
- SMSG_LEGACY_LOOT_RULES = 0x2825,
- SMSG_LEVEL_LINKING_RESULT = 0x2851,
- SMSG_LEVEL_UP_INFO = 0x26E4,
+ SMSG_LEGACY_LOOT_RULES = 0x2823,
+ SMSG_LEVEL_LINKING_RESULT = 0x284F,
+ SMSG_LEVEL_UP_INFO = 0x26E3,
SMSG_LFG_BOOT_PLAYER = 0x2A35,
SMSG_LFG_DISABLED = 0x2A33,
SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B,
@@ -1483,46 +1483,48 @@ enum OpcodeServer : uint16
SMSG_LFG_SLOT_INVALID = 0x2A30,
SMSG_LFG_TELEPORT_DENIED = 0x2A32,
SMSG_LFG_UPDATE_STATUS = 0x2A24,
- SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2769,
- SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2768,
- SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275D,
- SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x276A,
+ SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2767,
+ SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2766,
+ SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275B,
+ SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2768,
SMSG_LOAD_CUF_PROFILES = 0x25BC,
- SMSG_LOAD_EQUIPMENT_SET = 0x2709,
- SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2891,
- SMSG_LOGIN_SET_TIME_SPEED = 0x2708,
+ SMSG_LOAD_EQUIPMENT_SET = 0x2708,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x288F,
+ SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x2890,
+ SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x2891,
+ SMSG_LOGIN_SET_TIME_SPEED = 0x2707,
SMSG_LOGIN_VERIFY_WORLD = 0x259B,
- SMSG_LOGOUT_CANCEL_ACK = 0x2683,
- SMSG_LOGOUT_COMPLETE = 0x2682,
- SMSG_LOGOUT_RESPONSE = 0x2681,
- SMSG_LOG_XP_GAIN = 0x26E0,
- SMSG_LOOT_ALL_PASSED = 0x261F,
- SMSG_LOOT_LIST = 0x273B,
- SMSG_LOOT_MONEY_NOTIFY = 0x261A,
- SMSG_LOOT_RELEASE = 0x2619,
- SMSG_LOOT_RELEASE_ALL = 0x2618,
- SMSG_LOOT_REMOVED = 0x2614,
- SMSG_LOOT_RESPONSE = 0x2613,
- SMSG_LOOT_ROLL = 0x261C,
- SMSG_LOOT_ROLLS_COMPLETE = 0x261E,
- SMSG_LOOT_ROLL_WON = 0x2620,
- SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266E,
- SMSG_MAIL_COMMAND_RESULT = 0x2639,
- SMSG_MAIL_LIST_RESULT = 0x2751,
- SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2752,
+ SMSG_LOGOUT_CANCEL_ACK = 0x2682,
+ SMSG_LOGOUT_COMPLETE = 0x2681,
+ SMSG_LOGOUT_RESPONSE = 0x2680,
+ SMSG_LOG_XP_GAIN = 0x26DF,
+ SMSG_LOOT_ALL_PASSED = 0x261E,
+ SMSG_LOOT_LIST = 0x273A,
+ 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 = 0x266D,
+ SMSG_MAIL_COMMAND_RESULT = 0x2638,
+ SMSG_MAIL_LIST_RESULT = 0x274F,
+ SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2750,
SMSG_MAP_OBJECTIVES_INIT = 0x294B,
SMSG_MAP_OBJ_EVENTS = 0x25C6,
- SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261D,
+ SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261C,
SMSG_MEETING_STONE_FAILED = 0x2892,
SMSG_MESSAGE_BOX = 0x2576,
- SMSG_MINIMAP_PING = 0x26CA,
+ SMSG_MINIMAP_PING = 0x26C9,
SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14,
SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13,
SMSG_MISSILE_CANCEL = 0x25C7,
- SMSG_MODIFY_COOLDOWN = 0x275F,
+ SMSG_MODIFY_COOLDOWN = 0x275D,
SMSG_MOTD = 0x2BAF,
SMSG_MOUNT_RESULT = 0x257B,
- SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2841,
+ SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x283F,
SMSG_MOVE_ADD_IMPULSE = 0x2E32,
SMSG_MOVE_APPLY_INERTIA = 0x2E2E,
SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E15,
@@ -1630,84 +1632,85 @@ 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 = 0x27DB,
- SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27DA,
- SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260B,
- SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260D,
- SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x2610,
- SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260C,
+ SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D9,
+ SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D8,
+ SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260A,
+ SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260C,
+ SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260F,
+ SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260B,
SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DB,
- SMSG_NEW_TAXI_PATH = 0x267C,
+ SMSG_NEW_TAXI_PATH = 0x267B,
SMSG_NEW_WORLD = 0x2598,
- SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C46,
- SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A8,
+ SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43,
+ SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A7,
SMSG_NOTIFY_MONEY = 0x259D,
- SMSG_NOTIFY_RECEIVED_MAIL = 0x263A,
- SMSG_NPC_INTERACTION_OPEN_RESULT = 0x288B,
- SMSG_OFFER_PETITION_ERROR = 0x26B3,
- SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E1,
+ SMSG_NOTIFY_RECEIVED_MAIL = 0x2639,
+ SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2889,
+ SMSG_OFFER_PETITION_ERROR = 0x26B2,
+ SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E0,
SMSG_ON_MONSTER_MOVE = 0x2DD4,
- SMSG_OPEN_ARTIFACT_FORGE = 0x279C,
+ SMSG_OPEN_ARTIFACT_FORGE = 0x279A,
SMSG_OPEN_CONTAINER = 0x2DA6,
SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31,
- SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2794,
- SMSG_OVERRIDE_LIGHT = 0x26B8,
- SMSG_PAGE_TEXT = 0x2714,
- SMSG_PARTY_COMMAND_RESULT = 0x278E,
+ SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2792,
+ SMSG_OVERRIDE_LIGHT = 0x26B7,
+ SMSG_PAGE_TEXT = 0x2713,
+ SMSG_PARTY_COMMAND_RESULT = 0x278C,
SMSG_PARTY_INVITE = 0x25BD,
- SMSG_PARTY_KILL_LOG = 0x2755,
- SMSG_PARTY_MEMBER_FULL_STATE = 0x2754,
- SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2753,
- SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2871,
- SMSG_PARTY_UPDATE = 0x25F4,
+ SMSG_PARTY_KILL_LOG = 0x2753,
+ SMSG_PARTY_MEMBER_FULL_STATE = 0x2752,
+ SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2751,
+ SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x286F,
+ SMSG_PARTY_UPDATE = 0x25F3,
SMSG_PAST_TIME_EVENTS = 0x25C2,
- SMSG_PAUSE_MIRROR_TIMER = 0x270B,
- SMSG_PENDING_RAID_LOCK = 0x26F3,
- SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x2887,
- SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x2883,
- SMSG_PERKS_PROGRAM_DISABLED = 0x2888,
- SMSG_PERKS_PROGRAM_RESULT = 0x2884,
- SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x2882,
+ SMSG_PAUSE_MIRROR_TIMER = 0x270A,
+ SMSG_PENDING_RAID_LOCK = 0x26F2,
+ SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x2885,
+ SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x2881,
+ SMSG_PERKS_PROGRAM_DISABLED = 0x2886,
+ SMSG_PERKS_PROGRAM_RESULT = 0x2882,
+ SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x2880,
SMSG_PETITION_ALREADY_SIGNED = 0x25A3,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA,
- SMSG_PETITION_SHOW_LIST = 0x26BB,
- SMSG_PETITION_SHOW_SIGNATURES = 0x26BC,
- SMSG_PETITION_SIGN_RESULTS = 0x2747,
- SMSG_PET_ACTION_FEEDBACK = 0x2744,
- SMSG_PET_ACTION_SOUND = 0x269E,
+ SMSG_PETITION_SHOW_LIST = 0x26BA,
+ SMSG_PETITION_SHOW_SIGNATURES = 0x26BB,
+ SMSG_PETITION_SIGN_RESULTS = 0x2745,
+ SMSG_PET_ACTION_FEEDBACK = 0x2742,
+ SMSG_PET_ACTION_SOUND = 0x269D,
SMSG_PET_ADDED = 0x2595,
- SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2602,
- SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2673,
- SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25FB,
- SMSG_PET_BATTLE_FINAL_ROUND = 0x2600,
- SMSG_PET_BATTLE_FINISHED = 0x2601,
- SMSG_PET_BATTLE_FIRST_ROUND = 0x25FD,
- SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FC,
- SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2603,
- SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25FA,
- SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2637,
- SMSG_PET_BATTLE_QUEUE_STATUS = 0x2638,
- SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FF,
- SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F9,
- SMSG_PET_BATTLE_ROUND_RESULT = 0x25FE,
+ SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2601,
+ SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2672,
+ SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25FA,
+ SMSG_PET_BATTLE_FINAL_ROUND = 0x25FF,
+ SMSG_PET_BATTLE_FINISHED = 0x2600,
+ SMSG_PET_BATTLE_FIRST_ROUND = 0x25FC,
+ SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FB,
+ SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2602,
+ SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F9,
+ SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2636,
+ SMSG_PET_BATTLE_QUEUE_STATUS = 0x2637,
+ SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FE,
+ SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F8,
+ SMSG_PET_BATTLE_ROUND_RESULT = 0x25FD,
SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EB,
- SMSG_PET_CAST_FAILED = 0x2C5B,
- SMSG_PET_CLEAR_SPELLS = 0x2C24,
- SMSG_PET_DISMISS_SOUND = 0x269F,
- SMSG_PET_GOD_MODE = 0x2679,
- SMSG_PET_GUIDS = 0x26FF,
- SMSG_PET_LEARNED_SPELLS = 0x2C52,
+ SMSG_PET_CAST_FAILED = 0x2C58,
+ SMSG_PET_CLEAR_SPELLS = 0x2C21,
+ SMSG_PET_DISMISS_SOUND = 0x269E,
+ SMSG_PET_GOD_MODE = 0x2678,
+ SMSG_PET_GUIDS = 0x26FE,
+ SMSG_PET_LEARNED_SPELLS = 0x2C4F,
SMSG_PET_MODE = 0x258B,
- SMSG_PET_NAME_INVALID = 0x26C0,
+ SMSG_PET_NAME_INVALID = 0x26BF,
SMSG_PET_NEWLY_TAMED = 0x2589,
SMSG_PET_SLOT_UPDATED = 0x258A,
- SMSG_PET_SPELLS_MESSAGE = 0x2C25,
+ SMSG_PET_SPELLS_MESSAGE = 0x2C22,
SMSG_PET_STABLE_LIST = 0x2596,
SMSG_PET_STABLE_RESULT = 0x2597,
- SMSG_PET_TAME_FAILURE = 0x26B0,
- SMSG_PET_UNLEARNED_SPELLS = 0x2C53,
+ SMSG_PET_TAME_FAILURE = 0x26AF,
+ SMSG_PET_UNLEARNED_SPELLS = 0x2C50,
SMSG_PHASE_SHIFT_CHANGE = 0x2578,
- SMSG_PLAYED_TIME = 0x26D1,
+ SMSG_PLAYED_TIME = 0x26D0,
+ SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT = 0x3022,
SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3014,
SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3013,
SMSG_PLAYER_BONUS_ROLL_FAILED = 0x3016,
@@ -1715,41 +1718,44 @@ enum OpcodeServer : uint16
SMSG_PLAYER_CHOICE_CLEAR = 0x2FFE,
SMSG_PLAYER_CHOICE_DISPLAY_ERROR = 0x2FFD,
SMSG_PLAYER_CONDITION_RESULT = 0x300A,
+ SMSG_PLAYER_HIDE_ARROW_CALLOUT = 0x3021,
SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID = 0x3009,
SMSG_PLAYER_OPEN_SUBSCRIPTION_INTERSTITIAL = 0x300E,
SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F9,
+ SMSG_PLAYER_SHOW_ARROW_CALLOUT = 0x3020,
SMSG_PLAYER_SHOW_GENERIC_WIDGET_DISPLAY = 0x301E,
+ SMSG_PLAYER_SHOW_PARTY_POSE_UI = 0x301F,
SMSG_PLAYER_SHOW_UI_EVENT_TOAST = 0x3019,
SMSG_PLAYER_SKINNED = 0x3006,
SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D,
SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C,
- SMSG_PLAY_MUSIC = 0x2764,
- SMSG_PLAY_OBJECT_SOUND = 0x2765,
- SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272B,
- SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C4A,
- SMSG_PLAY_SCENE = 0x2634,
- SMSG_PLAY_SOUND = 0x2763,
- SMSG_PLAY_SPEAKERBOT_SOUND = 0x2766,
- SMSG_PLAY_SPELL_VISUAL = 0x2C48,
- SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C4C,
- SMSG_PLAY_TIME_WARNING = 0x26F9,
+ SMSG_PLAY_MUSIC = 0x2762,
+ SMSG_PLAY_OBJECT_SOUND = 0x2763,
+ SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272A,
+ SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47,
+ SMSG_PLAY_SCENE = 0x2633,
+ SMSG_PLAY_SOUND = 0x2761,
+ SMSG_PLAY_SPEAKERBOT_SOUND = 0x2764,
+ SMSG_PLAY_SPELL_VISUAL = 0x2C45,
+ SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49,
+ SMSG_PLAY_TIME_WARNING = 0x26F8,
SMSG_PONG = 0x304E,
- SMSG_POWER_UPDATE = 0x26CE,
+ SMSG_POWER_UPDATE = 0x26CD,
SMSG_PRELOAD_CHILD_MAP = 0x2579,
SMSG_PRELOAD_WORLD = 0x2599,
- SMSG_PREPOPULATE_NAME_CACHE = 0x2844,
- SMSG_PRE_RESSURECT = 0x2762,
+ SMSG_PREPOPULATE_NAME_CACHE = 0x2842,
+ SMSG_PRE_RESSURECT = 0x2760,
SMSG_PRINT_NOTIFICATION = 0x25CA,
- SMSG_PROC_RESIST = 0x2756,
- SMSG_PROFESSION_GOSSIP = 0x27FB,
- SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C54,
+ SMSG_PROC_RESIST = 0x2754,
+ SMSG_PROFESSION_GOSSIP = 0x27F9,
+ SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51,
SMSG_PVP_CREDIT = 0x2945,
SMSG_PVP_MATCH_COMPLETE = 0x294F,
SMSG_PVP_MATCH_INITIALIZE = 0x2950,
SMSG_PVP_MATCH_START = 0x294E,
SMSG_PVP_MATCH_STATISTICS = 0x2932,
SMSG_PVP_OPTIONS_ENABLED = 0x2934,
- SMSG_PVP_TIER_RECORD = 0x287E,
+ SMSG_PVP_TIER_RECORD = 0x287C,
SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A,
SMSG_QUERY_CREATURE_RESPONSE = 0x2914,
SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915,
@@ -1765,7 +1771,7 @@ enum OpcodeServer : uint16
SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3002,
SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96,
SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E6,
- SMSG_QUERY_TIME_RESPONSE = 0x26DF,
+ SMSG_QUERY_TIME_RESPONSE = 0x26DE,
SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81,
SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F,
SMSG_QUEST_FORCE_REMOVED = 0x2A9C,
@@ -1784,78 +1790,79 @@ enum OpcodeServer : uint16
SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D,
SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F,
SMSG_QUEST_PUSH_RESULT = 0x2A90,
- SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2867,
- SMSG_QUEST_SESSION_READY_CHECK = 0x2855,
- SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2856,
- SMSG_QUEST_SESSION_RESULT = 0x2854,
+ SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2865,
+ SMSG_QUEST_SESSION_READY_CHECK = 0x2853,
+ SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2854,
+ SMSG_QUEST_SESSION_RESULT = 0x2852,
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_FAILED = 0x2A8A,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B,
- SMSG_QUEUE_SUMMARY_UPDATE = 0x280E,
- SMSG_RAF_ACCOUNT_INFO = 0x2852,
- SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2863,
- SMSG_RAID_DIFFICULTY_SET = 0x27A6,
- SMSG_RAID_GROUP_ONLY = 0x27A8,
+ SMSG_QUEUE_SUMMARY_UPDATE = 0x280C,
+ SMSG_RAF_ACCOUNT_INFO = 0x2850,
+ SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2861,
+ SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x28B7,
+ SMSG_RAID_DIFFICULTY_SET = 0x27A4,
+ SMSG_RAID_GROUP_ONLY = 0x27A6,
SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4,
SMSG_RAID_MARKERS_CHANGED = 0x25A4,
- SMSG_RANDOM_ROLL = 0x262E,
+ SMSG_RANDOM_ROLL = 0x262D,
SMSG_RATED_PVP_INFO = 0x2931,
- SMSG_READY_CHECK_COMPLETED = 0x25F8,
- SMSG_READY_CHECK_RESPONSE = 0x25F7,
- SMSG_READY_CHECK_STARTED = 0x25F6,
- SMSG_READ_ITEM_RESULT_FAILED = 0x27A2,
- SMSG_READ_ITEM_RESULT_OK = 0x2799,
- SMSG_REALM_LOOKUP_INFO = 0x27C6,
+ SMSG_READY_CHECK_COMPLETED = 0x25F7,
+ SMSG_READY_CHECK_RESPONSE = 0x25F6,
+ SMSG_READY_CHECK_STARTED = 0x25F5,
+ SMSG_READ_ITEM_RESULT_FAILED = 0x27A0,
+ SMSG_READ_ITEM_RESULT_OK = 0x2797,
+ SMSG_REALM_LOOKUP_INFO = 0x27C4,
SMSG_REALM_QUERY_RESPONSE = 0x2913,
- SMSG_REATTACH_RESURRECT = 0x2746,
- SMSG_RECRAFT_ITEM_RESULT = 0x28A3,
- SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BD,
- SMSG_REFRESH_COMPONENT = 0x264F,
- SMSG_REFRESH_SPELL_HISTORY = 0x2C2C,
+ SMSG_REATTACH_RESURRECT = 0x2744,
+ SMSG_RECRAFT_ITEM_RESULT = 0x28A6,
+ SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BC,
+ SMSG_REFRESH_COMPONENT = 0x264E,
+ SMSG_REFRESH_SPELL_HISTORY = 0x2C29,
SMSG_REMOVE_ITEM_PASSIVE = 0x25AC,
- SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C55,
- SMSG_REPLACE_TROPHY_RESPONSE = 0x27BE,
+ SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C52,
+ SMSG_REPLACE_TROPHY_RESPONSE = 0x27BC,
SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001,
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x2591,
SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2935,
SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2936,
SMSG_RESEARCH_COMPLETE = 0x2587,
SMSG_RESET_COMPRESSION_CONTEXT = 0x304F,
- SMSG_RESET_FAILED_NOTIFY = 0x26B4,
- SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28A9,
+ SMSG_RESET_FAILED_NOTIFY = 0x26B3,
+ SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28AC,
SMSG_RESET_QUEST_POI = 0x2AA0,
SMSG_RESET_RANGED_COMBAT_TIMER = 0x2944,
SMSG_RESET_WEEKLY_CURRENCY = 0x2575,
- SMSG_RESPEC_WIPE_CONFIRM = 0x2611,
+ SMSG_RESPEC_WIPE_CONFIRM = 0x2610,
SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572,
- SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x2885,
- SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x2886,
- SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C64,
+ SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x2883,
+ SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x2884,
+ SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C61,
SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B9,
- SMSG_RESUME_CAST = 0x2C3E,
- SMSG_RESUME_CAST_BAR = 0x2C41,
+ SMSG_RESUME_CAST = 0x2C3B,
+ SMSG_RESUME_CAST_BAR = 0x2C3E,
SMSG_RESUME_COMMS = 0x304B,
SMSG_RESUME_TOKEN = 0x25AA,
SMSG_RESURRECT_REQUEST = 0x257E,
- SMSG_RESYNC_RUNES = 0x2C62,
- SMSG_RETURNING_PLAYER_PROMPT = 0x27A1,
- SMSG_RETURN_APPLICANT_LIST = 0x2848,
- SMSG_RETURN_RECRUITING_CLUBS = 0x2847,
+ SMSG_RESYNC_RUNES = 0x2C5F,
+ SMSG_RETURNING_PLAYER_PROMPT = 0x279F,
+ SMSG_RETURN_APPLICANT_LIST = 0x2846,
+ SMSG_RETURN_RECRUITING_CLUBS = 0x2845,
SMSG_ROLE_CHANGED_INFORM = 0x258D,
SMSG_ROLE_CHOSEN = 0x2A39,
SMSG_ROLE_POLL_INFORM = 0x258E,
- SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27FA,
+ SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F8,
SMSG_RUNE_REGEN_DEBUG = 0x25B6,
- SMSG_SCENARIO_COMPLETED = 0x27E8,
- SMSG_SCENARIO_POIS = 0x2631,
- SMSG_SCENARIO_PROGRESS_UPDATE = 0x262A,
- SMSG_SCENARIO_SHOW_CRITERIA = 0x27FE,
- SMSG_SCENARIO_STATE = 0x2629,
- SMSG_SCENARIO_UI_UPDATE = 0x27FD,
- SMSG_SCENARIO_VACATE = 0x27A3,
+ SMSG_SCENARIO_COMPLETED = 0x27E6,
+ SMSG_SCENARIO_POIS = 0x2630,
+ SMSG_SCENARIO_PROGRESS_UPDATE = 0x2629,
+ SMSG_SCENARIO_SHOW_CRITERIA = 0x27FC,
+ SMSG_SCENARIO_STATE = 0x2628,
+ SMSG_SCENARIO_UI_UPDATE = 0x27FB,
+ SMSG_SCENARIO_VACATE = 0x27A1,
SMSG_SCENE_OBJECT_EVENT = 0x25E1,
SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E6,
SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E7,
@@ -1863,178 +1870,176 @@ enum OpcodeServer : uint16
SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25E2,
SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E5,
SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E4,
- SMSG_SCRIPT_CAST = 0x2C59,
+ SMSG_SCRIPT_CAST = 0x2C56,
SMSG_SEASON_INFO = 0x25C1,
- SMSG_SELL_RESPONSE = 0x26C1,
+ SMSG_SELL_RESPONSE = 0x26C0,
SMSG_SEND_ITEM_PASSIVES = 0x25AD,
- SMSG_SEND_KNOWN_SPELLS = 0x2C2A,
- SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262C,
- SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262D,
- SMSG_SEND_SPELL_CHARGES = 0x2C2D,
- SMSG_SEND_SPELL_HISTORY = 0x2C2B,
- SMSG_SEND_UNLEARN_SPELLS = 0x2C2E,
- SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264C,
- SMSG_SERVER_TIME = 0x2680,
- SMSG_SERVER_TIME_OFFSET = 0x270F,
+ SMSG_SEND_KNOWN_SPELLS = 0x2C27,
+ SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262B,
+ SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262C,
+ SMSG_SEND_SPELL_CHARGES = 0x2C2A,
+ SMSG_SEND_SPELL_HISTORY = 0x2C28,
+ SMSG_SEND_UNLEARN_SPELLS = 0x2C2B,
+ SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264B,
+ SMSG_SERVER_TIME = 0x267F,
+ SMSG_SERVER_TIME_OFFSET = 0x270E,
SMSG_SETUP_CURRENCY = 0x2573,
SMSG_SETUP_RESEARCH_HISTORY = 0x2586,
- SMSG_SET_AI_ANIM_KIT = 0x272A,
- SMSG_SET_ALL_TASK_PROGRESS = 0x2787,
- SMSG_SET_ANIM_TIER = 0x272E,
+ SMSG_SET_AI_ANIM_KIT = 0x2729,
+ SMSG_SET_ALL_TASK_PROGRESS = 0x2785,
+ SMSG_SET_ANIM_TIER = 0x272D,
SMSG_SET_CHR_UPGRADE_TIER = 0x25DE,
SMSG_SET_CURRENCY = 0x2574,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E,
- SMSG_SET_DUNGEON_DIFFICULTY = 0x26A2,
- SMSG_SET_FACTION_AT_WAR = 0x26FB,
- SMSG_SET_FACTION_NOT_VISIBLE = 0x2725,
- SMSG_SET_FACTION_STANDING = 0x2726,
- SMSG_SET_FACTION_VISIBLE = 0x2724,
- SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C39,
- SMSG_SET_FORCED_REACTIONS = 0x2718,
+ SMSG_SET_DUNGEON_DIFFICULTY = 0x26A1,
+ SMSG_SET_FACTION_AT_WAR = 0x26FA,
+ SMSG_SET_FACTION_NOT_VISIBLE = 0x2724,
+ SMSG_SET_FACTION_STANDING = 0x2725,
+ SMSG_SET_FACTION_VISIBLE = 0x2723,
+ SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36,
+ SMSG_SET_FORCED_REACTIONS = 0x2717,
SMSG_SET_ITEM_PURCHASE_DATA = 0x259F,
- SMSG_SET_LOOT_METHOD_FAILED = 0x27CC,
+ SMSG_SET_LOOT_METHOD_FAILED = 0x27CA,
SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A2,
- SMSG_SET_MELEE_ANIM_KIT = 0x272D,
- SMSG_SET_MOVEMENT_ANIM_KIT = 0x272C,
- SMSG_SET_PCT_SPELL_MODIFIER = 0x2C3A,
- SMSG_SET_PET_SPECIALIZATION = 0x2623,
+ SMSG_SET_MELEE_ANIM_KIT = 0x272C,
+ SMSG_SET_MOVEMENT_ANIM_KIT = 0x272B,
+ SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37,
+ SMSG_SET_PET_SPECIALIZATION = 0x2622,
SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3003,
SMSG_SET_PLAY_HOVER_ANIM = 0x25BA,
- SMSG_SET_PROFICIENCY = 0x272F,
- SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x285B,
+ SMSG_SET_PROFICIENCY = 0x272E,
+ SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2859,
SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2998,
- SMSG_SET_SPELL_CHARGES = 0x2C29,
- SMSG_SET_TASK_COMPLETE = 0x2788,
- SMSG_SET_TIME_ZONE_INFORMATION = 0x2675,
- SMSG_SET_VEHICLE_REC_ID = 0x26F2,
- SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x288A,
+ SMSG_SET_SPELL_CHARGES = 0x2C26,
+ SMSG_SET_TASK_COMPLETE = 0x2786,
+ SMSG_SET_TIME_ZONE_INFORMATION = 0x2674,
+ SMSG_SET_VEHICLE_REC_ID = 0x26F1,
+ SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2888,
SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2999,
SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25DA,
SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95,
- SMSG_SHOW_TAXI_NODES = 0x26C9,
- SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x276B,
+ SMSG_SHOW_TAXI_NODES = 0x26C8,
+ SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2769,
SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2893,
- SMSG_SOCKET_GEMS_FAILURE = 0x2722,
- SMSG_SOCKET_GEMS_SUCCESS = 0x2721,
- SMSG_SPECIAL_MOUNT_ANIM = 0x269D,
- SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2713,
- SMSG_SPELL_ABSORB_LOG = 0x2C1F,
- SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17,
- SMSG_SPELL_CHANNEL_START = 0x2C34,
- SMSG_SPELL_CHANNEL_UPDATE = 0x2C35,
+ SMSG_SOCKET_GEMS_FAILURE = 0x2721,
+ SMSG_SOCKET_GEMS_SUCCESS = 0x2720,
+ SMSG_SPECIAL_MOUNT_ANIM = 0x269C,
+ SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2712,
+ SMSG_SPELL_ABSORB_LOG = 0x2C1C,
+ SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C16,
+ SMSG_SPELL_CHANNEL_START = 0x2C31,
+ SMSG_SPELL_CHANNEL_UPDATE = 0x2C32,
SMSG_SPELL_COOLDOWN = 0x2C15,
- SMSG_SPELL_DAMAGE_SHIELD = 0x2C31,
- SMSG_SPELL_DELAYED = 0x2C42,
- SMSG_SPELL_DISPELL_LOG = 0x2C1A,
- SMSG_SPELL_EMPOWER_SET_STAGE = 0x2C38,
- SMSG_SPELL_EMPOWER_START = 0x2C36,
- SMSG_SPELL_EMPOWER_UPDATE = 0x2C37,
- SMSG_SPELL_ENERGIZE_LOG = 0x2C1C,
- SMSG_SPELL_EXECUTE_LOG = 0x2C43,
- SMSG_SPELL_FAILED_OTHER = 0x2C58,
- SMSG_SPELL_FAILURE = 0x2C56,
- SMSG_SPELL_FAILURE_MESSAGE = 0x2C5D,
- SMSG_SPELL_GO = 0x2C3C,
- SMSG_SPELL_HEAL_ABSORB_LOG = 0x2C1E,
- SMSG_SPELL_HEAL_LOG = 0x2C1D,
- SMSG_SPELL_INSTAKILL_LOG = 0x2C33,
- SMSG_SPELL_INTERRUPT_LOG = 0x2C20,
- SMSG_SPELL_MISS_LOG = 0x2C44,
- SMSG_SPELL_NON_MELEE_DAMAGE_LOG = 0x2C32,
- SMSG_SPELL_OR_DAMAGE_IMMUNE = 0x2C2F,
- SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B,
- SMSG_SPELL_PREPARE = 0x2C3B,
- SMSG_SPELL_START = 0x2C3D,
+ SMSG_SPELL_DAMAGE_SHIELD = 0x2C2E,
+ SMSG_SPELL_DELAYED = 0x2C3F,
+ SMSG_SPELL_DISPELL_LOG = 0x2C17,
+ SMSG_SPELL_EMPOWER_SET_STAGE = 0x2C35,
+ SMSG_SPELL_EMPOWER_START = 0x2C33,
+ SMSG_SPELL_EMPOWER_UPDATE = 0x2C34,
+ SMSG_SPELL_ENERGIZE_LOG = 0x2C19,
+ SMSG_SPELL_EXECUTE_LOG = 0x2C40,
+ SMSG_SPELL_FAILED_OTHER = 0x2C55,
+ SMSG_SPELL_FAILURE = 0x2C53,
+ SMSG_SPELL_FAILURE_MESSAGE = 0x2C5A,
+ SMSG_SPELL_GO = 0x2C39,
+ SMSG_SPELL_HEAL_ABSORB_LOG = 0x2C1B,
+ SMSG_SPELL_HEAL_LOG = 0x2C1A,
+ SMSG_SPELL_INSTAKILL_LOG = 0x2C30,
+ SMSG_SPELL_INTERRUPT_LOG = 0x2C1D,
+ SMSG_SPELL_MISS_LOG = 0x2C41,
+ SMSG_SPELL_NON_MELEE_DAMAGE_LOG = 0x2C2F,
+ SMSG_SPELL_OR_DAMAGE_IMMUNE = 0x2C2C,
+ SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C18,
+ SMSG_SPELL_PREPARE = 0x2C38,
+ SMSG_SPELL_START = 0x2C3A,
SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CC,
- SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x286D,
- SMSG_STAND_STATE_UPDATE = 0x2717,
+ SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x286B,
+ SMSG_STAND_STATE_UPDATE = 0x2716,
SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D2,
- SMSG_START_ELAPSED_TIMER = 0x2604,
- SMSG_START_ELAPSED_TIMERS = 0x2606,
- SMSG_START_LIGHTNING_STORM = 0x26A5,
- SMSG_START_LOOT_ROLL = 0x261B,
- SMSG_START_MIRROR_TIMER = 0x270A,
+ SMSG_START_ELAPSED_TIMER = 0x2603,
+ SMSG_START_ELAPSED_TIMERS = 0x2605,
+ SMSG_START_LIGHTNING_STORM = 0x26A4,
+ SMSG_START_LOOT_ROLL = 0x261A,
+ SMSG_START_MIRROR_TIMER = 0x2709,
SMSG_START_TIMER = 0x25A6,
- SMSG_STOP_ELAPSED_TIMER = 0x2605,
- SMSG_STOP_MIRROR_TIMER = 0x270C,
- SMSG_STOP_SPEAKERBOT_SOUND = 0x2767,
+ SMSG_STOP_ELAPSED_TIMER = 0x2604,
+ SMSG_STOP_MIRROR_TIMER = 0x270B,
+ SMSG_STOP_SPEAKERBOT_SOUND = 0x2765,
SMSG_STOP_TIMER = 0x25A7,
SMSG_STREAMING_MOVIES = 0x25A5,
- SMSG_SUGGEST_INVITE_INFORM = 0x278F,
- SMSG_SUMMON_CANCEL = 0x26AE,
+ SMSG_SUGGEST_INVITE_INFORM = 0x278D,
+ SMSG_SUMMON_CANCEL = 0x26AD,
SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F,
- SMSG_SUMMON_REQUEST = 0x271C,
- SMSG_SUPERCEDED_SPELLS = 0x2C4F,
+ SMSG_SUMMON_REQUEST = 0x271B,
+ SMSG_SUPERCEDED_SPELLS = 0x2C4C,
SMSG_SUSPEND_COMMS = 0x304A,
SMSG_SUSPEND_TOKEN = 0x25A9,
- SMSG_SYNC_WOW_ENTITLEMENTS = 0x2865,
- SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2712,
- SMSG_TAXI_NODE_STATUS = 0x267A,
- SMSG_TEXT_EMOTE = 0x2678,
- SMSG_THREAT_CLEAR = 0x26D8,
- SMSG_THREAT_REMOVE = 0x26D7,
- SMSG_THREAT_UPDATE = 0x26D6,
+ SMSG_SYNC_WOW_ENTITLEMENTS = 0x2863,
+ SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2711,
+ SMSG_TAXI_NODE_STATUS = 0x2679,
+ SMSG_TEXT_EMOTE = 0x2677,
+ SMSG_THREAT_CLEAR = 0x26D7,
+ SMSG_THREAT_REMOVE = 0x26D6,
+ SMSG_THREAT_UPDATE = 0x26D5,
SMSG_TIME_ADJUSTMENT = 0x2DD3,
SMSG_TIME_SYNC_REQUEST = 0x2DD2,
- SMSG_TITLE_EARNED = 0x26D3,
- SMSG_TITLE_LOST = 0x26D4,
- SMSG_TOTEM_CREATED = 0x26C4,
- SMSG_TOTEM_DURATION_CHANGED = 0x26C5,
- SMSG_TOTEM_MOVED = 0x26C6,
+ SMSG_TITLE_EARNED = 0x26D2,
+ SMSG_TITLE_LOST = 0x26D3,
+ SMSG_TOTEM_CREATED = 0x26C3,
+ SMSG_TOTEM_DURATION_CHANGED = 0x26C4,
+ SMSG_TOTEM_MOVED = 0x26C5,
SMSG_TRADE_STATUS = 0x2582,
SMSG_TRADE_UPDATED = 0x2581,
- SMSG_TRAINER_BUY_FAILED = 0x26DB,
- SMSG_TRAINER_LIST = 0x26DA,
+ SMSG_TRAINER_BUY_FAILED = 0x26DA,
+ SMSG_TRAINER_LIST = 0x26D9,
SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D1,
- SMSG_TRANSFER_ABORTED = 0x26FE,
+ SMSG_TRANSFER_ABORTED = 0x26FD,
SMSG_TRANSFER_PENDING = 0x25CD,
SMSG_TREASURE_PICKER_RESPONSE = 0x291F,
- SMSG_TRIGGER_CINEMATIC = 0x27C4,
- SMSG_TRIGGER_MOVIE = 0x26C7,
- SMSG_TURN_IN_PETITION_RESULT = 0x2749,
- SMSG_TUTORIAL_FLAGS = 0x27B7,
- SMSG_UI_HEALING_RANGE_MODIFIED = 0x273E,
+ SMSG_TRIGGER_CINEMATIC = 0x27C2,
+ SMSG_TRIGGER_MOVIE = 0x26C6,
+ SMSG_TURN_IN_PETITION_RESULT = 0x2747,
+ SMSG_TUTORIAL_FLAGS = 0x27B5,
SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2,
- SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C7,
- SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C8,
- SMSG_UNLEARNED_SPELLS = 0x2C51,
+ SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C5,
+ SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C6,
+ SMSG_UNLEARNED_SPELLS = 0x2C4E,
SMSG_UNLOAD_CHILD_MAP = 0x257A,
- SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287F,
- SMSG_UPDATE_ACCOUNT_DATA = 0x2704,
+ SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287D,
+ SMSG_UPDATE_ACCOUNT_DATA = 0x2703,
SMSG_UPDATE_ACTION_BUTTONS = 0x25DF,
- SMSG_UPDATE_BNET_SESSION_KEY = 0x281F,
+ SMSG_UPDATE_BNET_SESSION_KEY = 0x281D,
SMSG_UPDATE_CAPTURE_POINT = 0x2929,
- SMSG_UPDATE_CELESTIAL_BODY = 0x281B,
- SMSG_UPDATE_CHARACTER_FLAGS = 0x27BD,
- SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x2761,
- SMSG_UPDATE_COOLDOWN = 0x2760,
+ SMSG_UPDATE_CELESTIAL_BODY = 0x2819,
+ SMSG_UPDATE_CHARACTER_FLAGS = 0x27BB,
+ SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x275F,
+ SMSG_UPDATE_COOLDOWN = 0x275E,
SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2996,
SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F,
- SMSG_UPDATE_EXPANSION_LEVEL = 0x2644,
- SMSG_UPDATE_GAME_TIME_STATE = 0x2822,
- SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A7,
- SMSG_UPDATE_LAST_INSTANCE = 0x2686,
- SMSG_UPDATE_OBJECT = 0x27C5,
+ SMSG_UPDATE_EXPANSION_LEVEL = 0x2643,
+ SMSG_UPDATE_GAME_TIME_STATE = 0x2820,
+ SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A6,
+ SMSG_UPDATE_LAST_INSTANCE = 0x2685,
+ SMSG_UPDATE_OBJECT = 0x27C3,
SMSG_UPDATE_PRIMARY_SPEC = 0x25D7,
- SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F5,
+ SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F4,
SMSG_UPDATE_TALENT_DATA = 0x25D6,
- SMSG_UPDATE_TASK_PROGRESS = 0x2786,
- SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19,
- SMSG_UPDATE_WORLD_STATE = 0x2743,
+ SMSG_UPDATE_TASK_PROGRESS = 0x2784,
+ SMSG_UPDATE_WORLD_STATE = 0x2741,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,
SMSG_USERLIST_UPDATE = 0x2BBB,
- SMSG_USE_EQUIPMENT_SET_RESULT = 0x274A,
- SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2816,
- SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2814,
- SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2813,
- SMSG_VAS_PURCHASE_COMPLETE = 0x27EE,
- SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27ED,
+ SMSG_USE_EQUIPMENT_SET_RESULT = 0x2748,
+ SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2814,
+ SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2812,
+ SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2811,
+ SMSG_VAS_PURCHASE_COMPLETE = 0x27EC,
+ SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27EB,
SMSG_VENDOR_INVENTORY = 0x25B8,
SMSG_VIGNETTE_UPDATE = 0x3008,
- SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x281A,
- SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2879,
- SMSG_VOICE_LOGIN_RESPONSE = 0x2819,
+ SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2818,
+ SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2877,
+ SMSG_VOICE_LOGIN_RESPONSE = 0x2817,
SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4,
SMSG_VOID_STORAGE_CONTENTS = 0x2DA1,
SMSG_VOID_STORAGE_FAILED = 0x2DA0,
@@ -2043,24 +2048,23 @@ enum OpcodeServer : uint16
SMSG_WAIT_QUEUE_FINISH = 0x256F,
SMSG_WAIT_QUEUE_UPDATE = 0x256E,
SMSG_WARDEN3_DATA = 0x2577,
- SMSG_WARDEN3_DISABLED = 0x281D,
- SMSG_WARDEN3_ENABLED = 0x281C,
- SMSG_WARFRONT_COMPLETE = 0x2759,
+ SMSG_WARDEN3_DISABLED = 0x281B,
+ SMSG_WARDEN3_ENABLED = 0x281A,
+ SMSG_WARFRONT_COMPLETE = 0x2757,
SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933,
- SMSG_WEATHER = 0x26A4,
- SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2870,
- SMSG_WEEKLY_REWARDS_RESULT = 0x286E,
- SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x286F,
- SMSG_WEEKLY_SPELL_USAGE = 0x2C18,
+ SMSG_WEATHER = 0x26A3,
+ SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x286E,
+ SMSG_WEEKLY_REWARDS_RESULT = 0x286C,
+ SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x286D,
SMSG_WHO = 0x2BAE,
- SMSG_WHO_IS = 0x26A3,
- SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2821,
+ SMSG_WHO_IS = 0x26A2,
+ SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x281F,
SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F,
SMSG_WORLD_SERVER_INFO = 0x25AE,
- SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2866,
- SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A8,
+ SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2864,
+ SMSG_XP_AWARDED_FROM_CURRENCY = 0x28AB,
SMSG_XP_GAIN_ABORTED = 0x25C9,
- SMSG_XP_GAIN_ENABLED = 0x27A7,
+ SMSG_XP_GAIN_ENABLED = 0x27A5,
SMSG_ZONE_UNDER_ATTACK = 0x2BB5,
// Opcodes that are not generated automatically
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 146f2614d07..6b31ed0edd8 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -708,7 +708,6 @@ namespace WorldPackets
class CancelMountAura;
class CancelModSpeedNoControlAuras;
class PetCancelAura;
- class RequestCategoryCooldowns;
class CancelCast;
class CastSpell;
class PetCastSpell;
@@ -1733,7 +1732,6 @@ class TC_GAME_API WorldSession
void HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel& violenceLevel);
void HandleObjectUpdateFailedOpcode(WorldPackets::Misc::ObjectUpdateFailed& objectUpdateFailed);
void HandleObjectUpdateRescuedOpcode(WorldPackets::Misc::ObjectUpdateRescued& objectUpdateRescued);
- void HandleRequestCategoryCooldowns(WorldPackets::Spells::RequestCategoryCooldowns& requestCategoryCooldowns);
void HandleCloseInteraction(WorldPackets::Misc::CloseInteraction& closeInteraction);
void HandleConversationLineStarted(WorldPackets::Misc::ConversationLineStarted& conversationLineStarted);
void HandleKeyboundOverride(WorldPackets::Spells::KeyboundOverride& keyboundOverride);
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index 466c481ff96..b4099bf51a9 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -627,6 +627,7 @@ enum AuraType : uint32
SPELL_AURA_DISABLE_NAVIGATION = 533, // disables map pins
SPELL_AURA_534 = 534,
SPELL_AURA_535 = 535, // related to profession equipment; NYI; MiscValue[0] = Profession (enum, not id)
+ SPELL_AURA_IGNORE_SPELL_CREATURE_TYPE_REQUIREMENTS = 536,
TOTAL_AURAS
};
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index b58ece3fd90..2a205b09882 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -603,6 +603,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //533 SPELL_AURA_DISABLE_NAVIGATION
&AuraEffect::HandleNULL, //534
&AuraEffect::HandleNULL, //535
+ &AuraEffect::HandleNoImmediateEffect, //536 SPELL_AURA_IGNORE_SPELL_CREATURE_TYPE_REQUIREMENTS implemented in SpellInfo::CheckTargetCreatureType
};
AuraEffect::AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, int32 const* baseAmount, Unit* caster) :
@@ -5964,13 +5965,19 @@ void AuraEffect::HandleEnableAltPower(AuraApplication const* aurApp, uint8 mode,
aurApp->GetTarget()->SetMaxPower(POWER_ALTERNATE_POWER, 0);
}
-void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const
+void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, uint8 mode, bool apply) const
{
if (!(mode & AURA_EFFECT_HANDLE_REAL))
return;
- if (Player* player = aurApp->GetTarget()->ToPlayer())
- player->SendSpellCategoryCooldowns();
+ Player* target = aurApp->GetTarget()->ToPlayer();
+ if (!target)
+ return;
+
+ if (apply)
+ target->AddSpellCategoryCooldownMod(GetMiscValue(), GetAmount());
+ else
+ target->RemoveSpellCategoryCooldownMod(GetMiscValue(), GetAmount());
}
void AuraEffect::HandleShowConfirmationPrompt(AuraApplication const* aurApp, uint8 mode, bool apply) const
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h
index faa646e3de2..9342c8956a1 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.h
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.h
@@ -310,7 +310,6 @@ class TC_GAME_API AuraEffect
void HandleAuraOverrideSpells(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraSetVehicle(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandlePreventResurrection(AuraApplication const* aurApp, uint8 mode, bool apply) const;
- void HandleAbsorbOverkill(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleMastery(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleEnableAltPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index c50847c70e2..3b2a7b6de94 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -394,6 +394,14 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF
&Spell::EffectChangeActiveCombatTraitConfig, //304 SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG
&Spell::EffectNULL, //305 SPELL_EFFECT_305
&Spell::EffectNULL, //306 SPELL_EFFECT_306
+ &Spell::EffectNULL, //307 SPELL_EFFECT_307
+ &Spell::EffectNULL, //308 SPELL_EFFECT_CANCEL_PRELOAD_WORLD
+ &Spell::EffectNULL, //309 SPELL_EFFECT_PRELOAD_WORLD
+ &Spell::EffectNULL, //310 SPELL_EFFECT_310
+ &Spell::EffectNULL, //311 SPELL_EFFECT_ENSURE_WORLD_LOADED
+ &Spell::EffectNULL, //312 SPELL_EFFECT_312
+ &Spell::EffectNULL, //313 SPELL_EFFECT_CHANGE_ITEM_BONUSES_2
+ &Spell::EffectNULL, //314 SPELL_EFFECT_ADD_SOCKET_BONUS
};
void Spell::EffectNULL()
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 1bfafeb23be..cf9c1fa9997 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -1134,6 +1134,14 @@ std::array<SpellEffectInfo::StaticData, TOTAL_SPELL_EFFECTS> SpellEffectInfo::_d
{EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_UNIT}, // 304 SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 305 SPELL_EFFECT_305
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 306 SPELL_EFFECT_306
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 307 SPELL_EFFECT_307
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 308 SPELL_EFFECT_308
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 309 SPELL_EFFECT_309
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 310 SPELL_EFFECT_310
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 311 SPELL_EFFECT_311
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 312 SPELL_EFFECT_312
+ {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_ITEM}, // 313 SPELL_EFFECT_313
+ {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 314 SPELL_EFFECT_314
} };
SpellInfo::SpellInfo(SpellNameEntry const* spellName, ::Difficulty difficulty, SpellInfoLoadHelper const& data)
@@ -2400,7 +2408,7 @@ bool SpellInfo::CheckTargetCreatureType(Unit const* target) const
return true;
uint32 creatureType = target->GetCreatureTypeMask();
- return !TargetCreatureType || !creatureType || (creatureType & TargetCreatureType);
+ return !TargetCreatureType || !creatureType || (creatureType & TargetCreatureType) || target->HasAuraType(SPELL_AURA_IGNORE_SPELL_CREATURE_TYPE_REQUIREMENTS);
}
SpellSchoolMask SpellInfo::GetSchoolMask() const
diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp
index e29869123c4..ef1c02468f7 100644
--- a/src/tools/map_extractor/System.cpp
+++ b/src/tools/map_extractor/System.cpp
@@ -1218,7 +1218,7 @@ bool ExtractDB2File(uint32 fileDataId, char const* cascFileName, int locale, boo
{
DB2SectionHeader sectionHeader = db2.GetSectionHeader(i);
if (sectionHeader.TactId && CascStorage->HasTactKey(sectionHeader.TactId))
- sectionHeader.TactId = 0;
+ sectionHeader.TactId = DUMMY_KNOWN_TACT_ID;
posAfterHeaders += fwrite(&sectionHeader, 1, sizeof(sectionHeader), output);
}
diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h
index 6cfca9124a9..c938aedd563 100644
--- a/src/tools/map_extractor/loadlib/DBFilesClientList.h
+++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h
@@ -28,6 +28,8 @@ DB2FileInfo const DBFilesClientList[] =
{
{ 1260179, "Achievement.db2" },
{ 1324299, "Achievement_Category.db2" },
+ { 4572795, "ActionBarGroup.db2" },
+ { 4572797, "ActionBarGroupEntry.db2" },
{ 1115949, "AdventureJournal.db2" },
{ 1267070, "AdventureMapPOI.db2" },
{ 1710672, "AlliedRace.db2" },
@@ -108,6 +110,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 801584, "BattlePetVisual.db2" },
{ 1360265, "BattlemasterList.db2" },
{ 1525607, "BeamEffect.db2" },
+ { 3491563, "BeckonTrigger.db2" },
{ 1467254, "BoneWindModifierModel.db2" },
{ 1416756, "BoneWindModifiers.db2" },
{ 1983274, "BonusRoll.db2" },
@@ -136,7 +139,9 @@ DB2FileInfo const DBFilesClientList[] =
{ 972425, "CharShipment.db2" },
{ 972405, "CharShipmentContainer.db2" },
{ 3055696, "CharStartKit.db2" },
+ { 1237591, "CharStartOutfit.db2" },
{ 1349054, "CharTitles.db2" },
+ { 1028733, "CharacterFaceBoneSet.db2" },
{ 1369752, "CharacterFacialHairStyles.db2" },
{ 1344281, "CharacterLoadout.db2" },
{ 1302846, "CharacterLoadoutItem.db2" },
@@ -218,6 +223,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 4373538, "CraftingQuality.db2" },
{ 4541803, "CraftingReagentEffect.db2" },
{ 4382197, "CraftingReagentQuality.db2" },
+ { 5049814, "CraftingReagentRequirement.db2" },
{ 841631, "Creature.db2" },
{ 879282, "CreatureDifficulty.db2" },
{ 4044373, "CreatureDifficultyTreasure.db2" },
@@ -287,6 +293,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1278178, "GMSurveyQuestions.db2" },
{ 1283020, "GMSurveySurveys.db2" },
{ 2922072, "GameClockDebug.db2" },
+ { 5008306, "GameMode.db2" },
{ 3565753, "GameObjectAnimGroupMember.db2" },
{ 1266737, "GameObjectArtKit.db2" },
{ 1302847, "GameObjectDiffAnimMap.db2" },
@@ -411,12 +418,16 @@ DB2FileInfo const DBFilesClientList[] =
{ 3025306, "ItemBonusListGroupEntry.db2" },
{ 1320358, "ItemBonusListLevelDelta.db2" },
{ 2924997, "ItemBonusListWarforgeLevelDelta.db2" },
+ { 5155639, "ItemBonusSeason.db2" },
+ { 5155640, "ItemBonusSeasonBonusListGroup.db2" },
+ { 5155641, "ItemBonusSeasonUpgradeCost.db2" },
{ 3026822, "ItemBonusSequenceSpell.db2" },
{ 3055768, "ItemBonusTree.db2" },
{ 4407505, "ItemBonusTreeGroupEntry.db2" },
{ 987134, "ItemBonusTreeNode.db2" },
{ 1247926, "ItemChildEquipment.db2" },
{ 1140189, "ItemClass.db2" },
+ { 5128111, "ItemCondition.db2" },
{ 1405665, "ItemContextPickerEntry.db2" },
{ 4337196, "ItemConversion.db2" },
{ 4337197, "ItemConversionEntry.db2" },
@@ -434,6 +445,8 @@ DB2FileInfo const DBFilesClientList[] =
{ 969941, "ItemEffect.db2" },
{ 801681, "ItemExtendedCost.db2" },
{ 2358574, "ItemFallbackVisual.db2" },
+ { 5152256, "ItemFixup.db2" },
+ { 5015219, "ItemGroupIlvlScalingEntry.db2" },
{ 1283023, "ItemGroupSounds.db2" },
{ 1588911, "ItemLevelSelector.db2" },
{ 1624937, "ItemLevelSelectorQuality.db2" },
@@ -449,6 +462,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1302240, "ItemPetFood.db2" },
{ 1121231, "ItemPriceBase.db2" },
{ 1270315, "ItemRangedDisplayInfo.db2" },
+ { 5150118, "ItemRecraft.db2" },
{ 4548446, "ItemSalvage.db2" },
{ 4549058, "ItemSalvageLoot.db2" },
{ 1273408, "ItemSearchName.db2" },
@@ -494,6 +508,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1371380, "LiquidType.db2" },
{ 2261065, "LiquidTypeXTexture.db2" },
{ 4276965, "LivingWorldObjectTemplate.db2" },
+ { 4276966, "LivingWorldObjectTemplateModel.db2" },
{ 2478235, "LoadingScreenSkin.db2" },
{ 1302239, "LoadingScreenTaxiSplines.db2" },
{ 1266541, "LoadingScreens.db2" },
@@ -513,6 +528,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1375801, "ManifestInterfaceData.db2" },
{ 1375804, "ManifestInterfaceItemIcon.db2" },
{ 1267335, "ManifestInterfaceTOCData.db2" },
+ { 1375802, "ManifestMP3.db2" },
{ 1349477, "Map.db2" },
{ 1597466, "MapCelestialBody.db2" },
{ 801709, "MapChallengeMode.db2" },
@@ -759,6 +775,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1001907, "SpellLearnSpell.db2" },
{ 1140079, "SpellLevels.db2" },
{ 1014438, "SpellMechanic.db2" },
+ { 3549053, "SpellMemorizeCost.db2" },
{ 1003144, "SpellMisc.db2" },
{ 897956, "SpellMissile.db2" },
{ 897955, "SpellMissileMotion.db2" },
@@ -853,6 +870,7 @@ DB2FileInfo const DBFilesClientList[] =
{ 1121973, "TransportPhysics.db2" },
{ 1140687, "TransportRotation.db2" },
{ 975024, "Trophy.db2" },
+ { 5011999, "UIArrowCallout.db2" },
{ 3488582, "UIChromieTimeExpansionInfo.db2" },
{ 3502042, "UICovenantAbility.db2" },
{ 3502043, "UICovenantPreview.db2" },