diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-06-18 11:37:07 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-06-18 11:37:07 +0200 |
commit | ceb8d561b44579118b109a9ff71ba415df53bbdc (patch) | |
tree | b2a6b87afa6a2b83b8040b8632a87cb9a8308775 /src | |
parent | e02e8a474244c229cc34c4efb987e24b6dd417f5 (diff) |
Core: Updated to 11.1.7
Diffstat (limited to 'src')
43 files changed, 1903 insertions, 1600 deletions
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index 24fb9700207..7e92324ec00 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -272,7 +272,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLE_PET_SPECIES_STATE, "SELECT MAX(ID) + 1 FROM battle_pet_species_state", CONNECTION_SYNCH); // BattlemasterList.db2 - PrepareStatement(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, InstanceType, MinLevel, MaxLevel, " + PrepareStatement(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, PvpType, MinLevel, MaxLevel, " "RatedPlayers, MinPlayers, MaxPlayers, GroupsAllowed, MaxGroupSize, HolidayWorldState, Flags, IconFileDataID, RequiredPlayerConditionID" " FROM battlemaster_list WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT MAX(ID) + 1 FROM battlemaster_list", CONNECTION_SYNCH); @@ -463,9 +463,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING, "SELECT MAX(ID) + 1 FROM conditional_content_tuning", CONNECTION_SYNCH); // ContentTuning.db2 - PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, Flags, ExpansionID, HealthItemLevelCurveID, DamageItemLevelCurveID, MinLevel, MaxLevel, " - "MinLevelType, MaxLevelType, TargetLevelDelta, TargetLevelMaxDelta, TargetLevelMin, TargetLevelMax, MinItemLevel, QuestXpMultiplier" - " FROM content_tuning WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, Flags, ExpansionID, HealthItemLevelCurveID, DamageItemLevelCurveID, " + "HealthPrimaryStatCurveID, DamagePrimaryStatCurveID, MinLevel, MaxLevel, MinLevelType, MaxLevelType, TargetLevelDelta, 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 diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 61c0d01e2a7..ca21d466b37 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -34,7 +34,7 @@ bool BattlegroundTemplate::IsArena() const { - return BattlemasterEntry->InstanceType == MAP_ARENA; + return BattlemasterEntry->GetType() == BattlemasterType::Arena; } uint16 BattlegroundTemplate::GetMinPlayersPerTeam() const @@ -518,13 +518,13 @@ bool BattlegroundMgr::IsValidQueueId(BattlegroundQueueTypeId bgQueueTypeId) switch (BattlegroundQueueIdType(bgQueueTypeId.Type)) { case BattlegroundQueueIdType::Battleground: - if (battlemasterList->InstanceType != MAP_BATTLEGROUND) + if (battlemasterList->GetType() != BattlemasterType::Battleground) return false; if (bgQueueTypeId.TeamSize) return false; break; case BattlegroundQueueIdType::Arena: - if (battlemasterList->InstanceType != MAP_ARENA) + if (battlemasterList->GetType() != BattlemasterType::Arena) return false; if (!bgQueueTypeId.Rated) return false; @@ -536,7 +536,7 @@ bool BattlegroundMgr::IsValidQueueId(BattlegroundQueueTypeId bgQueueTypeId) return false; break; case BattlegroundQueueIdType::ArenaSkirmish: - if (battlemasterList->InstanceType != MAP_ARENA) + if (battlemasterList->GetType() != BattlemasterType::Arena) return false; if (!bgQueueTypeId.Rated) return false; diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index d954214506f..a3d603474e3 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -21,6 +21,7 @@ #include "AreaTriggerDataStore.h" #include "BattlePetMgr.h" #include "BattlegroundScript.h" +#include "CollectionMgr.h" #include "Containers.h" #include "ConversationDataStore.h" #include "DB2Stores.h" @@ -3062,8 +3063,32 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio std::array<bool, std::tuple_size_v<decltype(condition->ItemID)>> results; results.fill(true); for (std::size_t i = 0; i < condition->ItemID.size(); ++i) + { if (condition->ItemID[i]) - results[i] = player->GetItemCount(condition->ItemID[i], condition->ItemFlags != 0) >= condition->ItemCount[i]; + { + EnumFlag<ItemSearchLocation> where = ItemSearchLocation::Equipment; + if ((condition->ItemFlags & 1) != 0) // include banks + where |= ItemSearchLocation::Bank | ItemSearchLocation::ReagentBank | ItemSearchLocation::AccountBank; + if ((condition->ItemFlags & 2) == 0) // ignore inventory + where |= ItemSearchLocation::Inventory; + + uint32 foundCount = 0; + results[i] = !player->ForEachItem(where, [&](Item const* item) + { + if (item->GetEntry() == uint32(condition->ItemID[i])) + { + foundCount += item->GetCount(); + if (foundCount >= condition->ItemCount[i]) + return ItemSearchCallbackResult::Stop; + } + + return ItemSearchCallbackResult::Continue; + }); + + if (!results[i] && condition->ItemCount[i] == 1 && sDB2Manager.IsToyItem(condition->ItemID[i])) + results[i] = player->GetSession()->GetCollectionMgr()->HasToy(condition->ItemID[i]); + } + } if (!PlayerConditionLogic(condition->ItemLogic, results)) return false; diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index e903b611777..f14f8a85f97 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -733,7 +733,7 @@ struct BattlemasterListLoadInfo { .IsSigned = false, .Type = FT_STRING, .Name = "GameType" }, { .IsSigned = false, .Type = FT_STRING, .Name = "ShortDescription" }, { .IsSigned = false, .Type = FT_STRING, .Name = "LongDescription" }, - { .IsSigned = true, .Type = FT_BYTE, .Name = "InstanceType" }, + { .IsSigned = true, .Type = FT_INT, .Name = "PvpType" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "MinLevel" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "MaxLevel" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "RatedPlayers" }, @@ -1306,13 +1306,15 @@ struct ConditionalContentTuningLoadInfo struct ContentTuningLoadInfo { - static constexpr DB2FieldMeta Fields[15] = + static constexpr DB2FieldMeta Fields[17] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, { .IsSigned = true, .Type = FT_INT, .Name = "ExpansionID" }, { .IsSigned = true, .Type = FT_INT, .Name = "HealthItemLevelCurveID" }, { .IsSigned = true, .Type = FT_INT, .Name = "DamageItemLevelCurveID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "HealthPrimaryStatCurveID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "DamagePrimaryStatCurveID" }, { .IsSigned = true, .Type = FT_INT, .Name = "MinLevel" }, { .IsSigned = true, .Type = FT_INT, .Name = "MaxLevel" }, { .IsSigned = true, .Type = FT_INT, .Name = "MinLevelType" }, @@ -1325,7 +1327,7 @@ struct ContentTuningLoadInfo { .IsSigned = false, .Type = FT_FLOAT, .Name = "QuestXpMultiplier" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 15, &ContentTuningMeta::Instance, HOTFIX_SEL_CONTENT_TUNING }; + static constexpr DB2LoadInfo Instance{ Fields, 17, &ContentTuningMeta::Instance, HOTFIX_SEL_CONTENT_TUNING }; }; struct ContentTuningXExpectedLoadInfo @@ -4214,7 +4216,7 @@ struct PlayerConditionLoadInfo { .IsSigned = false, .Type = FT_INT, .Name = "CurrentCompletedQuestLogic" }, { .IsSigned = false, .Type = FT_INT, .Name = "SpellLogic" }, { .IsSigned = false, .Type = FT_INT, .Name = "ItemLogic" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "ItemFlags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ItemFlags" }, { .IsSigned = false, .Type = FT_INT, .Name = "AuraSpellLogic" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "WorldStateExpressionID" }, { .IsSigned = true, .Type = FT_INT, .Name = "WeatherID" }, @@ -4627,7 +4629,7 @@ struct QuestV2LoadInfo static constexpr DB2FieldMeta Fields[3] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, - { .IsSigned = false, .Type = FT_SHORT, .Name = "UniqueBitFlag" }, + { .IsSigned = true, .Type = FT_INT, .Name = "UniqueBitFlag" }, { .IsSigned = true, .Type = FT_INT, .Name = "UiQuestDetailsTheme" }, }; @@ -5850,7 +5852,7 @@ struct TalentLoadInfo { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = false, .Type = FT_STRING, .Name = "Description" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "TierID" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "ColumnIndex" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "TabID" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "ClassID" }, @@ -6772,7 +6774,7 @@ struct WmoAreaTableLoadInfo { .IsSigned = false, .Type = FT_SHORT, .Name = "IntroSound" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "UwIntroSound" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "AreaTableID" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, }; static constexpr DB2LoadInfo Instance{ Fields, 15, &WMOAreaTableMeta::Instance, HOTFIX_SEL_WMO_AREA_TABLE }; diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index c71bbabf68c..33da4246e1f 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -1425,6 +1425,74 @@ struct ArtifactUnlockMeta }; }; +struct AssistedCombatMeta +{ + static constexpr DB2MetaField Fields[2] = + { + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 6698666, + .IndexField = 0, + .ParentIndexField = 1, + .FieldCount = 2, + .FileFieldCount = 2, + .LayoutHash = 0x5A49E0BC, + .Fields = Fields + }; +}; + +struct AssistedCombatRuleMeta +{ + static constexpr DB2MetaField Fields[8] = + { + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 6698667, + .IndexField = 0, + .ParentIndexField = 7, + .FieldCount = 8, + .FileFieldCount = 7, + .LayoutHash = 0x43CDA4C0, + .Fields = Fields + }; +}; + +struct AssistedCombatStepMeta +{ + static constexpr DB2MetaField Fields[4] = + { + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 6698668, + .IndexField = 0, + .ParentIndexField = 2, + .FieldCount = 4, + .FileFieldCount = 4, + .LayoutHash = 0x89C93557, + .Fields = Fields + }; +}; + struct AuctionHouseMeta { static constexpr DB2MetaField Fields[4] = @@ -2176,7 +2244,7 @@ struct BattlemasterListMeta { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, @@ -2197,7 +2265,7 @@ struct BattlemasterListMeta .ParentIndexField = -1, .FieldCount = 16, .FileFieldCount = 16, - .LayoutHash = 0x0063AE4C, + .LayoutHash = 0x764135B1, .Fields = Fields }; }; @@ -4866,7 +4934,7 @@ struct ContentRestrictionRuleSetMeta struct ContentTuningMeta { - static constexpr DB2MetaField Fields[15] = + static constexpr DB2MetaField Fields[17] = { { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, @@ -4882,6 +4950,8 @@ struct ContentTuningMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, }; @@ -4890,9 +4960,29 @@ struct ContentTuningMeta .FileDataId = 1962930, .IndexField = 0, .ParentIndexField = -1, - .FieldCount = 15, - .FileFieldCount = 15, - .LayoutHash = 0x7B58533B, + .FieldCount = 17, + .FileFieldCount = 17, + .LayoutHash = 0xCD32761B, + .Fields = Fields + }; +}; + +struct ContentTuningXDifficultyMeta +{ + static constexpr DB2MetaField Fields[2] = + { + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 7001981, + .IndexField = -1, + .ParentIndexField = 1, + .FieldCount = 2, + .FileFieldCount = 1, + .LayoutHash = 0xD976173D, .Fields = Fields }; }; @@ -5763,7 +5853,7 @@ struct CreatureFamilyMeta .ParentIndexField = -1, .FieldCount = 9, .FileFieldCount = 9, - .LayoutHash = 0x126721A8, + .LayoutHash = 0x4EBC1C18, .Fields = Fields }; }; @@ -6505,7 +6595,7 @@ struct DifficultyMeta .ParentIndexField = -1, .FieldCount = 14, .FileFieldCount = 14, - .LayoutHash = 0x017A4F91, + .LayoutHash = 0x31965C41, .Fields = Fields }; }; @@ -7387,7 +7477,7 @@ struct GameObjectAnimGroupMemberMeta { { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, }; @@ -7398,7 +7488,7 @@ struct GameObjectAnimGroupMemberMeta .ParentIndexField = 0, .FieldCount = 4, .FileFieldCount = 4, - .LayoutHash = 0xD36FC187, + .LayoutHash = 0xE5352F37, .Fields = Fields }; }; @@ -9443,7 +9533,7 @@ struct GroundEffectDoodadMeta static constexpr DB2MetaField Fields[9] = { { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, @@ -9460,7 +9550,7 @@ struct GroundEffectDoodadMeta .ParentIndexField = -1, .FieldCount = 9, .FileFieldCount = 9, - .LayoutHash = 0xD8C42C51, + .LayoutHash = 0xCFD94A21, .Fields = Fields }; }; @@ -12467,7 +12557,7 @@ struct LightSkyboxMeta static constexpr DB2MetaField Fields[4] = { { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; @@ -12479,7 +12569,7 @@ struct LightSkyboxMeta .ParentIndexField = -1, .FieldCount = 4, .FileFieldCount = 4, - .LayoutHash = 0x407FEBCF, + .LayoutHash = 0x9D4956FF, .Fields = Fields }; }; @@ -13147,7 +13237,7 @@ struct MapMeta .ParentIndexField = -1, .FieldCount = 25, .FileFieldCount = 25, - .LayoutHash = 0xE0196C63, + .LayoutHash = 0x75863E23, .Fields = Fields }; }; @@ -15488,7 +15578,7 @@ struct PlayerConditionMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, @@ -15564,7 +15654,7 @@ struct PlayerConditionMeta .ParentIndexField = -1, .FieldCount = 86, .FileFieldCount = 86, - .LayoutHash = 0x91789B48, + .LayoutHash = 0x7A27D6F8, .Fields = Fields }; }; @@ -16710,7 +16800,7 @@ struct QuestV2Meta static constexpr DB2MetaField Fields[3] = { { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; @@ -16721,7 +16811,7 @@ struct QuestV2Meta .ParentIndexField = -1, .FieldCount = 3, .FileFieldCount = 3, - .LayoutHash = 0x46207E09, + .LayoutHash = 0x1854BDB9, .Fields = Fields }; }; @@ -16733,7 +16823,7 @@ struct QuestV2CliTaskMeta { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, @@ -16763,7 +16853,7 @@ struct QuestV2CliTaskMeta .ParentIndexField = -1, .FieldCount = 24, .FileFieldCount = 24, - .LayoutHash = 0xC8D602DB, + .LayoutHash = 0xC0E0D02B, .Fields = Fields }; }; @@ -17170,7 +17260,7 @@ struct ResistancesMeta static constexpr DB2MetaField Fields[3] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, }; @@ -17181,7 +17271,7 @@ struct ResistancesMeta .ParentIndexField = -1, .FieldCount = 3, .FileFieldCount = 3, - .LayoutHash = 0xF7AC4E26, + .LayoutHash = 0xED08F596, .Fields = Fields }; }; @@ -20670,7 +20760,7 @@ struct StationeryMeta static constexpr DB2MetaField Fields[3] = { { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; @@ -20681,7 +20771,7 @@ struct StationeryMeta .ParentIndexField = -1, .FieldCount = 3, .FileFieldCount = 3, - .LayoutHash = 0xF075ED96, + .LayoutHash = 0x071EF9E6, .Fields = Fields }; }; @@ -20753,7 +20843,7 @@ struct TalentMeta { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, @@ -20774,7 +20864,7 @@ struct TalentMeta .ParentIndexField = -1, .FieldCount = 14, .FileFieldCount = 14, - .LayoutHash = 0x4D999D55, + .LayoutHash = 0x147B0045, .Fields = Fields }; }; @@ -23840,7 +23930,7 @@ struct WMOAreaTableMeta { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -23850,7 +23940,7 @@ struct WMOAreaTableMeta .ParentIndexField = 2, .FieldCount = 15, .FileFieldCount = 15, - .LayoutHash = 0x58247DE7, + .LayoutHash = 0xC5A7B977, .Fields = Fields }; }; @@ -24225,7 +24315,7 @@ struct WeaponImpactSoundsMeta .ParentIndexField = -1, .FieldCount = 7, .FileFieldCount = 7, - .LayoutHash = 0x21DD049D, + .LayoutHash = 0xA77CBD9D, .Fields = Fields }; }; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 46e8346ca9f..bb9a5e55c43 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -512,7 +512,7 @@ struct BattlemasterListEntry LocalizedString GameType; LocalizedString ShortDescription; LocalizedString LongDescription; - int8 InstanceType; + int32 PvpType; int8 MinLevel; int8 MaxLevel; int8 RatedPlayers; @@ -525,6 +525,7 @@ struct BattlemasterListEntry int32 IconFileDataID; int32 RequiredPlayerConditionID; + BattlemasterType GetType() const { return static_cast<BattlemasterType>(PvpType); } EnumFlag<BattlemasterListFlags> GetFlags() const { return static_cast<BattlemasterListFlags>(Flags); } }; @@ -944,6 +945,8 @@ struct ContentTuningEntry int32 ExpansionID; int32 HealthItemLevelCurveID; int32 DamageItemLevelCurveID; + int32 HealthPrimaryStatCurveID; + int32 DamagePrimaryStatCurveID; int32 MinLevel; int32 MaxLevel; int32 MinLevelType; @@ -3170,7 +3173,7 @@ struct PlayerConditionEntry uint32 CurrentCompletedQuestLogic; uint32 SpellLogic; uint32 ItemLogic; - uint8 ItemFlags; + int32 ItemFlags; uint32 AuraSpellLogic; uint16 WorldStateExpressionID; int32 WeatherID; @@ -3407,7 +3410,7 @@ struct QuestSortEntry struct QuestV2Entry { uint32 ID; - uint16 UniqueBitFlag; + int32 UniqueBitFlag; int32 UiQuestDetailsTheme; }; @@ -4182,7 +4185,7 @@ struct TalentEntry uint32 ID; LocalizedString Description; uint8 TierID; - uint8 Flags; + int32 Flags; uint8 ColumnIndex; uint16 TabID; int8 ClassID; @@ -4839,7 +4842,7 @@ struct WMOAreaTableEntry uint16 IntroSound; uint16 UwIntroSound; uint16 AreaTableID; - uint8 Flags; + int32 Flags; }; struct WorldEffectEntry diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index b5537b643ba..951ca42004e 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -270,6 +270,12 @@ enum class BattlePetSpeciesFlags : int32 DEFINE_ENUM_FLAG(BattlePetSpeciesFlags); +enum class BattlemasterType : int32 +{ + Battleground = 0, + Arena = 1, +}; + enum class BattlemasterListFlags : uint32 { InternalOnly = 0x01, diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 058b59a3dff..9da68100476 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -404,10 +404,11 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe if (HasDriveStatus) { - data->WriteBit(unit->m_movementInfo.driveStatus->accelerating); - data->WriteBit(unit->m_movementInfo.driveStatus->drifting); *data << float(unit->m_movementInfo.driveStatus->speed); *data << float(unit->m_movementInfo.driveStatus->movementAngle); + data->WriteBit(unit->m_movementInfo.driveStatus->accelerating); + data->WriteBit(unit->m_movementInfo.driveStatus->drifting); + data->FlushBits(); } *data << float(unit->GetSpeed(MOVE_WALK)); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 49d9c52170b..7986d550120 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -4829,6 +4829,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f } } data << uint32(DailyQuestsCompleted.size()); + data << uint32(Field_1328.size()); data << uint32(AvailableQuestLineXQuestIDs.size()); data << uint32(Heirlooms.size()); data << uint32(HeirloomFlags.size()); @@ -4889,6 +4890,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { data << int32(DailyQuestsCompleted[i]); } + for (uint32 i = 0; i < Field_1328.size(); ++i) + { + data << int32(Field_1328[i]); + } for (uint32 i = 0; i < AvailableQuestLineXQuestIDs.size(); ++i) { data << int32(AvailableQuestLineXQuestIDs[i]); @@ -5108,11 +5113,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo WriteCompleteDynamicFieldUpdateMask(PvpInfo.size(), data); } } - if (changesMask[41]) + if (changesMask[42]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[42]) + if (changesMask[43]) { if (!ignoreNestedChangesMask) ResearchSites[i].WriteUpdateMask(data); @@ -5121,11 +5126,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[43]) + if (changesMask[44]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[44]) + if (changesMask[45]) { if (!ignoreNestedChangesMask) ResearchSiteProgress[i].WriteUpdateMask(data); @@ -5134,11 +5139,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[45]) + if (changesMask[46]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[46]) + if (changesMask[47]) { if (!ignoreNestedChangesMask) Research[i].WriteUpdateMask(data); @@ -5147,11 +5152,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[41]) + if (changesMask[42]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[42]) + if (changesMask[43]) { for (uint32 j = 0; j < ResearchSites[i].size(); ++j) { @@ -5163,11 +5168,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[43]) + if (changesMask[44]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[44]) + if (changesMask[45]) { for (uint32 j = 0; j < ResearchSiteProgress[i].size(); ++j) { @@ -5179,11 +5184,11 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[45]) + if (changesMask[46]) { for (uint32 i = 0; i < 1; ++i) { - if (changesMask[46]) + if (changesMask[47]) { for (uint32 j = 0; j < Research[i].size(); ++j) { @@ -5208,189 +5213,196 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo if (changesMask[12]) { if (!ignoreNestedChangesMask) + Field_1328.WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(Field_1328.size(), data); + } + if (changesMask[13]) + { + if (!ignoreNestedChangesMask) AvailableQuestLineXQuestIDs.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(AvailableQuestLineXQuestIDs.size(), data); } - if (changesMask[13]) + if (changesMask[14]) { if (!ignoreNestedChangesMask) Heirlooms.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Heirlooms.size(), data); } - if (changesMask[14]) + if (changesMask[15]) { if (!ignoreNestedChangesMask) HeirloomFlags.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(HeirloomFlags.size(), data); } - if (changesMask[15]) + if (changesMask[16]) { if (!ignoreNestedChangesMask) Toys.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Toys.size(), data); } - if (changesMask[16]) + if (changesMask[17]) { if (!ignoreNestedChangesMask) ToyFlags.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ToyFlags.size(), data); } - if (changesMask[17]) + if (changesMask[18]) { if (!ignoreNestedChangesMask) Transmog.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Transmog.size(), data); } - if (changesMask[18]) + if (changesMask[19]) { if (!ignoreNestedChangesMask) ConditionalTransmog.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ConditionalTransmog.size(), data); } - if (changesMask[19]) + if (changesMask[20]) { if (!ignoreNestedChangesMask) SelfResSpells.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SelfResSpells.size(), data); } - if (changesMask[20]) + if (changesMask[21]) { if (!ignoreNestedChangesMask) RuneforgePowers.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(RuneforgePowers.size(), data); } - if (changesMask[21]) + if (changesMask[22]) { if (!ignoreNestedChangesMask) TransmogIllusions.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TransmogIllusions.size(), data); } - if (changesMask[22]) + if (changesMask[23]) { if (!ignoreNestedChangesMask) WarbandScenes.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(WarbandScenes.size(), data); } - if (changesMask[23]) + if (changesMask[24]) { if (!ignoreNestedChangesMask) CharacterRestrictions.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CharacterRestrictions.size(), data); } - if (changesMask[24]) + if (changesMask[25]) { if (!ignoreNestedChangesMask) SpellPctModByLabel.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SpellPctModByLabel.size(), data); } - if (changesMask[25]) + if (changesMask[26]) { if (!ignoreNestedChangesMask) SpellFlatModByLabel.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.size(), data); } - if (changesMask[26]) + if (changesMask[27]) { if (!ignoreNestedChangesMask) MawPowers.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(MawPowers.size(), data); } - if (changesMask[27]) + if (changesMask[28]) { if (!ignoreNestedChangesMask) MultiFloorExploration.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(MultiFloorExploration.size(), data); } - if (changesMask[28]) + if (changesMask[29]) { if (!ignoreNestedChangesMask) RecipeProgression.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(RecipeProgression.size(), data); } - if (changesMask[29]) + if (changesMask[30]) { if (!ignoreNestedChangesMask) ReplayedQuests.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ReplayedQuests.size(), data); } - if (changesMask[30]) + if (changesMask[31]) { if (!ignoreNestedChangesMask) TaskQuests.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TaskQuests.size(), data); } - if (changesMask[31]) + } + if (changesMask[32]) + { + if (changesMask[33]) { if (!ignoreNestedChangesMask) DisabledSpells.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(DisabledSpells.size(), data); } - } - if (changesMask[32]) - { - if (changesMask[33]) + if (changesMask[34]) { if (!ignoreNestedChangesMask) TraitConfigs.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TraitConfigs.size(), data); } - if (changesMask[34]) + if (changesMask[35]) { if (!ignoreNestedChangesMask) CraftingOrders.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CraftingOrders.size(), data); } - if (changesMask[35]) + if (changesMask[36]) { if (!ignoreNestedChangesMask) PersonalCraftingOrderCounts.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(PersonalCraftingOrderCounts.size(), data); } - if (changesMask[36]) + if (changesMask[37]) { if (!ignoreNestedChangesMask) NpcCraftingOrders.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(NpcCraftingOrders.size(), data); } - if (changesMask[37]) + if (changesMask[38]) { if (!ignoreNestedChangesMask) CategoryCooldownMods.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CategoryCooldownMods.size(), data); } - if (changesMask[38]) + if (changesMask[39]) { if (!ignoreNestedChangesMask) WeeklySpellUses.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(WeeklySpellUses.size(), data); } - if (changesMask[39]) + if (changesMask[40]) { if (!ignoreNestedChangesMask) TrackedCollectableSources.WriteUpdateMask(data); @@ -5443,6 +5455,16 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[12]) { + for (uint32 i = 0; i < Field_1328.size(); ++i) + { + if (Field_1328.HasChanged(i) || ignoreNestedChangesMask) + { + data << int32(Field_1328[i]); + } + } + } + if (changesMask[13]) + { for (uint32 i = 0; i < AvailableQuestLineXQuestIDs.size(); ++i) { if (AvailableQuestLineXQuestIDs.HasChanged(i) || ignoreNestedChangesMask) @@ -5451,7 +5473,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[13]) + if (changesMask[14]) { for (uint32 i = 0; i < Heirlooms.size(); ++i) { @@ -5461,7 +5483,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[14]) + if (changesMask[15]) { for (uint32 i = 0; i < HeirloomFlags.size(); ++i) { @@ -5471,7 +5493,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[15]) + if (changesMask[16]) { for (uint32 i = 0; i < Toys.size(); ++i) { @@ -5481,7 +5503,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[16]) + if (changesMask[17]) { for (uint32 i = 0; i < ToyFlags.size(); ++i) { @@ -5491,7 +5513,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[17]) + if (changesMask[18]) { for (uint32 i = 0; i < Transmog.size(); ++i) { @@ -5501,7 +5523,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[18]) + if (changesMask[19]) { for (uint32 i = 0; i < ConditionalTransmog.size(); ++i) { @@ -5511,7 +5533,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[19]) + if (changesMask[20]) { for (uint32 i = 0; i < SelfResSpells.size(); ++i) { @@ -5521,7 +5543,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[20]) + if (changesMask[21]) { for (uint32 i = 0; i < RuneforgePowers.size(); ++i) { @@ -5531,7 +5553,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[21]) + if (changesMask[22]) { for (uint32 i = 0; i < TransmogIllusions.size(); ++i) { @@ -5541,7 +5563,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[22]) + if (changesMask[23]) { for (uint32 i = 0; i < WarbandScenes.size(); ++i) { @@ -5551,7 +5573,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[24]) + if (changesMask[25]) { for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i) { @@ -5561,7 +5583,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[25]) + if (changesMask[26]) { for (uint32 i = 0; i < SpellFlatModByLabel.size(); ++i) { @@ -5571,7 +5593,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[26]) + if (changesMask[27]) { for (uint32 i = 0; i < MawPowers.size(); ++i) { @@ -5581,7 +5603,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[27]) + if (changesMask[28]) { for (uint32 i = 0; i < MultiFloorExploration.size(); ++i) { @@ -5591,7 +5613,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[28]) + if (changesMask[29]) { for (uint32 i = 0; i < RecipeProgression.size(); ++i) { @@ -5601,7 +5623,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[29]) + if (changesMask[30]) { for (uint32 i = 0; i < ReplayedQuests.size(); ++i) { @@ -5611,7 +5633,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[30]) + if (changesMask[31]) { for (uint32 i = 0; i < TaskQuests.size(); ++i) { @@ -5621,7 +5643,10 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[31]) + } + if (changesMask[32]) + { + if (changesMask[33]) { for (uint32 i = 0; i < DisabledSpells.size(); ++i) { @@ -5631,10 +5656,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - } - if (changesMask[32]) - { - if (changesMask[35]) + if (changesMask[36]) { for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i) { @@ -5644,7 +5666,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[36]) + if (changesMask[37]) { for (uint32 i = 0; i < NpcCraftingOrders.size(); ++i) { @@ -5654,7 +5676,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[37]) + if (changesMask[38]) { for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i) { @@ -5664,7 +5686,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[38]) + if (changesMask[39]) { for (uint32 i = 0; i < WeeklySpellUses.size(); ++i) { @@ -5674,7 +5696,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[39]) + if (changesMask[40]) { for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i) { @@ -5684,7 +5706,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[40]) + if (changesMask[41]) { if (!ignoreNestedChangesMask) AccountBankTabSettings.WriteUpdateMask(data, 3); @@ -5704,7 +5726,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[23]) + if (changesMask[24]) { for (uint32 i = 0; i < CharacterRestrictions.size(); ++i) { @@ -5717,7 +5739,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[32]) { - if (changesMask[33]) + if (changesMask[34]) { for (uint32 i = 0; i < TraitConfigs.size(); ++i) { @@ -5727,7 +5749,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[34]) + if (changesMask[35]) { for (uint32 i = 0; i < CraftingOrders.size(); ++i) { @@ -5737,7 +5759,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[40]) + if (changesMask[41]) { for (uint32 i = 0; i < AccountBankTabSettings.size(); ++i) { @@ -5747,364 +5769,364 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[47]) - { - data << *FarsightObject; - } if (changesMask[48]) { - data << *SummonedBattlePetGUID; + data << *FarsightObject; } if (changesMask[49]) { - data << uint64(Coinage); + data << *SummonedBattlePetGUID; } if (changesMask[50]) { - data << uint64(AccountBankCoinage); + data << uint64(Coinage); } if (changesMask[51]) { - data << int32(XP); + data << uint64(AccountBankCoinage); } if (changesMask[52]) { - data << int32(NextLevelXP); + data << int32(XP); } if (changesMask[53]) { - data << int32(TrialXP); + data << int32(NextLevelXP); } if (changesMask[54]) { - Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + data << int32(TrialXP); } if (changesMask[55]) { - data << int32(CharacterPoints); + Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } if (changesMask[56]) { - data << int32(MaxTalentTiers); + data << int32(CharacterPoints); } if (changesMask[57]) { - data << uint32(TrackCreatureMask); + data << int32(MaxTalentTiers); } if (changesMask[58]) { - data << float(MainhandExpertise); + data << uint32(TrackCreatureMask); } if (changesMask[59]) { - data << float(OffhandExpertise); + data << float(MainhandExpertise); } if (changesMask[60]) { - data << float(RangedExpertise); + data << float(OffhandExpertise); } if (changesMask[61]) { - data << float(CombatRatingExpertise); + data << float(RangedExpertise); } if (changesMask[62]) { - data << float(BlockPercentage); + data << float(CombatRatingExpertise); } if (changesMask[63]) { - data << float(DodgePercentage); + data << float(BlockPercentage); } if (changesMask[64]) { - data << float(DodgePercentageFromAttribute); + data << float(DodgePercentage); } if (changesMask[65]) { - data << float(ParryPercentage); + data << float(DodgePercentageFromAttribute); } if (changesMask[66]) { - data << float(ParryPercentageFromAttribute); + data << float(ParryPercentage); } if (changesMask[67]) { - data << float(CritPercentage); + data << float(ParryPercentageFromAttribute); } if (changesMask[68]) { - data << float(RangedCritPercentage); + data << float(CritPercentage); } if (changesMask[69]) { - data << float(OffhandCritPercentage); + data << float(RangedCritPercentage); } } if (changesMask[70]) { if (changesMask[71]) { - data << float(SpellCritPercentage); + data << float(OffhandCritPercentage); } if (changesMask[72]) { - data << int32(ShieldBlock); + data << float(SpellCritPercentage); } if (changesMask[73]) { - data << float(ShieldBlockCritPercentage); + data << int32(ShieldBlock); } if (changesMask[74]) { - data << float(Mastery); + data << float(ShieldBlockCritPercentage); } if (changesMask[75]) { - data << float(Speed); + data << float(Mastery); } if (changesMask[76]) { - data << float(Avoidance); + data << float(Speed); } if (changesMask[77]) { - data << float(Sturdiness); + data << float(Avoidance); } if (changesMask[78]) { - data << int32(Versatility); + data << float(Sturdiness); } if (changesMask[79]) { - data << float(VersatilityBonus); + data << int32(Versatility); } if (changesMask[80]) { - data << float(PvpPowerDamage); + data << float(VersatilityBonus); } if (changesMask[81]) { - data << float(PvpPowerHealing); + data << float(PvpPowerDamage); } if (changesMask[82]) { - BitVectors->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + data << float(PvpPowerHealing); } if (changesMask[83]) { - data << int32(ModHealingDonePos); + BitVectors->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } if (changesMask[84]) { - data << float(ModHealingPercent); + data << int32(ModHealingDonePos); } if (changesMask[85]) { - data << float(ModPeriodicHealingDonePercent); + data << float(ModHealingPercent); } if (changesMask[86]) { - data << float(ModSpellPowerPercent); + data << float(ModPeriodicHealingDonePercent); } if (changesMask[87]) { - data << float(ModResiliencePercent); + data << float(ModSpellPowerPercent); } if (changesMask[88]) { - data << float(OverrideSpellPowerByAPPercent); + data << float(ModResiliencePercent); } if (changesMask[89]) { - data << float(OverrideAPBySpellPowerPercent); + data << float(OverrideSpellPowerByAPPercent); } if (changesMask[90]) { - data << int32(ModTargetResistance); + data << float(OverrideAPBySpellPowerPercent); } if (changesMask[91]) { - data << int32(ModTargetPhysicalResistance); + data << int32(ModTargetResistance); } if (changesMask[92]) { - data << uint32(LocalFlags); + data << int32(ModTargetPhysicalResistance); } if (changesMask[93]) { - data << uint8(GrantableLevels); + data << uint32(LocalFlags); } if (changesMask[94]) { - data << uint8(MultiActionBars); + data << uint8(GrantableLevels); } if (changesMask[95]) { - data << uint8(LifetimeMaxRank); + data << uint8(MultiActionBars); } if (changesMask[96]) { - data << uint8(NumRespecs); + data << uint8(LifetimeMaxRank); } if (changesMask[97]) { - data << uint32(PvpMedals); + data << uint8(NumRespecs); } if (changesMask[98]) { - data << uint16(TodayHonorableKills); + data << uint32(PvpMedals); } if (changesMask[99]) { - data << uint16(YesterdayHonorableKills); + data << uint16(TodayHonorableKills); } if (changesMask[100]) { - data << uint32(LifetimeHonorableKills); + data << uint16(YesterdayHonorableKills); } if (changesMask[101]) { - data << int32(WatchedFactionIndex); + data << uint32(LifetimeHonorableKills); } } if (changesMask[102]) { if (changesMask[103]) { - data << int32(MaxLevel); + data << int32(WatchedFactionIndex); } if (changesMask[104]) { - data << int32(ScalingPlayerLevelDelta); + data << int32(MaxLevel); } if (changesMask[105]) { - data << int32(MaxCreatureScalingLevel); + data << int32(ScalingPlayerLevelDelta); } if (changesMask[106]) { - data << int32(PetSpellPower); + data << int32(MaxCreatureScalingLevel); } if (changesMask[107]) { - data << float(UiHitModifier); + data << int32(PetSpellPower); } if (changesMask[108]) { - data << float(UiSpellHitModifier); + data << float(UiHitModifier); } if (changesMask[109]) { - data << int32(HomeRealmTimeOffset); + data << float(UiSpellHitModifier); } if (changesMask[110]) { - data << float(ModPetHaste); + data << int32(HomeRealmTimeOffset); } if (changesMask[111]) { - data << int8(JailersTowerLevelMax); + data << float(ModPetHaste); } if (changesMask[112]) { - data << int8(JailersTowerLevel); + data << int8(JailersTowerLevelMax); } if (changesMask[113]) { - data << uint8(LocalRegenFlags); + data << int8(JailersTowerLevel); } if (changesMask[114]) { - data << uint8(AuraVision); + data << uint8(LocalRegenFlags); } if (changesMask[115]) { - data << uint8(NumBackpackSlots); + data << uint8(AuraVision); } if (changesMask[116]) { - data << int32(OverrideSpellsID); + data << uint8(NumBackpackSlots); } if (changesMask[117]) { - data << uint16(LootSpecID); + data << int32(OverrideSpellsID); } if (changesMask[118]) { - data << uint32(OverrideZonePVPType); + data << uint16(LootSpecID); } if (changesMask[119]) { - data << int32(Honor); + data << uint32(OverrideZonePVPType); } if (changesMask[120]) { - data << int32(HonorNextLevel); + data << int32(Honor); } if (changesMask[121]) { - data << int32(PerksProgramCurrency); + data << int32(HonorNextLevel); } if (changesMask[122]) { - data << uint8(NumBankSlots); + data << int32(PerksProgramCurrency); } if (changesMask[123]) { + data << uint8(NumBankSlots); + } + if (changesMask[124]) + { data << uint8(NumAccountBankTabs); } - if (changesMask[128]) + if (changesMask[129]) { data << int32(UiChromieTimeExpansionID); } - if (changesMask[129]) + if (changesMask[130]) { data << int32(TimerunningSeasonID); } - if (changesMask[130]) + if (changesMask[131]) { data << int32(TransportServerTime); } - if (changesMask[131]) + if (changesMask[132]) { data << uint32(WeeklyRewardsPeriodSinceOrigin); } - if (changesMask[132]) + if (changesMask[133]) { data << int16(DEBUGSoulbindConduitRank); } } if (changesMask[134]) { - if (changesMask[135]) + if (changesMask[136]) { data << uint32(ActiveCombatTraitConfigID); } - if (changesMask[136]) + if (changesMask[137]) { data << int32(ItemUpgradeHighOnehandWeaponItemID); } - if (changesMask[137]) + if (changesMask[138]) { data << int32(ItemUpgradeHighFingerItemID); } - if (changesMask[138]) + if (changesMask[139]) { data << float(ItemUpgradeHighFingerWatermark); } - if (changesMask[139]) + if (changesMask[140]) { data << int32(ItemUpgradeHighTrinketItemID); } - if (changesMask[140]) + if (changesMask[141]) { data << float(ItemUpgradeHighTrinketWatermark); } - if (changesMask[141]) + if (changesMask[142]) { data << uint64(LootHistoryInstanceID); } - if (changesMask[143]) + if (changesMask[144]) { data << uint8(RequiredMountCapabilityFlags); } @@ -6122,47 +6144,47 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo data.FlushBits(); if (changesMask[102]) { - if (changesMask[124]) + if (changesMask[125]) { ResearchHistory->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } - if (changesMask[126]) + if (changesMask[127]) { if (QuestSession.has_value()) { QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[125]) + if (changesMask[126]) { data << *FrozenPerksVendorItem; } - if (changesMask[127]) + if (changesMask[128]) { Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } - if (changesMask[133]) - { - data << *DungeonScore; - } } if (changesMask[134]) { - if (changesMask[142]) + if (changesMask[135]) + { + data << *DungeonScore; + } + if (changesMask[143]) { if (PetStable.has_value()) { PetStable->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[144]) + if (changesMask[145]) { if (WalkInData.has_value()) { WalkInData->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[145]) + if (changesMask[146]) { if (DelveData.has_value()) { @@ -6170,131 +6192,131 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[146]) + if (changesMask[147]) { for (uint32 i = 0; i < 232; ++i) { - if (changesMask[147 + i]) + if (changesMask[148 + i]) { data << InvSlots[i]; } } } - if (changesMask[379]) + if (changesMask[380]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[380 + i]) + if (changesMask[381 + i]) { RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[382]) + if (changesMask[383]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[383 + i]) + if (changesMask[384 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[390 + i]) + if (changesMask[391 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[397 + i]) + if (changesMask[398 + i]) { data << float(ModDamageDonePercent[i]); } - if (changesMask[404 + i]) + if (changesMask[405 + i]) { data << float(ModHealingDonePercent[i]); } } } - if (changesMask[411]) + if (changesMask[412]) { for (uint32 i = 0; i < 3; ++i) { - if (changesMask[412 + i]) + if (changesMask[413 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[415 + i]) + if (changesMask[416 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[418]) + if (changesMask[419]) { for (uint32 i = 0; i < 12; ++i) { - if (changesMask[419 + i]) + if (changesMask[420 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[431 + i]) + if (changesMask[432 + i]) { data << int64(BuybackTimestamp[i]); } } } - if (changesMask[443]) + if (changesMask[444]) { for (uint32 i = 0; i < 32; ++i) { - if (changesMask[444 + i]) + if (changesMask[445 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[476]) + if (changesMask[477]) { for (uint32 i = 0; i < 4; ++i) { - if (changesMask[477 + i]) + if (changesMask[478 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[481]) + if (changesMask[482]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[482 + i]) + if (changesMask[483 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[484]) + if (changesMask[485]) { for (uint32 i = 0; i < 5; ++i) { - if (changesMask[485 + i]) + if (changesMask[486 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[490]) + if (changesMask[491]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[491 + i]) + if (changesMask[492 + i]) { data << uint32(BankBagSlotFlags[i]); } } } - if (changesMask[498]) + if (changesMask[499]) { for (uint32 i = 0; i < 17; ++i) { - if (changesMask[499 + i]) + if (changesMask[500 + i]) { data << float(ItemUpgradeHighWatermark[i]); } @@ -6318,6 +6340,7 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(CharacterDataElements); Base::ClearChangesMask(AccountDataElements); Base::ClearChangesMask(DailyQuestsCompleted); + Base::ClearChangesMask(Field_1328); Base::ClearChangesMask(AvailableQuestLineXQuestIDs); Base::ClearChangesMask(Heirlooms); Base::ClearChangesMask(HeirloomFlags); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index d394afda2d9..853fc374f76 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -1034,7 +1034,7 @@ struct Research : public IsUpdateFieldStructureTag bool operator!=(Research const& right) const { return !(*this == right); } }; -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<516> +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<517> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BackpackSellJunkDisabled; @@ -1042,154 +1042,155 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<bool, 0, 4> SortBagsRightToLeft; UpdateField<bool, 0, 5> InsertItemsLeftToRight; UpdateField<bool, 0, 6> HasPerksProgramPendingReward; - UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 41, 42> ResearchSites; - UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 43, 44> ResearchSiteProgress; - UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 45, 46> Research; + UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 42, 43> ResearchSites; + UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 44, 45> ResearchSiteProgress; + UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 46, 47> Research; DynamicUpdateField<uint64, 0, 7> KnownTitles; DynamicUpdateField<UF::PlayerDataElement, 0, 8> CharacterDataElements; DynamicUpdateField<UF::PlayerDataElement, 0, 9> AccountDataElements; DynamicUpdateField<int32, 0, 11> DailyQuestsCompleted; - DynamicUpdateField<int32, 0, 12> AvailableQuestLineXQuestIDs; - DynamicUpdateField<int32, 0, 13> Heirlooms; - DynamicUpdateField<uint32, 0, 14> HeirloomFlags; - DynamicUpdateField<int32, 0, 15> Toys; - DynamicUpdateField<uint32, 0, 16> ToyFlags; - DynamicUpdateField<uint32, 0, 17> Transmog; - DynamicUpdateField<int32, 0, 18> ConditionalTransmog; - DynamicUpdateField<int32, 0, 19> SelfResSpells; - DynamicUpdateField<uint32, 0, 20> RuneforgePowers; - DynamicUpdateField<uint32, 0, 21> TransmogIllusions; - DynamicUpdateField<uint32, 0, 22> WarbandScenes; - DynamicUpdateField<UF::SpellPctModByLabel, 0, 24> SpellPctModByLabel; - DynamicUpdateField<UF::SpellFlatModByLabel, 0, 25> SpellFlatModByLabel; - DynamicUpdateField<UF::MawPower, 0, 26> MawPowers; - DynamicUpdateField<UF::MultiFloorExplore, 0, 27> MultiFloorExploration; - DynamicUpdateField<UF::RecipeProgressionInfo, 0, 28> RecipeProgression; - DynamicUpdateField<UF::ReplayedQuest, 0, 29> ReplayedQuests; - DynamicUpdateField<UF::QuestLog, 0, 30> TaskQuests; - DynamicUpdateField<int32, 0, 31> DisabledSpells; - DynamicUpdateField<UF::PersonalCraftingOrderCount, 32, 35> PersonalCraftingOrderCounts; - DynamicUpdateField<UF::NPCCraftingOrderInfo, 32, 36> NpcCraftingOrders; - DynamicUpdateField<UF::CategoryCooldownMod, 32, 37> CategoryCooldownMods; - DynamicUpdateField<UF::WeeklySpellUse, 32, 38> WeeklySpellUses; - DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 39> TrackedCollectableSources; + DynamicUpdateField<int32, 0, 12> Field_1328; + DynamicUpdateField<int32, 0, 13> AvailableQuestLineXQuestIDs; + DynamicUpdateField<int32, 0, 14> Heirlooms; + DynamicUpdateField<uint32, 0, 15> HeirloomFlags; + DynamicUpdateField<int32, 0, 16> Toys; + DynamicUpdateField<uint32, 0, 17> ToyFlags; + DynamicUpdateField<uint32, 0, 18> Transmog; + DynamicUpdateField<int32, 0, 19> ConditionalTransmog; + DynamicUpdateField<int32, 0, 20> SelfResSpells; + DynamicUpdateField<uint32, 0, 21> RuneforgePowers; + DynamicUpdateField<uint32, 0, 22> TransmogIllusions; + DynamicUpdateField<uint32, 0, 23> WarbandScenes; + DynamicUpdateField<UF::SpellPctModByLabel, 0, 25> SpellPctModByLabel; + DynamicUpdateField<UF::SpellFlatModByLabel, 0, 26> SpellFlatModByLabel; + DynamicUpdateField<UF::MawPower, 0, 27> MawPowers; + DynamicUpdateField<UF::MultiFloorExplore, 0, 28> MultiFloorExploration; + DynamicUpdateField<UF::RecipeProgressionInfo, 0, 29> RecipeProgression; + DynamicUpdateField<UF::ReplayedQuest, 0, 30> ReplayedQuests; + DynamicUpdateField<UF::QuestLog, 0, 31> TaskQuests; + DynamicUpdateField<int32, 32, 33> DisabledSpells; + DynamicUpdateField<UF::PersonalCraftingOrderCount, 32, 36> PersonalCraftingOrderCounts; + DynamicUpdateField<UF::NPCCraftingOrderInfo, 32, 37> NpcCraftingOrders; + DynamicUpdateField<UF::CategoryCooldownMod, 32, 38> CategoryCooldownMods; + DynamicUpdateField<UF::WeeklySpellUse, 32, 39> WeeklySpellUses; + DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 40> TrackedCollectableSources; DynamicUpdateField<UF::PVPInfo, 0, 10> PvpInfo; - DynamicUpdateField<UF::CharacterRestriction, 0, 23> CharacterRestrictions; - DynamicUpdateField<UF::TraitConfig, 32, 33> TraitConfigs; - DynamicUpdateField<UF::CraftingOrder, 32, 34> CraftingOrders; - DynamicUpdateField<UF::BankTabSettings, 32, 40> AccountBankTabSettings; - UpdateField<ObjectGuid, 32, 47> FarsightObject; - UpdateField<ObjectGuid, 32, 48> SummonedBattlePetGUID; - UpdateField<uint64, 32, 49> Coinage; - UpdateField<uint64, 32, 50> AccountBankCoinage; - UpdateField<int32, 32, 51> XP; - UpdateField<int32, 32, 52> NextLevelXP; - UpdateField<int32, 32, 53> TrialXP; - UpdateField<UF::SkillInfo, 32, 54> Skill; - UpdateField<int32, 32, 55> CharacterPoints; - UpdateField<int32, 32, 56> MaxTalentTiers; - UpdateField<uint32, 32, 57> TrackCreatureMask; - UpdateField<float, 32, 58> MainhandExpertise; - UpdateField<float, 32, 59> OffhandExpertise; - UpdateField<float, 32, 60> RangedExpertise; - UpdateField<float, 32, 61> CombatRatingExpertise; - UpdateField<float, 32, 62> BlockPercentage; - UpdateField<float, 32, 63> DodgePercentage; - UpdateField<float, 32, 64> DodgePercentageFromAttribute; - UpdateField<float, 32, 65> ParryPercentage; - UpdateField<float, 32, 66> ParryPercentageFromAttribute; - UpdateField<float, 32, 67> CritPercentage; - UpdateField<float, 32, 68> RangedCritPercentage; - UpdateField<float, 32, 69> OffhandCritPercentage; - UpdateField<float, 70, 71> SpellCritPercentage; - UpdateField<int32, 70, 72> ShieldBlock; - UpdateField<float, 70, 73> ShieldBlockCritPercentage; - UpdateField<float, 70, 74> Mastery; - UpdateField<float, 70, 75> Speed; - UpdateField<float, 70, 76> Avoidance; - UpdateField<float, 70, 77> Sturdiness; - UpdateField<int32, 70, 78> Versatility; - UpdateField<float, 70, 79> VersatilityBonus; - UpdateField<float, 70, 80> PvpPowerDamage; - UpdateField<float, 70, 81> PvpPowerHealing; - UpdateField<UF::BitVectors, 70, 82> BitVectors; - UpdateField<int32, 70, 83> ModHealingDonePos; - UpdateField<float, 70, 84> ModHealingPercent; - UpdateField<float, 70, 85> ModPeriodicHealingDonePercent; - UpdateField<float, 70, 86> ModSpellPowerPercent; - UpdateField<float, 70, 87> ModResiliencePercent; - UpdateField<float, 70, 88> OverrideSpellPowerByAPPercent; - UpdateField<float, 70, 89> OverrideAPBySpellPowerPercent; - UpdateField<int32, 70, 90> ModTargetResistance; - UpdateField<int32, 70, 91> ModTargetPhysicalResistance; - UpdateField<uint32, 70, 92> LocalFlags; - UpdateField<uint8, 70, 93> GrantableLevels; - UpdateField<uint8, 70, 94> MultiActionBars; - UpdateField<uint8, 70, 95> LifetimeMaxRank; - UpdateField<uint8, 70, 96> NumRespecs; - UpdateField<uint32, 70, 97> PvpMedals; - UpdateField<uint16, 70, 98> TodayHonorableKills; - UpdateField<uint16, 70, 99> YesterdayHonorableKills; - UpdateField<uint32, 70, 100> LifetimeHonorableKills; - UpdateField<int32, 70, 101> WatchedFactionIndex; - UpdateField<int32, 102, 103> MaxLevel; - UpdateField<int32, 102, 104> ScalingPlayerLevelDelta; - UpdateField<int32, 102, 105> MaxCreatureScalingLevel; - UpdateField<int32, 102, 106> PetSpellPower; - UpdateField<float, 102, 107> UiHitModifier; - UpdateField<float, 102, 108> UiSpellHitModifier; - UpdateField<int32, 102, 109> HomeRealmTimeOffset; - UpdateField<float, 102, 110> ModPetHaste; - UpdateField<int8, 102, 111> JailersTowerLevelMax; - UpdateField<int8, 102, 112> JailersTowerLevel; - UpdateField<uint8, 102, 113> LocalRegenFlags; - UpdateField<uint8, 102, 114> AuraVision; - UpdateField<uint8, 102, 115> NumBackpackSlots; - UpdateField<int32, 102, 116> OverrideSpellsID; - UpdateField<uint16, 102, 117> LootSpecID; - UpdateField<uint32, 102, 118> OverrideZonePVPType; - UpdateField<int32, 102, 119> Honor; - UpdateField<int32, 102, 120> HonorNextLevel; - UpdateField<int32, 102, 121> PerksProgramCurrency; - UpdateField<uint8, 102, 122> NumBankSlots; - UpdateField<uint8, 102, 123> NumAccountBankTabs; - UpdateField<UF::ResearchHistory, 102, 124> ResearchHistory; - UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 125> FrozenPerksVendorItem; - UpdateField<UF::ActivePlayerUnk901, 102, 127> Field_1410; - OptionalUpdateField<UF::QuestSession, 102, 126> QuestSession; - UpdateField<int32, 102, 128> UiChromieTimeExpansionID; - UpdateField<int32, 102, 129> TimerunningSeasonID; - UpdateField<int32, 102, 130> TransportServerTime; - UpdateField<uint32, 102, 131> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin - UpdateField<int16, 102, 132> DEBUGSoulbindConduitRank; - UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 102, 133> DungeonScore; - UpdateField<uint32, 134, 135> ActiveCombatTraitConfigID; - UpdateField<int32, 134, 136> ItemUpgradeHighOnehandWeaponItemID; - UpdateField<int32, 134, 137> ItemUpgradeHighFingerItemID; - UpdateField<float, 134, 138> ItemUpgradeHighFingerWatermark; - UpdateField<int32, 134, 139> ItemUpgradeHighTrinketItemID; - UpdateField<float, 134, 140> ItemUpgradeHighTrinketWatermark; - UpdateField<uint64, 134, 141> LootHistoryInstanceID; - OptionalUpdateField<UF::StableInfo, 134, 142> PetStable; - UpdateField<uint8, 134, 143> RequiredMountCapabilityFlags; - OptionalUpdateField<UF::WalkInData, 134, 144> WalkInData; - OptionalUpdateField<UF::DelveData, 134, 145> DelveData; - UpdateFieldArray<ObjectGuid, 232, 146, 147> InvSlots; - UpdateFieldArray<UF::RestInfo, 2, 379, 380> RestInfo; - UpdateFieldArray<int32, 7, 382, 383> ModDamageDonePos; - UpdateFieldArray<int32, 7, 382, 390> ModDamageDoneNeg; - UpdateFieldArray<float, 7, 382, 397> ModDamageDonePercent; - UpdateFieldArray<float, 7, 382, 404> ModHealingDonePercent; - UpdateFieldArray<float, 3, 411, 412> WeaponDmgMultipliers; - UpdateFieldArray<float, 3, 411, 415> WeaponAtkSpeedMultipliers; - UpdateFieldArray<uint32, 12, 418, 419> BuybackPrice; - UpdateFieldArray<int64, 12, 418, 431> BuybackTimestamp; - UpdateFieldArray<int32, 32, 443, 444> CombatRatings; - UpdateFieldArray<uint32, 4, 476, 477> NoReagentCostMask; - UpdateFieldArray<int32, 2, 481, 482> ProfessionSkillLine; - UpdateFieldArray<uint32, 5, 484, 485> BagSlotFlags; - UpdateFieldArray<uint32, 7, 490, 491> BankBagSlotFlags; - UpdateFieldArray<float, 17, 498, 499> ItemUpgradeHighWatermark; + DynamicUpdateField<UF::CharacterRestriction, 0, 24> CharacterRestrictions; + DynamicUpdateField<UF::TraitConfig, 32, 34> TraitConfigs; + DynamicUpdateField<UF::CraftingOrder, 32, 35> CraftingOrders; + DynamicUpdateField<UF::BankTabSettings, 32, 41> AccountBankTabSettings; + UpdateField<ObjectGuid, 32, 48> FarsightObject; + UpdateField<ObjectGuid, 32, 49> SummonedBattlePetGUID; + UpdateField<uint64, 32, 50> Coinage; + UpdateField<uint64, 32, 51> AccountBankCoinage; + UpdateField<int32, 32, 52> XP; + UpdateField<int32, 32, 53> NextLevelXP; + UpdateField<int32, 32, 54> TrialXP; + UpdateField<UF::SkillInfo, 32, 55> Skill; + UpdateField<int32, 32, 56> CharacterPoints; + UpdateField<int32, 32, 57> MaxTalentTiers; + UpdateField<uint32, 32, 58> TrackCreatureMask; + UpdateField<float, 32, 59> MainhandExpertise; + UpdateField<float, 32, 60> OffhandExpertise; + UpdateField<float, 32, 61> RangedExpertise; + UpdateField<float, 32, 62> CombatRatingExpertise; + UpdateField<float, 32, 63> BlockPercentage; + UpdateField<float, 32, 64> DodgePercentage; + UpdateField<float, 32, 65> DodgePercentageFromAttribute; + UpdateField<float, 32, 66> ParryPercentage; + UpdateField<float, 32, 67> ParryPercentageFromAttribute; + UpdateField<float, 32, 68> CritPercentage; + UpdateField<float, 32, 69> RangedCritPercentage; + UpdateField<float, 70, 71> OffhandCritPercentage; + UpdateField<float, 70, 72> SpellCritPercentage; + UpdateField<int32, 70, 73> ShieldBlock; + UpdateField<float, 70, 74> ShieldBlockCritPercentage; + UpdateField<float, 70, 75> Mastery; + UpdateField<float, 70, 76> Speed; + UpdateField<float, 70, 77> Avoidance; + UpdateField<float, 70, 78> Sturdiness; + UpdateField<int32, 70, 79> Versatility; + UpdateField<float, 70, 80> VersatilityBonus; + UpdateField<float, 70, 81> PvpPowerDamage; + UpdateField<float, 70, 82> PvpPowerHealing; + UpdateField<UF::BitVectors, 70, 83> BitVectors; + UpdateField<int32, 70, 84> ModHealingDonePos; + UpdateField<float, 70, 85> ModHealingPercent; + UpdateField<float, 70, 86> ModPeriodicHealingDonePercent; + UpdateField<float, 70, 87> ModSpellPowerPercent; + UpdateField<float, 70, 88> ModResiliencePercent; + UpdateField<float, 70, 89> OverrideSpellPowerByAPPercent; + UpdateField<float, 70, 90> OverrideAPBySpellPowerPercent; + UpdateField<int32, 70, 91> ModTargetResistance; + UpdateField<int32, 70, 92> ModTargetPhysicalResistance; + UpdateField<uint32, 70, 93> LocalFlags; + UpdateField<uint8, 70, 94> GrantableLevels; + UpdateField<uint8, 70, 95> MultiActionBars; + UpdateField<uint8, 70, 96> LifetimeMaxRank; + UpdateField<uint8, 70, 97> NumRespecs; + UpdateField<uint32, 70, 98> PvpMedals; + UpdateField<uint16, 70, 99> TodayHonorableKills; + UpdateField<uint16, 70, 100> YesterdayHonorableKills; + UpdateField<uint32, 70, 101> LifetimeHonorableKills; + UpdateField<int32, 102, 103> WatchedFactionIndex; + UpdateField<int32, 102, 104> MaxLevel; + UpdateField<int32, 102, 105> ScalingPlayerLevelDelta; + UpdateField<int32, 102, 106> MaxCreatureScalingLevel; + UpdateField<int32, 102, 107> PetSpellPower; + UpdateField<float, 102, 108> UiHitModifier; + UpdateField<float, 102, 109> UiSpellHitModifier; + UpdateField<int32, 102, 110> HomeRealmTimeOffset; + UpdateField<float, 102, 111> ModPetHaste; + UpdateField<int8, 102, 112> JailersTowerLevelMax; + UpdateField<int8, 102, 113> JailersTowerLevel; + UpdateField<uint8, 102, 114> LocalRegenFlags; + UpdateField<uint8, 102, 115> AuraVision; + UpdateField<uint8, 102, 116> NumBackpackSlots; + UpdateField<int32, 102, 117> OverrideSpellsID; + UpdateField<uint16, 102, 118> LootSpecID; + UpdateField<uint32, 102, 119> OverrideZonePVPType; + UpdateField<int32, 102, 120> Honor; + UpdateField<int32, 102, 121> HonorNextLevel; + UpdateField<int32, 102, 122> PerksProgramCurrency; + UpdateField<uint8, 102, 123> NumBankSlots; + UpdateField<uint8, 102, 124> NumAccountBankTabs; + UpdateField<UF::ResearchHistory, 102, 125> ResearchHistory; + UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 126> FrozenPerksVendorItem; + UpdateField<UF::ActivePlayerUnk901, 102, 128> Field_1410; + OptionalUpdateField<UF::QuestSession, 102, 127> QuestSession; + UpdateField<int32, 102, 129> UiChromieTimeExpansionID; + UpdateField<int32, 102, 130> TimerunningSeasonID; + UpdateField<int32, 102, 131> TransportServerTime; + UpdateField<uint32, 102, 132> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin + UpdateField<int16, 102, 133> DEBUGSoulbindConduitRank; + UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 134, 135> DungeonScore; + UpdateField<uint32, 134, 136> ActiveCombatTraitConfigID; + UpdateField<int32, 134, 137> ItemUpgradeHighOnehandWeaponItemID; + UpdateField<int32, 134, 138> ItemUpgradeHighFingerItemID; + UpdateField<float, 134, 139> ItemUpgradeHighFingerWatermark; + UpdateField<int32, 134, 140> ItemUpgradeHighTrinketItemID; + UpdateField<float, 134, 141> ItemUpgradeHighTrinketWatermark; + UpdateField<uint64, 134, 142> LootHistoryInstanceID; + OptionalUpdateField<UF::StableInfo, 134, 143> PetStable; + UpdateField<uint8, 134, 144> RequiredMountCapabilityFlags; + OptionalUpdateField<UF::WalkInData, 134, 145> WalkInData; + OptionalUpdateField<UF::DelveData, 134, 146> DelveData; + UpdateFieldArray<ObjectGuid, 232, 147, 148> InvSlots; + UpdateFieldArray<UF::RestInfo, 2, 380, 381> RestInfo; + UpdateFieldArray<int32, 7, 383, 384> ModDamageDonePos; + UpdateFieldArray<int32, 7, 383, 391> ModDamageDoneNeg; + UpdateFieldArray<float, 7, 383, 398> ModDamageDonePercent; + UpdateFieldArray<float, 7, 383, 405> ModHealingDonePercent; + UpdateFieldArray<float, 3, 412, 413> WeaponDmgMultipliers; + UpdateFieldArray<float, 3, 412, 416> WeaponAtkSpeedMultipliers; + UpdateFieldArray<uint32, 12, 419, 420> BuybackPrice; + UpdateFieldArray<int64, 12, 419, 432> BuybackTimestamp; + UpdateFieldArray<int32, 32, 444, 445> CombatRatings; + UpdateFieldArray<uint32, 4, 477, 478> NoReagentCostMask; + UpdateFieldArray<int32, 2, 482, 483> ProfessionSkillLine; + UpdateFieldArray<uint32, 5, 485, 486> BagSlotFlags; + UpdateFieldArray<uint32, 7, 491, 492> BankBagSlotFlags; + UpdateFieldArray<float, 17, 499, 500> 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; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index bdce5bc9b76..77c1e44f7dc 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -792,6 +792,7 @@ enum class ItemSearchLocation Inventory = 0x02, Bank = 0x04, ReagentBank = 0x08, + AccountBank = 0x10, // NYI Default = Equipment | Inventory, Everywhere = Equipment | Inventory | Bank | ReagentBank diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index c60ba89ab6a..5a08d176f30 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -703,6 +703,13 @@ void WorldSession::HandleUpdateAccountData(WorldPackets::ClientConfig::UserClien if (packet.Size == 0) // erase { SetAccountData(AccountDataType(packet.DataType), 0, ""); + + WorldPackets::ClientConfig::UpdateAccountDataComplete updateAccountDataComplete; + updateAccountDataComplete.Player = packet.PlayerGuid; + updateAccountDataComplete.DataType = packet.DataType; + updateAccountDataComplete.Result = 0; + SendPacket(updateAccountDataComplete.Write()); + return; } @@ -723,6 +730,12 @@ void WorldSession::HandleUpdateAccountData(WorldPackets::ClientConfig::UserClien } SetAccountData(AccountDataType(packet.DataType), packet.Time, dest); + + WorldPackets::ClientConfig::UpdateAccountDataComplete updateAccountDataComplete; + updateAccountDataComplete.Player = packet.PlayerGuid; + updateAccountDataComplete.DataType = packet.DataType; + updateAccountDataComplete.Result = 0; + SendPacket(updateAccountDataComplete.Write()); } void WorldSession::HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData& request) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 4a53a4ec4a9..3582aeec67a 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -7591,817 +7591,828 @@ enum class GameError : uint32 ERR_OUT_OF_FURY = 369, ERR_OUT_OF_PAIN = 370, ERR_OUT_OF_POWER_DISPLAY = 371, - ERR_LOOT_GONE = 372, - ERR_MOUNT_FORCEDDISMOUNT = 373, - ERR_AUTOFOLLOW_TOO_FAR = 374, - ERR_UNIT_NOT_FOUND = 375, - ERR_INVALID_FOLLOW_TARGET = 376, - ERR_INVALID_FOLLOW_PVP_COMBAT = 377, - ERR_INVALID_FOLLOW_TARGET_PVP_COMBAT = 378, - ERR_INVALID_INSPECT_TARGET = 379, - ERR_GUILDEMBLEM_SUCCESS = 380, - ERR_GUILDEMBLEM_INVALID_TABARD_COLORS = 381, - ERR_GUILDEMBLEM_NOGUILD = 382, - ERR_GUILDEMBLEM_NOTGUILDMASTER = 383, - ERR_GUILDEMBLEM_NOTENOUGHMONEY = 384, - ERR_GUILDEMBLEM_INVALIDVENDOR = 385, - ERR_EMBLEMERROR_NOTABARDGEOSET = 386, - ERR_SPELL_OUT_OF_RANGE = 387, - ERR_COMMAND_NEEDS_TARGET = 388, - ERR_NOAMMO_S = 389, - ERR_TOOBUSYTOFOLLOW = 390, - ERR_DUEL_REQUESTED = 391, - ERR_DUEL_CANCELLED = 392, - ERR_DEATHBINDALREADYBOUND = 393, - ERR_DEATHBIND_SUCCESS_S = 394, - ERR_NOEMOTEWHILERUNNING = 395, - ERR_ZONE_EXPLORED = 396, - ERR_ZONE_EXPLORED_XP = 397, - ERR_INVALID_ITEM_TARGET = 398, - ERR_INVALID_QUEST_TARGET = 399, - ERR_IGNORING_YOU_S = 400, - ERR_FISH_NOT_HOOKED = 401, - ERR_FISH_ESCAPED = 402, - ERR_SPELL_FAILED_NOTUNSHEATHED = 403, - ERR_PETITION_OFFERED_S = 404, - ERR_PETITION_SIGNED = 405, - ERR_PETITION_SIGNED_S = 406, - ERR_PETITION_DECLINED_S = 407, - ERR_PETITION_ALREADY_SIGNED = 408, - ERR_PETITION_RESTRICTED_ACCOUNT_TRIAL = 409, - ERR_PETITION_ALREADY_SIGNED_OTHER = 410, - ERR_PETITION_IN_GUILD = 411, - ERR_PETITION_CREATOR = 412, - ERR_PETITION_NOT_ENOUGH_SIGNATURES = 413, - ERR_PETITION_NOT_SAME_SERVER = 414, - ERR_PETITION_FULL = 415, - ERR_PETITION_ALREADY_SIGNED_BY_S = 416, - ERR_GUILD_NAME_INVALID = 417, - ERR_SPELL_UNLEARNED_S = 418, - ERR_PET_SPELL_ROOTED = 419, - ERR_PET_SPELL_AFFECTING_COMBAT = 420, - ERR_PET_SPELL_OUT_OF_RANGE = 421, - ERR_PET_SPELL_NOT_BEHIND = 422, - ERR_PET_SPELL_TARGETS_DEAD = 423, - ERR_PET_SPELL_DEAD = 424, - ERR_PET_SPELL_NOPATH = 425, - ERR_ITEM_CANT_BE_DESTROYED = 426, - ERR_TICKET_ALREADY_EXISTS = 427, - ERR_TICKET_CREATE_ERROR = 428, - ERR_TICKET_UPDATE_ERROR = 429, - ERR_TICKET_DB_ERROR = 430, - ERR_TICKET_NO_TEXT = 431, - ERR_TICKET_TEXT_TOO_LONG = 432, - ERR_OBJECT_IS_BUSY = 433, - ERR_EXHAUSTION_WELLRESTED = 434, - ERR_EXHAUSTION_RESTED = 435, - ERR_EXHAUSTION_NORMAL = 436, - ERR_EXHAUSTION_TIRED = 437, - ERR_EXHAUSTION_EXHAUSTED = 438, - ERR_NO_ITEMS_WHILE_SHAPESHIFTED = 439, - ERR_CANT_INTERACT_SHAPESHIFTED = 440, - ERR_REALM_NOT_FOUND = 441, - ERR_MAIL_QUEST_ITEM = 442, - ERR_MAIL_BOUND_ITEM = 443, - ERR_MAIL_CONJURED_ITEM = 444, - ERR_MAIL_BAG = 445, - ERR_MAIL_TO_SELF = 446, - ERR_MAIL_TARGET_NOT_FOUND = 447, - ERR_MAIL_DATABASE_ERROR = 448, - ERR_MAIL_DELETE_ITEM_ERROR = 449, - ERR_MAIL_WRAPPED_COD = 450, - ERR_MAIL_CANT_SEND_REALM = 451, - ERR_MAIL_TEMP_RETURN_OUTAGE = 452, - ERR_MAIL_RECEPIENT_CANT_RECEIVE_MAIL = 453, - ERR_MAIL_SENT = 454, - ERR_MAIL_TARGET_IS_TRIAL = 455, - ERR_NOT_HAPPY_ENOUGH = 456, - ERR_USE_CANT_IMMUNE = 457, - ERR_CANT_BE_DISENCHANTED = 458, - ERR_CANT_USE_DISARMED = 459, - ERR_AUCTION_DATABASE_ERROR = 460, - ERR_AUCTION_HIGHER_BID = 461, - ERR_AUCTION_ALREADY_BID = 462, - ERR_AUCTION_OUTBID_S = 463, - ERR_AUCTION_WON_S = 464, - ERR_AUCTION_REMOVED_S = 465, - ERR_AUCTION_BID_PLACED = 466, - ERR_LOGOUT_FAILED = 467, - ERR_QUEST_PUSH_SUCCESS_S = 468, - ERR_QUEST_PUSH_INVALID_S = 469, - ERR_QUEST_PUSH_INVALID_TO_RECIPIENT_S = 470, - ERR_QUEST_PUSH_ACCEPTED_S = 471, - ERR_QUEST_PUSH_DECLINED_S = 472, - ERR_QUEST_PUSH_BUSY_S = 473, - ERR_QUEST_PUSH_DEAD_S = 474, - ERR_QUEST_PUSH_DEAD_TO_RECIPIENT_S = 475, - ERR_QUEST_PUSH_LOG_FULL_S = 476, - ERR_QUEST_PUSH_LOG_FULL_TO_RECIPIENT_S = 477, - ERR_QUEST_PUSH_ONQUEST_S = 478, - ERR_QUEST_PUSH_ONQUEST_TO_RECIPIENT_S = 479, - ERR_QUEST_PUSH_ALREADY_DONE_S = 480, - ERR_QUEST_PUSH_ALREADY_DONE_TO_RECIPIENT_S = 481, - ERR_QUEST_PUSH_NOT_DAILY_S = 482, - ERR_QUEST_PUSH_TIMER_EXPIRED_S = 483, - ERR_QUEST_PUSH_NOT_IN_PARTY_S = 484, - ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S = 485, - ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_TO_RECIPIENT_S = 486, - ERR_QUEST_PUSH_NOT_ALLOWED_S = 487, - ERR_QUEST_PUSH_PREREQUISITE_S = 488, - ERR_QUEST_PUSH_PREREQUISITE_TO_RECIPIENT_S = 489, - ERR_QUEST_PUSH_LOW_LEVEL_S = 490, - ERR_QUEST_PUSH_LOW_LEVEL_TO_RECIPIENT_S = 491, - ERR_QUEST_PUSH_HIGH_LEVEL_S = 492, - ERR_QUEST_PUSH_HIGH_LEVEL_TO_RECIPIENT_S = 493, - ERR_QUEST_PUSH_CLASS_S = 494, - ERR_QUEST_PUSH_CLASS_TO_RECIPIENT_S = 495, - ERR_QUEST_PUSH_RACE_S = 496, - ERR_QUEST_PUSH_RACE_TO_RECIPIENT_S = 497, - ERR_QUEST_PUSH_LOW_FACTION_S = 498, - ERR_QUEST_PUSH_LOW_FACTION_TO_RECIPIENT_S = 499, - ERR_QUEST_PUSH_HIGH_FACTION_S = 500, - ERR_QUEST_PUSH_HIGH_FACTION_TO_RECIPIENT_S = 501, - ERR_QUEST_PUSH_EXPANSION_S = 502, - ERR_QUEST_PUSH_EXPANSION_TO_RECIPIENT_S = 503, - ERR_QUEST_PUSH_NOT_GARRISON_OWNER_S = 504, - ERR_QUEST_PUSH_NOT_GARRISON_OWNER_TO_RECIPIENT_S = 505, - ERR_QUEST_PUSH_WRONG_COVENANT_S = 506, - ERR_QUEST_PUSH_WRONG_COVENANT_TO_RECIPIENT_S = 507, - ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_S = 508, - ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_TO_RECIPIENT_S = 509, - ERR_QUEST_PUSH_WRONG_FACTION_S = 510, - ERR_QUEST_PUSH_WRONG_FACTION_TO_RECIPIENT_S = 511, - ERR_QUEST_PUSH_CROSS_FACTION_RESTRICTED_S = 512, - ERR_RAID_GROUP_LOWLEVEL = 513, - ERR_RAID_GROUP_ONLY = 514, - ERR_RAID_GROUP_FULL = 515, - ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 516, - ERR_CORPSE_IS_NOT_IN_INSTANCE = 517, - ERR_PVP_KILL_HONORABLE = 518, - ERR_PVP_KILL_DISHONORABLE = 519, - ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 520, - ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 521, - ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 522, - ERR_AUTOLOOT_MONEY_S = 523, - ERR_GENERIC_STUNNED = 524, - ERR_GENERIC_THROTTLE = 525, - ERR_CLUB_FINDER_SEARCHING_TOO_FAST = 526, - ERR_TARGET_STUNNED = 527, - ERR_MUST_REPAIR_DURABILITY = 528, - ERR_RAID_YOU_JOINED = 529, - ERR_RAID_YOU_LEFT = 530, - ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 531, - ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 532, - ERR_RAID_MEMBER_ADDED_S = 533, - ERR_RAID_MEMBER_REMOVED_S = 534, - ERR_INSTANCE_GROUP_ADDED_S = 535, - ERR_INSTANCE_GROUP_REMOVED_S = 536, - ERR_CLICK_ON_ITEM_TO_FEED = 537, - ERR_TOO_MANY_CHAT_CHANNELS = 538, - ERR_LOOT_ROLL_PENDING = 539, - ERR_LOOT_PLAYER_NOT_FOUND = 540, - ERR_NOT_IN_RAID = 541, - ERR_LOGGING_OUT = 542, - ERR_TARGET_LOGGING_OUT = 543, - ERR_NOT_WHILE_MOUNTED = 544, - ERR_NOT_WHILE_SHAPESHIFTED = 545, - ERR_NOT_IN_COMBAT = 546, - ERR_NOT_WHILE_DISARMED = 547, - ERR_PET_BROKEN = 548, - ERR_TALENT_WIPE_ERROR = 549, - ERR_SPEC_WIPE_ERROR = 550, - ERR_GLYPH_WIPE_ERROR = 551, - ERR_PET_SPEC_WIPE_ERROR = 552, - ERR_FEIGN_DEATH_RESISTED = 553, - ERR_MEETING_STONE_IN_QUEUE_S = 554, - ERR_MEETING_STONE_LEFT_QUEUE_S = 555, - ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 556, - ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 557, - ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 558, - ERR_MEETING_STONE_SUCCESS = 559, - ERR_MEETING_STONE_IN_PROGRESS = 560, - ERR_MEETING_STONE_MEMBER_ADDED_S = 561, - ERR_MEETING_STONE_GROUP_FULL = 562, - ERR_MEETING_STONE_NOT_LEADER = 563, - ERR_MEETING_STONE_INVALID_LEVEL = 564, - ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 565, - ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 566, - ERR_MEETING_STONE_MUST_BE_LEADER = 567, - ERR_MEETING_STONE_NO_RAID_GROUP = 568, - ERR_MEETING_STONE_NEED_PARTY = 569, - ERR_MEETING_STONE_NOT_FOUND = 570, - ERR_MEETING_STONE_TARGET_IN_VEHICLE = 571, - ERR_GUILDEMBLEM_SAME = 572, - ERR_EQUIP_TRADE_ITEM = 573, - ERR_PVP_TOGGLE_ON = 574, - ERR_PVP_TOGGLE_OFF = 575, - ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 576, - ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 577, - ERR_GROUP_JOIN_BATTLEGROUND_S = 578, - ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 579, - ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 580, - ERR_SOLO_JOIN_BATTLEGROUND_S = 581, - ERR_JOIN_SINGLE_SCENARIO_S = 582, - ERR_BATTLEGROUND_TOO_MANY_QUEUES = 583, - ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 584, - ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 585, - ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 586, - ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 587, - ERR_ALREADY_IN_ARENA_TEAM_S = 588, - ERR_INVALID_PROMOTION_CODE = 589, - ERR_BG_PLAYER_JOINED_SS = 590, - ERR_BG_PLAYER_LEFT_S = 591, - ERR_RESTRICTED_ACCOUNT = 592, - ERR_RESTRICTED_ACCOUNT_TRIAL = 593, - ERR_NOT_ENOUGH_PURCHASED_GAME_TIME = 594, - ERR_PLAY_TIME_EXCEEDED = 595, - ERR_APPROACHING_PARTIAL_PLAY_TIME = 596, - ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 597, - ERR_APPROACHING_NO_PLAY_TIME = 598, - ERR_APPROACHING_NO_PLAY_TIME_2 = 599, - ERR_UNHEALTHY_TIME = 600, - ERR_CHAT_RESTRICTED_TRIAL = 601, - ERR_CHAT_THROTTLED = 602, - ERR_MAIL_REACHED_CAP = 603, - ERR_INVALID_RAID_TARGET = 604, - ERR_RAID_LEADER_READY_CHECK_START_S = 605, - ERR_READY_CHECK_IN_PROGRESS = 606, - ERR_READY_CHECK_THROTTLED = 607, - ERR_DUNGEON_DIFFICULTY_FAILED = 608, - ERR_DUNGEON_DIFFICULTY_CHANGED_S = 609, - ERR_TRADE_WRONG_REALM = 610, - ERR_TRADE_NOT_ON_TAPLIST = 611, - ERR_CHAT_PLAYER_AMBIGUOUS_S = 612, - ERR_LOOT_CANT_LOOT_THAT_NOW = 613, - ERR_LOOT_MASTER_INV_FULL = 614, - ERR_LOOT_MASTER_UNIQUE_ITEM = 615, - ERR_LOOT_MASTER_OTHER = 616, - ERR_FILTERING_YOU_S = 617, - ERR_USE_PREVENTED_BY_MECHANIC_S = 618, - ERR_ITEM_UNIQUE_EQUIPPABLE = 619, - ERR_LFG_LEADER_IS_LFM_S = 620, - ERR_LFG_PENDING = 621, - ERR_CANT_SPEAK_LANGAGE = 622, - ERR_VENDOR_MISSING_TURNINS = 623, - ERR_BATTLEGROUND_NOT_IN_TEAM = 624, - ERR_NOT_IN_BATTLEGROUND = 625, - ERR_NOT_ENOUGH_HONOR_POINTS = 626, - ERR_NOT_ENOUGH_ARENA_POINTS = 627, - ERR_SOCKETING_REQUIRES_META_GEM = 628, - ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 629, - ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 630, - ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 631, - ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 632, - ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 633, - ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 634, - ERR_ITEM_MAX_COUNT_SOCKETED = 635, - ERR_SYSTEM_DISABLED = 636, - ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 637, - ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 638, - ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 639, - ERR_USER_SQUELCHED = 640, - ERR_ACCOUNT_SILENCED = 641, - ERR_PARTY_MEMBER_SILENCED = 642, - ERR_PARTY_MEMBER_SILENCED_LFG_DELIST = 643, - ERR_TOO_MUCH_GOLD = 644, - ERR_NOT_BARBER_SITTING = 645, - ERR_QUEST_FAILED_CAIS = 646, - ERR_INVITE_RESTRICTED_TRIAL = 647, - ERR_VOICE_IGNORE_FULL = 648, - ERR_VOICE_IGNORE_SELF = 649, - ERR_VOICE_IGNORE_NOT_FOUND = 650, - ERR_VOICE_IGNORE_ALREADY_S = 651, - ERR_VOICE_IGNORE_ADDED_S = 652, - ERR_VOICE_IGNORE_REMOVED_S = 653, - ERR_VOICE_IGNORE_AMBIGUOUS = 654, - ERR_VOICE_IGNORE_DELETED = 655, - ERR_UNKNOWN_MACRO_OPTION_S = 656, - ERR_NOT_DURING_ARENA_MATCH = 657, - ERR_NOT_IN_RATED_BATTLEGROUND = 658, - ERR_PLAYER_SILENCED = 659, - ERR_PLAYER_UNSILENCED = 660, - ERR_COMSAT_DISCONNECT = 661, - ERR_COMSAT_RECONNECT_ATTEMPT = 662, - ERR_COMSAT_CONNECT_FAIL = 663, - ERR_MAIL_INVALID_ATTACHMENT_SLOT = 664, - ERR_MAIL_TOO_MANY_ATTACHMENTS = 665, - ERR_MAIL_INVALID_ATTACHMENT = 666, - ERR_MAIL_ATTACHMENT_EXPIRED = 667, - ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 668, - ERR_PROFANE_CHAT_NAME = 669, - ERR_PLAYER_SILENCED_ECHO = 670, - ERR_PLAYER_UNSILENCED_ECHO = 671, - ERR_LOOT_CANT_LOOT_THAT = 672, - ERR_ARENA_EXPIRED_CAIS = 673, - ERR_GROUP_ACTION_THROTTLED = 674, - ERR_ALREADY_PICKPOCKETED = 675, - ERR_NAME_INVALID = 676, - ERR_NAME_NO_NAME = 677, - ERR_NAME_TOO_SHORT = 678, - ERR_NAME_TOO_LONG = 679, - ERR_NAME_MIXED_LANGUAGES = 680, - ERR_NAME_PROFANE = 681, - ERR_NAME_RESERVED = 682, - ERR_NAME_THREE_CONSECUTIVE = 683, - ERR_NAME_INVALID_SPACE = 684, - ERR_NAME_CONSECUTIVE_SPACES = 685, - ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 686, - ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 687, - ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 688, - ERR_RECRUIT_A_FRIEND_NOT_LINKED = 689, - ERR_RECRUIT_A_FRIEND_NOT_NOW = 690, - ERR_RECRUIT_A_FRIEND_SUMMON_LEVEL_MAX = 691, - ERR_RECRUIT_A_FRIEND_SUMMON_COOLDOWN = 692, - ERR_RECRUIT_A_FRIEND_SUMMON_OFFLINE = 693, - ERR_RECRUIT_A_FRIEND_INSUF_EXPAN_LVL = 694, - ERR_RECRUIT_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 695, - ERR_NOT_SAME_ACCOUNT = 696, - ERR_BAD_ON_USE_ENCHANT = 697, - ERR_TRADE_SELF = 698, - ERR_TOO_MANY_SOCKETS = 699, - ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 700, - ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 701, - ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 702, - ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 703, - ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 704, - ERR_ITEM_INVENTORY_FULL_SATCHEL = 705, - ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 706, - ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 707, - ERR_PURCHASE_LEVEL_TOO_LOW = 708, - ERR_GROUP_SWAP_FAILED = 709, - ERR_INVITE_IN_COMBAT = 710, - ERR_INVALID_GLYPH_SLOT = 711, - ERR_GENERIC_NO_VALID_TARGETS = 712, - ERR_CALENDAR_EVENT_ALERT_S = 713, - ERR_PET_LEARN_SPELL_S = 714, - ERR_PET_LEARN_ABILITY_S = 715, - ERR_PET_SPELL_UNLEARNED_S = 716, - ERR_INVITE_UNKNOWN_REALM = 717, - ERR_INVITE_NO_PARTY_SERVER = 718, - ERR_INVITE_PARTY_BUSY = 719, - ERR_INVITE_PARTY_BUSY_PENDING_REQUEST = 720, - ERR_INVITE_PARTY_BUSY_PENDING_SUGGEST = 721, - ERR_PARTY_TARGET_AMBIGUOUS = 722, - ERR_PARTY_LFG_INVITE_RAID_LOCKED = 723, - ERR_PARTY_LFG_BOOT_LIMIT = 724, - ERR_PARTY_LFG_BOOT_COOLDOWN_S = 725, - ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 726, - ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 727, - ERR_PARTY_LFG_BOOT_IN_PROGRESS = 728, - ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 729, - ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 730, - ERR_PARTY_LFG_BOOT_VOTE_FAILED = 731, - ERR_PARTY_LFG_BOOT_DISALLOWED_BY_MAP = 732, - ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 733, - ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 734, - ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 735, - ERR_PARTY_PRIVATE_GROUP_ONLY = 736, - ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 737, - ERR_PARTY_TIME_RUNNING_SEASON_ID_MUST_MATCH = 738, - ERR_RAID_DISALLOWED_BY_LEVEL = 739, - ERR_RAID_DISALLOWED_BY_CROSS_REALM = 740, - ERR_PARTY_ROLE_NOT_AVAILABLE = 741, - ERR_JOIN_LFG_OBJECT_FAILED = 742, - ERR_LFG_REMOVED_LEVELUP = 743, - ERR_LFG_REMOVED_XP_TOGGLE = 744, - ERR_LFG_REMOVED_FACTION_CHANGE = 745, - ERR_BATTLEGROUND_INFO_THROTTLED = 746, - ERR_BATTLEGROUND_ALREADY_IN = 747, - ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 748, - ERR_ARENA_TEAM_PERMISSIONS = 749, - ERR_NOT_WHILE_FALLING = 750, - ERR_NOT_WHILE_MOVING = 751, - ERR_NOT_WHILE_FATIGUED = 752, - ERR_MAX_SOCKETS = 753, - ERR_MULTI_CAST_ACTION_TOTEM_S = 754, - ERR_BATTLEGROUND_JOIN_LEVELUP = 755, - ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 756, - ERR_BATTLEGROUND_JOIN_XP_GAIN = 757, - ERR_BATTLEGROUND_JOIN_MERCENARY = 758, - ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 759, - ERR_BATTLEGROUND_JOIN_RATED_TOO_MANY_HEALERS = 760, - ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 761, - ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 762, - ERR_RAID_DIFFICULTY_FAILED = 763, - ERR_RAID_DIFFICULTY_CHANGED_S = 764, - ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 765, - ERR_RAID_LOCKOUT_CHANGED_S = 766, - ERR_RAID_CONVERTED_TO_PARTY = 767, - ERR_PARTY_CONVERTED_TO_RAID = 768, - ERR_PLAYER_DIFFICULTY_CHANGED_S = 769, - ERR_GMRESPONSE_DB_ERROR = 770, - ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 771, - ERR_ARENA_JOIN_RANGE_INDEX = 772, - ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 773, - ERR_BATTLEGROUND_JOIN_FAILED = 774, - ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 775, - ERR_BATTLEGROUND_JOIN_RESPEC = 776, - ERR_BATTLEGROUND_INVITATION_DECLINED = 777, - ERR_BATTLEGROUND_INVITATION_DECLINED_BY = 778, - ERR_BATTLEGROUND_JOIN_TIMED_OUT = 779, - ERR_BATTLEGROUND_DUPE_QUEUE = 780, - ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 781, - ERR_IN_BATTLEGROUND_RESPEC = 782, - ERR_MAIL_LIMITED_DURATION_ITEM = 783, - ERR_YELL_RESTRICTED_TRIAL = 784, - ERR_CHAT_RAID_RESTRICTED_TRIAL = 785, - ERR_LFG_ROLE_CHECK_FAILED = 786, - ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 787, - ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 788, - ERR_LFG_READY_CHECK_FAILED = 789, - ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 790, - ERR_LFG_GROUP_FULL = 791, - ERR_LFG_NO_LFG_OBJECT = 792, - ERR_LFG_NO_SLOTS_PLAYER = 793, - ERR_LFG_NO_SLOTS_PARTY = 794, - ERR_LFG_NO_SPEC = 795, - ERR_LFG_MISMATCHED_SLOTS = 796, - ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 797, - ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 798, - ERR_LFG_MEMBERS_NOT_PRESENT = 799, - ERR_LFG_GET_INFO_TIMEOUT = 800, - ERR_LFG_INVALID_SLOT = 801, - ERR_LFG_DESERTER_PLAYER = 802, - ERR_LFG_DESERTER_PARTY = 803, - ERR_LFG_DEAD = 804, - ERR_LFG_RANDOM_COOLDOWN_PLAYER = 805, - ERR_LFG_RANDOM_COOLDOWN_PARTY = 806, - ERR_LFG_TOO_MANY_MEMBERS = 807, - ERR_LFG_TOO_FEW_MEMBERS = 808, - ERR_LFG_PROPOSAL_FAILED = 809, - ERR_LFG_PROPOSAL_DECLINED_SELF = 810, - ERR_LFG_PROPOSAL_DECLINED_PARTY = 811, - ERR_LFG_NO_SLOTS_SELECTED = 812, - ERR_LFG_NO_ROLES_SELECTED = 813, - ERR_LFG_ROLE_CHECK_INITIATED = 814, - ERR_LFG_READY_CHECK_INITIATED = 815, - ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 816, - ERR_LFG_PLAYER_DECLINED_READY_CHECK = 817, - ERR_LFG_LOREWALKING = 818, - ERR_LFG_JOINED_QUEUE = 819, - ERR_LFG_JOINED_FLEX_QUEUE = 820, - ERR_LFG_JOINED_RF_QUEUE = 821, - ERR_LFG_JOINED_SCENARIO_QUEUE = 822, - ERR_LFG_JOINED_WORLD_PVP_QUEUE = 823, - ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 824, - ERR_LFG_JOINED_LIST = 825, - ERR_QUEUED_PLUNDERSTORM = 826, - ERR_LFG_LEFT_QUEUE = 827, - ERR_LFG_LEFT_LIST = 828, - ERR_LFG_ROLE_CHECK_ABORTED = 829, - ERR_LFG_READY_CHECK_ABORTED = 830, - ERR_LFG_CANT_USE_BATTLEGROUND = 831, - ERR_LFG_CANT_USE_DUNGEONS = 832, - ERR_LFG_REASON_TOO_MANY_LFG = 833, - ERR_LFG_FARM_LIMIT = 834, - ERR_LFG_NO_CROSS_FACTION_PARTIES = 835, - ERR_INVALID_TELEPORT_LOCATION = 836, - ERR_TOO_FAR_TO_INTERACT = 837, - ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 838, - ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 839, - ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 840, - ERR_DIFFICULTY_CHANGE_WORLDSTATE = 841, - ERR_DIFFICULTY_CHANGE_ENCOUNTER = 842, - ERR_DIFFICULTY_CHANGE_COMBAT = 843, - ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 844, - ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 845, - ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 846, - ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 847, - ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 848, - ERR_ARENA_TEAM_PARTY_SIZE = 849, - ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 850, - ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 851, - ERR_SOLO_RBG_WARGAME_GROUP_SIZE = 852, - ERR_SOLO_RBG_WARGAME_GROUP_COMP = 853, - ERR_SOLO_MIN_ITEM_LEVEL = 854, - ERR_PVP_PLAYER_ABANDONED = 855, - ERR_BATTLEGROUND_JOIN_GROUP_QUEUE_WITHOUT_HEALER = 856, - ERR_QUEST_FORCE_REMOVED_S = 857, - ERR_ATTACK_NO_ACTIONS = 858, - ERR_IN_RANDOM_BG = 859, - ERR_IN_NON_RANDOM_BG = 860, - ERR_BN_FRIEND_SELF = 861, - ERR_BN_FRIEND_ALREADY = 862, - ERR_BN_FRIEND_BLOCKED = 863, - ERR_BN_FRIEND_LIST_FULL = 864, - ERR_BN_FRIEND_REQUEST_SENT = 865, - ERR_BN_BROADCAST_THROTTLE = 866, - ERR_BG_DEVELOPER_ONLY = 867, - ERR_CURRENCY_SPELL_SLOT_MISMATCH = 868, - ERR_CURRENCY_NOT_TRADABLE = 869, - ERR_REQUIRES_EXPANSION_S = 870, - ERR_QUEST_FAILED_SPELL = 871, - ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 872, - ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 873, - ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 874, - ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 875, - ERR_TALENT_FAILED_UNKNOWN = 876, - ERR_TALENT_FAILED_IN_COMBAT = 877, - ERR_TALENT_FAILED_IN_PVP_MATCH = 878, - ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 879, - ERR_WARGAME_REQUEST_FAILURE = 880, - ERR_RANK_REQUIRES_AUTHENTICATOR = 881, - ERR_GUILD_BANK_VOUCHER_FAILED = 882, - ERR_WARGAME_REQUEST_SENT = 883, - ERR_REQUIRES_ACHIEVEMENT_I = 884, - ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 885, - ERR_CANT_BUY_QUANTITY = 886, - ERR_ITEM_IS_BATTLE_PAY_LOCKED = 887, - ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 888, - ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 889, - ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 890, - ERR_INSUFF_TRACKED_CURRENCY_IS = 891, - ERR_NOT_ON_TOURNAMENT_REALM = 892, - ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 893, - ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 894, - ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 895, - ERR_CANT_DO_THAT_IN_A_GROUP = 896, - ERR_GUILD_LEADER_REPLACED = 897, - ERR_TRANSMOGRIFY_CANT_EQUIP = 898, - ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 899, - ERR_TRANSMOGRIFY_NOT_SOULBOUND = 900, - ERR_TRANSMOGRIFY_INVALID_SOURCE = 901, - ERR_TRANSMOGRIFY_INVALID_DESTINATION = 902, - ERR_TRANSMOGRIFY_MISMATCH = 903, - ERR_TRANSMOGRIFY_LEGENDARY = 904, - ERR_TRANSMOGRIFY_SAME_ITEM = 905, - ERR_TRANSMOGRIFY_SAME_APPEARANCE = 906, - ERR_TRANSMOGRIFY_NOT_EQUIPPED = 907, - ERR_VOID_DEPOSIT_FULL = 908, - ERR_VOID_WITHDRAW_FULL = 909, - ERR_VOID_STORAGE_WRAPPED = 910, - ERR_VOID_STORAGE_STACKABLE = 911, - ERR_VOID_STORAGE_UNBOUND = 912, - ERR_VOID_STORAGE_REPAIR = 913, - ERR_VOID_STORAGE_CHARGES = 914, - ERR_VOID_STORAGE_QUEST = 915, - ERR_VOID_STORAGE_CONJURED = 916, - ERR_VOID_STORAGE_MAIL = 917, - ERR_VOID_STORAGE_BAG = 918, - ERR_VOID_TRANSFER_STORAGE_FULL = 919, - ERR_VOID_TRANSFER_INV_FULL = 920, - ERR_VOID_TRANSFER_INTERNAL_ERROR = 921, - ERR_VOID_TRANSFER_ITEM_INVALID = 922, - ERR_DIFFICULTY_DISABLED_IN_LFG = 923, - ERR_VOID_STORAGE_UNIQUE = 924, - ERR_VOID_STORAGE_LOOT = 925, - ERR_VOID_STORAGE_HOLIDAY = 926, - ERR_VOID_STORAGE_DURATION = 927, - ERR_VOID_STORAGE_LOAD_FAILED = 928, - ERR_VOID_STORAGE_INVALID_ITEM = 929, - ERR_VOID_STORAGE_ACCOUNT_ITEM = 930, - ERR_PARENTAL_CONTROLS_CHAT_MUTED = 931, - ERR_SOR_START_EXPERIENCE_INCOMPLETE = 932, - ERR_SOR_INVALID_EMAIL = 933, - ERR_SOR_INVALID_COMMENT = 934, - ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 935, - ERR_CHALLENGE_MODE_RESET_KEYSTONE = 936, - ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 937, - ERR_REPORT_SUBMITTED_SUCCESSFULLY = 938, - ERR_REPORT_SUBMISSION_FAILED = 939, - ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 940, - ERR_BUG_SUBMITTED_SUCCESSFULLY = 941, - ERR_CHALLENGE_MODE_ENABLED = 942, - ERR_CHALLENGE_MODE_DISABLED = 943, - ERR_PETBATTLE_CREATE_FAILED = 944, - ERR_PETBATTLE_NOT_HERE = 945, - ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 946, - ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 947, - ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 948, - ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 949, - ERR_PETBATTLE_NOT_WHILE_DEAD = 950, - ERR_PETBATTLE_NOT_WHILE_FLYING = 951, - ERR_PETBATTLE_TARGET_INVALID = 952, - ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 953, - ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 954, - ERR_PETBATTLE_NOT_A_TRAINER = 955, - ERR_PETBATTLE_DECLINED = 956, - ERR_PETBATTLE_IN_BATTLE = 957, - ERR_PETBATTLE_INVALID_LOADOUT = 958, - ERR_PETBATTLE_ALL_PETS_DEAD = 959, - ERR_PETBATTLE_NO_PETS_IN_SLOTS = 960, - ERR_PETBATTLE_NO_ACCOUNT_LOCK = 961, - ERR_PETBATTLE_WILD_PET_TAPPED = 962, - ERR_PETBATTLE_RESTRICTED_ACCOUNT = 963, - ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 964, - ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 965, - ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 966, - ERR_CANT_HAVE_MORE_PETS = 967, - ERR_PVP_MAP_NOT_FOUND = 968, - ERR_PVP_MAP_NOT_SET = 969, - ERR_PETBATTLE_QUEUE_QUEUED = 970, - ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 971, - ERR_PETBATTLE_QUEUE_JOIN_FAILED = 972, - ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 973, - ERR_PETBATTLE_QUEUE_REMOVED = 974, - ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 975, - ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 976, - ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 977, - ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 978, - ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 979, - ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 980, - ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 981, - ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 982, - ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 983, - ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 984, - ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 985, - ERR_PETBATTLE_QUEUE_SLOT_DEAD = 986, - ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 987, - ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 988, - ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 989, - ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 990, - ERR_HAS_RESTRICTION = 991, - ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 992, - ERR_ITEM_UPGRADE_NO_PATH = 993, - ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 994, - ERR_BONUS_ROLL_EMPTY = 995, - ERR_CHALLENGE_MODE_FULL = 996, - ERR_CHALLENGE_MODE_IN_PROGRESS = 997, - ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 998, - ERR_BATTLETAG_FRIEND_NOT_FOUND = 999, - ERR_BATTLETAG_FRIEND_NOT_VALID = 1000, - ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 1001, - ERR_BATTLETAG_FRIEND_THROTTLED = 1002, - ERR_BATTLETAG_FRIEND_SUCCESS = 1003, - ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 1004, - ERR_PETBATTLE_INTERNAL = 1005, - ERR_CANT_CAGE_PET_YET = 1006, - ERR_NO_LOOT_IN_CHALLENGE_MODE = 1007, - ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 1008, - ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 1009, - ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 1010, - ERR_RECRUIT_A_FRIEND_FAILED = 1011, - ERR_SET_LOOT_PERSONAL = 1012, - ERR_SET_LOOT_METHOD_FAILED_COMBAT = 1013, - ERR_REAGENT_BANK_FULL = 1014, - ERR_REAGENT_BANK_LOCKED = 1015, - ERR_GARRISON_BUILDING_EXISTS = 1016, - ERR_GARRISON_INVALID_PLOT = 1017, - ERR_GARRISON_INVALID_BUILDINGID = 1018, - ERR_GARRISON_INVALID_PLOT_BUILDING = 1019, - ERR_GARRISON_REQUIRES_BLUEPRINT = 1020, - ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1021, - ERR_GARRISON_NOT_ENOUGH_GOLD = 1022, - ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1023, - ERR_ALREADY_USING_LFG_LIST = 1024, - ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1025, - ERR_TOY_USE_LIMIT_REACHED = 1026, - ERR_TOY_ALREADY_KNOWN = 1027, - ERR_TRANSMOG_SET_ALREADY_KNOWN = 1028, - ERR_NOT_ENOUGH_CURRENCY = 1029, - ERR_SPEC_IS_DISABLED = 1030, - ERR_FEATURE_RESTRICTED_TRIAL = 1031, - ERR_CANT_BE_OBLITERATED = 1032, - ERR_CANT_BE_SCRAPPED = 1033, - ERR_CANT_BE_RECRAFTED = 1034, - ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1035, - ERR_MUST_EQUIP_ARTIFACT = 1036, - ERR_CANT_DO_THAT_RIGHT_NOW = 1037, - ERR_AFFECTING_COMBAT = 1038, - ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1039, - ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1040, - ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1041, - ERR_MOVIE_RECORDING_WARNING_PERF = 1042, - ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1043, - ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1044, - ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1045, - ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1046, - ERR_NO_CHALLENGE_MODE_REWARD = 1047, - ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1048, - ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1049, - ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1050, - ERR_TALENT_FAILED_REST_AREA = 1051, - ERR_CANNOT_ABANDON_LAST_PET = 1052, - ERR_TEST_CVAR_SET_SSS = 1053, - ERR_QUEST_TURN_IN_FAIL_REASON = 1054, - ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1055, - ERR_TALENT_GRANTED_BY_AURA = 1056, - ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1057, - ERR_GLYPH_TARGET_NOT_AVAILABLE = 1058, - ERR_PVP_WARMODE_TOGGLE_ON = 1059, - ERR_PVP_WARMODE_TOGGLE_OFF = 1060, - ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1061, - ERR_SPELL_FAILED_CANT_FLY_HERE = 1062, - ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1063, - ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1064, - ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1065, - ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1066, - ERR_VOICE_CHAT_SERVICE_LOST = 1067, - ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1068, - ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1069, - ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1070, - ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1071, - ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1072, - ERR_VOICE_CHAT_PLAYER_SILENCED = 1073, - ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1074, - ERR_VOICE_CHAT_DISABLED = 1075, - ERR_NO_PVP_REWARD = 1076, - ERR_CLAIMED_PVP_REWARD = 1077, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1078, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1079, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1080, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1081, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1082, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1083, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1084, - ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1085, - ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1086, - ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1087, - ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1088, - ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1089, - ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1090, - ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1091, - ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1092, - ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1093, - ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1094, - ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1095, - ERR_SOCKETING_REQUIRES_TINKER_GEM = 1096, - ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1097, - ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1098, - ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1099, - ERR_SOCKETING_REQUIRES_FRAGRANCE_GEM = 1100, - ERR_SOCKETING_FRAGRANCE_GEM_ONLY_IN_FRAGRANCESLOT = 1101, - ERR_SOCKETING_REQUIRES_SINGING_THUNDER_GEM = 1102, - ERR_SOCKETING_SINGINGTHUNDER_GEM_ONLY_IN_SINGINGTHUNDERSLOT = 1103, - ERR_SOCKETING_REQUIRES_SINGING_SEA_GEM = 1104, - ERR_SOCKETING_SINGINGSEA_GEM_ONLY_IN_SINGINGSEASLOT = 1105, - ERR_SOCKETING_REQUIRES_SINGING_WIND_GEM = 1106, - ERR_SOCKETING_SINGINGWIND_GEM_ONLY_IN_SINGINGWINDSLOT = 1107, - ERR_LEVEL_LINKING_RESULT_LINKED = 1108, - ERR_LEVEL_LINKING_RESULT_UNLINKED = 1109, - ERR_CLUB_FINDER_ERROR_POST_CLUB = 1110, - ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1111, - ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1112, - ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1113, - ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1114, - ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1115, - ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1116, - ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1117, - ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1118, - ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1119, - ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1120, - ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1121, - ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1122, - ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1123, - ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1124, - ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1125, - ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1126, - ERR_ITEM_INTERACTION_NO_CONVERSION_OUTPUT = 1127, - ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1128, - ERR_SOULBIND_INVALID_CONDUIT = 1129, - ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1130, - ERR_SOULBIND_INVALID_TALENT = 1131, - ERR_SOULBIND_DUPLICATE_CONDUIT = 1132, - ERR_ACTIVATE_SOULBIND_S = 1133, - ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1134, - ERR_CANT_USE_PROFANITY = 1135, - ERR_NOT_IN_PET_BATTLE = 1136, - ERR_NOT_IN_NPE = 1137, - ERR_NO_SPEC = 1138, - ERR_NO_DOMINATIONSHARD_OVERWRITE = 1139, - ERR_USE_WEEKLY_REWARDS_DISABLED = 1140, - ERR_CROSS_FACTION_GROUP_JOINED = 1141, - ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1142, - ERR_EQUIPABLESPELLS_SLOTS_FULL = 1143, - ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1144, - ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1145, - ERR_NO_SOULBOUND_ITEM_IN_ACCOUNT_BANK = 1146, - ERR_NO_REFUNDABLE_ITEM_IN_ACCOUNT_BANK = 1147, - ERR_CANT_DELETE_IN_ACCOUNT_BANK = 1148, - ERR_NO_IMMEDIATE_CONTAINER_IN_ACCOUNT_BANK = 1149, - ERR_NO_OPEN_IMMEDIATE_CONTAINER_IN_ACCOUNT_BANK = 1150, - ERR_CANT_TRADE_ACCOUNT_ITEM = 1151, - ERR_NO_ACCOUNT_INVENTORY_LOCK = 1152, - ERR_BANK_NOT_ACCESSIBLE = 1153, - ERR_TOO_MANY_ACCOUNT_BANK_TABS = 1154, - ERR_ACCOUNT_BANK_TAB_NOT_UNLOCKED = 1155, - ERR_ACCOUNT_MONEY_LOCKED = 1156, - ERR_BANK_TAB_INVALID_NAME = 1157, - ERR_BANK_TAB_INVALID_TEXT = 1158, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1159, - ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1160, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1161, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1162, - ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1163, - ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1164, - ERR_WOW_LABS_SET_WOW_LABS_AREA_ID_FAILED = 1165, - ERR_PLUNDERSTORM_CANNOT_QUEUE = 1166, - ERR_TARGET_IS_SELF_FOUND_CANNOT_TRADE = 1167, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_TRADE = 1168, - ERR_MAIL_RECEPIENT_IS_SELF_FOUND_CANNOT_RECEIVE_MAIL = 1169, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_SEND_MAIL = 1170, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_USE_AUCTION_HOUSE = 1171, - ERR_MAIL_TARGET_CANNOT_RECEIVE_MAIL = 1172, - ERR_REMIX_INVALID_TRANSFER_REQUEST = 1173, - ERR_CURRENCY_TRANSFER_INVALID_CHARACTER = 1174, - ERR_CURRENCY_TRANSFER_INVALID_CURRENCY = 1175, - ERR_CURRENCY_TRANSFER_INSUFFICIENT_CURRENCY = 1176, - ERR_CURRENCY_TRANSFER_MAX_QUANTITY = 1177, - ERR_CURRENCY_TRANSFER_NO_VALID_SOURCE = 1178, - ERR_CURRENCY_TRANSFER_CHARACTER_LOGGED_IN = 1179, - ERR_CURRENCY_TRANSFER_SERVER_ERROR = 1180, - ERR_CURRENCY_TRANSFER_UNMET_REQUIREMENTS = 1181, - ERR_CURRENCY_TRANSFER_TRANSACTION_IN_PROGRESS = 1182, + ERR_OUT_OF_RUNE_BLOOD = 372, + ERR_OUT_OF_RUNE_FROST = 373, + ERR_OUT_OF_RUNE_UNHOLY = 374, + ERR_OUT_OF_ALTERNATE_QUEST = 375, + ERR_OUT_OF_ALTERNATE_ENCOUNTER = 376, + ERR_OUT_OF_ALTERNATE_MOUNT = 377, + ERR_OUT_OF_BALANCE = 378, + ERR_OUT_OF_HAPPINESS = 379, + ERR_OUT_OF_SHADOW_ORBS = 380, + ERR_OUT_OF_RUNE_CHROMATIC = 381, + ERR_LOOT_GONE = 382, + ERR_MOUNT_FORCEDDISMOUNT = 383, + ERR_AUTOFOLLOW_TOO_FAR = 384, + ERR_UNIT_NOT_FOUND = 385, + ERR_INVALID_FOLLOW_TARGET = 386, + ERR_INVALID_FOLLOW_PVP_COMBAT = 387, + ERR_INVALID_FOLLOW_TARGET_PVP_COMBAT = 388, + ERR_INVALID_INSPECT_TARGET = 389, + ERR_GUILDEMBLEM_SUCCESS = 390, + ERR_GUILDEMBLEM_INVALID_TABARD_COLORS = 391, + ERR_GUILDEMBLEM_NOGUILD = 392, + ERR_GUILDEMBLEM_NOTGUILDMASTER = 393, + ERR_GUILDEMBLEM_NOTENOUGHMONEY = 394, + ERR_GUILDEMBLEM_INVALIDVENDOR = 395, + ERR_EMBLEMERROR_NOTABARDGEOSET = 396, + ERR_SPELL_OUT_OF_RANGE = 397, + ERR_COMMAND_NEEDS_TARGET = 398, + ERR_NOAMMO_S = 399, + ERR_TOOBUSYTOFOLLOW = 400, + ERR_DUEL_REQUESTED = 401, + ERR_DUEL_CANCELLED = 402, + ERR_DEATHBINDALREADYBOUND = 403, + ERR_DEATHBIND_SUCCESS_S = 404, + ERR_NOEMOTEWHILERUNNING = 405, + ERR_ZONE_EXPLORED = 406, + ERR_ZONE_EXPLORED_XP = 407, + ERR_INVALID_ITEM_TARGET = 408, + ERR_INVALID_QUEST_TARGET = 409, + ERR_IGNORING_YOU_S = 410, + ERR_FISH_NOT_HOOKED = 411, + ERR_FISH_ESCAPED = 412, + ERR_SPELL_FAILED_NOTUNSHEATHED = 413, + ERR_PETITION_OFFERED_S = 414, + ERR_PETITION_SIGNED = 415, + ERR_PETITION_SIGNED_S = 416, + ERR_PETITION_DECLINED_S = 417, + ERR_PETITION_ALREADY_SIGNED = 418, + ERR_PETITION_RESTRICTED_ACCOUNT_TRIAL = 419, + ERR_PETITION_ALREADY_SIGNED_OTHER = 420, + ERR_PETITION_IN_GUILD = 421, + ERR_PETITION_CREATOR = 422, + ERR_PETITION_NOT_ENOUGH_SIGNATURES = 423, + ERR_PETITION_NOT_SAME_SERVER = 424, + ERR_PETITION_FULL = 425, + ERR_PETITION_ALREADY_SIGNED_BY_S = 426, + ERR_GUILD_NAME_INVALID = 427, + ERR_SPELL_UNLEARNED_S = 428, + ERR_PET_SPELL_ROOTED = 429, + ERR_PET_SPELL_AFFECTING_COMBAT = 430, + ERR_PET_SPELL_OUT_OF_RANGE = 431, + ERR_PET_SPELL_NOT_BEHIND = 432, + ERR_PET_SPELL_TARGETS_DEAD = 433, + ERR_PET_SPELL_DEAD = 434, + ERR_PET_SPELL_NOPATH = 435, + ERR_ITEM_CANT_BE_DESTROYED = 436, + ERR_TICKET_ALREADY_EXISTS = 437, + ERR_TICKET_CREATE_ERROR = 438, + ERR_TICKET_UPDATE_ERROR = 439, + ERR_TICKET_DB_ERROR = 440, + ERR_TICKET_NO_TEXT = 441, + ERR_TICKET_TEXT_TOO_LONG = 442, + ERR_OBJECT_IS_BUSY = 443, + ERR_EXHAUSTION_WELLRESTED = 444, + ERR_EXHAUSTION_RESTED = 445, + ERR_EXHAUSTION_NORMAL = 446, + ERR_EXHAUSTION_TIRED = 447, + ERR_EXHAUSTION_EXHAUSTED = 448, + ERR_NO_ITEMS_WHILE_SHAPESHIFTED = 449, + ERR_CANT_INTERACT_SHAPESHIFTED = 450, + ERR_REALM_NOT_FOUND = 451, + ERR_MAIL_QUEST_ITEM = 452, + ERR_MAIL_BOUND_ITEM = 453, + ERR_MAIL_CONJURED_ITEM = 454, + ERR_MAIL_BAG = 455, + ERR_MAIL_TO_SELF = 456, + ERR_MAIL_TARGET_NOT_FOUND = 457, + ERR_MAIL_DATABASE_ERROR = 458, + ERR_MAIL_DELETE_ITEM_ERROR = 459, + ERR_MAIL_WRAPPED_COD = 460, + ERR_MAIL_CANT_SEND_REALM = 461, + ERR_MAIL_TEMP_RETURN_OUTAGE = 462, + ERR_MAIL_RECEPIENT_CANT_RECEIVE_MAIL = 463, + ERR_MAIL_SENT = 464, + ERR_MAIL_TARGET_IS_TRIAL = 465, + ERR_NOT_HAPPY_ENOUGH = 466, + ERR_USE_CANT_IMMUNE = 467, + ERR_CANT_BE_DISENCHANTED = 468, + ERR_CANT_USE_DISARMED = 469, + ERR_AUCTION_DATABASE_ERROR = 470, + ERR_AUCTION_HIGHER_BID = 471, + ERR_AUCTION_ALREADY_BID = 472, + ERR_AUCTION_OUTBID_S = 473, + ERR_AUCTION_WON_S = 474, + ERR_AUCTION_REMOVED_S = 475, + ERR_AUCTION_BID_PLACED = 476, + ERR_LOGOUT_FAILED = 477, + ERR_QUEST_PUSH_SUCCESS_S = 478, + ERR_QUEST_PUSH_INVALID_S = 479, + ERR_QUEST_PUSH_INVALID_TO_RECIPIENT_S = 480, + ERR_QUEST_PUSH_ACCEPTED_S = 481, + ERR_QUEST_PUSH_DECLINED_S = 482, + ERR_QUEST_PUSH_BUSY_S = 483, + ERR_QUEST_PUSH_DEAD_S = 484, + ERR_QUEST_PUSH_DEAD_TO_RECIPIENT_S = 485, + ERR_QUEST_PUSH_LOG_FULL_S = 486, + ERR_QUEST_PUSH_LOG_FULL_TO_RECIPIENT_S = 487, + ERR_QUEST_PUSH_ONQUEST_S = 488, + ERR_QUEST_PUSH_ONQUEST_TO_RECIPIENT_S = 489, + ERR_QUEST_PUSH_ALREADY_DONE_S = 490, + ERR_QUEST_PUSH_ALREADY_DONE_TO_RECIPIENT_S = 491, + ERR_QUEST_PUSH_NOT_DAILY_S = 492, + ERR_QUEST_PUSH_TIMER_EXPIRED_S = 493, + ERR_QUEST_PUSH_NOT_IN_PARTY_S = 494, + ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S = 495, + ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_TO_RECIPIENT_S = 496, + ERR_QUEST_PUSH_NOT_ALLOWED_S = 497, + ERR_QUEST_PUSH_PREREQUISITE_S = 498, + ERR_QUEST_PUSH_PREREQUISITE_TO_RECIPIENT_S = 499, + ERR_QUEST_PUSH_LOW_LEVEL_S = 500, + ERR_QUEST_PUSH_LOW_LEVEL_TO_RECIPIENT_S = 501, + ERR_QUEST_PUSH_HIGH_LEVEL_S = 502, + ERR_QUEST_PUSH_HIGH_LEVEL_TO_RECIPIENT_S = 503, + ERR_QUEST_PUSH_CLASS_S = 504, + ERR_QUEST_PUSH_CLASS_TO_RECIPIENT_S = 505, + ERR_QUEST_PUSH_RACE_S = 506, + ERR_QUEST_PUSH_RACE_TO_RECIPIENT_S = 507, + ERR_QUEST_PUSH_LOW_FACTION_S = 508, + ERR_QUEST_PUSH_LOW_FACTION_TO_RECIPIENT_S = 509, + ERR_QUEST_PUSH_HIGH_FACTION_S = 510, + ERR_QUEST_PUSH_HIGH_FACTION_TO_RECIPIENT_S = 511, + ERR_QUEST_PUSH_EXPANSION_S = 512, + ERR_QUEST_PUSH_EXPANSION_TO_RECIPIENT_S = 513, + ERR_QUEST_PUSH_NOT_GARRISON_OWNER_S = 514, + ERR_QUEST_PUSH_NOT_GARRISON_OWNER_TO_RECIPIENT_S = 515, + ERR_QUEST_PUSH_WRONG_COVENANT_S = 516, + ERR_QUEST_PUSH_WRONG_COVENANT_TO_RECIPIENT_S = 517, + ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_S = 518, + ERR_QUEST_PUSH_NEW_PLAYER_EXPERIENCE_TO_RECIPIENT_S = 519, + ERR_QUEST_PUSH_WRONG_FACTION_S = 520, + ERR_QUEST_PUSH_WRONG_FACTION_TO_RECIPIENT_S = 521, + ERR_QUEST_PUSH_CROSS_FACTION_RESTRICTED_S = 522, + ERR_RAID_GROUP_LOWLEVEL = 523, + ERR_RAID_GROUP_ONLY = 524, + ERR_RAID_GROUP_FULL = 525, + ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 526, + ERR_CORPSE_IS_NOT_IN_INSTANCE = 527, + ERR_PVP_KILL_HONORABLE = 528, + ERR_PVP_KILL_DISHONORABLE = 529, + ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 530, + ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 531, + ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 532, + ERR_AUTOLOOT_MONEY_S = 533, + ERR_GENERIC_STUNNED = 534, + ERR_GENERIC_THROTTLE = 535, + ERR_CLUB_FINDER_SEARCHING_TOO_FAST = 536, + ERR_TARGET_STUNNED = 537, + ERR_MUST_REPAIR_DURABILITY = 538, + ERR_RAID_YOU_JOINED = 539, + ERR_RAID_YOU_LEFT = 540, + ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 541, + ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 542, + ERR_RAID_MEMBER_ADDED_S = 543, + ERR_RAID_MEMBER_REMOVED_S = 544, + ERR_INSTANCE_GROUP_ADDED_S = 545, + ERR_INSTANCE_GROUP_REMOVED_S = 546, + ERR_CLICK_ON_ITEM_TO_FEED = 547, + ERR_TOO_MANY_CHAT_CHANNELS = 548, + ERR_LOOT_ROLL_PENDING = 549, + ERR_LOOT_PLAYER_NOT_FOUND = 550, + ERR_NOT_IN_RAID = 551, + ERR_LOGGING_OUT = 552, + ERR_TARGET_LOGGING_OUT = 553, + ERR_NOT_WHILE_MOUNTED = 554, + ERR_NOT_WHILE_SHAPESHIFTED = 555, + ERR_NOT_IN_COMBAT = 556, + ERR_NOT_WHILE_DISARMED = 557, + ERR_PET_BROKEN = 558, + ERR_TALENT_WIPE_ERROR = 559, + ERR_SPEC_WIPE_ERROR = 560, + ERR_GLYPH_WIPE_ERROR = 561, + ERR_PET_SPEC_WIPE_ERROR = 562, + ERR_FEIGN_DEATH_RESISTED = 563, + ERR_MEETING_STONE_IN_QUEUE_S = 564, + ERR_MEETING_STONE_LEFT_QUEUE_S = 565, + ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 566, + ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 567, + ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 568, + ERR_MEETING_STONE_SUCCESS = 569, + ERR_MEETING_STONE_IN_PROGRESS = 570, + ERR_MEETING_STONE_MEMBER_ADDED_S = 571, + ERR_MEETING_STONE_GROUP_FULL = 572, + ERR_MEETING_STONE_NOT_LEADER = 573, + ERR_MEETING_STONE_INVALID_LEVEL = 574, + ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 575, + ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 576, + ERR_MEETING_STONE_MUST_BE_LEADER = 577, + ERR_MEETING_STONE_NO_RAID_GROUP = 578, + ERR_MEETING_STONE_NEED_PARTY = 579, + ERR_MEETING_STONE_NOT_FOUND = 580, + ERR_MEETING_STONE_TARGET_IN_VEHICLE = 581, + ERR_GUILDEMBLEM_SAME = 582, + ERR_EQUIP_TRADE_ITEM = 583, + ERR_PVP_TOGGLE_ON = 584, + ERR_PVP_TOGGLE_OFF = 585, + ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 586, + ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 587, + ERR_GROUP_JOIN_BATTLEGROUND_S = 588, + ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 589, + ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 590, + ERR_SOLO_JOIN_BATTLEGROUND_S = 591, + ERR_JOIN_SINGLE_SCENARIO_S = 592, + ERR_BATTLEGROUND_TOO_MANY_QUEUES = 593, + ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 594, + ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 595, + ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 596, + ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 597, + ERR_ALREADY_IN_ARENA_TEAM_S = 598, + ERR_INVALID_PROMOTION_CODE = 599, + ERR_BG_PLAYER_JOINED_SS = 600, + ERR_BG_PLAYER_LEFT_S = 601, + ERR_RESTRICTED_ACCOUNT = 602, + ERR_RESTRICTED_ACCOUNT_TRIAL = 603, + ERR_NOT_ENOUGH_PURCHASED_GAME_TIME = 604, + ERR_PLAY_TIME_EXCEEDED = 605, + ERR_APPROACHING_PARTIAL_PLAY_TIME = 606, + ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 607, + ERR_APPROACHING_NO_PLAY_TIME = 608, + ERR_APPROACHING_NO_PLAY_TIME_2 = 609, + ERR_UNHEALTHY_TIME = 610, + ERR_CHAT_RESTRICTED_TRIAL = 611, + ERR_CHAT_THROTTLED = 612, + ERR_MAIL_REACHED_CAP = 613, + ERR_INVALID_RAID_TARGET = 614, + ERR_RAID_LEADER_READY_CHECK_START_S = 615, + ERR_READY_CHECK_IN_PROGRESS = 616, + ERR_READY_CHECK_THROTTLED = 617, + ERR_DUNGEON_DIFFICULTY_FAILED = 618, + ERR_DUNGEON_DIFFICULTY_CHANGED_S = 619, + ERR_TRADE_WRONG_REALM = 620, + ERR_TRADE_NOT_ON_TAPLIST = 621, + ERR_CHAT_PLAYER_AMBIGUOUS_S = 622, + ERR_LOOT_CANT_LOOT_THAT_NOW = 623, + ERR_LOOT_MASTER_INV_FULL = 624, + ERR_LOOT_MASTER_UNIQUE_ITEM = 625, + ERR_LOOT_MASTER_OTHER = 626, + ERR_FILTERING_YOU_S = 627, + ERR_USE_PREVENTED_BY_MECHANIC_S = 628, + ERR_ITEM_UNIQUE_EQUIPPABLE = 629, + ERR_LFG_LEADER_IS_LFM_S = 630, + ERR_LFG_PENDING = 631, + ERR_CANT_SPEAK_LANGAGE = 632, + ERR_VENDOR_MISSING_TURNINS = 633, + ERR_BATTLEGROUND_NOT_IN_TEAM = 634, + ERR_NOT_IN_BATTLEGROUND = 635, + ERR_NOT_ENOUGH_HONOR_POINTS = 636, + ERR_NOT_ENOUGH_ARENA_POINTS = 637, + ERR_SOCKETING_REQUIRES_META_GEM = 638, + ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 639, + ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 640, + ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 641, + ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 642, + ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 643, + ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 644, + ERR_ITEM_MAX_COUNT_SOCKETED = 645, + ERR_SYSTEM_DISABLED = 646, + ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 647, + ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 648, + ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 649, + ERR_USER_SQUELCHED = 650, + ERR_ACCOUNT_SILENCED = 651, + ERR_PARTY_MEMBER_SILENCED = 652, + ERR_PARTY_MEMBER_SILENCED_LFG_DELIST = 653, + ERR_TOO_MUCH_GOLD = 654, + ERR_NOT_BARBER_SITTING = 655, + ERR_QUEST_FAILED_CAIS = 656, + ERR_INVITE_RESTRICTED_TRIAL = 657, + ERR_VOICE_IGNORE_FULL = 658, + ERR_VOICE_IGNORE_SELF = 659, + ERR_VOICE_IGNORE_NOT_FOUND = 660, + ERR_VOICE_IGNORE_ALREADY_S = 661, + ERR_VOICE_IGNORE_ADDED_S = 662, + ERR_VOICE_IGNORE_REMOVED_S = 663, + ERR_VOICE_IGNORE_AMBIGUOUS = 664, + ERR_VOICE_IGNORE_DELETED = 665, + ERR_UNKNOWN_MACRO_OPTION_S = 666, + ERR_NOT_DURING_ARENA_MATCH = 667, + ERR_NOT_IN_RATED_BATTLEGROUND = 668, + ERR_PLAYER_SILENCED = 669, + ERR_PLAYER_UNSILENCED = 670, + ERR_COMSAT_DISCONNECT = 671, + ERR_COMSAT_RECONNECT_ATTEMPT = 672, + ERR_COMSAT_CONNECT_FAIL = 673, + ERR_MAIL_INVALID_ATTACHMENT_SLOT = 674, + ERR_MAIL_TOO_MANY_ATTACHMENTS = 675, + ERR_MAIL_INVALID_ATTACHMENT = 676, + ERR_MAIL_ATTACHMENT_EXPIRED = 677, + ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 678, + ERR_PROFANE_CHAT_NAME = 679, + ERR_PLAYER_SILENCED_ECHO = 680, + ERR_PLAYER_UNSILENCED_ECHO = 681, + ERR_LOOT_CANT_LOOT_THAT = 682, + ERR_ARENA_EXPIRED_CAIS = 683, + ERR_GROUP_ACTION_THROTTLED = 684, + ERR_ALREADY_PICKPOCKETED = 685, + ERR_NAME_INVALID = 686, + ERR_NAME_NO_NAME = 687, + ERR_NAME_TOO_SHORT = 688, + ERR_NAME_TOO_LONG = 689, + ERR_NAME_MIXED_LANGUAGES = 690, + ERR_NAME_PROFANE = 691, + ERR_NAME_RESERVED = 692, + ERR_NAME_THREE_CONSECUTIVE = 693, + ERR_NAME_INVALID_SPACE = 694, + ERR_NAME_CONSECUTIVE_SPACES = 695, + ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 696, + ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 697, + ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 698, + ERR_RECRUIT_A_FRIEND_NOT_LINKED = 699, + ERR_RECRUIT_A_FRIEND_NOT_NOW = 700, + ERR_RECRUIT_A_FRIEND_SUMMON_LEVEL_MAX = 701, + ERR_RECRUIT_A_FRIEND_SUMMON_COOLDOWN = 702, + ERR_RECRUIT_A_FRIEND_SUMMON_OFFLINE = 703, + ERR_RECRUIT_A_FRIEND_INSUF_EXPAN_LVL = 704, + ERR_RECRUIT_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 705, + ERR_NOT_SAME_ACCOUNT = 706, + ERR_BAD_ON_USE_ENCHANT = 707, + ERR_TRADE_SELF = 708, + ERR_TOO_MANY_SOCKETS = 709, + ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 710, + ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 711, + ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 712, + ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 713, + ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 714, + ERR_ITEM_INVENTORY_FULL_SATCHEL = 715, + ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 716, + ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 717, + ERR_PURCHASE_LEVEL_TOO_LOW = 718, + ERR_GROUP_SWAP_FAILED = 719, + ERR_INVITE_IN_COMBAT = 720, + ERR_INVALID_GLYPH_SLOT = 721, + ERR_GENERIC_NO_VALID_TARGETS = 722, + ERR_CALENDAR_EVENT_ALERT_S = 723, + ERR_PET_LEARN_SPELL_S = 724, + ERR_PET_LEARN_ABILITY_S = 725, + ERR_PET_SPELL_UNLEARNED_S = 726, + ERR_INVITE_UNKNOWN_REALM = 727, + ERR_INVITE_NO_PARTY_SERVER = 728, + ERR_INVITE_PARTY_BUSY = 729, + ERR_INVITE_PARTY_BUSY_PENDING_REQUEST = 730, + ERR_INVITE_PARTY_BUSY_PENDING_SUGGEST = 731, + ERR_PARTY_TARGET_AMBIGUOUS = 732, + ERR_PARTY_LFG_INVITE_RAID_LOCKED = 733, + ERR_PARTY_LFG_BOOT_LIMIT = 734, + ERR_PARTY_LFG_BOOT_COOLDOWN_S = 735, + ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 736, + ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 737, + ERR_PARTY_LFG_BOOT_IN_PROGRESS = 738, + ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 739, + ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 740, + ERR_PARTY_LFG_BOOT_VOTE_FAILED = 741, + ERR_PARTY_LFG_BOOT_DISALLOWED_BY_MAP = 742, + ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 743, + ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 744, + ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 745, + ERR_PARTY_PRIVATE_GROUP_ONLY = 746, + ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 747, + ERR_PARTY_TIME_RUNNING_SEASON_ID_MUST_MATCH = 748, + ERR_RAID_DISALLOWED_BY_LEVEL = 749, + ERR_RAID_DISALLOWED_BY_CROSS_REALM = 750, + ERR_PARTY_ROLE_NOT_AVAILABLE = 751, + ERR_JOIN_LFG_OBJECT_FAILED = 752, + ERR_LFG_REMOVED_LEVELUP = 753, + ERR_LFG_REMOVED_XP_TOGGLE = 754, + ERR_LFG_REMOVED_FACTION_CHANGE = 755, + ERR_BATTLEGROUND_INFO_THROTTLED = 756, + ERR_BATTLEGROUND_ALREADY_IN = 757, + ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 758, + ERR_ARENA_TEAM_PERMISSIONS = 759, + ERR_NOT_WHILE_FALLING = 760, + ERR_NOT_WHILE_MOVING = 761, + ERR_NOT_WHILE_FATIGUED = 762, + ERR_MAX_SOCKETS = 763, + ERR_MULTI_CAST_ACTION_TOTEM_S = 764, + ERR_BATTLEGROUND_JOIN_LEVELUP = 765, + ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 766, + ERR_BATTLEGROUND_JOIN_XP_GAIN = 767, + ERR_BATTLEGROUND_JOIN_MERCENARY = 768, + ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 769, + ERR_BATTLEGROUND_JOIN_RATED_TOO_MANY_HEALERS = 770, + ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 771, + ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 772, + ERR_RAID_DIFFICULTY_FAILED = 773, + ERR_RAID_DIFFICULTY_CHANGED_S = 774, + ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 775, + ERR_RAID_LOCKOUT_CHANGED_S = 776, + ERR_RAID_CONVERTED_TO_PARTY = 777, + ERR_PARTY_CONVERTED_TO_RAID = 778, + ERR_PLAYER_DIFFICULTY_CHANGED_S = 779, + ERR_GMRESPONSE_DB_ERROR = 780, + ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 781, + ERR_ARENA_JOIN_RANGE_INDEX = 782, + ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 783, + ERR_BATTLEGROUND_JOIN_FAILED = 784, + ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 785, + ERR_BATTLEGROUND_JOIN_RESPEC = 786, + ERR_BATTLEGROUND_INVITATION_DECLINED = 787, + ERR_BATTLEGROUND_INVITATION_DECLINED_BY = 788, + ERR_BATTLEGROUND_JOIN_TIMED_OUT = 789, + ERR_BATTLEGROUND_DUPE_QUEUE = 790, + ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 791, + ERR_IN_BATTLEGROUND_RESPEC = 792, + ERR_MAIL_LIMITED_DURATION_ITEM = 793, + ERR_YELL_RESTRICTED_TRIAL = 794, + ERR_CHAT_RAID_RESTRICTED_TRIAL = 795, + ERR_LFG_ROLE_CHECK_FAILED = 796, + ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 797, + ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 798, + ERR_LFG_READY_CHECK_FAILED = 799, + ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 800, + ERR_LFG_GROUP_FULL = 801, + ERR_LFG_NO_LFG_OBJECT = 802, + ERR_LFG_NO_SLOTS_PLAYER = 803, + ERR_LFG_NO_SLOTS_PARTY = 804, + ERR_LFG_NO_SPEC = 805, + ERR_LFG_MISMATCHED_SLOTS = 806, + ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 807, + ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 808, + ERR_LFG_MEMBERS_NOT_PRESENT = 809, + ERR_LFG_GET_INFO_TIMEOUT = 810, + ERR_LFG_INVALID_SLOT = 811, + ERR_LFG_DESERTER_PLAYER = 812, + ERR_LFG_DESERTER_PARTY = 813, + ERR_LFG_DEAD = 814, + ERR_LFG_RANDOM_COOLDOWN_PLAYER = 815, + ERR_LFG_RANDOM_COOLDOWN_PARTY = 816, + ERR_LFG_TOO_MANY_MEMBERS = 817, + ERR_LFG_TOO_FEW_MEMBERS = 818, + ERR_LFG_PROPOSAL_FAILED = 819, + ERR_LFG_PROPOSAL_DECLINED_SELF = 820, + ERR_LFG_PROPOSAL_DECLINED_PARTY = 821, + ERR_LFG_NO_SLOTS_SELECTED = 822, + ERR_LFG_NO_ROLES_SELECTED = 823, + ERR_LFG_ROLE_CHECK_INITIATED = 824, + ERR_LFG_READY_CHECK_INITIATED = 825, + ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 826, + ERR_LFG_PLAYER_DECLINED_READY_CHECK = 827, + ERR_LFG_LOREWALKING = 828, + ERR_LFG_JOINED_QUEUE = 829, + ERR_LFG_JOINED_FLEX_QUEUE = 830, + ERR_LFG_JOINED_RF_QUEUE = 831, + ERR_LFG_JOINED_SCENARIO_QUEUE = 832, + ERR_LFG_JOINED_WORLD_PVP_QUEUE = 833, + ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 834, + ERR_LFG_JOINED_LIST = 835, + ERR_QUEUED_PLUNDERSTORM = 836, + ERR_LFG_LEFT_QUEUE = 837, + ERR_LFG_LEFT_LIST = 838, + ERR_LFG_ROLE_CHECK_ABORTED = 839, + ERR_LFG_READY_CHECK_ABORTED = 840, + ERR_LFG_CANT_USE_BATTLEGROUND = 841, + ERR_LFG_CANT_USE_DUNGEONS = 842, + ERR_LFG_REASON_TOO_MANY_LFG = 843, + ERR_LFG_FARM_LIMIT = 844, + ERR_LFG_NO_CROSS_FACTION_PARTIES = 845, + ERR_INVALID_TELEPORT_LOCATION = 846, + ERR_TOO_FAR_TO_INTERACT = 847, + ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 848, + ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 849, + ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 850, + ERR_DIFFICULTY_CHANGE_WORLDSTATE = 851, + ERR_DIFFICULTY_CHANGE_ENCOUNTER = 852, + ERR_DIFFICULTY_CHANGE_COMBAT = 853, + ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 854, + ERR_DIFFICULTY_CHANGE_PLAYER_ON_VEHICLE = 855, + ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 856, + ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 857, + ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 858, + ERR_ARENA_TEAM_PARTY_SIZE = 859, + ERR_SOLO_SHUFFLE_WARGAME_GROUP_SIZE = 860, + ERR_SOLO_SHUFFLE_WARGAME_GROUP_COMP = 861, + ERR_SOLO_RBG_WARGAME_GROUP_SIZE = 862, + ERR_SOLO_RBG_WARGAME_GROUP_COMP = 863, + ERR_SOLO_MIN_ITEM_LEVEL = 864, + ERR_PVP_PLAYER_ABANDONED = 865, + ERR_BATTLEGROUND_JOIN_GROUP_QUEUE_WITHOUT_HEALER = 866, + ERR_QUEST_FORCE_REMOVED_S = 867, + ERR_ATTACK_NO_ACTIONS = 868, + ERR_IN_RANDOM_BG = 869, + ERR_IN_NON_RANDOM_BG = 870, + ERR_BN_FRIEND_SELF = 871, + ERR_BN_FRIEND_ALREADY = 872, + ERR_BN_FRIEND_BLOCKED = 873, + ERR_BN_FRIEND_LIST_FULL = 874, + ERR_BN_FRIEND_REQUEST_SENT = 875, + ERR_BN_BROADCAST_THROTTLE = 876, + ERR_BG_DEVELOPER_ONLY = 877, + ERR_CURRENCY_SPELL_SLOT_MISMATCH = 878, + ERR_CURRENCY_NOT_TRADABLE = 879, + ERR_REQUIRES_EXPANSION_S = 880, + ERR_QUEST_FAILED_SPELL = 881, + ERR_TALENT_FAILED_UNSPENT_TALENT_POINTS = 882, + ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 883, + ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 884, + ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 885, + ERR_TALENT_FAILED_UNKNOWN = 886, + ERR_TALENT_FAILED_IN_COMBAT = 887, + ERR_TALENT_FAILED_IN_PVP_MATCH = 888, + ERR_TALENT_FAILED_IN_MYTHIC_PLUS = 889, + ERR_WARGAME_REQUEST_FAILURE = 890, + ERR_RANK_REQUIRES_AUTHENTICATOR = 891, + ERR_GUILD_BANK_VOUCHER_FAILED = 892, + ERR_WARGAME_REQUEST_SENT = 893, + ERR_REQUIRES_ACHIEVEMENT_I = 894, + ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 895, + ERR_CANT_BUY_QUANTITY = 896, + ERR_ITEM_IS_BATTLE_PAY_LOCKED = 897, + ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 898, + ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 899, + ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 900, + ERR_INSUFF_TRACKED_CURRENCY_IS = 901, + ERR_NOT_ON_TOURNAMENT_REALM = 902, + ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 903, + ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 904, + ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 905, + ERR_CANT_DO_THAT_IN_A_GROUP = 906, + ERR_GUILD_LEADER_REPLACED = 907, + ERR_TRANSMOGRIFY_CANT_EQUIP = 908, + ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 909, + ERR_TRANSMOGRIFY_NOT_SOULBOUND = 910, + ERR_TRANSMOGRIFY_INVALID_SOURCE = 911, + ERR_TRANSMOGRIFY_INVALID_DESTINATION = 912, + ERR_TRANSMOGRIFY_MISMATCH = 913, + ERR_TRANSMOGRIFY_LEGENDARY = 914, + ERR_TRANSMOGRIFY_SAME_ITEM = 915, + ERR_TRANSMOGRIFY_SAME_APPEARANCE = 916, + ERR_TRANSMOGRIFY_NOT_EQUIPPED = 917, + ERR_VOID_DEPOSIT_FULL = 918, + ERR_VOID_WITHDRAW_FULL = 919, + ERR_VOID_STORAGE_WRAPPED = 920, + ERR_VOID_STORAGE_STACKABLE = 921, + ERR_VOID_STORAGE_UNBOUND = 922, + ERR_VOID_STORAGE_REPAIR = 923, + ERR_VOID_STORAGE_CHARGES = 924, + ERR_VOID_STORAGE_QUEST = 925, + ERR_VOID_STORAGE_CONJURED = 926, + ERR_VOID_STORAGE_MAIL = 927, + ERR_VOID_STORAGE_BAG = 928, + ERR_VOID_TRANSFER_STORAGE_FULL = 929, + ERR_VOID_TRANSFER_INV_FULL = 930, + ERR_VOID_TRANSFER_INTERNAL_ERROR = 931, + ERR_VOID_TRANSFER_ITEM_INVALID = 932, + ERR_DIFFICULTY_DISABLED_IN_LFG = 933, + ERR_VOID_STORAGE_UNIQUE = 934, + ERR_VOID_STORAGE_LOOT = 935, + ERR_VOID_STORAGE_HOLIDAY = 936, + ERR_VOID_STORAGE_DURATION = 937, + ERR_VOID_STORAGE_LOAD_FAILED = 938, + ERR_VOID_STORAGE_INVALID_ITEM = 939, + ERR_VOID_STORAGE_ACCOUNT_ITEM = 940, + ERR_PARENTAL_CONTROLS_CHAT_MUTED = 941, + ERR_SOR_START_EXPERIENCE_INCOMPLETE = 942, + ERR_SOR_INVALID_EMAIL = 943, + ERR_SOR_INVALID_COMMENT = 944, + ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 945, + ERR_CHALLENGE_MODE_RESET_KEYSTONE = 946, + ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 947, + ERR_REPORT_SUBMITTED_SUCCESSFULLY = 948, + ERR_REPORT_SUBMISSION_FAILED = 949, + ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 950, + ERR_BUG_SUBMITTED_SUCCESSFULLY = 951, + ERR_CHALLENGE_MODE_ENABLED = 952, + ERR_CHALLENGE_MODE_DISABLED = 953, + ERR_PETBATTLE_CREATE_FAILED = 954, + ERR_PETBATTLE_NOT_HERE = 955, + ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 956, + ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 957, + ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 958, + ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 959, + ERR_PETBATTLE_NOT_WHILE_DEAD = 960, + ERR_PETBATTLE_NOT_WHILE_FLYING = 961, + ERR_PETBATTLE_TARGET_INVALID = 962, + ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 963, + ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 964, + ERR_PETBATTLE_NOT_A_TRAINER = 965, + ERR_PETBATTLE_DECLINED = 966, + ERR_PETBATTLE_IN_BATTLE = 967, + ERR_PETBATTLE_INVALID_LOADOUT = 968, + ERR_PETBATTLE_ALL_PETS_DEAD = 969, + ERR_PETBATTLE_NO_PETS_IN_SLOTS = 970, + ERR_PETBATTLE_NO_ACCOUNT_LOCK = 971, + ERR_PETBATTLE_WILD_PET_TAPPED = 972, + ERR_PETBATTLE_RESTRICTED_ACCOUNT = 973, + ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 974, + ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 975, + ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 976, + ERR_CANT_HAVE_MORE_PETS = 977, + ERR_PVP_MAP_NOT_FOUND = 978, + ERR_PVP_MAP_NOT_SET = 979, + ERR_PETBATTLE_QUEUE_QUEUED = 980, + ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 981, + ERR_PETBATTLE_QUEUE_JOIN_FAILED = 982, + ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 983, + ERR_PETBATTLE_QUEUE_REMOVED = 984, + ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 985, + ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 986, + ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 987, + ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 988, + ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 989, + ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 990, + ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 991, + ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 992, + ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 993, + ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 994, + ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 995, + ERR_PETBATTLE_QUEUE_SLOT_DEAD = 996, + ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 997, + ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 998, + ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 999, + ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 1000, + ERR_HAS_RESTRICTION = 1001, + ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 1002, + ERR_ITEM_UPGRADE_NO_PATH = 1003, + ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 1004, + ERR_BONUS_ROLL_EMPTY = 1005, + ERR_CHALLENGE_MODE_FULL = 1006, + ERR_CHALLENGE_MODE_IN_PROGRESS = 1007, + ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 1008, + ERR_BATTLETAG_FRIEND_NOT_FOUND = 1009, + ERR_BATTLETAG_FRIEND_NOT_VALID = 1010, + ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 1011, + ERR_BATTLETAG_FRIEND_THROTTLED = 1012, + ERR_BATTLETAG_FRIEND_SUCCESS = 1013, + ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 1014, + ERR_PETBATTLE_INTERNAL = 1015, + ERR_CANT_CAGE_PET_YET = 1016, + ERR_NO_LOOT_IN_CHALLENGE_MODE = 1017, + ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 1018, + ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 1019, + ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 1020, + ERR_RECRUIT_A_FRIEND_FAILED = 1021, + ERR_SET_LOOT_PERSONAL = 1022, + ERR_SET_LOOT_METHOD_FAILED_COMBAT = 1023, + ERR_REAGENT_BANK_FULL = 1024, + ERR_REAGENT_BANK_LOCKED = 1025, + ERR_GARRISON_BUILDING_EXISTS = 1026, + ERR_GARRISON_INVALID_PLOT = 1027, + ERR_GARRISON_INVALID_BUILDINGID = 1028, + ERR_GARRISON_INVALID_PLOT_BUILDING = 1029, + ERR_GARRISON_REQUIRES_BLUEPRINT = 1030, + ERR_GARRISON_NOT_ENOUGH_CURRENCY = 1031, + ERR_GARRISON_NOT_ENOUGH_GOLD = 1032, + ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 1033, + ERR_ALREADY_USING_LFG_LIST = 1034, + ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 1035, + ERR_TOY_USE_LIMIT_REACHED = 1036, + ERR_TOY_ALREADY_KNOWN = 1037, + ERR_TRANSMOG_SET_ALREADY_KNOWN = 1038, + ERR_NOT_ENOUGH_CURRENCY = 1039, + ERR_SPEC_IS_DISABLED = 1040, + ERR_FEATURE_RESTRICTED_TRIAL = 1041, + ERR_CANT_BE_OBLITERATED = 1042, + ERR_CANT_BE_SCRAPPED = 1043, + ERR_CANT_BE_RECRAFTED = 1044, + ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 1045, + ERR_MUST_EQUIP_ARTIFACT = 1046, + ERR_CANT_DO_THAT_RIGHT_NOW = 1047, + ERR_AFFECTING_COMBAT = 1048, + ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 1049, + ERR_EQUIPMENT_MANAGER_BAGS_FULL = 1050, + ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 1051, + ERR_MOVIE_RECORDING_WARNING_PERF = 1052, + ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 1053, + ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 1054, + ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 1055, + ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 1056, + ERR_NO_CHALLENGE_MODE_REWARD = 1057, + ERR_CLAIMED_CHALLENGE_MODE_REWARD = 1058, + ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 1059, + ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 1060, + ERR_TALENT_FAILED_REST_AREA = 1061, + ERR_CANNOT_ABANDON_LAST_PET = 1062, + ERR_TEST_CVAR_SET_SSS = 1063, + ERR_QUEST_TURN_IN_FAIL_REASON = 1064, + ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 1065, + ERR_TALENT_GRANTED_BY_AURA = 1066, + ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 1067, + ERR_GLYPH_TARGET_NOT_AVAILABLE = 1068, + ERR_PVP_WARMODE_TOGGLE_ON = 1069, + ERR_PVP_WARMODE_TOGGLE_OFF = 1070, + ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 1071, + ERR_SPELL_FAILED_CANT_FLY_HERE = 1072, + ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 1073, + ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 1074, + ERR_BATTLEGROUND_JOIN_DISQUALIFIED_NO_NAME = 1075, + ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 1076, + ERR_VOICE_CHAT_SERVICE_LOST = 1077, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1078, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1079, + ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1080, + ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1081, + ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1082, + ERR_VOICE_CHAT_PLAYER_SILENCED = 1083, + ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1084, + ERR_VOICE_CHAT_DISABLED = 1085, + ERR_NO_PVP_REWARD = 1086, + ERR_CLAIMED_PVP_REWARD = 1087, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_ESSENCE_NOT_UNLOCKED = 1088, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_CANT_REMOVE_ESSENCE = 1089, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_CONDITION_FAILED = 1090, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_REST_AREA = 1091, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_SLOT_LOCKED = 1092, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_AT_FORGE = 1093, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_HEART_LEVEL_TOO_LOW = 1094, + ERR_AZERITE_ESSENCE_SELECTION_FAILED_NOT_EQUIPPED = 1095, + ERR_SOCKETING_REQUIRES_PUNCHCARDRED_GEM = 1096, + ERR_SOCKETING_PUNCHCARDRED_GEM_ONLY_IN_PUNCHCARDREDSLOT = 1097, + ERR_SOCKETING_REQUIRES_PUNCHCARDYELLOW_GEM = 1098, + ERR_SOCKETING_PUNCHCARDYELLOW_GEM_ONLY_IN_PUNCHCARDYELLOWSLOT = 1099, + ERR_SOCKETING_REQUIRES_PUNCHCARDBLUE_GEM = 1100, + ERR_SOCKETING_PUNCHCARDBLUE_GEM_ONLY_IN_PUNCHCARDBLUESLOT = 1101, + ERR_SOCKETING_REQUIRES_DOMINATION_SHARD = 1102, + ERR_SOCKETING_DOMINATION_SHARD_ONLY_IN_DOMINATIONSLOT = 1103, + ERR_SOCKETING_REQUIRES_CYPHER_GEM = 1104, + ERR_SOCKETING_CYPHER_GEM_ONLY_IN_CYPHERSLOT = 1105, + ERR_SOCKETING_REQUIRES_TINKER_GEM = 1106, + ERR_SOCKETING_TINKER_GEM_ONLY_IN_TINKERSLOT = 1107, + ERR_SOCKETING_REQUIRES_PRIMORDIAL_GEM = 1108, + ERR_SOCKETING_PRIMORDIAL_GEM_ONLY_IN_PRIMORDIALSLOT = 1109, + ERR_SOCKETING_REQUIRES_FRAGRANCE_GEM = 1110, + ERR_SOCKETING_FRAGRANCE_GEM_ONLY_IN_FRAGRANCESLOT = 1111, + ERR_SOCKETING_REQUIRES_SINGING_THUNDER_GEM = 1112, + ERR_SOCKETING_SINGINGTHUNDER_GEM_ONLY_IN_SINGINGTHUNDERSLOT = 1113, + ERR_SOCKETING_REQUIRES_SINGING_SEA_GEM = 1114, + ERR_SOCKETING_SINGINGSEA_GEM_ONLY_IN_SINGINGSEASLOT = 1115, + ERR_SOCKETING_REQUIRES_SINGING_WIND_GEM = 1116, + ERR_SOCKETING_SINGINGWIND_GEM_ONLY_IN_SINGINGWINDSLOT = 1117, + ERR_LEVEL_LINKING_RESULT_LINKED = 1118, + ERR_LEVEL_LINKING_RESULT_UNLINKED = 1119, + ERR_CLUB_FINDER_ERROR_POST_CLUB = 1120, + ERR_CLUB_FINDER_ERROR_APPLY_CLUB = 1121, + ERR_CLUB_FINDER_ERROR_RESPOND_APPLICANT = 1122, + ERR_CLUB_FINDER_ERROR_CANCEL_APPLICATION = 1123, + ERR_CLUB_FINDER_ERROR_TYPE_ACCEPT_APPLICATION = 1124, + ERR_CLUB_FINDER_ERROR_TYPE_NO_INVITE_PERMISSIONS = 1125, + ERR_CLUB_FINDER_ERROR_TYPE_NO_POSTING_PERMISSIONS = 1126, + ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST = 1127, + ERR_CLUB_FINDER_ERROR_TYPE_APPLICANT_LIST_NO_PERM = 1128, + ERR_CLUB_FINDER_ERROR_TYPE_FINDER_NOT_AVAILABLE = 1129, + ERR_CLUB_FINDER_ERROR_TYPE_GET_POSTING_IDS = 1130, + ERR_CLUB_FINDER_ERROR_TYPE_JOIN_APPLICATION = 1131, + ERR_CLUB_FINDER_ERROR_TYPE_REALM_NOT_ELIGIBLE = 1132, + ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_RENAME = 1133, + ERR_CLUB_FINDER_ERROR_TYPE_FLAGGED_DESCRIPTION_CHANGE = 1134, + ERR_ITEM_INTERACTION_NOT_ENOUGH_GOLD = 1135, + ERR_ITEM_INTERACTION_NOT_ENOUGH_CURRENCY = 1136, + ERR_ITEM_INTERACTION_NO_CONVERSION_OUTPUT = 1137, + ERR_PLAYER_CHOICE_ERROR_PENDING_CHOICE = 1138, + ERR_SOULBIND_INVALID_CONDUIT = 1139, + ERR_SOULBIND_INVALID_CONDUIT_ITEM = 1140, + ERR_SOULBIND_INVALID_TALENT = 1141, + ERR_SOULBIND_DUPLICATE_CONDUIT = 1142, + ERR_ACTIVATE_SOULBIND_S = 1143, + ERR_ACTIVATE_SOULBIND_FAILED_REST_AREA = 1144, + ERR_CANT_USE_PROFANITY = 1145, + ERR_NOT_IN_PET_BATTLE = 1146, + ERR_NOT_IN_NPE = 1147, + ERR_NO_SPEC = 1148, + ERR_NO_DOMINATIONSHARD_OVERWRITE = 1149, + ERR_USE_WEEKLY_REWARDS_DISABLED = 1150, + ERR_CROSS_FACTION_GROUP_JOINED = 1151, + ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1152, + ERR_EQUIPABLESPELLS_SLOTS_FULL = 1153, + ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1154, + ERR_CANT_BULK_SELL_ITEM_WITH_REFUND = 1155, + ERR_NO_SOULBOUND_ITEM_IN_ACCOUNT_BANK = 1156, + ERR_NO_REFUNDABLE_ITEM_IN_ACCOUNT_BANK = 1157, + ERR_CANT_DELETE_IN_ACCOUNT_BANK = 1158, + ERR_NO_IMMEDIATE_CONTAINER_IN_ACCOUNT_BANK = 1159, + ERR_NO_OPEN_IMMEDIATE_CONTAINER_IN_ACCOUNT_BANK = 1160, + ERR_CANT_TRADE_ACCOUNT_ITEM = 1161, + ERR_NO_ACCOUNT_INVENTORY_LOCK = 1162, + ERR_BANK_NOT_ACCESSIBLE = 1163, + ERR_TOO_MANY_ACCOUNT_BANK_TABS = 1164, + ERR_ACCOUNT_BANK_TAB_NOT_UNLOCKED = 1165, + ERR_ACCOUNT_MONEY_LOCKED = 1166, + ERR_BANK_TAB_INVALID_NAME = 1167, + ERR_BANK_TAB_INVALID_TEXT = 1168, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1169, + ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1170, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1171, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1172, + ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1173, + ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1174, + ERR_WOW_LABS_SET_WOW_LABS_AREA_ID_FAILED = 1175, + ERR_PLUNDERSTORM_CANNOT_QUEUE = 1176, + ERR_TARGET_IS_SELF_FOUND_CANNOT_TRADE = 1177, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_TRADE = 1178, + ERR_MAIL_RECEPIENT_IS_SELF_FOUND_CANNOT_RECEIVE_MAIL = 1179, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_SEND_MAIL = 1180, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_USE_AUCTION_HOUSE = 1181, + ERR_MAIL_TARGET_CANNOT_RECEIVE_MAIL = 1182, + ERR_REMIX_INVALID_TRANSFER_REQUEST = 1183, + ERR_CURRENCY_TRANSFER_INVALID_CHARACTER = 1184, + ERR_CURRENCY_TRANSFER_INVALID_CURRENCY = 1185, + ERR_CURRENCY_TRANSFER_INSUFFICIENT_CURRENCY = 1186, + ERR_CURRENCY_TRANSFER_MAX_QUANTITY = 1187, + ERR_CURRENCY_TRANSFER_NO_VALID_SOURCE = 1188, + ERR_CURRENCY_TRANSFER_CHARACTER_LOGGED_IN = 1189, + ERR_CURRENCY_TRANSFER_SERVER_ERROR = 1190, + ERR_CURRENCY_TRANSFER_UNMET_REQUIREMENTS = 1191, + ERR_CURRENCY_TRANSFER_TRANSACTION_IN_PROGRESS = 1192, + ERR_CURRENCY_TRANSFER_DISABLED = 1193, }; enum class MountResult : uint32 diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp index d71287acf28..e5d9fb3d60b 100644 --- a/src/server/game/Movement/Spline/MoveSpline.cpp +++ b/src/server/game/Movement/Spline/MoveSpline.cpp @@ -29,9 +29,9 @@ Location MoveSpline::computePosition(int32 time_point, int32 point_index) const ASSERT(Initialized()); float u = 1.0f; - int32 seg_time = spline.length(point_index, point_index + 1); + float seg_time = float(spline.length(point_index, point_index + 1)); if (seg_time > 0) - u = (time_point - spline.length(point_index)) / (float)seg_time; + u = std::min(float(time_point - spline.length(point_index)) / seg_time, 1.0f); Location c; c.orientation = initialOrientation; @@ -52,6 +52,10 @@ Location MoveSpline::computePosition(int32 time_point, int32 point_index) const c.orientation = std::atan2(facing.f.y - c.y, facing.f.x - c.x); //nothing to do for MoveSplineFlag::Final_Target flag } + else if (splineflags.Turning) + { + c.orientation = Position::NormalizeOrientation(turn->StartFacing + float(time_point) / float(IN_MILLISECONDS) * turn->RadsPerSec); + } else { if (!splineflags.HasFlag(MoveSplineFlagEnum::OrientationFixed | MoveSplineFlagEnum::Falling | MoveSplineFlagEnum::JumpOrientationFixed)) @@ -171,6 +175,13 @@ void MoveSpline::init_spline(MoveSplineInitArgs const& args) TC_LOG_ERROR("misc", "MoveSpline::init_spline: zero length spline, wrong input data?"); spline.set_length(spline.last(), spline.isCyclic() ? 1000 : 1); } + + if (turn) + { + MySpline::LengthType totalTurnTime = static_cast<MySpline::LengthType>(turn->TotalTurnRads / turn->RadsPerSec * float(IN_MILLISECONDS)); + spline.set_length(spline.last(), std::max(spline.length(), totalTurnTime)); + } + point_Idx = spline.first(); } @@ -186,6 +197,7 @@ void MoveSpline::Initialize(MoveSplineInitArgs const& args) vertical_acceleration = 0.f; effect_start_time = 0; spell_effect_extra = args.spellEffectExtra; + turn = args.turnData; anim_tier = args.animTier; splineIsFacingOnly = args.path.size() == 2 && args.facing.type != MONSTER_MOVE_NORMAL && ((args.path[1] - args.path[0]).length() < 0.1f); diff --git a/src/server/game/Movement/Spline/MoveSpline.h b/src/server/game/Movement/Spline/MoveSpline.h index 45b0609378d..683198160d7 100644 --- a/src/server/game/Movement/Spline/MoveSpline.h +++ b/src/server/game/Movement/Spline/MoveSpline.h @@ -84,6 +84,7 @@ namespace Movement int32 point_Idx_offset; float velocity; Optional<SpellEffectExtraData> spell_effect_extra; + Optional<TurnData> turn; Optional<AnimTierTransition> anim_tier; void init_spline(MoveSplineInitArgs const& args); @@ -138,6 +139,7 @@ namespace Movement bool Finalized() const { return splineflags.Done; } bool isCyclic() const { return splineflags.Cyclic; } bool isFalling() const { return splineflags.Falling; } + bool isTurning() const { return splineflags.Turning; } Vector3 const& FinalDestination() const { return Initialized() ? spline.getPoint(spline.last()) : Vector3::zero(); } Vector3 const& CurrentDestination() const { return Initialized() ? spline.getPoint(point_Idx + 1) : Vector3::zero(); } int32 currentPathIdx() const; diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h index c33711c951c..62b8bb1cab0 100644 --- a/src/server/game/Movement/Spline/MoveSplineFlag.h +++ b/src/server/game/Movement/Spline/MoveSplineFlag.h @@ -42,7 +42,7 @@ namespace Movement Catmullrom = 0x00000800, // Used Catmullrom interpolation mode Cyclic = 0x00001000, // Movement by cycled spline Enter_Cycle = 0x00002000, // Everytimes appears with cyclic flag in monster move packet, erases first spline vertex after first cycle done - Frozen = 0x00004000, // Will never arrive + Turning = 0x00004000, // Turns in place TransportEnter = 0x00008000, TransportExit = 0x00010000, Unknown_0x20000 = 0x00020000, // NOT VERIFIED @@ -65,7 +65,7 @@ namespace Movement // flags that shouldn't be appended into SMSG_MONSTER_MOVE\SMSG_MONSTER_MOVE_TRANSPORT packet, should be more probably Mask_No_Monster_Move = Done, // SKIP // Unused, not suported flags - Mask_Unused = No_Spline | Frozen | Unknown_0x100 | Unknown_0x20000 | Unknown_0x40000 + Mask_Unused = No_Spline | Unknown_0x100 | Unknown_0x20000 | Unknown_0x40000 | Unknown_0x800000 | FadeObject | UnlimitedSpeed | Unknown_0x40000000 | Unknown_0x80000000 // SKIP }; @@ -142,7 +142,7 @@ namespace Movement MAKE_FLAG_ACCESSOR_FIELD(Catmullrom); MAKE_FLAG_ACCESSOR_FIELD(Cyclic); MAKE_FLAG_ACCESSOR_FIELD(Enter_Cycle); - MAKE_FLAG_ACCESSOR_FIELD(Frozen); + MAKE_FLAG_ACCESSOR_FIELD(Turning); MAKE_FLAG_ACCESSOR_FIELD(TransportEnter); MAKE_FLAG_ACCESSOR_FIELD(TransportExit); MAKE_FLAG_ACCESSOR_FIELD(Unknown_0x20000); diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index 0396cf4f0ef..9eb54f0ce73 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -202,6 +202,9 @@ namespace Movement loc.orientation = unit->GetOrientation(); } + if (move_spline.isTurning()) + SetFacing(loc.orientation); + args.flags = MoveSplineFlagEnum::Done; unit->m_movementInfo.RemoveMovementFlag(MOVEMENTFLAG_FORWARD); move_spline.onTransport = transport; @@ -212,6 +215,9 @@ namespace Movement packet.Pos = Position(loc.x, loc.y, loc.z, loc.orientation); packet.SplineData.StopSplineStyle = 2; packet.SplineData.ID = move_spline.GetId(); + packet.SplineData.StopUseFaceDirection = args.facing.type == MONSTER_MOVE_FACING_ANGLE; + packet.SplineData.Move.Face = args.facing.type; + packet.SplineData.Move.FaceDirection = args.facing.angle; if (transport) { diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h index cea5adc4b83..5035bb38fb1 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.h +++ b/src/server/game/Movement/Spline/MoveSplineInit.h @@ -157,6 +157,8 @@ namespace Movement void SetSpellEffectExtraData(SpellEffectExtraData const& spellEffectExtraData); + void SetTurning(float startFacing, float totalTurnRads, float radsPerSec); + PointsArray& Path() { return args.path; } /* Disables transport coordinate transformations for cases where raw offsets are available @@ -216,6 +218,16 @@ namespace Movement args.spellEffectExtra = spellEffectExtraData; } + inline void MoveSplineInit::SetTurning(float startFacing, float totalTurnRads, float radsPerSec) + { + args.flags.Turning = true; + + TurnData& turn = args.turnData.emplace(); + turn.StartFacing = startFacing; + turn.TotalTurnRads = totalTurnRads; + turn.RadsPerSec = radsPerSec; + } + struct MoveSplineInitFacingVisitor { explicit MoveSplineInitFacingVisitor(MoveSplineInit& init) : _init(init) { } diff --git a/src/server/game/Movement/Spline/MoveSplineInitArgs.h b/src/server/game/Movement/Spline/MoveSplineInitArgs.h index fe7bb527802..46cd0779e21 100644 --- a/src/server/game/Movement/Spline/MoveSplineInitArgs.h +++ b/src/server/game/Movement/Spline/MoveSplineInitArgs.h @@ -54,6 +54,13 @@ namespace Movement uint32 ParabolicCurveId = 0; }; + struct TurnData + { + float StartFacing = 0.0f; + float TotalTurnRads = 0.0f; + float RadsPerSec = 0.0f; + }; + struct AnimTierTransition { uint32 TierTransitionId = 0; @@ -78,6 +85,7 @@ namespace Movement uint32 splineId; float initialOrientation; Optional<SpellEffectExtraData> spellEffectExtra; + Optional<TurnData> turnData; Optional<AnimTierTransition> animTier; bool walk; bool HasVelocity; diff --git a/src/server/game/Movement/Spline/enuminfo_MoveSplineFlag.cpp b/src/server/game/Movement/Spline/enuminfo_MoveSplineFlag.cpp index 7e404624732..1984e9c3eb8 100644 --- a/src/server/game/Movement/Spline/enuminfo_MoveSplineFlag.cpp +++ b/src/server/game/Movement/Spline/enuminfo_MoveSplineFlag.cpp @@ -48,7 +48,7 @@ TC_API_EXPORT EnumText EnumUtils<MoveSplineFlagEnum>::ToString(MoveSplineFlagEnu case MoveSplineFlagEnum::Catmullrom: return { "Catmullrom", "Catmullrom", "Used Catmullrom interpolation mode" }; case MoveSplineFlagEnum::Cyclic: return { "Cyclic", "Cyclic", "Movement by cycled spline" }; case MoveSplineFlagEnum::Enter_Cycle: return { "Enter_Cycle", "Enter_Cycle", "Everytimes appears with cyclic flag in monster move packet, erases first spline vertex after first cycle done" }; - case MoveSplineFlagEnum::Frozen: return { "Frozen", "Frozen", "Will never arrive" }; + case MoveSplineFlagEnum::Turning: return { "Turning", "Turning", "Turns in place" }; case MoveSplineFlagEnum::TransportEnter: return { "TransportEnter", "TransportEnter", "" }; case MoveSplineFlagEnum::TransportExit: return { "TransportExit", "TransportExit", "" }; case MoveSplineFlagEnum::Unknown_0x20000: return { "Unknown_0x20000", "Unknown_0x20000", "NOT VERIFIED" }; @@ -93,7 +93,7 @@ TC_API_EXPORT MoveSplineFlagEnum EnumUtils<MoveSplineFlagEnum>::FromIndex(size_t case 12: return MoveSplineFlagEnum::Catmullrom; case 13: return MoveSplineFlagEnum::Cyclic; case 14: return MoveSplineFlagEnum::Enter_Cycle; - case 15: return MoveSplineFlagEnum::Frozen; + case 15: return MoveSplineFlagEnum::Turning; case 16: return MoveSplineFlagEnum::TransportEnter; case 17: return MoveSplineFlagEnum::TransportExit; case 18: return MoveSplineFlagEnum::Unknown_0x20000; @@ -135,7 +135,7 @@ TC_API_EXPORT size_t EnumUtils<MoveSplineFlagEnum>::ToIndex(MoveSplineFlagEnum v case MoveSplineFlagEnum::Catmullrom: return 12; case MoveSplineFlagEnum::Cyclic: return 13; case MoveSplineFlagEnum::Enter_Cycle: return 14; - case MoveSplineFlagEnum::Frozen: return 15; + case MoveSplineFlagEnum::Turning: return 15; case MoveSplineFlagEnum::TransportEnter: return 16; case MoveSplineFlagEnum::TransportExit: return 17; case MoveSplineFlagEnum::Unknown_0x20000: return 18; diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index e5ab6678fd8..3c22fd4084d 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -360,8 +360,8 @@ WorldPacket const* EnterEncryptedMode::Write() ed25519.SignWithContext(toSign, { EnableEncryptionContext.begin(), EnableEncryptionContext.end() }, signature); - _worldPacket.append(signature.data(), signature.size()); _worldPacket << int32(RegionGroup); + _worldPacket.append(signature.data(), signature.size()); _worldPacket << Bits<1>(Enabled); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index e6a7a96f8ae..0f6cb281373 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -307,15 +307,15 @@ namespace WorldPackets static bool InitializeEncryption(); static void ShutdownEncryption(); - explicit EnterEncryptedMode(std::array<uint8, 32> const& encryptionKey, bool enabled) : ServerPacket(SMSG_ENTER_ENCRYPTED_MODE, 256 + 1), + explicit EnterEncryptedMode(std::array<uint8, 32> const& encryptionKey, bool enabled) : ServerPacket(SMSG_ENTER_ENCRYPTED_MODE, 4 + 256 + 1), EncryptionKey(encryptionKey), Enabled(enabled) { } WorldPacket const* Write() override; - std::array<uint8, 32> const& EncryptionKey; int32 RegionGroup = 0; + std::array<uint8, 32> const& EncryptionKey; bool Enabled = false; }; diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 7935dba4cde..88a897400aa 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -617,9 +617,10 @@ WorldPacket const* UndeleteCharacterResponse::Write() WorldPacket const* UndeleteCooldownStatusResponse::Write() { - _worldPacket << Bits<1>(OnCooldown); _worldPacket << uint32(MaxCooldown); _worldPacket << uint32(CurrentCooldown); + _worldPacket << Bits<1>(OnCooldown); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index d123b269406..5a78c17d976 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -532,9 +532,9 @@ namespace WorldPackets WorldPacket const* Write() override; - bool OnCooldown = false; ///< uint32 MaxCooldown = 0; ///< Max. cooldown until next free character restoration. Displayed in undelete confirm message. (in sec) uint32 CurrentCooldown = 0; ///< Current cooldown until next free character restoration. (in sec) + bool OnCooldown = false; ///< }; class PlayerLogin final : public ClientPacket diff --git a/src/server/game/Server/Packets/ClientConfigPackets.cpp b/src/server/game/Server/Packets/ClientConfigPackets.cpp index dd99efb4685..505f7f8e900 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.cpp +++ b/src/server/game/Server/Packets/ClientConfigPackets.cpp @@ -73,6 +73,15 @@ void UserClientUpdateAccountData::Read() _worldPacket.rpos(pos + compressedSize); } +WorldPacket const* UpdateAccountDataComplete::Write() +{ + _worldPacket << Player; + _worldPacket << int32(DataType); + _worldPacket << int32(Result); + + return &_worldPacket; +} + void SetAdvancedCombatLogging::Read() { _worldPacket >> Bits<1>(Enable); diff --git a/src/server/game/Server/Packets/ClientConfigPackets.h b/src/server/game/Server/Packets/ClientConfigPackets.h index 60e09afff52..22be7aaa1d1 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.h +++ b/src/server/game/Server/Packets/ClientConfigPackets.h @@ -87,6 +87,18 @@ namespace WorldPackets std::span<uint8 const> CompressedData; }; + class UpdateAccountDataComplete final : public ServerPacket + { + public: + explicit UpdateAccountDataComplete() : ServerPacket(SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, 16 + 4 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid Player; + int32 DataType = 0; ///< @see enum AccountDataType + int32 Result = 0; + }; + class SetAdvancedCombatLogging final : public ClientPacket { public: diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 72c67e33256..d3b01ea4f1c 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -77,6 +77,7 @@ bool ContentTuningParams::GenerateDataForUnits<Creature, Player>(Creature* attac if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(creatureDifficulty->ContentTuningID)) { ScalingHealthItemLevelCurveID = contentTuning->HealthItemLevelCurveID; + ScalingHealthPrimaryStatCurveID = contentTuning->HealthPrimaryStatCurveID; TargetContentTuningID = contentTuning->ID; } TargetLevel = target->GetLevel(); @@ -98,6 +99,7 @@ bool ContentTuningParams::GenerateDataForUnits<Player, Creature>(Player* attacke if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(creatureDifficulty->ContentTuningID)) { ScalingHealthItemLevelCurveID = contentTuning->HealthItemLevelCurveID; + ScalingHealthPrimaryStatCurveID = contentTuning->HealthPrimaryStatCurveID; TargetContentTuningID = contentTuning->ID; } TargetLevel = target->GetLevel(); @@ -179,14 +181,17 @@ ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTunin data << float(contentTuningParams.PlayerItemLevel); data << float(contentTuningParams.TargetItemLevel); data << int16(contentTuningParams.PlayerLevelDelta); - data << uint32(contentTuningParams.ScalingHealthItemLevelCurveID); + data << int32(contentTuningParams.ScalingHealthItemLevelCurveID); + data << int32(contentTuningParams.Unused1117); + data << int32(contentTuningParams.ScalingHealthPrimaryStatCurveID); data << uint8(contentTuningParams.TargetLevel); data << uint8(contentTuningParams.Expansion); data << int8(contentTuningParams.TargetScalingLevelDelta); data << uint32(contentTuningParams.Flags); data << int32(contentTuningParams.PlayerContentTuningID); data << int32(contentTuningParams.TargetContentTuningID); - data << int32(contentTuningParams.Unused927); + data << int32(contentTuningParams.TargetHealingContentTuningID); + data << float(contentTuningParams.PlayerPrimaryStatToExpectedRatio); data << Bits<4>(contentTuningParams.Type); data.FlushBits(); diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h index cc9294dfe4f..235bb50ac48 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h @@ -57,9 +57,12 @@ namespace WorldPackets { TYPE_CREATURE_TO_PLAYER_DAMAGE = 1, TYPE_PLAYER_TO_CREATURE_DAMAGE = 2, - TYPE_CREATURE_TO_CREATURE_DAMAGE = 4, - TYPE_PLAYER_TO_PLAYER_SANDBOX_SCALING = 7, // NYI - TYPE_PLAYER_TO_PLAYER_EXPECTED_STAT = 8, + TYPE_CREATURE_TO_PLAYER_HEALING = 3, + TYPE_PLAYER_TO_CREATURE_HEALING = 4, + TYPE_CREATURE_TO_CREATURE_DAMAGE = 5, + TYPE_CREATURE_TO_CREATURE_HEALING = 6, + TYPE_PLAYER_TO_PLAYER_DAMAGE = 7, // NYI + TYPE_PLAYER_TO_PLAYER_HEALING = 8, }; enum ContentTuningFlags : uint32 @@ -72,14 +75,17 @@ namespace WorldPackets int16 PlayerLevelDelta = 0; float PlayerItemLevel = 0; float TargetItemLevel = 0; - uint32 ScalingHealthItemLevelCurveID = 0; + int32 ScalingHealthItemLevelCurveID = 0; + int32 Unused1117 = 0; + int32 ScalingHealthPrimaryStatCurveID = 0; uint8 TargetLevel = 0; uint8 Expansion = 0; int8 TargetScalingLevelDelta = 0; uint32 Flags = NO_LEVEL_SCALING | NO_ITEM_LEVEL_SCALING; int32 PlayerContentTuningID = 0; int32 TargetContentTuningID = 0; - int32 Unused927 = 0; + int32 TargetHealingContentTuningID = 0; // direct heal only, not periodic + float PlayerPrimaryStatToExpectedRatio = 1.0f; template<class T, class U> bool GenerateDataForUnits(T* attacker, U* target); diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index b773a5d64c0..1e6bc914d05 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -49,9 +49,9 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonPlotInfo const& plotInfo) ByteBuffer& operator<<(ByteBuffer& data, GarrisonBuildingInfo const& buildingInfo) { + data << buildingInfo.TimeBuilt; data << uint32(buildingInfo.GarrPlotInstanceID); data << uint32(buildingInfo.GarrBuildingID); - data << buildingInfo.TimeBuilt; data << uint32(buildingInfo.CurrentGarSpecID); data << buildingInfo.TimeSpecCooldown; data << Bits<1>(buildingInfo.Active); diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index 402c95f2704..3e2df57f33d 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -73,9 +73,9 @@ namespace WorldPackets struct GarrisonBuildingInfo { + Timestamp<> TimeBuilt; uint32 GarrPlotInstanceID = 0; uint32 GarrBuildingID = 0; - Timestamp<> TimeBuilt; uint32 CurrentGarSpecID = 0; Timestamp<> TimeSpecCooldown = time_t(2288912640); // 06/07/1906 18:35:44 - another in the series of magic blizz dates bool Active = false; diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 06d654bef9a..e3701a7d09e 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -517,12 +517,11 @@ void RequestGuildPartyState::Read() WorldPacket const* GuildPartyState::Write() { - _worldPacket << Bits<1>(InGuildParty); - _worldPacket.FlushBits(); - _worldPacket << int32(NumMembers); _worldPacket << int32(NumRequired); _worldPacket << float(GuildXPEarnedMult); + _worldPacket << Bits<1>(InGuildParty); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index a1973f8a1ff..eafb7219b7b 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -36,9 +36,9 @@ WorldPacket const* UpdateInstanceOwnership::Write() ByteBuffer& operator<<(ByteBuffer& data, InstanceLock const& lockInfos) { + data << uint64(lockInfos.InstanceID); data << uint32(lockInfos.MapID); data << uint32(lockInfos.DifficultyID); - data << uint64(lockInfos.InstanceID); data << uint32(lockInfos.TimeRemaining); data << uint32(lockInfos.CompletedMask); diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index dc49cc30113..f6351382dd5 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -235,8 +235,8 @@ void SetDungeonDifficulty::Read() void SetRaidDifficulty::Read() { - _worldPacket >> DifficultyID; _worldPacket >> Legacy; + _worldPacket >> DifficultyID; } WorldPacket const* DungeonDifficultySet::Write() @@ -248,8 +248,8 @@ WorldPacket const* DungeonDifficultySet::Write() WorldPacket const* RaidDifficultySet::Write() { + _worldPacket << int32(Legacy); _worldPacket << int32(DifficultyID); - _worldPacket << uint8(Legacy); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 45a3ad386fa..83b4dfb3a74 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -284,8 +284,8 @@ namespace WorldPackets void Read() override; + int32 Legacy = 0; int32 DifficultyID = 0; - uint8 Legacy = 0; }; class DungeonDifficultySet final : public ServerPacket @@ -305,8 +305,8 @@ namespace WorldPackets WorldPacket const* Write() override; + int32 Legacy = 0; int32 DifficultyID = 0; - uint8 Legacy = 0; }; class CorpseReclaimDelay : public ServerPacket diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 356e1c4c409..b9796743e6c 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -149,10 +149,11 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo) if (hasDriveStatus) { - data.WriteBit(movementInfo.driveStatus->accelerating); - data.WriteBit(movementInfo.driveStatus->drifting); data << float(movementInfo.driveStatus->speed); data << float(movementInfo.driveStatus->movementAngle); + data.WriteBit(movementInfo.driveStatus->accelerating); + data.WriteBit(movementInfo.driveStatus->drifting); + data.FlushBits(); } return data; @@ -239,10 +240,10 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) movementInfo.driveStatus.emplace(); - movementInfo.driveStatus->accelerating = data.ReadBit(); - movementInfo.driveStatus->drifting = data.ReadBit(); data >> movementInfo.driveStatus->speed; data >> movementInfo.driveStatus->movementAngle; + movementInfo.driveStatus->accelerating = data.ReadBit(); + movementInfo.driveStatus->drifting = data.ReadBit(); } return data; @@ -305,6 +306,15 @@ ByteBuffer& operator<<(ByteBuffer& data, MonsterSplineJumpExtraData const& jumpE return data; } +ByteBuffer& operator<<(ByteBuffer& data, MonsterSplineTurnData const& turnData) +{ + data << float(turnData.StartFacing); + data << float(turnData.TotalTurnRads); + data << float(turnData.RadsPerSec); + + return data; +} + ByteBuffer& operator<<(ByteBuffer& data, MonsterSplineAnimTierTransition const& animTierTransition) { data << int32(animTierTransition.TierTransitionID); @@ -344,6 +354,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementSpline const& movementSpline) data << OptionalInit(movementSpline.SplineFilter); data << OptionalInit(movementSpline.SpellEffectExtraData); data << OptionalInit(movementSpline.JumpExtraData); + data << OptionalInit(movementSpline.TurnData); data << OptionalInit(movementSpline.AnimTierTransition); data << OptionalInit(movementSpline.Unknown901); data.FlushBits(); @@ -377,6 +388,9 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementSpline const& movementSpline) if (movementSpline.JumpExtraData) data << *movementSpline.JumpExtraData; + if (movementSpline.TurnData) + data << *movementSpline.TurnData; + if (movementSpline.AnimTierTransition) data << *movementSpline.AnimTierTransition; @@ -390,6 +404,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementMonsterSpline const& movementMo { data << movementMonsterSpline.ID; data << Bits<1>(movementMonsterSpline.CrzTeleport); + data << Bits<1>(movementMonsterSpline.StopUseFaceDirection); data << Bits<3>(movementMonsterSpline.StopSplineStyle); data << movementMonsterSpline.Move; @@ -434,6 +449,7 @@ void CommonMovement::WriteCreateObjectSplineDataBlock(::Movement::MoveSpline con data << OptionalInit(moveSpline.spell_effect_extra); // HasSpellEffectExtraData bool hasJumpExtraData = moveSpline.splineflags.Parabolic && (!moveSpline.spell_effect_extra || moveSpline.effect_start_time); data << Bits<1>(hasJumpExtraData); + data << OptionalInit(moveSpline.turn); // HasTurnData data << OptionalInit(moveSpline.anim_tier); // HasAnimTierTransition data.WriteBit(false); // HasUnknown901 data.FlushBits(); @@ -492,6 +508,13 @@ void CommonMovement::WriteCreateObjectSplineDataBlock(::Movement::MoveSpline con data << uint32(0); // Duration (override) } + if (moveSpline.turn) + { + data << float(moveSpline.turn->StartFacing); + data << float(moveSpline.turn->TotalTurnRads); + data << float(moveSpline.turn->RadsPerSec); + } + if (moveSpline.anim_tier) { data << int32(moveSpline.anim_tier->TierTransitionId); @@ -584,6 +607,14 @@ void MonsterMove::InitializeSplineData(::Movement::MoveSpline const& moveSpline) movementSpline.JumpExtraData->StartTime = moveSpline.effect_start_time; } + if (moveSpline.turn) + { + MonsterSplineTurnData& turn = movementSpline.TurnData.emplace(); + turn.StartFacing = moveSpline.turn->StartFacing; + turn.TotalTurnRads = moveSpline.turn->TotalTurnRads; + turn.RadsPerSec = moveSpline.turn->RadsPerSec; + } + if (splineFlags.FadeObject) movementSpline.FadeObjectTime = moveSpline.effect_start_time; diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index a6f628184d2..8ad8b641cf5 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -90,6 +90,13 @@ namespace WorldPackets uint32 Duration = 0; }; + struct MonsterSplineTurnData + { + float StartFacing = 0.0f; + float TotalTurnRads = 0.0f; + float RadsPerSec = 0.0f; + }; + struct MonsterSplineAnimTierTransition { int32 TierTransitionID = 0; @@ -127,6 +134,7 @@ namespace WorldPackets Optional<MonsterSplineFilter> SplineFilter; Optional<MonsterSplineSpellEffectExtraData> SpellEffectExtraData; Optional<MonsterSplineJumpExtraData> JumpExtraData; + Optional<MonsterSplineTurnData> TurnData; Optional<MonsterSplineAnimTierTransition> AnimTierTransition; Optional<MonsterSplineUnknown901> Unknown901; float FaceDirection = 0.0f; @@ -138,6 +146,7 @@ namespace WorldPackets { uint32 ID = 0; bool CrzTeleport = false; + bool StopUseFaceDirection = false; uint8 StopSplineStyle = 0; // Determines how far from spline destination the mover is allowed to stop in place 0, 0, 3.0, 2.76, numeric_limits<float>::max, 1.1, float(INT_MAX); default before this field existed was distance 3.0 (index 2) MovementSpline Move; }; diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 496426b2a58..fa559dbef04 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -479,8 +479,8 @@ ByteBuffer& operator<<(ByteBuffer& data, PartyPlayerInfo const& playerInfo) ByteBuffer& operator<<(ByteBuffer& data, PartyLFGInfo const& lfgInfos) { - data << uint8(lfgInfos.MyFlags); data << uint32(lfgInfos.Slot); + data << uint8(lfgInfos.MyFlags); data << uint32(lfgInfos.MyRandomSlot); data << uint8(lfgInfos.MyPartialClear); data << float(lfgInfos.MyGearDiff); diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index 2dd627a32ac..8c287fe8b12 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -395,7 +395,7 @@ namespace WorldPackets explicit SetPartyAssignment(WorldPacket&& packet) : ClientPacket(CMSG_SET_PARTY_ASSIGNMENT, std::move(packet)) { } void Read() override; - uint8 Assignment = 0; + int32 Assignment = 0; Optional<uint8> PartyIndex; ObjectGuid Target; bool Set = false; @@ -525,15 +525,15 @@ namespace WorldPackets struct PartyLFGInfo { - uint8 MyFlags = 0; uint32 Slot = 0; - uint8 BootCount = 0; + uint8 MyFlags = 0; uint32 MyRandomSlot = 0; - bool Aborted = false; uint8 MyPartialClear = 0; float MyGearDiff = 0.0f; uint8 MyStrangerCount = 0; uint8 MyKickVoteCount = 0; + uint8 BootCount = 0; + bool Aborted = false; bool MyFirstReward = false; }; diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 5bf9641f793..d3414c11436 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -22,7 +22,6 @@ namespace WorldPackets::System { ByteBuffer& operator<<(ByteBuffer& data, SocialQueueConfig const& socialQueueConfig) { - data << Bits<1>(socialQueueConfig.ToastsDisabled); data << float(socialQueueConfig.ToastDuration); data << float(socialQueueConfig.DelayDuration); data << float(socialQueueConfig.QueueMultiplier); @@ -45,6 +44,8 @@ ByteBuffer& operator<<(ByteBuffer& data, SocialQueueConfig const& socialQueueCon data << float(socialQueueConfig.ThrottleRfIlvlScalingAbove); data << float(socialQueueConfig.ThrottleDfMaxItemLevel); data << float(socialQueueConfig.ThrottleDfBestPriority); + data << Bits<1>(socialQueueConfig.ToastsDisabled); + data.FlushBits(); return data; } @@ -212,6 +213,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << Bits<1>(LobbyMatchmakerQueueFromMainlineEnabled); _worldPacket << Bits<1>(CanSendLobbyMatchmakerPartyCustomizations); _worldPacket << Bits<1>(AddonProfilerEnabled); + _worldPacket << Bits<1>(false); // unused 11.1.7 + _worldPacket << Bits<1>(false); // unused 11.1.7 _worldPacket.FlushBits(); @@ -270,6 +273,10 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() _worldPacket << Bits<1>(BNSendGameDataUseV2Services); _worldPacket << Bits<1>(CharacterSelectListModeRealmless); + _worldPacket << Bits<1>(WowTokenLimitedMode); + _worldPacket << Bits<1>(false); // unused 11.1.7 + _worldPacket << Bits<1>(false); // unused 11.1.7 + _worldPacket << Bits<1>(PandarenLevelBoostAllowed); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 42d40c4cf60..9a3cd43350d 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -237,6 +237,8 @@ namespace WorldPackets bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService bool BNSendGameDataUseV2Services = true; ///< BNSendGameData will send to v2.NotificationService instead of v1.NotificationService bool CharacterSelectListModeRealmless = false; + bool WowTokenLimitedMode = false; // classic only + bool PandarenLevelBoostAllowed = false; // classic only Optional<EuropaTicketConfig> EuropaTicketSystemStatus; std::vector<int32> LiveRegionCharacterCopySourceRegions; uint32 CommercePricePollTimeSeconds = 0; // NYI diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 0ac8239950b..aee210a2a64 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -2210,6 +2210,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLOAD_CHILD_MAP, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_AADC_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_ACTION_BUTTONS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_BNET_SESSION_KEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CAPTURE_POINT, STATUS_NEVER, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index fb6bab28936..abf04c9a6f4 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -961,20 +961,20 @@ inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode) enum OpcodeServer : uint32 { SMSG_ABORT_NEW_WORLD = 0x380030, - SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x380341, - SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x380346, - SMSG_ACCOUNT_COSMETIC_ADDED = 0x3802FA, - SMSG_ACCOUNT_CRITERIA_UPDATE = 0x3802E2, - SMSG_ACCOUNT_DATA_TIMES = 0x3801A3, - SMSG_ACCOUNT_EXPORT_RESPONSE = 0x380332, - SMSG_ACCOUNT_ITEM_COLLECTION_DATA = 0x38034C, + SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x380342, + SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x380347, + SMSG_ACCOUNT_COSMETIC_ADDED = 0x3802FB, + SMSG_ACCOUNT_CRITERIA_UPDATE = 0x3802E3, + SMSG_ACCOUNT_DATA_TIMES = 0x3801A4, + SMSG_ACCOUNT_EXPORT_RESPONSE = 0x380333, + SMSG_ACCOUNT_ITEM_COLLECTION_DATA = 0x38034D, SMSG_ACCOUNT_MOUNT_REMOVED = 0x380047, SMSG_ACCOUNT_MOUNT_UPDATE = 0x380046, - SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x3802F9, - SMSG_ACCOUNT_STORE_CURRENCY_UPDATE = 0x38031B, - SMSG_ACCOUNT_STORE_FRONT_UPDATE = 0x38031C, - SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED = 0x38031D, - SMSG_ACCOUNT_STORE_RESULT = 0x38031E, + SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x3802FA, + SMSG_ACCOUNT_STORE_CURRENCY_UPDATE = 0x38031C, + SMSG_ACCOUNT_STORE_FRONT_UPDATE = 0x38031D, + SMSG_ACCOUNT_STORE_ITEM_STATE_CHANGED = 0x38031E, + SMSG_ACCOUNT_STORE_RESULT = 0x38031F, SMSG_ACCOUNT_TOY_UPDATE = 0x380048, SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x38004C, SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x38004B, @@ -985,29 +985,29 @@ enum OpcodeServer : uint32 SMSG_ACTIVATE_SOULBIND_FAILED = 0x4B0022, SMSG_ACTIVATE_TAXI_REPLY = 0x380118, SMSG_ACTIVE_GLYPHS = 0x4E0045, - SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x3801DE, + SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x3801DF, SMSG_ADDON_LIST_REQUEST = 0x3800DA, SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x3800D5, SMSG_ADD_ITEM_PASSIVE = 0x380042, SMSG_ADD_LOSS_OF_CONTROL = 0x38010B, SMSG_ADD_RUNE_POWER = 0x380152, SMSG_ADJUST_SPLINE_DURATION = 0x380069, - SMSG_ADVANCED_COMBAT_LOG = 0x3802F7, - SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x3802F2, + SMSG_ADVANCED_COMBAT_LOG = 0x3802F8, + SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x3802F3, SMSG_AE_LOOT_TARGETS = 0x3800B0, SMSG_AE_LOOT_TARGET_ACK = 0x3800B1, SMSG_AI_REACTION = 0x38014F, - SMSG_ALLIED_RACE_DETAILS = 0x38028C, + SMSG_ALLIED_RACE_DETAILS = 0x38028D, SMSG_ALL_ACCOUNT_CRITERIA = 0x380005, SMSG_ALL_ACHIEVEMENT_DATA = 0x380004, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x440000, - SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x3802CF, + SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x3802D0, SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x38001D, SMSG_AREA_POI_UPDATE_RESPONSE = 0x4B0018, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x3801D7, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x3801D8, SMSG_AREA_TRIGGER_DENIED = 0x390009, SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x390006, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x3801AF, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x3801B0, SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x390004, SMSG_AREA_TRIGGER_RE_PATH = 0x390003, SMSG_AREA_TRIGGER_RE_SHAPE = 0x390008, @@ -1016,28 +1016,28 @@ enum OpcodeServer : uint32 SMSG_ARENA_CLEAR_OPPONENTS = 0x3800E1, SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x3800CA, SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x3800E0, - SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x380239, - SMSG_ARTIFACT_FORGE_ERROR = 0x380237, - SMSG_ARTIFACT_RESPEC_PROMPT = 0x380238, - SMSG_ARTIFACT_XP_GAIN = 0x38027F, + SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x38023A, + SMSG_ARTIFACT_FORGE_ERROR = 0x380238, + SMSG_ARTIFACT_RESPEC_PROMPT = 0x380239, + SMSG_ARTIFACT_XP_GAIN = 0x380280, SMSG_ATTACKER_STATE_UPDATE = 0x3E002C, SMSG_ATTACK_START = 0x3E0017, SMSG_ATTACK_STOP = 0x3E0018, SMSG_ATTACK_SWING_ERROR = 0x3E0026, SMSG_ATTACK_SWING_LANDED_LOG = 0x3E0027, - SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x380268, - SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x380267, - SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x380266, + SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x380269, + SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x380268, + SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x380267, SMSG_AUCTION_CLOSED_NOTIFICATION = 0x38018C, SMSG_AUCTION_COMMAND_RESULT = 0x380189, - SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x38031F, - SMSG_AUCTION_FAVORITE_LIST = 0x3802E9, - SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x3802E1, + SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x380320, + SMSG_AUCTION_FAVORITE_LIST = 0x3802EA, + SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x3802E2, SMSG_AUCTION_HELLO_RESPONSE = 0x380187, - SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x3802E0, - SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x3802DC, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x3802DD, - SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x3802DF, + SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x3802E1, + SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x3802DD, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x3802DE, + SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x3802E0, SMSG_AUCTION_OUTBID_NOTIFICATION = 0x38018B, SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x38018D, SMSG_AUCTION_REPLICATE_RESPONSE = 0x380188, @@ -1048,10 +1048,10 @@ enum OpcodeServer : uint32 SMSG_AUTH_FAILED = 0x380000, SMSG_AUTH_RESPONSE = 0x380001, SMSG_AVAILABLE_HOTFIXES = 0x3C0001, - SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x380320, + SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x380321, SMSG_BAG_CLEANUP_FINISHED = 0x4F0007, SMSG_BARBER_SHOP_RESULT = 0x380157, - SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x3802C0, + SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x3802C1, SMSG_BATTLEFIELD_LIST = 0x3E0005, SMSG_BATTLEFIELD_PORT_DENIED = 0x3E000B, SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x3E0001, @@ -1067,29 +1067,29 @@ enum OpcodeServer : uint32 SMSG_BATTLEGROUND_PLAYER_LEFT = 0x3E000A, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x3E0006, SMSG_BATTLEGROUND_POINTS = 0x3E0028, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x380221, - SMSG_BATTLENET_CHALLENGE_START = 0x380220, - SMSG_BATTLENET_NOTIFICATION = 0x380298, - SMSG_BATTLENET_RESPONSE = 0x380297, - SMSG_BATTLE_NET_CONNECTION_STATUS = 0x380299, - SMSG_BATTLE_PAY_ACK_FAILED = 0x38021C, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x380211, - SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x380212, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x38021B, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x38020F, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x38020E, - SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x3802FF, - SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x38020C, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x38020D, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x38020B, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x380209, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x38020A, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x380210, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x38021A, - SMSG_BATTLE_PAY_START_CHECKOUT = 0x3802B4, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x380218, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x380217, - SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x3802A8, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x380222, + SMSG_BATTLENET_CHALLENGE_START = 0x380221, + SMSG_BATTLENET_NOTIFICATION = 0x380299, + SMSG_BATTLENET_RESPONSE = 0x380298, + SMSG_BATTLE_NET_CONNECTION_STATUS = 0x38029A, + SMSG_BATTLE_PAY_ACK_FAILED = 0x38021D, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x380212, + SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x380213, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x38021C, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x380210, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x38020F, + SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x380300, + SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x38020D, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x38020E, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x38020C, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x38020A, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x38020B, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x380211, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x38021B, + SMSG_BATTLE_PAY_START_CHECKOUT = 0x3802B5, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x380219, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x380218, + SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x3802A9, SMSG_BATTLE_PETS_HEALED = 0x38008B, SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x380113, SMSG_BATTLE_PET_DELETED = 0x380088, @@ -1110,8 +1110,8 @@ enum OpcodeServer : uint32 SMSG_BOSS_KILL = 0x3E002B, SMSG_BREAK_TARGET = 0x3E0016, SMSG_BROADCAST_ACHIEVEMENT = 0x3D0012, - SMSG_BROADCAST_SUMMON_CAST = 0x3802C2, - SMSG_BROADCAST_SUMMON_RESPONSE = 0x3802C3, + SMSG_BROADCAST_SUMMON_CAST = 0x3802C3, + SMSG_BROADCAST_SUMMON_RESPONSE = 0x3802C4, SMSG_BUY_FAILED = 0x380160, SMSG_BUY_SUCCEEDED = 0x38015F, SMSG_CACHE_INFO = 0x3C000F, @@ -1136,7 +1136,7 @@ enum OpcodeServer : uint32 SMSG_CALENDAR_SEND_CALENDAR = 0x380126, SMSG_CALENDAR_SEND_EVENT = 0x380127, SMSG_CALENDAR_SEND_NUM_PENDING = 0x380137, - SMSG_CAMERA_EFFECT = 0x3801BD, + SMSG_CAMERA_EFFECT = 0x3801BE, SMSG_CANCEL_AUTO_REPEAT = 0x380177, SMSG_CANCEL_COMBAT = 0x3E0025, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x4E0037, @@ -1146,7 +1146,7 @@ enum OpcodeServer : uint32 SMSG_CANCEL_SPELL_VISUAL = 0x4E0035, SMSG_CANCEL_SPELL_VISUAL_KIT = 0x4E0039, SMSG_CAN_DUEL_RESULT = 0x3E0021, - SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x3802A7, + SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x3802A8, SMSG_CAPTURE_POINT_REMOVED = 0x3E0008, SMSG_CAST_FAILED = 0x4E0048, SMSG_CAS_REFRESH_REMOTE_DATA = 0x380111, @@ -1159,23 +1159,23 @@ enum OpcodeServer : uint32 SMSG_CHALLENGE_MODE_START = 0x38009F, SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x3800A0, SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x4B000C, - SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x38029A, + SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x38029B, SMSG_CHANNEL_LIST = 0x3D001B, SMSG_CHANNEL_NOTIFY = 0x3D0017, SMSG_CHANNEL_NOTIFY_JOINED = 0x3D0019, SMSG_CHANNEL_NOTIFY_LEFT = 0x3D001A, SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x3D0018, - SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x380254, + SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x380255, SMSG_CHARACTER_LOGIN_FAILED = 0x38019E, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x38021F, - SMSG_CHARACTER_RENAME_RESULT = 0x3801FA, - SMSG_CHARACTER_UPGRADE_ABORTED = 0x380253, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x380252, - SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x380255, - SMSG_CHARACTER_UPGRADE_STARTED = 0x380251, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x380220, + SMSG_CHARACTER_RENAME_RESULT = 0x3801FB, + SMSG_CHARACTER_UPGRADE_ABORTED = 0x380254, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x380253, + SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x380256, + SMSG_CHARACTER_UPGRADE_STARTED = 0x380252, SMSG_CHAR_CUSTOMIZE_FAILURE = 0x38017B, SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x38017C, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x38023E, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x38023F, SMSG_CHAT = 0x3D0001, SMSG_CHAT_AUTO_RESPONDED = 0x3D000E, SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x3D0022, @@ -1194,8 +1194,8 @@ enum OpcodeServer : uint32 SMSG_CHECK_ABANDON_NPE = 0x4B0023, SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x38001B, SMSG_CHECK_WARGAME_ENTRY = 0x380027, - SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x3802EC, - SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x3802D3, + SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x3802ED, + SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x3802D4, SMSG_CLEAR_ALL_SPELL_CHARGES = 0x4E0016, SMSG_CLEAR_BOSS_EMOTES = 0x380054, SMSG_CLEAR_COOLDOWN = 0x380154, @@ -1204,65 +1204,65 @@ enum OpcodeServer : uint32 SMSG_CLEAR_SPELL_CHARGES = 0x4E0017, SMSG_CLEAR_TARGET = 0x3E0022, SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x4C0022, - SMSG_CLOSE_ARTIFACT_FORGE = 0x380236, - SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x3802CB, - SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x3802CE, - SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x3802CC, - SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x3802C9, - SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x3802CD, - SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x3802CA, - SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x38030B, + SMSG_CLOSE_ARTIFACT_FORGE = 0x380237, + SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x3802CC, + SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x3802CF, + SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x3802CD, + SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x3802CA, + SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x3802CE, + SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x3802CB, + SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x38030C, SMSG_COIN_REMOVED = 0x3800AF, SMSG_COMBAT_EVENT_FAILED = 0x3E0019, SMSG_COMMENTATOR_MAP_INFO = 0x3801A0, SMSG_COMMENTATOR_PLAYER_INFO = 0x3801A1, SMSG_COMMENTATOR_STATE_CHANGED = 0x38019F, - SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x380263, - SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x38026F, - SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x380265, - SMSG_COMMERCE_TOKEN_UPDATE = 0x380264, + SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x380264, + SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x380270, + SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x380266, + SMSG_COMMERCE_TOKEN_UPDATE = 0x380265, SMSG_COMPLAINT_RESULT = 0x380146, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x38022F, - SMSG_CONFIRM_PARTY_INVITE = 0x3802A6, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x380230, + SMSG_CONFIRM_PARTY_INVITE = 0x3802A7, SMSG_CONNECT_TO = 0x3F0005, SMSG_CONSOLE_WRITE = 0x3800CD, - SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x38026B, - SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x38026A, - SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x380269, - SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x38026D, - SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x38026E, - SMSG_CONTACT_LIST = 0x38021D, - SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x3802AD, + SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x38026C, + SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x38026B, + SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x38026A, + SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x38026E, + SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x38026F, + SMSG_CONTACT_LIST = 0x38021E, + SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x3802AE, SMSG_CONTROL_UPDATE = 0x3800DF, - SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x3802F5, - SMSG_COOLDOWN_CHEAT = 0x3801D0, + SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x3802F6, + SMSG_COOLDOWN_CHEAT = 0x3801D1, SMSG_COOLDOWN_EVENT = 0x380153, SMSG_CORPSE_LOCATION = 0x3800E7, - SMSG_CORPSE_RECLAIM_DELAY = 0x3801E1, - SMSG_CORPSE_TRANSPORT_QUERY = 0x3801AB, + SMSG_CORPSE_RECLAIM_DELAY = 0x3801E2, + SMSG_CORPSE_TRANSPORT_QUERY = 0x3801AC, SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x4C0024, - SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x38028F, - SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x3802F6, - SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x38032C, - SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x380328, - SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x380324, - SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x380326, - SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x380322, - SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x380327, - SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x380323, - SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x38032E, - SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x38032A, - SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x380325, - SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x38032D, - SMSG_CRAFT_ENCHANT_RESULT = 0x38032B, + SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x380290, + SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x3802F7, + SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x38032D, + SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x380329, + SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x380325, + SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x380327, + SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x380323, + SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x380328, + SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x380324, + SMSG_CRAFTING_ORDER_NPC_REWARD_INFO = 0x38032F, + SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x38032B, + SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x380326, + SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x38032E, + SMSG_CRAFT_ENCHANT_RESULT = 0x38032C, SMSG_CREATE_CHAR = 0x38019A, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x38022E, - SMSG_CREATOR_VISUALS_OVERRIDE = 0x380331, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x38022F, + SMSG_CREATOR_VISUALS_OVERRIDE = 0x380332, SMSG_CRITERIA_DELETED = 0x380180, SMSG_CRITERIA_UPDATE = 0x38017A, SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x38015B, - SMSG_CURRENCY_TRANSFER_LOG = 0x380343, - SMSG_CURRENCY_TRANSFER_RESULT = 0x380342, + SMSG_CURRENCY_TRANSFER_LOG = 0x380344, + SMSG_CURRENCY_TRANSFER_RESULT = 0x380343, SMSG_CUSTOM_LOAD_SCREEN = 0x380064, SMSG_DAILY_QUESTS_RESET = 0x4C0000, SMSG_DAMAGE_CALC_LOG = 0x4E0054, @@ -1272,8 +1272,8 @@ enum OpcodeServer : uint32 SMSG_DEFENSE_MESSAGE = 0x3D000C, SMSG_DELETE_CHAR = 0x38019B, SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x420022, - SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x380348, - SMSG_DESTROY_ARENA_UNIT = 0x3801D9, + SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x380349, + SMSG_DESTROY_ARENA_UNIT = 0x3801DA, SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x380192, SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x380020, SMSG_DISENCHANT_CREDIT = 0x38003F, @@ -1284,7 +1284,7 @@ enum OpcodeServer : uint32 SMSG_DISPLAY_PROMOTION = 0x3800E4, SMSG_DISPLAY_QUEST_POPUP = 0x4C001E, SMSG_DISPLAY_TOAST = 0x3800BC, - SMSG_DISPLAY_WORLD_TEXT = 0x380280, + SMSG_DISPLAY_WORLD_TEXT = 0x380281, SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x4E0053, SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x380079, SMSG_DROP_NEW_CONNECTION = 0x3F0004, @@ -1295,54 +1295,54 @@ enum OpcodeServer : uint32 SMSG_DUEL_OUT_OF_BOUNDS = 0x3E001C, SMSG_DUEL_REQUESTED = 0x3E001A, SMSG_DUEL_WINNER = 0x3E0020, - SMSG_DURABILITY_DAMAGE_DEATH = 0x3801DC, - SMSG_EMOTE = 0x38025B, + SMSG_DURABILITY_DAMAGE_DEATH = 0x3801DD, + SMSG_EMOTE = 0x38025C, SMSG_ENABLE_BARBER_SHOP = 0x380156, - SMSG_ENCHANTMENT_LOG = 0x3801AC, - SMSG_ENCOUNTER_END = 0x380216, - SMSG_ENCOUNTER_START = 0x380215, + SMSG_ENCHANTMENT_LOG = 0x3801AD, + SMSG_ENCOUNTER_END = 0x380217, + SMSG_ENCOUNTER_START = 0x380216, SMSG_END_LIGHTNING_STORM = 0x380143, SMSG_ENTER_ENCRYPTED_MODE = 0x3F0001, SMSG_ENUM_CHARACTERS_RESULT = 0x380018, - SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x380285, + SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x380286, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x4E000E, SMSG_EQUIPMENT_SET_ID = 0x38014C, SMSG_EXPECTED_SPAM_RECORDS = 0x3D0005, - SMSG_EXPLORATION_EXPERIENCE = 0x3801F6, + SMSG_EXPLORATION_EXPERIENCE = 0x3801F7, SMSG_EXPORT_ACCOUNT_PROFILE = 0x3800EC, - SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x3802F3, - SMSG_FACTION_BONUS_INFO = 0x3801BC, + SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x3802F4, + SMSG_FACTION_BONUS_INFO = 0x3801BD, SMSG_FAILED_PLAYER_CONDITION = 0x4B0002, - SMSG_FAILED_QUEST_TURN_IN = 0x3802A3, + SMSG_FAILED_QUEST_TURN_IN = 0x3802A4, SMSG_FEATURE_SYSTEM_STATUS = 0x380058, - SMSG_FEATURE_SYSTEM_STATUS2 = 0x380340, + SMSG_FEATURE_SYSTEM_STATUS2 = 0x380341, SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x380059, - SMSG_FEIGN_DEATH_RESISTED = 0x3801DB, + SMSG_FEIGN_DEATH_RESISTED = 0x3801DC, SMSG_FISH_ESCAPED = 0x38016A, SMSG_FISH_NOT_HOOKED = 0x380169, SMSG_FLIGHT_SPLINE_SYNC = 0x49005B, SMSG_FLUSH_COMBAT_LOG_FILE = 0x4E0010, SMSG_FORCED_DEATH_UPDATE = 0x38016E, - SMSG_FORCE_ANIM = 0x3801E8, - SMSG_FORCE_ANIMATIONS = 0x3801E9, + SMSG_FORCE_ANIM = 0x3801E9, + SMSG_FORCE_ANIMATIONS = 0x3801EA, SMSG_FORCE_OBJECT_RELINK = 0x3800E3, SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x38004A, SMSG_FORCE_SPAWN_TRACKING_UPDATE = 0x4C0021, - SMSG_FRIEND_STATUS = 0x38021E, - SMSG_GAIN_MAW_POWER = 0x380274, + SMSG_FRIEND_STATUS = 0x38021F, + SMSG_GAIN_MAW_POWER = 0x380275, SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x38005C, - SMSG_GAME_OBJECT_BASE = 0x3802BA, - SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x38030A, + SMSG_GAME_OBJECT_BASE = 0x3802BB, + SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x38030B, SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x38005D, SMSG_GAME_OBJECT_DESPAWN = 0x38005E, - SMSG_GAME_OBJECT_INTERACTION = 0x380309, + SMSG_GAME_OBJECT_INTERACTION = 0x38030A, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x4E003C, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x4E003B, - SMSG_GAME_OBJECT_RESET_STATE = 0x3801B6, - SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x380296, + SMSG_GAME_OBJECT_RESET_STATE = 0x3801B7, + SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x380297, SMSG_GAME_SPEED_SET = 0x38011C, - SMSG_GAME_TIME_SET = 0x3801A5, - SMSG_GAME_TIME_UPDATE = 0x3801A4, + SMSG_GAME_TIME_SET = 0x3801A6, + SMSG_GAME_TIME_UPDATE = 0x3801A5, SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x420024, SMSG_GARRISON_ADD_EVENT = 0x420048, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x420016, @@ -1414,18 +1414,18 @@ enum OpcodeServer : uint32 SMSG_GARRISON_UPGRADE_RESULT = 0x42000D, SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x42001F, SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x38001C, - SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x3802AE, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3801F8, + SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x3802AF, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3801F9, SMSG_GET_GARRISON_INFO_RESULT = 0x420000, - SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x380231, - SMSG_GET_REALM_HIDDEN_RESULT = 0x380337, - SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x38026C, - SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x380259, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x380230, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x38022C, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x380258, - SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x380281, - SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x380282, + SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x380232, + SMSG_GET_REALM_HIDDEN_RESULT = 0x380338, + SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x38026D, + SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x38025A, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x380231, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x38022D, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x380259, + SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x380282, + SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x380283, SMSG_GM_PLAYER_INFO = 0x4B000D, SMSG_GM_REQUEST_PLAYER_INFO = 0x4B0003, SMSG_GM_TICKET_CASE_STATUS = 0x38013E, @@ -1434,16 +1434,16 @@ enum OpcodeServer : uint32 SMSG_GOSSIP_COMPLETE = 0x4C0017, SMSG_GOSSIP_MESSAGE = 0x4C0018, SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x4C0028, - SMSG_GOSSIP_POI = 0x380229, + SMSG_GOSSIP_POI = 0x38022A, SMSG_GOSSIP_QUEST_UPDATE = 0x4C0019, SMSG_GOSSIP_REFRESH_OPTIONS = 0x4C0027, SMSG_GROUP_ACTION_THROTTLED = 0x380024, - SMSG_GROUP_AUTO_KICK = 0x380226, - SMSG_GROUP_DECLINE = 0x380222, - SMSG_GROUP_DESTROYED = 0x380225, + SMSG_GROUP_AUTO_KICK = 0x380227, + SMSG_GROUP_DECLINE = 0x380223, + SMSG_GROUP_DESTROYED = 0x380226, SMSG_GROUP_NEW_LEADER = 0x3800C5, - SMSG_GROUP_REQUEST_DECLINE = 0x380223, - SMSG_GROUP_UNINVITE = 0x380224, + SMSG_GROUP_REQUEST_DECLINE = 0x380224, + SMSG_GROUP_UNINVITE = 0x380225, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x44000D, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x44000C, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x44000F, @@ -1501,59 +1501,59 @@ enum OpcodeServer : uint32 SMSG_GUILD_REWARD_LIST = 0x440008, SMSG_GUILD_ROSTER = 0x440003, SMSG_GUILD_SEND_RANK_CHANGE = 0x440001, - SMSG_HARDCORE_DEATH_ALERT = 0x38033F, + SMSG_HARDCORE_DEATH_ALERT = 0x380340, SMSG_HEALTH_UPDATE = 0x38016B, SMSG_HIGHEST_THREAT_UPDATE = 0x380173, SMSG_HOTFIX_CONNECT = 0x3C0003, SMSG_HOTFIX_MESSAGE = 0x3C0002, - SMSG_INITIALIZE_FACTIONS = 0x3801BB, + SMSG_INITIALIZE_FACTIONS = 0x3801BC, SMSG_INITIAL_SETUP = 0x380014, - SMSG_INIT_WORLD_STATES = 0x3801DD, + SMSG_INIT_WORLD_STATES = 0x3801DE, SMSG_INSPECT_RESULT = 0x3800C9, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x380244, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x380243, - SMSG_INSTANCE_ENCOUNTER_END = 0x38024C, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x380242, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x38024E, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x38024D, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x380247, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x380246, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x38024B, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x38024F, - SMSG_INSTANCE_ENCOUNTER_START = 0x380248, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x380245, - SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x38024A, - SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x380249, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x380245, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x380244, + SMSG_INSTANCE_ENCOUNTER_END = 0x38024D, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x380243, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x38024F, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x38024E, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x380248, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x380247, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x38024C, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x380250, + SMSG_INSTANCE_ENCOUNTER_START = 0x380249, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x380246, + SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x38024B, + SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x38024A, SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x380193, SMSG_INSTANCE_INFO = 0x3800CC, SMSG_INSTANCE_RESET = 0x380121, SMSG_INSTANCE_RESET_FAILED = 0x380122, - SMSG_INSTANCE_SAVE_CREATED = 0x380214, + SMSG_INSTANCE_SAVE_CREATED = 0x380215, SMSG_INTERRUPT_POWER_REGEN = 0x4E004A, SMSG_INVALIDATE_PAGE_TEXT = 0x3C000A, SMSG_INVALIDATE_PLAYER = 0x4B0007, - SMSG_INVALID_PROMOTION_CODE = 0x3801EA, + SMSG_INVALID_PROMOTION_CODE = 0x3801EB, SMSG_INVENTORY_CHANGE_FAILURE = 0x4F0005, - SMSG_INVENTORY_FIXUP_COMPLETE = 0x3802A5, - SMSG_INVENTORY_FULL_OVERFLOW = 0x3802B6, - SMSG_ISLAND_AZERITE_GAIN = 0x3801F3, - SMSG_ISLAND_COMPLETE = 0x3801F4, + SMSG_INVENTORY_FIXUP_COMPLETE = 0x3802A6, + SMSG_INVENTORY_FULL_OVERFLOW = 0x3802B7, + SMSG_ISLAND_AZERITE_GAIN = 0x3801F4, + SMSG_ISLAND_COMPLETE = 0x3801F5, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x4C0004, SMSG_ITEM_CHANGED = 0x380184, - SMSG_ITEM_COOLDOWN = 0x38025A, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x3801EC, + SMSG_ITEM_COOLDOWN = 0x38025B, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x3801ED, SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x380034, - SMSG_ITEM_INTERACTION_COMPLETE = 0x3802EB, + SMSG_ITEM_INTERACTION_COMPLETE = 0x3802EC, SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x380032, SMSG_ITEM_PUSH_RESULT = 0x3800BB, - SMSG_ITEM_TIME_UPDATE = 0x3801EB, + SMSG_ITEM_TIME_UPDATE = 0x3801EC, SMSG_KICK_REASON = 0x380124, - SMSG_LATENCY_REPORT_PING = 0x3802FB, + SMSG_LATENCY_REPORT_PING = 0x3802FC, SMSG_LEARNED_SPELLS = 0x4E003E, SMSG_LEARN_PVP_TALENT_FAILED = 0x38006D, SMSG_LEARN_TALENT_FAILED = 0x38006C, - SMSG_LEGACY_LOOT_RULES = 0x3802BB, - SMSG_LEVEL_LINKING_RESULT = 0x3802D1, + SMSG_LEGACY_LOOT_RULES = 0x3802BC, + SMSG_LEVEL_LINKING_RESULT = 0x3802D2, SMSG_LEVEL_UP_INFO = 0x380182, SMSG_LFG_BOOT_PLAYER = 0x460019, SMSG_LFG_DISABLED = 0x460017, @@ -1583,26 +1583,26 @@ enum OpcodeServer : uint32 SMSG_LFG_SLOT_INVALID = 0x460014, SMSG_LFG_TELEPORT_DENIED = 0x460016, SMSG_LFG_UPDATE_STATUS = 0x460008, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x380206, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x380205, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3801F9, - SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x380207, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x380207, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x380206, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x3801FA, + SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x380208, SMSG_LOAD_CUF_PROFILES = 0x380055, - SMSG_LOAD_EQUIPMENT_SET = 0x3801A7, - SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x38030C, - SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x38030D, - SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x38030E, - SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED = 0x380310, - SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT = 0x380311, - SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x38030F, - SMSG_LOGIN_SET_TIME_SPEED = 0x3801A6, + SMSG_LOAD_EQUIPMENT_SET = 0x3801A8, + SMSG_LOBBY_MATCHMAKER_LOBBY_ACQUIRED_SERVER = 0x38030D, + SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x38030E, + SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x38030F, + SMSG_LOBBY_MATCHMAKER_QUEUE_PROPOSED = 0x380311, + SMSG_LOBBY_MATCHMAKER_QUEUE_RESULT = 0x380312, + SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x380310, + SMSG_LOGIN_SET_TIME_SPEED = 0x3801A7, SMSG_LOGIN_VERIFY_WORLD = 0x38002F, SMSG_LOGOUT_CANCEL_ACK = 0x380120, SMSG_LOGOUT_COMPLETE = 0x38011F, SMSG_LOGOUT_RESPONSE = 0x38011E, SMSG_LOG_XP_GAIN = 0x38017E, SMSG_LOOT_ALL_PASSED = 0x3800B9, - SMSG_LOOT_LIST = 0x3801D8, + SMSG_LOOT_LIST = 0x3801D9, SMSG_LOOT_MONEY_NOTIFY = 0x3800B4, SMSG_LOOT_RELEASE = 0x3800B3, SMSG_LOOT_RELEASE_ALL = 0x3800B2, @@ -1613,21 +1613,21 @@ enum OpcodeServer : uint32 SMSG_LOOT_ROLL_WON = 0x3800BA, SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x38010A, SMSG_MAIL_COMMAND_RESULT = 0x3800D3, - SMSG_MAIL_LIST_RESULT = 0x3801ED, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x3801EE, + SMSG_MAIL_LIST_RESULT = 0x3801EE, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x3801EF, SMSG_MAP_OBJECTIVES_INIT = 0x3E002A, SMSG_MAP_OBJ_EVENTS = 0x38005F, SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x3800B7, - SMSG_MEETING_STONE_FAILED = 0x380312, + SMSG_MEETING_STONE_FAILED = 0x380313, SMSG_MESSAGE_BOX = 0x38000A, SMSG_MINIMAP_PING = 0x380168, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x4E0004, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x4E0003, SMSG_MISSILE_CANCEL = 0x380060, - SMSG_MODIFY_COOLDOWN = 0x3801FB, + SMSG_MODIFY_COOLDOWN = 0x3801FC, SMSG_MOTD = 0x3D0003, SMSG_MOUNT_RESULT = 0x38000F, - SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x3802C1, + SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x3802C2, SMSG_MOVE_ADD_IMPULSE = 0x490062, SMSG_MOVE_APPLY_INERTIA = 0x49005E, SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x490045, @@ -1741,52 +1741,52 @@ enum OpcodeServer : uint32 SMSG_MOVE_UPDATE_TELEPORT = 0x49000F, SMSG_MOVE_UPDATE_TURN_RATE = 0x49000B, SMSG_MOVE_UPDATE_WALK_SPEED = 0x490006, - SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x380271, - SMSG_MULTI_FLOOR_NEW_FLOOR = 0x380270, + SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x380272, + SMSG_MULTI_FLOOR_NEW_FLOOR = 0x380271, SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x3800A3, SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x3800A5, SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x3800AA, SMSG_MYTHIC_PLUS_SEASON_DATA = 0x3800A4, SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x380074, - SMSG_NEW_DATA_BUILD = 0x380336, + SMSG_NEW_DATA_BUILD = 0x380337, SMSG_NEW_TAXI_PATH = 0x380119, SMSG_NEW_WORLD = 0x38002B, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x4E0034, SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x380145, SMSG_NOTIFY_MONEY = 0x380031, SMSG_NOTIFY_RECEIVED_MAIL = 0x3800D4, - SMSG_NPC_INTERACTION_OPEN_RESULT = 0x380308, + SMSG_NPC_INTERACTION_OPEN_RESULT = 0x380309, SMSG_OFFER_PETITION_ERROR = 0x380150, SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x38017F, SMSG_ON_MONSTER_MOVE = 0x490002, - SMSG_OPEN_ARTIFACT_FORGE = 0x380235, + SMSG_OPEN_ARTIFACT_FORGE = 0x380236, SMSG_OPEN_CONTAINER = 0x4F0006, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x460015, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x38022D, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x38022E, SMSG_OVERRIDE_LIGHT = 0x380155, - SMSG_PAGE_TEXT = 0x3801B2, - SMSG_PARTY_COMMAND_RESULT = 0x380227, - SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x38034B, + SMSG_PAGE_TEXT = 0x3801B3, + SMSG_PARTY_COMMAND_RESULT = 0x380228, + SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x38034C, SMSG_PARTY_INVITE = 0x380056, - SMSG_PARTY_KILL_LOG = 0x3801F1, - SMSG_PARTY_MEMBER_FULL_STATE = 0x3801F0, - SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x3801EF, - SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x3802F1, + SMSG_PARTY_KILL_LOG = 0x3801F2, + SMSG_PARTY_MEMBER_FULL_STATE = 0x3801F1, + SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x3801F0, + SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x3802F2, SMSG_PARTY_UPDATE = 0x38008C, SMSG_PAST_TIME_EVENTS = 0x38005B, - SMSG_PAUSE_MIRROR_TIMER = 0x3801A9, + SMSG_PAUSE_MIRROR_TIMER = 0x3801AA, SMSG_PENDING_RAID_LOCK = 0x380191, - SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x380305, - SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x380301, - SMSG_PERKS_PROGRAM_DISABLED = 0x380306, - SMSG_PERKS_PROGRAM_RESULT = 0x380302, - SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x380300, + SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x380306, + SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x380302, + SMSG_PERKS_PROGRAM_DISABLED = 0x380307, + SMSG_PERKS_PROGRAM_RESULT = 0x380303, + SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x380301, SMSG_PETITION_ALREADY_SIGNED = 0x380037, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x440042, SMSG_PETITION_SHOW_LIST = 0x380158, SMSG_PETITION_SHOW_SIGNATURES = 0x380159, - SMSG_PETITION_SIGN_RESULTS = 0x3801E3, - SMSG_PET_ACTION_FEEDBACK = 0x3801E0, + SMSG_PETITION_SIGN_RESULTS = 0x3801E4, + SMSG_PET_ACTION_FEEDBACK = 0x3801E1, SMSG_PET_ACTION_SOUND = 0x38013B, SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x38009A, SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x38010F, @@ -1839,13 +1839,13 @@ enum OpcodeServer : uint32 SMSG_PLAYER_SKINNED = 0x4B000E, SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x4B0015, SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x4B0014, - SMSG_PLAY_MUSIC = 0x380200, - SMSG_PLAY_OBJECT_SOUND = 0x380202, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x3801C8, + SMSG_PLAY_MUSIC = 0x380201, + SMSG_PLAY_OBJECT_SOUND = 0x380203, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x3801C9, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x4E0038, SMSG_PLAY_SCENE = 0x3800CE, - SMSG_PLAY_SOUND = 0x3801FF, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x380203, + SMSG_PLAY_SOUND = 0x380200, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x380204, SMSG_PLAY_SPELL_VISUAL = 0x4E0036, SMSG_PLAY_SPELL_VISUAL_KIT = 0x4E003A, SMSG_PLAY_TIME_WARNING = 0x380197, @@ -1853,11 +1853,11 @@ enum OpcodeServer : uint32 SMSG_POWER_UPDATE = 0x38016C, SMSG_PRELOAD_CHILD_MAP = 0x38000D, SMSG_PRELOAD_WORLD = 0x38002C, - SMSG_PREPOPULATE_NAME_CACHE = 0x3802C4, - SMSG_PRE_RESSURECT = 0x3801FE, + SMSG_PREPOPULATE_NAME_CACHE = 0x3802C5, + SMSG_PRE_RESSURECT = 0x3801FF, SMSG_PRINT_NOTIFICATION = 0x380063, - SMSG_PROC_RESIST = 0x3801F2, - SMSG_PROFESSION_GOSSIP = 0x380291, + SMSG_PROC_RESIST = 0x3801F3, + SMSG_PROFESSION_GOSSIP = 0x380292, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x4E0042, SMSG_PVP_CREDIT = 0x3E0024, SMSG_PVP_MATCH_COMPLETE = 0x3E002F, @@ -1866,7 +1866,7 @@ enum OpcodeServer : uint32 SMSG_PVP_MATCH_START = 0x3E002D, SMSG_PVP_MATCH_STATISTICS = 0x3E0010, SMSG_PVP_OPTIONS_ENABLED = 0x3E0013, - SMSG_PVP_TIER_RECORD = 0x3802FC, + SMSG_PVP_TIER_RECORD = 0x3802FD, SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x3C000C, SMSG_QUERY_CREATURE_RESPONSE = 0x3C0006, SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x3C0007, @@ -1901,22 +1901,22 @@ enum OpcodeServer : uint32 SMSG_QUEST_POI_QUERY_RESPONSE = 0x4C001D, SMSG_QUEST_POI_UPDATE_RESPONSE = 0x4C001F, SMSG_QUEST_PUSH_RESULT = 0x4C0010, - SMSG_QUEST_SESSION_INFO_RESPONSE = 0x3802E7, - SMSG_QUEST_SESSION_READY_CHECK = 0x3802D5, - SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x3802D6, - SMSG_QUEST_SESSION_RESULT = 0x3802D4, + SMSG_QUEST_SESSION_INFO_RESPONSE = 0x3802E8, + SMSG_QUEST_SESSION_READY_CHECK = 0x3802D6, + SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x3802D7, + SMSG_QUEST_SESSION_RESULT = 0x3802D5, SMSG_QUEST_UPDATE_ADD_CREDIT = 0x4C000C, SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x4C000D, SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x4C000E, SMSG_QUEST_UPDATE_COMPLETE = 0x4C0009, SMSG_QUEST_UPDATE_FAILED = 0x4C000A, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x4C000B, - SMSG_QUEUE_SUMMARY_UPDATE = 0x3802A4, - SMSG_RAF_ACCOUNT_INFO = 0x3802D2, - SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x3802E3, - SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x380333, - SMSG_RAID_DIFFICULTY_SET = 0x38023F, - SMSG_RAID_GROUP_ONLY = 0x380241, + SMSG_QUEUE_SUMMARY_UPDATE = 0x3802A5, + SMSG_RAF_ACCOUNT_INFO = 0x3802D3, + SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x3802E4, + SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x380334, + SMSG_RAID_DIFFICULTY_SET = 0x380240, + SMSG_RAID_GROUP_ONLY = 0x380242, SMSG_RAID_INSTANCE_MESSAGE = 0x3D000A, SMSG_RAID_MARKERS_CHANGED = 0x380038, SMSG_RANDOM_ROLL = 0x3800C8, @@ -1924,34 +1924,34 @@ enum OpcodeServer : uint32 SMSG_READY_CHECK_COMPLETED = 0x380090, SMSG_READY_CHECK_RESPONSE = 0x38008F, SMSG_READY_CHECK_STARTED = 0x38008E, - SMSG_READ_ITEM_RESULT_FAILED = 0x38023B, - SMSG_READ_ITEM_RESULT_OK = 0x380232, + SMSG_READ_ITEM_RESULT_FAILED = 0x38023C, + SMSG_READ_ITEM_RESULT_OK = 0x380233, SMSG_REALM_QUERY_RESPONSE = 0x3C0005, - SMSG_REATTACH_RESURRECT = 0x3801E2, + SMSG_REATTACH_RESURRECT = 0x3801E3, SMSG_RECEIVE_PING_UNIT = 0x380039, SMSG_RECEIVE_PING_WORLD_POINT = 0x38003A, - SMSG_RECRAFT_ITEM_RESULT = 0x380329, + SMSG_RECRAFT_ITEM_RESULT = 0x38032A, SMSG_RECRUIT_A_FRIEND_FAILURE = 0x38015A, SMSG_REFRESH_COMPONENT = 0x3800E9, SMSG_REGIONWIDE_CHARACTER_MAIL_DATA = 0x38001A, SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA = 0x380019, SMSG_REMOVE_ITEM_PASSIVE = 0x380043, SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x4E0043, - SMSG_REPLACE_TROPHY_RESPONSE = 0x380257, + SMSG_REPLACE_TROPHY_RESPONSE = 0x380258, SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x4B0009, SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x380025, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x3E0014, SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x3E0015, SMSG_RESET_COMPRESSION_CONTEXT = 0x3F0007, SMSG_RESET_FAILED_NOTIFY = 0x380151, - SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x380330, + SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x380331, SMSG_RESET_QUEST_POI = 0x4C0020, SMSG_RESET_RANGED_COMBAT_TIMER = 0x3E0023, SMSG_RESET_WEEKLY_CURRENCY = 0x380009, SMSG_RESPEC_WIPE_CONFIRM = 0x3800AB, SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x380006, - SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x380303, - SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x380304, + SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x380304, + SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x380305, SMSG_RESTART_GLOBAL_COOLDOWN = 0x4E0052, SMSG_RESTRICTED_ACCOUNT_WARNING = 0x380052, SMSG_RESUME_CAST = 0x4E002C, @@ -1960,21 +1960,21 @@ enum OpcodeServer : uint32 SMSG_RESUME_TOKEN = 0x380041, SMSG_RESURRECT_REQUEST = 0x380012, SMSG_RESYNC_RUNES = 0x4E0050, - SMSG_RETURNING_PLAYER_PROMPT = 0x38023A, - SMSG_RETURN_APPLICANT_LIST = 0x3802C8, - SMSG_RETURN_RECRUITING_CLUBS = 0x3802C7, + SMSG_RETURNING_PLAYER_PROMPT = 0x38023B, + SMSG_RETURN_APPLICANT_LIST = 0x3802C9, + SMSG_RETURN_RECRUITING_CLUBS = 0x3802C8, SMSG_ROLE_CHANGED_INFORM = 0x380021, SMSG_ROLE_CHOSEN = 0x46001D, SMSG_ROLE_POLL_INFORM = 0x380022, - SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x380290, + SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x380291, SMSG_RUNE_REGEN_DEBUG = 0x38004F, - SMSG_SCENARIO_COMPLETED = 0x38027E, + SMSG_SCENARIO_COMPLETED = 0x38027F, SMSG_SCENARIO_POIS = 0x3800CB, SMSG_SCENARIO_PROGRESS_UPDATE = 0x3800C4, - SMSG_SCENARIO_SHOW_CRITERIA = 0x380294, + SMSG_SCENARIO_SHOW_CRITERIA = 0x380295, SMSG_SCENARIO_STATE = 0x3800C3, - SMSG_SCENARIO_UI_UPDATE = 0x380293, - SMSG_SCENARIO_VACATE = 0x38023C, + SMSG_SCENARIO_UI_UPDATE = 0x380294, + SMSG_SCENARIO_VACATE = 0x38023D, SMSG_SCENE_OBJECT_EVENT = 0x38007A, SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x38007F, SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x380080, @@ -1995,50 +1995,50 @@ enum OpcodeServer : uint32 SMSG_SEND_UNLEARN_SPELLS = 0x4E001C, SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x3800E6, SMSG_SERVER_TIME = 0x38011D, - SMSG_SERVER_TIME_OFFSET = 0x3801AD, + SMSG_SERVER_TIME_OFFSET = 0x3801AE, SMSG_SETUP_COMBAT_LOG_FILE_FLUSH = 0x4E000F, SMSG_SETUP_CURRENCY = 0x380007, - SMSG_SET_AI_ANIM_KIT = 0x3801C7, - SMSG_SET_ANIM_TIER = 0x3801CB, + SMSG_SET_AI_ANIM_KIT = 0x3801C8, + SMSG_SET_ANIM_TIER = 0x3801CC, SMSG_SET_CHR_UPGRADE_TIER = 0x380077, SMSG_SET_CURRENCY = 0x380008, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x460012, SMSG_SET_DUNGEON_DIFFICULTY = 0x38013F, SMSG_SET_FACTION_AT_WAR = 0x380199, - SMSG_SET_FACTION_NOT_VISIBLE = 0x3801C2, - SMSG_SET_FACTION_STANDING = 0x3801C3, - SMSG_SET_FACTION_VISIBLE = 0x3801C1, + SMSG_SET_FACTION_NOT_VISIBLE = 0x3801C3, + SMSG_SET_FACTION_STANDING = 0x3801C4, + SMSG_SET_FACTION_VISIBLE = 0x3801C2, SMSG_SET_FLAT_SPELL_MODIFIER = 0x4E0027, SMSG_SET_ITEM_PURCHASE_DATA = 0x380033, - SMSG_SET_LOOT_METHOD_FAILED = 0x380262, + SMSG_SET_LOOT_METHOD_FAILED = 0x380263, SMSG_SET_MAX_WEEKLY_QUANTITY = 0x380036, - SMSG_SET_MELEE_ANIM_KIT = 0x3801CA, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x3801C9, + SMSG_SET_MELEE_ANIM_KIT = 0x3801CB, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x3801CA, SMSG_SET_PCT_SPELL_MODIFIER = 0x4E0028, SMSG_SET_PET_SPECIALIZATION = 0x3800BD, SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x4B000B, SMSG_SET_PLAY_HOVER_ANIM = 0x380053, - SMSG_SET_PROFICIENCY = 0x3801CC, - SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x3802DB, + SMSG_SET_PROFICIENCY = 0x3801CD, + SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x3802DC, SMSG_SET_SHIPMENT_READY_RESPONSE = 0x42003A, SMSG_SET_SPELL_CHARGES = 0x4E0018, SMSG_SET_TIME_ZONE_INFORMATION = 0x380112, SMSG_SET_VEHICLE_REC_ID = 0x380190, - SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x380307, + SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x380308, SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x42003B, - SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x380349, - SMSG_SHOW_DELVES_DISPLAY_UI = 0x380347, + SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x38034A, + SMSG_SHOW_DELVES_DISPLAY_UI = 0x380348, SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x380073, SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x4C0015, SMSG_SHOW_TAXI_NODES = 0x380167, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x380208, - SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x380313, - SMSG_SOCKET_GEMS_FAILURE = 0x3801BF, - SMSG_SOCKET_GEMS_SUCCESS = 0x3801BE, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x380209, + SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x380314, + SMSG_SOCKET_GEMS_FAILURE = 0x3801C0, + SMSG_SOCKET_GEMS_SUCCESS = 0x3801BF, SMSG_SPECIAL_MOUNT_ANIM = 0x38013A, - SMSG_SPECTATE_END = 0x380335, - SMSG_SPECTATE_PLAYER = 0x380334, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x3801B1, + SMSG_SPECTATE_END = 0x380336, + SMSG_SPECTATE_PLAYER = 0x380335, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x3801B2, SMSG_SPELL_ABSORB_LOG = 0x4E000C, SMSG_SPELL_CATEGORY_COOLDOWN = 0x4E0006, SMSG_SPELL_CHANNEL_START = 0x4E0022, @@ -2067,35 +2067,35 @@ enum OpcodeServer : uint32 SMSG_SPELL_PREPARE = 0x4E0029, SMSG_SPELL_START = 0x4E002B, SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x380065, - SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x3802ED, - SMSG_STAND_STATE_UPDATE = 0x3801B5, + SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x3802EE, + SMSG_STAND_STATE_UPDATE = 0x3801B6, SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x38006B, SMSG_START_ELAPSED_TIMER = 0x38009C, SMSG_START_ELAPSED_TIMERS = 0x38009E, SMSG_START_LIGHTNING_STORM = 0x380142, SMSG_START_LOOT_ROLL = 0x3800B5, - SMSG_START_MIRROR_TIMER = 0x3801A8, + SMSG_START_MIRROR_TIMER = 0x3801A9, SMSG_START_TIMER = 0x38003D, SMSG_STOP_ELAPSED_TIMER = 0x38009D, - SMSG_STOP_MIRROR_TIMER = 0x3801AA, - SMSG_STOP_SPEAKERBOT_SOUND = 0x380204, + SMSG_STOP_MIRROR_TIMER = 0x3801AB, + SMSG_STOP_SPEAKERBOT_SOUND = 0x380205, SMSG_STOP_TIMER = 0x38003E, SMSG_STREAMING_MOVIES = 0x38003C, - SMSG_SUGGEST_INVITE_INFORM = 0x380228, + SMSG_SUGGEST_INVITE_INFORM = 0x380229, SMSG_SUMMON_CANCEL = 0x38014B, SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x380023, - SMSG_SUMMON_REQUEST = 0x3801B9, + SMSG_SUMMON_REQUEST = 0x3801BA, SMSG_SUPERCEDED_SPELLS = 0x4E003D, SMSG_SUSPEND_COMMS = 0x3F0002, SMSG_SUSPEND_TOKEN = 0x380040, - SMSG_SYNC_WOW_ENTITLEMENTS = 0x3802E5, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x3801B0, + SMSG_SYNC_WOW_ENTITLEMENTS = 0x3802E6, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x3801B1, SMSG_TAXI_NODE_STATUS = 0x380117, SMSG_TEXT_EMOTE = 0x380115, SMSG_THREAT_CLEAR = 0x380176, SMSG_THREAT_REMOVE = 0x380175, SMSG_THREAT_UPDATE = 0x380174, - SMSG_TIMERUNNING_SEASON_ENDED = 0x38034A, + SMSG_TIMERUNNING_SEASON_ENDED = 0x38034B, SMSG_TIME_ADJUSTMENT = 0x490001, SMSG_TIME_SYNC_REQUEST = 0x490000, SMSG_TITLE_EARNED = 0x380171, @@ -2112,50 +2112,51 @@ enum OpcodeServer : uint32 SMSG_TRANSFER_ABORTED = 0x38019C, SMSG_TRANSFER_PENDING = 0x380066, SMSG_TREASURE_PICKER_RESPONSE = 0x3C0011, - SMSG_TRIGGER_CINEMATIC = 0x38025C, + SMSG_TRIGGER_CINEMATIC = 0x38025D, SMSG_TRIGGER_MOVIE = 0x380165, - SMSG_TURN_IN_PETITION_RESULT = 0x3801E5, - SMSG_TUTORIAL_FLAGS = 0x380250, - SMSG_UI_ACTION = 0x380201, + SMSG_TURN_IN_PETITION_RESULT = 0x3801E6, + SMSG_TUTORIAL_FLAGS = 0x380251, + SMSG_UI_ACTION = 0x380202, SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x4C0023, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x38025D, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x38025E, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x38025E, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x38025F, SMSG_UNLEARNED_SPELLS = 0x4E003F, SMSG_UNLOAD_CHILD_MAP = 0x38000E, - SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x3802FD, + SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x3802FE, SMSG_UPDATE_ACCOUNT_DATA = 0x3801A2, + SMSG_UPDATE_ACCOUNT_DATA_COMPLETE = 0x3801A3, SMSG_UPDATE_ACTION_BUTTONS = 0x380078, - SMSG_UPDATE_BNET_SESSION_KEY = 0x3802B5, + SMSG_UPDATE_BNET_SESSION_KEY = 0x3802B6, SMSG_UPDATE_CAPTURE_POINT = 0x3E0007, - SMSG_UPDATE_CELESTIAL_BODY = 0x3802B1, - SMSG_UPDATE_CHARACTER_FLAGS = 0x380256, - SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x3801FD, - SMSG_UPDATE_COOLDOWN = 0x3801FC, + SMSG_UPDATE_CELESTIAL_BODY = 0x3802B2, + SMSG_UPDATE_CHARACTER_FLAGS = 0x380257, + SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x3801FE, + SMSG_UPDATE_COOLDOWN = 0x3801FD, SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x420038, SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x420021, SMSG_UPDATE_EXPANSION_LEVEL = 0x3800DE, - SMSG_UPDATE_GAME_TIME_STATE = 0x3802B8, + SMSG_UPDATE_GAME_TIME_STATE = 0x3802B9, SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x380144, SMSG_UPDATE_LAST_INSTANCE = 0x380123, SMSG_UPDATE_OBJECT = 0x480000, SMSG_UPDATE_PRIMARY_SPEC = 0x380070, SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x38008D, SMSG_UPDATE_TALENT_DATA = 0x38006F, - SMSG_UPDATE_WORLD_STATE = 0x3801DF, + SMSG_UPDATE_WORLD_STATE = 0x3801E0, SMSG_USERLIST_ADD = 0x3D000F, SMSG_USERLIST_REMOVE = 0x3D0010, SMSG_USERLIST_UPDATE = 0x3D0011, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x3801E6, - SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x3802AC, - SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x3802AA, - SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x3802A9, - SMSG_VAS_PURCHASE_COMPLETE = 0x380284, - SMSG_VAS_PURCHASE_STATE_UPDATE = 0x380283, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x3801E7, + SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x3802AD, + SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x3802AB, + SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x3802AA, + SMSG_VAS_PURCHASE_COMPLETE = 0x380285, + SMSG_VAS_PURCHASE_STATE_UPDATE = 0x380284, SMSG_VENDOR_INVENTORY = 0x380051, SMSG_VIGNETTE_UPDATE = 0x4B0010, - SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x3802B0, - SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x3802F8, - SMSG_VOICE_LOGIN_RESPONSE = 0x3802AF, + SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x3802B1, + SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x3802F9, + SMSG_VOICE_LOGIN_RESPONSE = 0x3802B0, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x4F0004, SMSG_VOID_STORAGE_CONTENTS = 0x4F0001, SMSG_VOID_STORAGE_FAILED = 0x4F0000, @@ -2164,31 +2165,31 @@ enum OpcodeServer : uint32 SMSG_WAIT_QUEUE_FINISH = 0x380003, SMSG_WAIT_QUEUE_UPDATE = 0x380002, SMSG_WARDEN3_DATA = 0x38000B, - SMSG_WARDEN3_DISABLED = 0x3802B3, - SMSG_WARDEN3_ENABLED = 0x3802B2, - SMSG_WARFRONT_COMPLETE = 0x3801F5, + SMSG_WARDEN3_DISABLED = 0x3802B4, + SMSG_WARDEN3_ENABLED = 0x3802B3, + SMSG_WARFRONT_COMPLETE = 0x3801F6, SMSG_WARGAME_REQUEST_OPPONENT_RESPONSE = 0x3E0012, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x3E0011, SMSG_WEATHER = 0x380141, - SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x3802F0, - SMSG_WEEKLY_REWARDS_RESULT = 0x3802EE, - SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x3802EF, + SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x3802F1, + SMSG_WEEKLY_REWARDS_RESULT = 0x3802EF, + SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x3802F0, SMSG_WHO = 0x3D0002, SMSG_WHO_IS = 0x380140, - SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x3802B7, + SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x3802B8, SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x4B0017, SMSG_WORLD_SERVER_INFO = 0x380045, - SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x3802E6, - SMSG_WOW_LABS_AREA_INFO = 0x380318, - SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x380314, - SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x380315, - SMSG_WOW_LABS_PARTY_ERROR = 0x380321, - SMSG_WOW_LABS_SET_AREA_ID_RESULT = 0x380316, - SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x38031A, - SMSG_WOW_LABS_SET_SELECTED_AREA_ID = 0x380317, - SMSG_XP_AWARDED_FROM_CURRENCY = 0x38032F, + SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x3802E7, + SMSG_WOW_LABS_AREA_INFO = 0x380319, + SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_END = 0x380315, + SMSG_WOW_LABS_NOTIFY_PLAYERS_MATCH_STATE_CHANGED = 0x380316, + SMSG_WOW_LABS_PARTY_ERROR = 0x380322, + SMSG_WOW_LABS_SET_AREA_ID_RESULT = 0x380317, + SMSG_WOW_LABS_SET_PREDICTION_CIRCLE = 0x38031B, + SMSG_WOW_LABS_SET_SELECTED_AREA_ID = 0x380318, + SMSG_XP_AWARDED_FROM_CURRENCY = 0x380330, SMSG_XP_GAIN_ABORTED = 0x380062, - SMSG_XP_GAIN_ENABLED = 0x380240, + SMSG_XP_GAIN_ENABLED = 0x380241, SMSG_ZONE_UNDER_ATTACK = 0x3D000B, // Opcodes that are not generated automatically @@ -2207,23 +2208,23 @@ inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeServer opcode) uint32 idInGroup = opcode & 0xFFFF; switch (opcode >> 16) { - case 0x38: return idInGroup < 847 ? idInGroup + 0 : -1; - case 0x39: return idInGroup < 10 ? idInGroup + 847 : -1; - case 0x3C: return idInGroup < 18 ? idInGroup + 857 : -1; - case 0x3D: return idInGroup < 36 ? idInGroup + 875 : -1; - case 0x3E: return idInGroup < 49 ? idInGroup + 911 : -1; - case 0x3F: return idInGroup < 11 ? idInGroup + 960 : -1; - case 0x40: return idInGroup < 12 ? idInGroup + 971 : -1; - case 0x42: return idInGroup < 82 ? idInGroup + 983 : -1; - case 0x44: return idInGroup < 71 ? idInGroup + 1065 : -1; - case 0x46: return idInGroup < 33 ? idInGroup + 1136 : -1; - case 0x48: return idInGroup < 1 ? idInGroup + 1169 : -1; - case 0x49: return idInGroup < 120 ? idInGroup + 1170 : -1; - case 0x4B: return idInGroup < 48 ? idInGroup + 1290 : -1; - case 0x4C: return idInGroup < 41 ? idInGroup + 1338 : -1; - case 0x4E: return idInGroup < 85 ? idInGroup + 1379 : -1; - case 0x4F: return idInGroup < 8 ? idInGroup + 1464 : -1; - case 0x51: return idInGroup < 1 ? idInGroup + 1472 : -1; + case 0x38: return idInGroup < 848 ? idInGroup + 0 : -1; + case 0x39: return idInGroup < 10 ? idInGroup + 848 : -1; + case 0x3C: return idInGroup < 18 ? idInGroup + 858 : -1; + case 0x3D: return idInGroup < 36 ? idInGroup + 876 : -1; + case 0x3E: return idInGroup < 49 ? idInGroup + 912 : -1; + case 0x3F: return idInGroup < 11 ? idInGroup + 961 : -1; + case 0x40: return idInGroup < 12 ? idInGroup + 972 : -1; + case 0x42: return idInGroup < 82 ? idInGroup + 984 : -1; + case 0x44: return idInGroup < 71 ? idInGroup + 1066 : -1; + case 0x46: return idInGroup < 33 ? idInGroup + 1137 : -1; + case 0x48: return idInGroup < 1 ? idInGroup + 1170 : -1; + case 0x49: return idInGroup < 120 ? idInGroup + 1171 : -1; + case 0x4B: return idInGroup < 48 ? idInGroup + 1291 : -1; + case 0x4C: return idInGroup < 41 ? idInGroup + 1339 : -1; + case 0x4E: return idInGroup < 85 ? idInGroup + 1380 : -1; + case 0x4F: return idInGroup < 8 ? idInGroup + 1465 : -1; + case 0x51: return idInGroup < 1 ? idInGroup + 1473 : -1; default: return -1; } } diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h index d36c88f4384..4590a7fab8f 100644 --- a/src/tools/map_extractor/loadlib/DBFilesClientList.h +++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h @@ -84,6 +84,9 @@ constexpr DB2FileInfo DBFilesClientList[] = { .FileDataId = 1036203, .Name = "ArtifactQuestXP.db2" }, { .FileDataId = 1600114, .Name = "ArtifactTier.db2" }, { .FileDataId = 1094540, .Name = "ArtifactUnlock.db2" }, + { .FileDataId = 6698666, .Name = "AssistedCombat.db2" }, + { .FileDataId = 6698667, .Name = "AssistedCombatRule.db2" }, + { .FileDataId = 6698668, .Name = "AssistedCombatStep.db2" }, { .FileDataId = 1237439, .Name = "AuctionHouse.db2" }, { .FileDataId = 4366440, .Name = "AuctionHouseCategory.db2" }, { .FileDataId = 1846046, .Name = "AzeriteEmpoweredItem.db2" }, @@ -229,6 +232,7 @@ constexpr DB2FileInfo DBFilesClientList[] = { .FileDataId = 4668112, .Name = "ContentRestrictionRule.db2" }, { .FileDataId = 4281307, .Name = "ContentRestrictionRuleSet.db2" }, { .FileDataId = 1962930, .Name = "ContentTuning.db2" }, + { .FileDataId = 7001981, .Name = "ContentTuningXDifficulty.db2" }, { .FileDataId = 2976765, .Name = "ContentTuningXExpected.db2" }, { .FileDataId = 4659576, .Name = "ContentTuningXLabel.db2" }, { .FileDataId = 1587153, .Name = "Contribution.db2" }, |