diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-04-25 22:50:11 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-04-25 22:50:11 +0200 |
commit | f9bf082be962d45de79f936d625f644253e9b810 (patch) | |
tree | a7c40c0b5baf522d04896721df5c5d91e25c834e /src | |
parent | 05709a24976cc4cd378ee62bdfec52510892aa5b (diff) |
Core: Updated to 11.1.5
Diffstat (limited to 'src')
42 files changed, 3462 insertions, 706 deletions
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index d0a47a6ba82..94f1ced8408 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -580,7 +580,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // DungeonEncounter.db2 PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, CompleteWorldStateID, Bit, Flags, " - "SpellIconFileID, Faction FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "SpellIconFileID, Faction, Unknown1115 FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT MAX(ID) + 1 FROM dungeon_encounter", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -1246,8 +1246,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_NAMES_RESERVED_LOCALE, "SELECT MAX(ID) + 1 FROM names_reserved_locale", CONNECTION_SYNCH); // NumTalentsAtLevel.db2 - PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter, Unknown1115" + " FROM num_talents_at_level WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT MAX(ID) + 1 FROM num_talents_at_level", CONNECTION_SYNCH); // OverrideSpellData.db2 @@ -1747,8 +1747,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_TACT_KEY, "SELECT MAX(ID) + 1 FROM tact_key", CONNECTION_SYNCH); // Talent.db2 - PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, ClassID, SpecID, SpellID, OverridesSpellID, " - "CategoryMask1, CategoryMask2 FROM talent WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, TabID, ClassID, SpecID, SpellID, OverridesSpellID, " + "RequiredSpellID, CategoryMask1, CategoryMask2, SpellRank1, SpellRank2, SpellRank3, SpellRank4, SpellRank5, SpellRank6, SpellRank7, " + "SpellRank8, SpellRank9, PrereqTalent1, PrereqTalent2, PrereqTalent3, PrereqRank1, PrereqRank2, PrereqRank3 FROM talent" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TALENT, "SELECT MAX(ID) + 1 FROM talent", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TALENT, "SELECT ID, Description_lang FROM talent_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index f09cee5bd1b..c5406e0796f 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -4029,6 +4029,14 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 return false; break; } + case ModifierTreeType::PlayerTitle: // 393 + if (referencePlayer->m_playerData->PlayerTitle != int32(reqValue)) + return false; + break; + case ModifierTreeType::PlayerIsInGuild: // 404 + if (!referencePlayer->GetGuildId()) + return false; + break; default: return false; } diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index f3fc6fa7366..a9d7548b077 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -962,7 +962,7 @@ struct ChrClassesLoadInfo { .IsSigned = false, .Type = FT_SHORT, .Name = "CinematicSequenceID" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "DefaultSpec" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "ID" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "PrimaryStatPriority" }, + { .IsSigned = true, .Type = FT_BYTE, .Name = "PrimaryStatPriority" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "DisplayPower" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "RangedAttackPowerPerAgility" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "AttackPowerPerAgility" }, @@ -1499,7 +1499,7 @@ struct CreatureModelDataLoadInfo { .IsSigned = false, .Type = FT_INT, .Name = "FootstepCameraEffectID" }, { .IsSigned = false, .Type = FT_INT, .Name = "DeathThudCameraEffectID" }, { .IsSigned = false, .Type = FT_INT, .Name = "SoundID" }, - { .IsSigned = false, .Type = FT_INT, .Name = "SizeClass" }, + { .IsSigned = true, .Type = FT_BYTE, .Name = "SizeClass" }, { .IsSigned = false, .Type = FT_FLOAT, .Name = "CollisionWidth" }, { .IsSigned = false, .Type = FT_FLOAT, .Name = "CollisionHeight" }, { .IsSigned = false, .Type = FT_FLOAT, .Name = "WorldEffectScale" }, @@ -1709,7 +1709,7 @@ struct DifficultyLoadInfo struct DungeonEncounterLoadInfo { - static constexpr DB2FieldMeta Fields[10] = + static constexpr DB2FieldMeta Fields[11] = { { .IsSigned = false, .Type = FT_STRING, .Name = "Name" }, { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, @@ -1721,9 +1721,10 @@ struct DungeonEncounterLoadInfo { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, { .IsSigned = true, .Type = FT_INT, .Name = "SpellIconFileID" }, { .IsSigned = true, .Type = FT_INT, .Name = "Faction" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Unknown1115" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 10, &DungeonEncounterMeta::Instance, HOTFIX_SEL_DUNGEON_ENCOUNTER }; + static constexpr DB2LoadInfo Instance{ Fields, 11, &DungeonEncounterMeta::Instance, HOTFIX_SEL_DUNGEON_ENCOUNTER }; }; struct DurabilityCostsLoadInfo @@ -2516,7 +2517,7 @@ struct HeirloomLoadInfo { .IsSigned = true, .Type = FT_INT, .Name = "LegacyUpgradedItemID" }, { .IsSigned = true, .Type = FT_INT, .Name = "StaticUpgradedItemID" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "SourceTypeEnum" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, { .IsSigned = true, .Type = FT_INT, .Name = "LegacyItemID" }, { .IsSigned = true, .Type = FT_INT, .Name = "UpgradeItemID1" }, { .IsSigned = true, .Type = FT_INT, .Name = "UpgradeItemID2" }, @@ -2843,7 +2844,7 @@ struct ItemClassLoadInfo { .IsSigned = false, .Type = FT_STRING, .Name = "ClassName" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "ClassID" }, { .IsSigned = false, .Type = FT_FLOAT, .Name = "PriceModifier" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, }; static constexpr DB2LoadInfo Instance{ Fields, 5, &ItemClassMeta::Instance, HOTFIX_SEL_ITEM_CLASS }; @@ -3009,7 +3010,7 @@ struct ItemExtendedCostLoadInfo { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "RequiredArenaRating" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "ArenaBracket" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "MinFactionID" }, { .IsSigned = true, .Type = FT_INT, .Name = "MinReputation" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "RequiredAchievement" }, @@ -4037,15 +4038,16 @@ struct NamesReservedLocaleLoadInfo struct NumTalentsAtLevelLoadInfo { - static constexpr DB2FieldMeta Fields[4] = + static constexpr DB2FieldMeta Fields[5] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_INT, .Name = "NumTalents" }, { .IsSigned = true, .Type = FT_INT, .Name = "NumTalentsDeathKnight" }, { .IsSigned = true, .Type = FT_INT, .Name = "NumTalentsDemonHunter" }, + { .IsSigned = false, .Type = FT_FLOAT, .Name = "Unknown1115" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 4, &NumTalentsAtLevelMeta::Instance, HOTFIX_SEL_NUM_TALENTS_AT_LEVEL }; + static constexpr DB2LoadInfo Instance{ Fields, 5, &NumTalentsAtLevelMeta::Instance, HOTFIX_SEL_NUM_TALENTS_AT_LEVEL }; }; struct OverrideSpellDataLoadInfo @@ -5003,7 +5005,7 @@ struct SpellCastingRequirementsLoadInfo { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_INT, .Name = "SpellID" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "FacingCasterFlags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "FacingCasterFlags" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "MinFactionID" }, { .IsSigned = true, .Type = FT_INT, .Name = "MinReputation" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "RequiredAreasID" }, @@ -5804,22 +5806,39 @@ struct TactKeyLoadInfo struct TalentLoadInfo { - static constexpr DB2FieldMeta Fields[11] = + static constexpr DB2FieldMeta Fields[28] = { { .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 = false, .Type = FT_BYTE, .Name = "ColumnIndex" }, + { .IsSigned = false, .Type = FT_SHORT, .Name = "TabID" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "ClassID" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "SpecID" }, { .IsSigned = false, .Type = FT_INT, .Name = "SpellID" }, { .IsSigned = false, .Type = FT_INT, .Name = "OverridesSpellID" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "CategoryMask1" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "CategoryMask2" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 11, &TalentMeta::Instance, HOTFIX_SEL_TALENT }; + { .IsSigned = false, .Type = FT_INT, .Name = "RequiredSpellID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "CategoryMask1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "CategoryMask2" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank1" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank2" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank3" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank4" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank5" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank6" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank7" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank8" }, + { .IsSigned = false, .Type = FT_INT, .Name = "SpellRank9" }, + { .IsSigned = false, .Type = FT_INT, .Name = "PrereqTalent1" }, + { .IsSigned = false, .Type = FT_INT, .Name = "PrereqTalent2" }, + { .IsSigned = false, .Type = FT_INT, .Name = "PrereqTalent3" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "PrereqRank1" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "PrereqRank2" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "PrereqRank3" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 28, &TalentMeta::Instance, HOTFIX_SEL_TALENT }; }; struct TaxiNodesLoadInfo @@ -5904,7 +5923,7 @@ struct ToyLoadInfo { .IsSigned = false, .Type = FT_STRING, .Name = "SourceText" }, { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_INT, .Name = "ItemID" }, - { .IsSigned = false, .Type = FT_BYTE, .Name = "Flags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "SourceTypeEnum" }, }; @@ -6634,12 +6653,12 @@ struct VehicleSeatLoadInfo { .IsSigned = false, .Type = FT_FLOAT, .Name = "CameraEnteringZoom" }, { .IsSigned = false, .Type = FT_FLOAT, .Name = "CameraSeatZoomMin" }, { .IsSigned = false, .Type = FT_FLOAT, .Name = "CameraSeatZoomMax" }, - { .IsSigned = true, .Type = FT_SHORT, .Name = "EnterAnimKitID" }, - { .IsSigned = true, .Type = FT_SHORT, .Name = "RideAnimKitID" }, - { .IsSigned = true, .Type = FT_SHORT, .Name = "ExitAnimKitID" }, - { .IsSigned = true, .Type = FT_SHORT, .Name = "VehicleEnterAnimKitID" }, - { .IsSigned = true, .Type = FT_SHORT, .Name = "VehicleRideAnimKitID" }, - { .IsSigned = true, .Type = FT_SHORT, .Name = "VehicleExitAnimKitID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "EnterAnimKitID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RideAnimKitID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ExitAnimKitID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "VehicleEnterAnimKitID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "VehicleRideAnimKitID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "VehicleExitAnimKitID" }, { .IsSigned = true, .Type = FT_SHORT, .Name = "CameraModeID" }, }; diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index 08faf1eea37..c71bbabf68c 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -737,23 +737,24 @@ struct AnimationDataMeta struct AreaConditionalDataMeta { - static constexpr DB2MetaField Fields[5] = + static constexpr DB2MetaField Fields[6] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .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 }, }; static constexpr DB2Meta Instance = { .FileDataId = 2123730, .IndexField = 1, - .ParentIndexField = 4, - .FieldCount = 5, - .FileFieldCount = 4, - .LayoutHash = 0xFFC38678, + .ParentIndexField = 5, + .FieldCount = 6, + .FileFieldCount = 5, + .LayoutHash = 0xAEE182C6, .Fields = Fields }; }; @@ -2687,6 +2688,26 @@ struct Cfg_ConfigsMeta }; }; +struct Cfg_GameRulesMeta +{ + static constexpr DB2MetaField Fields[2] = + { + { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 6841377, + .IndexField = -1, + .ParentIndexField = -1, + .FieldCount = 2, + .FileFieldCount = 2, + .LayoutHash = 0x41B88A54, + .Fields = Fields + }; +}; + struct Cfg_RegionsMeta { static constexpr DB2MetaField Fields[5] = @@ -3294,7 +3315,7 @@ struct ChrClassesMeta { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, @@ -3313,7 +3334,7 @@ struct ChrClassesMeta .ParentIndexField = -1, .FieldCount = 39, .FileFieldCount = 39, - .LayoutHash = 0x6D301B0D, + .LayoutHash = 0x03A0FD4D, .Fields = Fields }; }; @@ -5013,6 +5034,73 @@ struct ConversationLineMeta }; }; +struct CooldownSetMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 6405756, + .IndexField = 0, + .ParentIndexField = 1, + .FieldCount = 3, + .FileFieldCount = 3, + .LayoutHash = 0x833402CE, + .Fields = Fields + }; +}; + +struct CooldownSetLinkedSpellMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { .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 = 6422327, + .IndexField = -1, + .ParentIndexField = 2, + .FieldCount = 3, + .FileFieldCount = 2, + .LayoutHash = 0x11E4972F, + .Fields = Fields + }; +}; + +struct CooldownSetSpellMeta +{ + static constexpr DB2MetaField Fields[7] = + { + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .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 }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 6405757, + .IndexField = 0, + .ParentIndexField = 1, + .FieldCount = 7, + .FileFieldCount = 7, + .LayoutHash = 0xB5A471F2, + .Fields = Fields + }; +}; + struct CorruptionEffectsMeta { static constexpr DB2MetaField Fields[4] = @@ -5469,7 +5557,7 @@ struct CreatureDisplayInfoMeta .ParentIndexField = -1, .FieldCount = 28, .FileFieldCount = 28, - .LayoutHash = 0x19189406, + .LayoutHash = 0x7275F5F6, .Fields = Fields }; }; @@ -5765,7 +5853,7 @@ struct CreatureModelDataMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .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 = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, @@ -5794,7 +5882,7 @@ struct CreatureModelDataMeta .ParentIndexField = -1, .FieldCount = 34, .FileFieldCount = 34, - .LayoutHash = 0x6148D238, + .LayoutHash = 0x0F5449F8, .Fields = Fields }; }; @@ -6189,7 +6277,7 @@ struct DeathThudLookupsMeta { static constexpr DB2MetaField Fields[4] = { - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, @@ -6202,7 +6290,7 @@ struct DeathThudLookupsMeta .ParentIndexField = -1, .FieldCount = 4, .FileFieldCount = 4, - .LayoutHash = 0xDDC6DB32, + .LayoutHash = 0xB84E88F2, .Fields = Fields }; }; @@ -6571,7 +6659,7 @@ struct DriverBlacklistMeta struct DungeonEncounterMeta { - static constexpr DB2MetaField Fields[10] = + static constexpr DB2MetaField Fields[11] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, @@ -6583,6 +6671,7 @@ struct DungeonEncounterMeta { .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 = @@ -6590,9 +6679,9 @@ struct DungeonEncounterMeta .FileDataId = 1347279, .IndexField = 1, .ParentIndexField = 2, - .FieldCount = 10, - .FileFieldCount = 10, - .LayoutHash = 0x7B6AC42A, + .FieldCount = 11, + .FileFieldCount = 11, + .LayoutHash = 0xE408B8D4, .Fields = Fields }; }; @@ -6719,7 +6808,7 @@ struct EmotesTextDataMeta 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 = true }, }; @@ -6730,7 +6819,7 @@ struct EmotesTextDataMeta .ParentIndexField = 2, .FieldCount = 3, .FileFieldCount = 2, - .LayoutHash = 0x4BF58EA9, + .LayoutHash = 0x62B26C79, .Fields = Fields }; }; @@ -7264,9 +7353,11 @@ struct GameClockDebugMeta struct GameModeMeta { - static constexpr DB2MetaField Fields[9] = + static constexpr DB2MetaField Fields[12] = { { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_STRING_NOT_LOCALIZED, .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 }, @@ -7275,6 +7366,7 @@ struct GameModeMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -7282,9 +7374,9 @@ struct GameModeMeta .FileDataId = 5008306, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 9, - .FileFieldCount = 9, - .LayoutHash = 0x60A1CBA9, + .FieldCount = 12, + .FileFieldCount = 12, + .LayoutHash = 0x3609B763, .Fields = Fields }; }; @@ -9719,7 +9811,7 @@ struct HeirloomMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .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 = 6, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 6, .IsSigned = false }, @@ -9732,7 +9824,7 @@ struct HeirloomMeta .ParentIndexField = -1, .FieldCount = 10, .FileFieldCount = 10, - .LayoutHash = 0x2F8299AE, + .LayoutHash = 0x9ECA649E, .Fields = Fields }; }; @@ -10468,7 +10560,7 @@ struct ItemClassMeta { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -10478,7 +10570,7 @@ struct ItemClassMeta .ParentIndexField = -1, .FieldCount = 4, .FileFieldCount = 4, - .LayoutHash = 0xA2EB4A48, + .LayoutHash = 0x35680EB8, .Fields = Fields }; }; @@ -10844,7 +10936,7 @@ struct ItemExtendedCostMeta { { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, @@ -10861,7 +10953,7 @@ struct ItemExtendedCostMeta .ParentIndexField = -1, .FieldCount = 10, .FileFieldCount = 10, - .LayoutHash = 0xD2894EC8, + .LayoutHash = 0x6F3FC018, .Fields = Fields }; }; @@ -13335,7 +13427,7 @@ struct MawPowerRarityMeta .ParentIndexField = -1, .FieldCount = 2, .FileFieldCount = 2, - .LayoutHash = 0x3DFF7866, + .LayoutHash = 0xA575912D, .Fields = Fields }; }; @@ -14337,21 +14429,23 @@ struct NamesReservedLocaleMeta struct NumTalentsAtLevelMeta { - static constexpr DB2MetaField Fields[3] = + static constexpr DB2MetaField Fields[5] = { + { .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_FLOAT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = { .FileDataId = 1953326, - .IndexField = -1, + .IndexField = 0, .ParentIndexField = -1, - .FieldCount = 3, - .FileFieldCount = 3, - .LayoutHash = 0x9E707863, + .FieldCount = 5, + .FileFieldCount = 5, + .LayoutHash = 0x1B85660E, .Fields = Fields }; }; @@ -15491,7 +15585,7 @@ struct PlayerDataElementAccountMeta .ParentIndexField = -1, .FieldCount = 3, .FileFieldCount = 3, - .LayoutHash = 0x7F54ED49, + .LayoutHash = 0x099A3DF9, .Fields = Fields }; }; @@ -15512,7 +15606,7 @@ struct PlayerDataElementCharacterMeta .ParentIndexField = -1, .FieldCount = 3, .FileFieldCount = 3, - .LayoutHash = 0x7F54ED49, + .LayoutHash = 0x099A3DF9, .Fields = Fields }; }; @@ -18782,7 +18876,7 @@ struct SpellCastingRequirementsMeta static constexpr DB2MetaField Fields[7] = { { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, @@ -18797,7 +18891,7 @@ struct SpellCastingRequirementsMeta .ParentIndexField = -1, .FieldCount = 7, .FileFieldCount = 7, - .LayoutHash = 0xEB5F42A0, + .LayoutHash = 0x02074290, .Fields = Fields }; }; @@ -20571,26 +20665,6 @@ struct StartupFilesMeta }; }; -struct Startup_StringsMeta -{ - static constexpr DB2MetaField Fields[2] = - { - { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, - }; - - static constexpr DB2Meta Instance = - { - .FileDataId = 1375805, - .IndexField = -1, - .ParentIndexField = -1, - .FieldCount = 2, - .FileFieldCount = 2, - .LayoutHash = 0xD758674F, - .Fields = Fields - }; -}; - struct StationeryMeta { static constexpr DB2MetaField Fields[3] = @@ -20675,17 +20749,22 @@ struct TactKeyLookupMeta struct TalentMeta { - static constexpr DB2MetaField Fields[9] = + static constexpr DB2MetaField Fields[14] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_BYTE, .ArraySize = 2, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 9, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 3, .IsSigned = false }, + { .Type = FT_BYTE, .ArraySize = 3, .IsSigned = false }, }; static constexpr DB2Meta Instance = @@ -20693,9 +20772,9 @@ struct TalentMeta .FileDataId = 1369062, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 9, - .FileFieldCount = 9, - .LayoutHash = 0xFD0E9E24, + .FieldCount = 14, + .FileFieldCount = 14, + .LayoutHash = 0x4D999D55, .Fields = Fields }; }; @@ -20833,7 +20912,7 @@ struct TerrainTypeMeta { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -20843,7 +20922,7 @@ struct TerrainTypeMeta .ParentIndexField = -1, .FieldCount = 5, .FileFieldCount = 5, - .LayoutHash = 0xEC0D143D, + .LayoutHash = 0x7A6E1ECD, .Fields = Fields }; }; @@ -20967,7 +21046,7 @@ struct ToyMeta { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, }; @@ -20978,7 +21057,7 @@ struct ToyMeta .ParentIndexField = -1, .FieldCount = 5, .FileFieldCount = 5, - .LayoutHash = 0xC55DB9B0, + .LayoutHash = 0x821B5D20, .Fields = Fields }; }; @@ -23524,12 +23603,12 @@ struct VehicleSeatMeta { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, - { .Type = FT_SHORT, .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 }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, }; @@ -23540,7 +23619,7 @@ struct VehicleSeatMeta .ParentIndexField = -1, .FieldCount = 61, .FileFieldCount = 61, - .LayoutHash = 0x53C25193, + .LayoutHash = 0x973F2793, .Fields = Fields }; }; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 4af8e10f860..eff70fb4b9d 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -684,7 +684,7 @@ struct ChrClassesEntry uint16 CinematicSequenceID; uint16 DefaultSpec; uint8 ID; - uint8 PrimaryStatPriority; + int8 PrimaryStatPriority; int8 DisplayPower; uint8 RangedAttackPowerPerAgility; uint8 AttackPowerPerAgility; @@ -1101,7 +1101,7 @@ struct CreatureModelDataEntry uint32 FootstepCameraEffectID; uint32 DeathThudCameraEffectID; uint32 SoundID; - uint32 SizeClass; + int8 SizeClass; float CollisionWidth; float CollisionHeight; float WorldEffectScale; @@ -1530,6 +1530,7 @@ struct DungeonEncounterEntry int32 Flags; int32 SpellIconFileID; int32 Faction; + int32 Unknown1115; }; struct DurabilityCostsEntry @@ -2096,7 +2097,7 @@ struct HeirloomEntry int32 LegacyUpgradedItemID; int32 StaticUpgradedItemID; int8 SourceTypeEnum; - uint8 Flags; + int32 Flags; int32 LegacyItemID; std::array<int32, 6> UpgradeItemID; std::array<uint16, 6> UpgradeItemBonusListID; @@ -2275,7 +2276,7 @@ struct ItemClassEntry LocalizedString ClassName; int8 ClassID; float PriceModifier; - uint8 Flags; + int32 Flags; }; struct ItemContextPickerEntryEntry @@ -2364,7 +2365,7 @@ struct ItemExtendedCostEntry uint32 ID; uint16 RequiredArenaRating; int8 ArenaBracket; // arena slot restrictions (min slot value) - uint8 Flags; + int32 Flags; uint8 MinFactionID; int32 MinReputation; uint8 RequiredAchievement; // required personal arena rating @@ -3057,6 +3058,7 @@ struct NumTalentsAtLevelEntry int32 NumTalents; int32 NumTalentsDeathKnight; int32 NumTalentsDemonHunter; + float Unknown1115; }; #define MAX_OVERRIDE_SPELL 10 @@ -3655,7 +3657,7 @@ struct SpellCastingRequirementsEntry { uint32 ID; int32 SpellID; - uint8 FacingCasterFlags; + int32 FacingCasterFlags; uint16 MinFactionID; int32 MinReputation; uint16 RequiredAreasID; @@ -4158,11 +4160,16 @@ struct TalentEntry uint8 TierID; uint8 Flags; uint8 ColumnIndex; + uint16 TabID; int8 ClassID; uint16 SpecID; uint32 SpellID; uint32 OverridesSpellID; - std::array<uint8, 2> CategoryMask; + uint32 RequiredSpellID; + std::array<int32, 2> CategoryMask; + std::array<uint32, 9> SpellRank; + std::array<uint32, 3> PrereqTalent; + std::array<uint8, 3> PrereqRank; }; struct TaxiNodesEntry @@ -4235,7 +4242,7 @@ struct ToyEntry LocalizedString SourceText; uint32 ID; int32 ItemID; - uint8 Flags; + int32 Flags; int8 SourceTypeEnum; }; @@ -4730,12 +4737,12 @@ struct VehicleSeatEntry float CameraEnteringZoom; float CameraSeatZoomMin; float CameraSeatZoomMax; - int16 EnterAnimKitID; - int16 RideAnimKitID; - int16 ExitAnimKitID; - int16 VehicleEnterAnimKitID; - int16 VehicleRideAnimKitID; - int16 VehicleExitAnimKitID; + int32 EnterAnimKitID; + int32 RideAnimKitID; + int32 ExitAnimKitID; + int32 VehicleEnterAnimKitID; + int32 VehicleRideAnimKitID; + int32 VehicleExitAnimKitID; int16 CameraModeID; inline bool HasFlag(VehicleSeatFlags flag) const { return !!(Flags & flag); } diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 80f5389d5a4..dc7f13b4192 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -441,7 +441,7 @@ enum class ContentTuningCalcType : int32 enum class ContentTuningFlag : int32 { DisabledForItem = 0x04, - Horde = 0x8, + Horde = 0x08, Alliance = 0x10 }; @@ -885,14 +885,15 @@ DEFINE_ENUM_FLAG(CurrencyTypesFlags); enum class CurrencyTypesFlagsB : uint32 { - UseTotalEarnedForEarned = 0x01, - ShowQuestXPGainInTooltip = 0x02, // NYI - NoNotificationMailOnOfflineProgress = 0x04, // NYI - BattlenetVirtualCurrency = 0x08, // NYI - FutureCurrencyFlag = 0x10, // NYI - DontDisplayIfZero = 0x20, // NYI - ScaleMaxQuantityBySeasonWeeks = 0x40, // NYI - ScaleMaxQuantityByWeeksSinceStart = 0x80, // NYI + UseTotalEarnedForEarned = 0x0001, + ShowQuestXPGainInTooltip = 0x0002, // NYI + NoNotificationMailOnOfflineProgress = 0x0004, // NYI + BattlenetVirtualCurrency = 0x0008, // NYI + FutureCurrencyFlag = 0x0010, // NYI + DontDisplayIfZero = 0x0020, // NYI + ScaleMaxQuantityBySeasonWeeks = 0x0040, // NYI + ScaleMaxQuantityByWeeksSinceStart = 0x0080, // NYI + ForceMaxQuantityOnConversion = 0x0100, // NYI }; DEFINE_ENUM_FLAG(CurrencyTypesFlagsB); @@ -1027,6 +1028,14 @@ enum class GlobalCurve : int32 ContentTuningPvpItemLevelHealthScaling = 13, ContentTuningPvpLevelDamageScaling = 14, ContentTuningPvpItemLevelDamageScaling = 15, + + ArmorItemLevelDiminishing = 18, + + ChallengeModeHealth = 21, + ChallengeModeDamage = 22, + MythicPlusEndOfRunGearSequenceLevel = 23, + + SpellAreaEffectWarningRadius = 26, // ground spell effect warning circle radius (based on spell radius) }; #define MAX_ITEM_PROTO_FLAGS 5 @@ -1829,6 +1838,9 @@ enum class ModifierTreeType : int32 PlayerDataElementCharacterEqual = 390, /*NYI*/ // Player {PlayerDataElementCharacter} is greater than {#Amount} PlayerDataElementAccountEqual = 391, /*NYI*/ // Player {PlayerDataElementAccount} is greater than {#Amount} PlayerHasCompletedQuestOrIsReadyToTurnIn = 392, // Player has previously completed quest "{QuestV2}" or is ready to turn it in + PlayerTitle = 393, // Player is currently using "{ChrTitles}" title + + PlayerIsInGuild = 404, // Player is in a guild }; enum class ModifierTreeOperator : int8 @@ -1996,6 +2008,14 @@ enum class PlayerInteractionType : int32 CharacterBanker = 67, AccountBanker = 68, ProfessionRespec = 69, + PlaceholderType71 = 70, + PlaceholderType72 = 71, + PlaceholderType73 = 72, + PlaceholderType74 = 73, + PlaceholderType75 = 74, + PlaceholderType76 = 75, + GuildRename = 76, + PlaceholderType77 = 77, }; enum class PowerTypeFlags : int16 @@ -2301,7 +2321,7 @@ enum class SummonPropertiesFlags : uint32 DEFINE_ENUM_FLAG(SummonPropertiesFlags); #define MAX_TALENT_TIERS 7 -#define MAX_TALENT_COLUMNS 3 +#define MAX_TALENT_COLUMNS 4 #define MAX_PVP_TALENT_SLOTS 4 enum class TaxiNodeFlags : int32 diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index cadf42d3061..0d6337b170f 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -134,6 +134,8 @@ enum LfgJoinResult LFG_JOIN_ALREADY_USING_LFG_LIST = 0x3F, // You can't do that while using Premade Groups. LFG_JOIN_NOT_LEADER = 0x45, // You are not the party leader. LFG_JOIN_DEAD = 0x49, + LFG_FARM_LIMIT = 0x4D, // You or someone in your party has entered too many instances recently. Please wait awhile and try again. + LFG_NO_CROSS_FACTION_PARTIES = 0x4E, // Cross-faction groups can't queue for this instance LFG_JOIN_PARTY_NOT_MEET_REQS = 6, // One or more party members do not meet the requirements for the chosen dungeons (FIXME) }; diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index d5785084f88..85d6ecb7e3d 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -287,6 +287,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) text.QuestFlags[0] = quest->GetFlags(); text.QuestFlags[1] = quest->GetFlagsEx(); text.QuestFlags[2] = quest->GetFlagsEx2(); + text.QuestFlags[3] = quest->GetFlagsEx3(); text.Repeatable = quest->IsTurnIn() && quest->IsRepeatable() && !quest->IsDailyOrWeekly() && !quest->IsMonthly(); text.ResetByScheduler = quest->IsResetByScheduler(); text.Important = quest->IsImportant(); @@ -418,6 +419,7 @@ void PlayerMenu::SendQuestGiverQuestListMessage(Object* questgiver) text.QuestFlags[0] = quest->GetFlags(); text.QuestFlags[1] = quest->GetFlagsEx(); text.QuestFlags[2] = quest->GetFlagsEx2(); + text.QuestFlags[3] = quest->GetFlagsEx3(); text.Repeatable = quest->IsTurnIn() && quest->IsRepeatable() && !quest->IsDailyOrWeekly() && !quest->IsMonthly(); text.ResetByScheduler = quest->IsResetByScheduler(); text.Important = quest->IsImportant(); @@ -495,6 +497,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU packet.QuestFlags[0] = quest->GetFlags() & (sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_ACCEPT) ? ~QUEST_FLAGS_AUTO_ACCEPT : ~0); packet.QuestFlags[1] = quest->GetFlagsEx(); packet.QuestFlags[2] = quest->GetFlagsEx2(); + packet.QuestFlags[3] = quest->GetFlagsEx3(); packet.SuggestedPartyMembers = quest->GetSuggestedPlayers(); // Is there a better way? what about game objects? @@ -602,6 +605,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI offer.QuestFlags[0] = quest->GetFlags(); offer.QuestFlags[1] = quest->GetFlagsEx(); offer.QuestFlags[2] = quest->GetFlagsEx2(); + offer.QuestFlags[3] = quest->GetFlagsEx3(); packet.PortraitTurnIn = quest->GetQuestTurnInPortrait(); packet.PortraitGiver = quest->GetQuestGiverPortrait(); @@ -668,6 +672,7 @@ void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGU packet.QuestFlags[0] = quest->GetFlags(); packet.QuestFlags[1] = quest->GetFlagsEx(); packet.QuestFlags[2] = quest->GetFlagsEx2(); + packet.QuestFlags[3] = quest->GetFlagsEx3(); packet.SuggestPartyMembers = quest->GetSuggestedPlayers(); packet.QuestInfoID = quest->GetQuestInfoID(); diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h index 524a98a687e..03ac95cb8f7 100644 --- a/src/server/game/Entities/Creature/GossipDef.h +++ b/src/server/game/Entities/Creature/GossipDef.h @@ -92,6 +92,12 @@ enum class GossipOptionNpc : uint8 CharacterBanker = 56, AccountBanker = 57, ProfessionRespec = 58, + Placeholder1 = 59, + Placeholder2 = 60, + Placeholder3 = 61, + GuildRename = 62, + Placeholder4 = 63, + ItemUpgrade = 64, Count }; diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index 6dcdf08e85c..c7853ca5214 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -472,10 +472,12 @@ enum ItemSubclassConsumable ITEM_SUBCLASS_ITEM_ENHANCEMENT = 6, ITEM_SUBCLASS_BANDAGE = 7, ITEM_SUBCLASS_CONSUMABLE_OTHER = 8, - ITEM_SUBCLASS_VANTUS_RUNE = 9 + ITEM_SUBCLASS_VANTUS_RUNE = 9, + ITEM_SUBCLASS_UTILITY_CURIO = 10, + ITEM_SUBCLASS_COMBAT_CURIO = 11, }; -#define MAX_ITEM_SUBCLASS_CONSUMABLE 10 +#define MAX_ITEM_SUBCLASS_CONSUMABLE 12 enum ItemSubclassContainer { diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index cc073ad6592..c575c61f10b 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -3061,7 +3061,7 @@ void BitVectors::ClearChangesMask() void PlayerDataElement::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const { - data.WriteBits(Type, 1); + data << uint32(Type); if (Type == 1) { data << float(FloatValue); @@ -3070,12 +3070,11 @@ void PlayerDataElement::WriteCreate(ByteBuffer& data, Player const* owner, Playe { data << int64(Int64Value); } - data.FlushBits(); } void PlayerDataElement::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const { - data.WriteBits(Type, 1); + data << uint32(Type); if (Type == 1) { data << float(FloatValue); @@ -3084,7 +3083,6 @@ void PlayerDataElement::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Pl { data << int64(Int64Value); } - data.FlushBits(); } bool PlayerDataElement::operator==(PlayerDataElement const& right) const @@ -4760,7 +4758,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f data << uint8(MultiActionBars); data << uint8(LifetimeMaxRank); data << uint8(NumRespecs); - data << uint8(PvpMedals); + data << uint32(PvpMedals); for (uint32 i = 0; i < 12; ++i) { data << uint32(BuybackPrice[i]); @@ -4807,10 +4805,6 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { data << uint32(BankBagSlotFlags[i]); } - for (uint32 i = 0; i < 1000; ++i) - { - data << uint64(QuestCompleted[i]); - } data << int32(Honor); data << int32(HonorNextLevel); data << int32(PerksProgramCurrency); @@ -4883,6 +4877,14 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { data << uint64(KnownTitles[i]); } + for (uint32 i = 0; i < CharacterDataElements.size(); ++i) + { + CharacterDataElements[i].WriteCreate(data, owner, receiver); + } + for (uint32 i = 0; i < AccountDataElements.size(); ++i) + { + AccountDataElements[i].WriteCreate(data, owner, receiver); + } for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i) { data << int32(DailyQuestsCompleted[i]); @@ -5004,14 +5006,6 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f data << FrozenPerksVendorItem; Field_1410->WriteCreate(data, owner, receiver); data << DungeonScore; - for (uint32 i = 0; i < CharacterDataElements.size(); ++i) - { - CharacterDataElements[i].WriteCreate(data, owner, receiver); - } - for (uint32 i = 0; i < AccountDataElements.size(); ++i) - { - AccountDataElements[i].WriteCreate(data, owner, receiver); - } for (uint32 i = 0; i < PvpInfo.size(); ++i) { PvpInfo[i].WriteCreate(data, owner, receiver); @@ -5054,10 +5048,8 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const { - for (uint32 i = 0; i < 1; ++i) - data << uint32(changesMask.GetBlocksMask(i)); - data.WriteBits(changesMask.GetBlocksMask(1), 16); - for (uint32 i = 0; i < 48; ++i) + data.WriteBits(changesMask.GetBlocksMask(0), 17); + for (uint32 i = 0; i < 17; ++i) if (changesMask.GetBlock(i)) data.WriteBits(changesMask.GetBlock(i), 32); @@ -5419,6 +5411,26 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } + if (changesMask[8]) + { + for (uint32 i = 0; i < CharacterDataElements.size(); ++i) + { + if (CharacterDataElements.HasChanged(i) || ignoreNestedChangesMask) + { + CharacterDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } + } + if (changesMask[9]) + { + for (uint32 i = 0; i < AccountDataElements.size(); ++i) + { + if (AccountDataElements.HasChanged(i) || ignoreNestedChangesMask) + { + AccountDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } + } if (changesMask[11]) { for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i) @@ -5682,26 +5694,6 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[0]) { - if (changesMask[8]) - { - for (uint32 i = 0; i < CharacterDataElements.size(); ++i) - { - if (CharacterDataElements.HasChanged(i) || ignoreNestedChangesMask) - { - CharacterDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); - } - } - } - if (changesMask[9]) - { - for (uint32 i = 0; i < AccountDataElements.size(); ++i) - { - if (AccountDataElements.HasChanged(i) || ignoreNestedChangesMask) - { - AccountDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); - } - } - } if (changesMask[10]) { for (uint32 i = 0; i < PvpInfo.size(); ++i) @@ -5956,7 +5948,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[97]) { - data << uint8(PvpMedals); + data << uint32(PvpMedals); } if (changesMask[98]) { @@ -6300,19 +6292,9 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[498]) { - for (uint32 i = 0; i < 1000; ++i) - { - if (changesMask[499 + i]) - { - data << uint64(QuestCompleted[i]); - } - } - } - if (changesMask[1499]) - { for (uint32 i = 0; i < 17; ++i) { - if (changesMask[1500 + i]) + if (changesMask[499 + i]) { data << float(ItemUpgradeHighWatermark[i]); } @@ -6333,6 +6315,8 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(ResearchSiteProgress); Base::ClearChangesMask(Research); Base::ClearChangesMask(KnownTitles); + Base::ClearChangesMask(CharacterDataElements); + Base::ClearChangesMask(AccountDataElements); Base::ClearChangesMask(DailyQuestsCompleted); Base::ClearChangesMask(AvailableQuestLineXQuestIDs); Base::ClearChangesMask(Heirlooms); @@ -6358,8 +6342,6 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(CategoryCooldownMods); Base::ClearChangesMask(WeeklySpellUses); Base::ClearChangesMask(TrackedCollectableSources); - Base::ClearChangesMask(CharacterDataElements); - Base::ClearChangesMask(AccountDataElements); Base::ClearChangesMask(PvpInfo); Base::ClearChangesMask(CharacterRestrictions); Base::ClearChangesMask(TraitConfigs); @@ -6476,7 +6458,6 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(ProfessionSkillLine); Base::ClearChangesMask(BagSlotFlags); Base::ClearChangesMask(BankBagSlotFlags); - Base::ClearChangesMask(QuestCompleted); Base::ClearChangesMask(ItemUpgradeHighWatermark); _changesMask.ResetAll(); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index bc02576f7f6..d394afda2d9 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<1517> +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<516> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BackpackSellJunkDisabled; @@ -1046,6 +1046,8 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 43, 44> ResearchSiteProgress; UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 45, 46> 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; @@ -1071,8 +1073,6 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas DynamicUpdateField<UF::CategoryCooldownMod, 32, 37> CategoryCooldownMods; DynamicUpdateField<UF::WeeklySpellUse, 32, 38> WeeklySpellUses; DynamicUpdateField<UF::CollectableSourceTrackedData, 32, 39> TrackedCollectableSources; - DynamicUpdateField<UF::PlayerDataElement, 0, 8> CharacterDataElements; - DynamicUpdateField<UF::PlayerDataElement, 0, 9> AccountDataElements; DynamicUpdateField<UF::PVPInfo, 0, 10> PvpInfo; DynamicUpdateField<UF::CharacterRestriction, 0, 23> CharacterRestrictions; DynamicUpdateField<UF::TraitConfig, 32, 33> TraitConfigs; @@ -1127,7 +1127,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<uint8, 70, 94> MultiActionBars; UpdateField<uint8, 70, 95> LifetimeMaxRank; UpdateField<uint8, 70, 96> NumRespecs; - UpdateField<uint8, 70, 97> PvpMedals; + UpdateField<uint32, 70, 97> PvpMedals; UpdateField<uint16, 70, 98> TodayHonorableKills; UpdateField<uint16, 70, 99> YesterdayHonorableKills; UpdateField<uint32, 70, 100> LifetimeHonorableKills; @@ -1189,8 +1189,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateFieldArray<int32, 2, 481, 482> ProfessionSkillLine; UpdateFieldArray<uint32, 5, 484, 485> BagSlotFlags; UpdateFieldArray<uint32, 7, 490, 491> BankBagSlotFlags; - UpdateFieldArray<uint64, 1000, 498, 499> QuestCompleted; - UpdateFieldArray<float, 17, 1499, 1500> ItemUpgradeHighWatermark; + UpdateFieldArray<float, 17, 498, 499> 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.cpp b/src/server/game/Entities/Player/Player.cpp index 48a0156ffce..c1e09611a53 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14277,7 +14277,9 @@ void Player::OnGossipSelect(WorldObject* source, int32 gossipOptionId, uint32 me PlayerInteractionType::ProfessionsCraftingOrder, PlayerInteractionType::Professions, PlayerInteractionType::ProfessionsCustomerOrder, PlayerInteractionType::TraitSystem, PlayerInteractionType::BarbersChoice, PlayerInteractionType::MajorFactionRenown, PlayerInteractionType::PersonalTabardVendor, PlayerInteractionType::ForgeMaster, PlayerInteractionType::CharacterBanker, - PlayerInteractionType::AccountBanker, PlayerInteractionType::ProfessionRespec + PlayerInteractionType::AccountBanker, PlayerInteractionType::ProfessionRespec, PlayerInteractionType::PlaceholderType72, + PlayerInteractionType::PlaceholderType75, PlayerInteractionType::PlaceholderType76, PlayerInteractionType::GuildRename, + PlayerInteractionType::PlaceholderType77, PlayerInteractionType::ItemUpgrade }; PlayerInteractionType interactionType = GossipOptionNpcToInteractionType[AsUnderlyingType(gossipOptionNpc)]; @@ -16569,26 +16571,17 @@ void Player::SetQuestCompletedBit(uint32 questId, bool completed) uint32 fieldOffset = (questBit - 1) / QUESTS_COMPLETED_BITS_PER_BLOCK; uint64 flag = UI64LIT(1) << ((questBit - 1) % QUESTS_COMPLETED_BITS_PER_BLOCK); - if (fieldOffset < QUESTS_COMPLETED_BITS_SIZE) - { - if (completed) - SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag); - else - RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag); - } + + auto field = m_values + .ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::BitVectors) + .ModifyValue(&UF::BitVectors::Values, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX) + .ModifyValue(&UF::BitVector::Values, fieldOffset); if (completed) - SetUpdateFieldFlagValue(m_values - .ModifyValue(&Player::m_activePlayerData) - .ModifyValue(&UF::ActivePlayerData::BitVectors) - .ModifyValue(&UF::BitVectors::Values, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX) - .ModifyValue(&UF::BitVector::Values, fieldOffset), flag); + SetUpdateFieldFlagValue(field, flag); else - RemoveUpdateFieldFlagValue(m_values - .ModifyValue(&Player::m_activePlayerData) - .ModifyValue(&UF::ActivePlayerData::BitVectors) - .ModifyValue(&UF::BitVectors::Values, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX) - .ModifyValue(&UF::BitVector::Values, fieldOffset), flag); + RemoveUpdateFieldFlagValue(field, flag); } void Player::AreaExploredOrEventHappens(uint32 questId) @@ -29851,7 +29844,7 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId) ObjectMgr::GetLocaleString(playerChoiceLocale->Question, locale, displayPlayerChoice.Question); displayPlayerChoice.Responses.resize(playerChoice->Responses.size()); - displayPlayerChoice.CloseChoiceFrame = false; + displayPlayerChoice.InfiniteRange = false; displayPlayerChoice.HideWarboardHeader = playerChoice->HideWarboardHeader; displayPlayerChoice.KeepOpenAfterChoice = playerChoice->KeepOpenAfterChoice; @@ -29945,7 +29938,6 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId) WorldPackets::Quest::PlayerChoiceResponseMawPower& mawPower = playerChoiceResponse.MawPower.emplace(); mawPower.TypeArtFileID = playerChoiceResponseTemplate.MawPower->TypeArtFileID; mawPower.Rarity = playerChoiceResponseTemplate.MawPower->Rarity; - mawPower.RarityColor = playerChoiceResponseTemplate.MawPower->RarityColor; mawPower.SpellID = playerChoiceResponseTemplate.MawPower->SpellID; mawPower.MaxStacks = playerChoiceResponseTemplate.MawPower->MaxStacks; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index ae955a9b683..69329a69358 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -158,6 +158,8 @@ enum PlayerDataFlagConstants PLAYER_DATA_FLAG_ACCOUNT_COMBINED_QUEST_REWARDS_INDEX = 7, PLAYER_DATA_FLAG_CHARACTER_CONTENTPUSH_INDEX = 8, PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX = 9, + + // = 12 stores quests completed under ctrOptions & 0x2000 }; enum SpellModType : uint8 @@ -594,8 +596,7 @@ typedef std::map<uint32, QuestSaveType> QuestStatusSaveMap; // Size of client completed quests bit map enum PlayerQuestCompletedConstants { - QUESTS_COMPLETED_BITS_SIZE = UF::size<decltype(UF::ActivePlayerData::QuestCompleted)>(), - QUESTS_COMPLETED_BITS_PER_BLOCK = UF::size_of_value_type<decltype(UF::ActivePlayerData::QuestCompleted)>() * 8 + QUESTS_COMPLETED_BITS_PER_BLOCK = UF::size_of_value_type<decltype(UF::BitVector::Values)>() * 8 }; enum PlayerQuestLogConstants diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index ad13ffddca0..e3aca85d208 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4577,33 +4577,33 @@ void ObjectMgr::LoadQuests() "ID, QuestType, QuestPackageID, ContentTuningID, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " //10 11 12 13 14 15 16 "RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardSpell, RewardHonor, RewardKillHonor, StartItem, " - //17 18 19 20 21 22 - "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, " - //23 24 25 26 27 28 29 30 + //17 18 19 20 21 22 23 + "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, FlagsEx3, " + //24 25 26 27 28 29 30 31 "RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, " - //31 32 33 34 35 36 37 38 + //32 33 34 35 36 37 38 39 "RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, " - //39 40 41 42 43 44 + //40 41 42 43 44 45 "RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, " - //45 46 47 48 49 50 + //46 47 48 49 50 51 "RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, " - //51 52 53 54 55 56 + //52 53 54 55 56 57 "RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, " - //57 58 59 60 61 62 63 64 + //58 59 60 61 62 63 64 65 "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, " - //65 66 67 68 + //66 67 68 69 "PortraitGiver, PortraitGiverMount, PortraitGiverModelSceneID, PortraitTurnIn, " - //69 70 71 72 73 74 75 76 + //70 71 72 73 74 75 76 77 "RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, " - //77 78 79 80 81 82 83 84 + //78 79 80 81 82 83 84 85 "RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, " - //85 86 87 88 89 + //86 87 88 89 90 "RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, " - //90 91 92 93 94 95 96 97 + //91 92 93 94 95 96 97 98 "RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, " - //98 99 100 101 102 103 104 105 106 + //99 100 101 102 103 104 105 106 107 "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, ResetByScheduler, Expansion, ManagedWorldStateID, QuestSessionBonus, " - //107 108 109 110 111 112 113 114 115 + //108 109 110 111 112 113 114 115 116 "LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog " "FROM quest_template"); if (!result) @@ -11228,8 +11228,7 @@ void ObjectMgr::LoadPlayerChoices() continue; } - auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(), - [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; }); + auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId); if (responseItr == choice->Responses.end()) { TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId); @@ -11294,8 +11293,7 @@ void ObjectMgr::LoadPlayerChoices() continue; } - auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(), - [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; }); + auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId); if (responseItr == choice->Responses.end()) { TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward_item` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId); @@ -11340,8 +11338,7 @@ void ObjectMgr::LoadPlayerChoices() continue; } - auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(), - [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; }); + auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId); if (responseItr == choice->Responses.end()) { TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward_currency` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId); @@ -11386,8 +11383,7 @@ void ObjectMgr::LoadPlayerChoices() continue; } - auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(), - [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; }); + auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId); if (responseItr == choice->Responses.end()) { TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward_faction` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId); @@ -11436,8 +11432,7 @@ void ObjectMgr::LoadPlayerChoices() continue; } - auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(), - [responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; }); + auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId); if (responseItr == choice->Responses.end()) { TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_reward_item_choice` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId); @@ -11464,7 +11459,7 @@ void ObjectMgr::LoadPlayerChoices() } while (rewards->NextRow()); } - if (QueryResult mawPowersResult = WorldDatabase.Query("SELECT ChoiceId, ResponseId, TypeArtFileID, Rarity, RarityColor, SpellID, MaxStacks FROM playerchoice_response_maw_power")) + if (QueryResult mawPowersResult = WorldDatabase.Query("SELECT ChoiceId, ResponseId, TypeArtFileID, Rarity, SpellID, MaxStacks FROM playerchoice_response_maw_power")) { do { @@ -11479,11 +11474,7 @@ void ObjectMgr::LoadPlayerChoices() continue; } - auto responseItr = std::find_if(choice->Responses.begin(), choice->Responses.end(), - [responseId](PlayerChoiceResponse const& playerChoiceResponse) - { - return playerChoiceResponse.ResponseId == responseId; - }); + auto responseItr = std::ranges::find(choice->Responses, responseId, &PlayerChoiceResponse::ResponseId); if (responseItr == choice->Responses.end()) { TC_LOG_ERROR("sql.sql", "Table `playerchoice_response_maw_power` references non-existing ResponseId: {} for ChoiceId {}, skipped", responseId, choiceId); @@ -11494,10 +11485,8 @@ void ObjectMgr::LoadPlayerChoices() mawPower.TypeArtFileID = fields[2].GetInt32(); if (!fields[3].IsNull()) mawPower.Rarity = fields[3].GetInt32(); - if (!fields[4].IsNull()) - mawPower.RarityColor = fields[4].GetUInt32(); - mawPower.SpellID = fields[5].GetInt32(); - mawPower.MaxStacks = fields[6].GetInt32(); + mawPower.SpellID = fields[4].GetInt32(); + mawPower.MaxStacks = fields[5].GetInt32(); ++mawPowersCount; diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 8160ebd7404..f523e50a225 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -908,7 +908,6 @@ struct PlayerChoiceResponseMawPower { int32 TypeArtFileID = 0; Optional<int32> Rarity; - Optional<uint32> RarityColor; int32 SpellID = 0; int32 MaxStacks = 0; }; diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 2515320fc4b..ccbd6c88b0b 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -498,7 +498,8 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorI { WorldPackets::Spells::MirrorImageComponentedData mirrorImageComponentedData; mirrorImageComponentedData.UnitGUID = guid; - mirrorImageComponentedData.DisplayID = creator->GetDisplayId(); + if (ChrModelEntry const* chrModel = sDB2Manager.GetChrModel(creator->GetRace(), creator->GetGender())) + mirrorImageComponentedData.ChrModelID = chrModel->ID; mirrorImageComponentedData.RaceID = creator->GetRace(); mirrorImageComponentedData.Gender = creator->GetGender(); mirrorImageComponentedData.ClassID = creator->GetClass(); @@ -511,7 +512,7 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorI mirrorImageComponentedData.ItemDisplayID.reserve(11); - static EquipmentSlots const itemSlots[] = + static constexpr EquipmentSlots itemSlots[] = { EQUIPMENT_SLOT_HEAD, EQUIPMENT_SLOT_SHOULDERS, diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index aef47a0acac..023cc51d2f9 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -33,7 +33,7 @@ #define QUEST_TEMPLATE_FIELDS (ID)(QuestType)(QuestPackageID)(ContentTuningID)(QuestSortID)(QuestInfoID)(SuggestedGroupNum)(RewardNextQuest)(RewardXPDifficulty)\ (RewardXPMultiplier)(RewardMoneyDifficulty)(RewardMoneyMultiplier)(RewardBonusMoney)(RewardSpell)(RewardHonor)(RewardKillHonor)(StartItem)\ - (RewardArtifactXPDifficulty)(RewardArtifactXPMultiplier)(RewardArtifactCategoryID)(Flags)(FlagsEx)(FlagsEx2)\ + (RewardArtifactXPDifficulty)(RewardArtifactXPMultiplier)(RewardArtifactCategoryID)(Flags)(FlagsEx)(FlagsEx2)(FlagsEx3)\ (RewardItem1)(RewardAmount1)(ItemDrop1)(ItemDropQuantity1)(RewardItem2)(RewardAmount2)(ItemDrop2)(ItemDropQuantity2)\ (RewardItem3)(RewardAmount3)(ItemDrop3)(ItemDropQuantity3)(RewardItem4)(RewardAmount4)(ItemDrop4)(ItemDropQuantity4)\ (RewardChoiceItemID1)(RewardChoiceItemQuantity1)(RewardChoiceItemDisplayID1)(RewardChoiceItemID2)(RewardChoiceItemQuantity2)(RewardChoiceItemDisplayID2)\ @@ -109,6 +109,7 @@ Quest::Quest(QuestTemplateQueryResult const& questRecord) : _flags(questRecord.Flags().GetUInt32()), _flagsEx(questRecord.FlagsEx().GetUInt32()), _flagsEx2(questRecord.FlagsEx2().GetUInt32()), + _flagsEx3(questRecord.FlagsEx3().GetUInt32()), _poiContinent(questRecord.POIContinent().GetUInt32()), _poix(questRecord.POIx().GetFloat()), _poiy(questRecord.POIy().GetFloat()), @@ -733,6 +734,7 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const response.Info.Flags = GetFlags(); response.Info.FlagsEx = GetFlagsEx(); response.Info.FlagsEx2 = GetFlagsEx2(); + response.Info.FlagsEx3 = GetFlagsEx3(); response.Info.RewardTitle = GetRewTitle(); response.Info.RewardArenaPoints = GetRewArenaPoints(); response.Info.RewardSkillLineID = GetRewardSkillId(); diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 616cf5c2fe7..59f38eed53b 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -402,14 +402,17 @@ enum QuestObjectiveFlags2 enum class QuestCompleteSpellType : uint32 { - LegacyBehavior = 0, - Follower = 1, - Tradeskill = 2, - Ability = 3, - Aura = 4, - Spell = 5, - Unlock = 6, - Companion = 7, + LegacyBehavior = 0, + Follower = 1, + Tradeskill = 2, + Ability = 3, + Aura = 4, + Spell = 5, + Unlock = 6, + Companion = 7, + QuestlineUnlock = 8, + QuestlineReward = 9, + QuestlineUnlockPart = 10, Max }; @@ -698,6 +701,7 @@ class TC_GAME_API Quest uint32 GetFlags() const { return _flags; } uint32 GetFlagsEx() const { return _flagsEx; } uint32 GetFlagsEx2() const { return _flagsEx2; } + uint32 GetFlagsEx3() const { return _flagsEx3; } uint32 GetSpecialFlags() const { return _specialFlags; } uint32 GetScriptId() const { return _scriptId; } uint32 GetAreaGroupID() const { return _areaGroupID; } @@ -796,6 +800,7 @@ class TC_GAME_API Quest uint32 _flags = 0; uint32 _flagsEx = 0; uint32 _flagsEx2 = 0; + uint32 _flagsEx3 = 0; uint32 _poiContinent = 0; float _poix = 0.f; float _poiy = 0.f; diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index 670347a44e8..b5501c18460 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -345,7 +345,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::RatedPvpInf data << int32(bracketInfo.PvpTierID); data << int32(bracketInfo.SeasonPvpTier); data << int32(bracketInfo.BestWeeklyPvpTier); - data << int32(bracketInfo.BestSeasonPvpTierEnum); + data << uint8(bracketInfo.BestSeasonPvpTierEnum); data.WriteBit(bracketInfo.Disqualified); data.FlushBits(); diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index 4db509689f2..73c64c8ecc5 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -469,7 +469,7 @@ namespace WorldPackets int32 PvpTierID = 0; int32 SeasonPvpTier = 0; int32 BestWeeklyPvpTier = 0; - int32 BestSeasonPvpTierEnum = 0; + uint8 BestSeasonPvpTierEnum = 0; bool Disqualified = false; } Bracket[9]; }; diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 6cd54e78b87..7df758a319f 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -215,7 +215,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfoBasi { data << charInfo.Guid; data << uint32(charInfo.VirtualRealmAddress); - data << uint8(charInfo.ListPosition); + data << uint16(charInfo.ListPosition); data << uint8(charInfo.RaceID); data << uint8(charInfo.SexID); data << uint8(charInfo.ClassID); diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 5d84cbb7478..f26a7b13524 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -151,7 +151,7 @@ namespace WorldPackets uint32 VirtualRealmAddress = 0; uint64 GuildClubMemberID = 0; ///< same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known) std::string Name; - uint8 ListPosition = 0; ///< Order of the characters in list + uint16 ListPosition = 0; ///< Order of the characters in list uint8 RaceID = 0; uint8 ClassID = 0; uint8 SexID = 0; diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp index 9cf557116dd..278eaed2127 100644 --- a/src/server/game/Server/Packets/InspectPackets.cpp +++ b/src/server/game/Server/Packets/InspectPackets.cpp @@ -136,7 +136,7 @@ ByteBuffer& operator<<(ByteBuffer& data, PVPBracketData const& bracket) data << int32(bracket.Tier); data << int32(bracket.WeeklyBestTier); data << int32(bracket.SeasonBestRating); - data << int32(bracket.SeasonBestTierEnum); + data << uint8(bracket.SeasonBestTierEnum); data << int32(bracket.RoundsSeasonPlayed); data << int32(bracket.RoundsSeasonWon); data << int32(bracket.RoundsWeeklyPlayed); diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h index 9cd7dfe386d..f1dcdb7f310 100644 --- a/src/server/game/Server/Packets/InspectPackets.h +++ b/src/server/game/Server/Packets/InspectPackets.h @@ -108,7 +108,7 @@ namespace WorldPackets int32 Tier = 0; int32 WeeklyBestTier = 0; int32 SeasonBestRating = 0; - int32 SeasonBestTierEnum = 0; + uint8 SeasonBestTierEnum = 0; int32 RoundsSeasonPlayed = 0; int32 RoundsSeasonWon = 0; int32 RoundsWeeklyPlayed = 0; diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp index d3d715aec5e..461c01dc15e 100644 --- a/src/server/game/Server/Packets/LFGPackets.cpp +++ b/src/server/game/Server/Packets/LFGPackets.cpp @@ -273,7 +273,7 @@ WorldPacket const* LFGRoleCheckUpdate::Write() WorldPacket const* LFGJoinResult::Write() { _worldPacket << Ticket; - _worldPacket << uint8(Result); + _worldPacket << int32(Result); _worldPacket << uint8(ResultDetail); _worldPacket << uint32(BlackList.size()); _worldPacket << uint32(BlackListNames.size()); diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h index 8e51aa2378d..57b0e7fc1e5 100644 --- a/src/server/game/Server/Packets/LFGPackets.h +++ b/src/server/game/Server/Packets/LFGPackets.h @@ -286,7 +286,7 @@ namespace WorldPackets WorldPacket const* Write() override; RideTicket Ticket; - uint8 Result = 0; + int32 Result = 0; uint8 ResultDetail = 0; std::vector<LFGBlackList> BlackList; std::vector<std::string const*> BlackListNames; diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 9afa34f5e06..12fd59e3d61 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -78,9 +78,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText) data << int32(gossipText.ContentTuningID); data << int32(gossipText.QuestType); data << int32(gossipText.Unused1102); - data << int32(gossipText.QuestFlags[0]); - data << int32(gossipText.QuestFlags[1]); - data << int32(gossipText.QuestFlags[2]); + data.append(gossipText.QuestFlags); data << Bits<1>(gossipText.Repeatable); data << Bits<1>(gossipText.ResetByScheduler); diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index 7bf8a0f148c..c3d4b4f926e 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -104,7 +104,7 @@ namespace WorldPackets bool Important = false; bool Meta = false; std::string QuestTitle; - std::array<int32, 3> QuestFlags = { }; + std::array<int32, 4> QuestFlags = { }; }; ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText); diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index be591c38109..e8bac0296ee 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -111,6 +111,7 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket << uint32(Info.Flags); _worldPacket << uint32(Info.FlagsEx); _worldPacket << uint32(Info.FlagsEx2); + _worldPacket << uint32(Info.FlagsEx3); for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) { @@ -368,9 +369,7 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestGiverOfferReward const& offer) data << offer.Rewards; // QuestRewards data << int32(offer.Emotes.size()); data << offer.QuestGiverGUID; - data << int32(offer.QuestFlags[0]); // Flags - data << int32(offer.QuestFlags[1]); // FlagsEx - data << int32(offer.QuestFlags[2]); // FlagsEx2 + data.append(offer.QuestFlags); data << int32(offer.QuestGiverCreatureID); data << int32(offer.QuestID); data << int32(offer.SuggestedPartyMembers); @@ -467,9 +466,7 @@ WorldPacket const* QuestGiverQuestDetails::Write() _worldPacket << int32(PortraitGiverMount); _worldPacket << int32(PortraitGiverModelSceneID); _worldPacket << int32(PortraitTurnIn); - _worldPacket << uint32(QuestFlags[0]); // Flags - _worldPacket << uint32(QuestFlags[1]); // FlagsEx - _worldPacket << uint32(QuestFlags[2]); // FlagsEx + _worldPacket.append(QuestFlags); _worldPacket << int32(SuggestedPartyMembers); _worldPacket << uint32(LearnSpells.size()); _worldPacket << uint32(DescEmotes.size()); @@ -532,9 +529,7 @@ WorldPacket const* QuestGiverRequestItems::Write() _worldPacket << int32(Collect.size()); _worldPacket << int32(Currency.size()); _worldPacket << QuestGiverGUID; - _worldPacket << uint32(QuestFlags[0]); - _worldPacket << uint32(QuestFlags[1]); - _worldPacket << uint32(QuestFlags[2]); + _worldPacket.append(QuestFlags); _worldPacket << int32(StatusFlags); _worldPacket << int32(QuestGiverCreatureID); _worldPacket << int32(QuestID); @@ -774,15 +769,11 @@ ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseMawPower const& pla data << int32(playerChoiceResponseMawPower.SpellID); data << int32(playerChoiceResponseMawPower.MaxStacks); data.WriteBit(playerChoiceResponseMawPower.Rarity.has_value()); - data.WriteBit(playerChoiceResponseMawPower.RarityColor.has_value()); data.FlushBits(); if (playerChoiceResponseMawPower.Rarity) data << int32(*playerChoiceResponseMawPower.Rarity); - if (playerChoiceResponseMawPower.RarityColor) - data << uint32(*playerChoiceResponseMawPower.RarityColor); - return data; } @@ -840,9 +831,11 @@ WorldPacket const* DisplayPlayerChoice::Write() _worldPacket << Duration; _worldPacket.WriteBits(Question.length(), 8); _worldPacket.WriteBits(PendingChoiceText.length(), 8); - _worldPacket.WriteBit(CloseChoiceFrame); + _worldPacket.WriteBit(InfiniteRange); _worldPacket.WriteBit(HideWarboardHeader); _worldPacket.WriteBit(KeepOpenAfterChoice); + _worldPacket.WriteBit(Unknown_1115_1); + _worldPacket.WriteBit(Unknown_1115_2); _worldPacket.FlushBits(); for (PlayerChoiceResponse const& response : Responses) diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 5a6e0e9be6f..b388f4ecc66 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -148,6 +148,7 @@ namespace WorldPackets uint32 Flags = 0; uint32 FlagsEx = 0; uint32 FlagsEx2 = 0; + uint32 FlagsEx3 = 0; int32 POIContinent = 0; float POIx = 0.0f; float POIy = 0.0f; @@ -315,7 +316,7 @@ namespace WorldPackets int32 SuggestedPartyMembers = 0; QuestRewards Rewards; std::vector<QuestDescEmote> Emotes; - std::array<int32, 3> QuestFlags = { }; + std::array<int32, 4> QuestFlags = { }; int32 QuestInfoID = 0; }; @@ -414,7 +415,7 @@ namespace WorldPackets ObjectGuid InformUnit; int32 QuestID = 0; int32 QuestPackageID = 0; - uint32 QuestFlags[3] = { }; + std::array<uint32, 4> QuestFlags = { }; int32 SuggestedPartyMembers = 0; QuestRewards Rewards; std::vector<QuestObjectiveSimple> Objectives; @@ -478,7 +479,7 @@ namespace WorldPackets std::vector<QuestCurrency> Currency; int32 StatusFlags = 0; int32 QuestInfoID = 0; - uint32 QuestFlags[3] = { }; + std::array<uint32, 4> QuestFlags = { }; std::string QuestTitle; std::string CompletionText; std::vector<ConditionalQuestText> ConditionalCompletionText; @@ -728,7 +729,6 @@ namespace WorldPackets int32 Unused901_1 = 0; int32 TypeArtFileID = 0; Optional<int32> Rarity; - Optional<uint32> RarityColor; int32 Unused901_2 = 0; int32 SpellID = 0; int32 MaxStacks = 0; @@ -773,9 +773,11 @@ namespace WorldPackets std::string_view Question; std::string_view PendingChoiceText; std::vector<PlayerChoiceResponse> Responses; - bool CloseChoiceFrame = false; + bool InfiniteRange = false; bool HideWarboardHeader = false; bool KeepOpenAfterChoice = false; + bool Unknown_1115_1 = false; + bool Unknown_1115_2 = false; }; class ChoiceResponse final : public ClientPacket diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index e7bb499d85b..63456d61402 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -388,6 +388,7 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastData const& spellCastData) data << spellCastData.Visual; data << uint32(spellCastData.CastFlags); data << uint32(spellCastData.CastFlagsEx); + data << uint32(spellCastData.CastFlagsEx2); data << uint32(spellCastData.CastTime); data << spellCastData.MissileTrajectory; data << int32(spellCastData.AmmoDisplayID); @@ -984,14 +985,15 @@ MirrorImageComponentedData::~MirrorImageComponentedData() = default; WorldPacket const* MirrorImageComponentedData::Write() { _worldPacket << UnitGUID; - _worldPacket << int32(DisplayID); - _worldPacket << int32(SpellVisualKitID); + _worldPacket << int32(ChrModelID); _worldPacket << uint8(RaceID); _worldPacket << uint8(Gender); _worldPacket << uint8(ClassID); _worldPacket << uint32(Customizations.size()); _worldPacket << GuildGUID; _worldPacket << uint32(ItemDisplayID.size()); + _worldPacket << int32(SpellVisualKitID); + _worldPacket << int32(Unused_1115); for (Character::ChrCustomizationChoice const& customization : Customizations) _worldPacket << customization; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 5893496f13d..78af3cccc3b 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -361,6 +361,7 @@ namespace WorldPackets SpellCastVisual Visual; uint32 CastFlags = 0; uint32 CastFlagsEx = 0; + uint32 CastFlagsEx2 = 0; uint32 CastTime = 0; std::vector<ObjectGuid> HitTargets; std::vector<ObjectGuid> MissTargets; @@ -989,8 +990,9 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid UnitGUID; - int32 DisplayID = 0; + int32 ChrModelID = 0; int32 SpellVisualKitID = 0; + int32 Unused_1115 = 0; uint8 RaceID = 0; uint8 Gender = 0; uint8 ClassID = 0; diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index e8c2f899349..43631b60dcd 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -150,7 +150,6 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << Bits<1>(GroupFinderEnabled); _worldPacket << Bits<1>(IsPremadeGroupEnabled); - _worldPacket << Bits<1>(UseActivePlayerDataQuestCompleted); _worldPacket << Bits<1>(false); // unused 10.2.7 _worldPacket << Bits<1>(GuildEventsEditsEnabled); _worldPacket << Bits<1>(GuildTradeSkillsEnabled); @@ -158,8 +157,8 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket << Bits<1>(BNSendWhisperUseV2Services); _worldPacket << Bits<1>(BNSendGameDataUseV2Services); _worldPacket << Bits<1>(IsAccountCurrencyTransferEnabled); - _worldPacket << Bits<1>(false); // unused 11.0.7 + _worldPacket << Bits<1>(LobbyMatchmakerQueueFromMainlineEnabled); _worldPacket << Bits<1>(CanSendLobbyMatchmakerPartyCustomizations); _worldPacket << Bits<1>(AddonProfilerEnabled); diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 405f96bbd9a..d01babbb2a1 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -172,7 +172,6 @@ namespace WorldPackets bool SellAllJunkEnabled = false; bool GroupFinderEnabled = true; // classic only bool IsPremadeGroupEnabled = true; // classic only - bool UseActivePlayerDataQuestCompleted = false; ///< Uses ActivePlayerData::QuestCompleted (legacy) to store completed quest bits instead of ActivePlayerData::BitVectors[9] bool GuildEventsEditsEnabled = true; bool GuildTradeSkillsEnabled = true; bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 3db08889b41..9cabcfbfc53 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -307,6 +307,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_CHAT_CHANNEL_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_KICK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand); + DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MODERATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MODERATOR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_OWNER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_PASSWORD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPassword); @@ -315,6 +316,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNBAN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNMODERATOR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNSILENCE_ALL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); + DEFINE_HANDLER(CMSG_CHAT_DROP_CAUTIONARY_CHAT_MESSAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHAT_JOIN_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleJoinChannel); DEFINE_HANDLER(CMSG_CHAT_LEAVE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLeaveChannel); DEFINE_HANDLER(CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -335,6 +337,8 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonRegisteredPrefixesOpcode); DEFINE_HANDLER(CMSG_CHAT_REPORT_FILTERED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHAT_REPORT_IGNORED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode); + DEFINE_HANDLER(CMSG_CHAT_SEND_CAUTIONARY_CHANNEL_MESSAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CHAT_SEND_CAUTIONARY_CHAT_MESSAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAllAddonPrefixesOpcode); DEFINE_HANDLER(CMSG_CHECK_CHARACTER_NAME_AVAILABILITY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCheckCharacterNameAvailability); DEFINE_HANDLER(CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCheckIsAdventureMapPoiValid); @@ -532,6 +536,10 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_GUILD_QUERY_NEWS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryNews); DEFINE_HANDLER(CMSG_GUILD_QUERY_RECIPES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GUILD_REPLACE_GUILD_MASTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildReplaceGuildMaster); + DEFINE_HANDLER(CMSG_GUILD_REQUEST_RENAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_GUILD_REQUEST_RENAME_NAME_CHECK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_GUILD_REQUEST_RENAME_REFUND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_GUILD_REQUEST_RENAME_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetAchievementTracking); DEFINE_HANDLER(CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetFocusedAchievement); DEFINE_HANDLER(CMSG_GUILD_SET_GUILD_MASTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetGuildMaster); @@ -727,6 +735,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_PARTY_UNINVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyUninviteOpcode); DEFINE_HANDLER(CMSG_PERFORM_ITEM_INTERACTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_PERKS_PROGRAM_ITEMS_REFRESHED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PURCHASE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_REFUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -822,9 +831,6 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_REPAIR_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRepairItemOpcode); DEFINE_HANDLER(CMSG_REPLACE_TROPHY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REPOP_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRepopRequest); - DEFINE_HANDLER(CMSG_REPORT_CLIENT_VARIABLES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_REPORT_ENABLED_ADDONS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REPORT_PVP_PLAYER_AFK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleReportPvPAFK); DEFINE_HANDLER(CMSG_REPORT_SERVER_LAG, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REPORT_STUCK_IN_COMBAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -1232,6 +1238,8 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAPTURE_POINT_REMOVED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAS_REFRESH_REMOTE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAUTIONARY_CHANNEL_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAUTIONARY_CHAT_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAIN_MISSILE_BOUNCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1389,6 +1397,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPORT_ACCOUNT_PROFILE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXTERNAL_TRANSACTION_ID_GENERATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FACTION_BONUS_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FAILED_PLAYER_CONDITION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1570,6 +1579,10 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PARTY_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RANKS, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAME_NAME_CHECK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAME_REFUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAME_REQUESTED_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RENAME_STATUS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_REACTION_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REWARD_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index c24e1633a20..fb6bab28936 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -40,38 +40,38 @@ constexpr uint16 UNKNOWN_OPCODE = 0xBADD; // special marker value for uninitia enum OpcodeClient : uint32 { - CMSG_ABANDON_NPE_RESPONSE = 0x310299, + CMSG_ABANDON_NPE_RESPONSE = 0x31029A, CMSG_ACCEPT_GUILD_INVITE = 0x360029, - CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x31025A, - CMSG_ACCEPT_SOCIAL_CONTRACT = 0x360174, + CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x31025B, + CMSG_ACCEPT_SOCIAL_CONTRACT = 0x360172, CMSG_ACCEPT_TRADE = 0x310004, CMSG_ACCEPT_WARGAME_INVITE = 0x36000C, - CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3102DB, - CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3102DC, - CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x360160, + CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3102DD, + CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3102DE, + CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x36015E, CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND = 0x3600BE, - CMSG_ACTIVATE_SOULBIND = 0x310288, + CMSG_ACTIVATE_SOULBIND = 0x310289, CMSG_ACTIVATE_TAXI = 0x32003E, CMSG_ADDON_LIST = 0x360004, CMSG_ADD_ACCOUNT_COSMETIC = 0x310170, CMSG_ADD_BATTLENET_FRIEND = 0x360084, - CMSG_ADD_FRIEND = 0x3600FB, - CMSG_ADD_IGNORE = 0x3600FF, + CMSG_ADD_FRIEND = 0x3600FC, + CMSG_ADD_IGNORE = 0x360100, CMSG_ADD_TOY = 0x31016F, - CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3100B4, - CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x31028B, - CMSG_ADVENTURE_MAP_START_QUEST = 0x31022B, + CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3100B3, + CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x31028C, + CMSG_ADVENTURE_MAP_START_QUEST = 0x31022C, CMSG_ALTER_APPEARANCE = 0x32008F, CMSG_AREA_SPIRIT_HEALER_QUERY = 0x320043, CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x320044, - CMSG_AREA_TRIGGER = 0x310087, + CMSG_AREA_TRIGGER = 0x310086, CMSG_ARTIFACT_ADD_POWER = 0x310056, CMSG_ARTIFACT_SET_APPEARANCE = 0x310058, - CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3100C0, - CMSG_ATTACK_STOP = 0x31011E, - CMSG_ATTACK_SWING = 0x31011D, - CMSG_AUCTIONABLE_TOKEN_SELL = 0x360111, - CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x360112, + CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3100BF, + CMSG_ATTACK_STOP = 0x31011D, + CMSG_ATTACK_SWING = 0x31011C, + CMSG_AUCTIONABLE_TOKEN_SELL = 0x360112, + CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x360113, CMSG_AUCTION_BROWSE_QUERY = 0x320063, CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x32006B, CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x32006A, @@ -87,47 +87,47 @@ enum OpcodeClient : uint32 CMSG_AUCTION_REPLICATE_ITEMS = 0x320061, CMSG_AUCTION_SELL_COMMODITY = 0x32006C, CMSG_AUCTION_SELL_ITEM = 0x32005F, - CMSG_AUCTION_SET_FAVORITE_ITEM = 0x360161, + CMSG_AUCTION_SET_FAVORITE_ITEM = 0x36015F, CMSG_AUTH_CONTINUED_SESSION = 0x370002, CMSG_AUTH_SESSION = 0x370001, CMSG_AUTOBANK_ITEM = 0x330003, CMSG_AUTOBANK_REAGENT = 0x330005, CMSG_AUTOSTORE_BANK_ITEM = 0x330002, CMSG_AUTOSTORE_BANK_REAGENT = 0x330004, - CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3102E5, + CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3102E7, CMSG_AUTO_EQUIP_ITEM = 0x330006, CMSG_AUTO_EQUIP_ITEM_SLOT = 0x33000B, CMSG_AUTO_GUILD_BANK_ITEM = 0x32004A, CMSG_AUTO_STORE_BAG_ITEM = 0x330007, CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x320053, - CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x310256, - CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x310237, - CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x310258, - CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x310257, + CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x310257, + CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x310238, + CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x310259, + CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x310258, CMSG_BANKER_ACTIVATE = 0x320046, CMSG_BATTLEFIELD_LEAVE = 0x31001F, CMSG_BATTLEFIELD_LIST = 0x31002A, CMSG_BATTLEFIELD_PORT = 0x3200C5, - CMSG_BATTLEMASTER_HELLO = 0x31018D, + CMSG_BATTLEMASTER_HELLO = 0x31018E, CMSG_BATTLEMASTER_JOIN = 0x3200BC, CMSG_BATTLEMASTER_JOIN_ARENA = 0x3200BD, CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3200C3, CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3200BF, CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3200BE, CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3200C0, - CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x3600FE, - CMSG_BATTLENET_REQUEST = 0x36011F, - CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x3600F8, - CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x36013E, - CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x3600F7, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x3600EE, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x360164, - CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x3600E5, - CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x3600E6, - CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x360137, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x360133, - CMSG_BATTLE_PAY_START_PURCHASE = 0x3600F6, - CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36011D, + CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x3600FF, + CMSG_BATTLENET_REQUEST = 0x360120, + CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x3600F9, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x36013C, + CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x3600F8, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x3600EF, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS = 0x360162, + CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x3600E6, + CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x3600E7, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x360135, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x360131, + CMSG_BATTLE_PAY_START_PURCHASE = 0x3600F7, + CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36011E, CMSG_BATTLE_PET_CLEAR_FANFARE = 0x2B0002, CMSG_BATTLE_PET_DELETE_PET = 0x36004F, CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x360050, @@ -137,14 +137,14 @@ enum OpcodeClient : uint32 CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x360057, CMSG_BATTLE_PET_SET_FLAGS = 0x36005A, CMSG_BATTLE_PET_SUMMON = 0x360053, - CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x310091, - CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x310090, + CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x310090, + CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31008F, CMSG_BEGIN_TRADE = 0x310001, CMSG_BINDER_ACTIVATE = 0x320045, CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3200CD, CMSG_BLACK_MARKET_OPEN = 0x3200CB, CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3200CC, - CMSG_BONUS_ROLL = 0x310259, + CMSG_BONUS_ROLL = 0x31025A, CMSG_BUG_REPORT = 0x3600AF, CMSG_BUSY_TRADE = 0x310002, CMSG_BUY_ACCOUNT_BANK_TAB = 0x320122, @@ -152,7 +152,7 @@ enum OpcodeClient : uint32 CMSG_BUY_BANK_SLOT = 0x320047, CMSG_BUY_ITEM = 0x320036, CMSG_BUY_REAGENT_BANK = 0x320048, - CMSG_CAGE_BATTLE_PET = 0x3100A4, + CMSG_CAGE_BATTLE_PET = 0x3100A3, CMSG_CALENDAR_ADD_EVENT = 0x3600A7, CMSG_CALENDAR_COMMUNITY_INVITE = 0x36009B, CMSG_CALENDAR_COMPLAIN = 0x3600A3, @@ -173,98 +173,102 @@ enum OpcodeClient : uint32 CMSG_CANCEL_CAST = 0x310176, CMSG_CANCEL_CHANNELLING = 0x310137, CMSG_CANCEL_GROWTH_AURA = 0x31013F, - CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3100CD, + CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3100CC, CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x310059, CMSG_CANCEL_MOUNT_AURA = 0x310152, CMSG_CANCEL_QUEUED_SPELL = 0x31002B, CMSG_CANCEL_TEMP_ENCHANTMENT = 0x32008C, CMSG_CANCEL_TRADE = 0x310006, CMSG_CAN_DUEL = 0x36008C, - CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x360132, + CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x360130, CMSG_CAST_SPELL = 0x310173, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x2E0002, - CMSG_CHANGE_BAG_SLOT_FLAG = 0x31020F, - CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x310210, - CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3101F0, - CMSG_CHANGE_REALM_TICKET = 0x360124, + CMSG_CHANGE_BAG_SLOT_FLAG = 0x310210, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x310211, + CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3101F1, + CMSG_CHANGE_REALM_TICKET = 0x360125, CMSG_CHANGE_SUB_GROUP = 0x360076, - CMSG_CHARACTER_CHECK_UPGRADE = 0x3600F1, - CMSG_CHARACTER_RENAME_REQUEST = 0x3600EC, - CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x3600EF, - CMSG_CHARACTER_UPGRADE_START = 0x3600F0, + CMSG_CHARACTER_CHECK_UPGRADE = 0x3600F2, + CMSG_CHARACTER_RENAME_REQUEST = 0x3600ED, + CMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_REQUEST = 0x3600F0, + CMSG_CHARACTER_UPGRADE_START = 0x3600F1, CMSG_CHAR_CUSTOMIZE = 0x3600B6, CMSG_CHAR_DELETE = 0x3600C8, CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3600BC, - CMSG_CHAT_ADDON_MESSAGE = 0x2D0026, - CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x2D0027, - CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x2D002E, - CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x2D001B, - CMSG_CHAT_CHANNEL_BAN = 0x2D0019, - CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x2D001E, - CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x2D000E, - CMSG_CHAT_CHANNEL_INVITE = 0x2D0017, - CMSG_CHAT_CHANNEL_KICK = 0x2D0018, - CMSG_CHAT_CHANNEL_LIST = 0x2D000D, - CMSG_CHAT_CHANNEL_MODERATOR = 0x2D0013, - CMSG_CHAT_CHANNEL_OWNER = 0x2D0011, - CMSG_CHAT_CHANNEL_PASSWORD = 0x2D000F, - CMSG_CHAT_CHANNEL_SET_OWNER = 0x2D0010, - CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x2D001C, - CMSG_CHAT_CHANNEL_UNBAN = 0x2D001A, - CMSG_CHAT_CHANNEL_UNMODERATOR = 0x2D0014, - CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x2D001D, + CMSG_CHAT_ADDON_MESSAGE = 0x2D002A, + CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x2D002B, + CMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_REQUEST = 0x2D0032, + CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x2D001F, + CMSG_CHAT_CHANNEL_BAN = 0x2D001D, + CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x2D0022, + CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x2D0012, + CMSG_CHAT_CHANNEL_INVITE = 0x2D001B, + CMSG_CHAT_CHANNEL_KICK = 0x2D001C, + CMSG_CHAT_CHANNEL_LIST = 0x2D0011, + CMSG_CHAT_CHANNEL_MODERATE = 0x2D0016, + CMSG_CHAT_CHANNEL_MODERATOR = 0x2D0017, + CMSG_CHAT_CHANNEL_OWNER = 0x2D0015, + CMSG_CHAT_CHANNEL_PASSWORD = 0x2D0013, + CMSG_CHAT_CHANNEL_SET_OWNER = 0x2D0014, + CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x2D0020, + CMSG_CHAT_CHANNEL_UNBAN = 0x2D001E, + CMSG_CHAT_CHANNEL_UNMODERATOR = 0x2D0018, + CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x2D0021, + CMSG_CHAT_DROP_CAUTIONARY_CHAT_MESSAGE = 0x2D000A, CMSG_CHAT_JOIN_CHANNEL = 0x2D0000, CMSG_CHAT_LEAVE_CHANNEL = 0x2D0001, - CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT = 0x2D002D, - CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY = 0x2D002C, - CMSG_CHAT_MESSAGE_AFK = 0x2D000B, + CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_INSTANCE_CHAT = 0x2D0031, + CMSG_CHAT_LOBBY_MATCHMAKER_MESSAGE_PARTY = 0x2D0030, + CMSG_CHAT_MESSAGE_AFK = 0x2D000F, CMSG_CHAT_MESSAGE_CHANNEL = 0x2D0007, - CMSG_CHAT_MESSAGE_DND = 0x2D000C, - CMSG_CHAT_MESSAGE_EMOTE = 0x2D0020, - CMSG_CHAT_MESSAGE_GUILD = 0x2D0009, - CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x2D0024, - CMSG_CHAT_MESSAGE_OFFICER = 0x2D000A, - CMSG_CHAT_MESSAGE_PARTY = 0x2D0022, - CMSG_CHAT_MESSAGE_RAID = 0x2D0023, - CMSG_CHAT_MESSAGE_RAID_WARNING = 0x2D0025, - CMSG_CHAT_MESSAGE_SAY = 0x2D001F, + CMSG_CHAT_MESSAGE_DND = 0x2D0010, + CMSG_CHAT_MESSAGE_EMOTE = 0x2D0024, + CMSG_CHAT_MESSAGE_GUILD = 0x2D000D, + CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x2D0028, + CMSG_CHAT_MESSAGE_OFFICER = 0x2D000E, + CMSG_CHAT_MESSAGE_PARTY = 0x2D0026, + CMSG_CHAT_MESSAGE_RAID = 0x2D0027, + CMSG_CHAT_MESSAGE_RAID_WARNING = 0x2D0029, + CMSG_CHAT_MESSAGE_SAY = 0x2D0023, CMSG_CHAT_MESSAGE_WHISPER = 0x2D0008, - CMSG_CHAT_MESSAGE_YELL = 0x2D0021, + CMSG_CHAT_MESSAGE_YELL = 0x2D0025, CMSG_CHAT_REGISTER_ADDON_PREFIXES = 0x2D0005, CMSG_CHAT_REPORT_FILTERED = 0x2D0004, CMSG_CHAT_REPORT_IGNORED = 0x2D0003, + CMSG_CHAT_SEND_CAUTIONARY_CHANNEL_MESSAGE = 0x2D000B, + CMSG_CHAT_SEND_CAUTIONARY_CHAT_MESSAGE = 0x2D0009, CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x2D0006, CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x36006F, - CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x31010F, + CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x31010E, CMSG_CHOICE_RESPONSE = 0x31017B, - CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x310287, - CMSG_CLAIM_WEEKLY_REWARD = 0x310264, - CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3102C0, - CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3100C4, - CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3102C2, - CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3102BF, - CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3102BE, - CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3102C3, - CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3100C3, + CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x310288, + CMSG_CLAIM_WEEKLY_REWARD = 0x310265, + CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3102C2, + CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3100C3, + CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3102C4, + CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3102C1, + CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3102C0, + CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3102C5, + CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3100C2, CMSG_CLEAR_NEW_APPEARANCE = 0x2B0005, CMSG_CLEAR_RAID_MARKER = 0x310052, CMSG_CLEAR_TRADE_ITEM = 0x310008, CMSG_CLIENT_PORT_GRAVEYARD = 0x3200C7, CMSG_CLOSE_INTERACTION = 0x320025, CMSG_CLOSE_QUEST_CHOICE = 0x31017C, - CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x31028F, - CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3102C4, - CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x360149, - CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x360147, - CMSG_CLUB_FINDER_POST = 0x360144, - CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x36014B, - CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x360145, - CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x360146, - CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x36014A, - CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x36014C, - CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x360148, - CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x360167, - CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x360121, + CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x310290, + CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3102C6, + CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x360147, + CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x360145, + CMSG_CLUB_FINDER_POST = 0x360142, + CMSG_CLUB_FINDER_REQUEST_CLUBS_DATA = 0x360149, + CMSG_CLUB_FINDER_REQUEST_CLUBS_LIST = 0x360143, + CMSG_CLUB_FINDER_REQUEST_MEMBERSHIP_TO_CLUB = 0x360144, + CMSG_CLUB_FINDER_REQUEST_PENDING_CLUBS_LIST = 0x360148, + CMSG_CLUB_FINDER_REQUEST_SUBSCRIBED_CLUB_POSTING_IDS = 0x36014A, + CMSG_CLUB_FINDER_RESPOND_TO_APPLICANT = 0x360146, + CMSG_CLUB_FINDER_WHISPER_APPLICANT_REQUEST = 0x360165, + CMSG_CLUB_PRESENCE_SUBSCRIBE = 0x360122, CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x36005D, CMSG_COMMENTATOR_ENABLE = 0x36001C, CMSG_COMMENTATOR_ENTER_INSTANCE = 0x360020, @@ -272,30 +276,30 @@ enum OpcodeClient : uint32 CMSG_COMMENTATOR_GET_MAP_INFO = 0x36001D, CMSG_COMMENTATOR_GET_PLAYER_COOLDOWNS = 0x36001F, CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x36001E, - CMSG_COMMENTATOR_SPECTATE = 0x360165, + CMSG_COMMENTATOR_SPECTATE = 0x360163, CMSG_COMMENTATOR_START_WARGAME = 0x36001B, - CMSG_COMMERCE_TOKEN_GET_COUNT = 0x36010F, - CMSG_COMMERCE_TOKEN_GET_LOG = 0x360119, - CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x360110, + CMSG_COMMERCE_TOKEN_GET_COUNT = 0x360110, + CMSG_COMMERCE_TOKEN_GET_LOG = 0x36011A, + CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x360111, CMSG_COMPLAINT = 0x360096, CMSG_COMPLETE_CINEMATIC = 0x3200E5, CMSG_COMPLETE_MOVIE = 0x320077, CMSG_CONFIRM_ARTIFACT_RESPEC = 0x310057, - CMSG_CONFIRM_PROFESSION_RESPEC = 0x3100C7, - CMSG_CONFIRM_RESPEC_WIPE = 0x3100C6, + CMSG_CONFIRM_PROFESSION_RESPEC = 0x3100C6, + CMSG_CONFIRM_RESPEC_WIPE = 0x3100C5, CMSG_CONNECT_TO_FAILED = 0x360000, - CMSG_CONSUMABLE_TOKEN_BUY = 0x360114, - CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x360115, - CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x360113, - CMSG_CONSUMABLE_TOKEN_REDEEM = 0x360117, - CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x360118, - CMSG_CONTENT_TRACKING_START_TRACKING = 0x3102D4, - CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3102D5, + CMSG_CONSUMABLE_TOKEN_BUY = 0x360115, + CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x360116, + CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x360114, + CMSG_CONSUMABLE_TOKEN_REDEEM = 0x360118, + CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x360119, + CMSG_CONTENT_TRACKING_START_TRACKING = 0x3102D6, + CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3102D7, CMSG_CONTRIBUTION_CONTRIBUTE = 0x3200FA, CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3200FB, CMSG_CONVERSATION_CINEMATIC_READY = 0x3200E7, CMSG_CONVERSATION_LINE_STARTED = 0x3200E6, - CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3102E4, + CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3102E6, CMSG_CONVERT_RAID = 0x360078, CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x32010E, CMSG_CRAFTING_ORDER_CANCEL = 0x32011A, @@ -310,15 +314,15 @@ enum OpcodeClient : uint32 CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x32011C, CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x32011D, CMSG_CREATE_CHARACTER = 0x36006E, - CMSG_CREATE_SHIPMENT = 0x3101D9, + CMSG_CREATE_SHIPMENT = 0x3101DA, CMSG_DB_QUERY_BULK = 0x360010, CMSG_DECLINE_GUILD_INVITES = 0x3200B9, CMSG_DECLINE_PETITION = 0x3200D4, CMSG_DELETE_EQUIPMENT_SET = 0x3200A5, CMSG_DELVE_TELEPORT_OUT = 0x320129, - CMSG_DEL_FRIEND = 0x3600FC, - CMSG_DEL_IGNORE = 0x360100, - CMSG_DEPOSIT_REAGENT_BANK = 0x310219, + CMSG_DEL_FRIEND = 0x3600FD, + CMSG_DEL_IGNORE = 0x360101, + CMSG_DEPOSIT_REAGENT_BANK = 0x31021A, CMSG_DESTROY_ITEM = 0x310169, CMSG_DF_BOOT_PLAYER_VOTE = 0x360044, CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x360036, @@ -332,65 +336,65 @@ enum OpcodeClient : uint32 CMSG_DF_TELEPORT = 0x360045, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x34005E, CMSG_DISMISS_CRITTER = 0x320093, - CMSG_DO_COUNTDOWN = 0x360143, - CMSG_DO_MASTER_LOOT_ROLL = 0x3100CC, + CMSG_DO_COUNTDOWN = 0x360141, + CMSG_DO_MASTER_LOOT_ROLL = 0x3100CB, CMSG_DO_READY_CHECK = 0x36005E, CMSG_DUEL_RESPONSE = 0x32007C, - CMSG_EJECT_PASSENGER = 0x310104, + CMSG_EJECT_PASSENGER = 0x310103, CMSG_EMOTE = 0x3200E1, CMSG_ENABLE_NAGLE = 0x370007, CMSG_ENABLE_TAXI_NODE = 0x32003C, - CMSG_ENGINE_SURVEY = 0x36010E, + CMSG_ENGINE_SURVEY = 0x36010F, CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x370003, CMSG_ENUM_CHARACTERS = 0x360014, - CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x360108, + CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x360109, CMSG_FAR_SIGHT = 0x320082, CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31005E, CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31005D, CMSG_GAME_OBJ_REPORT_USE = 0x320089, CMSG_GAME_OBJ_USE = 0x320088, - CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3101D4, - CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3101BA, - CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3101A7, - CMSG_GARRISON_CHECK_UPGRADEABLE = 0x31020B, - CMSG_GARRISON_COMPLETE_MISSION = 0x3101FD, - CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3101D5, - CMSG_GARRISON_GENERATE_RECRUITS = 0x3101BD, - CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3101CC, - CMSG_GARRISON_GET_MAP_DATA = 0x3101D3, - CMSG_GARRISON_GET_MISSION_REWARD = 0x31022F, - CMSG_GARRISON_LEARN_TALENT = 0x3101C8, - CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3101FF, - CMSG_GARRISON_PURCHASE_BUILDING = 0x3101A3, - CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3101BF, - CMSG_GARRISON_REMOVE_FOLLOWER = 0x3101F4, - CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3101BB, - CMSG_GARRISON_RENAME_FOLLOWER = 0x3101BC, - CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x3101A2, - CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3101D7, - CMSG_GARRISON_RESEARCH_TALENT = 0x3101C0, - CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x3101A4, - CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3101B8, - CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3101B0, - CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3101BE, - CMSG_GARRISON_SOCKET_TALENT = 0x31029C, - CMSG_GARRISON_START_MISSION = 0x3101FC, - CMSG_GARRISON_SWAP_BUILDINGS = 0x3101A8, + CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3101D5, + CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3101BB, + CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3101A8, + CMSG_GARRISON_CHECK_UPGRADEABLE = 0x31020C, + CMSG_GARRISON_COMPLETE_MISSION = 0x3101FE, + CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3101D6, + CMSG_GARRISON_GENERATE_RECRUITS = 0x3101BE, + CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3101CD, + CMSG_GARRISON_GET_MAP_DATA = 0x3101D4, + CMSG_GARRISON_GET_MISSION_REWARD = 0x310230, + CMSG_GARRISON_LEARN_TALENT = 0x3101C9, + CMSG_GARRISON_MISSION_BONUS_ROLL = 0x310200, + CMSG_GARRISON_PURCHASE_BUILDING = 0x3101A4, + CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3101C0, + CMSG_GARRISON_REMOVE_FOLLOWER = 0x3101F5, + CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3101BC, + CMSG_GARRISON_RENAME_FOLLOWER = 0x3101BD, + CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x3101A3, + CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3101D8, + CMSG_GARRISON_RESEARCH_TALENT = 0x3101C1, + CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x3101A5, + CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x3101B9, + CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x3101B1, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3101BF, + CMSG_GARRISON_SOCKET_TALENT = 0x31029D, + CMSG_GARRISON_START_MISSION = 0x3101FD, + CMSG_GARRISON_SWAP_BUILDINGS = 0x3101A9, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x360013, - CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x3600E0, - CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x36015F, - CMSG_GET_GARRISON_INFO = 0x31019D, + CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x3600E1, + CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x36015D, + CMSG_GET_GARRISON_INFO = 0x31019E, CMSG_GET_ITEM_PURCHASE_DATA = 0x3200CF, - CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3101D8, + CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3101D9, CMSG_GET_MIRROR_IMAGE_DATA = 0x31016D, CMSG_GET_PVP_OPTIONS_ENABLED = 0x36001A, - CMSG_GET_RAF_ACCOUNT_INFO = 0x36014D, - CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x360190, - CMSG_GET_REMAINING_GAME_TIME = 0x360116, - CMSG_GET_TROPHY_LIST = 0x3101ED, - CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36010A, - CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36011B, - CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36011C, + CMSG_GET_RAF_ACCOUNT_INFO = 0x36014B, + CMSG_GET_REGIONWIDE_CHARACTER_RESTRICTION_AND_MAIL_DATA = 0x36018E, + CMSG_GET_REMAINING_GAME_TIME = 0x360117, + CMSG_GET_TROPHY_LIST = 0x3101EE, + CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36010B, + CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36011C, + CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36011D, CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3600BA, CMSG_GM_TICKET_GET_CASE_STATUS = 0x3600B9, CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3600B8, @@ -430,9 +434,13 @@ enum OpcodeClient : uint32 CMSG_GUILD_QUERY_NEWS = 0x2F000D, CMSG_GUILD_QUERY_RECIPES = 0x2F000B, CMSG_GUILD_REPLACE_GUILD_MASTER = 0x2F001F, + CMSG_GUILD_REQUEST_RENAME = 0x2F0023, + CMSG_GUILD_REQUEST_RENAME_NAME_CHECK = 0x2F0022, + CMSG_GUILD_REQUEST_RENAME_REFUND = 0x2F0024, + CMSG_GUILD_REQUEST_RENAME_STATUS = 0x2F0021, CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x2F0010, CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x2F0011, - CMSG_GUILD_SET_GUILD_MASTER = 0x3600F3, + CMSG_GUILD_SET_GUILD_MASTER = 0x3600F4, CMSG_GUILD_SET_MEMBER_NOTE = 0x2F0013, CMSG_GUILD_SET_RANK_PERMISSIONS = 0x2F0008, CMSG_GUILD_SHIFT_RANK = 0x2F0007, @@ -446,68 +454,68 @@ enum OpcodeClient : uint32 CMSG_INITIATE_TRADE = 0x310000, CMSG_INSPECT = 0x3200C9, CMSG_INSTANCE_LOCK_RESPONSE = 0x3200A6, - CMSG_ISLAND_QUEUE = 0x310260, + CMSG_ISLAND_QUEUE = 0x310261, CMSG_ITEM_PURCHASE_REFUND = 0x3200D0, - CMSG_ITEM_TEXT_QUERY = 0x31020C, - CMSG_JOIN_PET_BATTLE_QUEUE = 0x31008E, + CMSG_ITEM_TEXT_QUERY = 0x31020D, + CMSG_JOIN_PET_BATTLE_QUEUE = 0x31008D, CMSG_JOIN_RATED_BATTLEGROUND = 0x310025, CMSG_KEEP_ALIVE = 0x3600A9, - CMSG_KEYBOUND_OVERRIDE = 0x3100E2, + CMSG_KEYBOUND_OVERRIDE = 0x3100E1, CMSG_LATENCY_REPORT = 0x37000D, CMSG_LEARN_PVP_TALENTS = 0x3200F9, CMSG_LEARN_TALENTS = 0x3200F7, CMSG_LEAVE_GROUP = 0x360073, - CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31008F, + CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31008E, CMSG_LFG_LIST_APPLY_TO_GROUP = 0x36003B, CMSG_LFG_LIST_CANCEL_APPLICATION = 0x36003C, CMSG_LFG_LIST_DECLINE_APPLICANT = 0x36003D, CMSG_LFG_LIST_GET_STATUS = 0x360039, CMSG_LFG_LIST_INVITE_APPLICANT = 0x36003E, CMSG_LFG_LIST_INVITE_RESPONSE = 0x36003F, - CMSG_LFG_LIST_JOIN = 0x310254, + CMSG_LFG_LIST_JOIN = 0x310255, CMSG_LFG_LIST_LEAVE = 0x360038, CMSG_LFG_LIST_SEARCH = 0x36003A, - CMSG_LFG_LIST_UPDATE_REQUEST = 0x310255, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x310256, CMSG_LIST_INVENTORY = 0x320033, - CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x3600E3, - CMSG_LIVE_REGION_CHARACTER_COPY = 0x3600E2, - CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x3600E1, - CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x3600E4, + CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x3600E4, + CMSG_LIVE_REGION_CHARACTER_COPY = 0x3600E3, + CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x3600E2, + CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x3600E5, CMSG_LOADING_SCREEN_NOTIFY = 0x360024, - CMSG_LOAD_SELECTED_TROPHY = 0x3101EE, - CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x360172, - CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x360169, - CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x36017B, - CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x360170, - CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x36016C, - CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x360168, - CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x36016B, - CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x360171, - CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x36016A, - CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x36016D, - CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x36016E, + CMSG_LOAD_SELECTED_TROPHY = 0x3101EF, + CMSG_LOBBY_MATCHMAKER_ABANDON_QUEUE = 0x360170, + CMSG_LOBBY_MATCHMAKER_ACCEPT_PARTY_INVITE = 0x360167, + CMSG_LOBBY_MATCHMAKER_CREATE_CHARACTER = 0x360179, + CMSG_LOBBY_MATCHMAKER_ENTER_QUEUE = 0x36016E, + CMSG_LOBBY_MATCHMAKER_LEAVE_PARTY = 0x36016A, + CMSG_LOBBY_MATCHMAKER_PARTY_INVITE = 0x360166, + CMSG_LOBBY_MATCHMAKER_PARTY_UNINVITE = 0x360169, + CMSG_LOBBY_MATCHMAKER_QUEUE_PROPSAL_RESPONSE = 0x36016F, + CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x360168, + CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x36016B, + CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x36016C, CMSG_LOGOUT_CANCEL = 0x320072, CMSG_LOGOUT_INSTANT = 0x320073, CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x320121, CMSG_LOGOUT_REQUEST = 0x320071, CMSG_LOG_DISCONNECT = 0x370005, CMSG_LOG_STREAMING_ERROR = 0x370009, - CMSG_LOOT_ITEM = 0x3100CA, - CMSG_LOOT_MONEY = 0x3100C9, - CMSG_LOOT_RELEASE = 0x3100CE, - CMSG_LOOT_ROLL = 0x3100CF, - CMSG_LOOT_UNIT = 0x3100C8, + CMSG_LOOT_ITEM = 0x3100C9, + CMSG_LOOT_MONEY = 0x3100C8, + CMSG_LOOT_RELEASE = 0x3100CD, + CMSG_LOOT_ROLL = 0x3100CE, + CMSG_LOOT_UNIT = 0x3100C7, CMSG_LOW_LEVEL_RAID1 = 0x3600CC, CMSG_LOW_LEVEL_RAID2 = 0x3200AD, CMSG_MAIL_CREATE_TEXT_ITEM = 0x3200DB, - CMSG_MAIL_DELETE = 0x3100E4, + CMSG_MAIL_DELETE = 0x3100E3, CMSG_MAIL_GET_LIST = 0x3200D6, CMSG_MAIL_MARK_AS_READ = 0x3200DA, CMSG_MAIL_RETURN_TO_SENDER = 0x36007F, CMSG_MAIL_TAKE_ITEM = 0x3200D8, CMSG_MAIL_TAKE_MONEY = 0x3200D7, - CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3100E5, - CMSG_MASTER_LOOT_ITEM = 0x3100CB, + CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3100E4, + CMSG_MASTER_LOOT_ITEM = 0x3100CA, CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x320054, CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x320051, CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x32004F, @@ -608,45 +616,46 @@ enum OpcodeClient : uint32 CMSG_MOVE_UPDATE_FALL_SPEED = 0x340036, CMSG_MOVE_WATER_WALK_ACK = 0x340039, CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x2E0001, - CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x310084, + CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x310083, CMSG_NEXT_CINEMATIC_CAMERA = 0x3200E4, CMSG_OBJECT_UPDATE_FAILED = 0x31002C, CMSG_OBJECT_UPDATE_RESCUED = 0x31002D, - CMSG_OFFER_PETITION = 0x310286, + CMSG_OFFER_PETITION = 0x310287, CMSG_OPENING_CINEMATIC = 0x3200E3, - CMSG_OPEN_ITEM = 0x31020D, - CMSG_OPEN_MISSION_NPC = 0x3101CE, - CMSG_OPEN_SHIPMENT_NPC = 0x3101D6, - CMSG_OPEN_TRADESKILL_NPC = 0x3101E1, + CMSG_OPEN_ITEM = 0x31020E, + CMSG_OPEN_MISSION_NPC = 0x3101CF, + CMSG_OPEN_SHIPMENT_NPC = 0x3101D7, + CMSG_OPEN_TRADESKILL_NPC = 0x3101E2, CMSG_OPT_OUT_OF_LOOT = 0x320090, CMSG_OVERRIDE_SCREEN_FLASH = 0x3200BA, CMSG_PARTY_INVITE = 0x360030, CMSG_PARTY_INVITE_RESPONSE = 0x360032, CMSG_PARTY_UNINVITE = 0x360071, - CMSG_PERFORM_ITEM_INTERACTION = 0x3100ED, - CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3102AE, + CMSG_PERFORM_ITEM_INTERACTION = 0x3100EC, + CMSG_PERKS_PROGRAM_ITEMS_REFRESHED = 0x3102AF, + CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT = 0x3102B2, CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x2B0012, - CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3102B0, - CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3102B1, - CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3102B2, - CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3102AF, + CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3102B1, + CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3102B3, + CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3102B4, + CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3102B0, CMSG_PETITION_BUY = 0x32005C, - CMSG_PETITION_RENAME_GUILD = 0x3600F4, + CMSG_PETITION_RENAME_GUILD = 0x3600F5, CMSG_PETITION_SHOW_LIST = 0x32005B, CMSG_PETITION_SHOW_SIGNATURES = 0x32005D, CMSG_PET_ABANDON = 0x32001E, CMSG_PET_ABANDON_BY_NUMBER = 0x32001F, CMSG_PET_ACTION = 0x32001C, - CMSG_PET_BATTLE_FINAL_NOTIFY = 0x310093, + CMSG_PET_BATTLE_FINAL_NOTIFY = 0x310092, CMSG_PET_BATTLE_INPUT = 0x36006B, - CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3100E3, - CMSG_PET_BATTLE_QUIT_NOTIFY = 0x310092, + CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3100E2, + CMSG_PET_BATTLE_QUIT_NOTIFY = 0x310091, CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x36006C, - CMSG_PET_BATTLE_REQUEST_PVP = 0x31008C, - CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31008D, - CMSG_PET_BATTLE_REQUEST_WILD = 0x31008A, - CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x310094, - CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31008B, + CMSG_PET_BATTLE_REQUEST_PVP = 0x31008B, + CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31008C, + CMSG_PET_BATTLE_REQUEST_WILD = 0x310089, + CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x310093, + CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31008A, CMSG_PET_CANCEL_AURA = 0x320020, CMSG_PET_CAST_SPELL = 0x310172, CMSG_PET_RENAME = 0x3600AE, @@ -679,11 +688,11 @@ enum OpcodeClient : uint32 CMSG_QUERY_QUEST_ITEM_USABILITY = 0x310022, CMSG_QUERY_REALM_NAME = 0x3600B3, CMSG_QUERY_SCENARIO_POI = 0x360080, - CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3102E9, + CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3102EB, CMSG_QUERY_TIME = 0x320070, - CMSG_QUERY_TREASURE_PICKER = 0x310232, + CMSG_QUERY_TREASURE_PICKER = 0x310233, CMSG_QUERY_VOID_STORAGE = 0x31004E, - CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3102EA, + CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3102EC, CMSG_QUEST_CONFIRM_ACCEPT = 0x320030, CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x32002A, CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x32002C, @@ -695,119 +704,116 @@ enum OpcodeClient : uint32 CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x32002F, CMSG_QUEST_GIVER_STATUS_QUERY = 0x32002E, CMSG_QUEST_LOG_REMOVE_QUEST = 0x3200CE, - CMSG_QUEST_POI_QUERY = 0x3600DA, + CMSG_QUEST_POI_QUERY = 0x3600DB, CMSG_QUEST_PUSH_RESULT = 0x320032, - CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x310278, - CMSG_QUEST_SESSION_REQUEST_START = 0x310277, - CMSG_QUEST_SESSION_REQUEST_STOP = 0x360158, + CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x310279, + CMSG_QUEST_SESSION_REQUEST_START = 0x310278, + CMSG_QUEST_SESSION_REQUEST_STOP = 0x360156, CMSG_QUEUED_MESSAGES_END = 0x370008, - CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x360130, - CMSG_QUICK_JOIN_REQUEST_INVITE = 0x36012F, - CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x36015D, - CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x36012E, - CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36012D, + CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x36012E, + CMSG_QUICK_JOIN_REQUEST_INVITE = 0x36012D, + CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x36015B, + CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x36012C, + CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x36012B, CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x32009E, - CMSG_RAF_CLAIM_NEXT_REWARD = 0x36014E, - CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x360150, - CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x36014F, + CMSG_RAF_CLAIM_NEXT_REWARD = 0x36014C, + CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x36014E, + CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x36014D, CMSG_RANDOM_ROLL = 0x36007E, CMSG_READY_CHECK_RESPONSE = 0x36005F, - CMSG_READ_ITEM = 0x31020E, + CMSG_READ_ITEM = 0x31020F, CMSG_RECLAIM_CORPSE = 0x320075, - CMSG_REMOVE_NEW_ITEM = 0x310236, - CMSG_REMOVE_RAF_RECRUIT = 0x360151, + CMSG_REMOVE_NEW_ITEM = 0x310237, + CMSG_REMOVE_RAF_RECRUIT = 0x36014F, CMSG_REORDER_CHARACTERS = 0x360015, CMSG_REPAIR_ITEM = 0x320086, - CMSG_REPLACE_TROPHY = 0x3101EF, + CMSG_REPLACE_TROPHY = 0x3101F0, CMSG_REPOP_REQUEST = 0x3200C6, - CMSG_REPORT_CLIENT_VARIABLES = 0x36012A, - CMSG_REPORT_ENABLED_ADDONS = 0x360129, - CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36012B, CMSG_REPORT_PVP_PLAYER_AFK = 0x32008E, - CMSG_REPORT_SERVER_LAG = 0x310270, - CMSG_REPORT_STUCK_IN_COMBAT = 0x310271, + CMSG_REPORT_SERVER_LAG = 0x310271, + CMSG_REPORT_STUCK_IN_COMBAT = 0x310272, CMSG_REQUEST_ACCOUNT_DATA = 0x3600C0, - CMSG_REQUEST_AREA_POI_UPDATE = 0x310234, + CMSG_REQUEST_AREA_POI_UPDATE = 0x310235, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x360008, CMSG_REQUEST_CEMETERY_LIST = 0x310023, CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x3600B5, - CMSG_REQUEST_COVENANT_CALLINGS = 0x310262, + CMSG_REQUEST_COVENANT_CALLINGS = 0x310263, CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3200CA, CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x2B0019, - CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x31029B, + CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x31029C, CMSG_REQUEST_GUILD_PARTY_STATE = 0x310054, CMSG_REQUEST_GUILD_REWARDS_LIST = 0x310053, - CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x310272, + CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x310273, CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x31017E, - CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3100B8, - CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3100B9, - CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3102E8, + CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3100B7, + CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3100B8, + CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3102EA, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x360023, CMSG_REQUEST_PARTY_MEMBER_STATS = 0x36007D, CMSG_REQUEST_PET_INFO = 0x320022, CMSG_REQUEST_PLAYED_TIME = 0x31014B, CMSG_REQUEST_PVP_REWARDS = 0x310041, - CMSG_REQUEST_RAID_INFO = 0x3600F5, + CMSG_REQUEST_RAID_INFO = 0x3600F6, CMSG_REQUEST_RATED_PVP_INFO = 0x36000F, - CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x360193, - CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x310235, + CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x360191, + CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x310236, CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x310042, CMSG_REQUEST_STABLED_PETS = 0x320023, CMSG_REQUEST_STORE_FRONT_INFO_UPDATE = 0x2B001E, - CMSG_REQUEST_VEHICLE_EXIT = 0x3100FF, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x310101, - CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x310100, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x310102, - CMSG_REQUEST_WEEKLY_REWARDS = 0x310265, - CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x310233, - CMSG_RESET_CHALLENGE_MODE = 0x3100B6, - CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3100B7, + CMSG_REQUEST_VEHICLE_EXIT = 0x3100FE, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x310100, + CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3100FF, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x310101, + CMSG_REQUEST_WEEKLY_REWARDS = 0x310266, + CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x310234, + CMSG_RESET_CHALLENGE_MODE = 0x3100B5, + CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3100B6, CMSG_RESET_INSTANCES = 0x360092, CMSG_RESURRECT_RESPONSE = 0x3600AD, - CMSG_REVERT_MONUMENT_APPEARANCE = 0x3101F1, - CMSG_RIDE_VEHICLE_INTERACT = 0x310103, - CMSG_RPE_RESET_CHARACTER = 0x36017E, - CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x360178, + CMSG_REVERT_MONUMENT_APPEARANCE = 0x3101F2, + CMSG_RIDE_VEHICLE_INTERACT = 0x310102, + CMSG_RPE_RESET_CHARACTER = 0x36017C, + CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x360176, CMSG_SAVE_CUF_PROFILES = 0x310037, CMSG_SAVE_EQUIPMENT_SET = 0x3200A4, - CMSG_SAVE_GUILD_EMBLEM = 0x310182, - CMSG_SAVE_PERSONAL_EMBLEM = 0x310183, - CMSG_SCENE_PLAYBACK_CANCELED = 0x3100DF, - CMSG_SCENE_PLAYBACK_COMPLETE = 0x3100DE, - CMSG_SCENE_TRIGGER_EVENT = 0x3100E0, - CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3102D7, - CMSG_SELECT_WOW_LABS_AREA = 0x3102EB, + CMSG_SAVE_GUILD_EMBLEM = 0x310183, + CMSG_SAVE_PERSONAL_EMBLEM = 0x310184, + CMSG_SCENE_PLAYBACK_CANCELED = 0x3100DE, + CMSG_SCENE_PLAYBACK_COMPLETE = 0x3100DD, + CMSG_SCENE_TRIGGER_EVENT = 0x3100DF, + CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3102D9, + CMSG_SELECT_WOW_LABS_AREA = 0x3102ED, CMSG_SELF_RES = 0x3200D1, CMSG_SELL_ALL_JUNK_ITEMS = 0x320035, CMSG_SELL_ITEM = 0x320034, - CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x360123, - CMSG_SEND_CONTACT_LIST = 0x3600FA, + CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x360124, + CMSG_SEND_CONTACT_LIST = 0x3600FB, CMSG_SEND_MAIL = 0x360026, - CMSG_SEND_PING_UNIT = 0x3102D9, - CMSG_SEND_PING_WORLD_POINT = 0x3102DA, + CMSG_SEND_PING_UNIT = 0x3102DB, + CMSG_SEND_PING_WORLD_POINT = 0x3102DC, CMSG_SEND_TEXT_EMOTE = 0x320019, CMSG_SERVER_TIME_OFFSET_REQUEST = 0x3600C7, - CMSG_SETUP_WARBAND_GROUPS = 0x36018C, + CMSG_SETUP_WARBAND_GROUPS = 0x36018A, CMSG_SET_ACTION_BAR_TOGGLES = 0x3200D2, CMSG_SET_ACTION_BUTTON = 0x360060, CMSG_SET_ACTIVE_MOVER = 0x340059, - CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x310190, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x310191, CMSG_SET_ASSISTANT_LEADER = 0x360079, - CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x310211, - CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x310212, - CMSG_SET_BANK_AUTOSORT_DISABLED = 0x310213, - CMSG_SET_CONTACT_NOTES = 0x3600FD, + CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x310212, + CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x310213, + CMSG_SET_BANK_AUTOSORT_DISABLED = 0x310214, + CMSG_SET_CONTACT_NOTES = 0x3600FE, CMSG_SET_CURRENCY_FLAGS = 0x310015, - CMSG_SET_DIFFICULTY_ID = 0x3100E1, + CMSG_SET_DIFFICULTY_ID = 0x3100E0, CMSG_SET_DUNGEON_DIFFICULTY = 0x3600AC, CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x31013A, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x360046, - CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x360131, + CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x36012F, CMSG_SET_FACTION_AT_WAR = 0x320078, CMSG_SET_FACTION_INACTIVE = 0x32007A, CMSG_SET_FACTION_NOT_AT_WAR = 0x320079, CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x310065, - CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x310215, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x310216, CMSG_SET_LOOT_METHOD = 0x360072, CMSG_SET_LOOT_SPECIALIZATION = 0x3200DF, CMSG_SET_PARTY_ASSIGNMENT = 0x36007B, @@ -817,33 +823,33 @@ enum OpcodeClient : uint32 CMSG_SET_PET_SPECIALIZATION = 0x310013, CMSG_SET_PLAYER_DECLINED_NAMES = 0x3600B2, CMSG_SET_PREFERRED_CEMETERY = 0x310024, - CMSG_SET_PVP = 0x310187, - CMSG_SET_RAID_DIFFICULTY = 0x360106, + CMSG_SET_PVP = 0x310188, + CMSG_SET_RAID_DIFFICULTY = 0x360107, CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x360047, CMSG_SET_ROLE = 0x360005, CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3600B0, CMSG_SET_SELECTION = 0x3200C8, CMSG_SET_SHEATHED = 0x32001A, - CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x310214, + CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x310215, CMSG_SET_TAXI_BENCHMARK_MODE = 0x32008D, CMSG_SET_TITLE = 0x310151, CMSG_SET_TRADE_CURRENCY = 0x31000A, CMSG_SET_TRADE_GOLD = 0x310009, CMSG_SET_TRADE_ITEM = 0x310007, - CMSG_SET_USING_PARTY_GARRISON = 0x3101D0, - CMSG_SET_WAR_MODE = 0x310188, + CMSG_SET_USING_PARTY_GARRISON = 0x3101D1, + CMSG_SET_WAR_MODE = 0x310189, CMSG_SET_WATCHED_FACTION = 0x32007B, - CMSG_SHOW_TRADE_SKILL = 0x3600ED, + CMSG_SHOW_TRADE_SKILL = 0x3600EE, CMSG_SIGN_PETITION = 0x3200D3, CMSG_SILENCE_PARTY_TALKER = 0x36007C, - CMSG_SOCIAL_CONTRACT_REQUEST = 0x360173, + CMSG_SOCIAL_CONTRACT_REQUEST = 0x360171, CMSG_SOCKET_GEMS = 0x320085, - CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3102DD, - CMSG_SORT_BAGS = 0x310216, - CMSG_SORT_BANK_BAGS = 0x310217, - CMSG_SORT_REAGENT_BANK_BAGS = 0x310218, + CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3102DF, + CMSG_SORT_BAGS = 0x310217, + CMSG_SORT_BANK_BAGS = 0x310218, + CMSG_SORT_REAGENT_BANK_BAGS = 0x310219, CMSG_SPAWN_TRACKING_UPDATE = 0x310166, - CMSG_SPECTATE_CHANGE = 0x3102D0, + CMSG_SPECTATE_CHANGE = 0x3102D2, CMSG_SPELL_CLICK = 0x320027, CMSG_SPELL_EMPOWER_RELEASE = 0x310138, CMSG_SPELL_EMPOWER_RESTART = 0x310139, @@ -858,7 +864,7 @@ enum OpcodeClient : uint32 CMSG_START_WAR_GAME = 0x36000A, CMSG_STORE_GUILD_BANK_ITEM = 0x32004B, CMSG_SUBMIT_USER_FEEDBACK = 0x3600BF, - CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x310290, + CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x310291, CMSG_SUMMON_RESPONSE = 0x360094, CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x360070, CMSG_SURRENDER_ARENA = 0x310020, @@ -870,7 +876,7 @@ enum OpcodeClient : uint32 CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x32004C, CMSG_SWAP_SUB_GROUPS = 0x360077, CMSG_SWAP_VOID_ITEM = 0x310050, - CMSG_TABARD_VENDOR_ACTIVATE = 0x310184, + CMSG_TABARD_VENDOR_ACTIVATE = 0x310185, CMSG_TALK_TO_GOSSIP = 0x320024, CMSG_TAXI_NODE_STATUS_QUERY = 0x32003B, CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x32003D, @@ -880,58 +886,58 @@ enum OpcodeClient : uint32 CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x34005C, CMSG_TIME_SYNC_RESPONSE_FAILED = 0x34005B, CMSG_TOGGLE_DIFFICULTY = 0x360081, - CMSG_TOGGLE_PVP = 0x310186, + CMSG_TOGGLE_PVP = 0x310187, CMSG_TOTEM_DESTROYED = 0x320092, CMSG_TOY_CLEAR_FANFARE = 0x2B0004, - CMSG_TRADE_SKILL_SET_FAVORITE = 0x310231, + CMSG_TRADE_SKILL_SET_FAVORITE = 0x310232, CMSG_TRAINER_BUY_SPELL = 0x320041, CMSG_TRAINER_LIST = 0x320040, - CMSG_TRAITS_COMMIT_CONFIG = 0x3102B8, - CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3102B6, - CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3102E6, + CMSG_TRAITS_COMMIT_CONFIG = 0x3102BA, + CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3102B8, + CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3102E8, CMSG_TRANSMOGRIFY_ITEMS = 0x310043, CMSG_TURN_IN_PETITION = 0x3200D5, - CMSG_TUTORIAL = 0x360107, - CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x310261, + CMSG_TUTORIAL = 0x360108, + CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x310262, CMSG_UNACCEPT_TRADE = 0x310005, - CMSG_UNDELETE_CHARACTER = 0x360109, + CMSG_UNDELETE_CHARACTER = 0x36010A, CMSG_UNLEARN_SKILL = 0x32007F, CMSG_UNLEARN_SPECIALIZATION = 0x310051, CMSG_UNLOCK_VOID_STORAGE = 0x31004D, - CMSG_UPDATE_AADC_STATUS = 0x360163, + CMSG_UPDATE_AADC_STATUS = 0x360161, CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x320128, CMSG_UPDATE_ACCOUNT_DATA = 0x3600C1, CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x310175, CMSG_UPDATE_CLIENT_SETTINGS = 0x36008E, - CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3101E2, + CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3101E3, CMSG_UPDATE_MISSILE_TRAJECTORY = 0x340060, CMSG_UPDATE_RAID_TARGET = 0x36007A, CMSG_UPDATE_SPELL_VISUAL = 0x310174, - CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36011E, - CMSG_UPGRADE_GARRISON = 0x310198, - CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x31028E, + CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36011F, + CMSG_UPGRADE_GARRISON = 0x310199, + CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x31028F, CMSG_USED_FOLLOW = 0x310032, - CMSG_USE_CRITTER_ITEM = 0x310109, + CMSG_USE_CRITTER_ITEM = 0x310108, CMSG_USE_EQUIPMENT_SET = 0x330001, CMSG_USE_ITEM = 0x31016E, CMSG_USE_TOY = 0x310171, - CMSG_VAS_CHECK_TRANSFER_OK = 0x360136, - CMSG_VAS_GET_QUEUE_MINUTES = 0x360135, - CMSG_VAS_GET_SERVICE_STATUS = 0x360134, + CMSG_VAS_CHECK_TRANSFER_OK = 0x360134, + CMSG_VAS_GET_QUEUE_MINUTES = 0x360133, + CMSG_VAS_GET_SERVICE_STATUS = 0x360132, CMSG_VIOLENCE_LEVEL = 0x310030, - CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x36013A, - CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x36013B, - CMSG_VOICE_CHAT_LOGIN = 0x360139, + CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x360138, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x360139, + CMSG_VOICE_CHAT_LOGIN = 0x360137, CMSG_VOID_STORAGE_TRANSFER = 0x31004F, CMSG_WARDEN3_DATA = 0x360018, CMSG_WHO = 0x3600AB, CMSG_WHO_IS = 0x3600AA, - CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3102D3, + CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3102D5, CMSG_WORLD_PORT_RESPONSE = 0x360025, CMSG_WRAP_ITEM = 0x330000, }; -inline constexpr std::size_t NUM_CMSG_OPCODES = 1724; +inline constexpr std::size_t NUM_CMSG_OPCODES = 1732; inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode) { @@ -939,15 +945,15 @@ inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode) switch (opcode >> 16) { case 0x2B: return idInGroup < 31 ? idInGroup + 0 : -1; - case 0x2D: return idInGroup < 47 ? idInGroup + 31 : -1; - case 0x2E: return idInGroup < 3 ? idInGroup + 78 : -1; - case 0x2F: return idInGroup < 33 ? idInGroup + 81 : -1; - case 0x31: return idInGroup < 748 ? idInGroup + 114 : -1; - case 0x32: return idInGroup < 299 ? idInGroup + 862 : -1; - case 0x33: return idInGroup < 12 ? idInGroup + 1161 : -1; - case 0x34: return idInGroup < 132 ? idInGroup + 1173 : -1; - case 0x36: return idInGroup < 404 ? idInGroup + 1305 : -1; - case 0x37: return idInGroup < 15 ? idInGroup + 1709 : -1; + case 0x2D: return idInGroup < 51 ? idInGroup + 31 : -1; + case 0x2E: return idInGroup < 3 ? idInGroup + 82 : -1; + case 0x2F: return idInGroup < 37 ? idInGroup + 85 : -1; + case 0x31: return idInGroup < 750 ? idInGroup + 122 : -1; + case 0x32: return idInGroup < 299 ? idInGroup + 872 : -1; + case 0x33: return idInGroup < 12 ? idInGroup + 1171 : -1; + case 0x34: return idInGroup < 132 ? idInGroup + 1183 : -1; + case 0x36: return idInGroup < 402 ? idInGroup + 1315 : -1; + case 0x37: return idInGroup < 15 ? idInGroup + 1717 : -1; default: return -1; } } @@ -1103,7 +1109,7 @@ enum OpcodeServer : uint32 SMSG_BONUS_ROLL_EMPTY = 0x3800DD, SMSG_BOSS_KILL = 0x3E002B, SMSG_BREAK_TARGET = 0x3E0016, - SMSG_BROADCAST_ACHIEVEMENT = 0x3D0010, + SMSG_BROADCAST_ACHIEVEMENT = 0x3D0012, SMSG_BROADCAST_SUMMON_CAST = 0x3802C2, SMSG_BROADCAST_SUMMON_RESPONSE = 0x3802C3, SMSG_BUY_FAILED = 0x380160, @@ -1144,6 +1150,8 @@ enum OpcodeServer : uint32 SMSG_CAPTURE_POINT_REMOVED = 0x3E0008, SMSG_CAST_FAILED = 0x4E0048, SMSG_CAS_REFRESH_REMOTE_DATA = 0x380111, + SMSG_CAUTIONARY_CHANNEL_MESSAGE = 0x3D0009, + SMSG_CAUTIONARY_CHAT_MESSAGE = 0x3D0008, SMSG_CHAIN_MISSILE_BOUNCE = 0x380061, SMSG_CHALLENGE_MODE_COMPLETE = 0x3800A2, SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x3800A8, @@ -1152,11 +1160,11 @@ enum OpcodeServer : uint32 SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x3800A0, SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x4B000C, SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x38029A, - SMSG_CHANNEL_LIST = 0x3D0019, - SMSG_CHANNEL_NOTIFY = 0x3D0015, - SMSG_CHANNEL_NOTIFY_JOINED = 0x3D0017, - SMSG_CHANNEL_NOTIFY_LEFT = 0x3D0018, - SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH = 0x3D0016, + 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_LOGIN_FAILED = 0x38019E, SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x38021F, @@ -1169,19 +1177,19 @@ enum OpcodeServer : uint32 SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x38017C, SMSG_CHAR_FACTION_CHANGE_RESULT = 0x38023E, SMSG_CHAT = 0x3D0001, - SMSG_CHAT_AUTO_RESPONDED = 0x3D000C, - SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x3D0020, - SMSG_CHAT_DOWN = 0x3D0012, + SMSG_CHAT_AUTO_RESPONDED = 0x3D000E, + SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x3D0022, + SMSG_CHAT_DOWN = 0x3D0014, SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x3D0000, - SMSG_CHAT_IS_DOWN = 0x3D0013, - SMSG_CHAT_NOT_IN_GUILD = 0x3D0021, + SMSG_CHAT_IS_DOWN = 0x3D0015, + SMSG_CHAT_NOT_IN_GUILD = 0x3D0023, SMSG_CHAT_NOT_IN_PARTY = 0x3D0006, SMSG_CHAT_PLAYER_AMBIGUOUS = 0x3D0004, - SMSG_CHAT_PLAYER_NOTFOUND = 0x3D000B, - SMSG_CHAT_RECONNECT = 0x3D0014, - SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x3D001B, + SMSG_CHAT_PLAYER_NOTFOUND = 0x3D000D, + SMSG_CHAT_RECONNECT = 0x3D0016, + SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x3D001D, SMSG_CHAT_RESTRICTED = 0x3D0007, - SMSG_CHAT_SERVER_MESSAGE = 0x3D001A, + SMSG_CHAT_SERVER_MESSAGE = 0x3D001C, SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x4E0002, SMSG_CHECK_ABANDON_NPE = 0x4B0023, SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x38001B, @@ -1261,7 +1269,7 @@ enum OpcodeServer : uint32 SMSG_DB_REPLY = 0x3C0000, SMSG_DEATH_RELEASE_LOC = 0x38016D, SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x3800EF, - SMSG_DEFENSE_MESSAGE = 0x3D000A, + SMSG_DEFENSE_MESSAGE = 0x3D000C, SMSG_DELETE_CHAR = 0x38019B, SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x420022, SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x380348, @@ -1301,6 +1309,7 @@ enum OpcodeServer : uint32 SMSG_EQUIPMENT_SET_ID = 0x38014C, SMSG_EXPECTED_SPAM_RECORDS = 0x3D0005, SMSG_EXPLORATION_EXPERIENCE = 0x3801F6, + SMSG_EXPORT_ACCOUNT_PROFILE = 0x3800EC, SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x3802F3, SMSG_FACTION_BONUS_INFO = 0x3801BC, SMSG_FAILED_PLAYER_CONDITION = 0x4B0002, @@ -1483,6 +1492,10 @@ enum OpcodeServer : uint32 SMSG_GUILD_PARTY_STATE = 0x440013, SMSG_GUILD_PERMISSIONS_QUERY_RESULTS = 0x440029, SMSG_GUILD_RANKS = 0x440010, + SMSG_GUILD_RENAME_NAME_CHECK = 0x440044, + SMSG_GUILD_RENAME_REFUND_RESULT = 0x440046, + SMSG_GUILD_RENAME_REQUESTED_RESULT = 0x440045, + SMSG_GUILD_RENAME_STATUS_UPDATE = 0x440043, SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x440014, SMSG_GUILD_RESET = 0x440020, SMSG_GUILD_REWARD_LIST = 0x440008, @@ -1612,6 +1625,7 @@ enum OpcodeServer : uint32 SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x4E0003, SMSG_MISSILE_CANCEL = 0x380060, SMSG_MODIFY_COOLDOWN = 0x3801FB, + SMSG_MOTD = 0x3D0003, SMSG_MOUNT_RESULT = 0x38000F, SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x3802C1, SMSG_MOVE_ADD_IMPULSE = 0x490062, @@ -1903,7 +1917,7 @@ enum OpcodeServer : uint32 SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x380333, SMSG_RAID_DIFFICULTY_SET = 0x38023F, SMSG_RAID_GROUP_ONLY = 0x380241, - SMSG_RAID_INSTANCE_MESSAGE = 0x3D0008, + SMSG_RAID_INSTANCE_MESSAGE = 0x3D000A, SMSG_RAID_MARKERS_CHANGED = 0x380038, SMSG_RANDOM_ROLL = 0x3800C8, SMSG_RATED_PVP_INFO = 0x3E000F, @@ -2128,9 +2142,9 @@ enum OpcodeServer : uint32 SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x38008D, SMSG_UPDATE_TALENT_DATA = 0x38006F, SMSG_UPDATE_WORLD_STATE = 0x3801DF, - SMSG_USERLIST_ADD = 0x3D000D, - SMSG_USERLIST_REMOVE = 0x3D000E, - SMSG_USERLIST_UPDATE = 0x3D000F, + 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, @@ -2175,7 +2189,7 @@ enum OpcodeServer : uint32 SMSG_XP_AWARDED_FROM_CURRENCY = 0x38032F, SMSG_XP_GAIN_ABORTED = 0x380062, SMSG_XP_GAIN_ENABLED = 0x380240, - SMSG_ZONE_UNDER_ATTACK = 0x3D0009, + SMSG_ZONE_UNDER_ATTACK = 0x3D000B, // Opcodes that are not generated automatically SMSG_ACCOUNT_HEIRLOOM_UPDATE = SMSG_ACCOUNT_TOY_UPDATE + 1, // no client handler @@ -2186,30 +2200,30 @@ enum OpcodeServer : uint32 SMSG_ARENA_TEAM_STATS = UNKNOWN_OPCODE, }; -inline constexpr std::size_t NUM_SMSG_OPCODES = 1465; +inline constexpr std::size_t NUM_SMSG_OPCODES = 1473; inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeServer opcode) { uint32 idInGroup = opcode & 0xFFFF; switch (opcode >> 16) { - case 0x38: return idInGroup < 845 ? idInGroup + 0 : -1; - case 0x39: return idInGroup < 10 ? idInGroup + 845 : -1; - case 0x3C: return idInGroup < 18 ? idInGroup + 855 : -1; - case 0x3D: return idInGroup < 34 ? idInGroup + 873 : -1; - case 0x3E: return idInGroup < 49 ? idInGroup + 907 : -1; - case 0x3F: return idInGroup < 11 ? idInGroup + 956 : -1; - case 0x40: return idInGroup < 12 ? idInGroup + 967 : -1; - case 0x42: return idInGroup < 82 ? idInGroup + 979 : -1; - case 0x44: return idInGroup < 67 ? idInGroup + 1061 : -1; - case 0x46: return idInGroup < 33 ? idInGroup + 1128 : -1; - case 0x48: return idInGroup < 1 ? idInGroup + 1161 : -1; - case 0x49: return idInGroup < 120 ? idInGroup + 1162 : -1; - case 0x4B: return idInGroup < 48 ? idInGroup + 1282 : -1; - case 0x4C: return idInGroup < 41 ? idInGroup + 1330 : -1; - case 0x4E: return idInGroup < 85 ? idInGroup + 1371 : -1; - case 0x4F: return idInGroup < 8 ? idInGroup + 1456 : -1; - case 0x51: return idInGroup < 1 ? idInGroup + 1464 : -1; + 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; default: return -1; } } diff --git a/src/server/game/Support/SupportMgr.h b/src/server/game/Support/SupportMgr.h index f8582ebb6d0..b21637a7991 100644 --- a/src/server/game/Support/SupportMgr.h +++ b/src/server/game/Support/SupportMgr.h @@ -53,21 +53,23 @@ enum class ReportMajorCategory : int32 enum class ReportMinorCategory : int32 { - TextChat = 0x0001, - Boosting = 0x0002, - Spam = 0x0004, - Afk = 0x0008, - IntentionallyFeeding = 0x0010, - BlockingProgress = 0x0020, - Hacking = 0x0040, - Botting = 0x0080, - Advertisement = 0x0100, - BTag = 0x0200, - GroupName = 0x0400, - CharacterName = 0x0800, - GuildName = 0x1000, - Description = 0x2000, - Name = 0x4000, + TextChat = 0x00000001, + Boosting = 0x00000002, + Spam = 0x00000004, + Afk = 0x00000008, + IntentionallyFeeding = 0x00000010, + BlockingProgress = 0x00000020, + Hacking = 0x00000040, + Botting = 0x00000080, + Advertisement = 0x00000100, + BTag = 0x00000200, + GroupName = 0x00000400, + CharacterName = 0x00000800, + GuildName = 0x00001000, + Description = 0x00002000, + Name = 0x00004000, + ChinaHarmfulMinors = 0x00008000, + Disruption = 0x00010000, }; // from blizzard lua diff --git a/src/server/proto/Client/api/client/v2/presence_types.pb.cc b/src/server/proto/Client/api/client/v2/presence_types.pb.cc new file mode 100644 index 00000000000..5cae430dc00 --- /dev/null +++ b/src/server/proto/Client/api/client/v2/presence_types.pb.cc @@ -0,0 +1,979 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: api/client/v2/presence_types.proto + +#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION +#include "api/client/v2/presence_types.pb.h" + +#include <utility> + +#include <google/protobuf/stubs/common.h> +#include <google/protobuf/stubs/once.h> +#include <google/protobuf/io/coded_stream.h> +#include <google/protobuf/wire_format_lite_inl.h> +#include <google/protobuf/descriptor.h> +#include <google/protobuf/generated_message_reflection.h> +#include <google/protobuf/reflection_ops.h> +#include <google/protobuf/wire_format.h> +// @@protoc_insertion_point(includes) + +namespace bgs { +namespace protocol { +namespace presence { +namespace v2 { + +namespace { + +const ::google::protobuf::Descriptor* RichPresenceKey_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + RichPresenceKey_reflection_ = NULL; +const ::google::protobuf::Descriptor* PresenceFieldKey_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + PresenceFieldKey_reflection_ = NULL; +const ::google::protobuf::Descriptor* PresenceField_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + PresenceField_reflection_ = NULL; +const ::google::protobuf::Descriptor* PresenceFieldState_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + PresenceFieldState_reflection_ = NULL; +const ::google::protobuf::Descriptor* PresenceFieldUpdate_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + PresenceFieldUpdate_reflection_ = NULL; +const ::google::protobuf::Descriptor* PresenceOnlineGameAccount_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + PresenceOnlineGameAccount_reflection_ = NULL; +const ::google::protobuf::Descriptor* PresenceOnlineGameAccountFieldValue_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + PresenceOnlineGameAccountFieldValue_reflection_ = NULL; +const ::google::protobuf::Descriptor* PresenceExternalIdentityFieldValue_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + PresenceExternalIdentityFieldValue_reflection_ = NULL; +const ::google::protobuf::EnumDescriptor* PresenceQueryBehavior_descriptor_ = NULL; +const ::google::protobuf::EnumDescriptor* PresenceAccountStatus_descriptor_ = NULL; + +} // namespace + +void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto() { + protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + const ::google::protobuf::FileDescriptor* file = + ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName( + "api/client/v2/presence_types.proto"); + GOOGLE_CHECK(file != NULL); + RichPresenceKey_descriptor_ = file->message_type(0); + static const int RichPresenceKey_offsets_[3] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, title_id_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, stream_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, localization_id_), + }; + RichPresenceKey_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + RichPresenceKey_descriptor_, + RichPresenceKey::default_instance_, + RichPresenceKey_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RichPresenceKey, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(RichPresenceKey)); + PresenceFieldKey_descriptor_ = file->message_type(1); + static const int PresenceFieldKey_offsets_[4] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, title_id_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, group_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, field_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, unique_id_), + }; + PresenceFieldKey_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + PresenceFieldKey_descriptor_, + PresenceFieldKey::default_instance_, + PresenceFieldKey_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldKey, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(PresenceFieldKey)); + PresenceField_descriptor_ = file->message_type(2); + static const int PresenceField_offsets_[4] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, key_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, value_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, deleted_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, updated_time_us_), + }; + PresenceField_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + PresenceField_descriptor_, + PresenceField::default_instance_, + PresenceField_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceField, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(PresenceField)); + PresenceFieldState_descriptor_ = file->message_type(3); + static const int PresenceFieldState_offsets_[4] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, account_id_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, game_account_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, fields_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, oldest_time_us_), + }; + PresenceFieldState_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + PresenceFieldState_descriptor_, + PresenceFieldState::default_instance_, + PresenceFieldState_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldState, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(PresenceFieldState)); + PresenceFieldUpdate_descriptor_ = file->message_type(4); + static const int PresenceFieldUpdate_offsets_[3] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, key_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, value_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, delete__), + }; + PresenceFieldUpdate_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + PresenceFieldUpdate_descriptor_, + PresenceFieldUpdate::default_instance_, + PresenceFieldUpdate_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceFieldUpdate, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(PresenceFieldUpdate)); + PresenceOnlineGameAccount_descriptor_ = file->message_type(5); + static const int PresenceOnlineGameAccount_offsets_[2] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccount, game_account_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccount, online_time_us_), + }; + PresenceOnlineGameAccount_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + PresenceOnlineGameAccount_descriptor_, + PresenceOnlineGameAccount::default_instance_, + PresenceOnlineGameAccount_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccount, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccount, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(PresenceOnlineGameAccount)); + PresenceOnlineGameAccountFieldValue_descriptor_ = file->message_type(6); + static const int PresenceOnlineGameAccountFieldValue_offsets_[1] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccountFieldValue, online_game_accounts_), + }; + PresenceOnlineGameAccountFieldValue_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + PresenceOnlineGameAccountFieldValue_descriptor_, + PresenceOnlineGameAccountFieldValue::default_instance_, + PresenceOnlineGameAccountFieldValue_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccountFieldValue, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceOnlineGameAccountFieldValue, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(PresenceOnlineGameAccountFieldValue)); + PresenceExternalIdentityFieldValue_descriptor_ = file->message_type(7); + static const int PresenceExternalIdentityFieldValue_offsets_[2] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceExternalIdentityFieldValue, unique_id_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceExternalIdentityFieldValue, display_id_), + }; + PresenceExternalIdentityFieldValue_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + PresenceExternalIdentityFieldValue_descriptor_, + PresenceExternalIdentityFieldValue::default_instance_, + PresenceExternalIdentityFieldValue_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceExternalIdentityFieldValue, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PresenceExternalIdentityFieldValue, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(PresenceExternalIdentityFieldValue)); + PresenceQueryBehavior_descriptor_ = file->enum_type(0); + PresenceAccountStatus_descriptor_ = file->enum_type(1); +} + +namespace { + +GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_); +inline void protobuf_AssignDescriptorsOnce() { + ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_, + &protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto); +} + +void protobuf_RegisterTypes(const ::std::string&) { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + RichPresenceKey_descriptor_, &RichPresenceKey::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + PresenceFieldKey_descriptor_, &PresenceFieldKey::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + PresenceField_descriptor_, &PresenceField::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + PresenceFieldState_descriptor_, &PresenceFieldState::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + PresenceFieldUpdate_descriptor_, &PresenceFieldUpdate::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + PresenceOnlineGameAccount_descriptor_, &PresenceOnlineGameAccount::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + PresenceOnlineGameAccountFieldValue_descriptor_, &PresenceOnlineGameAccountFieldValue::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + PresenceExternalIdentityFieldValue_descriptor_, &PresenceExternalIdentityFieldValue::default_instance()); +} + +} // namespace + +void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto() { + delete RichPresenceKey::default_instance_; + delete RichPresenceKey_reflection_; + delete PresenceFieldKey::default_instance_; + delete PresenceFieldKey_reflection_; + delete PresenceField::default_instance_; + delete PresenceField_reflection_; + delete PresenceFieldState::default_instance_; + delete PresenceFieldState_reflection_; + delete PresenceFieldUpdate::default_instance_; + delete PresenceFieldUpdate_reflection_; + delete PresenceOnlineGameAccount::default_instance_; + delete PresenceOnlineGameAccount_reflection_; + delete PresenceOnlineGameAccountFieldValue::default_instance_; + delete PresenceOnlineGameAccountFieldValue_reflection_; + delete PresenceExternalIdentityFieldValue::default_instance_; + delete PresenceExternalIdentityFieldValue_reflection_; +} + +void protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto() { + static bool already_here = false; + if (already_here) return; + already_here = true; + GOOGLE_PROTOBUF_VERIFY_VERSION; + + ::bgs::protocol::v2::protobuf_AddDesc_api_2fcommon_2fv2_2fattribute_5ftypes_2eproto(); + ::bgs::protocol::account::v2::protobuf_AddDesc_api_2fcommon_2fv2_2fgame_5faccount_5fhandle_2eproto(); + ::google::protobuf::DescriptorPool::InternalAddGeneratedFile( + "\n\"api/client/v2/presence_types.proto\022\030bg" + "s.protocol.presence.v2\032#api/common/v2/at" + "tribute_types.proto\032\'api/common/v2/game_" + "account_handle.proto\"L\n\017RichPresenceKey\022" + "\020\n\010title_id\030\001 \001(\r\022\016\n\006stream\030\002 \001(\007\022\027\n\017loc" + "alization_id\030\003 \001(\r\"U\n\020PresenceFieldKey\022\020" + "\n\010title_id\030\001 \001(\r\022\r\n\005group\030\002 \001(\r\022\r\n\005field" + "\030\003 \001(\r\022\021\n\tunique_id\030\004 \001(\004\"\233\001\n\rPresenceFi" + "eld\0227\n\003key\030\001 \001(\0132*.bgs.protocol.presence" + ".v2.PresenceFieldKey\022\'\n\005value\030\002 \001(\0132\030.bg" + "s.protocol.v2.Variant\022\017\n\007deleted\030\003 \001(\010\022\027" + "\n\017updated_time_us\030\004 \001(\004\"\273\001\n\022PresenceFiel" + "dState\022\022\n\naccount_id\030\001 \001(\004\022@\n\014game_accou" + "nt\030\002 \001(\0132*.bgs.protocol.account.v2.GameA" + "ccountHandle\0227\n\006fields\030\003 \003(\0132\'.bgs.proto" + "col.presence.v2.PresenceField\022\026\n\016oldest_" + "time_us\030\004 \001(\004\"\207\001\n\023PresenceFieldUpdate\0227\n" + "\003key\030\001 \001(\0132*.bgs.protocol.presence.v2.Pr" + "esenceFieldKey\022\'\n\005value\030\002 \001(\0132\030.bgs.prot" + "ocol.v2.Variant\022\016\n\006delete\030\003 \001(\010\"u\n\031Prese" + "nceOnlineGameAccount\022@\n\014game_account\030\001 \001" + "(\0132*.bgs.protocol.account.v2.GameAccount" + "Handle\022\026\n\016online_time_us\030\002 \001(\004\"x\n#Presen" + "ceOnlineGameAccountFieldValue\022Q\n\024online_" + "game_accounts\030\001 \003(\01323.bgs.protocol.prese" + "nce.v2.PresenceOnlineGameAccount\"K\n\"Pres" + "enceExternalIdentityFieldValue\022\021\n\tunique" + "_id\030\001 \001(\t\022\022\n\ndisplay_id\030\002 \001(\t*r\n\025Presenc" + "eQueryBehavior\022\033\n\027BATTLE_NET_ACCOUNT_ONL" + "Y\020\000\022\035\n\031INCLUDE_SAME_GAME_ACCOUNT\020\001\022\035\n\031IN" + "CLUDE_ALL_GAME_ACCOUNTS\020\002*C\n\025PresenceAcc" + "ountStatus\022\013\n\007OFFLINE\020\000\022\n\n\006ONLINE\020\001\022\010\n\004A" + "WAY\020\002\022\007\n\003DND\020\003B\002H\002", 1298); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( + "api/client/v2/presence_types.proto", &protobuf_RegisterTypes); + RichPresenceKey::default_instance_ = new RichPresenceKey(); + PresenceFieldKey::default_instance_ = new PresenceFieldKey(); + PresenceField::default_instance_ = new PresenceField(); + PresenceFieldState::default_instance_ = new PresenceFieldState(); + PresenceFieldUpdate::default_instance_ = new PresenceFieldUpdate(); + PresenceOnlineGameAccount::default_instance_ = new PresenceOnlineGameAccount(); + PresenceOnlineGameAccountFieldValue::default_instance_ = new PresenceOnlineGameAccountFieldValue(); + PresenceExternalIdentityFieldValue::default_instance_ = new PresenceExternalIdentityFieldValue(); + RichPresenceKey::default_instance_->InitAsDefaultInstance(); + PresenceFieldKey::default_instance_->InitAsDefaultInstance(); + PresenceField::default_instance_->InitAsDefaultInstance(); + PresenceFieldState::default_instance_->InitAsDefaultInstance(); + PresenceFieldUpdate::default_instance_->InitAsDefaultInstance(); + PresenceOnlineGameAccount::default_instance_->InitAsDefaultInstance(); + PresenceOnlineGameAccountFieldValue::default_instance_->InitAsDefaultInstance(); + PresenceExternalIdentityFieldValue::default_instance_->InitAsDefaultInstance(); + ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto); +} + +// Force AddDescriptors() to be called at static initialization time. +struct StaticDescriptorInitializer_api_2fclient_2fv2_2fpresence_5ftypes_2eproto { + StaticDescriptorInitializer_api_2fclient_2fv2_2fpresence_5ftypes_2eproto() { + protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + } +} static_descriptor_initializer_api_2fclient_2fv2_2fpresence_5ftypes_2eproto_; +const ::google::protobuf::EnumDescriptor* PresenceQueryBehavior_descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceQueryBehavior_descriptor_; +} +bool PresenceQueryBehavior_IsValid(int value) { + switch(value) { + case 0: + case 1: + case 2: + return true; + default: + return false; + } +} + +const ::google::protobuf::EnumDescriptor* PresenceAccountStatus_descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceAccountStatus_descriptor_; +} +bool PresenceAccountStatus_IsValid(int value) { + switch(value) { + case 0: + case 1: + case 2: + case 3: + return true; + default: + return false; + } +} + +// =================================================================== + +#ifndef _MSC_VER +const int RichPresenceKey::kTitleIdFieldNumber; +const int RichPresenceKey::kStreamFieldNumber; +const int RichPresenceKey::kLocalizationIdFieldNumber; +#endif // !_MSC_VER + +RichPresenceKey::RichPresenceKey() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.RichPresenceKey) +} + +void RichPresenceKey::InitAsDefaultInstance() { +} + +RichPresenceKey::RichPresenceKey(const RichPresenceKey& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.RichPresenceKey) +} + +void RichPresenceKey::SharedCtor() { + _cached_size_ = 0; + title_id_ = 0u; + stream_ = 0u; + localization_id_ = 0u; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +RichPresenceKey::~RichPresenceKey() { + // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.RichPresenceKey) + SharedDtor(); +} + +void RichPresenceKey::SharedDtor() { + if (this != default_instance_) { + } +} + +void RichPresenceKey::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* RichPresenceKey::descriptor() { + protobuf_AssignDescriptorsOnce(); + return RichPresenceKey_descriptor_; +} + +const RichPresenceKey& RichPresenceKey::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + return *default_instance_; +} + +RichPresenceKey* RichPresenceKey::default_instance_ = NULL; + +RichPresenceKey* RichPresenceKey::New() const { + return new RichPresenceKey; +} + +void RichPresenceKey::Swap(RichPresenceKey* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata RichPresenceKey::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = RichPresenceKey_descriptor_; + metadata.reflection = RichPresenceKey_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int PresenceFieldKey::kTitleIdFieldNumber; +const int PresenceFieldKey::kGroupFieldNumber; +const int PresenceFieldKey::kFieldFieldNumber; +const int PresenceFieldKey::kUniqueIdFieldNumber; +#endif // !_MSC_VER + +PresenceFieldKey::PresenceFieldKey() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceFieldKey) +} + +void PresenceFieldKey::InitAsDefaultInstance() { +} + +PresenceFieldKey::PresenceFieldKey(const PresenceFieldKey& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceFieldKey) +} + +void PresenceFieldKey::SharedCtor() { + _cached_size_ = 0; + title_id_ = 0u; + group_ = 0u; + field_ = 0u; + unique_id_ = GOOGLE_ULONGLONG(0); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PresenceFieldKey::~PresenceFieldKey() { + // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceFieldKey) + SharedDtor(); +} + +void PresenceFieldKey::SharedDtor() { + if (this != default_instance_) { + } +} + +void PresenceFieldKey::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* PresenceFieldKey::descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceFieldKey_descriptor_; +} + +const PresenceFieldKey& PresenceFieldKey::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + return *default_instance_; +} + +PresenceFieldKey* PresenceFieldKey::default_instance_ = NULL; + +PresenceFieldKey* PresenceFieldKey::New() const { + return new PresenceFieldKey; +} + +void PresenceFieldKey::Swap(PresenceFieldKey* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata PresenceFieldKey::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = PresenceFieldKey_descriptor_; + metadata.reflection = PresenceFieldKey_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int PresenceField::kKeyFieldNumber; +const int PresenceField::kValueFieldNumber; +const int PresenceField::kDeletedFieldNumber; +const int PresenceField::kUpdatedTimeUsFieldNumber; +#endif // !_MSC_VER + +PresenceField::PresenceField() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceField) +} + +void PresenceField::InitAsDefaultInstance() { + key_ = const_cast< ::bgs::protocol::presence::v2::PresenceFieldKey*>(&::bgs::protocol::presence::v2::PresenceFieldKey::default_instance()); + value_ = const_cast< ::bgs::protocol::v2::Variant*>(&::bgs::protocol::v2::Variant::default_instance()); +} + +PresenceField::PresenceField(const PresenceField& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceField) +} + +void PresenceField::SharedCtor() { + _cached_size_ = 0; + key_ = NULL; + value_ = NULL; + deleted_ = false; + updated_time_us_ = GOOGLE_ULONGLONG(0); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PresenceField::~PresenceField() { + // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceField) + SharedDtor(); +} + +void PresenceField::SharedDtor() { + if (this != default_instance_) { + delete key_; + delete value_; + } +} + +void PresenceField::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* PresenceField::descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceField_descriptor_; +} + +const PresenceField& PresenceField::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + return *default_instance_; +} + +PresenceField* PresenceField::default_instance_ = NULL; + +PresenceField* PresenceField::New() const { + return new PresenceField; +} + +void PresenceField::Swap(PresenceField* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata PresenceField::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = PresenceField_descriptor_; + metadata.reflection = PresenceField_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int PresenceFieldState::kAccountIdFieldNumber; +const int PresenceFieldState::kGameAccountFieldNumber; +const int PresenceFieldState::kFieldsFieldNumber; +const int PresenceFieldState::kOldestTimeUsFieldNumber; +#endif // !_MSC_VER + +PresenceFieldState::PresenceFieldState() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceFieldState) +} + +void PresenceFieldState::InitAsDefaultInstance() { + game_account_ = const_cast< ::bgs::protocol::account::v2::GameAccountHandle*>(&::bgs::protocol::account::v2::GameAccountHandle::default_instance()); +} + +PresenceFieldState::PresenceFieldState(const PresenceFieldState& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceFieldState) +} + +void PresenceFieldState::SharedCtor() { + _cached_size_ = 0; + account_id_ = GOOGLE_ULONGLONG(0); + game_account_ = NULL; + oldest_time_us_ = GOOGLE_ULONGLONG(0); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PresenceFieldState::~PresenceFieldState() { + // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceFieldState) + SharedDtor(); +} + +void PresenceFieldState::SharedDtor() { + if (this != default_instance_) { + delete game_account_; + } +} + +void PresenceFieldState::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* PresenceFieldState::descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceFieldState_descriptor_; +} + +const PresenceFieldState& PresenceFieldState::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + return *default_instance_; +} + +PresenceFieldState* PresenceFieldState::default_instance_ = NULL; + +PresenceFieldState* PresenceFieldState::New() const { + return new PresenceFieldState; +} + +void PresenceFieldState::Swap(PresenceFieldState* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata PresenceFieldState::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = PresenceFieldState_descriptor_; + metadata.reflection = PresenceFieldState_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int PresenceFieldUpdate::kKeyFieldNumber; +const int PresenceFieldUpdate::kValueFieldNumber; +const int PresenceFieldUpdate::kDeleteFieldNumber; +#endif // !_MSC_VER + +PresenceFieldUpdate::PresenceFieldUpdate() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceFieldUpdate) +} + +void PresenceFieldUpdate::InitAsDefaultInstance() { + key_ = const_cast< ::bgs::protocol::presence::v2::PresenceFieldKey*>(&::bgs::protocol::presence::v2::PresenceFieldKey::default_instance()); + value_ = const_cast< ::bgs::protocol::v2::Variant*>(&::bgs::protocol::v2::Variant::default_instance()); +} + +PresenceFieldUpdate::PresenceFieldUpdate(const PresenceFieldUpdate& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceFieldUpdate) +} + +void PresenceFieldUpdate::SharedCtor() { + _cached_size_ = 0; + key_ = NULL; + value_ = NULL; + delete__ = false; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PresenceFieldUpdate::~PresenceFieldUpdate() { + // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceFieldUpdate) + SharedDtor(); +} + +void PresenceFieldUpdate::SharedDtor() { + if (this != default_instance_) { + delete key_; + delete value_; + } +} + +void PresenceFieldUpdate::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* PresenceFieldUpdate::descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceFieldUpdate_descriptor_; +} + +const PresenceFieldUpdate& PresenceFieldUpdate::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + return *default_instance_; +} + +PresenceFieldUpdate* PresenceFieldUpdate::default_instance_ = NULL; + +PresenceFieldUpdate* PresenceFieldUpdate::New() const { + return new PresenceFieldUpdate; +} + +void PresenceFieldUpdate::Swap(PresenceFieldUpdate* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata PresenceFieldUpdate::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = PresenceFieldUpdate_descriptor_; + metadata.reflection = PresenceFieldUpdate_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int PresenceOnlineGameAccount::kGameAccountFieldNumber; +const int PresenceOnlineGameAccount::kOnlineTimeUsFieldNumber; +#endif // !_MSC_VER + +PresenceOnlineGameAccount::PresenceOnlineGameAccount() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceOnlineGameAccount) +} + +void PresenceOnlineGameAccount::InitAsDefaultInstance() { + game_account_ = const_cast< ::bgs::protocol::account::v2::GameAccountHandle*>(&::bgs::protocol::account::v2::GameAccountHandle::default_instance()); +} + +PresenceOnlineGameAccount::PresenceOnlineGameAccount(const PresenceOnlineGameAccount& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceOnlineGameAccount) +} + +void PresenceOnlineGameAccount::SharedCtor() { + _cached_size_ = 0; + game_account_ = NULL; + online_time_us_ = GOOGLE_ULONGLONG(0); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PresenceOnlineGameAccount::~PresenceOnlineGameAccount() { + // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceOnlineGameAccount) + SharedDtor(); +} + +void PresenceOnlineGameAccount::SharedDtor() { + if (this != default_instance_) { + delete game_account_; + } +} + +void PresenceOnlineGameAccount::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* PresenceOnlineGameAccount::descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceOnlineGameAccount_descriptor_; +} + +const PresenceOnlineGameAccount& PresenceOnlineGameAccount::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + return *default_instance_; +} + +PresenceOnlineGameAccount* PresenceOnlineGameAccount::default_instance_ = NULL; + +PresenceOnlineGameAccount* PresenceOnlineGameAccount::New() const { + return new PresenceOnlineGameAccount; +} + +void PresenceOnlineGameAccount::Swap(PresenceOnlineGameAccount* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata PresenceOnlineGameAccount::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = PresenceOnlineGameAccount_descriptor_; + metadata.reflection = PresenceOnlineGameAccount_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int PresenceOnlineGameAccountFieldValue::kOnlineGameAccountsFieldNumber; +#endif // !_MSC_VER + +PresenceOnlineGameAccountFieldValue::PresenceOnlineGameAccountFieldValue() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue) +} + +void PresenceOnlineGameAccountFieldValue::InitAsDefaultInstance() { +} + +PresenceOnlineGameAccountFieldValue::PresenceOnlineGameAccountFieldValue(const PresenceOnlineGameAccountFieldValue& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue) +} + +void PresenceOnlineGameAccountFieldValue::SharedCtor() { + _cached_size_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PresenceOnlineGameAccountFieldValue::~PresenceOnlineGameAccountFieldValue() { + // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue) + SharedDtor(); +} + +void PresenceOnlineGameAccountFieldValue::SharedDtor() { + if (this != default_instance_) { + } +} + +void PresenceOnlineGameAccountFieldValue::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* PresenceOnlineGameAccountFieldValue::descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceOnlineGameAccountFieldValue_descriptor_; +} + +const PresenceOnlineGameAccountFieldValue& PresenceOnlineGameAccountFieldValue::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + return *default_instance_; +} + +PresenceOnlineGameAccountFieldValue* PresenceOnlineGameAccountFieldValue::default_instance_ = NULL; + +PresenceOnlineGameAccountFieldValue* PresenceOnlineGameAccountFieldValue::New() const { + return new PresenceOnlineGameAccountFieldValue; +} + +void PresenceOnlineGameAccountFieldValue::Swap(PresenceOnlineGameAccountFieldValue* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata PresenceOnlineGameAccountFieldValue::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = PresenceOnlineGameAccountFieldValue_descriptor_; + metadata.reflection = PresenceOnlineGameAccountFieldValue_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int PresenceExternalIdentityFieldValue::kUniqueIdFieldNumber; +const int PresenceExternalIdentityFieldValue::kDisplayIdFieldNumber; +#endif // !_MSC_VER + +PresenceExternalIdentityFieldValue::PresenceExternalIdentityFieldValue() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue) +} + +void PresenceExternalIdentityFieldValue::InitAsDefaultInstance() { +} + +PresenceExternalIdentityFieldValue::PresenceExternalIdentityFieldValue(const PresenceExternalIdentityFieldValue& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue) +} + +void PresenceExternalIdentityFieldValue::SharedCtor() { + ::google::protobuf::internal::GetEmptyString(); + _cached_size_ = 0; + unique_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + display_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PresenceExternalIdentityFieldValue::~PresenceExternalIdentityFieldValue() { + // @@protoc_insertion_point(destructor:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue) + SharedDtor(); +} + +void PresenceExternalIdentityFieldValue::SharedDtor() { + if (unique_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete unique_id_; + } + if (display_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete display_id_; + } + if (this != default_instance_) { + } +} + +void PresenceExternalIdentityFieldValue::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* PresenceExternalIdentityFieldValue::descriptor() { + protobuf_AssignDescriptorsOnce(); + return PresenceExternalIdentityFieldValue_descriptor_; +} + +const PresenceExternalIdentityFieldValue& PresenceExternalIdentityFieldValue::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + return *default_instance_; +} + +PresenceExternalIdentityFieldValue* PresenceExternalIdentityFieldValue::default_instance_ = NULL; + +PresenceExternalIdentityFieldValue* PresenceExternalIdentityFieldValue::New() const { + return new PresenceExternalIdentityFieldValue; +} + +void PresenceExternalIdentityFieldValue::Swap(PresenceExternalIdentityFieldValue* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata PresenceExternalIdentityFieldValue::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = PresenceExternalIdentityFieldValue_descriptor_; + metadata.reflection = PresenceExternalIdentityFieldValue_reflection_; + return metadata; +} + +// @@protoc_insertion_point(namespace_scope) + +} // namespace v2 +} // namespace presence +} // namespace protocol +} // namespace bgs + +// @@protoc_insertion_point(global_scope) diff --git a/src/server/proto/Client/api/client/v2/presence_types.pb.h b/src/server/proto/Client/api/client/v2/presence_types.pb.h new file mode 100644 index 00000000000..d1b3259fd35 --- /dev/null +++ b/src/server/proto/Client/api/client/v2/presence_types.pb.h @@ -0,0 +1,1631 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: api/client/v2/presence_types.proto + +#ifndef PROTOBUF_api_2fclient_2fv2_2fpresence_5ftypes_2eproto__INCLUDED +#define PROTOBUF_api_2fclient_2fv2_2fpresence_5ftypes_2eproto__INCLUDED + +#include <string> + +#include <google/protobuf/stubs/common.h> + +#if GOOGLE_PROTOBUF_VERSION < 2006000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 2006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include <google/protobuf/generated_message_util.h> +#include <google/protobuf/message.h> +#include <google/protobuf/repeated_field.h> +#include <google/protobuf/extension_set.h> +#include <google/protobuf/generated_enum_reflection.h> +#include <google/protobuf/unknown_field_set.h> +#include "api/common/v2/attribute_types.pb.h" +#include "api/common/v2/game_account_handle.pb.h" +#include "Define.h" // for TC_PROTO_API +// @@protoc_insertion_point(includes) + +namespace bgs { +namespace protocol { +namespace presence { +namespace v2 { + +// Internal implementation detail -- do not call these. +void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); +void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); +void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + +class RichPresenceKey; +class PresenceFieldKey; +class PresenceField; +class PresenceFieldState; +class PresenceFieldUpdate; +class PresenceOnlineGameAccount; +class PresenceOnlineGameAccountFieldValue; +class PresenceExternalIdentityFieldValue; + +enum PresenceQueryBehavior { + BATTLE_NET_ACCOUNT_ONLY = 0, + INCLUDE_SAME_GAME_ACCOUNT = 1, + INCLUDE_ALL_GAME_ACCOUNTS = 2 +}; +TC_PROTO_API bool PresenceQueryBehavior_IsValid(int value); +const PresenceQueryBehavior PresenceQueryBehavior_MIN = BATTLE_NET_ACCOUNT_ONLY; +const PresenceQueryBehavior PresenceQueryBehavior_MAX = INCLUDE_ALL_GAME_ACCOUNTS; +const int PresenceQueryBehavior_ARRAYSIZE = PresenceQueryBehavior_MAX + 1; + +TC_PROTO_API const ::google::protobuf::EnumDescriptor* PresenceQueryBehavior_descriptor(); +inline const ::std::string& PresenceQueryBehavior_Name(PresenceQueryBehavior value) { + return ::google::protobuf::internal::NameOfEnum( + PresenceQueryBehavior_descriptor(), value); +} +inline bool PresenceQueryBehavior_Parse( + const ::std::string& name, PresenceQueryBehavior* value) { + return ::google::protobuf::internal::ParseNamedEnum<PresenceQueryBehavior>( + PresenceQueryBehavior_descriptor(), name, value); +} +enum PresenceAccountStatus { + OFFLINE = 0, + ONLINE = 1, + AWAY = 2, + DND = 3 +}; +TC_PROTO_API bool PresenceAccountStatus_IsValid(int value); +const PresenceAccountStatus PresenceAccountStatus_MIN = OFFLINE; +const PresenceAccountStatus PresenceAccountStatus_MAX = DND; +const int PresenceAccountStatus_ARRAYSIZE = PresenceAccountStatus_MAX + 1; + +TC_PROTO_API const ::google::protobuf::EnumDescriptor* PresenceAccountStatus_descriptor(); +inline const ::std::string& PresenceAccountStatus_Name(PresenceAccountStatus value) { + return ::google::protobuf::internal::NameOfEnum( + PresenceAccountStatus_descriptor(), value); +} +inline bool PresenceAccountStatus_Parse( + const ::std::string& name, PresenceAccountStatus* value) { + return ::google::protobuf::internal::ParseNamedEnum<PresenceAccountStatus>( + PresenceAccountStatus_descriptor(), name, value); +} +// =================================================================== + +class TC_PROTO_API RichPresenceKey : public ::google::protobuf::Message { + public: + RichPresenceKey(); + virtual ~RichPresenceKey(); + + RichPresenceKey(const RichPresenceKey& from); + + inline RichPresenceKey& operator=(const RichPresenceKey& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const RichPresenceKey& default_instance(); + + void Swap(RichPresenceKey* other); + + // implements Message ---------------------------------------------- + + RichPresenceKey* New() const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional uint32 title_id = 1; + inline bool has_title_id() const; + inline void clear_title_id(); + static const int kTitleIdFieldNumber = 1; + inline ::google::protobuf::uint32 title_id() const; + inline void set_title_id(::google::protobuf::uint32 value); + + // optional fixed32 stream = 2; + inline bool has_stream() const; + inline void clear_stream(); + static const int kStreamFieldNumber = 2; + inline ::google::protobuf::uint32 stream() const; + inline void set_stream(::google::protobuf::uint32 value); + + // optional uint32 localization_id = 3; + inline bool has_localization_id() const; + inline void clear_localization_id(); + static const int kLocalizationIdFieldNumber = 3; + inline ::google::protobuf::uint32 localization_id() const; + inline void set_localization_id(::google::protobuf::uint32 value); + + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.RichPresenceKey) + private: + inline void set_has_title_id(); + inline void clear_has_title_id(); + inline void set_has_stream(); + inline void clear_has_stream(); + inline void set_has_localization_id(); + inline void clear_has_localization_id(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::google::protobuf::uint32 title_id_; + ::google::protobuf::uint32 stream_; + ::google::protobuf::uint32 localization_id_; + friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static RichPresenceKey* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API PresenceFieldKey : public ::google::protobuf::Message { + public: + PresenceFieldKey(); + virtual ~PresenceFieldKey(); + + PresenceFieldKey(const PresenceFieldKey& from); + + inline PresenceFieldKey& operator=(const PresenceFieldKey& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const PresenceFieldKey& default_instance(); + + void Swap(PresenceFieldKey* other); + + // implements Message ---------------------------------------------- + + PresenceFieldKey* New() const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional uint32 title_id = 1; + inline bool has_title_id() const; + inline void clear_title_id(); + static const int kTitleIdFieldNumber = 1; + inline ::google::protobuf::uint32 title_id() const; + inline void set_title_id(::google::protobuf::uint32 value); + + // optional uint32 group = 2; + inline bool has_group() const; + inline void clear_group(); + static const int kGroupFieldNumber = 2; + inline ::google::protobuf::uint32 group() const; + inline void set_group(::google::protobuf::uint32 value); + + // optional uint32 field = 3; + inline bool has_field() const; + inline void clear_field(); + static const int kFieldFieldNumber = 3; + inline ::google::protobuf::uint32 field() const; + inline void set_field(::google::protobuf::uint32 value); + + // optional uint64 unique_id = 4; + inline bool has_unique_id() const; + inline void clear_unique_id(); + static const int kUniqueIdFieldNumber = 4; + inline ::google::protobuf::uint64 unique_id() const; + inline void set_unique_id(::google::protobuf::uint64 value); + + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceFieldKey) + private: + inline void set_has_title_id(); + inline void clear_has_title_id(); + inline void set_has_group(); + inline void clear_has_group(); + inline void set_has_field(); + inline void clear_has_field(); + inline void set_has_unique_id(); + inline void clear_has_unique_id(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::google::protobuf::uint32 title_id_; + ::google::protobuf::uint32 group_; + ::google::protobuf::uint64 unique_id_; + ::google::protobuf::uint32 field_; + friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static PresenceFieldKey* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API PresenceField : public ::google::protobuf::Message { + public: + PresenceField(); + virtual ~PresenceField(); + + PresenceField(const PresenceField& from); + + inline PresenceField& operator=(const PresenceField& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const PresenceField& default_instance(); + + void Swap(PresenceField* other); + + // implements Message ---------------------------------------------- + + PresenceField* New() const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional .bgs.protocol.presence.v2.PresenceFieldKey key = 1; + inline bool has_key() const; + inline void clear_key(); + static const int kKeyFieldNumber = 1; + inline const ::bgs::protocol::presence::v2::PresenceFieldKey& key() const; + inline ::bgs::protocol::presence::v2::PresenceFieldKey* mutable_key(); + inline ::bgs::protocol::presence::v2::PresenceFieldKey* release_key(); + inline void set_allocated_key(::bgs::protocol::presence::v2::PresenceFieldKey* key); + + // optional .bgs.protocol.v2.Variant value = 2; + inline bool has_value() const; + inline void clear_value(); + static const int kValueFieldNumber = 2; + inline const ::bgs::protocol::v2::Variant& value() const; + inline ::bgs::protocol::v2::Variant* mutable_value(); + inline ::bgs::protocol::v2::Variant* release_value(); + inline void set_allocated_value(::bgs::protocol::v2::Variant* value); + + // optional bool deleted = 3; + inline bool has_deleted() const; + inline void clear_deleted(); + static const int kDeletedFieldNumber = 3; + inline bool deleted() const; + inline void set_deleted(bool value); + + // optional uint64 updated_time_us = 4; + inline bool has_updated_time_us() const; + inline void clear_updated_time_us(); + static const int kUpdatedTimeUsFieldNumber = 4; + inline ::google::protobuf::uint64 updated_time_us() const; + inline void set_updated_time_us(::google::protobuf::uint64 value); + + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceField) + private: + inline void set_has_key(); + inline void clear_has_key(); + inline void set_has_value(); + inline void clear_has_value(); + inline void set_has_deleted(); + inline void clear_has_deleted(); + inline void set_has_updated_time_us(); + inline void clear_has_updated_time_us(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::bgs::protocol::presence::v2::PresenceFieldKey* key_; + ::bgs::protocol::v2::Variant* value_; + ::google::protobuf::uint64 updated_time_us_; + bool deleted_; + friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static PresenceField* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API PresenceFieldState : public ::google::protobuf::Message { + public: + PresenceFieldState(); + virtual ~PresenceFieldState(); + + PresenceFieldState(const PresenceFieldState& from); + + inline PresenceFieldState& operator=(const PresenceFieldState& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const PresenceFieldState& default_instance(); + + void Swap(PresenceFieldState* other); + + // implements Message ---------------------------------------------- + + PresenceFieldState* New() const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional uint64 account_id = 1; + inline bool has_account_id() const; + inline void clear_account_id(); + static const int kAccountIdFieldNumber = 1; + inline ::google::protobuf::uint64 account_id() const; + inline void set_account_id(::google::protobuf::uint64 value); + + // optional .bgs.protocol.account.v2.GameAccountHandle game_account = 2; + inline bool has_game_account() const; + inline void clear_game_account(); + static const int kGameAccountFieldNumber = 2; + inline const ::bgs::protocol::account::v2::GameAccountHandle& game_account() const; + inline ::bgs::protocol::account::v2::GameAccountHandle* mutable_game_account(); + inline ::bgs::protocol::account::v2::GameAccountHandle* release_game_account(); + inline void set_allocated_game_account(::bgs::protocol::account::v2::GameAccountHandle* game_account); + + // repeated .bgs.protocol.presence.v2.PresenceField fields = 3; + inline int fields_size() const; + inline void clear_fields(); + static const int kFieldsFieldNumber = 3; + inline const ::bgs::protocol::presence::v2::PresenceField& fields(int index) const; + inline ::bgs::protocol::presence::v2::PresenceField* mutable_fields(int index); + inline ::bgs::protocol::presence::v2::PresenceField* add_fields(); + inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField >& + fields() const; + inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField >* + mutable_fields(); + + // optional uint64 oldest_time_us = 4; + inline bool has_oldest_time_us() const; + inline void clear_oldest_time_us(); + static const int kOldestTimeUsFieldNumber = 4; + inline ::google::protobuf::uint64 oldest_time_us() const; + inline void set_oldest_time_us(::google::protobuf::uint64 value); + + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceFieldState) + private: + inline void set_has_account_id(); + inline void clear_has_account_id(); + inline void set_has_game_account(); + inline void clear_has_game_account(); + inline void set_has_oldest_time_us(); + inline void clear_has_oldest_time_us(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::google::protobuf::uint64 account_id_; + ::bgs::protocol::account::v2::GameAccountHandle* game_account_; + ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField > fields_; + ::google::protobuf::uint64 oldest_time_us_; + friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static PresenceFieldState* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API PresenceFieldUpdate : public ::google::protobuf::Message { + public: + PresenceFieldUpdate(); + virtual ~PresenceFieldUpdate(); + + PresenceFieldUpdate(const PresenceFieldUpdate& from); + + inline PresenceFieldUpdate& operator=(const PresenceFieldUpdate& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const PresenceFieldUpdate& default_instance(); + + void Swap(PresenceFieldUpdate* other); + + // implements Message ---------------------------------------------- + + PresenceFieldUpdate* New() const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional .bgs.protocol.presence.v2.PresenceFieldKey key = 1; + inline bool has_key() const; + inline void clear_key(); + static const int kKeyFieldNumber = 1; + inline const ::bgs::protocol::presence::v2::PresenceFieldKey& key() const; + inline ::bgs::protocol::presence::v2::PresenceFieldKey* mutable_key(); + inline ::bgs::protocol::presence::v2::PresenceFieldKey* release_key(); + inline void set_allocated_key(::bgs::protocol::presence::v2::PresenceFieldKey* key); + + // optional .bgs.protocol.v2.Variant value = 2; + inline bool has_value() const; + inline void clear_value(); + static const int kValueFieldNumber = 2; + inline const ::bgs::protocol::v2::Variant& value() const; + inline ::bgs::protocol::v2::Variant* mutable_value(); + inline ::bgs::protocol::v2::Variant* release_value(); + inline void set_allocated_value(::bgs::protocol::v2::Variant* value); + + // optional bool delete = 3; + inline bool has_delete_() const; + inline void clear_delete_(); + static const int kDeleteFieldNumber = 3; + inline bool delete_() const; + inline void set_delete_(bool value); + + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceFieldUpdate) + private: + inline void set_has_key(); + inline void clear_has_key(); + inline void set_has_value(); + inline void clear_has_value(); + inline void set_has_delete_(); + inline void clear_has_delete_(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::bgs::protocol::presence::v2::PresenceFieldKey* key_; + ::bgs::protocol::v2::Variant* value_; + bool delete__; + friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static PresenceFieldUpdate* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API PresenceOnlineGameAccount : public ::google::protobuf::Message { + public: + PresenceOnlineGameAccount(); + virtual ~PresenceOnlineGameAccount(); + + PresenceOnlineGameAccount(const PresenceOnlineGameAccount& from); + + inline PresenceOnlineGameAccount& operator=(const PresenceOnlineGameAccount& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const PresenceOnlineGameAccount& default_instance(); + + void Swap(PresenceOnlineGameAccount* other); + + // implements Message ---------------------------------------------- + + PresenceOnlineGameAccount* New() const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional .bgs.protocol.account.v2.GameAccountHandle game_account = 1; + inline bool has_game_account() const; + inline void clear_game_account(); + static const int kGameAccountFieldNumber = 1; + inline const ::bgs::protocol::account::v2::GameAccountHandle& game_account() const; + inline ::bgs::protocol::account::v2::GameAccountHandle* mutable_game_account(); + inline ::bgs::protocol::account::v2::GameAccountHandle* release_game_account(); + inline void set_allocated_game_account(::bgs::protocol::account::v2::GameAccountHandle* game_account); + + // optional uint64 online_time_us = 2; + inline bool has_online_time_us() const; + inline void clear_online_time_us(); + static const int kOnlineTimeUsFieldNumber = 2; + inline ::google::protobuf::uint64 online_time_us() const; + inline void set_online_time_us(::google::protobuf::uint64 value); + + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceOnlineGameAccount) + private: + inline void set_has_game_account(); + inline void clear_has_game_account(); + inline void set_has_online_time_us(); + inline void clear_has_online_time_us(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::bgs::protocol::account::v2::GameAccountHandle* game_account_; + ::google::protobuf::uint64 online_time_us_; + friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static PresenceOnlineGameAccount* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API PresenceOnlineGameAccountFieldValue : public ::google::protobuf::Message { + public: + PresenceOnlineGameAccountFieldValue(); + virtual ~PresenceOnlineGameAccountFieldValue(); + + PresenceOnlineGameAccountFieldValue(const PresenceOnlineGameAccountFieldValue& from); + + inline PresenceOnlineGameAccountFieldValue& operator=(const PresenceOnlineGameAccountFieldValue& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const PresenceOnlineGameAccountFieldValue& default_instance(); + + void Swap(PresenceOnlineGameAccountFieldValue* other); + + // implements Message ---------------------------------------------- + + PresenceOnlineGameAccountFieldValue* New() const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // repeated .bgs.protocol.presence.v2.PresenceOnlineGameAccount online_game_accounts = 1; + inline int online_game_accounts_size() const; + inline void clear_online_game_accounts(); + static const int kOnlineGameAccountsFieldNumber = 1; + inline const ::bgs::protocol::presence::v2::PresenceOnlineGameAccount& online_game_accounts(int index) const; + inline ::bgs::protocol::presence::v2::PresenceOnlineGameAccount* mutable_online_game_accounts(int index); + inline ::bgs::protocol::presence::v2::PresenceOnlineGameAccount* add_online_game_accounts(); + inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount >& + online_game_accounts() const; + inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount >* + mutable_online_game_accounts(); + + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue) + private: + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount > online_game_accounts_; + friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static PresenceOnlineGameAccountFieldValue* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API PresenceExternalIdentityFieldValue : public ::google::protobuf::Message { + public: + PresenceExternalIdentityFieldValue(); + virtual ~PresenceExternalIdentityFieldValue(); + + PresenceExternalIdentityFieldValue(const PresenceExternalIdentityFieldValue& from); + + inline PresenceExternalIdentityFieldValue& operator=(const PresenceExternalIdentityFieldValue& from) { + CopyFrom(from); + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { + return _unknown_fields_; + } + + inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { + return &_unknown_fields_; + } + + static const ::google::protobuf::Descriptor* descriptor(); + static const PresenceExternalIdentityFieldValue& default_instance(); + + void Swap(PresenceExternalIdentityFieldValue* other); + + // implements Message ---------------------------------------------- + + PresenceExternalIdentityFieldValue* New() const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + ::google::protobuf::Metadata GetMetadata() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string unique_id = 1; + inline bool has_unique_id() const; + inline void clear_unique_id(); + static const int kUniqueIdFieldNumber = 1; + inline const ::std::string& unique_id() const; + inline void set_unique_id(const ::std::string& value); + inline void set_unique_id(const char* value); + inline void set_unique_id(const char* value, size_t size); + inline ::std::string* mutable_unique_id(); + inline ::std::string* release_unique_id(); + inline void set_allocated_unique_id(::std::string* unique_id); + + // optional string display_id = 2; + inline bool has_display_id() const; + inline void clear_display_id(); + static const int kDisplayIdFieldNumber = 2; + inline const ::std::string& display_id() const; + inline void set_display_id(const ::std::string& value); + inline void set_display_id(const char* value); + inline void set_display_id(const char* value, size_t size); + inline ::std::string* mutable_display_id(); + inline ::std::string* release_display_id(); + inline void set_allocated_display_id(::std::string* display_id); + + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue) + private: + inline void set_has_unique_id(); + inline void clear_has_unique_id(); + inline void set_has_display_id(); + inline void clear_has_display_id(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::std::string* unique_id_; + ::std::string* display_id_; + friend void TC_PROTO_API protobuf_AddDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_AssignDesc_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_api_2fclient_2fv2_2fpresence_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static PresenceExternalIdentityFieldValue* default_instance_; +}; +// =================================================================== + +// =================================================================== + +// =================================================================== + +// RichPresenceKey + +// optional uint32 title_id = 1; +inline bool RichPresenceKey::has_title_id() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void RichPresenceKey::set_has_title_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void RichPresenceKey::clear_has_title_id() { + _has_bits_[0] &= ~0x00000001u; +} +inline void RichPresenceKey::clear_title_id() { + title_id_ = 0u; + clear_has_title_id(); +} +inline ::google::protobuf::uint32 RichPresenceKey::title_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.RichPresenceKey.title_id) + return title_id_; +} +inline void RichPresenceKey::set_title_id(::google::protobuf::uint32 value) { + set_has_title_id(); + title_id_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.RichPresenceKey.title_id) +} + +// optional fixed32 stream = 2; +inline bool RichPresenceKey::has_stream() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void RichPresenceKey::set_has_stream() { + _has_bits_[0] |= 0x00000002u; +} +inline void RichPresenceKey::clear_has_stream() { + _has_bits_[0] &= ~0x00000002u; +} +inline void RichPresenceKey::clear_stream() { + stream_ = 0u; + clear_has_stream(); +} +inline ::google::protobuf::uint32 RichPresenceKey::stream() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.RichPresenceKey.stream) + return stream_; +} +inline void RichPresenceKey::set_stream(::google::protobuf::uint32 value) { + set_has_stream(); + stream_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.RichPresenceKey.stream) +} + +// optional uint32 localization_id = 3; +inline bool RichPresenceKey::has_localization_id() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void RichPresenceKey::set_has_localization_id() { + _has_bits_[0] |= 0x00000004u; +} +inline void RichPresenceKey::clear_has_localization_id() { + _has_bits_[0] &= ~0x00000004u; +} +inline void RichPresenceKey::clear_localization_id() { + localization_id_ = 0u; + clear_has_localization_id(); +} +inline ::google::protobuf::uint32 RichPresenceKey::localization_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.RichPresenceKey.localization_id) + return localization_id_; +} +inline void RichPresenceKey::set_localization_id(::google::protobuf::uint32 value) { + set_has_localization_id(); + localization_id_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.RichPresenceKey.localization_id) +} + +// ------------------------------------------------------------------- + +// PresenceFieldKey + +// optional uint32 title_id = 1; +inline bool PresenceFieldKey::has_title_id() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PresenceFieldKey::set_has_title_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void PresenceFieldKey::clear_has_title_id() { + _has_bits_[0] &= ~0x00000001u; +} +inline void PresenceFieldKey::clear_title_id() { + title_id_ = 0u; + clear_has_title_id(); +} +inline ::google::protobuf::uint32 PresenceFieldKey::title_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldKey.title_id) + return title_id_; +} +inline void PresenceFieldKey::set_title_id(::google::protobuf::uint32 value) { + set_has_title_id(); + title_id_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldKey.title_id) +} + +// optional uint32 group = 2; +inline bool PresenceFieldKey::has_group() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PresenceFieldKey::set_has_group() { + _has_bits_[0] |= 0x00000002u; +} +inline void PresenceFieldKey::clear_has_group() { + _has_bits_[0] &= ~0x00000002u; +} +inline void PresenceFieldKey::clear_group() { + group_ = 0u; + clear_has_group(); +} +inline ::google::protobuf::uint32 PresenceFieldKey::group() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldKey.group) + return group_; +} +inline void PresenceFieldKey::set_group(::google::protobuf::uint32 value) { + set_has_group(); + group_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldKey.group) +} + +// optional uint32 field = 3; +inline bool PresenceFieldKey::has_field() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void PresenceFieldKey::set_has_field() { + _has_bits_[0] |= 0x00000004u; +} +inline void PresenceFieldKey::clear_has_field() { + _has_bits_[0] &= ~0x00000004u; +} +inline void PresenceFieldKey::clear_field() { + field_ = 0u; + clear_has_field(); +} +inline ::google::protobuf::uint32 PresenceFieldKey::field() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldKey.field) + return field_; +} +inline void PresenceFieldKey::set_field(::google::protobuf::uint32 value) { + set_has_field(); + field_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldKey.field) +} + +// optional uint64 unique_id = 4; +inline bool PresenceFieldKey::has_unique_id() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void PresenceFieldKey::set_has_unique_id() { + _has_bits_[0] |= 0x00000008u; +} +inline void PresenceFieldKey::clear_has_unique_id() { + _has_bits_[0] &= ~0x00000008u; +} +inline void PresenceFieldKey::clear_unique_id() { + unique_id_ = GOOGLE_ULONGLONG(0); + clear_has_unique_id(); +} +inline ::google::protobuf::uint64 PresenceFieldKey::unique_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldKey.unique_id) + return unique_id_; +} +inline void PresenceFieldKey::set_unique_id(::google::protobuf::uint64 value) { + set_has_unique_id(); + unique_id_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldKey.unique_id) +} + +// ------------------------------------------------------------------- + +// PresenceField + +// optional .bgs.protocol.presence.v2.PresenceFieldKey key = 1; +inline bool PresenceField::has_key() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PresenceField::set_has_key() { + _has_bits_[0] |= 0x00000001u; +} +inline void PresenceField::clear_has_key() { + _has_bits_[0] &= ~0x00000001u; +} +inline void PresenceField::clear_key() { + if (key_ != NULL) key_->::bgs::protocol::presence::v2::PresenceFieldKey::Clear(); + clear_has_key(); +} +inline const ::bgs::protocol::presence::v2::PresenceFieldKey& PresenceField::key() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceField.key) + return key_ != NULL ? *key_ : *default_instance_->key_; +} +inline ::bgs::protocol::presence::v2::PresenceFieldKey* PresenceField::mutable_key() { + set_has_key(); + if (key_ == NULL) key_ = new ::bgs::protocol::presence::v2::PresenceFieldKey; + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceField.key) + return key_; +} +inline ::bgs::protocol::presence::v2::PresenceFieldKey* PresenceField::release_key() { + clear_has_key(); + ::bgs::protocol::presence::v2::PresenceFieldKey* temp = key_; + key_ = NULL; + return temp; +} +inline void PresenceField::set_allocated_key(::bgs::protocol::presence::v2::PresenceFieldKey* key) { + delete key_; + key_ = key; + if (key) { + set_has_key(); + } else { + clear_has_key(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceField.key) +} + +// optional .bgs.protocol.v2.Variant value = 2; +inline bool PresenceField::has_value() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PresenceField::set_has_value() { + _has_bits_[0] |= 0x00000002u; +} +inline void PresenceField::clear_has_value() { + _has_bits_[0] &= ~0x00000002u; +} +inline void PresenceField::clear_value() { + if (value_ != NULL) value_->::bgs::protocol::v2::Variant::Clear(); + clear_has_value(); +} +inline const ::bgs::protocol::v2::Variant& PresenceField::value() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceField.value) + return value_ != NULL ? *value_ : *default_instance_->value_; +} +inline ::bgs::protocol::v2::Variant* PresenceField::mutable_value() { + set_has_value(); + if (value_ == NULL) value_ = new ::bgs::protocol::v2::Variant; + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceField.value) + return value_; +} +inline ::bgs::protocol::v2::Variant* PresenceField::release_value() { + clear_has_value(); + ::bgs::protocol::v2::Variant* temp = value_; + value_ = NULL; + return temp; +} +inline void PresenceField::set_allocated_value(::bgs::protocol::v2::Variant* value) { + delete value_; + value_ = value; + if (value) { + set_has_value(); + } else { + clear_has_value(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceField.value) +} + +// optional bool deleted = 3; +inline bool PresenceField::has_deleted() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void PresenceField::set_has_deleted() { + _has_bits_[0] |= 0x00000004u; +} +inline void PresenceField::clear_has_deleted() { + _has_bits_[0] &= ~0x00000004u; +} +inline void PresenceField::clear_deleted() { + deleted_ = false; + clear_has_deleted(); +} +inline bool PresenceField::deleted() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceField.deleted) + return deleted_; +} +inline void PresenceField::set_deleted(bool value) { + set_has_deleted(); + deleted_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceField.deleted) +} + +// optional uint64 updated_time_us = 4; +inline bool PresenceField::has_updated_time_us() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void PresenceField::set_has_updated_time_us() { + _has_bits_[0] |= 0x00000008u; +} +inline void PresenceField::clear_has_updated_time_us() { + _has_bits_[0] &= ~0x00000008u; +} +inline void PresenceField::clear_updated_time_us() { + updated_time_us_ = GOOGLE_ULONGLONG(0); + clear_has_updated_time_us(); +} +inline ::google::protobuf::uint64 PresenceField::updated_time_us() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceField.updated_time_us) + return updated_time_us_; +} +inline void PresenceField::set_updated_time_us(::google::protobuf::uint64 value) { + set_has_updated_time_us(); + updated_time_us_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceField.updated_time_us) +} + +// ------------------------------------------------------------------- + +// PresenceFieldState + +// optional uint64 account_id = 1; +inline bool PresenceFieldState::has_account_id() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PresenceFieldState::set_has_account_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void PresenceFieldState::clear_has_account_id() { + _has_bits_[0] &= ~0x00000001u; +} +inline void PresenceFieldState::clear_account_id() { + account_id_ = GOOGLE_ULONGLONG(0); + clear_has_account_id(); +} +inline ::google::protobuf::uint64 PresenceFieldState::account_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldState.account_id) + return account_id_; +} +inline void PresenceFieldState::set_account_id(::google::protobuf::uint64 value) { + set_has_account_id(); + account_id_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldState.account_id) +} + +// optional .bgs.protocol.account.v2.GameAccountHandle game_account = 2; +inline bool PresenceFieldState::has_game_account() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PresenceFieldState::set_has_game_account() { + _has_bits_[0] |= 0x00000002u; +} +inline void PresenceFieldState::clear_has_game_account() { + _has_bits_[0] &= ~0x00000002u; +} +inline void PresenceFieldState::clear_game_account() { + if (game_account_ != NULL) game_account_->::bgs::protocol::account::v2::GameAccountHandle::Clear(); + clear_has_game_account(); +} +inline const ::bgs::protocol::account::v2::GameAccountHandle& PresenceFieldState::game_account() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldState.game_account) + return game_account_ != NULL ? *game_account_ : *default_instance_->game_account_; +} +inline ::bgs::protocol::account::v2::GameAccountHandle* PresenceFieldState::mutable_game_account() { + set_has_game_account(); + if (game_account_ == NULL) game_account_ = new ::bgs::protocol::account::v2::GameAccountHandle; + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceFieldState.game_account) + return game_account_; +} +inline ::bgs::protocol::account::v2::GameAccountHandle* PresenceFieldState::release_game_account() { + clear_has_game_account(); + ::bgs::protocol::account::v2::GameAccountHandle* temp = game_account_; + game_account_ = NULL; + return temp; +} +inline void PresenceFieldState::set_allocated_game_account(::bgs::protocol::account::v2::GameAccountHandle* game_account) { + delete game_account_; + game_account_ = game_account; + if (game_account) { + set_has_game_account(); + } else { + clear_has_game_account(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceFieldState.game_account) +} + +// repeated .bgs.protocol.presence.v2.PresenceField fields = 3; +inline int PresenceFieldState::fields_size() const { + return fields_.size(); +} +inline void PresenceFieldState::clear_fields() { + fields_.Clear(); +} +inline const ::bgs::protocol::presence::v2::PresenceField& PresenceFieldState::fields(int index) const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldState.fields) + return fields_.Get(index); +} +inline ::bgs::protocol::presence::v2::PresenceField* PresenceFieldState::mutable_fields(int index) { + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceFieldState.fields) + return fields_.Mutable(index); +} +inline ::bgs::protocol::presence::v2::PresenceField* PresenceFieldState::add_fields() { + // @@protoc_insertion_point(field_add:bgs.protocol.presence.v2.PresenceFieldState.fields) + return fields_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField >& +PresenceFieldState::fields() const { + // @@protoc_insertion_point(field_list:bgs.protocol.presence.v2.PresenceFieldState.fields) + return fields_; +} +inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceField >* +PresenceFieldState::mutable_fields() { + // @@protoc_insertion_point(field_mutable_list:bgs.protocol.presence.v2.PresenceFieldState.fields) + return &fields_; +} + +// optional uint64 oldest_time_us = 4; +inline bool PresenceFieldState::has_oldest_time_us() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void PresenceFieldState::set_has_oldest_time_us() { + _has_bits_[0] |= 0x00000008u; +} +inline void PresenceFieldState::clear_has_oldest_time_us() { + _has_bits_[0] &= ~0x00000008u; +} +inline void PresenceFieldState::clear_oldest_time_us() { + oldest_time_us_ = GOOGLE_ULONGLONG(0); + clear_has_oldest_time_us(); +} +inline ::google::protobuf::uint64 PresenceFieldState::oldest_time_us() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldState.oldest_time_us) + return oldest_time_us_; +} +inline void PresenceFieldState::set_oldest_time_us(::google::protobuf::uint64 value) { + set_has_oldest_time_us(); + oldest_time_us_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldState.oldest_time_us) +} + +// ------------------------------------------------------------------- + +// PresenceFieldUpdate + +// optional .bgs.protocol.presence.v2.PresenceFieldKey key = 1; +inline bool PresenceFieldUpdate::has_key() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PresenceFieldUpdate::set_has_key() { + _has_bits_[0] |= 0x00000001u; +} +inline void PresenceFieldUpdate::clear_has_key() { + _has_bits_[0] &= ~0x00000001u; +} +inline void PresenceFieldUpdate::clear_key() { + if (key_ != NULL) key_->::bgs::protocol::presence::v2::PresenceFieldKey::Clear(); + clear_has_key(); +} +inline const ::bgs::protocol::presence::v2::PresenceFieldKey& PresenceFieldUpdate::key() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldUpdate.key) + return key_ != NULL ? *key_ : *default_instance_->key_; +} +inline ::bgs::protocol::presence::v2::PresenceFieldKey* PresenceFieldUpdate::mutable_key() { + set_has_key(); + if (key_ == NULL) key_ = new ::bgs::protocol::presence::v2::PresenceFieldKey; + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceFieldUpdate.key) + return key_; +} +inline ::bgs::protocol::presence::v2::PresenceFieldKey* PresenceFieldUpdate::release_key() { + clear_has_key(); + ::bgs::protocol::presence::v2::PresenceFieldKey* temp = key_; + key_ = NULL; + return temp; +} +inline void PresenceFieldUpdate::set_allocated_key(::bgs::protocol::presence::v2::PresenceFieldKey* key) { + delete key_; + key_ = key; + if (key) { + set_has_key(); + } else { + clear_has_key(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceFieldUpdate.key) +} + +// optional .bgs.protocol.v2.Variant value = 2; +inline bool PresenceFieldUpdate::has_value() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PresenceFieldUpdate::set_has_value() { + _has_bits_[0] |= 0x00000002u; +} +inline void PresenceFieldUpdate::clear_has_value() { + _has_bits_[0] &= ~0x00000002u; +} +inline void PresenceFieldUpdate::clear_value() { + if (value_ != NULL) value_->::bgs::protocol::v2::Variant::Clear(); + clear_has_value(); +} +inline const ::bgs::protocol::v2::Variant& PresenceFieldUpdate::value() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldUpdate.value) + return value_ != NULL ? *value_ : *default_instance_->value_; +} +inline ::bgs::protocol::v2::Variant* PresenceFieldUpdate::mutable_value() { + set_has_value(); + if (value_ == NULL) value_ = new ::bgs::protocol::v2::Variant; + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceFieldUpdate.value) + return value_; +} +inline ::bgs::protocol::v2::Variant* PresenceFieldUpdate::release_value() { + clear_has_value(); + ::bgs::protocol::v2::Variant* temp = value_; + value_ = NULL; + return temp; +} +inline void PresenceFieldUpdate::set_allocated_value(::bgs::protocol::v2::Variant* value) { + delete value_; + value_ = value; + if (value) { + set_has_value(); + } else { + clear_has_value(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceFieldUpdate.value) +} + +// optional bool delete = 3; +inline bool PresenceFieldUpdate::has_delete_() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void PresenceFieldUpdate::set_has_delete_() { + _has_bits_[0] |= 0x00000004u; +} +inline void PresenceFieldUpdate::clear_has_delete_() { + _has_bits_[0] &= ~0x00000004u; +} +inline void PresenceFieldUpdate::clear_delete_() { + delete__ = false; + clear_has_delete_(); +} +inline bool PresenceFieldUpdate::delete_() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceFieldUpdate.delete) + return delete__; +} +inline void PresenceFieldUpdate::set_delete_(bool value) { + set_has_delete_(); + delete__ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceFieldUpdate.delete) +} + +// ------------------------------------------------------------------- + +// PresenceOnlineGameAccount + +// optional .bgs.protocol.account.v2.GameAccountHandle game_account = 1; +inline bool PresenceOnlineGameAccount::has_game_account() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PresenceOnlineGameAccount::set_has_game_account() { + _has_bits_[0] |= 0x00000001u; +} +inline void PresenceOnlineGameAccount::clear_has_game_account() { + _has_bits_[0] &= ~0x00000001u; +} +inline void PresenceOnlineGameAccount::clear_game_account() { + if (game_account_ != NULL) game_account_->::bgs::protocol::account::v2::GameAccountHandle::Clear(); + clear_has_game_account(); +} +inline const ::bgs::protocol::account::v2::GameAccountHandle& PresenceOnlineGameAccount::game_account() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceOnlineGameAccount.game_account) + return game_account_ != NULL ? *game_account_ : *default_instance_->game_account_; +} +inline ::bgs::protocol::account::v2::GameAccountHandle* PresenceOnlineGameAccount::mutable_game_account() { + set_has_game_account(); + if (game_account_ == NULL) game_account_ = new ::bgs::protocol::account::v2::GameAccountHandle; + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceOnlineGameAccount.game_account) + return game_account_; +} +inline ::bgs::protocol::account::v2::GameAccountHandle* PresenceOnlineGameAccount::release_game_account() { + clear_has_game_account(); + ::bgs::protocol::account::v2::GameAccountHandle* temp = game_account_; + game_account_ = NULL; + return temp; +} +inline void PresenceOnlineGameAccount::set_allocated_game_account(::bgs::protocol::account::v2::GameAccountHandle* game_account) { + delete game_account_; + game_account_ = game_account; + if (game_account) { + set_has_game_account(); + } else { + clear_has_game_account(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceOnlineGameAccount.game_account) +} + +// optional uint64 online_time_us = 2; +inline bool PresenceOnlineGameAccount::has_online_time_us() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PresenceOnlineGameAccount::set_has_online_time_us() { + _has_bits_[0] |= 0x00000002u; +} +inline void PresenceOnlineGameAccount::clear_has_online_time_us() { + _has_bits_[0] &= ~0x00000002u; +} +inline void PresenceOnlineGameAccount::clear_online_time_us() { + online_time_us_ = GOOGLE_ULONGLONG(0); + clear_has_online_time_us(); +} +inline ::google::protobuf::uint64 PresenceOnlineGameAccount::online_time_us() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceOnlineGameAccount.online_time_us) + return online_time_us_; +} +inline void PresenceOnlineGameAccount::set_online_time_us(::google::protobuf::uint64 value) { + set_has_online_time_us(); + online_time_us_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceOnlineGameAccount.online_time_us) +} + +// ------------------------------------------------------------------- + +// PresenceOnlineGameAccountFieldValue + +// repeated .bgs.protocol.presence.v2.PresenceOnlineGameAccount online_game_accounts = 1; +inline int PresenceOnlineGameAccountFieldValue::online_game_accounts_size() const { + return online_game_accounts_.size(); +} +inline void PresenceOnlineGameAccountFieldValue::clear_online_game_accounts() { + online_game_accounts_.Clear(); +} +inline const ::bgs::protocol::presence::v2::PresenceOnlineGameAccount& PresenceOnlineGameAccountFieldValue::online_game_accounts(int index) const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts) + return online_game_accounts_.Get(index); +} +inline ::bgs::protocol::presence::v2::PresenceOnlineGameAccount* PresenceOnlineGameAccountFieldValue::mutable_online_game_accounts(int index) { + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts) + return online_game_accounts_.Mutable(index); +} +inline ::bgs::protocol::presence::v2::PresenceOnlineGameAccount* PresenceOnlineGameAccountFieldValue::add_online_game_accounts() { + // @@protoc_insertion_point(field_add:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts) + return online_game_accounts_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount >& +PresenceOnlineGameAccountFieldValue::online_game_accounts() const { + // @@protoc_insertion_point(field_list:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts) + return online_game_accounts_; +} +inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v2::PresenceOnlineGameAccount >* +PresenceOnlineGameAccountFieldValue::mutable_online_game_accounts() { + // @@protoc_insertion_point(field_mutable_list:bgs.protocol.presence.v2.PresenceOnlineGameAccountFieldValue.online_game_accounts) + return &online_game_accounts_; +} + +// ------------------------------------------------------------------- + +// PresenceExternalIdentityFieldValue + +// optional string unique_id = 1; +inline bool PresenceExternalIdentityFieldValue::has_unique_id() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PresenceExternalIdentityFieldValue::set_has_unique_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void PresenceExternalIdentityFieldValue::clear_has_unique_id() { + _has_bits_[0] &= ~0x00000001u; +} +inline void PresenceExternalIdentityFieldValue::clear_unique_id() { + if (unique_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + unique_id_->clear(); + } + clear_has_unique_id(); +} +inline const ::std::string& PresenceExternalIdentityFieldValue::unique_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id) + return *unique_id_; +} +inline void PresenceExternalIdentityFieldValue::set_unique_id(const ::std::string& value) { + set_has_unique_id(); + if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + unique_id_ = new ::std::string; + } + unique_id_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id) +} +inline void PresenceExternalIdentityFieldValue::set_unique_id(const char* value) { + set_has_unique_id(); + if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + unique_id_ = new ::std::string; + } + unique_id_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id) +} +inline void PresenceExternalIdentityFieldValue::set_unique_id(const char* value, size_t size) { + set_has_unique_id(); + if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + unique_id_ = new ::std::string; + } + unique_id_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id) +} +inline ::std::string* PresenceExternalIdentityFieldValue::mutable_unique_id() { + set_has_unique_id(); + if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + unique_id_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id) + return unique_id_; +} +inline ::std::string* PresenceExternalIdentityFieldValue::release_unique_id() { + clear_has_unique_id(); + if (unique_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = unique_id_; + unique_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void PresenceExternalIdentityFieldValue::set_allocated_unique_id(::std::string* unique_id) { + if (unique_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete unique_id_; + } + if (unique_id) { + set_has_unique_id(); + unique_id_ = unique_id; + } else { + clear_has_unique_id(); + unique_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.unique_id) +} + +// optional string display_id = 2; +inline bool PresenceExternalIdentityFieldValue::has_display_id() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PresenceExternalIdentityFieldValue::set_has_display_id() { + _has_bits_[0] |= 0x00000002u; +} +inline void PresenceExternalIdentityFieldValue::clear_has_display_id() { + _has_bits_[0] &= ~0x00000002u; +} +inline void PresenceExternalIdentityFieldValue::clear_display_id() { + if (display_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + display_id_->clear(); + } + clear_has_display_id(); +} +inline const ::std::string& PresenceExternalIdentityFieldValue::display_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id) + return *display_id_; +} +inline void PresenceExternalIdentityFieldValue::set_display_id(const ::std::string& value) { + set_has_display_id(); + if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + display_id_ = new ::std::string; + } + display_id_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id) +} +inline void PresenceExternalIdentityFieldValue::set_display_id(const char* value) { + set_has_display_id(); + if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + display_id_ = new ::std::string; + } + display_id_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id) +} +inline void PresenceExternalIdentityFieldValue::set_display_id(const char* value, size_t size) { + set_has_display_id(); + if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + display_id_ = new ::std::string; + } + display_id_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id) +} +inline ::std::string* PresenceExternalIdentityFieldValue::mutable_display_id() { + set_has_display_id(); + if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + display_id_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id) + return display_id_; +} +inline ::std::string* PresenceExternalIdentityFieldValue::release_display_id() { + clear_has_display_id(); + if (display_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = display_id_; + display_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void PresenceExternalIdentityFieldValue::set_allocated_display_id(::std::string* display_id) { + if (display_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete display_id_; + } + if (display_id) { + set_has_display_id(); + display_id_ = display_id; + } else { + clear_has_display_id(); + display_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.presence.v2.PresenceExternalIdentityFieldValue.display_id) +} + +// @@protoc_insertion_point(namespace_scope) + +} // namespace v2 +} // namespace presence +} // namespace protocol +} // namespace bgs + +#ifndef SWIG +namespace google { +namespace protobuf { +template <> struct is_proto_enum< ::bgs::protocol::presence::v2::PresenceQueryBehavior> : ::google::protobuf::internal::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::bgs::protocol::presence::v2::PresenceQueryBehavior>() { + return ::bgs::protocol::presence::v2::PresenceQueryBehavior_descriptor(); +} +template <> struct is_proto_enum< ::bgs::protocol::presence::v2::PresenceAccountStatus> : ::google::protobuf::internal::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::bgs::protocol::presence::v2::PresenceAccountStatus>() { + return ::bgs::protocol::presence::v2::PresenceAccountStatus_descriptor(); +} +} // namespace google +} // namespace protobuf +#endif // SWIG + +// @@protoc_insertion_point(global_scope) + +#endif // PROTOBUF_api_2fclient_2fv2_2fpresence_5ftypes_2eproto__INCLUDED diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp index 698adff25c1..b8b71f5f2e5 100644 --- a/src/tools/map_extractor/System.cpp +++ b/src/tools/map_extractor/System.cpp @@ -1335,28 +1335,28 @@ void ExtractGameTables() printf("output path %s\n", outputPath.string().c_str()); - DB2FileInfo GameTables[] = + static constexpr DB2FileInfo GameTables[] = { - { 1582086, "ArtifactKnowledgeMultiplier.txt" }, - { 1391662, "ArtifactLevelXP.txt" }, - { 1391663, "BarberShopCostBase.txt" }, - { 1391664, "BaseMp.txt" }, - { 4494528, "BaseProfessionRatings.txt" }, - { 1391665, "BattlePetTypeDamageMod.txt" }, - { 1391666, "BattlePetXP.txt" }, - { 1391669, "CombatRatings.txt" }, - { 1391670, "CombatRatingsMultByILvl.txt" }, - { 1391671, "HonorLevel.txt" }, - { 1391642, "HpPerSta.txt" }, - { 2012881, "ItemLevelByLevel.txt" }, - { 1726830, "ItemLevelSquish.txt" }, - { 1391643, "ItemSocketCostPerLevel.txt" }, - { 1391651, "NPCManaCostScaler.txt" }, - { 4492239, "ProfessionRatings.txt" }, - { 1391659, "SandboxScaling.txt" }, - { 1391660, "SpellScaling.txt" }, - { 1980632, "StaminaMultByILvl.txt" }, - { 1391661, "xp.txt" } + { .FileDataId = 1582086, .Name = "ArtifactKnowledgeMultiplier.txt" }, + { .FileDataId = 1391662, .Name = "ArtifactLevelXP.txt" }, + { .FileDataId = 1391663, .Name = "BarberShopCostBase.txt" }, + { .FileDataId = 1391664, .Name = "BaseMp.txt" }, + { .FileDataId = 4494528, .Name = "BaseProfessionRatings.txt" }, + { .FileDataId = 1391665, .Name = "BattlePetTypeDamageMod.txt" }, + { .FileDataId = 1391666, .Name = "BattlePetXP.txt" }, + { .FileDataId = 1391669, .Name = "CombatRatings.txt" }, + { .FileDataId = 1391670, .Name = "CombatRatingsMultByILvl.txt" }, + { .FileDataId = 1391671, .Name = "HonorLevel.txt" }, + { .FileDataId = 1391642, .Name = "HpPerSta.txt" }, + { .FileDataId = 2012881, .Name = "ItemLevelByLevel.txt" }, + { .FileDataId = 1726830, .Name = "ItemLevelSquish.txt" }, + { .FileDataId = 1391643, .Name = "ItemSocketCostPerLevel.txt" }, + { .FileDataId = 1391651, .Name = "NPCManaCostScaler.txt" }, + { .FileDataId = 4492239, .Name = "ProfessionRatings.txt" }, + { .FileDataId = 1391659, .Name = "SandboxScaling.txt" }, + { .FileDataId = 1391660, .Name = "SpellScaling.txt" }, + { .FileDataId = 1980632, .Name = "StaminaMultByILvl.txt" }, + { .FileDataId = 1391661, .Name = "xp.txt" } }; uint32 count = 0; diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h index 8c0136fd719..d36c88f4384 100644 --- a/src/tools/map_extractor/loadlib/DBFilesClientList.h +++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h @@ -138,6 +138,7 @@ constexpr DB2FileInfo DBFilesClientList[] = { .FileDataId = 1592470, .Name = "CelestialBody.db2" }, { .FileDataId = 1068162, .Name = "Cfg_Categories.db2" }, { .FileDataId = 1080949, .Name = "Cfg_Configs.db2" }, + { .FileDataId = 6841377, .Name = "Cfg_GameRules.db2" }, { .FileDataId = 1082876, .Name = "Cfg_Regions.db2" }, { .FileDataId = 2965645, .Name = "ChallengeModeItemBonusOverride.db2" }, { .FileDataId = 1343386, .Name = "CharBaseInfo.db2" }, @@ -234,6 +235,9 @@ constexpr DB2FileInfo DBFilesClientList[] = { .FileDataId = 2143633, .Name = "ContributionStyle.db2" }, { .FileDataId = 2143634, .Name = "ContributionStyleContainer.db2" }, { .FileDataId = 1260801, .Name = "ConversationLine.db2" }, + { .FileDataId = 6405756, .Name = "CooldownSet.db2" }, + { .FileDataId = 6422327, .Name = "CooldownSetLinkedSpell.db2" }, + { .FileDataId = 6405757, .Name = "CooldownSetSpell.db2" }, { .FileDataId = 3220711, .Name = "CorruptionEffects.db2" }, { .FileDataId = 3384973, .Name = "Covenant.db2" }, { .FileDataId = 4545611, .Name = "CraftingData.db2" }, @@ -882,7 +886,6 @@ constexpr DB2FileInfo DBFilesClientList[] = { .FileDataId = 1101657, .Name = "SpellXSpellVisual.db2" }, { .FileDataId = 5735565, .Name = "SpotLightConditionMap.db2" }, { .FileDataId = 1604265, .Name = "StartupFiles.db2" }, - { .FileDataId = 1375805, .Name = "Startup_Strings.db2" }, { .FileDataId = 1140758, .Name = "Stationery.db2" }, { .FileDataId = 1345276, .Name = "SummonProperties.db2" }, { .FileDataId = 1302850, .Name = "TactKey.db2" }, |