diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-07-12 16:29:00 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-07-12 16:29:00 +0200 |
commit | 0cea730fa23473a85c47451c3bd13df816f2b6e4 (patch) | |
tree | 960078875798c5846a1aa465051da876642067e1 | |
parent | 252da139adedd20c297ce7bdd2abed2234fa1bb6 (diff) |
Core: Update to 10.1.5
107 files changed, 7301 insertions, 2629 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 4624955e210..0038aa93cef 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -718,7 +718,8 @@ INSERT INTO `build_info` VALUES (49741,10,1,0,NULL,NULL,'0EF181E2BB0E946CF3B7422ADEB6CD1A',NULL,NULL,NULL), (49801,10,1,0,NULL,NULL,'0832179567B66CA85DBD5678B604C683',NULL,NULL,NULL), (49890,10,1,0,NULL,NULL,'22A5B8A1EB797A64995F705B3DBCB14C',NULL,NULL,NULL), -(50000,10,1,0,NULL,NULL,'02F06FFA2296FD66384295DBFD5A4C91',NULL,NULL,NULL); +(50000,10,1,0,NULL,NULL,'02F06FFA2296FD66384295DBFD5A4C91',NULL,NULL,NULL), +(50401,10,1,5,NULL,NULL,'3EEF52D902CCE81D16D0E255F0AA4938',NULL,NULL,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -2326,7 +2327,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float unsigned NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '50000', + `gamebuild` int unsigned NOT NULL DEFAULT '50401', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -2341,7 +2342,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,50000,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,50401,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -2706,7 +2707,8 @@ INSERT INTO `updates` VALUES ('2023_05_25_00_auth.sql','52C460A556EE08EF149E55E021AF0A9B5EC9AE13','RELEASED','2023-05-25 00:34:18',0), ('2023_05_27_00_auth.sql','C7B7718915274FC21BAE243D42D7419F67F93792','RELEASED','2023-05-27 12:10:20',0), ('2023_06_06_00_auth.sql','F327269C75DF6D09B3D7B33137681E0C1188120A','RELEASED','2023-06-06 00:50:17',0), -('2023_06_12_00_auth.sql','5BEE858205C3EDE75C5A5A1E46FBEE2257F97B83','RELEASED','2023-06-12 23:47:51',0); +('2023_06_12_00_auth.sql','5BEE858205C3EDE75C5A5A1E46FBEE2257F97B83','RELEASED','2023-06-12 23:47:51',0), +('2023_07_12_00_auth.sql','E610FC5F0B1079070F69B5AAA6D6BDA5630B081F','RELEASED','2023-07-12 11:21:50',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2023_07_12_00_auth.sql b/sql/updates/auth/master/2023_07_12_00_auth.sql new file mode 100644 index 00000000000..a962847b081 --- /dev/null +++ b/sql/updates/auth/master/2023_07_12_00_auth.sql @@ -0,0 +1,7 @@ +DELETE FROM `build_info` WHERE `build`=50401; +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`,`winAuthSeed`,`win64AuthSeed`,`mac64AuthSeed`,`winChecksumSeed`,`macChecksumSeed`) VALUES +(50401,10,1,5,NULL,NULL,'3EEF52D902CCE81D16D0E255F0AA4938',NULL,NULL,NULL); + +UPDATE `realmlist` SET `gamebuild`=50401 WHERE `gamebuild`=50000; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '50401'; diff --git a/sql/updates/hotfixes/master/2023_07_12_00_hotfixes.sql b/sql/updates/hotfixes/master/2023_07_12_00_hotfixes.sql new file mode 100644 index 00000000000..d2ee5d6663a --- /dev/null +++ b/sql/updates/hotfixes/master/2023_07_12_00_hotfixes.sql @@ -0,0 +1,33 @@ +-- +-- Table structure for table `conditional_chr_model` +-- +DROP TABLE IF EXISTS `conditional_chr_model`; +CREATE TABLE `conditional_chr_model` ( + `ID` int(11) NOT NULL DEFAULT '0', + `ChrModelID` int(10) unsigned NOT NULL DEFAULT '0', + `ChrCustomizationReqID` int(11) NOT NULL DEFAULT '0', + `PlayerConditionID` int(11) NOT NULL DEFAULT '0', + `Flags` int(11) NOT NULL DEFAULT '0', + `ChrCustomizationCategoryID` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + +ALTER TABLE `area_table` MODIFY `MountFlags` int NOT NULL DEFAULT 0 AFTER `AmbientMultiplier`; + +ALTER TABLE `chr_customization_req` ADD `RaceMask` bigint NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `criteria` MODIFY `StartEvent` int NOT NULL DEFAULT 0 AFTER `ModifierTreeId`; +ALTER TABLE `criteria` MODIFY `FailEvent` int NOT NULL DEFAULT 0 AFTER `StartTimer`; +ALTER TABLE `criteria` MODIFY `Flags` int NOT NULL DEFAULT 0 AFTER `FailAsset`; + +ALTER TABLE `criteria_tree` MODIFY `Operator` int NOT NULL DEFAULT 0 AFTER `Amount`; + +ALTER TABLE `gameobject_display_info` ADD `AlternateDisplayType` int NOT NULL DEFAULT 0 AFTER `OverrideNameScale`; +ALTER TABLE `gameobject_display_info` ADD `ClientCreatureDisplayInfoID` int NOT NULL DEFAULT 0 AFTER `AlternateDisplayType`; +ALTER TABLE `gameobject_display_info` ADD `ClientItemID` int NOT NULL DEFAULT 0 AFTER `ClientCreatureDisplayInfoID`; + +ALTER TABLE `spell_category` MODIFY `Flags` int NOT NULL DEFAULT 0 AFTER `Name`; + +ALTER TABLE `ui_map` ADD `VisibilityPlayerConditionID2` int NOT NULL DEFAULT 0 AFTER `BountyDisplayLocation`; diff --git a/sql/updates/world/master/2023_07_12_00_world.sql b/sql/updates/world/master/2023_07_12_00_world.sql new file mode 100644 index 00000000000..48fbe1b6dd5 --- /dev/null +++ b/sql/updates/world/master/2023_07_12_00_world.sql @@ -0,0 +1 @@ +ALTER TABLE `quest_template` MODIFY `TimeAllowed` bigint NOT NULL DEFAULT 0 AFTER `AreaGroupID`; diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index 7d75a35aaac..b6478ab01b5 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -374,7 +374,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // ChrCustomizationReq.db2 - PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, ReqSource, Flags, ClassMask, AchievementID, QuestID, OverrideArchive, " + PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, RaceMask, ReqSource, Flags, ClassMask, AchievementID, QuestID, OverrideArchive, " "ItemModifiedAppearanceID FROM chr_customization_req WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT MAX(ID) + 1 FROM chr_customization_req", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, ReqSource_lang FROM chr_customization_req_locale WHERE (`VerifiedBuild` > 0) = ?" @@ -432,6 +432,11 @@ void HotfixDatabaseConnection::DoPrepareStatements() " FROM cinematic_sequences WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CINEMATIC_SEQUENCES, "SELECT MAX(ID) + 1 FROM cinematic_sequences", CONNECTION_SYNCH); + // ConditionalChrModel.db2 + PrepareStatement(HOTFIX_SEL_CONDITIONAL_CHR_MODEL, "SELECT ID, ChrModelID, ChrCustomizationReqID, PlayerConditionID, Flags, " + "ChrCustomizationCategoryID FROM conditional_chr_model WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONDITIONAL_CHR_MODEL, "SELECT MAX(ID) + 1 FROM conditional_chr_model", CONNECTION_SYNCH); + // ConditionalContentTuning.db2 PrepareStatement(HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING, "SELECT ID, OrderIndex, RedirectContentTuningID, RedirectFlag, ParentContentTuningID" " FROM conditional_content_tuning WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); @@ -629,7 +634,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() // GameobjectDisplayInfo.db2 PrepareStatement(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, GeoBoxMaxZ, " - "FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale FROM gameobject_display_info WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale, AlternateDisplayType, ClientCreatureDisplayInfoID, " + "ClientItemID FROM gameobject_display_info WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT MAX(ID) + 1 FROM gameobject_display_info", CONNECTION_SYNCH); // Gameobjects.db2 @@ -1848,7 +1854,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() // UiMap.db2 PrepareStatement(HOTFIX_SEL_UI_MAP, "SELECT Name, ID, ParentUiMapID, Flags, `System`, Type, BountySetID, BountyDisplayLocation, " - "VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID, AlternateUiMapGroup, ContentTuningID FROM ui_map WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "VisibilityPlayerConditionID2, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID, AlternateUiMapGroup, ContentTuningID FROM ui_map" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_MAP, "SELECT MAX(ID) + 1 FROM ui_map", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_UI_MAP, "SELECT ID, Name_lang FROM ui_map_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index d2219522a1f..b6afe80c0a6 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -253,6 +253,9 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_CINEMATIC_SEQUENCES, HOTFIX_SEL_CINEMATIC_SEQUENCES_MAX_ID, + HOTFIX_SEL_CONDITIONAL_CHR_MODEL, + HOTFIX_SEL_CONDITIONAL_CHR_MODEL_MAX_ID, + HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING, HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING_MAX_ID, diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h index ee4278ec6d9..b99a9e8180c 100644 --- a/src/server/game/AI/CoreAI/GameObjectAI.h +++ b/src/server/game/AI/CoreAI/GameObjectAI.h @@ -30,7 +30,7 @@ class Quest; class SpellInfo; class Unit; class WorldObject; -enum class QuestGiverStatus : uint32; +enum class QuestGiverStatus : uint64; namespace WorldPackets { diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp index f63d52a7866..42666d2a1e2 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -134,7 +134,7 @@ void PetAI::UpdateAI(uint32 diff) if (spellInfo->IsPositive()) { - if (spellInfo->CanBeUsedInCombat()) + if (spellInfo->CanBeUsedInCombat(me)) { // Check if we're in combat or commanded to attack if (!me->IsInCombat() && !me->GetCharmInfo()->IsCommandAttack()) @@ -190,7 +190,7 @@ void PetAI::UpdateAI(uint32 diff) if (!spellUsed) delete spell; } - else if (me->GetVictim() && CanAttack(me->GetVictim()) && spellInfo->CanBeUsedInCombat()) + else if (me->GetVictim() && CanAttack(me->GetVictim()) && spellInfo->CanBeUsedInCombat(me)) { Spell* spell = new Spell(me, spellInfo, TRIGGERED_NONE); if (spell->CanAutoCast(me->GetVictim())) diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h index 1cdc7db4bb2..d4e5c895e26 100644 --- a/src/server/game/AI/CreatureAI.h +++ b/src/server/game/AI/CreatureAI.h @@ -32,7 +32,7 @@ class GameObject; class PlayerAI; class WorldObject; struct Position; -enum class QuestGiverStatus : uint32; +enum class QuestGiverStatus : uint64; typedef std::vector<AreaBoundary const*> CreatureBoundary; diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 4900e4a3aff..9cee67b2058 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -3870,6 +3870,14 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 return false; break; } + case ModifierTreeType::PlayerSummonedBattlePetSpecies: // 352 + if (referencePlayer->m_playerData->CurrentBattlePetSpeciesID != int32(reqValue)) + return false; + break; + case ModifierTreeType::PlayerSummonedBattlePetIsMaxLevel: // 353 + if (referencePlayer->m_unitData->WildBattlePetLevel != BattlePets::MAX_BATTLE_PET_LEVEL) + return false; + break; case ModifierTreeType::PlayerHasAtLeastProfPathRanks: // 355 { auto traitNodeEntryRankCount = [referencePlayer, secondaryAsset]() @@ -3893,6 +3901,50 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 return false; break; } + case ModifierTreeType::PlayerHasItemTransmogrifiedToItemModifiedAppearance: // 358 + { + ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(reqValue); + + bool bagScanReachedEnd = referencePlayer->ForEachItem(ItemSearchLocation::Inventory, [referencePlayer, itemModifiedAppearance](Item const* item) + { + if (item->GetVisibleAppearanceModId(referencePlayer) == itemModifiedAppearance->ID) + return ItemSearchCallbackResult::Stop; + + if (int32(item->GetEntry()) == itemModifiedAppearance->ItemID) + return ItemSearchCallbackResult::Stop; + + return ItemSearchCallbackResult::Continue; + }); + if (bagScanReachedEnd) + return false; + break; + } + case ModifierTreeType::PlayerHasCompletedDungeonEncounterInDifficulty: // 366 + if (!referencePlayer->IsLockedToDungeonEncounter(reqValue, Difficulty(secondaryAsset))) + return false; + break; + case ModifierTreeType::PlayerIsBetweenQuests: // 369 + { + QuestStatus status = referencePlayer->GetQuestStatus(reqValue); + if (status == QUEST_STATUS_NONE || status == QUEST_STATUS_FAILED) + return false; + if (referencePlayer->IsQuestRewarded(secondaryAsset)) + return false; + break; + } + case ModifierTreeType::PlayerScenarioStepID: // 371 + { + Scenario const* scenario = referencePlayer->GetScenario(); + if (!scenario) + return false; + if (scenario->GetStep()->ID != reqValue) + return false; + break; + } + case ModifierTreeType::PlayerZPositionBelow: // 374 + if (referencePlayer->GetPositionZ() >= reqValue) + return false; + break; default: return false; } diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 198bf8f4f84..473e1124412 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -420,6 +420,8 @@ inline void Battleground::_ProcessJoin(uint32 diff) SetStatus(STATUS_IN_PROGRESS); SetStartDelayTime(StartDelayTimes[BG_STARTING_EVENT_FOURTH]); + SendPacketToAll(WorldPackets::Battleground::PVPMatchSetState(WorldPackets::Battleground::PVPMatchState::Engaged).Write()); + for (auto const& [guid, _] : GetPlayers()) if (Player* player = ObjectAccessor::FindPlayer(guid)) player->AtStartOfEncounter(); @@ -1014,14 +1016,16 @@ void Battleground::AddPlayer(Player* player) { case STATUS_NONE: case STATUS_WAIT_QUEUE: - pvpMatchInitialize.State = WorldPackets::Battleground::PVPMatchInitialize::Inactive; + pvpMatchInitialize.State = WorldPackets::Battleground::PVPMatchState::Inactive; break; case STATUS_WAIT_JOIN: + pvpMatchInitialize.State = WorldPackets::Battleground::PVPMatchState::StartUp; + break; case STATUS_IN_PROGRESS: - pvpMatchInitialize.State = WorldPackets::Battleground::PVPMatchInitialize::InProgress; + pvpMatchInitialize.State = WorldPackets::Battleground::PVPMatchState::Engaged; break; case STATUS_WAIT_LEAVE: - pvpMatchInitialize.State = WorldPackets::Battleground::PVPMatchInitialize::Complete; + pvpMatchInitialize.State = WorldPackets::Battleground::PVPMatchState::Complete; break; default: break; diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index ed541a1116d..685c6484e97 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -180,7 +180,7 @@ struct AreaTableLoadInfo { false, FT_INT, "UwIntroSound" }, { false, FT_BYTE, "FactionGroupMask" }, { false, FT_FLOAT, "AmbientMultiplier" }, - { false, FT_BYTE, "MountFlags" }, + { true, FT_INT, "MountFlags" }, { true, FT_SHORT, "PvpCombatWorldStateID" }, { false, FT_BYTE, "WildBattlePetLevelMin" }, { false, FT_BYTE, "WildBattlePetLevelMax" }, @@ -1033,9 +1033,10 @@ struct ChrCustomizationOptionLoadInfo struct ChrCustomizationReqLoadInfo { - static constexpr DB2FieldMeta Fields[8] = + static constexpr DB2FieldMeta Fields[9] = { { false, FT_INT, "ID" }, + { true, FT_LONG, "RaceMask" }, { false, FT_STRING, "ReqSource" }, { true, FT_INT, "Flags" }, { true, FT_INT, "ClassMask" }, @@ -1045,7 +1046,7 @@ struct ChrCustomizationReqLoadInfo { true, FT_INT, "ItemModifiedAppearanceID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 8, &ChrCustomizationReqMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_REQ }; + static constexpr DB2LoadInfo Instance{ Fields, 9, &ChrCustomizationReqMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_REQ }; }; struct ChrCustomizationReqChoiceLoadInfo @@ -1235,6 +1236,21 @@ struct CinematicSequencesLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 10, &CinematicSequencesMeta::Instance, HOTFIX_SEL_CINEMATIC_SEQUENCES }; }; +struct ConditionalChrModelLoadInfo +{ + static constexpr DB2FieldMeta Fields[6] = + { + { true, FT_INT, "ID" }, + { false, FT_INT, "ChrModelID" }, + { true, FT_INT, "ChrCustomizationReqID" }, + { true, FT_INT, "PlayerConditionID" }, + { true, FT_INT, "Flags" }, + { true, FT_INT, "ChrCustomizationCategoryID" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 6, &ConditionalChrModelMeta::Instance, HOTFIX_SEL_CONDITIONAL_CHR_MODEL }; +}; + struct ConditionalContentTuningLoadInfo { static constexpr DB2FieldMeta Fields[5] = @@ -1469,12 +1485,12 @@ struct CriteriaLoadInfo { true, FT_SHORT, "Type" }, { true, FT_INT, "Asset" }, { false, FT_INT, "ModifierTreeId" }, - { false, FT_BYTE, "StartEvent" }, + { true, FT_INT, "StartEvent" }, { true, FT_INT, "StartAsset" }, { false, FT_SHORT, "StartTimer" }, - { false, FT_BYTE, "FailEvent" }, + { true, FT_INT, "FailEvent" }, { true, FT_INT, "FailAsset" }, - { false, FT_BYTE, "Flags" }, + { true, FT_INT, "Flags" }, { true, FT_SHORT, "EligibilityWorldStateID" }, { true, FT_BYTE, "EligibilityWorldStateValue" }, }; @@ -1490,7 +1506,7 @@ struct CriteriaTreeLoadInfo { false, FT_STRING, "Description" }, { false, FT_INT, "Parent" }, { false, FT_INT, "Amount" }, - { true, FT_BYTE, "Operator" }, + { true, FT_INT, "Operator" }, { false, FT_INT, "CriteriaID" }, { true, FT_INT, "OrderIndex" }, { true, FT_INT, "Flags" }, @@ -1904,7 +1920,7 @@ struct GameobjectArtKitLoadInfo struct GameobjectDisplayInfoLoadInfo { - static constexpr DB2FieldMeta Fields[11] = + static constexpr DB2FieldMeta Fields[14] = { { false, FT_INT, "ID" }, { false, FT_FLOAT, "GeoBoxMinX" }, @@ -1917,9 +1933,12 @@ struct GameobjectDisplayInfoLoadInfo { true, FT_SHORT, "ObjectEffectPackageID" }, { false, FT_FLOAT, "OverrideLootEffectScale" }, { false, FT_FLOAT, "OverrideNameScale" }, + { true, FT_INT, "AlternateDisplayType" }, + { true, FT_INT, "ClientCreatureDisplayInfoID" }, + { true, FT_INT, "ClientItemID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 11, &GameObjectDisplayInfoMeta::Instance, HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO }; + static constexpr DB2LoadInfo Instance{ Fields, 14, &GameObjectDisplayInfoMeta::Instance, HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO }; }; struct GameobjectsLoadInfo @@ -4793,7 +4812,7 @@ struct SpellCategoryLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { true, FT_BYTE, "Flags" }, + { true, FT_INT, "Flags" }, { false, FT_BYTE, "UsesPerWeek" }, { true, FT_BYTE, "MaxCharges" }, { true, FT_INT, "ChargeRecoveryTime" }, @@ -6065,7 +6084,7 @@ struct TransportRotationLoadInfo struct UiMapLoadInfo { - static constexpr DB2FieldMeta Fields[13] = + static constexpr DB2FieldMeta Fields[14] = { { false, FT_STRING, "Name" }, { false, FT_INT, "ID" }, @@ -6075,6 +6094,7 @@ struct UiMapLoadInfo { false, FT_BYTE, "Type" }, { true, FT_INT, "BountySetID" }, { false, FT_INT, "BountyDisplayLocation" }, + { true, FT_INT, "VisibilityPlayerConditionID2" }, { true, FT_INT, "VisibilityPlayerConditionID" }, { true, FT_BYTE, "HelpTextPosition" }, { true, FT_INT, "BkgAtlasID" }, @@ -6082,7 +6102,7 @@ struct UiMapLoadInfo { true, FT_INT, "ContentTuningID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 13, &UiMapMeta::Instance, HOTFIX_SEL_UI_MAP }; + static constexpr DB2LoadInfo Instance{ Fields, 14, &UiMapMeta::Instance, HOTFIX_SEL_UI_MAP }; }; struct UiMapAssignmentLoadInfo diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index fda46a4ec97..a9805140e98 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -43,7 +43,7 @@ struct AchievementMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1260179, 3, 17, 17, 0x6F3CA62E, Fields, 11 }; + static constexpr DB2Meta Instance{ 1260179, 3, 17, 17, 0xFA2C0B62, Fields, 11 }; }; struct Achievement_CategoryMeta @@ -152,6 +152,43 @@ struct AlliedRaceMeta static constexpr DB2Meta Instance{ 1710672, -1, 8, 8, 0xA21C7C29, Fields, -1 }; }; +struct AltMinimapMeta +{ + static constexpr DB2MetaField Fields[4] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5156218, 0, 4, 4, 0x459AD0B9, Fields, -1 }; +}; + +struct AltMinimapFiledataMeta +{ + static constexpr DB2MetaField Fields[4] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5156219, -1, 4, 4, 0xCDDE9476, Fields, -1 }; +}; + +struct AltMinimapWMOMeta +{ + static constexpr DB2MetaField Fields[2] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5156220, -1, 2, 2, 0xEF863B4E, Fields, -1 }; +}; + struct AnimKitMeta { static constexpr DB2MetaField Fields[3] = @@ -501,7 +538,7 @@ struct AreaTableMeta { FT_INT, 1, false }, { FT_BYTE, 1, false }, { FT_FLOAT, 1, true }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_SHORT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, @@ -511,7 +548,7 @@ struct AreaTableMeta { FT_SHORT, 4, false }, }; - static constexpr DB2Meta Instance{ 1353545, -1, 23, 23, 0x16AE706B, Fields, -1 }; + static constexpr DB2Meta Instance{ 1353545, -1, 23, 23, 0xCD6850F0, Fields, -1 }; }; struct AreaTriggerMeta @@ -570,13 +607,14 @@ struct AreaTriggerBoxMeta struct AreaTriggerCreatePropertiesMeta { - static constexpr DB2MetaField Fields[2] = + static constexpr DB2MetaField Fields[3] = { { FT_BYTE, 1, true }, { FT_SHORT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1937227, -1, 2, 2, 0x0345EC9C, Fields, -1 }; + static constexpr DB2Meta Instance{ 1937227, -1, 3, 3, 0x95719F5A, Fields, -1 }; }; struct AreaTriggerCylinderMeta @@ -614,15 +652,16 @@ struct AreaTriggerSphereMeta static constexpr DB2Meta Instance{ 1315630, -1, 1, 1, 0xAE82194A, Fields, -1 }; }; -struct ArenaCcItemMeta +struct ArenaTrackedItemMeta { - static constexpr DB2MetaField Fields[2] = + static constexpr DB2MetaField Fields[3] = { { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 3849793, -1, 2, 1, 0x440B809B, Fields, 1 }; + static constexpr DB2Meta Instance{ 5226140, -1, 3, 3, 0x953C54A9, Fields, 1 }; }; struct ArmorLocationMeta @@ -1482,13 +1521,13 @@ struct CampaignMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, - { FT_INT, 1, false }, + { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 2031607, -1, 13, 13, 0x7E6B8B39, Fields, -1 }; + static constexpr DB2Meta Instance{ 2031607, -1, 13, 13, 0x49228B74, Fields, -1 }; }; struct CampaignXConditionMeta @@ -1888,7 +1927,7 @@ struct ChatChannelsMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1345278, -1, 5, 5, 0x34EBC257, Fields, -1 }; + static constexpr DB2Meta Instance{ 1345278, -1, 5, 5, 0x905CF2AE, Fields, -1 }; }; struct ChatProfanityMeta @@ -2250,8 +2289,9 @@ struct ChrCustomizationOptionMeta struct ChrCustomizationReqMeta { - static constexpr DB2MetaField Fields[7] = + static constexpr DB2MetaField Fields[8] = { + { FT_LONG, 1, true }, { FT_STRING, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, @@ -2261,7 +2301,7 @@ struct ChrCustomizationReqMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 3450453, -1, 7, 7, 0x58DDCAF5, Fields, -1 }; + static constexpr DB2Meta Instance{ 3450453, -1, 8, 8, 0x1BF53EBE, Fields, -1 }; }; struct ChrCustomizationReqChoiceMeta @@ -2610,6 +2650,94 @@ struct CloneEffectMeta static constexpr DB2Meta Instance{ 2175218, -1, 8, 8, 0xC045A5E8, Fields, -1 }; }; +struct CollectableSourceEncounterMeta +{ + static constexpr DB2MetaField Fields[2] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5152111, 0, 2, 1, 0x4FE04777, Fields, 1 }; +}; + +struct CollectableSourceEncounterSparseMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5152908, -1, 3, 2, 0x2283C289, Fields, 2 }; +}; + +struct CollectableSourceInfoMeta +{ + static constexpr DB2MetaField Fields[4] = + { + { FT_STRING_NOT_LOCALIZED, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5152112, 1, 4, 4, 0xF20F935A, Fields, -1 }; +}; + +struct CollectableSourceQuestMeta +{ + static constexpr DB2MetaField Fields[1] = + { + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5205183, -1, 1, 1, 0xED2B4E47, Fields, -1 }; +}; + +struct CollectableSourceQuestSparseMeta +{ + static constexpr DB2MetaField Fields[5] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_FLOAT, 3, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5205600, -1, 5, 4, 0xF3A48090, Fields, 4 }; +}; + +struct CollectableSourceVendorMeta +{ + static constexpr DB2MetaField Fields[3] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5163410, 0, 3, 2, 0x79CFD6DF, Fields, 2 }; +}; + +struct CollectableSourceVendorSparseMeta +{ + static constexpr DB2MetaField Fields[7] = + { + { FT_INT, 1, true }, + { FT_FLOAT, 3, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5159897, -1, 7, 6, 0xD0863376, Fields, 6 }; +}; + struct CombatConditionMeta { static constexpr DB2MetaField Fields[11] = @@ -2704,6 +2832,21 @@ struct ComponentTextureFileDataMeta static constexpr DB2Meta Instance{ 1278239, -1, 3, 3, 0x2DD855B4, Fields, -1 }; }; +struct ConditionalChrModelMeta +{ + static constexpr DB2MetaField Fields[6] = + { + { FT_INT, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5211412, 1, 6, 6, 0x4467B29C, Fields, -1 }; +}; + struct ConditionalContentTuningMeta { static constexpr DB2MetaField Fields[4] = @@ -3327,7 +3470,7 @@ struct CreatureMovementInfoMeta struct CreatureSoundDataMeta { - static constexpr DB2MetaField Fields[38] = + static constexpr DB2MetaField Fields[39] = { { FT_INT, 1, false }, { FT_INT, 1, false }, @@ -3365,11 +3508,12 @@ struct CreatureSoundDataMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, false }, { FT_INT, 1, false }, + { FT_INT, 1, true }, { FT_INT, 5, false }, { FT_INT, 4, false }, }; - static constexpr DB2Meta Instance{ 1344466, 0, 38, 38, 0x0FE7B1EC, Fields, -1 }; + static constexpr DB2Meta Instance{ 1344466, 0, 39, 39, 0x6EF96ED7, Fields, -1 }; }; struct CreatureSoundFidgetMeta @@ -3439,17 +3583,17 @@ struct CriteriaMeta { FT_SHORT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, false }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_SHORT, 1, false }, - { FT_BYTE, 1, false }, { FT_INT, 1, true }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_SHORT, 1, true }, { FT_BYTE, 1, true }, }; - static constexpr DB2Meta Instance{ 1263817, -1, 11, 11, 0x1C237366, Fields, -1 }; + static constexpr DB2Meta Instance{ 1263817, -1, 11, 11, 0x2C87F5ED, Fields, -1 }; }; struct CriteriaTreeMeta @@ -3459,13 +3603,13 @@ struct CriteriaTreeMeta { FT_STRING, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, false }, - { FT_BYTE, 1, true }, + { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1263818, -1, 7, 7, 0x9C1C42E0, Fields, -1 }; + static constexpr DB2Meta Instance{ 1263818, -1, 7, 7, 0xFDD54C23, Fields, -1 }; }; struct CriteriaTreeXEffectMeta @@ -4010,7 +4154,7 @@ struct FactionTemplateMeta struct FlightCapabilityMeta { - static constexpr DB2MetaField Fields[24] = + static constexpr DB2MetaField Fields[25] = { { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, @@ -4035,10 +4179,11 @@ struct FlightCapabilityMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 4501047, -1, 24, 24, 0x5BE49A5B, Fields, -1 }; + static constexpr DB2Meta Instance{ 4501047, -1, 25, 25, 0x521F9F83, Fields, -1 }; }; struct FlightCapabilityXGlideEventMeta @@ -4249,16 +4394,19 @@ struct GameObjectDiffAnimMapMeta struct GameObjectDisplayInfoMeta { - static constexpr DB2MetaField Fields[5] = + static constexpr DB2MetaField Fields[8] = { { FT_FLOAT, 6, true }, { FT_INT, 1, true }, { FT_SHORT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1266277, -1, 5, 5, 0x7E33A93F, Fields, -1 }; + static constexpr DB2Meta Instance{ 1266277, -1, 8, 8, 0x7F774625, Fields, -1 }; }; struct GameObjectDisplayInfoXSoundKitMeta @@ -5525,10 +5673,10 @@ struct GroupFinderActivityXPvpBracketMeta static constexpr DB2MetaField Fields[2] = { { FT_INT, 1, true }, - { FT_INT, 1, true }, + { FT_BYTE, 1, true }, }; - static constexpr DB2Meta Instance{ 4206623, -1, 2, 2, 0xEE2CD2C6, Fields, -1 }; + static constexpr DB2Meta Instance{ 4206623, -1, 2, 2, 0x8BBA3BDB, Fields, -1 }; }; struct GroupFinderCategoryMeta @@ -6154,14 +6302,16 @@ struct ItemContextPickerEntryMeta struct ItemConversionMeta { - static constexpr DB2MetaField Fields[3] = + static constexpr DB2MetaField Fields[5] = { { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 4337196, -1, 3, 3, 0x63D17D1A, Fields, -1 }; + static constexpr DB2Meta Instance{ 4337196, -1, 5, 5, 0xAD670E90, Fields, -1 }; }; struct ItemConversionEntryMeta @@ -6956,6 +7106,35 @@ struct JournalInstanceMeta static constexpr DB2Meta Instance{ 1237438, -1, 9, 9, 0xE213FF3B, Fields, -1 }; }; +struct JournalInstanceEntranceMeta +{ + static constexpr DB2MetaField Fields[5] = + { + { FT_FLOAT, 3, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5228481, -1, 5, 4, 0x3FD6C4DC, Fields, 4 }; +}; + +struct JournalInstanceQueueLocMeta +{ + static constexpr DB2MetaField Fields[6] = + { + { FT_FLOAT, 3, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5228217, -1, 6, 5, 0xF0EB0976, Fields, 5 }; +}; + struct JournalItemXDifficultyMeta { static constexpr DB2MetaField Fields[2] = @@ -7984,7 +8163,7 @@ struct ModifierTreeMeta { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1267645, -1, 7, 7, 0x71484C8E, Fields, -1 }; + static constexpr DB2Meta Instance{ 1267645, -1, 7, 7, 0xD99C74EF, Fields, -1 }; }; struct MountMeta @@ -8421,7 +8600,7 @@ struct PVPBracketTypesMeta { FT_INT, 4, false }, }; - static constexpr DB2Meta Instance{ 1394275, -1, 2, 2, 0x66C16B48, Fields, -1 }; + static constexpr DB2Meta Instance{ 1394275, -1, 2, 2, 0xF8C41353, Fields, -1 }; }; struct PVPDifficultyMeta @@ -8741,14 +8920,15 @@ struct PerksVendorItemMeta struct PerksVendorItemUIInfoMeta { - static constexpr DB2MetaField Fields[3] = + static constexpr DB2MetaField Fields[4] = { { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 4281312, 0, 3, 3, 0xD787F0DD, Fields, -1 }; + static constexpr DB2Meta Instance{ 4281312, 0, 4, 4, 0xF86315E9, Fields, -1 }; }; struct PerksVendorItemXIntervalMeta @@ -9191,12 +9371,12 @@ struct PvpRatingMeta static constexpr DB2MetaField Fields[4] = { { FT_STRING_NOT_LOCALIZED, 1, true }, - { FT_INT, 1, true }, + { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 4699082, -1, 4, 4, 0x4855B7DE, Fields, -1 }; + static constexpr DB2Meta Instance{ 4699082, -1, 4, 4, 0xF3D01273, Fields, -1 }; }; struct PvpScalingEffectMeta @@ -9346,6 +9526,17 @@ struct QuestInfoMeta static constexpr DB2Meta Instance{ 1120960, -1, 4, 4, 0x8CE69EF5, Fields, -1 }; }; +struct QuestLabelMeta +{ + static constexpr DB2MetaField Fields[2] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + + static constexpr DB2Meta Instance{ 5202058, -1, 2, 1, 0x1E62975A, Fields, 1 }; +}; + struct QuestLineMeta { static constexpr DB2MetaField Fields[5] = @@ -10819,14 +11010,14 @@ struct SpellCategoryMeta static constexpr DB2MetaField Fields[6] = { { FT_STRING, 1, true }, - { FT_BYTE, 1, true }, + { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1280619, -1, 6, 6, 0x8C8A2CFC, Fields, -1 }; + static constexpr DB2Meta Instance{ 1280619, -1, 6, 6, 0xF7647E24, Fields, -1 }; }; struct SpellChainEffectsMeta @@ -12696,7 +12887,7 @@ struct UIArrowCalloutMeta struct UIChromieTimeExpansionInfoMeta { - static constexpr DB2MetaField Fields[11] = + static constexpr DB2MetaField Fields[13] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -12709,9 +12900,11 @@ struct UIChromieTimeExpansionInfoMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 3488582, -1, 11, 11, 0x53011113, Fields, -1 }; + static constexpr DB2Meta Instance{ 3488582, -1, 13, 13, 0x7C1717CE, Fields, -1 }; }; struct UICovenantAbilityMeta @@ -12754,7 +12947,7 @@ struct UICovenantPreviewMeta struct UIDeadlyDebuffMeta { - static constexpr DB2MetaField Fields[7] = + static constexpr DB2MetaField Fields[8] = { { FT_STRING, 1, true }, { FT_INT, 1, false }, @@ -12763,9 +12956,10 @@ struct UIDeadlyDebuffMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 4579858, 1, 7, 7, 0xAD10C12D, Fields, -1 }; + static constexpr DB2Meta Instance{ 4579858, 1, 8, 8, 0xFE4E561B, Fields, -1 }; }; struct UIDungeonScoreRarityMeta @@ -13032,7 +13226,7 @@ struct UiCovenantDisplayInfoMeta struct UiItemInteractionMeta { - static constexpr DB2MetaField Fields[18] = + static constexpr DB2MetaField Fields[17] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -13051,15 +13245,14 @@ struct UiItemInteractionMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, - { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 3182424, -1, 18, 18, 0xA6022569, Fields, -1 }; + static constexpr DB2Meta Instance{ 3182424, -1, 17, 17, 0x4F85D70D, Fields, -1 }; }; struct UiMapMeta { - static constexpr DB2MetaField Fields[13] = + static constexpr DB2MetaField Fields[14] = { { FT_STRING, 1, true }, { FT_INT, 1, false }, @@ -13070,13 +13263,14 @@ struct UiMapMeta { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static constexpr DB2Meta Instance{ 1957206, 1, 13, 13, 0x7A60CD63, Fields, 2 }; + static constexpr DB2Meta Instance{ 1957206, 1, 14, 14, 0x69A8C369, Fields, 2 }; }; struct UiMapArtMeta diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index f5c8878f620..f864655f588 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -106,6 +106,7 @@ DB2Storage<ChrRacesEntry> sChrRacesStore("ChrRaces.db2", & DB2Storage<ChrSpecializationEntry> sChrSpecializationStore("ChrSpecialization.db2", &ChrSpecializationLoadInfo::Instance); DB2Storage<CinematicCameraEntry> sCinematicCameraStore("CinematicCamera.db2", &CinematicCameraLoadInfo::Instance); DB2Storage<CinematicSequencesEntry> sCinematicSequencesStore("CinematicSequences.db2", &CinematicSequencesLoadInfo::Instance); +DB2Storage<ConditionalChrModelEntry> sConditionalChrModelStore("ConditionalChrModel.db2", &ConditionalChrModelLoadInfo::Instance); DB2Storage<ConditionalContentTuningEntry> sConditionalContentTuningStore("ConditionalContentTuning.db2", &ConditionalContentTuningLoadInfo::Instance); DB2Storage<ContentTuningEntry> sContentTuningStore("ContentTuning.db2", &ContentTuningLoadInfo::Instance); DB2Storage<ContentTuningXExpectedEntry> sContentTuningXExpectedStore("ContentTuningXExpected.db2", &ContentTuningXExpectedLoadInfo::Instance); @@ -699,6 +700,7 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sChrSpecializationStore); LOAD_DB2(sCinematicCameraStore); LOAD_DB2(sCinematicSequencesStore); + LOAD_DB2(sConditionalChrModelStore); LOAD_DB2(sConditionalContentTuningStore); LOAD_DB2(sContentTuningStore); LOAD_DB2(sContentTuningXExpectedStore); diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 6805fb46d18..f4c5a30bbdf 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -81,6 +81,7 @@ TC_GAME_API extern DB2Storage<ChrRacesEntry> sChrRacesSto TC_GAME_API extern DB2Storage<ChrSpecializationEntry> sChrSpecializationStore; TC_GAME_API extern DB2Storage<CinematicCameraEntry> sCinematicCameraStore; TC_GAME_API extern DB2Storage<CinematicSequencesEntry> sCinematicSequencesStore; +TC_GAME_API extern DB2Storage<ConditionalChrModelEntry> sConditionalChrModelStore; TC_GAME_API extern DB2Storage<ContentTuningEntry> sContentTuningStore; TC_GAME_API extern DB2Storage<ConversationLineEntry> sConversationLineStore; TC_GAME_API extern DB2Storage<CorruptionEffectsEntry> sCorruptionEffectsStore; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 315b5dbd532..426c7b7d033 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -140,7 +140,7 @@ struct AreaTableEntry uint32 UwIntroSound; uint8 FactionGroupMask; float AmbientMultiplier; - uint8 MountFlags; + int32 MountFlags; int16 PvpCombatWorldStateID; uint8 WildBattlePetLevelMin; uint8 WildBattlePetLevelMax; @@ -722,6 +722,7 @@ struct ChrCustomizationOptionEntry struct ChrCustomizationReqEntry { uint32 ID; + Trinity::RaceMask<int64> RaceMask; LocalizedString ReqSource; int32 Flags; int32 ClassMask; @@ -870,6 +871,16 @@ struct CinematicSequencesEntry std::array<uint16, 8> Camera; }; +struct ConditionalChrModelEntry +{ + int32 ID; + uint32 ChrModelID; // This is the PK + int32 ChrCustomizationReqID; + int32 PlayerConditionID; + int32 Flags; + int32 ChrCustomizationCategoryID; +}; + struct ConditionalContentTuningEntry { uint32 ID; @@ -1261,12 +1272,12 @@ struct CriteriaEntry int32 DungeonScore; } Asset; uint32 ModifierTreeId; - uint8 StartEvent; + int32 StartEvent; int32 StartAsset; uint16 StartTimer; - uint8 FailEvent; + int32 FailEvent; int32 FailAsset; - uint8 Flags; + int32 Flags; int16 EligibilityWorldStateID; int8 EligibilityWorldStateValue; @@ -1279,7 +1290,7 @@ struct CriteriaTreeEntry LocalizedString Description; uint32 Parent; uint32 Amount; - int8 Operator; + int32 Operator; uint32 CriteriaID; int32 OrderIndex; int32 Flags; @@ -1648,6 +1659,9 @@ struct GameObjectDisplayInfoEntry int16 ObjectEffectPackageID; float OverrideLootEffectScale; float OverrideNameScale; + int32 AlternateDisplayType; + int32 ClientCreatureDisplayInfoID; + int32 ClientItemID; }; struct GameObjectsEntry @@ -3474,7 +3488,7 @@ struct SpellCategoryEntry { uint32 ID; LocalizedString Name; - int8 Flags; + int32 Flags; uint8 UsesPerWeek; int8 MaxCharges; int32 ChargeRecoveryTime; @@ -4290,7 +4304,8 @@ struct UiMapEntry uint8 Type; int32 BountySetID; uint32 BountyDisplayLocation; - int32 VisibilityPlayerConditionID; + int32 VisibilityPlayerConditionID2; // if not met then map is skipped when evaluating UiMapAssignment + int32 VisibilityPlayerConditionID; // if not met then client checks other maps with the same AlternateUiMapGroup, not re-evaluating UiMapAssignment for them int8 HelpTextPosition; int32 BkgAtlasID; int32 AlternateUiMapGroup; diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 9748c410788..6da7623ccd5 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -639,6 +639,7 @@ enum class CriteriaType : uint8 FulfillCraftingOrderType = 246, /*NYI*/ // {CraftingOrderType} PerksProgramMonthComplete = 249, /*NYI*/ + CompleteTrackingQuest = 250, /*NYI*/ Count }; @@ -1534,7 +1535,7 @@ enum class ModifierTreeType : int32 PlayerAuraWithLabelStackCountEqualOrGreaterThan = 335, // Player has at least {#Stacks} stacks of aura "{Label}" PlayerAuraWithLabelStackCountEqual = 336, // Target has exactly {#Stacks} stacks of aura with label "{Label}" PlayerAuraWithLabelStackCountEqualOrLessThan = 337, // Player has at most {#Stacks} stacks of aura "{Label}" - PlayerIsInCrossFactionGroup = 338, // Player is in a cross faction group + PlayerIsInCrossFactionGroup = 338, // PlayeOr is in a cross faction group PlayerHasTraitNodeEntryInActiveConfig = 340, // Player has {TraitNodeEntry} node in currently active config PlayerHasTraitNodeEntryInActiveConfigRankGreaterOrEqualThan = 341, // Player has at least {#Rank} for {TraitNodeEntry} node in currently active config @@ -1547,9 +1548,29 @@ enum class ModifierTreeType : int32 PlayerHasPerksProgramPendingReward = 350, PlayerCanUseItem = 351, // Player can use item {#Item} + PlayerSummonedBattlePetSpecies = 352, + PlayerSummonedBattlePetIsMaxLevel = 353, PlayerHasAtLeastProfPathRanks = 355, // Player has purchased or granted at least {#Count} ranks in {SkillLine} config PlayerHasAtLeastMissingProfPathRanks = 356, /*NYI*/ // Player is missing least {#Count} ranks in {SkillLine} config + + PlayerHasItemTransmogrifiedToItemModifiedAppearance = 358, // Player has item with {ItemModifiedAppearance} transmog + ItemHasBonusList = 359, /*NYI*/ // Item has {ItemBonusList} (used by ItemCondition) + ItemHasBonusListFromGroup = 360, /*NYI*/ // Item has a bonus list from {ItemBonusListGroup} (used by ItemCondition) + ItemHasContext = 361, /*NYI*/ // Item has {ItemContext} + ItemHasItemLevelBetween = 362, /*NYI*/ // Item has item level between {#Min} and {#Max} + ItemHasContentTuningID = 363, /*NYI*/ // Item has {ContentTuning} (modifier 28) + ItemHasInventoryType = 364, /*NYI*/ // Item has inventory type + ItemWasCraftedWithReagentInSlot = 365, /*NYI*/ // Item was crafted with reagent item {Item} in slot {ModifiedCraftingReagentSlot} + PlayerHasCompletedDungeonEncounterInDifficulty = 366, // Player has completed {DungeonEncounter} on {Difficulty} + PlayerCurrencyIsRelOpFromMax = 367, /*NYI*/ // Player {CurrencyTypes} is {RelOp} {#Amount} from currency limit + ItemHasModifiedCraftingReagentSlot = 368, /*NYI*/ // Item has {ModifiedCraftingReagentSlot} + PlayerIsBetweenQuests = 369, // Player has previously completed quest or is on "{QuestV2}" but not "{QuestV2}" (SecondaryAsset) + PlayerIsOnQuestWithLabel = 370, /*NYI*/ // Player is on quest with {QuestLabel} + PlayerScenarioStepID = 371, // Player is on scenario step number {ScenarioStep} + PlayerHasCompletedQuestWithLabel = 372, /*NYI*/ // Player has previously completed quest with {QuestLabel} + LegacyLootIsEnabled = 373, /*NYI*/ + PlayerZPositionBelow = 374, }; enum class ModifierTreeOperator : int8 @@ -1820,7 +1841,7 @@ enum SpellProcsPerMinuteModType SPELL_PPM_MOD_BATTLEGROUND = 7 }; -constexpr std::size_t MAX_POWERS_PER_SPELL = 4; +constexpr std::size_t MAX_POWERS_PER_SPELL = 5; enum class SpellShapeshiftFormFlags : int32 { diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index dc601efe9c9..a6fed3e9ab6 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -567,6 +567,10 @@ void AreaTrigger::HandleUnitEnterExit(std::vector<Unit*> const& newTargetList) _ai->OnUnitExit(leavingUnit); } } + + SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::NumUnitsInside), _insideUnits.size()); + SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::NumPlayersInside), + std::count_if(_insideUnits.begin(), _insideUnits.end(), [](ObjectGuid const& guid) { return guid.IsPlayer(); })); } AreaTriggerTemplate const* AreaTrigger::GetTemplate() const @@ -857,6 +861,8 @@ void AreaTrigger::InitOrbit(AreaTriggerOrbitInfo const& orbit, uint32 timeToTarg const_cast<UF::AreaTriggerData&>(*m_areaTriggerData).ClearChanged(&UF::AreaTriggerData::TimeToTarget); }); + SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::OrbitPathTarget), orbit.PathTarget.value_or(ObjectGuid::Empty)); + _orbitInfo = orbit; _orbitInfo->TimeToTarget = timeToTarget; diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h index 42d795b6296..d69f9373b05 100644 --- a/src/server/game/Entities/Creature/GossipDef.h +++ b/src/server/game/Entities/Creature/GossipDef.h @@ -26,7 +26,7 @@ class Object; class Quest; class WorldSession; struct GossipMenuItems; -enum class QuestGiverStatus : uint32; +enum class QuestGiverStatus : uint64; #define GOSSIP_MAX_MENU_ITEMS 32 #define DEFAULT_GOSSIP_MESSAGE 0xffffff diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index 3e8645f9398..a63e85bb9f4 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -331,6 +331,7 @@ struct GameObjectTemplate struct { uint32 InteractRadiusOverride; // 0 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 Willthisduelgountilaplayerdies; // 1 Will this duel go until a player dies?, enum { false, true, }; Default: false } duelFlag; // 17 GAMEOBJECT_TYPE_FISHINGNODE struct diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 7ea5665984b..62cd2f12480 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -2482,6 +2482,19 @@ uint16 Item::GetVisibleAppearanceModId(Player const* owner) const return uint16(GetAppearanceModId()); } +uint32 Item::GetVisibleModifiedAppearanceId(Player const* owner) const +{ + uint32 itemModifiedAppearanceId = GetModifier(AppearanceModifierSlotBySpec[owner->GetActiveTalentGroup()]); + if (!itemModifiedAppearanceId) + itemModifiedAppearanceId = GetModifier(ITEM_MODIFIER_TRANSMOG_APPEARANCE_ALL_SPECS); + + if (!itemModifiedAppearanceId) + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = GetItemModifiedAppearance()) + itemModifiedAppearanceId = itemModifiedAppearance->ID; + + return itemModifiedAppearanceId; +} + int32 Item::GetVisibleSecondaryModifiedAppearanceId(Player const* owner) const { uint32 itemModifiedAppearanceId = GetModifier(SecondaryAppearanceModifierSlotBySpec[owner->GetActiveTalentGroup()]); diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index 42875e9f74f..ec233c98ffc 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -412,6 +412,7 @@ class TC_GAME_API Item : public Object uint32 GetVisibleEntry(Player const* owner) const; uint16 GetVisibleAppearanceModId(Player const* owner) const; + uint32 GetVisibleModifiedAppearanceId(Player const* owner) const; int32 GetVisibleSecondaryModifiedAppearanceId(Player const* owner) const; uint32 GetVisibleEnchantmentId(Player const* owner) const; uint16 GetVisibleItemVisual(Player const* owner) const; diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index 77e9bef5746..e443d0a13b4 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -99,7 +99,9 @@ namespace "WOWGUID_FAKE_MODERATOR", nullptr, nullptr, - "WOWGUID_UNIQUE_ACCOUNT_OBJ_INITIALIZATION" + "WOWGUID_UNIQUE_ACCOUNT_OBJ_INITIALIZATION", + nullptr, + "WOWGUID_PENDING_PERMANENT_CHARACTER_ASSIGNMENT" }; ObjectGuid::LowType id = guid.GetCounter(); @@ -452,6 +454,25 @@ namespace return ObjectGuidFactory::CreateWorldLayer(arg1, arg2, arg3, arg4); } + std::string FormatLMMLobby(char const* typeName, ObjectGuid guid) + { + return Trinity::StringFormat("{}-{}-{}-{}-{}-{:X}", typeName, guid.GetRealmId(), uint32(guid.GetRawValue(1) >> 26) & 0xFFFFFF, + uint32(guid.GetRawValue(1) >> 18) & 0xFF, uint32(guid.GetRawValue(1) >> 10) & 0xFF, guid.GetRawValue(0)); + } + + ObjectGuid ParseLMMLobby(HighGuid /*type*/, char const* guidString) + { + uint32 realmId = 0; + uint32 arg2 = 0; + uint8 arg3 = 0; + uint8 arg4 = 0; + uint64 arg5 = 0; + if (std::sscanf(guidString, "%u-%u-%hhu-%hhu-%" SCNx64, &realmId, &arg2, &arg3, &arg4, &arg5) != 5) + return ObjectGuid::FromStringFailed; + + return ObjectGuidFactory::CreateLMMLobby(realmId, arg2, arg3, arg4, arg5); + } + ObjectGuidInfo(); } Info; @@ -460,7 +481,7 @@ namespace #define SET_GUID_INFO(type, format, parse) \ Names[AsUnderlyingType(HighGuid::type)] = #type;\ ClientFormatFunction[AsUnderlyingType(HighGuid::type)] = &ObjectGuidInfo::format;\ - ClientParseFunction[AsUnderlyingType(HighGuid::type)] = &ObjectGuidInfo::parse; + ClientParseFunction[AsUnderlyingType(HighGuid::type)] = &ObjectGuidInfo::parse SET_GUID_INFO(Null, FormatNull, ParseNull); SET_GUID_INFO(Uniq, FormatUniq, ParseUniq); @@ -515,6 +536,8 @@ namespace SET_GUID_INFO(ToolsClient, FormatToolsClient, ParseToolsClient); SET_GUID_INFO(WorldLayer, FormatWorldLayer, ParseWorldLayer); SET_GUID_INFO(ArenaTeam, FormatGuild, ParseGuild); + SET_GUID_INFO(LMMParty, FormatClient, ParseClient); + SET_GUID_INFO(LMMLobby, FormatLMMLobby, ParseLMMLobby); #undef SET_GUID_INFO } @@ -718,6 +741,16 @@ ObjectGuid ObjectGuidFactory::CreateWorldLayer(uint32 arg1, uint16 arg2, uint8 a | uint64(arg4 & 0x7FFFFF))); } +ObjectGuid ObjectGuidFactory::CreateLMMLobby(uint32 realmId, uint32 arg2, uint8 arg3, uint8 arg4, ObjectGuid::LowType counter) +{ + return ObjectGuid(uint64((uint64(HighGuid::LMMLobby) << 58) + | (uint64(GetRealmIdForObjectGuid(realmId)) << 42) + | (uint64(arg2 & 0xFFFFFFFF) << 26) + | (uint64(arg3 & 0xFF) << 18) + | (uint64(arg4 & 0xFF) << 10)), + counter); +} + ObjectGuid const ObjectGuid::Empty = ObjectGuid(); ObjectGuid const ObjectGuid::FromStringFailed = ObjectGuid::Create<HighGuid::Uniq>(UI64LIT(4)); ObjectGuid const ObjectGuid::TradeItem = ObjectGuid::Create<HighGuid::Uniq>(UI64LIT(10)); diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index b3a0213436d..46d88373807 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -124,6 +124,8 @@ enum class HighGuid ToolsClient = 50, WorldLayer = 51, ArenaTeam = 52, + LMMParty = 53, + LMMLobby = 54, Count, }; @@ -158,6 +160,7 @@ enum class ObjectGuidFormatType ClubFinder, ToolsClient, WorldLayer, + LMMLobby, }; template<HighGuid high> @@ -227,6 +230,8 @@ MAKE_GUID_TRAIT(HighGuid::ClubFinder, ObjectGuidSequenceSource::Global, ObjectGu MAKE_GUID_TRAIT(HighGuid::ToolsClient, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::ToolsClient); MAKE_GUID_TRAIT(HighGuid::WorldLayer, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::WorldLayer); MAKE_GUID_TRAIT(HighGuid::ArenaTeam, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Guild); +MAKE_GUID_TRAIT(HighGuid::LMMParty, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Client); +MAKE_GUID_TRAIT(HighGuid::LMMLobby, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::LMMLobby); class ByteBuffer; class ObjectGuid; @@ -252,6 +257,7 @@ public: static ObjectGuid CreateClubFinder(uint32 realmId, uint8 type, uint32 clubFinderId, uint64 dbId); static ObjectGuid CreateToolsClient(uint16 mapId, uint32 serverId, uint64 counter); static ObjectGuid CreateWorldLayer(uint32 arg1, uint16 arg2, uint8 arg3, uint32 arg4); + static ObjectGuid CreateLMMLobby(uint32 realmId, uint32 arg2, uint8 arg3, uint8 arg4, uint64 counter); }; #pragma pack(push, 1) @@ -367,6 +373,7 @@ class TC_GAME_API ObjectGuid template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::ClubFinder, ObjectGuid> Create(uint8 clubType, uint32 clubFinderId, ObjectGuid::LowType dbId) { return ObjectGuidFactory::CreateClubFinder(0, clubType, clubFinderId, dbId); } template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::ToolsClient, ObjectGuid> Create(uint16 mapId, uint32 serverId, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateToolsClient(mapId, serverId, counter); } template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::WorldLayer, ObjectGuid> Create(uint32 arg1, uint16 arg2, uint8 arg3, uint32 arg4) { return ObjectGuidFactory::CreateWorldLayer(arg1, arg2, arg3, arg4); } + template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::LMMLobby, ObjectGuid> Create(uint32 arg2, uint8 arg3, uint8 arg4, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateLMMLobby(0, arg2, arg3, arg4, counter); } protected: ObjectGuid(uint64 high, uint64 low) diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index ebb9c34207e..93ac9f8c967 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -162,25 +162,19 @@ void ItemModList::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item con if (changesMask[0]) { - if (changesMask[0]) - { - if (!ignoreChangesMask) - Values.WriteUpdateMask(data, 6); - else - WriteCompleteDynamicFieldUpdateMask(Values.size(), data, 6); - } + if (!ignoreChangesMask) + Values.WriteUpdateMask(data, 6); + else + WriteCompleteDynamicFieldUpdateMask(Values.size(), data, 6); } data.FlushBits(); if (changesMask[0]) { - if (changesMask[0]) + for (uint32 i = 0; i < Values.size(); ++i) { - for (uint32 i = 0; i < Values.size(); ++i) + if (Values.HasChanged(i) || ignoreChangesMask) { - if (Values.HasChanged(i) || ignoreChangesMask) - { - Values[i].WriteUpdate(data, ignoreChangesMask, owner, receiver); - } + Values[i].WriteUpdate(data, ignoreChangesMask, owner, receiver); } } } @@ -1048,6 +1042,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi data << int32(Stats[i]); data << int32(StatPosBuff[i]); data << int32(StatNegBuff[i]); + data << int32(StatSupportBuff[i]); } } if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner | UpdateFieldFlag::Empath)) @@ -1080,10 +1075,12 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi data << int32(AttackPowerModPos); data << int32(AttackPowerModNeg); data << float(AttackPowerMultiplier); + data << int32(AttackPowerModSupport); data << int32(RangedAttackPower); data << int32(RangedAttackPowerModPos); data << int32(RangedAttackPowerModNeg); data << float(RangedAttackPowerMultiplier); + data << int32(RangedAttackPowerModSupport); data << int32(MainHandWeaponAttackPower); data << int32(OffHandWeaponAttackPower); data << int32(RangedWeaponAttackPower); @@ -1114,7 +1111,9 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi data << uint32(WorldEffects.size()); data << uint32(ChannelObjects.size()); data << int32(FlightCapabilityID); + data << float(GlideEventSpeedDivisor); data << uint32(SilencedSchoolMask); + data << uint32(CurrentAreaID); data << NameplateAttachToGUID; for (uint32 i = 0; i < PassiveSpells.size(); ++i) { @@ -1132,7 +1131,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const { - Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0x0007FFFFu, 0x00003F80u, 0x00000000u }); + Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFC01u, 0x007FFFFFu, 0x0003F800u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } @@ -1140,16 +1139,16 @@ void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x400000FEu, 0xFFF80000u, 0xFFFFC07Fu, 0x0001FFFFu }; + allowedMaskForTarget |= { 0x00002000u, 0x3C010000u, 0xFFC20000u, 0x000003FEu, 0xFF800004u, 0xFFFC07FFu, 0x01FFFFFFu }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll)) - allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x40000000u, 0xFFF80000u, 0x0000007Fu, 0x00000000u }; + allowedMaskForTarget |= { 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFF800004u, 0x000007FFu, 0x00000000u }; if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath)) - allowedMaskForTarget |= { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xF8000000u, 0x00000007u }; + allowedMaskForTarget |= { 0x00000000u, 0x3C000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000007F8u }; } void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) { - Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFF01u, 0x0007FFFFu, 0x00003F80u, 0x00000000u }); + Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xC3FEFFFFu, 0x003DFFFFu, 0xFFFFFC01u, 0x007FFFFFu, 0x0003F800u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); changesMask &= allowedMaskForTarget; } @@ -1570,219 +1569,239 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor } if (changesMask[90]) { - data << int32(RangedAttackPower); + data << int32(AttackPowerModSupport); } if (changesMask[91]) { - data << int32(RangedAttackPowerModPos); + data << int32(RangedAttackPower); } if (changesMask[92]) { - data << int32(RangedAttackPowerModNeg); + data << int32(RangedAttackPowerModPos); } if (changesMask[93]) { - data << float(RangedAttackPowerMultiplier); + data << int32(RangedAttackPowerModNeg); } if (changesMask[94]) { - data << int32(MainHandWeaponAttackPower); + data << float(RangedAttackPowerMultiplier); } if (changesMask[95]) { - data << int32(OffHandWeaponAttackPower); + data << int32(RangedAttackPowerModSupport); } } if (changesMask[96]) { if (changesMask[97]) { - data << int32(RangedWeaponAttackPower); + data << int32(MainHandWeaponAttackPower); } if (changesMask[98]) { - data << int32(SetAttackSpeedAura); + data << int32(OffHandWeaponAttackPower); } if (changesMask[99]) { - data << float(Lifesteal); + data << int32(RangedWeaponAttackPower); } if (changesMask[100]) { - data << float(MinRangedDamage); + data << int32(SetAttackSpeedAura); } if (changesMask[101]) { - data << float(MaxRangedDamage); + data << float(Lifesteal); } if (changesMask[102]) { - data << float(ManaCostMultiplier); + data << float(MinRangedDamage); } if (changesMask[103]) { - data << float(MaxHealthModifier); + data << float(MaxRangedDamage); } if (changesMask[104]) { - data << float(HoverHeight); + data << float(ManaCostMultiplier); } if (changesMask[105]) { - data << int32(MinItemLevelCutoff); + data << float(MaxHealthModifier); } if (changesMask[106]) { - data << int32(MinItemLevel); + data << float(HoverHeight); } if (changesMask[107]) { - data << int32(MaxItemLevel); + data << int32(MinItemLevelCutoff); } if (changesMask[108]) { - data << int32(AzeriteItemLevel); + data << int32(MinItemLevel); } if (changesMask[109]) { - data << int32(WildBattlePetLevel); + data << int32(MaxItemLevel); } if (changesMask[110]) { - data << int32(BattlePetCompanionExperience); + data << int32(AzeriteItemLevel); } if (changesMask[111]) { - data << uint32(BattlePetCompanionNameTimestamp); + data << int32(WildBattlePetLevel); } if (changesMask[112]) { - data << int32(InteractSpellID); + data << int32(BattlePetCompanionExperience); } if (changesMask[113]) { - data << int32(ScaleDuration); + data << uint32(BattlePetCompanionNameTimestamp); } if (changesMask[114]) { - data << int32(LooksLikeMountID); + data << int32(InteractSpellID); } if (changesMask[115]) { - data << int32(LooksLikeCreatureID); + data << int32(ScaleDuration); } if (changesMask[116]) { - data << int32(LookAtControllerID); + data << int32(LooksLikeMountID); } if (changesMask[117]) { - data << int32(PerksVendorItemID); + data << int32(LooksLikeCreatureID); } if (changesMask[118]) { - data << int32(TaxiNodesID); + data << int32(LookAtControllerID); } if (changesMask[119]) { - data << GuildGUID; + data << int32(PerksVendorItemID); } if (changesMask[120]) { - data << int32(FlightCapabilityID); + data << int32(TaxiNodesID); } if (changesMask[121]) { - data << uint32(SilencedSchoolMask); + data << GuildGUID; } if (changesMask[122]) { + data << int32(FlightCapabilityID); + } + if (changesMask[123]) + { + data << float(GlideEventSpeedDivisor); + } + if (changesMask[124]) + { + data << uint32(SilencedSchoolMask); + } + if (changesMask[125]) + { + data << uint32(CurrentAreaID); + } + if (changesMask[126]) + { data << NameplateAttachToGUID; } } - if (changesMask[123]) + if (changesMask[127]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[124 + i]) + if (changesMask[128 + i]) { data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(this, i, owner, receiver)); } } } - if (changesMask[126]) + if (changesMask[130]) { for (uint32 i = 0; i < 10; ++i) { - if (changesMask[127 + i]) + if (changesMask[131 + i]) { data << int32(Power[i]); } - if (changesMask[137 + i]) + if (changesMask[141 + i]) { data << int32(MaxPower[i]); } - if (changesMask[147 + i]) + if (changesMask[151 + i]) { data << float(PowerRegenFlatModifier[i]); } - if (changesMask[157 + i]) + if (changesMask[161 + i]) { data << float(PowerRegenInterruptedFlatModifier[i]); } } } - if (changesMask[167]) + if (changesMask[171]) { for (uint32 i = 0; i < 3; ++i) { - if (changesMask[168 + i]) + if (changesMask[172 + i]) { VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[171]) + if (changesMask[175]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[172 + i]) + if (changesMask[176 + i]) { data << uint32(AttackRoundBaseTime[i]); } } } - if (changesMask[174]) + if (changesMask[178]) { for (uint32 i = 0; i < 4; ++i) { - if (changesMask[175 + i]) + if (changesMask[179 + i]) { data << int32(Stats[i]); } - if (changesMask[179 + i]) + if (changesMask[183 + i]) { data << int32(StatPosBuff[i]); } - if (changesMask[183 + i]) + if (changesMask[187 + i]) { data << int32(StatNegBuff[i]); } + if (changesMask[191 + i]) + { + data << int32(StatSupportBuff[i]); + } } } - if (changesMask[187]) + if (changesMask[195]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[188 + i]) + if (changesMask[196 + i]) { data << int32(Resistances[i]); } - if (changesMask[195 + i]) + if (changesMask[203 + i]) { data << int32(BonusResistanceMods[i]); } - if (changesMask[202 + i]) + if (changesMask[210 + i]) { data << int32(ManaCostModifier[i]); } @@ -1879,10 +1898,12 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(AttackPowerModPos); Base::ClearChangesMask(AttackPowerModNeg); Base::ClearChangesMask(AttackPowerMultiplier); + Base::ClearChangesMask(AttackPowerModSupport); Base::ClearChangesMask(RangedAttackPower); Base::ClearChangesMask(RangedAttackPowerModPos); Base::ClearChangesMask(RangedAttackPowerModNeg); Base::ClearChangesMask(RangedAttackPowerMultiplier); + Base::ClearChangesMask(RangedAttackPowerModSupport); Base::ClearChangesMask(MainHandWeaponAttackPower); Base::ClearChangesMask(OffHandWeaponAttackPower); Base::ClearChangesMask(RangedWeaponAttackPower); @@ -1909,7 +1930,9 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(TaxiNodesID); Base::ClearChangesMask(GuildGUID); Base::ClearChangesMask(FlightCapabilityID); + Base::ClearChangesMask(GlideEventSpeedDivisor); Base::ClearChangesMask(SilencedSchoolMask); + Base::ClearChangesMask(CurrentAreaID); Base::ClearChangesMask(NameplateAttachToGUID); Base::ClearChangesMask(NpcFlags); Base::ClearChangesMask(Power); @@ -1921,6 +1944,7 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(Stats); Base::ClearChangesMask(StatPosBuff); Base::ClearChangesMask(StatNegBuff); + Base::ClearChangesMask(StatSupportBuff); Base::ClearChangesMask(Resistances); Base::ClearChangesMask(BonusResistanceMods); Base::ClearChangesMask(ManaCostModifier); @@ -1947,10 +1971,9 @@ bool ChrCustomizationChoice::operator==(ChrCustomizationChoice const& right) con void QuestLog::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const { + data << int64(EndTime); data << int32(QuestID); data << uint32(StateFlags); - data << uint32(EndTime); - data << uint32(AcceptTime); data << uint32(ObjectiveFlags); for (uint32 i = 0; i < 24; ++i) { @@ -1973,30 +1996,26 @@ void QuestLog::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player cons { if (changesMask[1]) { - data << int32(QuestID); + data << int64(EndTime); } if (changesMask[2]) { - data << uint32(StateFlags); + data << int32(QuestID); } if (changesMask[3]) { - data << uint32(EndTime); + data << uint32(StateFlags); } if (changesMask[4]) { - data << uint32(AcceptTime); - } - if (changesMask[5]) - { data << uint32(ObjectiveFlags); } } - if (changesMask[6]) + if (changesMask[5]) { for (uint32 i = 0; i < 24; ++i) { - if (changesMask[7 + i]) + if (changesMask[6 + i]) { data << int16(ObjectiveProgress[i]); } @@ -2006,10 +2025,9 @@ void QuestLog::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player cons void QuestLog::ClearChangesMask() { + Base::ClearChangesMask(EndTime); Base::ClearChangesMask(QuestID); Base::ClearChangesMask(StateFlags); - Base::ClearChangesMask(EndTime); - Base::ClearChangesMask(AcceptTime); Base::ClearChangesMask(ObjectiveFlags); Base::ClearChangesMask(ObjectiveProgress); _changesMask.ResetAll(); @@ -2826,19 +2844,94 @@ bool SpellFlatModByLabel::operator==(SpellFlatModByLabel const& right) const && LabelID == right.LabelID; } -void Research::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const +void CompletedProject::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const { - data << int16(ResearchProjectID); + data << uint32(ProjectID); + data << int64(FirstCompleted); + data << uint32(CompletionCount); } -void Research::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const +void CompletedProject::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const { - data << int16(ResearchProjectID); + Mask changesMask = _changesMask; + if (ignoreChangesMask) + changesMask.SetAll(); + + data.WriteBits(changesMask.GetBlock(0), 4); + + data.FlushBits(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data << uint32(ProjectID); + } + if (changesMask[2]) + { + data << int64(FirstCompleted); + } + if (changesMask[3]) + { + data << uint32(CompletionCount); + } + } } -bool Research::operator==(Research const& right) const +void CompletedProject::ClearChangesMask() { - return ResearchProjectID == right.ResearchProjectID; + Base::ClearChangesMask(ProjectID); + Base::ClearChangesMask(FirstCompleted); + Base::ClearChangesMask(CompletionCount); + _changesMask.ResetAll(); +} + +void ResearchHistory::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const +{ + data << uint32(CompletedProjects.size()); + for (uint32 i = 0; i < CompletedProjects.size(); ++i) + { + CompletedProjects[i].WriteCreate(data, owner, receiver); + } +} + +void ResearchHistory::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const +{ + Mask changesMask = _changesMask; + if (ignoreChangesMask) + changesMask.SetAll(); + + data.WriteBits(changesMask.GetBlock(0), 2); + + if (changesMask[0]) + { + if (changesMask[1]) + { + if (!ignoreChangesMask) + CompletedProjects.WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(CompletedProjects.size(), data); + } + } + data.FlushBits(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (uint32 i = 0; i < CompletedProjects.size(); ++i) + { + if (CompletedProjects.HasChanged(i) || ignoreChangesMask) + { + CompletedProjects[i].WriteUpdate(data, ignoreChangesMask, owner, receiver); + } + } + } + } +} + +void ResearchHistory::ClearChangesMask() +{ + Base::ClearChangesMask(CompletedProjects); + _changesMask.ResetAll(); } void MawPower::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const @@ -3188,6 +3281,7 @@ void CraftingOrderItem::WriteCreate(ByteBuffer& data, Player const* owner, Playe data << uint32(Quantity); data << int32(ReagentQuality); data.WriteBits(DataSlotIndex.has_value(), 1); + data.FlushBits(); if (DataSlotIndex.has_value()) { data << uint8(DataSlotIndex); @@ -3228,6 +3322,7 @@ void CraftingOrderItem::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Pl data << int32(ReagentQuality); } data.WriteBits(DataSlotIndex.has_value(), 1); + data.FlushBits(); if (changesMask[6]) { if (DataSlotIndex.has_value()) @@ -3270,6 +3365,7 @@ void CraftingOrderData::WriteCreate(ByteBuffer& data, Player const* owner, Playe data.WriteBits(CustomerNotes->size(), 10); data.WriteBits(OutputItem.has_value(), 1); data.WriteBits(OutputItemData.has_value(), 1); + data.FlushBits(); for (uint32 i = 0; i < Reagents.size(); ++i) { Reagents[i].WriteCreate(data, owner, receiver); @@ -3396,6 +3492,7 @@ void CraftingOrderData::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Pl } data.WriteBits(OutputItem.has_value(), 1); data.WriteBits(OutputItemData.has_value(), 1); + data.FlushBits(); if (changesMask[22]) { if (OutputItem.has_value()) @@ -3444,6 +3541,7 @@ void CraftingOrder::WriteCreate(ByteBuffer& data, Player const* owner, Player co data.WriteBits(RecraftItemInfo.has_value(), 1); data.WriteBits(Enchantments.size(), 4); data.WriteBits(Gems.size(), 2); + data.FlushBits(); if (RecraftItemInfo.has_value()) { data << RecraftItemInfo; @@ -3507,6 +3605,7 @@ void CraftingOrder::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player Data->WriteUpdate(data, ignoreChangesMask, owner, receiver); } data.WriteBits(RecraftItemInfo.has_value(), 1); + data.FlushBits(); if (changesMask[3]) { if (RecraftItemInfo.has_value()) @@ -3580,6 +3679,145 @@ bool WeeklySpellUse::operator==(WeeklySpellUse const& right) const && Uses == right.Uses; } +void StablePetInfo::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const +{ + data << uint32(PetSlot); + data << uint32(PetNumber); + data << uint32(CreatureID); + data << uint32(DisplayID); + data << uint32(ExperienceLevel); + data << uint8(PetFlags); + data.WriteBits(Name->size(), 8); + data.WriteString(Name); + data.FlushBits(); +} + +void StablePetInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const +{ + Mask changesMask = _changesMask; + if (ignoreChangesMask) + changesMask.SetAll(); + + data.WriteBits(changesMask.GetBlock(0), 8); + + data.FlushBits(); + if (changesMask[0]) + { + if (changesMask[1]) + { + data << uint32(PetSlot); + } + if (changesMask[2]) + { + data << uint32(PetNumber); + } + if (changesMask[3]) + { + data << uint32(CreatureID); + } + if (changesMask[4]) + { + data << uint32(DisplayID); + } + if (changesMask[5]) + { + data << uint32(ExperienceLevel); + } + if (changesMask[7]) + { + data << uint8(PetFlags); + } + if (changesMask[6]) + { + data.WriteBits(Name->size(), 8); + data.WriteString(Name); + } + } + data.FlushBits(); +} + +void StablePetInfo::ClearChangesMask() +{ + Base::ClearChangesMask(PetSlot); + Base::ClearChangesMask(PetNumber); + Base::ClearChangesMask(CreatureID); + Base::ClearChangesMask(DisplayID); + Base::ClearChangesMask(ExperienceLevel); + Base::ClearChangesMask(Name); + Base::ClearChangesMask(PetFlags); + _changesMask.ResetAll(); +} + +void StableInfo::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const +{ + data << uint32(Pets.size()); + data << StableMaster; + for (uint32 i = 0; i < Pets.size(); ++i) + { + Pets[i].WriteCreate(data, owner, receiver); + } +} + +void StableInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const +{ + Mask changesMask = _changesMask; + if (ignoreChangesMask) + changesMask.SetAll(); + + data.WriteBits(changesMask.GetBlock(0), 3); + + if (changesMask[0]) + { + if (changesMask[1]) + { + if (!ignoreChangesMask) + Pets.WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(Pets.size(), data); + } + } + data.FlushBits(); + if (changesMask[0]) + { + if (changesMask[1]) + { + for (uint32 i = 0; i < Pets.size(); ++i) + { + if (Pets.HasChanged(i) || ignoreChangesMask) + { + Pets[i].WriteUpdate(data, ignoreChangesMask, owner, receiver); + } + } + } + if (changesMask[2]) + { + data << StableMaster; + } + } +} + +void StableInfo::ClearChangesMask() +{ + Base::ClearChangesMask(Pets); + Base::ClearChangesMask(StableMaster); + _changesMask.ResetAll(); +} + +void Research::WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const +{ + data << int16(ResearchProjectID); +} + +void Research::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const +{ + data << int16(ResearchProjectID); +} + +bool Research::operator==(Research const& right) const +{ + return ResearchProjectID == right.ResearchProjectID; +} + void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { for (uint32 i = 0; i < 227; ++i) @@ -3711,8 +3949,24 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f data << int32(HonorNextLevel); data << int32(PerksProgramCurrency); data << uint8(NumBankSlots); - data << uint32(ResearchSites.size()); - data << uint32(ResearchSiteProgress.size()); + for (uint32 i = 0; i < 1; ++i) + { + data << uint32(ResearchSites[i].size()); + data << uint32(ResearchSiteProgress[i].size()); + data << uint32(Research[i].size()); + for (uint32 j = 0; j < ResearchSites[i].size(); ++j) + { + data << uint16(ResearchSites[i][j]); + } + for (uint32 j = 0; j < ResearchSiteProgress[i].size(); ++j) + { + data << uint32(ResearchSiteProgress[i][j]); + } + for (uint32 j = 0; j < Research[i].size(); ++j) + { + Research[i][j].WriteCreate(data, owner, receiver); + } + } data << uint32(DailyQuestsCompleted.size()); data << uint32(AvailableQuestLineXQuestIDs.size()); data << uint32(Heirlooms.size()); @@ -3727,18 +3981,11 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f data << uint32(CharacterRestrictions.size()); data << uint32(SpellPctModByLabel.size()); data << uint32(SpellFlatModByLabel.size()); - for (uint32 i = 0; i < 1; ++i) - { - data << uint32(Research[i].size()); - for (uint32 j = 0; j < Research[i].size(); ++j) - { - Research[i][j].WriteCreate(data, owner, receiver); - } - } data << uint32(MawPowers.size()); data << uint32(MultiFloorExploration.size()); data << uint32(RecipeProgression.size()); data << uint32(ReplayedQuests.size()); + data << uint32(TaskQuests.size()); data << uint32(DisabledSpells.size()); data << int32(UiChromieTimeExpansionID); data << int32(TransportServerTime); @@ -3754,19 +4001,18 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { data << float(ItemUpgradeHighWatermark[i]); } + data << int32(ItemUpgradeHighOnehandWeaponItemID); + data << int32(ItemUpgradeHighFingerItemID); + data << float(ItemUpgradeHighFingerWatermark); + data << int32(ItemUpgradeHighTrinketItemID); + data << float(ItemUpgradeHighTrinketWatermark); data << uint64(LootHistoryInstanceID); + data << uint32(TrackedCollectableSources.size()); + data << uint8(RequiredMountCapabilityFlags); for (uint32 i = 0; i < KnownTitles.size(); ++i) { data << uint64(KnownTitles[i]); } - for (uint32 i = 0; i < ResearchSites.size(); ++i) - { - data << uint16(ResearchSites[i]); - } - for (uint32 i = 0; i < ResearchSiteProgress.size(); ++i) - { - data << uint32(ResearchSiteProgress[i]); - } for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i) { data << int32(DailyQuestsCompleted[i]); @@ -3835,6 +4081,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { ReplayedQuests[i].WriteCreate(data, owner, receiver); } + for (uint32 i = 0; i < TaskQuests.size(); ++i) + { + TaskQuests[i].WriteCreate(data, owner, receiver); + } for (uint32 i = 0; i < DisabledSpells.size(); ++i) { data << int32(DisabledSpells[i]); @@ -3851,6 +4101,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { WeeklySpellUses[i].WriteCreate(data, owner, receiver); } + for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i) + { + data << int64(TrackedCollectableSources[i]); + } data.FlushBits(); data.WriteBit(BackpackAutoSortDisabled); data.WriteBit(BankAutoSortDisabled); @@ -3858,11 +4112,14 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f data.WriteBit(InsertItemsLeftToRight); data.WriteBit(HasPerksProgramPendingReward); data.WriteBits(QuestSession.has_value(), 1); - data << FrozenPerksVendorItem; + data.WriteBits(PetStable.has_value(), 1); + data.FlushBits(); + ResearchHistory->WriteCreate(data, owner, receiver); if (QuestSession.has_value()) { QuestSession->WriteCreate(data, owner, receiver); } + data << FrozenPerksVendorItem; Field_1410->WriteCreate(data, owner, receiver); data << DungeonScore; for (uint32 i = 0; i < PvpInfo.size(); ++i) @@ -3881,6 +4138,10 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f { CraftingOrders[i].WriteCreate(data, owner, receiver); } + if (PetStable.has_value()) + { + PetStable->WriteCreate(data, owner, receiver); + } data.FlushBits(); } @@ -3934,214 +4195,281 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo else WriteCompleteDynamicFieldUpdateMask(PvpInfo.size(), data); } - if (changesMask[8]) + } + if (changesMask[35]) + { + for (uint32 i = 0; i < 1; ++i) { - if (!ignoreNestedChangesMask) - ResearchSites.WriteUpdateMask(data); - else - WriteCompleteDynamicFieldUpdateMask(ResearchSites.size(), data); + if (changesMask[36 + i]) + { + if (!ignoreNestedChangesMask) + ResearchSites[i].WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(ResearchSites[i].size(), data); + } } - if (changesMask[9]) + } + if (changesMask[37]) + { + for (uint32 i = 0; i < 1; ++i) { - if (!ignoreNestedChangesMask) - ResearchSiteProgress.WriteUpdateMask(data); - else - WriteCompleteDynamicFieldUpdateMask(ResearchSiteProgress.size(), data); + if (changesMask[38 + i]) + { + if (!ignoreNestedChangesMask) + ResearchSiteProgress[i].WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(ResearchSiteProgress[i].size(), data); + } } - if (changesMask[10]) + } + if (changesMask[39]) + { + for (uint32 i = 0; i < 1; ++i) + { + if (changesMask[40 + i]) + { + if (!ignoreNestedChangesMask) + Research[i].WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(Research[i].size(), data); + } + } + } + if (changesMask[35]) + { + for (uint32 i = 0; i < 1; ++i) + { + if (changesMask[36 + i]) + { + for (uint32 j = 0; j < ResearchSites[i].size(); ++j) + { + if (ResearchSites[i].HasChanged(j) || ignoreNestedChangesMask) + { + data << uint16(ResearchSites[i][j]); + } + } + } + } + } + if (changesMask[37]) + { + for (uint32 i = 0; i < 1; ++i) + { + if (changesMask[38 + i]) + { + for (uint32 j = 0; j < ResearchSiteProgress[i].size(); ++j) + { + if (ResearchSiteProgress[i].HasChanged(j) || ignoreNestedChangesMask) + { + data << uint32(ResearchSiteProgress[i][j]); + } + } + } + } + } + if (changesMask[39]) + { + for (uint32 i = 0; i < 1; ++i) + { + if (changesMask[40 + i]) + { + for (uint32 j = 0; j < Research[i].size(); ++j) + { + if (Research[i].HasChanged(j) || ignoreNestedChangesMask) + { + Research[i][j].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } + } + } + } + data.FlushBits(); + if (changesMask[0]) + { + if (changesMask[8]) { if (!ignoreNestedChangesMask) DailyQuestsCompleted.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(DailyQuestsCompleted.size(), data); } - if (changesMask[11]) + if (changesMask[9]) { if (!ignoreNestedChangesMask) AvailableQuestLineXQuestIDs.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(AvailableQuestLineXQuestIDs.size(), data); } - if (changesMask[12]) + if (changesMask[10]) { if (!ignoreNestedChangesMask) Heirlooms.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Heirlooms.size(), data); } - if (changesMask[13]) + if (changesMask[11]) { if (!ignoreNestedChangesMask) HeirloomFlags.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(HeirloomFlags.size(), data); } - if (changesMask[14]) + if (changesMask[12]) { if (!ignoreNestedChangesMask) Toys.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Toys.size(), data); } - if (changesMask[15]) + if (changesMask[13]) { if (!ignoreNestedChangesMask) ToyFlags.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ToyFlags.size(), data); } - if (changesMask[16]) + if (changesMask[14]) { if (!ignoreNestedChangesMask) Transmog.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(Transmog.size(), data); } - if (changesMask[17]) + if (changesMask[15]) { if (!ignoreNestedChangesMask) ConditionalTransmog.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ConditionalTransmog.size(), data); } - if (changesMask[18]) + if (changesMask[16]) { if (!ignoreNestedChangesMask) SelfResSpells.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SelfResSpells.size(), data); } - if (changesMask[19]) + if (changesMask[17]) { if (!ignoreNestedChangesMask) RuneforgePowers.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(RuneforgePowers.size(), data); } - if (changesMask[20]) + if (changesMask[18]) { if (!ignoreNestedChangesMask) TransmogIllusions.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TransmogIllusions.size(), data); } - if (changesMask[21]) + if (changesMask[19]) { if (!ignoreNestedChangesMask) CharacterRestrictions.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CharacterRestrictions.size(), data); } - if (changesMask[22]) + if (changesMask[20]) { if (!ignoreNestedChangesMask) SpellPctModByLabel.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SpellPctModByLabel.size(), data); } - if (changesMask[23]) + if (changesMask[21]) { if (!ignoreNestedChangesMask) SpellFlatModByLabel.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(SpellFlatModByLabel.size(), data); } - } - if (changesMask[35]) - { - for (uint32 i = 0; i < 1; ++i) - { - if (changesMask[36 + i]) - { - if (!ignoreNestedChangesMask) - Research[i].WriteUpdateMask(data); - else - WriteCompleteDynamicFieldUpdateMask(Research[i].size(), data); - for (uint32 j = 0; j < Research[i].size(); ++j) - { - if (Research[i].HasChanged(j) || ignoreNestedChangesMask) - { - Research[i][j].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); - } - } - } - } - } - data.FlushBits(); - if (changesMask[0]) - { - if (changesMask[24]) + if (changesMask[22]) { if (!ignoreNestedChangesMask) MawPowers.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(MawPowers.size(), data); } - if (changesMask[25]) + if (changesMask[23]) { if (!ignoreNestedChangesMask) MultiFloorExploration.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(MultiFloorExploration.size(), data); } - if (changesMask[26]) + if (changesMask[24]) { if (!ignoreNestedChangesMask) RecipeProgression.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(RecipeProgression.size(), data); } - if (changesMask[27]) + if (changesMask[25]) { if (!ignoreNestedChangesMask) ReplayedQuests.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(ReplayedQuests.size(), data); } - if (changesMask[28]) + if (changesMask[26]) + { + if (!ignoreNestedChangesMask) + TaskQuests.WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(TaskQuests.size(), data); + } + if (changesMask[27]) { if (!ignoreNestedChangesMask) DisabledSpells.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(DisabledSpells.size(), data); } - if (changesMask[29]) + if (changesMask[28]) { if (!ignoreNestedChangesMask) TraitConfigs.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(TraitConfigs.size(), data); } - if (changesMask[30]) + if (changesMask[29]) { if (!ignoreNestedChangesMask) CraftingOrders.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(CraftingOrders.size(), data); } - if (changesMask[31]) + if (changesMask[30]) { if (!ignoreNestedChangesMask) PersonalCraftingOrderCounts.WriteUpdateMask(data); else WriteCompleteDynamicFieldUpdateMask(PersonalCraftingOrderCounts.size(), data); } + if (changesMask[31]) + { + if (!ignoreNestedChangesMask) + CategoryCooldownMods.WriteUpdateMask(data); + else + WriteCompleteDynamicFieldUpdateMask(CategoryCooldownMods.size(), data); + } } if (changesMask[32]) { if (changesMask[33]) { if (!ignoreNestedChangesMask) - CategoryCooldownMods.WriteUpdateMask(data); + WeeklySpellUses.WriteUpdateMask(data); else - WriteCompleteDynamicFieldUpdateMask(CategoryCooldownMods.size(), data); + WriteCompleteDynamicFieldUpdateMask(WeeklySpellUses.size(), data); } if (changesMask[34]) { if (!ignoreNestedChangesMask) - WeeklySpellUses.WriteUpdateMask(data); + TrackedCollectableSources.WriteUpdateMask(data); else - WriteCompleteDynamicFieldUpdateMask(WeeklySpellUses.size(), data); + WriteCompleteDynamicFieldUpdateMask(TrackedCollectableSources.size(), data); } } data.FlushBits(); @@ -4159,26 +4487,6 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[8]) { - for (uint32 i = 0; i < ResearchSites.size(); ++i) - { - if (ResearchSites.HasChanged(i) || ignoreNestedChangesMask) - { - data << uint16(ResearchSites[i]); - } - } - } - if (changesMask[9]) - { - for (uint32 i = 0; i < ResearchSiteProgress.size(); ++i) - { - if (ResearchSiteProgress.HasChanged(i) || ignoreNestedChangesMask) - { - data << uint32(ResearchSiteProgress[i]); - } - } - } - if (changesMask[10]) - { for (uint32 i = 0; i < DailyQuestsCompleted.size(); ++i) { if (DailyQuestsCompleted.HasChanged(i) || ignoreNestedChangesMask) @@ -4187,7 +4495,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[11]) + if (changesMask[9]) { for (uint32 i = 0; i < AvailableQuestLineXQuestIDs.size(); ++i) { @@ -4197,7 +4505,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[12]) + if (changesMask[10]) { for (uint32 i = 0; i < Heirlooms.size(); ++i) { @@ -4207,7 +4515,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[13]) + if (changesMask[11]) { for (uint32 i = 0; i < HeirloomFlags.size(); ++i) { @@ -4217,7 +4525,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[14]) + if (changesMask[12]) { for (uint32 i = 0; i < Toys.size(); ++i) { @@ -4227,7 +4535,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[15]) + if (changesMask[13]) { for (uint32 i = 0; i < ToyFlags.size(); ++i) { @@ -4237,7 +4545,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[16]) + if (changesMask[14]) { for (uint32 i = 0; i < Transmog.size(); ++i) { @@ -4247,7 +4555,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[17]) + if (changesMask[15]) { for (uint32 i = 0; i < ConditionalTransmog.size(); ++i) { @@ -4257,7 +4565,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[18]) + if (changesMask[16]) { for (uint32 i = 0; i < SelfResSpells.size(); ++i) { @@ -4267,7 +4575,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[19]) + if (changesMask[17]) { for (uint32 i = 0; i < RuneforgePowers.size(); ++i) { @@ -4277,7 +4585,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[20]) + if (changesMask[18]) { for (uint32 i = 0; i < TransmogIllusions.size(); ++i) { @@ -4287,7 +4595,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[22]) + if (changesMask[20]) { for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i) { @@ -4297,7 +4605,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[23]) + if (changesMask[21]) { for (uint32 i = 0; i < SpellFlatModByLabel.size(); ++i) { @@ -4307,7 +4615,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[24]) + if (changesMask[22]) { for (uint32 i = 0; i < MawPowers.size(); ++i) { @@ -4317,7 +4625,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[25]) + if (changesMask[23]) { for (uint32 i = 0; i < MultiFloorExploration.size(); ++i) { @@ -4327,7 +4635,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[26]) + if (changesMask[24]) { for (uint32 i = 0; i < RecipeProgression.size(); ++i) { @@ -4337,7 +4645,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[27]) + if (changesMask[25]) { for (uint32 i = 0; i < ReplayedQuests.size(); ++i) { @@ -4347,7 +4655,17 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[28]) + if (changesMask[26]) + { + for (uint32 i = 0; i < TaskQuests.size(); ++i) + { + if (TaskQuests.HasChanged(i) || ignoreNestedChangesMask) + { + TaskQuests[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } + } + if (changesMask[27]) { for (uint32 i = 0; i < DisabledSpells.size(); ++i) { @@ -4357,7 +4675,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[31]) + if (changesMask[30]) { for (uint32 i = 0; i < PersonalCraftingOrderCounts.size(); ++i) { @@ -4367,10 +4685,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - } - if (changesMask[32]) - { - if (changesMask[33]) + if (changesMask[31]) { for (uint32 i = 0; i < CategoryCooldownMods.size(); ++i) { @@ -4380,7 +4695,10 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[34]) + } + if (changesMask[32]) + { + if (changesMask[33]) { for (uint32 i = 0; i < WeeklySpellUses.size(); ++i) { @@ -4390,6 +4708,16 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } + if (changesMask[34]) + { + for (uint32 i = 0; i < TrackedCollectableSources.size(); ++i) + { + if (TrackedCollectableSources.HasChanged(i) || ignoreNestedChangesMask) + { + data << int64(TrackedCollectableSources[i]); + } + } + } } if (changesMask[0]) { @@ -4403,7 +4731,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[21]) + if (changesMask[19]) { for (uint32 i = 0; i < CharacterRestrictions.size(); ++i) { @@ -4413,7 +4741,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[29]) + if (changesMask[28]) { for (uint32 i = 0; i < TraitConfigs.size(); ++i) { @@ -4423,7 +4751,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[30]) + if (changesMask[29]) { for (uint32 i = 0; i < CraftingOrders.size(); ++i) { @@ -4436,501 +4764,541 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[32]) { - if (changesMask[37]) + if (changesMask[41]) { data << FarsightObject; } - if (changesMask[38]) + if (changesMask[42]) { data << SummonedBattlePetGUID; } - if (changesMask[39]) + if (changesMask[43]) { data << uint64(Coinage); } - if (changesMask[40]) + if (changesMask[44]) { data << int32(XP); } - if (changesMask[41]) + if (changesMask[45]) { data << int32(NextLevelXP); } - if (changesMask[42]) + if (changesMask[46]) { data << int32(TrialXP); } - if (changesMask[43]) + if (changesMask[47]) { Skill->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } - if (changesMask[44]) + if (changesMask[48]) { data << int32(CharacterPoints); } - if (changesMask[45]) + if (changesMask[49]) { data << int32(MaxTalentTiers); } - if (changesMask[46]) + if (changesMask[50]) { data << uint32(TrackCreatureMask); } - if (changesMask[47]) + if (changesMask[51]) { data << float(MainhandExpertise); } - if (changesMask[48]) + if (changesMask[52]) { data << float(OffhandExpertise); } - if (changesMask[49]) + if (changesMask[53]) { data << float(RangedExpertise); } - if (changesMask[50]) + if (changesMask[54]) { data << float(CombatRatingExpertise); } - if (changesMask[51]) + if (changesMask[55]) { data << float(BlockPercentage); } - if (changesMask[52]) + if (changesMask[56]) { data << float(DodgePercentage); } - if (changesMask[53]) + if (changesMask[57]) { data << float(DodgePercentageFromAttribute); } - if (changesMask[54]) + if (changesMask[58]) { data << float(ParryPercentage); } - if (changesMask[55]) + if (changesMask[59]) { data << float(ParryPercentageFromAttribute); } - if (changesMask[56]) + if (changesMask[60]) { data << float(CritPercentage); } - if (changesMask[57]) + if (changesMask[61]) { data << float(RangedCritPercentage); } - if (changesMask[58]) + if (changesMask[62]) { data << float(OffhandCritPercentage); } - if (changesMask[59]) + if (changesMask[63]) { data << float(SpellCritPercentage); } - if (changesMask[60]) + if (changesMask[64]) { data << int32(ShieldBlock); } - if (changesMask[61]) + if (changesMask[65]) { data << float(ShieldBlockCritPercentage); } - if (changesMask[62]) + if (changesMask[66]) { data << float(Mastery); } - if (changesMask[63]) + if (changesMask[67]) { data << float(Speed); } - if (changesMask[64]) + if (changesMask[68]) { data << float(Avoidance); } - if (changesMask[65]) + if (changesMask[69]) { data << float(Sturdiness); } } - if (changesMask[66]) + if (changesMask[70]) { - if (changesMask[67]) + if (changesMask[71]) { data << int32(Versatility); } - if (changesMask[68]) + if (changesMask[72]) { data << float(VersatilityBonus); } - if (changesMask[69]) + if (changesMask[73]) { data << float(PvpPowerDamage); } - if (changesMask[70]) + if (changesMask[74]) { data << float(PvpPowerHealing); } - if (changesMask[71]) + if (changesMask[75]) { data << int32(ModHealingDonePos); } - if (changesMask[72]) + if (changesMask[76]) { data << float(ModHealingPercent); } - if (changesMask[73]) + if (changesMask[77]) { data << float(ModPeriodicHealingDonePercent); } - if (changesMask[74]) + if (changesMask[78]) { data << float(ModSpellPowerPercent); } - if (changesMask[75]) + if (changesMask[79]) { data << float(ModResiliencePercent); } - if (changesMask[76]) + if (changesMask[80]) { data << float(OverrideSpellPowerByAPPercent); } - if (changesMask[77]) + if (changesMask[81]) { data << float(OverrideAPBySpellPowerPercent); } - if (changesMask[78]) + if (changesMask[82]) { data << int32(ModTargetResistance); } - if (changesMask[79]) + if (changesMask[83]) { data << int32(ModTargetPhysicalResistance); } - if (changesMask[80]) + if (changesMask[84]) { data << uint32(LocalFlags); } - if (changesMask[81]) + if (changesMask[85]) { data << uint8(GrantableLevels); } - if (changesMask[82]) + if (changesMask[86]) { data << uint8(MultiActionBars); } - if (changesMask[83]) + if (changesMask[87]) { data << uint8(LifetimeMaxRank); } - if (changesMask[84]) + if (changesMask[88]) { data << uint8(NumRespecs); } - if (changesMask[85]) + if (changesMask[89]) { data << uint32(PvpMedals); } - if (changesMask[86]) + if (changesMask[90]) { data << uint16(TodayHonorableKills); } - if (changesMask[87]) + if (changesMask[91]) { data << uint16(YesterdayHonorableKills); } - if (changesMask[88]) + if (changesMask[92]) { data << uint32(LifetimeHonorableKills); } - if (changesMask[89]) + if (changesMask[93]) { data << int32(WatchedFactionIndex); } - if (changesMask[90]) + if (changesMask[94]) { data << int32(MaxLevel); } - if (changesMask[91]) + if (changesMask[95]) { data << int32(ScalingPlayerLevelDelta); } - if (changesMask[92]) + if (changesMask[96]) { data << int32(MaxCreatureScalingLevel); } - if (changesMask[93]) + if (changesMask[97]) { data << int32(PetSpellPower); } - if (changesMask[94]) + if (changesMask[98]) { data << float(UiHitModifier); } - if (changesMask[95]) + if (changesMask[99]) { data << float(UiSpellHitModifier); } - if (changesMask[96]) + if (changesMask[100]) { data << int32(HomeRealmTimeOffset); } - if (changesMask[97]) + if (changesMask[101]) { data << float(ModPetHaste); } } - if (changesMask[98]) + if (changesMask[102]) { - if (changesMask[99]) + if (changesMask[103]) { data << int8(JailersTowerLevelMax); } - if (changesMask[100]) + if (changesMask[104]) { data << int8(JailersTowerLevel); } - if (changesMask[101]) + if (changesMask[105]) { data << uint8(LocalRegenFlags); } - if (changesMask[102]) + if (changesMask[106]) { data << uint8(AuraVision); } - if (changesMask[103]) + if (changesMask[107]) { data << uint8(NumBackpackSlots); } - if (changesMask[104]) + if (changesMask[108]) { data << int32(OverrideSpellsID); } - if (changesMask[105]) + if (changesMask[109]) { data << uint16(LootSpecID); } - if (changesMask[106]) + if (changesMask[110]) { data << uint32(OverrideZonePVPType); } - if (changesMask[107]) + if (changesMask[111]) { data << BnetAccount; } - if (changesMask[108]) + if (changesMask[112]) { data << uint64(GuildClubMemberID); } - if (changesMask[109]) + if (changesMask[113]) { data << int32(Honor); } - if (changesMask[110]) + if (changesMask[114]) { data << int32(HonorNextLevel); } - if (changesMask[111]) + if (changesMask[115]) { data << int32(PerksProgramCurrency); } - if (changesMask[112]) + if (changesMask[116]) { data << uint8(NumBankSlots); } - if (changesMask[116]) + if (changesMask[121]) { data << int32(UiChromieTimeExpansionID); } - if (changesMask[117]) + if (changesMask[122]) { data << int32(TransportServerTime); } - if (changesMask[118]) + if (changesMask[123]) { data << uint32(WeeklyRewardsPeriodSinceOrigin); } - if (changesMask[119]) + if (changesMask[124]) { data << int16(DEBUGSoulbindConduitRank); } - if (changesMask[121]) + if (changesMask[126]) { data << uint32(ActiveCombatTraitConfigID); } - if (changesMask[122]) + if (changesMask[127]) + { + data << int32(ItemUpgradeHighOnehandWeaponItemID); + } + if (changesMask[128]) + { + data << int32(ItemUpgradeHighFingerItemID); + } + if (changesMask[129]) + { + data << float(ItemUpgradeHighFingerWatermark); + } + if (changesMask[130]) + { + data << int32(ItemUpgradeHighTrinketItemID); + } + if (changesMask[131]) + { + data << float(ItemUpgradeHighTrinketWatermark); + } + if (changesMask[132]) { data << uint64(LootHistoryInstanceID); } } - if (changesMask[98]) + if (changesMask[134]) + { + if (changesMask[135]) + { + data << uint8(RequiredMountCapabilityFlags); + } + } + if (changesMask[102]) { data.WriteBits(QuestSession.has_value(), 1); - if (changesMask[113]) + data.WriteBits(PetStable.has_value(), 1); + data.FlushBits(); + if (changesMask[117]) { - data << FrozenPerksVendorItem; + ResearchHistory->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } - if (changesMask[114]) + if (changesMask[119]) { if (QuestSession.has_value()) { QuestSession->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } - if (changesMask[115]) + if (changesMask[118]) { - Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + data << FrozenPerksVendorItem; } if (changesMask[120]) { + Field_1410->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + if (changesMask[125]) + { data << DungeonScore; } + if (changesMask[133]) + { + if (PetStable.has_value()) + { + PetStable->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + } + } } - if (changesMask[123]) + if (changesMask[136]) { for (uint32 i = 0; i < 227; ++i) { - if (changesMask[124 + i]) + if (changesMask[137 + i]) { data << InvSlots[i]; } } } - if (changesMask[351]) + if (changesMask[364]) { for (uint32 i = 0; i < 240; ++i) { - if (changesMask[352 + i]) + if (changesMask[365 + i]) { data << uint64(ExploredZones[i]); } } } - if (changesMask[592]) + if (changesMask[605]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[593 + i]) + if (changesMask[606 + i]) { RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[595]) + if (changesMask[608]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[596 + i]) + if (changesMask[609 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[603 + i]) + if (changesMask[616 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[610 + i]) + if (changesMask[623 + i]) { data << float(ModDamageDonePercent[i]); } - if (changesMask[617 + i]) + if (changesMask[630 + i]) { data << float(ModHealingDonePercent[i]); } } } - if (changesMask[624]) + if (changesMask[637]) { for (uint32 i = 0; i < 3; ++i) { - if (changesMask[625 + i]) + if (changesMask[638 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[628 + i]) + if (changesMask[641 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[631]) + if (changesMask[644]) { for (uint32 i = 0; i < 12; ++i) { - if (changesMask[632 + i]) + if (changesMask[645 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[644 + i]) + if (changesMask[657 + i]) { data << int64(BuybackTimestamp[i]); } } } - if (changesMask[656]) + if (changesMask[669]) { for (uint32 i = 0; i < 32; ++i) { - if (changesMask[657 + i]) + if (changesMask[670 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[689]) + if (changesMask[702]) { for (uint32 i = 0; i < 4; ++i) { - if (changesMask[690 + i]) + if (changesMask[703 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[694]) + if (changesMask[707]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[695 + i]) + if (changesMask[708 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[697]) + if (changesMask[710]) { for (uint32 i = 0; i < 5; ++i) { - if (changesMask[698 + i]) + if (changesMask[711 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[703]) + if (changesMask[716]) { for (uint32 i = 0; i < 7; ++i) { - if (changesMask[704 + i]) + if (changesMask[717 + i]) { data << uint32(BankBagSlotFlags[i]); } } } - if (changesMask[711]) + if (changesMask[724]) { for (uint32 i = 0; i < 875; ++i) { - if (changesMask[712 + i]) + if (changesMask[725 + i]) { data << uint64(QuestCompleted[i]); } } } - if (changesMask[1587]) + if (changesMask[1600]) { for (uint32 i = 0; i < 17; ++i) { - if (changesMask[1588 + i]) + if (changesMask[1601 + i]) { data << float(ItemUpgradeHighWatermark[i]); } @@ -4946,10 +5314,10 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(SortBagsRightToLeft); Base::ClearChangesMask(InsertItemsLeftToRight); Base::ClearChangesMask(HasPerksProgramPendingReward); - Base::ClearChangesMask(Research); - Base::ClearChangesMask(KnownTitles); Base::ClearChangesMask(ResearchSites); Base::ClearChangesMask(ResearchSiteProgress); + Base::ClearChangesMask(Research); + Base::ClearChangesMask(KnownTitles); Base::ClearChangesMask(DailyQuestsCompleted); Base::ClearChangesMask(AvailableQuestLineXQuestIDs); Base::ClearChangesMask(Heirlooms); @@ -4967,10 +5335,12 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(MultiFloorExploration); Base::ClearChangesMask(RecipeProgression); Base::ClearChangesMask(ReplayedQuests); + Base::ClearChangesMask(TaskQuests); Base::ClearChangesMask(DisabledSpells); Base::ClearChangesMask(PersonalCraftingOrderCounts); Base::ClearChangesMask(CategoryCooldownMods); Base::ClearChangesMask(WeeklySpellUses); + Base::ClearChangesMask(TrackedCollectableSources); Base::ClearChangesMask(PvpInfo); Base::ClearChangesMask(CharacterRestrictions); Base::ClearChangesMask(TraitConfigs); @@ -5049,6 +5419,7 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(HonorNextLevel); Base::ClearChangesMask(PerksProgramCurrency); Base::ClearChangesMask(NumBankSlots); + Base::ClearChangesMask(ResearchHistory); Base::ClearChangesMask(FrozenPerksVendorItem); Base::ClearChangesMask(Field_1410); Base::ClearChangesMask(QuestSession); @@ -5058,7 +5429,14 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(DEBUGSoulbindConduitRank); Base::ClearChangesMask(DungeonScore); Base::ClearChangesMask(ActiveCombatTraitConfigID); + Base::ClearChangesMask(ItemUpgradeHighOnehandWeaponItemID); + Base::ClearChangesMask(ItemUpgradeHighFingerItemID); + Base::ClearChangesMask(ItemUpgradeHighFingerWatermark); + Base::ClearChangesMask(ItemUpgradeHighTrinketItemID); + Base::ClearChangesMask(ItemUpgradeHighTrinketWatermark); Base::ClearChangesMask(LootHistoryInstanceID); + Base::ClearChangesMask(PetStable); + Base::ClearChangesMask(RequiredMountCapabilityFlags); Base::ClearChangesMask(InvSlots); Base::ClearChangesMask(ExploredZones); Base::ClearChangesMask(RestInfo); @@ -5618,26 +5996,27 @@ void AreaTriggerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi data << uint32(TimeToTarget); data << uint32(TimeToTargetScale); data << uint32(TimeToTargetExtraScale); - data << uint32(Field_B0); + data << uint32(TimeToTargetPos); data << int32(SpellID); data << int32(SpellForVisuals); SpellVisual->WriteCreate(data, owner, receiver); data << float(BoundsRadius2D); data << uint32(DecalPropertiesID); data << CreatingEffectGUID; - data << uint32(Field_80); - data << uint32(Field_84); - data << Field_88; - data << Field_F8; + data << uint32(NumUnitsInside); + data << uint32(NumPlayersInside); + data << OrbitPathTarget; + data << RollPitchYaw; + data << int32(PositionalSoundKitID); ExtraScaleCurve->WriteCreate(data, owner, receiver); - data.WriteBit(Field_260); + data.FlushBits(); + data.WriteBit(HeightIgnoresScale); data.WriteBit(Field_261); - Field_C38->WriteCreate(data, owner, receiver); - Field_C54->WriteCreate(data, owner, receiver); - Field_C70->WriteCreate(data, owner, receiver); + OverrideMoveCurveX->WriteCreate(data, owner, receiver); + OverrideMoveCurveY->WriteCreate(data, owner, receiver); + OverrideMoveCurveZ->WriteCreate(data, owner, receiver); VisualAnim->WriteCreate(data, owner, receiver); data.FlushBits(); - data.FlushBits(); } void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const @@ -5647,13 +6026,13 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AreaTrigger const* owner, Player const* receiver) const { - data.WriteBits(changesMask.GetBlock(0), 25); + data.WriteBits(changesMask.GetBlock(0), 26); if (changesMask[0]) { if (changesMask[1]) { - data.WriteBit(Field_260); + data.WriteBit(HeightIgnoresScale); } if (changesMask[2]) { @@ -5689,7 +6068,7 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, boo } if (changesMask[13]) { - data << uint32(Field_B0); + data << uint32(TimeToTargetPos); } if (changesMask[14]) { @@ -5717,19 +6096,23 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, boo } if (changesMask[20]) { - data << uint32(Field_80); + data << uint32(NumUnitsInside); } if (changesMask[21]) { - data << uint32(Field_84); + data << uint32(NumPlayersInside); } if (changesMask[22]) { - data << Field_88; + data << OrbitPathTarget; } if (changesMask[23]) { - data << Field_F8; + data << RollPitchYaw; + } + if (changesMask[24]) + { + data << int32(PositionalSoundKitID); } if (changesMask[4]) { @@ -5737,17 +6120,17 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, boo } if (changesMask[5]) { - Field_C38->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + OverrideMoveCurveX->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } if (changesMask[6]) { - Field_C54->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + OverrideMoveCurveY->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } if (changesMask[7]) { - Field_C70->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); + OverrideMoveCurveZ->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } - if (changesMask[24]) + if (changesMask[25]) { VisualAnim->WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } @@ -5757,29 +6140,30 @@ void AreaTriggerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, boo void AreaTriggerData::ClearChangesMask() { - Base::ClearChangesMask(Field_260); + Base::ClearChangesMask(HeightIgnoresScale); Base::ClearChangesMask(Field_261); Base::ClearChangesMask(OverrideScaleCurve); Base::ClearChangesMask(ExtraScaleCurve); - Base::ClearChangesMask(Field_C38); - Base::ClearChangesMask(Field_C54); - Base::ClearChangesMask(Field_C70); + Base::ClearChangesMask(OverrideMoveCurveX); + Base::ClearChangesMask(OverrideMoveCurveY); + Base::ClearChangesMask(OverrideMoveCurveZ); Base::ClearChangesMask(Caster); Base::ClearChangesMask(Duration); Base::ClearChangesMask(TimeToTarget); Base::ClearChangesMask(TimeToTargetScale); Base::ClearChangesMask(TimeToTargetExtraScale); - Base::ClearChangesMask(Field_B0); + Base::ClearChangesMask(TimeToTargetPos); Base::ClearChangesMask(SpellID); Base::ClearChangesMask(SpellForVisuals); Base::ClearChangesMask(SpellVisual); Base::ClearChangesMask(BoundsRadius2D); Base::ClearChangesMask(DecalPropertiesID); Base::ClearChangesMask(CreatingEffectGUID); - Base::ClearChangesMask(Field_80); - Base::ClearChangesMask(Field_84); - Base::ClearChangesMask(Field_88); - Base::ClearChangesMask(Field_F8); + Base::ClearChangesMask(NumUnitsInside); + Base::ClearChangesMask(NumPlayersInside); + Base::ClearChangesMask(OrbitPathTarget); + Base::ClearChangesMask(RollPitchYaw); + Base::ClearChangesMask(PositionalSoundKitID); Base::ClearChangesMask(VisualAnim); _changesMask.ResetAll(); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 9af78fef00f..9d9c3df590f 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -85,7 +85,7 @@ struct ItemMod : public IsUpdateFieldStructureTag struct ItemModList : public IsUpdateFieldStructureTag, public HasChangesMask<1> { - DynamicUpdateField<UF::ItemMod, 0, 0> Values; + DynamicUpdateField<UF::ItemMod, -1, 0> Values; void WriteCreate(ByteBuffer& data, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Item const* owner, Player const* receiver) const; @@ -256,7 +256,7 @@ struct PassiveSpellHistory : public IsUpdateFieldStructureTag bool operator!=(PassiveSpellHistory const& right) const { return !(*this == right); } }; -struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<209> +struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<217> { UpdateField<std::vector<uint32>, 0, 1> StateWorldEffectIDs; DynamicUpdateField<UF::PassiveSpellHistory, 0, 2> PassiveSpells; @@ -351,52 +351,57 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<209> UpdateField<int32, 64, 87> AttackPowerModPos; UpdateField<int32, 64, 88> AttackPowerModNeg; UpdateField<float, 64, 89> AttackPowerMultiplier; - UpdateField<int32, 64, 90> RangedAttackPower; - UpdateField<int32, 64, 91> RangedAttackPowerModPos; - UpdateField<int32, 64, 92> RangedAttackPowerModNeg; - UpdateField<float, 64, 93> RangedAttackPowerMultiplier; - UpdateField<int32, 64, 94> MainHandWeaponAttackPower; - UpdateField<int32, 64, 95> OffHandWeaponAttackPower; - UpdateField<int32, 96, 97> RangedWeaponAttackPower; - UpdateField<int32, 96, 98> SetAttackSpeedAura; - UpdateField<float, 96, 99> Lifesteal; - UpdateField<float, 96, 100> MinRangedDamage; - UpdateField<float, 96, 101> MaxRangedDamage; - UpdateField<float, 96, 102> ManaCostMultiplier; - UpdateField<float, 96, 103> MaxHealthModifier; - UpdateField<float, 96, 104> HoverHeight; - UpdateField<int32, 96, 105> MinItemLevelCutoff; - UpdateField<int32, 96, 106> MinItemLevel; - UpdateField<int32, 96, 107> MaxItemLevel; - UpdateField<int32, 96, 108> AzeriteItemLevel; - UpdateField<int32, 96, 109> WildBattlePetLevel; - UpdateField<int32, 96, 110> BattlePetCompanionExperience; - UpdateField<uint32, 96, 111> BattlePetCompanionNameTimestamp; - UpdateField<int32, 96, 112> InteractSpellID; - UpdateField<int32, 96, 113> ScaleDuration; - UpdateField<int32, 96, 114> LooksLikeMountID; - UpdateField<int32, 96, 115> LooksLikeCreatureID; - UpdateField<int32, 96, 116> LookAtControllerID; - UpdateField<int32, 96, 117> PerksVendorItemID; - UpdateField<int32, 96, 118> TaxiNodesID; - UpdateField<ObjectGuid, 96, 119> GuildGUID; - UpdateField<int32, 96, 120> FlightCapabilityID; - UpdateField<uint32, 96, 121> SilencedSchoolMask; - UpdateField<ObjectGuid, 96, 122> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object - UpdateFieldArray<uint32, 2, 123, 124> NpcFlags; + UpdateField<int32, 64, 90> AttackPowerModSupport; + UpdateField<int32, 64, 91> RangedAttackPower; + UpdateField<int32, 64, 92> RangedAttackPowerModPos; + UpdateField<int32, 64, 93> RangedAttackPowerModNeg; + UpdateField<float, 64, 94> RangedAttackPowerMultiplier; + UpdateField<int32, 64, 95> RangedAttackPowerModSupport; + UpdateField<int32, 96, 97> MainHandWeaponAttackPower; + UpdateField<int32, 96, 98> OffHandWeaponAttackPower; + UpdateField<int32, 96, 99> RangedWeaponAttackPower; + UpdateField<int32, 96, 100> SetAttackSpeedAura; + UpdateField<float, 96, 101> Lifesteal; + UpdateField<float, 96, 102> MinRangedDamage; + UpdateField<float, 96, 103> MaxRangedDamage; + UpdateField<float, 96, 104> ManaCostMultiplier; + UpdateField<float, 96, 105> MaxHealthModifier; + UpdateField<float, 96, 106> HoverHeight; + UpdateField<int32, 96, 107> MinItemLevelCutoff; + UpdateField<int32, 96, 108> MinItemLevel; + UpdateField<int32, 96, 109> MaxItemLevel; + UpdateField<int32, 96, 110> AzeriteItemLevel; + UpdateField<int32, 96, 111> WildBattlePetLevel; + UpdateField<int32, 96, 112> BattlePetCompanionExperience; + UpdateField<uint32, 96, 113> BattlePetCompanionNameTimestamp; + UpdateField<int32, 96, 114> InteractSpellID; + UpdateField<int32, 96, 115> ScaleDuration; + UpdateField<int32, 96, 116> LooksLikeMountID; + UpdateField<int32, 96, 117> LooksLikeCreatureID; + UpdateField<int32, 96, 118> LookAtControllerID; + UpdateField<int32, 96, 119> PerksVendorItemID; + UpdateField<int32, 96, 120> TaxiNodesID; + UpdateField<ObjectGuid, 96, 121> GuildGUID; + UpdateField<int32, 96, 122> FlightCapabilityID; + UpdateField<float, 96, 123> GlideEventSpeedDivisor; // Movement speed gets divided by this value when evaluating what GlideEvents to use + UpdateField<uint32, 96, 124> SilencedSchoolMask; + UpdateField<uint32, 96, 125> CurrentAreaID; + UpdateField<ObjectGuid, 96, 126> NameplateAttachToGUID; // When set, nameplate of this unit will instead appear on that object + UpdateFieldArray<uint32, 2, 127, 128> NpcFlags; struct NpcFlagsTag : ViewerDependentValueTag<uint32> {}; - UpdateFieldArray<int32, 10, 126, 127> Power; - UpdateFieldArray<int32, 10, 126, 137> MaxPower; - UpdateFieldArray<float, 10, 126, 147> PowerRegenFlatModifier; - UpdateFieldArray<float, 10, 126, 157> PowerRegenInterruptedFlatModifier; - UpdateFieldArray<UF::VisibleItem, 3, 167, 168> VirtualItems; - UpdateFieldArray<uint32, 2, 171, 172> AttackRoundBaseTime; - UpdateFieldArray<int32, 4, 174, 175> Stats; - UpdateFieldArray<int32, 4, 174, 179> StatPosBuff; - UpdateFieldArray<int32, 4, 174, 183> StatNegBuff; - UpdateFieldArray<int32, 7, 187, 188> Resistances; - UpdateFieldArray<int32, 7, 187, 195> BonusResistanceMods; - UpdateFieldArray<int32, 7, 187, 202> ManaCostModifier; + UpdateFieldArray<int32, 10, 130, 131> Power; + UpdateFieldArray<int32, 10, 130, 141> MaxPower; + UpdateFieldArray<float, 10, 130, 151> PowerRegenFlatModifier; + UpdateFieldArray<float, 10, 130, 161> PowerRegenInterruptedFlatModifier; + UpdateFieldArray<UF::VisibleItem, 3, 171, 172> VirtualItems; + UpdateFieldArray<uint32, 2, 175, 176> AttackRoundBaseTime; + UpdateFieldArray<int32, 4, 178, 179> Stats; + UpdateFieldArray<int32, 4, 178, 183> StatPosBuff; + UpdateFieldArray<int32, 4, 178, 187> StatNegBuff; + UpdateFieldArray<int32, 4, 178, 191> StatSupportBuff; + UpdateFieldArray<int32, 7, 195, 196> Resistances; + UpdateFieldArray<int32, 7, 195, 203> BonusResistanceMods; + UpdateFieldArray<int32, 7, 195, 210> ManaCostModifier; void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; @@ -417,14 +422,13 @@ struct ChrCustomizationChoice : public IsUpdateFieldStructureTag bool operator!=(ChrCustomizationChoice const& right) const { return !(*this == right); } }; -struct QuestLog : public IsUpdateFieldStructureTag, public HasChangesMask<31> +struct QuestLog : public IsUpdateFieldStructureTag, public HasChangesMask<30> { - UpdateField<int32, 0, 1> QuestID; - UpdateField<uint32, 0, 2> StateFlags; - UpdateField<uint32, 0, 3> EndTime; - UpdateField<uint32, 0, 4> AcceptTime; - UpdateField<uint32, 0, 5> ObjectiveFlags; - UpdateFieldArray<int16, 24, 6, 7> ObjectiveProgress; + UpdateField<int64, 0, 1> EndTime; + UpdateField<int32, 0, 2> QuestID; + UpdateField<uint32, 0, 3> StateFlags; + UpdateField<uint32, 0, 4> ObjectiveFlags; + UpdateFieldArray<int16, 24, 5, 6> ObjectiveProgress; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; @@ -598,14 +602,24 @@ struct SpellFlatModByLabel : public IsUpdateFieldStructureTag bool operator!=(SpellFlatModByLabel const& right) const { return !(*this == right); } }; -struct Research : public IsUpdateFieldStructureTag +struct CompletedProject : public IsUpdateFieldStructureTag, public HasChangesMask<4> { - int16 ResearchProjectID; + UpdateField<uint32, 0, 1> ProjectID; + UpdateField<int64, 0, 2> FirstCompleted; + UpdateField<uint32, 0, 3> CompletionCount; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; - bool operator==(Research const& right) const; - bool operator!=(Research const& right) const { return !(*this == right); } + void ClearChangesMask(); +}; + +struct ResearchHistory : public IsUpdateFieldStructureTag, public HasChangesMask<2> +{ + DynamicUpdateField<UF::CompletedProject, 0, 1> CompletedProjects; + + void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; + void ClearChangesMask(); }; struct MawPower : public IsUpdateFieldStructureTag @@ -788,144 +802,189 @@ struct WeeklySpellUse : public IsUpdateFieldStructureTag bool operator!=(WeeklySpellUse const& right) const { return !(*this == right); } }; -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1605> +struct StablePetInfo : public IsUpdateFieldStructureTag, public HasChangesMask<8> +{ + UpdateField<uint32, 0, 1> PetSlot; + UpdateField<uint32, 0, 2> PetNumber; + UpdateField<uint32, 0, 3> CreatureID; + UpdateField<uint32, 0, 4> DisplayID; + UpdateField<uint32, 0, 5> ExperienceLevel; + UpdateField<std::string, 0, 6> Name; + UpdateField<uint8, 0, 7> PetFlags; + + void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; + void ClearChangesMask(); +}; + +struct StableInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3> +{ + DynamicUpdateField<UF::StablePetInfo, 0, 1> Pets; + UpdateField<ObjectGuid, 0, 2> StableMaster; + + void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; + void ClearChangesMask(); +}; + +struct Research : public IsUpdateFieldStructureTag +{ + int16 ResearchProjectID; + + void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; + bool operator==(Research const& right) const; + bool operator!=(Research const& right) const { return !(*this == right); } +}; + +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1618> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BankAutoSortDisabled; UpdateField<bool, 0, 3> SortBagsRightToLeft; UpdateField<bool, 0, 4> InsertItemsLeftToRight; UpdateField<bool, 0, 5> HasPerksProgramPendingReward; - UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 35, 36> Research; + UpdateFieldArray<DynamicUpdateFieldBase<uint16>, 1, 35, 36> ResearchSites; + UpdateFieldArray<DynamicUpdateFieldBase<uint32>, 1, 37, 38> ResearchSiteProgress; + UpdateFieldArray<DynamicUpdateFieldBase<UF::Research>, 1, 39, 40> Research; DynamicUpdateField<uint64, 0, 6> KnownTitles; - DynamicUpdateField<uint16, 0, 8> ResearchSites; - DynamicUpdateField<uint32, 0, 9> ResearchSiteProgress; - DynamicUpdateField<int32, 0, 10> DailyQuestsCompleted; - DynamicUpdateField<int32, 0, 11> AvailableQuestLineXQuestIDs; - DynamicUpdateField<int32, 0, 12> Heirlooms; - DynamicUpdateField<uint32, 0, 13> HeirloomFlags; - DynamicUpdateField<int32, 0, 14> Toys; - DynamicUpdateField<uint32, 0, 15> ToyFlags; - DynamicUpdateField<uint32, 0, 16> Transmog; - DynamicUpdateField<int32, 0, 17> ConditionalTransmog; - DynamicUpdateField<int32, 0, 18> SelfResSpells; - DynamicUpdateField<uint32, 0, 19> RuneforgePowers; - DynamicUpdateField<uint32, 0, 20> TransmogIllusions; - DynamicUpdateField<UF::SpellPctModByLabel, 0, 22> SpellPctModByLabel; - DynamicUpdateField<UF::SpellFlatModByLabel, 0, 23> SpellFlatModByLabel; - DynamicUpdateField<UF::MawPower, 0, 24> MawPowers; - DynamicUpdateField<UF::MultiFloorExplore, 0, 25> MultiFloorExploration; - DynamicUpdateField<UF::RecipeProgressionInfo, 0, 26> RecipeProgression; - DynamicUpdateField<UF::ReplayedQuest, 0, 27> ReplayedQuests; - DynamicUpdateField<int32, 0, 28> DisabledSpells; - DynamicUpdateField<UF::PersonalCraftingOrderCount, 0, 31> PersonalCraftingOrderCounts; - DynamicUpdateField<UF::CategoryCooldownMod, 32, 33> CategoryCooldownMods; - DynamicUpdateField<UF::WeeklySpellUse, 32, 34> WeeklySpellUses; + DynamicUpdateField<int32, 0, 8> DailyQuestsCompleted; + DynamicUpdateField<int32, 0, 9> AvailableQuestLineXQuestIDs; + DynamicUpdateField<int32, 0, 10> Heirlooms; + DynamicUpdateField<uint32, 0, 11> HeirloomFlags; + DynamicUpdateField<int32, 0, 12> Toys; + DynamicUpdateField<uint32, 0, 13> ToyFlags; + DynamicUpdateField<uint32, 0, 14> Transmog; + DynamicUpdateField<int32, 0, 15> ConditionalTransmog; + DynamicUpdateField<int32, 0, 16> SelfResSpells; + DynamicUpdateField<uint32, 0, 17> RuneforgePowers; + DynamicUpdateField<uint32, 0, 18> TransmogIllusions; + DynamicUpdateField<UF::SpellPctModByLabel, 0, 20> SpellPctModByLabel; + DynamicUpdateField<UF::SpellFlatModByLabel, 0, 21> SpellFlatModByLabel; + DynamicUpdateField<UF::MawPower, 0, 22> MawPowers; + DynamicUpdateField<UF::MultiFloorExplore, 0, 23> MultiFloorExploration; + DynamicUpdateField<UF::RecipeProgressionInfo, 0, 24> RecipeProgression; + DynamicUpdateField<UF::ReplayedQuest, 0, 25> ReplayedQuests; + DynamicUpdateField<UF::QuestLog, 0, 26> TaskQuests; + DynamicUpdateField<int32, 0, 27> DisabledSpells; + DynamicUpdateField<UF::PersonalCraftingOrderCount, 0, 30> PersonalCraftingOrderCounts; + DynamicUpdateField<UF::CategoryCooldownMod, 0, 31> CategoryCooldownMods; + DynamicUpdateField<UF::WeeklySpellUse, 32, 33> WeeklySpellUses; + DynamicUpdateField<int64, 32, 34> TrackedCollectableSources; DynamicUpdateField<UF::PVPInfo, 0, 7> PvpInfo; - DynamicUpdateField<UF::CharacterRestriction, 0, 21> CharacterRestrictions; - DynamicUpdateField<UF::TraitConfig, 0, 29> TraitConfigs; - DynamicUpdateField<UF::CraftingOrder, 0, 30> CraftingOrders; - UpdateField<ObjectGuid, 32, 37> FarsightObject; - UpdateField<ObjectGuid, 32, 38> SummonedBattlePetGUID; - UpdateField<uint64, 32, 39> Coinage; - UpdateField<int32, 32, 40> XP; - UpdateField<int32, 32, 41> NextLevelXP; - UpdateField<int32, 32, 42> TrialXP; - UpdateField<UF::SkillInfo, 32, 43> Skill; - UpdateField<int32, 32, 44> CharacterPoints; - UpdateField<int32, 32, 45> MaxTalentTiers; - UpdateField<uint32, 32, 46> TrackCreatureMask; - UpdateField<float, 32, 47> MainhandExpertise; - UpdateField<float, 32, 48> OffhandExpertise; - UpdateField<float, 32, 49> RangedExpertise; - UpdateField<float, 32, 50> CombatRatingExpertise; - UpdateField<float, 32, 51> BlockPercentage; - UpdateField<float, 32, 52> DodgePercentage; - UpdateField<float, 32, 53> DodgePercentageFromAttribute; - UpdateField<float, 32, 54> ParryPercentage; - UpdateField<float, 32, 55> ParryPercentageFromAttribute; - UpdateField<float, 32, 56> CritPercentage; - UpdateField<float, 32, 57> RangedCritPercentage; - UpdateField<float, 32, 58> OffhandCritPercentage; - UpdateField<float, 32, 59> SpellCritPercentage; - UpdateField<int32, 32, 60> ShieldBlock; - UpdateField<float, 32, 61> ShieldBlockCritPercentage; - UpdateField<float, 32, 62> Mastery; - UpdateField<float, 32, 63> Speed; - UpdateField<float, 32, 64> Avoidance; - UpdateField<float, 32, 65> Sturdiness; - UpdateField<int32, 66, 67> Versatility; - UpdateField<float, 66, 68> VersatilityBonus; - UpdateField<float, 66, 69> PvpPowerDamage; - UpdateField<float, 66, 70> PvpPowerHealing; - UpdateField<int32, 66, 71> ModHealingDonePos; - UpdateField<float, 66, 72> ModHealingPercent; - UpdateField<float, 66, 73> ModPeriodicHealingDonePercent; - UpdateField<float, 66, 74> ModSpellPowerPercent; - UpdateField<float, 66, 75> ModResiliencePercent; - UpdateField<float, 66, 76> OverrideSpellPowerByAPPercent; - UpdateField<float, 66, 77> OverrideAPBySpellPowerPercent; - UpdateField<int32, 66, 78> ModTargetResistance; - UpdateField<int32, 66, 79> ModTargetPhysicalResistance; - UpdateField<uint32, 66, 80> LocalFlags; - UpdateField<uint8, 66, 81> GrantableLevels; - UpdateField<uint8, 66, 82> MultiActionBars; - UpdateField<uint8, 66, 83> LifetimeMaxRank; - UpdateField<uint8, 66, 84> NumRespecs; - UpdateField<uint32, 66, 85> PvpMedals; - UpdateField<uint16, 66, 86> TodayHonorableKills; - UpdateField<uint16, 66, 87> YesterdayHonorableKills; - UpdateField<uint32, 66, 88> LifetimeHonorableKills; - UpdateField<int32, 66, 89> WatchedFactionIndex; - UpdateField<int32, 66, 90> MaxLevel; - UpdateField<int32, 66, 91> ScalingPlayerLevelDelta; - UpdateField<int32, 66, 92> MaxCreatureScalingLevel; - UpdateField<int32, 66, 93> PetSpellPower; - UpdateField<float, 66, 94> UiHitModifier; - UpdateField<float, 66, 95> UiSpellHitModifier; - UpdateField<int32, 66, 96> HomeRealmTimeOffset; - UpdateField<float, 66, 97> ModPetHaste; - UpdateField<int8, 98, 99> JailersTowerLevelMax; - UpdateField<int8, 98, 100> JailersTowerLevel; - UpdateField<uint8, 98, 101> LocalRegenFlags; - UpdateField<uint8, 98, 102> AuraVision; - UpdateField<uint8, 98, 103> NumBackpackSlots; - UpdateField<int32, 98, 104> OverrideSpellsID; - UpdateField<uint16, 98, 105> LootSpecID; - UpdateField<uint32, 98, 106> OverrideZonePVPType; - UpdateField<ObjectGuid, 98, 107> BnetAccount; - UpdateField<uint64, 98, 108> GuildClubMemberID; - UpdateField<int32, 98, 109> Honor; - UpdateField<int32, 98, 110> HonorNextLevel; - UpdateField<int32, 98, 111> PerksProgramCurrency; - UpdateField<uint8, 98, 112> NumBankSlots; - UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 98, 113> FrozenPerksVendorItem; - UpdateField<UF::ActivePlayerUnk901, 98, 115> Field_1410; - OptionalUpdateField<UF::QuestSession, 98, 114> QuestSession; - UpdateField<int32, 98, 116> UiChromieTimeExpansionID; - UpdateField<int32, 98, 117> TransportServerTime; - UpdateField<uint32, 98, 118> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin - UpdateField<int16, 98, 119> DEBUGSoulbindConduitRank; - UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 98, 120> DungeonScore; - UpdateField<uint32, 98, 121> ActiveCombatTraitConfigID; - UpdateField<uint64, 98, 122> LootHistoryInstanceID; - UpdateFieldArray<ObjectGuid, 227, 123, 124> InvSlots; - UpdateFieldArray<uint64, 240, 351, 352> ExploredZones; - UpdateFieldArray<UF::RestInfo, 2, 592, 593> RestInfo; - UpdateFieldArray<int32, 7, 595, 596> ModDamageDonePos; - UpdateFieldArray<int32, 7, 595, 603> ModDamageDoneNeg; - UpdateFieldArray<float, 7, 595, 610> ModDamageDonePercent; - UpdateFieldArray<float, 7, 595, 617> ModHealingDonePercent; - UpdateFieldArray<float, 3, 624, 625> WeaponDmgMultipliers; - UpdateFieldArray<float, 3, 624, 628> WeaponAtkSpeedMultipliers; - UpdateFieldArray<uint32, 12, 631, 632> BuybackPrice; - UpdateFieldArray<int64, 12, 631, 644> BuybackTimestamp; - UpdateFieldArray<int32, 32, 656, 657> CombatRatings; - UpdateFieldArray<uint32, 4, 689, 690> NoReagentCostMask; - UpdateFieldArray<int32, 2, 694, 695> ProfessionSkillLine; - UpdateFieldArray<uint32, 5, 697, 698> BagSlotFlags; - UpdateFieldArray<uint32, 7, 703, 704> BankBagSlotFlags; - UpdateFieldArray<uint64, 875, 711, 712> QuestCompleted; - UpdateFieldArray<float, 17, 1587, 1588> ItemUpgradeHighWatermark; + DynamicUpdateField<UF::CharacterRestriction, 0, 19> CharacterRestrictions; + DynamicUpdateField<UF::TraitConfig, 0, 28> TraitConfigs; + DynamicUpdateField<UF::CraftingOrder, 0, 29> CraftingOrders; + UpdateField<ObjectGuid, 32, 41> FarsightObject; + UpdateField<ObjectGuid, 32, 42> SummonedBattlePetGUID; + UpdateField<uint64, 32, 43> Coinage; + UpdateField<int32, 32, 44> XP; + UpdateField<int32, 32, 45> NextLevelXP; + UpdateField<int32, 32, 46> TrialXP; + UpdateField<UF::SkillInfo, 32, 47> Skill; + UpdateField<int32, 32, 48> CharacterPoints; + UpdateField<int32, 32, 49> MaxTalentTiers; + UpdateField<uint32, 32, 50> TrackCreatureMask; + UpdateField<float, 32, 51> MainhandExpertise; + UpdateField<float, 32, 52> OffhandExpertise; + UpdateField<float, 32, 53> RangedExpertise; + UpdateField<float, 32, 54> CombatRatingExpertise; + UpdateField<float, 32, 55> BlockPercentage; + UpdateField<float, 32, 56> DodgePercentage; + UpdateField<float, 32, 57> DodgePercentageFromAttribute; + UpdateField<float, 32, 58> ParryPercentage; + UpdateField<float, 32, 59> ParryPercentageFromAttribute; + UpdateField<float, 32, 60> CritPercentage; + UpdateField<float, 32, 61> RangedCritPercentage; + UpdateField<float, 32, 62> OffhandCritPercentage; + UpdateField<float, 32, 63> SpellCritPercentage; + UpdateField<int32, 32, 64> ShieldBlock; + UpdateField<float, 32, 65> ShieldBlockCritPercentage; + UpdateField<float, 32, 66> Mastery; + UpdateField<float, 32, 67> Speed; + UpdateField<float, 32, 68> Avoidance; + UpdateField<float, 32, 69> Sturdiness; + UpdateField<int32, 70, 71> Versatility; + UpdateField<float, 70, 72> VersatilityBonus; + UpdateField<float, 70, 73> PvpPowerDamage; + UpdateField<float, 70, 74> PvpPowerHealing; + UpdateField<int32, 70, 75> ModHealingDonePos; + UpdateField<float, 70, 76> ModHealingPercent; + UpdateField<float, 70, 77> ModPeriodicHealingDonePercent; + UpdateField<float, 70, 78> ModSpellPowerPercent; + UpdateField<float, 70, 79> ModResiliencePercent; + UpdateField<float, 70, 80> OverrideSpellPowerByAPPercent; + UpdateField<float, 70, 81> OverrideAPBySpellPowerPercent; + UpdateField<int32, 70, 82> ModTargetResistance; + UpdateField<int32, 70, 83> ModTargetPhysicalResistance; + UpdateField<uint32, 70, 84> LocalFlags; + UpdateField<uint8, 70, 85> GrantableLevels; + UpdateField<uint8, 70, 86> MultiActionBars; + UpdateField<uint8, 70, 87> LifetimeMaxRank; + UpdateField<uint8, 70, 88> NumRespecs; + UpdateField<uint32, 70, 89> PvpMedals; + UpdateField<uint16, 70, 90> TodayHonorableKills; + UpdateField<uint16, 70, 91> YesterdayHonorableKills; + UpdateField<uint32, 70, 92> LifetimeHonorableKills; + UpdateField<int32, 70, 93> WatchedFactionIndex; + UpdateField<int32, 70, 94> MaxLevel; + UpdateField<int32, 70, 95> ScalingPlayerLevelDelta; + UpdateField<int32, 70, 96> MaxCreatureScalingLevel; + UpdateField<int32, 70, 97> PetSpellPower; + UpdateField<float, 70, 98> UiHitModifier; + UpdateField<float, 70, 99> UiSpellHitModifier; + UpdateField<int32, 70, 100> HomeRealmTimeOffset; + UpdateField<float, 70, 101> ModPetHaste; + UpdateField<int8, 102, 103> JailersTowerLevelMax; + UpdateField<int8, 102, 104> JailersTowerLevel; + UpdateField<uint8, 102, 105> LocalRegenFlags; + UpdateField<uint8, 102, 106> AuraVision; + UpdateField<uint8, 102, 107> NumBackpackSlots; + UpdateField<int32, 102, 108> OverrideSpellsID; + UpdateField<uint16, 102, 109> LootSpecID; + UpdateField<uint32, 102, 110> OverrideZonePVPType; + UpdateField<ObjectGuid, 102, 111> BnetAccount; + UpdateField<uint64, 102, 112> GuildClubMemberID; + UpdateField<int32, 102, 113> Honor; + UpdateField<int32, 102, 114> HonorNextLevel; + UpdateField<int32, 102, 115> PerksProgramCurrency; + UpdateField<uint8, 102, 116> NumBankSlots; + UpdateField<UF::ResearchHistory, 102, 117> ResearchHistory; + UpdateField<WorldPackets::PerksProgram::PerksVendorItem, 102, 118> FrozenPerksVendorItem; + UpdateField<UF::ActivePlayerUnk901, 102, 120> Field_1410; + OptionalUpdateField<UF::QuestSession, 102, 119> QuestSession; + UpdateField<int32, 102, 121> UiChromieTimeExpansionID; + UpdateField<int32, 102, 122> TransportServerTime; + UpdateField<uint32, 102, 123> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin + UpdateField<int16, 102, 124> DEBUGSoulbindConduitRank; + UpdateField<WorldPackets::MythicPlus::DungeonScoreData, 102, 125> DungeonScore; + UpdateField<uint32, 102, 126> ActiveCombatTraitConfigID; + UpdateField<int32, 102, 127> ItemUpgradeHighOnehandWeaponItemID; + UpdateField<int32, 102, 128> ItemUpgradeHighFingerItemID; + UpdateField<float, 102, 129> ItemUpgradeHighFingerWatermark; + UpdateField<int32, 102, 130> ItemUpgradeHighTrinketItemID; + UpdateField<float, 102, 131> ItemUpgradeHighTrinketWatermark; + UpdateField<uint64, 102, 132> LootHistoryInstanceID; + OptionalUpdateField<UF::StableInfo, 102, 133> PetStable; + UpdateField<uint8, 134, 135> RequiredMountCapabilityFlags; + UpdateFieldArray<ObjectGuid, 227, 136, 137> InvSlots; + UpdateFieldArray<uint64, 240, 364, 365> ExploredZones; + UpdateFieldArray<UF::RestInfo, 2, 605, 606> RestInfo; + UpdateFieldArray<int32, 7, 608, 609> ModDamageDonePos; + UpdateFieldArray<int32, 7, 608, 616> ModDamageDoneNeg; + UpdateFieldArray<float, 7, 608, 623> ModDamageDonePercent; + UpdateFieldArray<float, 7, 608, 630> ModHealingDonePercent; + UpdateFieldArray<float, 3, 637, 638> WeaponDmgMultipliers; + UpdateFieldArray<float, 3, 637, 641> WeaponAtkSpeedMultipliers; + UpdateFieldArray<uint32, 12, 644, 645> BuybackPrice; + UpdateFieldArray<int64, 12, 644, 657> BuybackTimestamp; + UpdateFieldArray<int32, 32, 669, 670> CombatRatings; + UpdateFieldArray<uint32, 4, 702, 703> NoReagentCostMask; + UpdateFieldArray<int32, 2, 707, 708> ProfessionSkillLine; + UpdateFieldArray<uint32, 5, 710, 711> BagSlotFlags; + UpdateFieldArray<uint32, 7, 716, 717> BankBagSlotFlags; + UpdateFieldArray<uint64, 875, 724, 725> QuestCompleted; + UpdateFieldArray<float, 17, 1600, 1601> 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; @@ -1029,32 +1088,33 @@ struct VisualAnim : public IsUpdateFieldStructureTag, public HasChangesMask<5> void ClearChangesMask(); }; -struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<25> +struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<26> { - UpdateField<bool, 0, 1> Field_260; + UpdateField<bool, 0, 1> HeightIgnoresScale; UpdateField<bool, 0, 2> Field_261; UpdateField<UF::ScaleCurve, 0, 3> OverrideScaleCurve; UpdateField<UF::ScaleCurve, 0, 4> ExtraScaleCurve; - UpdateField<UF::ScaleCurve, 0, 5> Field_C38; - UpdateField<UF::ScaleCurve, 0, 6> Field_C54; - UpdateField<UF::ScaleCurve, 0, 7> Field_C70; + UpdateField<UF::ScaleCurve, 0, 5> OverrideMoveCurveX; + UpdateField<UF::ScaleCurve, 0, 6> OverrideMoveCurveY; + UpdateField<UF::ScaleCurve, 0, 7> OverrideMoveCurveZ; UpdateField<ObjectGuid, 0, 8> Caster; UpdateField<uint32, 0, 9> Duration; UpdateField<uint32, 0, 10> TimeToTarget; UpdateField<uint32, 0, 11> TimeToTargetScale; UpdateField<uint32, 0, 12> TimeToTargetExtraScale; - UpdateField<uint32, 0, 13> Field_B0; + UpdateField<uint32, 0, 13> TimeToTargetPos; // Linked to m_overrideMoveCurve UpdateField<int32, 0, 14> SpellID; UpdateField<int32, 0, 15> SpellForVisuals; UpdateField<UF::SpellCastVisual, 0, 16> SpellVisual; UpdateField<float, 0, 17> BoundsRadius2D; UpdateField<uint32, 0, 18> DecalPropertiesID; UpdateField<ObjectGuid, 0, 19> CreatingEffectGUID; - UpdateField<uint32, 0, 20> Field_80; - UpdateField<uint32, 0, 21> Field_84; - UpdateField<ObjectGuid, 0, 22> Field_88; - UpdateField<TaggedPosition<Position::XYZ>, 0, 23> Field_F8; - UpdateField<UF::VisualAnim, 0, 24> VisualAnim; + UpdateField<uint32, 0, 20> NumUnitsInside; + UpdateField<uint32, 0, 21> NumPlayersInside; // When not 0 this causes SpellVisualEvent 14 to trigger, playing alternate visuals, typically used by "SOAK THIS" areatriggers + UpdateField<ObjectGuid, 0, 22> OrbitPathTarget; + UpdateField<TaggedPosition<Position::XYZ>, 0, 23> RollPitchYaw; + UpdateField<int32, 0, 24> PositionalSoundKitID; + UpdateField<UF::VisualAnim, 0, 25> VisualAnim; void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const; diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h index 0a671d6d549..a03ab823bb4 100644 --- a/src/server/game/Entities/Pet/Pet.h +++ b/src/server/game/Entities/Pet/Pet.h @@ -30,12 +30,6 @@ struct PetSpell PetSpellType type; }; -enum PetStableinfo -{ - PET_STABLE_ACTIVE = 1, - PET_STABLE_INACTIVE = 2 -}; - typedef std::unordered_map<uint32, PetSpell> PetSpellMap; typedef std::vector<uint32> AutoSpellList; diff --git a/src/server/game/Entities/Pet/PetDefines.h b/src/server/game/Entities/Pet/PetDefines.h index 607efbf59df..e926cf64966 100644 --- a/src/server/game/Entities/Pet/PetDefines.h +++ b/src/server/game/Entities/Pet/PetDefines.h @@ -58,6 +58,12 @@ constexpr bool IsStabledPetSlot(PetSaveMode slot) return slot >= PET_SAVE_FIRST_STABLE_SLOT && slot < PET_SAVE_LAST_STABLE_SLOT; } +enum PetStableFlags : uint8 +{ + PET_STABLE_ACTIVE = 0x1, + PET_STABLE_INACTIVE = 0x2 +}; + enum PetSpellState { PETSPELL_UNCHANGED = 0, @@ -110,6 +116,17 @@ enum class PetTameResult : uint8 EliteTooHighLevel = 14 }; +enum class StableResult : uint8 +{ + NotEnoughMoney = 1, // "you don't have enough money" + InvalidSlot = 3, // "That slot is locked" + StableSuccess = 8, // stable success + UnstableSuccess = 9, // unstable/swap success + BuySlotSuccess = 10, // buy slot success + CantControlExotic = 11, // "you are unable to control exotic creatures" + InternalError = 12, // "Internal pet error" +}; + constexpr uint32 CALL_PET_SPELL_ID = 883; constexpr uint32 PET_SUMMONING_DISORIENTATION = 32752; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e5476b4a10e..0bdd521593b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14133,7 +14133,8 @@ void Player::OnGossipSelect(WorldObject* source, int32 gossipOptionId, uint32 me SendRespecWipeConfirm(guid, sWorld->getBoolConfig(CONFIG_NO_RESET_TALENT_COST) ? 0 : GetNextResetTalentsCost(), SPEC_RESET_TALENTS); break; case GossipOptionNpc::Stablemaster: - GetSession()->SendStablePet(guid); + SetStableMaster(guid); + handled = false; break; case GossipOptionNpc::PetSpecializationMaster: PlayerTalkClass->SendCloseGossip(); @@ -14891,7 +14892,7 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) } SetQuestSlotEndTime(log_slot, endTime); - SetQuestSlotAcceptTime(log_slot, GameTime::GetGameTime()); + questStatusData.AcceptTime = GameTime::GetGameTime(); m_QuestStatusSave[quest_id] = QUEST_DEFAULT_SAVE_TYPE; @@ -16131,7 +16132,9 @@ QuestGiverStatus Player::GetQuestDialogStatus(Object const* questgiver) const switch (GetQuestStatus(questId)) { case QUEST_STATUS_COMPLETE: - if (quest->GetQuestTag() == QuestTagType::CovenantCalling) + if (quest->IsImportant()) + result |= quest->HasFlag(QUEST_FLAGS_HIDE_REWARD_POI) ? QuestGiverStatus::ImportantQuestRewardCompleteNoPOI : QuestGiverStatus::ImportantQuestRewardCompletePOI; + else if (quest->GetQuestTag() == QuestTagType::CovenantCalling) result |= quest->HasFlag(QUEST_FLAGS_HIDE_REWARD_POI) ? QuestGiverStatus::CovenantCallingRewardCompleteNoPOI : QuestGiverStatus::CovenantCallingRewardCompletePOI; else if (quest->HasFlagEx(QUEST_FLAGS_EX_LEGENDARY)) result |= quest->HasFlag(QUEST_FLAGS_HIDE_REWARD_POI) ? QuestGiverStatus::LegendaryRewardCompleteNoPOI : QuestGiverStatus::LegendaryRewardCompletePOI; @@ -16139,8 +16142,12 @@ QuestGiverStatus Player::GetQuestDialogStatus(Object const* questgiver) const result |= quest->HasFlag(QUEST_FLAGS_HIDE_REWARD_POI) ? QuestGiverStatus::RewardCompleteNoPOI : QuestGiverStatus::RewardCompletePOI; break; case QUEST_STATUS_INCOMPLETE: - if (quest->GetQuestTag() == QuestTagType::CovenantCalling) + if (quest->IsImportant()) + result |= QuestGiverStatus::ImportantQuestReward; + else if (quest->GetQuestTag() == QuestTagType::CovenantCalling) result |= QuestGiverStatus::CovenantCallingReward; + else if (quest->HasFlagEx(QUEST_FLAGS_EX_LEGENDARY)) + result |= QuestGiverStatus::LegendaryReward; else result |= QuestGiverStatus::Reward; break; @@ -16172,22 +16179,20 @@ QuestGiverStatus Player::GetQuestDialogStatus(Object const* questgiver) const { if (SatisfyQuestLevel(quest, false)) { - if (GetLevel() <= (GetQuestLevel(quest) + sWorld->getIntConfig(CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF))) - { - if (quest->GetQuestTag() == QuestTagType::CovenantCalling) - result |= QuestGiverStatus::CovenantCallingQuest; - else if (quest->HasFlagEx(QUEST_FLAGS_EX_LEGENDARY)) - result |= QuestGiverStatus::LegendaryQuest; - else if (quest->IsDaily()) - result |= QuestGiverStatus::DailyQuest; - else - result |= QuestGiverStatus::Quest; - } + bool isTrivial = GetLevel() <= (GetQuestLevel(quest) + sWorld->getIntConfig(CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF)); + if (quest->IsImportant()) + result |= isTrivial ? QuestGiverStatus::TrivialImportantQuest : QuestGiverStatus::ImportantQuest; + else if (quest->GetQuestTag() == QuestTagType::CovenantCalling) + result |= isTrivial ? QuestGiverStatus::TrivialCovenantCallingQuest : QuestGiverStatus::CovenantCallingQuest; + else if (quest->HasFlagEx(QUEST_FLAGS_EX_LEGENDARY)) + result |= isTrivial ? QuestGiverStatus::TrivialLegendaryQuest : QuestGiverStatus::LegendaryQuest; else if (quest->IsDaily()) - result |= QuestGiverStatus::TrivialDailyQuest; + result |= isTrivial ? QuestGiverStatus::TrivialDailyQuest : QuestGiverStatus::DailyQuest; else - result |= QuestGiverStatus::Trivial; + result |= isTrivial ? QuestGiverStatus::Trivial : QuestGiverStatus::Quest; } + else if (quest->HasFlagEx(QUEST_FLAGS_EX_LEGENDARY)) + result |= QuestGiverStatus::FutureLegendaryQuest; else result |= QuestGiverStatus::Future; } @@ -16264,16 +16269,11 @@ uint16 Player::GetQuestSlotCounter(uint16 slot, uint8 counter) const return 0; } -uint32 Player::GetQuestSlotEndTime(uint16 slot) const +int64 Player::GetQuestSlotEndTime(uint16 slot) const { return m_playerData->QuestLog[slot].EndTime; } -uint32 Player::GetQuestSlotAcceptTime(uint16 slot) const -{ - return m_playerData->QuestLog[slot].AcceptTime; -} - bool Player::GetQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex) const { if (objectiveIndex < MAX_QUEST_COUNTS) @@ -16309,7 +16309,6 @@ void Player::SetQuestSlot(uint16 slot, uint32 quest_id) SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::QuestID), quest_id); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::StateFlags), 0); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::EndTime), 0); - SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::AcceptTime), 0); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::ObjectiveFlags), 0); for (uint32 i = 0; i < MAX_QUEST_COUNTS; ++i) SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::ObjectiveProgress, i), 0); @@ -16346,13 +16345,6 @@ void Player::SetQuestSlotEndTime(uint16 slot, time_t endTime) .ModifyValue(&UF::QuestLog::EndTime), uint32(endTime)); } -void Player::SetQuestSlotAcceptTime(uint16 slot, time_t acceptTime) -{ - SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData) - .ModifyValue(&UF::PlayerData::QuestLog, slot) - .ModifyValue(&UF::QuestLog::AcceptTime), uint32(acceptTime)); -} - void Player::SetQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData) @@ -19030,7 +19022,7 @@ void Player::_LoadQuestStatus(PreparedQueryResult result) SetQuestSlot(slot, quest_id); SetQuestSlotEndTime(slot, endTime); - SetQuestSlotAcceptTime(slot, acceptTime); + questStatusData.AcceptTime = acceptTime; if (questStatusData.Status == QUEST_STATUS_COMPLETE) SetQuestSlotState(slot, QUEST_STATE_COMPLETE); @@ -20490,7 +20482,7 @@ void Player::_SaveQuestStatus(CharacterDatabaseTransaction trans) stmt->setUInt32(1, statusItr->first); stmt->setUInt8(2, uint8(qData.Status)); stmt->setBool(3, qData.Explored); - stmt->setInt64(4, GetQuestSlotAcceptTime(qData.Slot)); + stmt->setInt64(4, qData.AcceptTime); stmt->setInt64(5, GetQuestSlotEndTime(qData.Slot)); trans->Append(stmt); @@ -21075,6 +21067,19 @@ bool Player::IsLockedToDungeonEncounter(uint32 dungeonEncounterId) const return (instanceLock->GetData()->CompletedEncountersMask & (1u << dungeonEncounter->Bit)) != 0; } +bool Player::IsLockedToDungeonEncounter(uint32 dungeonEncounterId, Difficulty difficulty) const +{ + DungeonEncounterEntry const* dungeonEncounter = sDungeonEncounterStore.LookupEntry(dungeonEncounterId); + if (!dungeonEncounter) + return false; + + InstanceLock const* instanceLock = sInstanceLockMgr.FindActiveInstanceLock(GetGUID(), { uint32(dungeonEncounter->MapID), difficulty }); + if (!instanceLock) + return false; + + return (instanceLock->GetData()->CompletedEncountersMask & (1u << dungeonEncounter->Bit)) != 0; +} + /*********************************************************/ /*** Update timers ***/ /*********************************************************/ @@ -21243,8 +21248,24 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent) PetStable::PetInfo const* currentPet = m_petStable->GetCurrentPet(); ASSERT(currentPet && currentPet->PetNumber == pet->GetCharmInfo()->GetPetNumber()); - if (mode == PET_SAVE_NOT_IN_SLOT || mode == PET_SAVE_AS_DELETED) + if (mode == PET_SAVE_NOT_IN_SLOT) m_petStable->CurrentPetIndex.reset(); + else if (mode == PET_SAVE_AS_DELETED) + { + if (m_activePlayerData->PetStable.has_value()) + { + int32 ufIndex = m_activePlayerData->PetStable->Pets.FindIndexIf([currentPet](UF::StablePetInfo const& p) { return p.PetNumber == currentPet->PetNumber; }); + if (ufIndex >= 0) + RemoveDynamicUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::PetStable, 0) + .ModifyValue(&UF::StableInfo::Pets), ufIndex); + } + + if (Optional<uint32> petIndex = m_petStable->GetCurrentActivePetIndex()) + m_petStable->ActivePets[*petIndex].reset(); + + m_petStable->CurrentPetIndex.reset(); + } // else if (stable slots) handled in opcode handlers due to required swaps // else (current pet) doesnt need to do anything @@ -28041,6 +28062,196 @@ PetStable& Player::GetOrInitPetStable() return *m_petStable; } +void Player::AddPetToUpdateFields(PetStable::PetInfo const& pet, PetSaveMode slot, PetStableFlags flags) +{ + auto ufStable = m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::PetStable, 0); + auto ufPet = AddDynamicUpdateFieldValue(ufStable.ModifyValue(&UF::StableInfo::Pets)); + ufPet.ModifyValue(&UF::StablePetInfo::PetSlot).SetValue(slot); + ufPet.ModifyValue(&UF::StablePetInfo::PetNumber).SetValue(pet.PetNumber); + ufPet.ModifyValue(&UF::StablePetInfo::CreatureID).SetValue(pet.CreatureId); + ufPet.ModifyValue(&UF::StablePetInfo::DisplayID).SetValue(pet.DisplayId); + ufPet.ModifyValue(&UF::StablePetInfo::ExperienceLevel).SetValue(pet.Level); + ufPet.ModifyValue(&UF::StablePetInfo::PetFlags).SetValue(flags); + ufPet.ModifyValue(&UF::StablePetInfo::Name).SetValue(pet.Name); +} + +void Player::SetPetSlot(uint32 petNumber, PetSaveMode dstPetSlot) +{ + RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting); + + WorldSession* sess = GetSession(); + PetStable* petStable = GetPetStable(); + if (!petStable) + { + sess->SendPetStableResult(StableResult::InternalError); + return; + } + + auto [srcPet, srcPetSlot] = Pet::GetLoadPetInfo(*petStable, 0, petNumber, {}); + PetStable::PetInfo const* dstPet = Pet::GetLoadPetInfo(*petStable, 0, 0, dstPetSlot).first; + + if (!srcPet || srcPet->Type != HUNTER_PET) + { + sess->SendPetStableResult(StableResult::InternalError); + return; + } + + if (dstPet && dstPet->Type != HUNTER_PET) + { + sess->SendPetStableResult(StableResult::InternalError); + return; + } + + Optional<PetStable::PetInfo>* src = nullptr; + Optional<PetStable::PetInfo>* dst = nullptr; + Optional<uint32> newActivePetIndex; + + if (IsActivePetSlot(srcPetSlot) && IsActivePetSlot(dstPetSlot)) + { + // active<->active: only swap ActivePets and CurrentPetIndex (do not despawn pets) + src = &petStable->ActivePets[srcPetSlot - PET_SAVE_FIRST_ACTIVE_SLOT]; + dst = &petStable->ActivePets[dstPetSlot - PET_SAVE_FIRST_ACTIVE_SLOT]; + + if (petStable->GetCurrentActivePetIndex() == uint32_t(srcPetSlot)) + newActivePetIndex = dstPetSlot; + else if (petStable->GetCurrentActivePetIndex() == uint32(dstPetSlot)) + newActivePetIndex = srcPetSlot; + } + else if (IsStabledPetSlot(srcPetSlot) && IsStabledPetSlot(dstPetSlot)) + { + // stabled<->stabled: only swap StabledPets + src = &petStable->StabledPets[srcPetSlot - PET_SAVE_FIRST_STABLE_SLOT]; + dst = &petStable->StabledPets[dstPetSlot - PET_SAVE_FIRST_STABLE_SLOT]; + } + else if (IsActivePetSlot(srcPetSlot) && IsStabledPetSlot(dstPetSlot)) + { + // active<->stabled: swap petStable contents and despawn active pet if it is involved in swap + if (petStable->CurrentPetIndex == uint32(srcPetSlot)) + { + Pet* oldPet = GetPet(); + if (oldPet && !oldPet->IsAlive()) + { + sess->SendPetStableResult(StableResult::InternalError); + return; + } + + RemovePet(oldPet, PET_SAVE_NOT_IN_SLOT); + } + + if (dstPet) + { + CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(dstPet->CreatureId); + if (!creatureInfo || !creatureInfo->IsTameable(CanTameExoticPets(), creatureInfo->GetDifficulty(DIFFICULTY_NONE))) + { + sess->SendPetStableResult(StableResult::CantControlExotic); + return; + } + } + + src = &petStable->ActivePets[srcPetSlot - PET_SAVE_FIRST_ACTIVE_SLOT]; + dst = &petStable->StabledPets[dstPetSlot - PET_SAVE_FIRST_STABLE_SLOT]; + } + else if (IsStabledPetSlot(srcPetSlot) && IsActivePetSlot(dstPetSlot)) + { + // stabled<->active: swap petStable contents and despawn active pet if it is involved in swap + if (petStable->CurrentPetIndex == uint32(dstPetSlot)) + { + Pet* oldPet = GetPet(); + if (oldPet && !oldPet->IsAlive()) + { + sess->SendPetStableResult(StableResult::InternalError); + return; + } + + RemovePet(oldPet, PET_SAVE_NOT_IN_SLOT); + } + + CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(srcPet->CreatureId); + if (!creatureInfo || !creatureInfo->IsTameable(CanTameExoticPets(), creatureInfo->GetDifficulty(DIFFICULTY_NONE))) + { + sess->SendPetStableResult(StableResult::CantControlExotic); + return; + } + + src = &petStable->StabledPets[srcPetSlot - PET_SAVE_FIRST_STABLE_SLOT]; + dst = &petStable->ActivePets[dstPetSlot - PET_SAVE_FIRST_ACTIVE_SLOT]; + } + + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); + + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); + stmt->setInt16(0, dstPetSlot); + stmt->setUInt64(1, GetGUID().GetCounter()); + stmt->setUInt32(2, srcPet->PetNumber); + trans->Append(stmt); + + if (dstPet) + { + stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); + stmt->setInt16(0, srcPetSlot); + stmt->setUInt64(1, GetGUID().GetCounter()); + stmt->setUInt32(2, dstPet->PetNumber); + trans->Append(stmt); + } + + GetSession()->AddTransactionCallback(CharacterDatabase.AsyncCommitTransaction(trans)).AfterComplete( + [sess = GetSession(), this, src, srcPetSlot = srcPetSlot, dst, dstPetSlot = dstPetSlot, newActivePetIndex](bool success) + { + if (sess->GetPlayer() == this) + { + if (success) + { + std::swap(*src, *dst); + if (newActivePetIndex) + sess->GetPlayer()->GetPetStable()->SetCurrentActivePetIndex(*newActivePetIndex); + + int32 srcPetIndex = m_activePlayerData->PetStable->Pets.FindIndexIf([srcPetSlot](UF::StablePetInfo const& p) { return p.PetSlot == uint32(srcPetSlot); }); + int32 dstPetIndex = m_activePlayerData->PetStable->Pets.FindIndexIf([dstPetSlot](UF::StablePetInfo const& p) { return p.PetSlot == uint32(dstPetSlot); }); + + if (srcPetIndex >= 0) + { + SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::PetStable, 0) + .ModifyValue(&UF::StableInfo::Pets, srcPetIndex) + .ModifyValue(&UF::StablePetInfo::PetSlot), dstPetSlot); + } + + if (dstPetIndex >= 0) + { + SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::PetStable, 0) + .ModifyValue(&UF::StableInfo::Pets, dstPetIndex) + .ModifyValue(&UF::StablePetInfo::PetSlot), srcPetSlot); + } + + sess->SendPetStableResult(StableResult::StableSuccess); + } + else + { + sess->SendPetStableResult(StableResult::InternalError); + } + } + }); +} + +ObjectGuid Player::GetStableMaster() const +{ + if (!m_activePlayerData->PetStable.has_value()) + return ObjectGuid::Empty; + + return m_activePlayerData->PetStable->StableMaster; +} + +void Player::SetStableMaster(ObjectGuid stableMaster) +{ + if (!m_activePlayerData->PetStable.has_value()) + return; + + SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::PetStable, 0) + .ModifyValue(&UF::StableInfo::StableMaster), stableMaster); +} + void Player::SendItemRefundResult(Item* item, ItemExtendedCostEntry const* iece, uint8 error) const { WorldPackets::Item::ItemPurchaseRefundResult itemPurchaseRefundResult; @@ -28252,6 +28463,7 @@ void Player::_LoadPetStable(uint32 summonedPetNumber, PreparedQueryResult result // SELECT id, entry, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType, specialization FROM character_pet WHERE owner = ? if (result) { + do { Field* fields = result->Fetch(); @@ -28273,9 +28485,19 @@ void Player::_LoadPetStable(uint32 summonedPetNumber, PreparedQueryResult result petInfo.Type = PetType(fields[14].GetUInt8()); petInfo.SpecializationId = fields[15].GetUInt16(); if (slot >= PET_SAVE_FIRST_ACTIVE_SLOT && slot < PET_SAVE_LAST_ACTIVE_SLOT) + { m_petStable->ActivePets[slot] = std::move(petInfo); + + if (m_petStable->ActivePets[slot]->Type == HUNTER_PET) + AddPetToUpdateFields(*m_petStable->ActivePets[slot], slot, PET_STABLE_ACTIVE); + } else if (slot >= PET_SAVE_FIRST_STABLE_SLOT && slot < PET_SAVE_LAST_STABLE_SLOT) + { m_petStable->StabledPets[slot - PET_SAVE_FIRST_STABLE_SLOT] = std::move(petInfo); + + if (m_petStable->StabledPets[slot - PET_SAVE_FIRST_STABLE_SLOT]->Type == HUNTER_PET) + AddPetToUpdateFields(*m_petStable->StabledPets[slot - PET_SAVE_FIRST_STABLE_SLOT], slot, PET_STABLE_INACTIVE); + } else if (slot == PET_SAVE_NOT_IN_SLOT) m_petStable->UnslottedPets.push_back(std::move(petInfo)); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index e71ac32a8bc..a46e9b05aa6 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1252,6 +1252,10 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> PetStable* GetPetStable() { return m_petStable.get(); } PetStable& GetOrInitPetStable(); PetStable const* GetPetStable() const { return m_petStable.get(); } + void AddPetToUpdateFields(PetStable::PetInfo const& pet, PetSaveMode slot, PetStableFlags flags); + void SetPetSlot(uint32 petNumber, PetSaveMode dstPetSlot); + ObjectGuid GetStableMaster() const; + void SetStableMaster(ObjectGuid stableMaster); Pet* GetPet() const; Pet* SummonPet(uint32 entry, Optional<PetSaveMode> slot, float x, float y, float z, float ang, uint32 despwtime, bool* isNew = nullptr); @@ -1637,8 +1641,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> uint32 GetQuestSlotQuestId(uint16 slot) const; uint32 GetQuestSlotState(uint16 slot) const; uint16 GetQuestSlotCounter(uint16 slot, uint8 counter) const; - uint32 GetQuestSlotEndTime(uint16 slot) const; - uint32 GetQuestSlotAcceptTime(uint16 slot) const; + int64 GetQuestSlotEndTime(uint16 slot) const; bool GetQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex) const; int32 GetQuestSlotObjectiveData(uint16 slot, QuestObjective const& objective) const; void SetQuestSlot(uint16 slot, uint32 quest_id); @@ -1646,7 +1649,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void SetQuestSlotState(uint16 slot, uint32 state); void RemoveQuestSlotState(uint16 slot, uint32 state); void SetQuestSlotEndTime(uint16 slot, time_t endTime); - void SetQuestSlotAcceptTime(uint16 slot, time_t acceptTime); void SetQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex); void RemoveQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex); void SetQuestCompletedBit(uint32 questBit, bool completed); @@ -2163,6 +2165,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void SendResetInstanceFailed(ResetFailedReason reason, uint32 mapID) const; void SendResetFailedNotify(uint32 mapid) const; bool IsLockedToDungeonEncounter(uint32 dungeonEncounterId) const; + bool IsLockedToDungeonEncounter(uint32 dungeonEncounterId, Difficulty difficulty) const; bool UpdatePosition(float x, float y, float z, float orientation, bool teleport = false) override; bool UpdatePosition(Position const& pos, bool teleport = false) override { return UpdatePosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); } @@ -2856,6 +2859,9 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void SetTransportServerTime(int32 transportServerTime) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TransportServerTime), transportServerTime); } + void SetRequiredMountCapabilityFlag(uint8 flag) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::RequiredMountCapabilityFlags), flag); } + void ReplaceAllRequiredMountCapabilityFlags(uint8 flags) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::RequiredMountCapabilityFlags), flags); } + bool IsInFriendlyArea() const; bool IsFriendlyArea(AreaTableEntry const* inArea) const; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 63b8ad8f6c2..077b9718f72 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10579,9 +10579,7 @@ bool Unit::InitTamedPet(Pet* pet, uint8 level, uint32 spell_id) pet->SetCreatorGUID(GetGUID()); pet->SetFaction(GetFaction()); pet->SetCreatedBySpell(spell_id); - - if (GetTypeId() == TYPEID_PLAYER) - pet->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + pet->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); if (!pet->InitStatsForLevel(level)) { @@ -10599,6 +10597,7 @@ bool Unit::InitTamedPet(Pet* pet, uint8 level, uint32 spell_id) petStable.SetCurrentActivePetIndex(std::distance(petStable.ActivePets.begin(), freeActiveSlotItr)); pet->FillPetInfo(&freeActiveSlotItr->emplace()); + player->AddPetToUpdateFields(**freeActiveSlotItr, PetSaveMode(*petStable.GetCurrentActivePetIndex()), PET_STABLE_ACTIVE); return true; } @@ -12019,7 +12018,7 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const if (ChrCustomizationDisplayInfoEntry const* displayInfo = formModelData->Displays[i]) { ChrCustomizationReqEntry const* choiceReq = sChrCustomizationReqStore.LookupEntry((*formModelData->Choices)[i]->ChrCustomizationReqID); - if (!choiceReq || player->GetSession()->MeetsChrCustomizationReq(choiceReq, Classes(GetClass()), false, + if (!choiceReq || player->GetSession()->MeetsChrCustomizationReq(choiceReq, Races(GetRace()), Classes(GetClass()), false, MakeChrCustomizationChoiceRange(player->m_playerData->Customizations))) displayIds.push_back(displayInfo->DisplayID); } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index b2a58835e5a..e7f44b18640 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -433,7 +433,7 @@ void WorldSession::HandleCharEnum(CharacterDatabaseQueryHolder const& holder) charInfo.Customizations.clear(); - if (!(charInfo.Flags2 == CHAR_CUSTOMIZE_FLAG_CUSTOMIZE)) + if (!(charInfo.Flags2 & (CHAR_CUSTOMIZE_FLAG_CUSTOMIZE | CHAR_CUSTOMIZE_FLAG_FACTION | CHAR_CUSTOMIZE_FLAG_RACE))) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); stmt->setUInt16(0, uint16(AT_LOGIN_CUSTOMIZE)); @@ -508,7 +508,7 @@ void WorldSession::HandleCharUndeleteEnumOpcode(WorldPackets::Character::EnumCha }); } -bool WorldSession::MeetsChrCustomizationReq(ChrCustomizationReqEntry const* req, Classes playerClass, +bool WorldSession::MeetsChrCustomizationReq(ChrCustomizationReqEntry const* req, Races race, Classes playerClass, bool checkRequiredDependentChoices, Trinity::IteratorPair<UF::ChrCustomizationChoice const*> selectedChoices) const { if (!req->GetFlags().HasFlag(ChrCustomizationReqFlag::HasRequirements)) @@ -517,6 +517,9 @@ bool WorldSession::MeetsChrCustomizationReq(ChrCustomizationReqEntry const* req, if (req->ClassMask && !(req->ClassMask & (1 << (playerClass - 1)))) return false; + if (race != RACE_NONE && !req->RaceMask.IsEmpty() && req->RaceMask.RawValue != -1 && !req->RaceMask.HasRace(race)) + return false; + if (req->AchievementID /*&& !HasAchieved(req->AchievementID)*/) return false; @@ -589,7 +592,7 @@ bool WorldSession::ValidateAppearance(Races race, Classes playerClass, Gender ge return false; if (ChrCustomizationReqEntry const* req = sChrCustomizationReqStore.LookupEntry((*customizationOptionDataItr)->ChrCustomizationReqID)) - if (!MeetsChrCustomizationReq(req, playerClass, false, customizations)) + if (!MeetsChrCustomizationReq(req, race, playerClass, false, customizations)) return false; std::vector<ChrCustomizationChoiceEntry const*> const* choicesForOption = sDB2Manager.GetCustomiztionChoices(playerChoice.ChrCustomizationOptionID); @@ -606,7 +609,7 @@ bool WorldSession::ValidateAppearance(Races race, Classes playerClass, Gender ge return false; if (ChrCustomizationReqEntry const* req = sChrCustomizationReqStore.LookupEntry((*customizationChoiceDataItr)->ChrCustomizationReqID)) - if (!MeetsChrCustomizationReq(req, playerClass, true, customizations)) + if (!MeetsChrCustomizationReq(req, race, playerClass, true, customizations)) return false; } @@ -1202,10 +1205,6 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder const& holder) pCurrChar->SetGuildLevel(0); } - // Send stable contents to display icons on Call Pet spells - if (pCurrChar->HasSpell(CALL_PET_SPELL_ID)) - SendStablePet(ObjectGuid::Empty); - pCurrChar->GetSession()->GetBattlePetMgr()->SendJournalLockStatus(); pCurrChar->SendInitialPacketsBeforeAddToMap(); @@ -1736,7 +1735,23 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPackets::Character::SetPlay void WorldSession::HandleAlterAppearance(WorldPackets::Character::AlterApperance& packet) { - if (!ValidateAppearance(Races(_player->GetRace()), Classes(_player->GetClass()), Gender(packet.NewSex), MakeChrCustomizationChoiceRange(packet.Customizations))) + Trinity::IteratorPair<UF::ChrCustomizationChoice const*> customizations = MakeChrCustomizationChoiceRange(packet.Customizations); + if (packet.CustomizedChrModelID) + { + ConditionalChrModelEntry const* conditionalChrModel = sConditionalChrModelStore.LookupEntry(packet.CustomizedChrModelID); + if (!conditionalChrModel) + return; + + if (ChrCustomizationReqEntry const* req = sChrCustomizationReqStore.LookupEntry(conditionalChrModel->ChrCustomizationReqID)) + if (!MeetsChrCustomizationReq(req, Races(packet.CustomizedRace), Classes(_player->GetClass()), false, customizations)) + return; + + if (PlayerConditionEntry const* condition = sPlayerConditionStore.LookupEntry(conditionalChrModel->PlayerConditionID)) + if (!ConditionMgr::IsPlayerMeetingCondition(_player, condition)) + return; + } + + if (!ValidateAppearance(Races(_player->GetRace()), Classes(_player->GetClass()), Gender(packet.NewSex), customizations)) return; GameObject* go = _player->FindNearestGameObjectOfType(GAMEOBJECT_TYPE_BARBER_CHAIR, 5.0f); @@ -1752,7 +1767,7 @@ void WorldSession::HandleAlterAppearance(WorldPackets::Character::AlterApperance return; } - int64 cost = _player->GetBarberShopCost(MakeChrCustomizationChoiceRange(packet.Customizations)); + int64 cost = _player->GetBarberShopCost(customizations); // 0 - ok // 1, 3 - not enough money diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 256ce0f5aab..22d8f869d15 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -46,8 +46,9 @@ enum class ChatWhisperTargetStatus : uint8 { CanWhisper = 0, - Offline = 1, - WrongFaction = 2 + CanWhisperGuild = 1, + Offline = 2, + WrongFaction = 3 }; inline bool isNasty(uint8 c) diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index aa65b16e1e5..8318adb5a00 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1177,6 +1177,9 @@ void WorldSession::HandleCloseInteraction(WorldPackets::Misc::CloseInteraction& { if (_player->PlayerTalkClass->GetInteractionData().SourceGuid == closeInteraction.SourceGuid) _player->PlayerTalkClass->GetInteractionData().Reset(); + + if (_player->GetStableMaster() == closeInteraction.SourceGuid) + _player->SetStableMaster(ObjectGuid::Empty); } void WorldSession::HandleConversationLineStarted(WorldPackets::Misc::ConversationLineStarted& conversationLineStarted) diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 372816cc758..0e23cc32c53 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -17,7 +17,6 @@ #include "WorldSession.h" #include "Battleground.h" -#include "BattlegroundMgr.h" #include "Common.h" #include "Creature.h" #include "CreatureAI.h" @@ -40,17 +39,6 @@ #include "Trainer.h" #include "WorldPacket.h" -enum class StableResult : uint8 -{ - NotEnoughMoney = 1, // "you don't have enough money" - InvalidSlot = 3, // "That slot is locked" - StableSuccess = 8, // stable success - UnstableSuccess = 9, // unstable/swap success - BuySlotSuccess = 10, // buy slot success - CantControlExotic = 11, // "you are unable to control exotic creatures" - InternalError = 12, // "Internal pet error" -}; - void WorldSession::HandleTabardVendorActivateOpcode(WorldPackets::NPC::Hello& packet) { Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(packet.Unit, UNIT_NPC_FLAG_TABARDDESIGNER, UNIT_NPC_FLAG_2_NONE); @@ -351,55 +339,7 @@ void WorldSession::HandleRequestStabledPets(WorldPackets::NPC::RequestStabledPet if (GetPlayer()->IsMounted()) GetPlayer()->RemoveAurasByType(SPELL_AURA_MOUNTED); - SendStablePet(packet.StableMaster); -} - -void WorldSession::SendStablePet(ObjectGuid guid) -{ - WorldPackets::Pet::PetStableList packet; - - packet.StableMaster = guid; - - PetStable* petStable = GetPlayer()->GetPetStable(); - if (!petStable) - { - SendPacket(packet.Write()); - return; - } - - for (uint32 petSlot = 0; petSlot < petStable->ActivePets.size(); ++petSlot) - { - if (!petStable->ActivePets[petSlot]) - continue; - - PetStable::PetInfo const& pet = *petStable->ActivePets[petSlot]; - WorldPackets::Pet::PetStableInfo& stableEntry = packet.Pets.emplace_back(); - stableEntry.PetSlot = petSlot + PET_SAVE_FIRST_ACTIVE_SLOT; - stableEntry.PetNumber = pet.PetNumber; - stableEntry.CreatureID = pet.CreatureId; - stableEntry.DisplayID = pet.DisplayId; - stableEntry.ExperienceLevel = pet.Level; - stableEntry.PetFlags = PET_STABLE_ACTIVE; - stableEntry.PetName = pet.Name; - } - - for (uint32 petSlot = 0; petSlot < petStable->StabledPets.size(); ++petSlot) - { - if (!petStable->StabledPets[petSlot]) - continue; - - PetStable::PetInfo const& pet = *petStable->StabledPets[petSlot]; - WorldPackets::Pet::PetStableInfo& stableEntry = packet.Pets.emplace_back(); - stableEntry.PetSlot = petSlot + PET_SAVE_FIRST_STABLE_SLOT; - stableEntry.PetNumber = pet.PetNumber; - stableEntry.CreatureID = pet.CreatureId; - stableEntry.DisplayID = pet.DisplayId; - stableEntry.ExperienceLevel = pet.Level; - stableEntry.PetFlags = PET_STABLE_INACTIVE; - stableEntry.PetName = pet.Name; - } - - SendPacket(packet.Write()); + _player->SetStableMaster(packet.StableMaster); } void WorldSession::SendPetStableResult(StableResult result) @@ -417,142 +357,7 @@ void WorldSession::HandleSetPetSlot(WorldPackets::NPC::SetPetSlot& setPetSlot) return; } - GetPlayer()->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting); - - PetStable* petStable = GetPlayer()->GetPetStable(); - if (!petStable) - { - SendPetStableResult(StableResult::InternalError); - return; - } - - auto [srcPet, srcPetSlot] = Pet::GetLoadPetInfo(*petStable, 0, setPetSlot.PetNumber, {}); - PetSaveMode dstPetSlot = PetSaveMode(setPetSlot.DestSlot); - PetStable::PetInfo const* dstPet = Pet::GetLoadPetInfo(*petStable, 0, 0, dstPetSlot).first; - - if (!srcPet || srcPet->Type != HUNTER_PET) - { - SendPetStableResult(StableResult::InternalError); - return; - } - - if (dstPet && dstPet->Type != HUNTER_PET) - { - SendPetStableResult(StableResult::InternalError); - return; - } - - Optional<PetStable::PetInfo>* src = nullptr; - Optional<PetStable::PetInfo>* dst = nullptr; - Optional<uint32> newActivePetIndex; - - if (IsActivePetSlot(srcPetSlot) && IsActivePetSlot(dstPetSlot)) - { - // active<->active: only swap ActivePets and CurrentPetIndex (do not despawn pets) - src = &petStable->ActivePets[srcPetSlot - PET_SAVE_FIRST_ACTIVE_SLOT]; - dst = &petStable->ActivePets[dstPetSlot - PET_SAVE_FIRST_ACTIVE_SLOT]; - - if (petStable->GetCurrentActivePetIndex() == uint32_t(srcPetSlot)) - newActivePetIndex = dstPetSlot; - else if (petStable->GetCurrentActivePetIndex() == uint32(dstPetSlot)) - newActivePetIndex = srcPetSlot; - } - else if (IsStabledPetSlot(srcPetSlot) && IsStabledPetSlot(dstPetSlot)) - { - // stabled<->stabled: only swap StabledPets - src = &petStable->StabledPets[srcPetSlot - PET_SAVE_FIRST_STABLE_SLOT]; - dst = &petStable->StabledPets[dstPetSlot - PET_SAVE_FIRST_STABLE_SLOT]; - } - else if (IsActivePetSlot(srcPetSlot) && IsStabledPetSlot(dstPetSlot)) - { - // active<->stabled: swap petStable contents and despawn active pet if it is involved in swap - if (petStable->CurrentPetIndex == uint32(srcPetSlot)) - { - Pet* oldPet = _player->GetPet(); - if (oldPet && !oldPet->IsAlive()) - { - SendPetStableResult(StableResult::InternalError); - return; - } - - _player->RemovePet(oldPet, PET_SAVE_NOT_IN_SLOT); - } - - if (dstPet) - { - CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(dstPet->CreatureId); - if (!creatureInfo || !creatureInfo->IsTameable(_player->CanTameExoticPets(), creatureInfo->GetDifficulty(DIFFICULTY_NONE))) - { - SendPetStableResult(StableResult::CantControlExotic); - return; - } - } - - src = &petStable->ActivePets[srcPetSlot - PET_SAVE_FIRST_ACTIVE_SLOT]; - dst = &petStable->StabledPets[dstPetSlot - PET_SAVE_FIRST_STABLE_SLOT]; - } - else if (IsStabledPetSlot(srcPetSlot) && IsActivePetSlot(dstPetSlot)) - { - // stabled<->active: swap petStable contents and despawn active pet if it is involved in swap - if (petStable->CurrentPetIndex == uint32(dstPetSlot)) - { - Pet* oldPet = _player->GetPet(); - if (oldPet && !oldPet->IsAlive()) - { - SendPetStableResult(StableResult::InternalError); - return; - } - - _player->RemovePet(oldPet, PET_SAVE_NOT_IN_SLOT); - } - - CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(srcPet->CreatureId); - if (!creatureInfo || !creatureInfo->IsTameable(_player->CanTameExoticPets(), creatureInfo->GetDifficulty(DIFFICULTY_NONE))) - { - SendPetStableResult(StableResult::CantControlExotic); - return; - } - - src = &petStable->StabledPets[srcPetSlot - PET_SAVE_FIRST_STABLE_SLOT]; - dst = &petStable->ActivePets[dstPetSlot - PET_SAVE_FIRST_ACTIVE_SLOT]; - } - - CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); - - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setInt16(0, dstPetSlot); - stmt->setUInt64(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, srcPet->PetNumber); - trans->Append(stmt); - - if (dstPet) - { - stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setInt16(0, srcPetSlot); - stmt->setUInt64(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, dstPet->PetNumber); - trans->Append(stmt); - } - - AddTransactionCallback(CharacterDatabase.AsyncCommitTransaction(trans)).AfterComplete( - [this, currentPlayerGuid = _player->GetGUID(), src, dst, newActivePetIndex](bool success) - { - if (_player && _player->GetGUID() == currentPlayerGuid) - { - if (success) - { - std::swap(*src, *dst); - if (newActivePetIndex) - GetPlayer()->GetPetStable()->SetCurrentActivePetIndex(*newActivePetIndex); - - SendPetStableResult(StableResult::StableSuccess); - } - else - { - SendPetStableResult(StableResult::InternalError); - } - } - }); + _player->SetPetSlot(setPetSlot.PetNumber, PetSaveMode(setPetSlot.DestSlot)); } void WorldSession::HandleRepairItemOpcode(WorldPackets::Item::RepairItem& packet) diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 3d71bb0f4ea..d05e6c5b181 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -603,9 +603,6 @@ void WorldSession::HandlePetRename(WorldPackets::Pet::PetRename& packet) void WorldSession::HandlePetAbandon(WorldPackets::Pet::PetAbandon& packet) { - if (!_player->IsInWorld()) - return; - // pet/charmed Creature* pet = ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, packet.Pet); if (pet && pet->ToPet() && pet->ToPet()->getPetType() == HUNTER_PET) diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 2eac8d32b20..ef29453aa15 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -104,7 +104,7 @@ void WorldSession::HandleUseItemOpcode(WorldPackets::Spells::UseItem& packet) { if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(effect->SpellID, user->GetMap()->GetDifficultyID())) { - if (!spellInfo->CanBeUsedInCombat()) + if (!spellInfo->CanBeUsedInCombat(user)) { user->SendEquipError(EQUIP_ERR_NOT_IN_COMBAT, item, nullptr); return; diff --git a/src/server/game/Mails/Mail.h b/src/server/game/Mails/Mail.h index 56b90a3e4e1..de4c029e2f0 100644 --- a/src/server/game/Mails/Mail.h +++ b/src/server/game/Mails/Mail.h @@ -36,13 +36,15 @@ class Player; enum MailMessageType { - MAIL_NORMAL = 0, - MAIL_AUCTION = 2, - MAIL_CREATURE = 3, // client send CMSG_CREATURE_QUERY on this mailmessagetype - MAIL_GAMEOBJECT = 4, // client send CMSG_GAMEOBJECT_QUERY on this mailmessagetype - MAIL_CALENDAR = 5, - MAIL_BLACKMARKET = 6, - MAIL_COMMERCE_AUCTION = 7 // wow token auction + MAIL_NORMAL = 0, + MAIL_AUCTION = 2, + MAIL_CREATURE = 3, // client send CMSG_CREATURE_QUERY on this mailmessagetype + MAIL_GAMEOBJECT = 4, // client send CMSG_GAMEOBJECT_QUERY on this mailmessagetype + MAIL_CALENDAR = 5, + MAIL_BLACKMARKET = 6, + MAIL_COMMERCE_AUCTION = 7, // wow token auction + MAIL_AUCTION_2 = 8, + MAIL_ARTISANS_CONSORTIUM = 9 // crafting orders }; enum MailCheckMask diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index ccc2be87678..718d54aca6b 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1440,7 +1440,7 @@ enum SpellEffectName SPELL_EFFECT_CREATE_TRAIT_TREE_CONFIG = 303, // MiscValue[0] = TraitTreeID SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG = 304, SPELL_EFFECT_305 = 305, - SPELL_EFFECT_306 = 306, + SPELL_EFFECT_UPDATE_INTERACTIONS = 306, SPELL_EFFECT_307 = 307, SPELL_EFFECT_CANCEL_PRELOAD_WORLD = 308, SPELL_EFFECT_PRELOAD_WORLD = 309, @@ -1449,6 +1449,7 @@ enum SpellEffectName SPELL_EFFECT_312 = 312, SPELL_EFFECT_CHANGE_ITEM_BONUSES_2 = 313, // MiscValue[0] = ItemBonusTreeID to preserve SPELL_EFFECT_ADD_SOCKET_BONUS = 314, // MiscValue[0] = required ItemBonusTreeID + SPELL_EFFECT_LEARN_TRANSMOG_APPEARANCE_FROM_ITEM_MOD_APPEARANCE_GROUP = 315, // MiscValue[0] = ItemModAppearanceGroupID (not in db2) TOTAL_SPELL_EFFECTS }; @@ -1774,7 +1775,9 @@ enum SpellCastResult : int32 SPELL_FAILED_CANT_BE_RECRAFTED = 316, SPELL_FAILED_PASSIVE_REPLACED = 317, SPELL_FAILED_CANT_FLY_HERE = 318, - SPELL_FAILED_UNKNOWN = 319, + SPELL_FAILED_DRAGONRIDING_RIDING_REQUIREMENT = 319, + SPELL_FAILED_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 320, + SPELL_FAILED_UNKNOWN = 321, // ok cast value - here in case a future version removes SPELL_FAILED_SUCCESS and we need to use a custom value (not sent to client either way) SPELL_CAST_OK = SPELL_FAILED_SUCCESS // SKIP @@ -2408,8 +2411,11 @@ enum SpellCustomErrors SPELL_CUSTOM_ERROR_REQUIRES_A_DJARADIN_PILLAR_SHARD = 831, // Requires a Djaradin Pillar Shard. SPELL_CUSTOM_ERROR_REQUIRES_A_RESILIENT_STONE = 832, // Requires a Resilient Stone. SPELL_CUSTOM_ERROR_MYRRIT_CANNOT_CARRY_ANY_MORE_MAPS = 835, // Myrrit cannot carry any more maps. Go on a dig with him! + SPELL_CUSTOM_ERROR_SOME_GIFTSS_ARE_BETTER_LEFT_UNDELIVERED = 836, // Some gifts are better left undelivered. SPELL_CUSTOM_ERROR_REQUIRES_NIFFEN_CAVE_DIVE_KEYAND_SHIELD_DISABLED = 850, // Requires Niffen Cave Dive Key and shield disabled. SPELL_CUSTOM_ERROR_ELUSIVE_CREATURE_BAIT_WAS_RECENTLY_USED = 851, // You cannot lure anything in this area for a few minutes. Elusive Creature Bait was recently used. + SPELL_CUSTOM_ERROR_MUST_BE_IN_QUIET_PLACE_WITHIN_CAER_DARROW = 852, // Must be in a suitably quiet place within Caer Darrow. + SPELL_CUSTOM_ERROR_YOU_DONT_HAVE_ANY_GLIMMER_OF_LIGHTS_ACTIVE = 856, // You don't have any Glimmer of Lights active. SPELL_CUSTOM_ERROR_YOU_DONT_HAVE_THE_SWIRLING_MOJO_STONE = 999, // You don't have the Swirling Mojo Stone equipped. SPELL_CUSTOM_ERROR_YOU_MUST_BE_NEAR_A_DRAGONFLIGHT_OATHSTONE = 1000, // You must be near one of the five dragonflight oathstones in the Dragon Isles. SPELL_CUSTOM_ERROR_CAN_ONLY_USE_THIS_ITEM_WHILE_AIRBORNE = 1001, // You can only use this item while airborne. @@ -8034,12 +8040,13 @@ enum class GameError : uint32 ERR_CROSS_FACTION_GROUP_JOINED = 1114, ERR_CANT_TARGET_UNFRIENDLY_IN_OVERWORLD = 1115, ERR_EQUIPABLESPELLS_SLOTS_FULL = 1116, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1117, - ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1118, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1119, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1120, - ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1121, - ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1122, + ERR_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN = 1117, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1118, + ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1119, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1120, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1121, + ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1122, + ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1123, }; enum class MountResult : uint32 diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 2feff84a03d..20306a41081 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -113,7 +113,7 @@ Quest::Quest(Field* questRecord) _soundAccept = questRecord[98].GetUInt32(); _soundTurnIn = questRecord[99].GetUInt32(); _areaGroupID = questRecord[100].GetUInt32(); - _limitTime = questRecord[101].GetUInt32(); + _limitTime = questRecord[101].GetInt64(); _allowableRaces.RawValue = questRecord[102].GetUInt64(); _treasurePickerID = questRecord[103].GetInt32(); _expansion = questRecord[104].GetInt32(); @@ -464,6 +464,14 @@ Optional<QuestTagType> Quest::GetQuestTag() const return {}; } +bool Quest::IsImportant() const +{ + if (QuestInfoEntry const* questInfo = sQuestInfoStore.LookupEntry(GetQuestInfoID())) + return (questInfo->Modifiers & 0x400) != 0; + + return false; +} + void Quest::BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player* player) const { rewards.ChoiceItemCount = GetRewChoiceItemsCount(); diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 2f4d34bfbdc..559ba2efd24 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -148,30 +148,40 @@ enum QuestStatus : uint8 MAX_QUEST_STATUS }; -enum class QuestGiverStatus : uint32 +enum class QuestGiverStatus : uint64 { - None = 0x000000, - Future = 0x000002, - Trivial = 0x000004, - TrivialRepeatableTurnin = 0x000008, - TrivialDailyQuest = 0x000010, - Reward = 0x000020, - JourneyReward = 0x000040, - CovenantCallingReward = 0x000080, - RepeatableTurnin = 0x000100, - DailyQuest = 0x000200, - Quest = 0x000400, - RewardCompleteNoPOI = 0x000800, - RewardCompletePOI = 0x001000, - LegendaryQuest = 0x002000, - LegendaryRewardCompleteNoPOI = 0x004000, - LegendaryRewardCompletePOI = 0x008000, - JourneyQuest = 0x010000, - JourneyRewardCompleteNoPOI = 0x020000, - JourneyRewardCompletePOI = 0x040000, - CovenantCallingQuest = 0x080000, - CovenantCallingRewardCompleteNoPOI = 0x100000, - CovenantCallingRewardCompletePOI = 0x200000, + None = 0x000000000, + Future = 0x000000002, + Trivial = 0x000000004, + TrivialRepeatableTurnin = 0x000000008, + TrivialDailyQuest = 0x000000010, + Reward = 0x000000020, + JourneyReward = 0x000000040, + CovenantCallingReward = 0x000000080, + RepeatableTurnin = 0x000000100, + DailyQuest = 0x000000200, + Quest = 0x000000400, + RewardCompleteNoPOI = 0x000000800, + RewardCompletePOI = 0x000001000, + LegendaryQuest = 0x000002000, + LegendaryRewardCompleteNoPOI = 0x000004000, + LegendaryRewardCompletePOI = 0x000008000, + JourneyQuest = 0x000010000, + JourneyRewardCompleteNoPOI = 0x000020000, + JourneyRewardCompletePOI = 0x000040000, + CovenantCallingQuest = 0x000080000, + CovenantCallingRewardCompleteNoPOI = 0x000100000, + CovenantCallingRewardCompletePOI = 0x000200000, + TrivialLegendaryQuest = 0x000400000, + FutureLegendaryQuest = 0x000800000, + LegendaryReward = 0x001000000, + ImportantQuest = 0x002000000, + ImportantQuestReward = 0x004000000, + TrivialImportantQuest = 0x008000000, + ImportantQuestRewardCompleteNoPOI = 0x020000000, + ImportantQuestRewardCompletePOI = 0x040000000, + TrivialJourneyQuest = 0x080000000, + TrivialCovenantCallingQuest = 0x100000000, }; DEFINE_ENUM_FLAG(QuestGiverStatus); @@ -540,6 +550,7 @@ class TC_GAME_API Quest uint32 MaxMoneyValue() const; uint32 GetMaxMoneyReward() const; Optional<QuestTagType> GetQuestTag() const; + bool IsImportant() const; bool HasFlag(QuestFlags flag) const { return (_flags & uint32(flag)) != 0; } bool HasFlagEx(QuestFlagsEx flag) const { return (_flagsEx & uint32(flag)) != 0; } @@ -575,7 +586,7 @@ class TC_GAME_API Quest uint32 GetRequiredMaxRepFaction() const { return _requiredMaxRepFaction; } int32 GetRequiredMaxRepValue() const { return _requiredMaxRepValue; } uint32 GetSuggestedPlayers() const { return _suggestedPlayers; } - uint32 GetLimitTime() const { return _limitTime; } + int64 GetLimitTime() const { return _limitTime; } int32 GetPrevQuestId() const { return _prevQuestID; } uint32 GetNextQuestId() const { return _nextQuestID; } int32 GetExclusiveGroup() const { return _exclusiveGroup; } @@ -745,7 +756,7 @@ class TC_GAME_API Quest uint32 _soundAccept = 0; uint32 _soundTurnIn = 0; uint32 _areaGroupID = 0; - uint32 _limitTime = 0; + int64 _limitTime = 0; Trinity::RaceMask<uint64> _allowableRaces; int32 _treasurePickerID = 0; int32 _expansion = 0; @@ -810,6 +821,7 @@ struct QuestStatusData { uint16 Slot = MAX_QUEST_LOG_SIZE; QuestStatus Status = QUEST_STATUS_NONE; + time_t AcceptTime = time_t(0); uint32 Timer = 0; bool Explored = false; }; diff --git a/src/server/game/Scenarios/Scenario.cpp b/src/server/game/Scenarios/Scenario.cpp index db08c9a379d..6d8fd3c1c62 100644 --- a/src/server/game/Scenarios/Scenario.cpp +++ b/src/server/game/Scenarios/Scenario.cpp @@ -17,6 +17,7 @@ #include "Scenario.h" #include "Log.h" +#include "Map.h" #include "ObjectAccessor.h" #include "ObjectMgr.h" #include "Player.h" @@ -24,6 +25,7 @@ #include "ScenarioPackets.h" Scenario::Scenario(Map* map, ScenarioData const* scenarioData) : _map(map), _data(scenarioData), + _guid(ObjectGuid::Create<HighGuid::Scenario>(map->GetId(), scenarioData->Entry->ID, map->GenerateLowGuid<HighGuid::Scenario>())), _currentstep(nullptr) { ASSERT(_data); @@ -222,6 +224,7 @@ void Scenario::SendPacket(WorldPacket const* data) const void Scenario::BuildScenarioState(WorldPackets::Scenario::ScenarioState* scenarioState) { + scenarioState->ScenarioGUID = _guid; scenarioState->ScenarioID = _data->Entry->ID; if (ScenarioStepEntry const* step = GetStep()) scenarioState->CurrentStep = step->ID; @@ -335,6 +338,7 @@ CriteriaList const& Scenario::GetCriteriaByType(CriteriaType type, uint32 /*asse void Scenario::SendBootPlayer(Player* player) { WorldPackets::Scenario::ScenarioVacate scenarioBoot; + scenarioBoot.ScenarioGUID = _guid; scenarioBoot.ScenarioID = _data->Entry->ID; player->SendDirectMessage(scenarioBoot.Write()); } diff --git a/src/server/game/Scenarios/Scenario.h b/src/server/game/Scenarios/Scenario.h index 51f1de55b95..e01884dd9a9 100644 --- a/src/server/game/Scenarios/Scenario.h +++ b/src/server/game/Scenarios/Scenario.h @@ -101,6 +101,7 @@ class TC_GAME_API Scenario : public CriteriaHandler ScenarioData const* _data; private: + ObjectGuid const _guid; ScenarioStepEntry const* _currentstep; std::map<ScenarioStepEntry const*, ScenarioStepState> _stepStates; }; diff --git a/src/server/game/Server/Packets/AchievementPackets.cpp b/src/server/game/Server/Packets/AchievementPackets.cpp index cd973e958db..d158db68e60 100644 --- a/src/server/game/Server/Packets/AchievementPackets.cpp +++ b/src/server/game/Server/Packets/AchievementPackets.cpp @@ -32,10 +32,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Achievement::CriteriaProg data << uint32(criteria.Id); data << uint64(criteria.Quantity); data << criteria.Player; + data << uint32(criteria.Unused_10_1_5); + data << uint32(criteria.Flags); data.AppendPackedTime(criteria.Date); data << criteria.TimeFromStart; data << criteria.TimeFromCreate; - data.WriteBits(criteria.Flags, 4); data.WriteBit(criteria.RafAcceptanceID.has_value()); data.FlushBits(); @@ -88,6 +89,7 @@ WorldPacket const* WorldPackets::Achievement::CriteriaUpdate::Write() _worldPacket << uint32(CriteriaID); _worldPacket << uint64(Quantity); _worldPacket << PlayerGUID; + _worldPacket << uint32(Unused_10_1_5); _worldPacket << uint32(Flags); _worldPacket.AppendPackedTime(CurrentTime); _worldPacket << ElapsedTime; @@ -161,6 +163,7 @@ WorldPacket const* WorldPackets::Achievement::GuildCriteriaUpdate::Write() _worldPacket << uint32(0); // this is a hack. this is a packed time written as int64 (progress.DateUpdated) _worldPacket << uint64(progress.Quantity); _worldPacket << progress.PlayerGUID; + _worldPacket << int32(progress.Unused_10_1_5); _worldPacket << int32(progress.Flags); } diff --git a/src/server/game/Server/Packets/AchievementPackets.h b/src/server/game/Server/Packets/AchievementPackets.h index eb0c50132ed..39aa72aba16 100644 --- a/src/server/game/Server/Packets/AchievementPackets.h +++ b/src/server/game/Server/Packets/AchievementPackets.h @@ -41,6 +41,7 @@ namespace WorldPackets uint32 Id = 0; uint64 Quantity = 0; ObjectGuid Player; + uint32 Unused_10_1_5 = 0; uint32 Flags = 0; time_t Date = time_t(0); Duration<Seconds> TimeFromStart; @@ -95,6 +96,7 @@ namespace WorldPackets uint32 CriteriaID = 0; uint64 Quantity = 0; ObjectGuid PlayerGUID; + uint32 Unused_10_1_5 = 0; uint32 Flags = 0; time_t CurrentTime = time_t(0); Duration<Seconds> ElapsedTime; @@ -170,6 +172,7 @@ namespace WorldPackets time_t DateUpdated = 0; uint64 Quantity = 0; ObjectGuid PlayerGUID; + int32 Unused_10_1_5 = 0; int32 Flags = 0; }; diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index faaea86fdcd..bbb4be0aea5 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -588,7 +588,8 @@ WorldPacket const* AuctionFavoriteList::Write() WorldPacket const* AuctionHelloResponse::Write() { _worldPacket << Guid; - _worldPacket << uint32(DeliveryDelay); + _worldPacket << uint32(PurchasedItemDeliveryDelay); + _worldPacket << uint32(CancelledItemDeliveryDelay); _worldPacket.WriteBit(OpenForBusiness); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h index 9a6a8b729fc..376ee86eee7 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.h +++ b/src/server/game/Server/Packets/AuctionHousePackets.h @@ -420,7 +420,8 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid Guid; - uint32 DeliveryDelay = 0; + uint32 PurchasedItemDeliveryDelay = 0; + uint32 CancelledItemDeliveryDelay = 0; bool OpenForBusiness = true; }; diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 3809c421c86..1df518c7b9d 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -147,6 +147,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket.WriteBit(SuccessInfo->NumPlayersHorde.has_value()); _worldPacket.WriteBit(SuccessInfo->NumPlayersAlliance.has_value()); _worldPacket.WriteBit(SuccessInfo->ExpansionTrialExpiration.has_value()); + _worldPacket.WriteBit(SuccessInfo->NewBuildKeys.has_value()); _worldPacket.FlushBits(); { @@ -169,6 +170,15 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() if (SuccessInfo->ExpansionTrialExpiration) _worldPacket << *SuccessInfo->ExpansionTrialExpiration; + if (SuccessInfo->NewBuildKeys) + { + for (std::size_t i = 0; i < 16; ++i) + { + _worldPacket << SuccessInfo->NewBuildKeys->NewBuildKey[i]; + _worldPacket << SuccessInfo->NewBuildKeys->SomeKey[i]; + } + } + for (VirtualRealmInfo const& virtualRealm : SuccessInfo->VirtualRealms) _worldPacket << virtualRealm; diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 7999186ed3d..62c11af2201 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -140,6 +140,12 @@ namespace WorldPackets bool InGameRoom = false; }; + struct NewBuild + { + std::array<uint8, 16> NewBuildKey = { }; + std::array<uint8, 16> SomeKey = { }; + }; + AuthSuccessInfo() { } // work around clang bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101227 uint8 ActiveExpansionLevel = 0; ///< the current server expansion, the possible values are in @ref Expansions @@ -163,6 +169,7 @@ namespace WorldPackets Optional<uint16> NumPlayersHorde; ///< number of horde players in this realm. @todo implement Optional<uint16> NumPlayersAlliance; ///< number of alliance players in this realm. @todo implement Optional<Timestamp<>> ExpansionTrialExpiration; ///< expansion trial expiration unix timestamp + Optional<NewBuild> NewBuildKeys; }; AuthResponse() : ServerPacket(SMSG_AUTH_RESPONSE, 132) { } diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index 15258b2cb0b..4d89381d542 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -83,7 +83,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPMatchSta data << uint32(playerData.HealingDone); data << uint32(playerData.Stats.size()); data << int32(playerData.PrimaryTalentTree); - data << int32(playerData.Sex); + data << int8(playerData.Sex); data << int32(playerData.Race); data << int32(playerData.Class); data << int32(playerData.CreatureID); @@ -379,6 +379,13 @@ WorldPacket const* WorldPackets::Battleground::PVPMatchInitialize::Write() return &_worldPacket; } +WorldPacket const* WorldPackets::Battleground::PVPMatchSetState::Write() +{ + _worldPacket << uint8(State); + + return &_worldPacket; +} + WorldPacket const* WorldPackets::Battleground::PVPMatchComplete::Write() { _worldPacket << uint8(Winner); diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index 28d337c7698..05edc095f7e 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -138,7 +138,7 @@ namespace WorldPackets Optional<uint32> PostMatchMMR; std::vector<PVPMatchPlayerPVPStat> Stats; int32 PrimaryTalentTree = 0; - int32 Sex = 0; + int8 Sex = 0; int32 Race = 0; int32 Class = 0; int32 CreatureID = 0; @@ -473,6 +473,16 @@ namespace WorldPackets WorldPackets::Duration<Milliseconds, int32> QueuePenaltyDuration; }; + enum class PVPMatchState : uint8 + { + Waiting = 0, + StartUp = 1, + Engaged = 2, + PostRound = 3, + Inactive = 4, + Complete = 5 + }; + class PVPMatchInitialize final : public ServerPacket { public: @@ -480,15 +490,8 @@ namespace WorldPackets WorldPacket const* Write() override; - enum MatchState : uint8 - { - InProgress = 1, - Complete = 3, - Inactive = 4 - }; - uint32 MapID = 0; - MatchState State = Inactive; + PVPMatchState State = PVPMatchState::Inactive; Timestamp<> StartTime; WorldPackets::Duration<Seconds> Duration; Optional<RatedMatchDeserterPenalty> DeserterPenalty; @@ -498,6 +501,16 @@ namespace WorldPackets bool AffectsRating = false; }; + class PVPMatchSetState final : public ServerPacket + { + public: + explicit PVPMatchSetState(PVPMatchState state) : ServerPacket(SMSG_PVP_MATCH_SET_STATE, 1), State(state) { } + + WorldPacket const* Write() override; + + PVPMatchState State; + }; + class PVPMatchComplete final : public ServerPacket { public: diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 47dc87aabd6..35a68f07ecc 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -554,6 +554,7 @@ void AlterApperance::Read() Customizations.resize(_worldPacket.read<uint32>()); _worldPacket >> NewSex; _worldPacket >> CustomizedRace; + _worldPacket >> CustomizedChrModelID; for (ChrCustomizationChoice& customization : Customizations) _worldPacket >> customization; diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 2f04c0add51..f3d72d1e011 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -639,6 +639,7 @@ namespace WorldPackets uint8 NewSex = 0; Array<ChrCustomizationChoice, 125> Customizations; int32 CustomizedRace = 0; + int32 CustomizedChrModelID = 0; }; class BarberShopResult final : public ServerPacket diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp index 7b2f1c71134..a83059a2e47 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.cpp +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -18,7 +18,25 @@ #include "CombatLogPackets.h" #include "UnitDefines.h" -WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write() +namespace WorldPackets::CombatLog +{ +ByteBuffer& operator<<(ByteBuffer& data, CombatWorldTextViewerInfo const& worldTextViewer) +{ + data << worldTextViewer.ViewerGUID; + data.WriteBit(worldTextViewer.ColorType.has_value()); + data.WriteBit(worldTextViewer.ScaleType.has_value()); + data.FlushBits(); + + if (worldTextViewer.ColorType) + data << uint8(*worldTextViewer.ColorType); + + if (worldTextViewer.ScaleType) + data << uint8(*worldTextViewer.ScaleType); + + return data; +} + +WorldPacket const* SpellNonMeleeDamageLog::Write() { *this << Me; *this << CasterGUID; @@ -32,12 +50,22 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write() *this << int32(Absorbed); *this << int32(Resisted); *this << int32(ShieldBlock); + *this << uint32(WorldTextViewers.size()); + *this << uint32(Supporters.size()); + + for (Spells::SpellSupportInfo const& supportInfo : Supporters) + *this << supportInfo; + WriteBit(Periodic); WriteBits(Flags, 7); WriteBit(false); // Debug info WriteLogDataBit(); WriteBit(ContentTuning.has_value()); FlushBits(); + + for (CombatWorldTextViewerInfo const& worldTextViewer : WorldTextViewers) + *this << worldTextViewer; + WriteLogData(); if (ContentTuning) *this << *ContentTuning; @@ -45,7 +73,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::EnvironmentalDamageLog::Write() +WorldPacket const* EnvironmentalDamageLog::Write() { *this << Victim; *this << uint8(Type); @@ -59,7 +87,7 @@ WorldPacket const* WorldPackets::CombatLog::EnvironmentalDamageLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellExecuteLog::Write() +WorldPacket const* SpellExecuteLog::Write() { *this << Caster; *this << int32(SpellID); @@ -126,7 +154,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellExecuteLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write() +WorldPacket const* SpellHealLog::Write() { *this << TargetGUID; *this << CasterGUID; @@ -135,6 +163,11 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write() *this << int32(OriginalHeal); *this << int32(OverHeal); *this << int32(Absorbed); + *this << uint32(Supporters.size()); + + for (Spells::SpellSupportInfo const& supportInfo : Supporters) + *this << supportInfo; + WriteBit(Crit); WriteBit(CritRollMade.has_value()); WriteBit(CritRollNeeded.has_value()); @@ -156,7 +189,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellPeriodicAuraLog::Write() +WorldPacket const* SpellPeriodicAuraLog::Write() { *this << TargetGUID; *this << CasterGUID; @@ -174,6 +207,11 @@ WorldPacket const* WorldPackets::CombatLog::SpellPeriodicAuraLog::Write() *this << int32(effect.SchoolMaskOrPower); *this << int32(effect.AbsorbedOrAmplitude); *this << int32(effect.Resisted); + *this << uint32(effect.Supporters.size()); + + for (Spells::SpellSupportInfo const& supportInfo : effect.Supporters) + *this << supportInfo; + WriteBit(effect.Crit); WriteBit(effect.DebugInfo.has_value()); WriteBit(effect.ContentTuning.has_value()); @@ -194,7 +232,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellPeriodicAuraLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellInterruptLog::Write() +WorldPacket const* SpellInterruptLog::Write() { _worldPacket << Caster; _worldPacket << Victim; @@ -204,7 +242,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellInterruptLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellEnergizeLog::Write() +WorldPacket const* SpellEnergizeLog::Write() { *this << TargetGUID; *this << CasterGUID; @@ -221,7 +259,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellEnergizeLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellInstakillLog::Write() +WorldPacket const* SpellInstakillLog::Write() { _worldPacket << Target; _worldPacket << Caster; @@ -230,14 +268,14 @@ WorldPacket const* WorldPackets::CombatLog::SpellInstakillLog::Write() return &_worldPacket; } -ByteBuffer& operator<<(ByteBuffer& buffer, WorldPackets::CombatLog::SpellLogMissDebug const& missDebug) +ByteBuffer& operator<<(ByteBuffer& buffer, SpellLogMissDebug const& missDebug) { buffer << float(missDebug.HitRoll); buffer << float(missDebug.HitRollNeeded); return buffer; } -ByteBuffer& operator<<(ByteBuffer& buffer, WorldPackets::CombatLog::SpellLogMissEntry const& missEntry) +ByteBuffer& operator<<(ByteBuffer& buffer, SpellLogMissEntry const& missEntry) { buffer << missEntry.Victim; buffer << uint8(missEntry.MissReason); @@ -248,7 +286,7 @@ ByteBuffer& operator<<(ByteBuffer& buffer, WorldPackets::CombatLog::SpellLogMiss return buffer; } -WorldPacket const* WorldPackets::CombatLog::SpellMissLog::Write() +WorldPacket const* SpellMissLog::Write() { _worldPacket << int32(SpellID); _worldPacket << Caster; @@ -259,7 +297,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellMissLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::ProcResist::Write() +WorldPacket const* ProcResist::Write() { _worldPacket << Caster; _worldPacket << Target; @@ -277,7 +315,7 @@ WorldPacket const* WorldPackets::CombatLog::ProcResist::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellOrDamageImmune::Write() +WorldPacket const* SpellOrDamageImmune::Write() { _worldPacket << CasterGUID; _worldPacket << VictimGUID; @@ -288,7 +326,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellOrDamageImmune::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellDamageShield::Write() +WorldPacket const* SpellDamageShield::Write() { *this << Attacker; *this << Defender; @@ -305,7 +343,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellDamageShield::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write() +WorldPacket const* AttackerStateUpdate::Write() { ByteBuffer attackRoundInfo; attackRoundInfo << uint32(HitInfo); @@ -317,9 +355,9 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write() attackRoundInfo << uint8(SubDmg.has_value()); if (SubDmg) { - attackRoundInfo << int32(SubDmg->SchoolMask); - attackRoundInfo << float(SubDmg->FDamage); - attackRoundInfo << int32(SubDmg->Damage); + attackRoundInfo << int32(SubDmg->SchoolMask); + attackRoundInfo << float(SubDmg->FDamage); + attackRoundInfo << int32(SubDmg->Damage); if (HitInfo & (HITINFO_FULL_ABSORB | HITINFO_PARTIAL_ABSORB)) attackRoundInfo << int32(SubDmg->Absorbed); if (HitInfo & (HITINFO_FULL_RESIST | HITINFO_PARTIAL_RESIST)) @@ -377,7 +415,7 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write() return &_worldPacket; } -ByteBuffer& operator<<(ByteBuffer& buffer, WorldPackets::CombatLog::SpellDispellData const& dispellData) +ByteBuffer& operator<<(ByteBuffer& buffer, SpellDispellData const& dispellData) { buffer << int32(dispellData.SpellID); buffer.WriteBit(dispellData.Harmful); @@ -393,7 +431,7 @@ ByteBuffer& operator<<(ByteBuffer& buffer, WorldPackets::CombatLog::SpellDispell return buffer; } -WorldPacket const* WorldPackets::CombatLog::SpellDispellLog::Write() +WorldPacket const* SpellDispellLog::Write() { _worldPacket.WriteBit(IsSteal); _worldPacket.WriteBit(IsBreak); @@ -408,7 +446,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellDispellLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellAbsorbLog::Write() +WorldPacket const* SpellAbsorbLog::Write() { *this << Attacker; *this << Victim; @@ -417,6 +455,11 @@ WorldPacket const* WorldPackets::CombatLog::SpellAbsorbLog::Write() *this << Caster; *this << int32(Absorbed); *this << int32(OriginalDamage); + *this << uint32(Supporters.size()); + + for (Spells::SpellSupportInfo const& supportInfo : Supporters) + *this << supportInfo; + WriteBit(Unk); WriteLogDataBit(); FlushBits(); @@ -425,7 +468,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellAbsorbLog::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::CombatLog::SpellHealAbsorbLog::Write() +WorldPacket const* SpellHealAbsorbLog::Write() { _worldPacket << Target; _worldPacket << AbsorbCaster; @@ -442,3 +485,4 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealAbsorbLog::Write() return &_worldPacket; } +} diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h index 67e064a9315..1caa678610a 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.h +++ b/src/server/game/Server/Packets/CombatLogPackets.h @@ -26,6 +26,13 @@ namespace WorldPackets { namespace CombatLog { + struct CombatWorldTextViewerInfo + { + ObjectGuid ViewerGUID; + Optional<uint8> ColorType; + Optional<uint8> ScaleType; + }; + class SpellNonMeleeDamageLog final : public CombatLogServerPacket { public: @@ -49,6 +56,8 @@ namespace WorldPackets int32 Flags = 0; // Optional<SpellNonMeleeDamageLogDebugInfo> DebugInfo; Optional<Spells::ContentTuningParams> ContentTuning; + std::vector<CombatWorldTextViewerInfo> WorldTextViewers; + std::vector<Spells::SpellSupportInfo> Supporters; }; class EnvironmentalDamageLog final : public CombatLogServerPacket @@ -95,6 +104,7 @@ namespace WorldPackets Optional<float> CritRollMade; Optional<float> CritRollNeeded; Optional<Spells::ContentTuningParams> ContentTuning; + std::vector<Spells::SpellSupportInfo> Supporters; }; class SpellPeriodicAuraLog final : public CombatLogServerPacket @@ -118,6 +128,7 @@ namespace WorldPackets bool Crit = false; Optional<PeriodicalAuraLogEffectDebugInfo> DebugInfo; Optional<Spells::ContentTuningParams> ContentTuning; + std::vector<Spells::SpellSupportInfo> Supporters; }; SpellPeriodicAuraLog() : CombatLogServerPacket(SMSG_SPELL_PERIODIC_AURA_LOG, 16 + 16 + 4 + 4 + 1) { } @@ -328,6 +339,7 @@ namespace WorldPackets int32 Absorbed = 0; int32 OriginalDamage = 0; bool Unk = false; + std::vector<Spells::SpellSupportInfo> Supporters; }; class SpellHealAbsorbLog final : public ServerPacket diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 962fe622201..f351c61f622 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -199,6 +199,16 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastVisual const& visual) return data; } + +ByteBuffer& operator<<(ByteBuffer& data, SpellSupportInfo const& supportInfo) +{ + data << supportInfo.CasterGUID; + data << int32(supportInfo.SpellID); + data << int32(supportInfo.Amount); + data << float(supportInfo.Percentage); + + return data; +} } } diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h index a5cd2eaa4ef..084d3851555 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h @@ -18,6 +18,7 @@ #ifndef CombatLogPacketsCommon_h__ #define CombatLogPacketsCommon_h__ +#include "ObjectGuid.h" #include "Packet.h" class Spell; @@ -88,10 +89,19 @@ namespace WorldPackets int32 ScriptVisualID = 0; }; + struct SpellSupportInfo + { + ObjectGuid CasterGUID; + int32 SpellID = 0; + int32 Amount = 0; + float Percentage = 0.0f; + }; + ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogData); ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTuningParams); ByteBuffer& operator>>(ByteBuffer& data, SpellCastVisual& visual); ByteBuffer& operator<<(ByteBuffer& data, SpellCastVisual const& visual); + ByteBuffer& operator<<(ByteBuffer& data, SpellSupportInfo const& supportInfo); } namespace CombatLog diff --git a/src/server/game/Server/Packets/DuelPackets.cpp b/src/server/game/Server/Packets/DuelPackets.cpp index 0cadc589b86..182a687e418 100644 --- a/src/server/game/Server/Packets/DuelPackets.cpp +++ b/src/server/game/Server/Packets/DuelPackets.cpp @@ -20,6 +20,7 @@ void WorldPackets::Duel::CanDuel::Read() { _worldPacket >> TargetGUID; + ToTheDeath = _worldPacket.ReadBit(); } WorldPacket const* WorldPackets::Duel::CanDuelResult::Write() @@ -51,6 +52,8 @@ WorldPacket const* WorldPackets::Duel::DuelRequested::Write() _worldPacket << ArbiterGUID; _worldPacket << RequestedByGUID; _worldPacket << RequestedByWowAccount; + _worldPacket.WriteBit(ToTheDeath); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/DuelPackets.h b/src/server/game/Server/Packets/DuelPackets.h index ce5e78622db..84893a4f623 100644 --- a/src/server/game/Server/Packets/DuelPackets.h +++ b/src/server/game/Server/Packets/DuelPackets.h @@ -33,6 +33,7 @@ namespace WorldPackets void Read() override; ObjectGuid TargetGUID; + bool ToTheDeath = false; }; class CanDuelResult final : public ServerPacket @@ -85,13 +86,14 @@ namespace WorldPackets class DuelRequested final : public ServerPacket { public: - DuelRequested() : ServerPacket(SMSG_DUEL_REQUESTED, 16 * 3) { } + DuelRequested() : ServerPacket(SMSG_DUEL_REQUESTED, 16 * 3 + 1) { } WorldPacket const* Write() override; ObjectGuid ArbiterGUID; ObjectGuid RequestedByGUID; ObjectGuid RequestedByWowAccount; + bool ToTheDeath = false; }; class DuelResponse : public ClientPacket diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index c747b94a643..b85bee2752d 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -30,8 +30,8 @@ void WorldPackets::Item::BuyItem::Read() _worldPacket >> Quantity; _worldPacket >> Muid; _worldPacket >> Slot; + ItemType = _worldPacket.read<ItemVendorType, int32>(); _worldPacket >> Item; - ItemType = static_cast<ItemVendorType>(_worldPacket.ReadBits(3)); } WorldPacket const* WorldPackets::Item::BuySucceeded::Write() diff --git a/src/server/game/Server/Packets/MailPackets.cpp b/src/server/game/Server/Packets/MailPackets.cpp index 77c4ae5432b..582c566fdb2 100644 --- a/src/server/game/Server/Packets/MailPackets.cpp +++ b/src/server/game/Server/Packets/MailPackets.cpp @@ -92,6 +92,10 @@ WorldPackets::Mail::MailListEntry::MailListEntry(::Mail const* mail, ::Player* p case MAIL_GAMEOBJECT: case MAIL_AUCTION: case MAIL_CALENDAR: + case MAIL_BLACKMARKET: + case MAIL_COMMERCE_AUCTION: + case MAIL_AUCTION_2: + case MAIL_ARTISANS_CONSORTIUM: AltSenderID = mail->sender; break; } @@ -115,7 +119,7 @@ WorldPackets::Mail::MailListEntry::MailListEntry(::Mail const* mail, ::Player* p ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailListEntry const& entry) { data << uint64(entry.MailID); - data << uint8(entry.SenderType); + data << uint32(entry.SenderType); data << uint64(entry.Cod); data << int32(entry.StationeryID); data << uint64(entry.SentMoney); @@ -123,8 +127,26 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailListEntry const data << float(entry.DaysLeft); data << int32(entry.MailTemplateID); data << uint32(entry.Attachments.size()); - data.WriteBit(entry.SenderCharacter.has_value()); - data.WriteBit(entry.AltSenderID.has_value()); + + switch (entry.SenderType) + { + case MAIL_NORMAL: + data << entry.SenderCharacter; + break; + case MAIL_AUCTION: + case MAIL_CREATURE: + case MAIL_GAMEOBJECT: + case MAIL_CALENDAR: + case MAIL_BLACKMARKET: + case MAIL_COMMERCE_AUCTION: + case MAIL_AUCTION_2: + case MAIL_ARTISANS_CONSORTIUM: + data << int32(entry.AltSenderID); + break; + default: + break; + } + data.WriteBits(entry.Subject.size(), 8); data.WriteBits(entry.Body.size(), 13); data.FlushBits(); @@ -132,12 +154,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailListEntry const for (WorldPackets::Mail::MailAttachedItem const& att : entry.Attachments) data << att; - if (entry.SenderCharacter) - data << *entry.SenderCharacter; - - if (entry.AltSenderID) - data << int32(*entry.AltSenderID); - data.WriteString(entry.Subject); data.WriteString(entry.Body); @@ -249,8 +265,14 @@ WorldPackets::Mail::MailQueryNextTimeResult::MailNextTimeEntry::MailNextTimeEntr case MAIL_CREATURE: case MAIL_GAMEOBJECT: case MAIL_CALENDAR: + case MAIL_BLACKMARKET: + case MAIL_COMMERCE_AUCTION: + case MAIL_AUCTION_2: + case MAIL_ARTISANS_CONSORTIUM: AltSenderID = mail->sender; break; + default: + break; } TimeLeft = mail->deliver_time - GameTime::GetGameTime(); diff --git a/src/server/game/Server/Packets/MailPackets.h b/src/server/game/Server/Packets/MailPackets.h index 2dc1fc3eb96..756a659e2a3 100644 --- a/src/server/game/Server/Packets/MailPackets.h +++ b/src/server/game/Server/Packets/MailPackets.h @@ -51,8 +51,8 @@ namespace WorldPackets uint64 MailID = 0; uint8 SenderType = 0; - Optional<ObjectGuid> SenderCharacter; - Optional<uint32> AltSenderID; + ObjectGuid SenderCharacter; + uint32 AltSenderID; uint64 Cod = 0; int32 StationeryID = 0; uint64 SentMoney = 0; diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 8089879f53f..ca8bec42391 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -783,7 +783,7 @@ WorldPacket const* WorldPackets::Misc::DisplayToast::Write() _worldPacket.WriteBit(BonusRoll); _worldPacket << Item; _worldPacket << int32(LootSpec); - _worldPacket << int32(Gender); + _worldPacket << int8(Gender); break; case DisplayToastType::NewCurrency: _worldPacket << uint32(CurrencyID); diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index e0e38969491..ac0689806d7 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -130,12 +130,12 @@ ByteBuffer& operator<<(ByteBuffer& data, VendorItem const& item) { data << uint64(item.Price); data << uint32(item.MuID); + data << int32(item.Type); data << int32(item.Durability); data << int32(item.StackCount); data << int32(item.Quantity); data << int32(item.ExtendedCostID); data << int32(item.PlayerConditionFailed); - data.WriteBits(item.Type, 3); data.WriteBit(item.Locked); data.WriteBit(item.DoNotFilterOnVendor); data.WriteBit(item.Refundable); diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index 0595903332d..ff8b278461a 100644 --- a/src/server/game/Server/Packets/PetPackets.cpp +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -53,26 +53,6 @@ WorldPacket const* WorldPackets::Pet::PetSpells::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::Pet::PetStableList::Write() -{ - _worldPacket << StableMaster; - - _worldPacket << uint32(Pets.size()); - for (PetStableInfo const& pet : Pets) - { - _worldPacket << int32(pet.PetSlot); - _worldPacket << int32(pet.PetNumber); - _worldPacket << int32(pet.CreatureID); - _worldPacket << int32(pet.DisplayID); - _worldPacket << int32(pet.ExperienceLevel); - _worldPacket << uint8(pet.PetFlags); - _worldPacket.WriteBits(pet.PetName.length(), 8); - _worldPacket.WriteString(pet.PetName); - } - - return &_worldPacket; -} - WorldPacket const* WorldPackets::Pet::PetStableResult::Write() { _worldPacket << uint8(Result); diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h index 125c79828ae..0d3aaaccbad 100644 --- a/src/server/game/Server/Packets/PetPackets.h +++ b/src/server/game/Server/Packets/PetPackets.h @@ -119,28 +119,6 @@ namespace WorldPackets std::vector<PetSpellHistory> SpellHistory; }; - struct PetStableInfo - { - uint32 PetSlot = 0; - uint32 PetNumber = 0; - uint32 CreatureID = 0; - uint32 DisplayID = 0; - uint32 ExperienceLevel = 0; - uint8 PetFlags = 0; - std::string PetName; - }; - - class PetStableList final : public ServerPacket - { - public: - PetStableList() : ServerPacket(SMSG_PET_STABLE_LIST, 18 + 2) { } - - WorldPacket const* Write() override; - - ObjectGuid StableMaster; - std::vector<PetStableInfo> Pets; - }; - class PetStableResult final : public ServerPacket { public: diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index cc0b8f54bbb..ef02dfe1c74 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -23,12 +23,49 @@ #include "World.h" #include "WorldSession.h" -void WorldPackets::Query::QueryCreature::Read() +ByteBuffer& operator<<(ByteBuffer& data, QuestPOIData const& questPOIData) +{ + data << int32(questPOIData.QuestID); + data << int32(questPOIData.Blobs.size()); + + for (QuestPOIBlobData const& questPOIBlobData : questPOIData.Blobs) + { + data << int32(questPOIBlobData.BlobIndex); + data << int32(questPOIBlobData.ObjectiveIndex); + data << int32(questPOIBlobData.QuestObjectiveID); + data << int32(questPOIBlobData.QuestObjectID); + data << int32(questPOIBlobData.MapID); + data << int32(questPOIBlobData.UiMapID); + data << int32(questPOIBlobData.Priority); + data << int32(questPOIBlobData.Flags); + data << int32(questPOIBlobData.WorldEffectID); + data << int32(questPOIBlobData.PlayerConditionID); + data << int32(questPOIBlobData.NavigationPlayerConditionID); + data << int32(questPOIBlobData.SpawnTrackingID); + data << int32(questPOIBlobData.Points.size()); + + for (QuestPOIBlobPoint const& questPOIBlobPoint : questPOIBlobData.Points) + { + data << int16(questPOIBlobPoint.X); + data << int16(questPOIBlobPoint.Y); + data << int16(questPOIBlobPoint.Z); + } + + data.WriteBit(questPOIBlobData.AlwaysAllowMergingBlobs); + data.FlushBits(); + } + + return data; +} + +namespace WorldPackets::Query +{ +void QueryCreature::Read() { _worldPacket >> CreatureID; } -WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() +WorldPacket const* QueryCreatureResponse::Write() { _worldPacket << uint32(CreatureID); _worldPacket.WriteBit(Allow); @@ -100,14 +137,14 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() return &_worldPacket; } -void WorldPackets::Query::QueryPlayerNames::Read() +void QueryPlayerNames::Read() { Players.resize(_worldPacket.read<uint32>()); for (ObjectGuid& player : Players) _worldPacket >> player; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupHint const& lookupHint) +ByteBuffer& operator<<(ByteBuffer& data, PlayerGuidLookupHint const& lookupHint) { data.WriteBit(lookupHint.VirtualRealmAddress.has_value()); data.WriteBit(lookupHint.NativeRealmAddress.has_value()); @@ -122,7 +159,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupHi return data; } -bool WorldPackets::Query::PlayerGuidLookupData::Initialize(ObjectGuid const& guid, Player const* player /*= nullptr*/) +bool PlayerGuidLookupData::Initialize(ObjectGuid const& guid, Player const* player /*= nullptr*/) { CharacterCacheEntry const* characterInfo = sCharacterCache->GetCharacterCacheByGuid(guid); if (!characterInfo) @@ -164,7 +201,7 @@ bool WorldPackets::Query::PlayerGuidLookupData::Initialize(ObjectGuid const& gui return true; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupData const& lookupData) +ByteBuffer& operator<<(ByteBuffer& data, PlayerGuidLookupData const& lookupData) { data.WriteBit(lookupData.IsDeleted); data.WriteBits(lookupData.Name.length(), 6); @@ -190,7 +227,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::NameCacheUnused920 const& thing) +ByteBuffer& operator<<(ByteBuffer& data, NameCacheUnused920 const& thing) { data << uint32(thing.Unused1); data << thing.Unused2; @@ -202,7 +239,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::NameCacheUnused920 return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::NameCacheLookupResult const& result) +ByteBuffer& operator<<(ByteBuffer& data, NameCacheLookupResult const& result) { data << uint8(result.Result); data << result.Player; @@ -219,7 +256,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::NameCacheLookupRes return data; } -WorldPacket const* WorldPackets::Query::QueryPlayerNamesResponse::Write() +WorldPacket const* QueryPlayerNamesResponse::Write() { _worldPacket << uint32(Players.size()); for (NameCacheLookupResult const& lookupResult : Players) @@ -228,13 +265,13 @@ WorldPacket const* WorldPackets::Query::QueryPlayerNamesResponse::Write() return &_worldPacket; } -void WorldPackets::Query::QueryPageText::Read() +void QueryPageText::Read() { _worldPacket >> PageTextID; _worldPacket >> ItemGUID; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::QueryPageTextResponse::PageTextInfo const& page) +ByteBuffer& operator<<(ByteBuffer& data, QueryPageTextResponse::PageTextInfo const& page) { data << uint32(page.ID); data << uint32(page.NextPageID); @@ -248,7 +285,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::QueryPageTextRespo return data; } -WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write() +WorldPacket const* QueryPageTextResponse::Write() { _worldPacket << uint32(PageTextID); _worldPacket.WriteBit(Allow); @@ -265,13 +302,13 @@ WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write() return &_worldPacket; } -void WorldPackets::Query::QueryNPCText::Read() +void QueryNPCText::Read() { _worldPacket >> TextID; _worldPacket >> Guid; } -WorldPacket const* WorldPackets::Query::QueryNPCTextResponse::Write() +WorldPacket const* QueryNPCTextResponse::Write() { _worldPacket << uint32(TextID); _worldPacket.WriteBit(Allow); @@ -289,13 +326,13 @@ WorldPacket const* WorldPackets::Query::QueryNPCTextResponse::Write() return &_worldPacket; } -void WorldPackets::Query::QueryGameObject::Read() +void QueryGameObject::Read() { _worldPacket >> GameObjectID; _worldPacket >> Guid; } -WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write() +WorldPacket const* QueryGameObjectResponse::Write() { _worldPacket << GameObjectID; _worldPacket << Guid; @@ -332,12 +369,12 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write() return &_worldPacket; } -void WorldPackets::Query::QueryCorpseLocationFromClient::Read() +void QueryCorpseLocationFromClient::Read() { _worldPacket >> Player; } -WorldPacket const* WorldPackets::Query::CorpseLocation::Write() +WorldPacket const* CorpseLocation::Write() { _worldPacket.WriteBit(Valid); _worldPacket.FlushBits(); @@ -351,13 +388,13 @@ WorldPacket const* WorldPackets::Query::CorpseLocation::Write() return &_worldPacket; } -void WorldPackets::Query::QueryCorpseTransport::Read() +void QueryCorpseTransport::Read() { _worldPacket >> Player; _worldPacket >> Transport; } -WorldPacket const* WorldPackets::Query::CorpseTransportQuery::Write() +WorldPacket const* CorpseTransportQuery::Write() { _worldPacket << Player; _worldPacket << Position; @@ -366,14 +403,14 @@ WorldPacket const* WorldPackets::Query::CorpseTransportQuery::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::Query::QueryTimeResponse::Write() +WorldPacket const* QueryTimeResponse::Write() { _worldPacket << CurrentTime; return &_worldPacket; } -void WorldPackets::Query::QuestPOIQuery::Read() +void QuestPOIQuery::Read() { _worldPacket >> MissingQuestCount; @@ -381,42 +418,7 @@ void WorldPackets::Query::QuestPOIQuery::Read() _worldPacket >> MissingQuestPOIs[i]; } -ByteBuffer& operator<<(ByteBuffer& data, QuestPOIData const& questPOIData) -{ - data << int32(questPOIData.QuestID); - data << int32(questPOIData.Blobs.size()); - - for (QuestPOIBlobData const& questPOIBlobData : questPOIData.Blobs) - { - data << int32(questPOIBlobData.BlobIndex); - data << int32(questPOIBlobData.ObjectiveIndex); - data << int32(questPOIBlobData.QuestObjectiveID); - data << int32(questPOIBlobData.QuestObjectID); - data << int32(questPOIBlobData.MapID); - data << int32(questPOIBlobData.UiMapID); - data << int32(questPOIBlobData.Priority); - data << int32(questPOIBlobData.Flags); - data << int32(questPOIBlobData.WorldEffectID); - data << int32(questPOIBlobData.PlayerConditionID); - data << int32(questPOIBlobData.NavigationPlayerConditionID); - data << int32(questPOIBlobData.SpawnTrackingID); - data << int32(questPOIBlobData.Points.size()); - - for (QuestPOIBlobPoint const& questPOIBlobPoint : questPOIBlobData.Points) - { - data << int16(questPOIBlobPoint.X); - data << int16(questPOIBlobPoint.Y); - data << int16(questPOIBlobPoint.Z); - } - - data.WriteBit(questPOIBlobData.AlwaysAllowMergingBlobs); - data.FlushBits(); - } - - return data; -} - -WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write() +WorldPacket const* QuestPOIQueryResponse::Write() { _worldPacket << int32(QuestPOIDataStats.size()); _worldPacket << int32(QuestPOIDataStats.size()); @@ -434,14 +436,14 @@ WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write() return &_worldPacket; } -void WorldPackets::Query::QueryQuestCompletionNPCs::Read() +void QueryQuestCompletionNPCs::Read() { QuestCompletionNPCs.resize(_worldPacket.read<uint32>()); if (!QuestCompletionNPCs.empty()) _worldPacket.read(QuestCompletionNPCs.data(), QuestCompletionNPCs.size()); } -WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write() +WorldPacket const* QuestCompletionNPCResponse::Write() { _worldPacket << uint32(QuestCompletionNPCs.size()); for (auto& quest : QuestCompletionNPCs) @@ -455,12 +457,12 @@ WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write() return &_worldPacket; } -void WorldPackets::Query::QueryPetName::Read() +void QueryPetName::Read() { _worldPacket >> UnitGUID; } -WorldPacket const* WorldPackets::Query::QueryPetNameResponse::Write() +WorldPacket const* QueryPetNameResponse::Write() { _worldPacket << UnitGUID; _worldPacket.WriteBit(Allow); @@ -485,12 +487,12 @@ WorldPacket const* WorldPackets::Query::QueryPetNameResponse::Write() return &_worldPacket; } -void WorldPackets::Query::ItemTextQuery::Read() +void ItemTextQuery::Read() { _worldPacket >> Id; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::ItemTextCache const& itemTextCache) +ByteBuffer& operator<<(ByteBuffer& data, ItemTextCache const& itemTextCache) { data.WriteBits(itemTextCache.Text.length(), 13); data.FlushBits(); @@ -500,7 +502,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::ItemTextCache cons return data; } -WorldPacket const* WorldPackets::Query::QueryItemTextResponse::Write() +WorldPacket const* QueryItemTextResponse::Write() { _worldPacket.WriteBit(Valid); _worldPacket.FlushBits(); @@ -510,12 +512,12 @@ WorldPacket const* WorldPackets::Query::QueryItemTextResponse::Write() return &_worldPacket; } -void WorldPackets::Query::QueryRealmName::Read() +void QueryRealmName::Read() { _worldPacket >> VirtualRealmAddress; } -WorldPacket const* WorldPackets::Query::RealmQueryResponse::Write() +WorldPacket const* RealmQueryResponse::Write() { _worldPacket << uint32(VirtualRealmAddress); _worldPacket << uint8(LookupState); @@ -524,3 +526,4 @@ WorldPacket const* WorldPackets::Query::RealmQueryResponse::Write() return &_worldPacket; } +} diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h index d8b12fa518b..ac4a9252245 100644 --- a/src/server/game/Server/Packets/QueryPackets.h +++ b/src/server/game/Server/Packets/QueryPackets.h @@ -439,11 +439,12 @@ namespace WorldPackets uint8 LookupState = 0; WorldPackets::Auth::VirtualRealmNameInfo NameInfo; }; + + ByteBuffer& operator<<(ByteBuffer& data, PlayerGuidLookupHint const& lookupHint); + ByteBuffer& operator<<(ByteBuffer& data, PlayerGuidLookupData const& lookupData); } } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupHint const& lookupHint); -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupData const& lookupData); ByteBuffer& operator<<(ByteBuffer& data, QuestPOIData const& questPOIData); #endif // QueryPackets_h__ diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index c05112afce3..f270a1efd44 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -65,7 +65,7 @@ void QuestGiverStatusTrackedQuery::Read() WorldPacket const* QuestGiverStatus::Write() { _worldPacket << QuestGiver.Guid; - _worldPacket << uint32(QuestGiver.Status); + _worldPacket << uint64(QuestGiver.Status); return &_worldPacket; } @@ -76,7 +76,7 @@ WorldPacket const* QuestGiverStatusMultiple::Write() for (QuestGiverInfo const& questGiver : QuestGiver) { _worldPacket << questGiver.Guid; - _worldPacket << uint32(questGiver.Status); + _worldPacket << uint64(questGiver.Status); } return &_worldPacket; @@ -178,7 +178,7 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket << int32(Info.CompleteSoundKitID); _worldPacket << int32(Info.AreaGroupID); - _worldPacket << int32(Info.TimeAllowed); + _worldPacket << int64(Info.TimeAllowed); _worldPacket << uint32(Info.Objectives.size()); _worldPacket << uint64(Info.AllowableRaces.RawValue); diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 0ff6a0485b2..1c30e309ecc 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -184,7 +184,7 @@ namespace WorldPackets int32 AcceptedSoundKitID = 0; int32 CompleteSoundKitID = 0; int32 AreaGroupID = 0; - int32 TimeAllowed = 0; + int64 TimeAllowed = 0; int32 TreasurePickerID = 0; int32 Expansion = 0; int32 ManagedWorldStateID = 0; diff --git a/src/server/game/Server/Packets/ScenarioPackets.cpp b/src/server/game/Server/Packets/ScenarioPackets.cpp index 56cd7ebcfd1..616c410ab00 100644 --- a/src/server/game/Server/Packets/ScenarioPackets.cpp +++ b/src/server/game/Server/Packets/ScenarioPackets.cpp @@ -18,7 +18,9 @@ #include "ScenarioPackets.h" #include "ScenarioMgr.h" -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Scenario::BonusObjectiveData const& bonusObjective) +namespace WorldPackets::Scenario +{ +ByteBuffer& operator<<(ByteBuffer& data, BonusObjectiveData const& bonusObjective) { data << int32(bonusObjective.BonusObjectiveID); data.WriteBit(bonusObjective.ObjectiveComplete); @@ -26,7 +28,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Scenario::BonusObjectiveD return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Scenario::ScenarioSpellUpdate const& spell) +ByteBuffer& operator<<(ByteBuffer& data, ScenarioSpellUpdate const& spell) { data << uint32(spell.SpellID); data.WriteBit(spell.Usable); @@ -34,8 +36,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Scenario::ScenarioSpellUp return data; } -WorldPacket const* WorldPackets::Scenario::ScenarioState::Write() +WorldPacket const* ScenarioState::Write() { + _worldPacket << ScenarioGUID; _worldPacket << int32(ScenarioID); _worldPacket << int32(CurrentStep); _worldPacket << uint32(DifficultyID); @@ -48,40 +51,41 @@ WorldPacket const* WorldPackets::Scenario::ScenarioState::Write() _worldPacket << uint32(Spells.size()); _worldPacket << PlayerGUID; - for (uint32 i = 0; i < PickedSteps.size(); ++i) - _worldPacket << uint32(PickedSteps[i]); + if (!PickedSteps.empty()) + _worldPacket.append(PickedSteps.data(), PickedSteps.size()); _worldPacket.WriteBit(ScenarioComplete); _worldPacket.FlushBits(); - for (WorldPackets::Achievement::CriteriaProgress const& progress : CriteriaProgress) - _worldPacket << progress; + for (Achievement::CriteriaProgress const& progress : CriteriaProgress) + _worldPacket << progress; - for (WorldPackets::Scenario::BonusObjectiveData const& bonusObjective : BonusObjectives) - _worldPacket << bonusObjective; + for (BonusObjectiveData const& bonusObjective : BonusObjectives) + _worldPacket << bonusObjective; - for (WorldPackets::Scenario::ScenarioSpellUpdate const& spell : Spells) - _worldPacket << spell; + for (ScenarioSpellUpdate const& spell : Spells) + _worldPacket << spell; return &_worldPacket; } -WorldPacket const* WorldPackets::Scenario::ScenarioProgressUpdate::Write() +WorldPacket const* ScenarioProgressUpdate::Write() { _worldPacket << CriteriaProgress; return &_worldPacket; } -WorldPacket const* WorldPackets::Scenario::ScenarioCompleted::Write() +WorldPacket const* ScenarioCompleted::Write() { _worldPacket << uint32(ScenarioID); return &_worldPacket; } -WorldPacket const* WorldPackets::Scenario::ScenarioVacate::Write() +WorldPacket const* ScenarioVacate::Write() { + _worldPacket << ScenarioGUID; _worldPacket << int32(ScenarioID); _worldPacket << int32(Unk1); _worldPacket.WriteBits(Unk2, 2); @@ -90,14 +94,14 @@ WorldPacket const* WorldPackets::Scenario::ScenarioVacate::Write() return &_worldPacket; } -void WorldPackets::Scenario::QueryScenarioPOI::Read() +void QueryScenarioPOI::Read() { MissingScenarioPOIs.resize(_worldPacket.read<uint32>()); for (int32& scenarioPOI : MissingScenarioPOIs) _worldPacket >> scenarioPOI; } -WorldPacket const* WorldPackets::Scenario::ScenarioPOIs::Write() +WorldPacket const* ScenarioPOIs::Write() { _worldPacket << uint32(ScenarioPOIDataStats.size()); @@ -129,3 +133,4 @@ WorldPacket const* WorldPackets::Scenario::ScenarioPOIs::Write() return &_worldPacket; } +} diff --git a/src/server/game/Server/Packets/ScenarioPackets.h b/src/server/game/Server/Packets/ScenarioPackets.h index 8997129e094..1193e6de42d 100644 --- a/src/server/game/Server/Packets/ScenarioPackets.h +++ b/src/server/game/Server/Packets/ScenarioPackets.h @@ -26,101 +26,100 @@ struct ScenarioPOI; -namespace WorldPackets +namespace WorldPackets::Scenario { - namespace Scenario - { - struct BonusObjectiveData - { - int32 BonusObjectiveID = 0; - bool ObjectiveComplete = false; - }; - - struct ScenarioSpellUpdate - { - uint32 SpellID = 0; - bool Usable = true; - }; - - class ScenarioState final : public ServerPacket - { - public: - ScenarioState() : ServerPacket(SMSG_SCENARIO_STATE) { } - - WorldPacket const* Write() override; - - int32 ScenarioID = 0; - int32 CurrentStep = -1; - uint32 DifficultyID = 0; - uint32 WaveCurrent = 0; - uint32 WaveMax = 0; - uint32 TimerDuration = 0; - std::vector<WorldPackets::Achievement::CriteriaProgress> CriteriaProgress; - std::vector<BonusObjectiveData> BonusObjectives; - std::vector<uint32> PickedSteps; - std::vector<ScenarioSpellUpdate> Spells; - ObjectGuid PlayerGUID; - bool ScenarioComplete = false; - }; - - class ScenarioProgressUpdate final : public ServerPacket - { - public: - ScenarioProgressUpdate() : ServerPacket(SMSG_SCENARIO_PROGRESS_UPDATE) { } - - WorldPacket const* Write() override; - - WorldPackets::Achievement::CriteriaProgress CriteriaProgress; - }; - - class ScenarioCompleted final : public ServerPacket - { - public: - ScenarioCompleted(uint32 scenarioId) : ServerPacket(SMSG_SCENARIO_COMPLETED, 4), ScenarioID(scenarioId) { } - - WorldPacket const* Write() override; - - uint32 ScenarioID = 0; - }; - - class ScenarioVacate final : public ServerPacket - { - public: - ScenarioVacate() : ServerPacket(SMSG_SCENARIO_VACATE, 4 + 4 + 1) { } - - WorldPacket const* Write() override; - - int32 ScenarioID = 0; - int32 Unk1 = 0; - uint8 Unk2 = 0; - }; - - class QueryScenarioPOI final : public ClientPacket - { - public: - QueryScenarioPOI(WorldPacket&& packet) : ClientPacket(CMSG_QUERY_SCENARIO_POI, std::move(packet)) { } - - void Read() override; - - Array<int32, MAX_ALLOWED_SCENARIO_POI_QUERY_SIZE> MissingScenarioPOIs; - }; - - struct ScenarioPOIData - { - int32 CriteriaTreeID = 0; - std::vector<ScenarioPOI> const* ScenarioPOIs = nullptr; - }; - - class ScenarioPOIs final : public ServerPacket - { - public: - ScenarioPOIs() : ServerPacket(SMSG_SCENARIO_POIS) { } - - WorldPacket const* Write() override; - - std::vector<ScenarioPOIData> ScenarioPOIDataStats; - }; - } +struct BonusObjectiveData +{ + int32 BonusObjectiveID = 0; + bool ObjectiveComplete = false; +}; + +struct ScenarioSpellUpdate +{ + uint32 SpellID = 0; + bool Usable = true; +}; + +class ScenarioState final : public ServerPacket +{ +public: + ScenarioState() : ServerPacket(SMSG_SCENARIO_STATE) { } + + WorldPacket const* Write() override; + + ObjectGuid ScenarioGUID; + int32 ScenarioID = 0; + int32 CurrentStep = -1; + uint32 DifficultyID = 0; + uint32 WaveCurrent = 0; + uint32 WaveMax = 0; + uint32 TimerDuration = 0; + std::vector<Achievement::CriteriaProgress> CriteriaProgress; + std::vector<BonusObjectiveData> BonusObjectives; + std::vector<uint32> PickedSteps; + std::vector<ScenarioSpellUpdate> Spells; + ObjectGuid PlayerGUID; + bool ScenarioComplete = false; +}; + +class ScenarioProgressUpdate final : public ServerPacket +{ +public: + ScenarioProgressUpdate() : ServerPacket(SMSG_SCENARIO_PROGRESS_UPDATE) { } + + WorldPacket const* Write() override; + + Achievement::CriteriaProgress CriteriaProgress; +}; + +class ScenarioCompleted final : public ServerPacket +{ +public: + ScenarioCompleted(uint32 scenarioId) : ServerPacket(SMSG_SCENARIO_COMPLETED, 4), ScenarioID(scenarioId) { } + + WorldPacket const* Write() override; + + uint32 ScenarioID = 0; +}; + +class ScenarioVacate final : public ServerPacket +{ +public: + ScenarioVacate() : ServerPacket(SMSG_SCENARIO_VACATE, 4 + 4 + 1) { } + + WorldPacket const* Write() override; + + ObjectGuid ScenarioGUID; + int32 ScenarioID = 0; + int32 Unk1 = 0; + uint8 Unk2 = 0; +}; + +class QueryScenarioPOI final : public ClientPacket +{ +public: + QueryScenarioPOI(WorldPacket&& packet) : ClientPacket(CMSG_QUERY_SCENARIO_POI, std::move(packet)) { } + + void Read() override; + + Array<int32, MAX_ALLOWED_SCENARIO_POI_QUERY_SIZE> MissingScenarioPOIs; +}; + +struct ScenarioPOIData +{ + int32 CriteriaTreeID = 0; + std::vector<ScenarioPOI> const* ScenarioPOIs = nullptr; +}; + +class ScenarioPOIs final : public ServerPacket +{ +public: + ScenarioPOIs() : ServerPacket(SMSG_SCENARIO_POIS) { } + + WorldPacket const* Write() override; + + std::vector<ScenarioPOIData> ScenarioPOIDataStats; +}; } #endif // ScenarioPackets_h__ diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 2bf9974a4a6..6a6c4b74ea0 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -131,6 +131,7 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteBit(LFGListCustomRequiresAuthenticator); _worldPacket.WriteBit(AddonsDisabled); _worldPacket.WriteBit(Unused1000); + _worldPacket.WriteBit(ContentTrackingEnabled); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 2f1dd4d7c97..bdbb066d33d 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -158,6 +158,7 @@ namespace WorldPackets bool LFGListCustomRequiresAuthenticator = false; bool AddonsDisabled = false; bool Unused1000 = false; + bool ContentTrackingEnabled = false; SocialQueueConfig QuickJoinConfig; SquelchInfo Squelch; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 93c375257fa..9367064babf 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -342,6 +342,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode); DEFINE_HANDLER(CMSG_CLIENT_PORT_GRAVEYARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePortGraveyard); DEFINE_HANDLER(CMSG_CLOSE_INTERACTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCloseInteraction); + DEFINE_HANDLER(CMSG_CLOSE_QUEST_CHOICE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CLOSE_RUNEFORGE_INTERACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CLUB_FINDER_APPLICATION_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -378,6 +379,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONSUMABLE_TOKEN_REDEEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CONTENT_TRACKING_START_TRACKING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CONTENT_TRACKING_STOP_TRACKING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONTRIBUTION_CONTRIBUTE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CONVERSATION_CINEMATIC_READY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -392,6 +395,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CRAFTING_ORDER_LIST_MY_ORDERS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CRAFTING_ORDER_REJECT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CRAFTING_ORDER_RELEASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CRAFTING_ORDER_REPORT_PLAYER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharCreateOpcode); DEFINE_HANDLER(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -817,7 +821,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode); DEFINE_HANDLER(CMSG_REQUEST_RATED_PVP_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedPvpInfo); DEFINE_HANDLER(CMSG_REQUEST_REALM_GUILD_MASTER_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_REQUEST_RESEARCH_HISTORY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_SCHEDULED_PVP_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_STABLED_PETS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestStabledPets); DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_EXIT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestVehicleExit); @@ -832,6 +835,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_RESURRECT_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleResurrectResponse); DEFINE_HANDLER(CMSG_REVERT_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_RIDE_VEHICLE_INTERACT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRideVehicleInteract); + DEFINE_HANDLER(CMSG_RPE_RESET_CHARACTER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SAVE_CUF_PROFILES, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSaveCUFProfiles); DEFINE_HANDLER(CMSG_SAVE_ACCOUNT_DATA_EXPORT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SAVE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetSave); @@ -840,6 +844,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleScenePlaybackComplete); DEFINE_HANDLER(CMSG_SCENE_TRIGGER_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSceneTriggerEvent); DEFINE_HANDLER(CMSG_SELF_RES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSelfResOpcode); + DEFINE_HANDLER(CMSG_SELL_ALL_JUNK_ITEMS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSellItemOpcode); DEFINE_HANDLER(CMSG_SEND_CHARACTER_CLUB_INVITATION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SEND_CONTACT_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleContactListOpcode); @@ -896,6 +901,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SORT_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortBags); DEFINE_HANDLER(CMSG_SORT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortBankBags); DEFINE_HANDLER(CMSG_SORT_REAGENT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortReagentBankBags); + DEFINE_HANDLER(CMSG_SPAWN_TRACKING_UPDATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SPELL_CLICK, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSpellClick); DEFINE_HANDLER(CMSG_SPELL_EMPOWER_RELEASE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SPELL_EMPOWER_RESTART, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); @@ -982,7 +988,7 @@ void OpcodeTable::Initialize() #undef DEFINE_HANDLER #define DEFINE_SERVER_OPCODE_HANDLER(opcode, status, con) \ - static_assert(status == STATUS_NEVER || status == STATUS_UNHANDLED, "Invalid status for server opcode"); \ + static_assert((status) == STATUS_NEVER || (status) == STATUS_UNHANDLED, "Invalid status for server opcode"); \ ValidateAndSetServerOpcode(opcode, #opcode, status, con) DEFINE_SERVER_OPCODE_HANDLER(SMSG_ABORT_NEW_WORLD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1295,6 +1301,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_TOAST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_WORLD_TEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_WORLD_TEXT_ON_TARGET, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DROP_NEW_CONNECTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_ARRANGED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); @@ -1333,6 +1340,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_ANIMATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_OBJECT_RELINK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_RANDOM_TRANSMOG_TOAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FRIEND_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAIN_MAW_POWER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1423,6 +1431,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_GARRISON_INFO_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_REALM_HIDDEN_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_REMAINING_GAME_TIME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_SELECTED_TROPHY_ID_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); @@ -1737,6 +1746,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MYTHIC_PLUS_SEASON_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_DATA_BUILD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DEST_LOC_SPELL_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1767,6 +1777,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_DISABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_VENDOR_PENDING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERKS_PROGRAM_VENDOR_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_RENAME_GUILD_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1775,7 +1786,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SIGN_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_ACTION_FEEDBACK, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_ACTION_SOUND, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BATTLE_CHAT_RESTRICTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_BATTLE_FINALIZE_LOCATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1800,9 +1810,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_MODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_NAME_INVALID, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_NEWLY_TAMED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_SLOT_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_SPELLS_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_STABLE_LIST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_STABLE_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_TAME_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1850,6 +1858,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_MATCH_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_MATCH_INITIALIZE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_MATCH_SET_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_MATCH_START, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_MATCH_STATISTICS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1927,7 +1936,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_CEMETERY_LIST_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_REWARDS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESEARCH_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_COMPRESSION_CONTEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_LAST_LOADED_CONFIG_CVARS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1982,9 +1990,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_TIME_OFFSET, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SETUP_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SETUP_RESEARCH_HISTORY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_AI_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_ALL_TASK_PROGRESS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_ANIM_TIER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_CHR_UPGRADE_TIER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -2009,7 +2015,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_SHIPMENT_READY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_TASK_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_TIME_ZONE_INFORMATION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_VEHICLE_REC_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHADOWLANDS_CAPACITANCE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -2122,7 +2127,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_PRIMARY_SPEC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_RECENT_PLAYER_GUIDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_TALENT_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_TASK_PROGRESS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WORLD_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_ADD, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_REMOVE, STATUS_NEVER, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 4d8e39feb13..6d9b0080918 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -44,51 +44,51 @@ enum OpcodeMisc : uint16 enum OpcodeClient : uint16 { - CMSG_ABANDON_NPE_RESPONSE = 0x33EB, + CMSG_ABANDON_NPE_RESPONSE = 0x33F0, CMSG_ACCEPT_GUILD_INVITE = 0x35FD, - CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x3396, + CMSG_ACCEPT_RETURNING_PLAYER_PROMPT = 0x339B, CMSG_ACCEPT_SOCIAL_CONTRACT = 0x3744, CMSG_ACCEPT_TRADE = 0x315A, CMSG_ACCEPT_WARGAME_INVITE = 0x35E0, CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x3733, - CMSG_ACTIVATE_SOULBIND = 0x33DA, - CMSG_ACTIVATE_TAXI = 0x34B1, + CMSG_ACTIVATE_SOULBIND = 0x33DF, + CMSG_ACTIVATE_TAXI = 0x34B2, CMSG_ADDON_LIST = 0x35D8, - CMSG_ADD_ACCOUNT_COSMETIC = 0x32B0, + CMSG_ADD_ACCOUNT_COSMETIC = 0x32B6, CMSG_ADD_BATTLENET_FRIEND = 0x3659, CMSG_ADD_FRIEND = 0x36CD, CMSG_ADD_IGNORE = 0x36D1, - CMSG_ADD_TOY = 0x32AF, - CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3203, - CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33DD, - CMSG_ADVENTURE_MAP_START_QUEST = 0x3369, - CMSG_ALTER_APPEARANCE = 0x3503, - CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B6, - CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B7, - CMSG_AREA_TRIGGER = 0x31D7, - CMSG_ARTIFACT_ADD_POWER = 0x31AA, - CMSG_ARTIFACT_SET_APPEARANCE = 0x31AC, - CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320F, - CMSG_ATTACK_STOP = 0x3262, - CMSG_ATTACK_SWING = 0x3261, + CMSG_ADD_TOY = 0x32B5, + CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3202, + CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x33E2, + CMSG_ADVENTURE_MAP_START_QUEST = 0x336E, + CMSG_ALTER_APPEARANCE = 0x3504, + CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B7, + CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B8, + CMSG_AREA_TRIGGER = 0x31D6, + CMSG_ARTIFACT_ADD_POWER = 0x31A9, + CMSG_ARTIFACT_SET_APPEARANCE = 0x31AB, + CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x320E, + CMSG_ATTACK_STOP = 0x3267, + CMSG_ATTACK_SWING = 0x3266, CMSG_AUCTIONABLE_TOKEN_SELL = 0x36E3, CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x36E4, - CMSG_AUCTION_BROWSE_QUERY = 0x34D6, - CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34DE, - CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DD, - CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x34DC, - CMSG_AUCTION_HELLO_REQUEST = 0x34D1, - CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x34DA, - CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x34DB, - CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x34D7, - CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x34D8, - CMSG_AUCTION_LIST_OWNED_ITEMS = 0x34D9, - CMSG_AUCTION_PLACE_BID = 0x34D5, - CMSG_AUCTION_REMOVE_ITEM = 0x34D3, - CMSG_AUCTION_REPLICATE_ITEMS = 0x34D4, + CMSG_AUCTION_BROWSE_QUERY = 0x34D7, + CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x34DF, + CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x34DE, + CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x34DD, + CMSG_AUCTION_HELLO_REQUEST = 0x34D2, + CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x34DB, + CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x34DC, + CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x34D8, + CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x34D9, + CMSG_AUCTION_LIST_OWNED_ITEMS = 0x34DA, + CMSG_AUCTION_PLACE_BID = 0x34D6, + CMSG_AUCTION_REMOVE_ITEM = 0x34D4, + CMSG_AUCTION_REPLICATE_ITEMS = 0x34D5, CMSG_AUCTION_REQUEST_FAVORITE_LIST = 0x3735, - CMSG_AUCTION_SELL_COMMODITY = 0x34DF, - CMSG_AUCTION_SELL_ITEM = 0x34D2, + CMSG_AUCTION_SELL_COMMODITY = 0x34E0, + CMSG_AUCTION_SELL_ITEM = 0x34D3, CMSG_AUCTION_SET_FAVORITE_ITEM = 0x3734, CMSG_AUTH_CONTINUED_SESSION = 0x3766, CMSG_AUTH_SESSION = 0x3765, @@ -98,23 +98,23 @@ enum OpcodeClient : uint16 CMSG_AUTOSTORE_BANK_REAGENT = 0x3998, CMSG_AUTO_EQUIP_ITEM = 0x399A, CMSG_AUTO_EQUIP_ITEM_SLOT = 0x399F, - CMSG_AUTO_GUILD_BANK_ITEM = 0x34BD, + CMSG_AUTO_GUILD_BANK_ITEM = 0x34BE, CMSG_AUTO_STORE_BAG_ITEM = 0x399B, - CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x34C6, - CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3392, - CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3374, - CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3394, - CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3393, - CMSG_BANKER_ACTIVATE = 0x34B9, - CMSG_BATTLEFIELD_LEAVE = 0x3173, - CMSG_BATTLEFIELD_LIST = 0x317E, - CMSG_BATTLEFIELD_PORT = 0x3538, - CMSG_BATTLEMASTER_HELLO = 0x32CC, - CMSG_BATTLEMASTER_JOIN = 0x3530, - CMSG_BATTLEMASTER_JOIN_ARENA = 0x3531, - CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3536, - CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3532, - CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3533, + CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x34C7, + CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3397, + CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3379, + CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3399, + CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3398, + CMSG_BANKER_ACTIVATE = 0x34BA, + CMSG_BATTLEFIELD_LEAVE = 0x3172, + CMSG_BATTLEFIELD_LIST = 0x317D, + CMSG_BATTLEFIELD_PORT = 0x3539, + CMSG_BATTLEMASTER_HELLO = 0x32D2, + CMSG_BATTLEMASTER_JOIN = 0x3531, + CMSG_BATTLEMASTER_JOIN_ARENA = 0x3532, + CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3537, + CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3533, + CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3534, CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D0, CMSG_BATTLENET_REQUEST = 0x36F2, CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CA, @@ -137,21 +137,21 @@ enum OpcodeClient : uint16 CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362C, CMSG_BATTLE_PET_SET_FLAGS = 0x362F, CMSG_BATTLE_PET_SUMMON = 0x3628, - CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E1, - CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31E0, + CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31E0, + CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31DF, CMSG_BEGIN_TRADE = 0x3157, - CMSG_BINDER_ACTIVATE = 0x34B8, - CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3540, - CMSG_BLACK_MARKET_OPEN = 0x353E, - CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x353F, - CMSG_BONUS_ROLL = 0x3395, + CMSG_BINDER_ACTIVATE = 0x34B9, + CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3541, + CMSG_BLACK_MARKET_OPEN = 0x353F, + CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3540, + CMSG_BONUS_ROLL = 0x339A, CMSG_BUG_REPORT = 0x3684, CMSG_BUSY_TRADE = 0x3158, - CMSG_BUY_BACK_ITEM = 0x34AA, - CMSG_BUY_BANK_SLOT = 0x34BA, - CMSG_BUY_ITEM = 0x34A9, - CMSG_BUY_REAGENT_BANK = 0x34BB, - CMSG_CAGE_BATTLE_PET = 0x31F3, + CMSG_BUY_BACK_ITEM = 0x34AB, + CMSG_BUY_BANK_SLOT = 0x34BB, + CMSG_BUY_ITEM = 0x34AA, + CMSG_BUY_REAGENT_BANK = 0x34BC, + CMSG_CAGE_BATTLE_PET = 0x31F2, CMSG_CALENDAR_ADD_EVENT = 0x367C, CMSG_CALENDAR_COMMUNITY_INVITE = 0x3670, CMSG_CALENDAR_COMPLAIN = 0x3678, @@ -167,24 +167,24 @@ enum OpcodeClient : uint16 CMSG_CALENDAR_RSVP = 0x3673, CMSG_CALENDAR_STATUS = 0x3674, CMSG_CALENDAR_UPDATE_EVENT = 0x367D, - CMSG_CANCEL_AURA = 0x31AE, - CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F5, - CMSG_CANCEL_CAST = 0x32B6, - CMSG_CANCEL_CHANNELLING = 0x327A, - CMSG_CANCEL_GROWTH_AURA = 0x3282, - CMSG_CANCEL_MASTER_LOOT_ROLL = 0x321B, - CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AD, - CMSG_CANCEL_MOUNT_AURA = 0x3295, - CMSG_CANCEL_QUEUED_SPELL = 0x317F, - CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3500, + CMSG_CANCEL_AURA = 0x31AD, + CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34F6, + CMSG_CANCEL_CAST = 0x32BC, + CMSG_CANCEL_CHANNELLING = 0x327F, + CMSG_CANCEL_GROWTH_AURA = 0x3287, + CMSG_CANCEL_MASTER_LOOT_ROLL = 0x321A, + CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AC, + CMSG_CANCEL_MOUNT_AURA = 0x329A, + CMSG_CANCEL_QUEUED_SPELL = 0x317E, + CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3501, CMSG_CANCEL_TRADE = 0x315C, CMSG_CAN_DUEL = 0x3661, CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x3705, - CMSG_CAST_SPELL = 0x32B3, + CMSG_CAST_SPELL = 0x32B9, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x308F, - CMSG_CHANGE_BAG_SLOT_FLAG = 0x334D, - CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x334E, - CMSG_CHANGE_MONUMENT_APPEARANCE = 0x332E, + CMSG_CHANGE_BAG_SLOT_FLAG = 0x3353, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3354, + CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3334, CMSG_CHANGE_REALM_TICKET = 0x36F7, CMSG_CHANGE_SUB_GROUP = 0x364B, CMSG_CHARACTER_CHECK_UPGRADE = 0x36C3, @@ -232,24 +232,25 @@ enum OpcodeClient : uint16 CMSG_CHAT_REPORT_IGNORED = 0x37CB, CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE, CMSG_CHECK_CHARACTER_NAME_AVAILABILITY = 0x3644, - CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3253, - CMSG_CHOICE_RESPONSE = 0x32BB, - CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33D9, - CMSG_CLAIM_WEEKLY_REWARD = 0x33B5, - CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3411, - CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3213, - CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3413, - CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3410, - CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x340F, - CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x3414, - CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3212, + CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID = 0x3258, + CMSG_CHOICE_RESPONSE = 0x32C1, + CMSG_CHROMIE_TIME_SELECT_EXPANSION = 0x33DE, + CMSG_CLAIM_WEEKLY_REWARD = 0x33BA, + CMSG_CLASS_TALENTS_DELETE_CONFIG = 0x3417, + CMSG_CLASS_TALENTS_NOTIFY_EMPTY_CONFIG = 0x3212, + CMSG_CLASS_TALENTS_NOTIFY_VALIDATION_FAILED = 0x3419, + CMSG_CLASS_TALENTS_RENAME_CONFIG = 0x3416, + CMSG_CLASS_TALENTS_REQUEST_NEW_CONFIG = 0x3415, + CMSG_CLASS_TALENTS_SET_STARTER_BUILD_ACTIVE = 0x341A, + CMSG_CLASS_TALENTS_SET_USES_SHARED_ACTION_BARS = 0x3211, CMSG_CLEAR_NEW_APPEARANCE = 0x3129, - CMSG_CLEAR_RAID_MARKER = 0x31A6, + CMSG_CLEAR_RAID_MARKER = 0x31A5, CMSG_CLEAR_TRADE_ITEM = 0x315E, - CMSG_CLIENT_PORT_GRAVEYARD = 0x353A, + CMSG_CLIENT_PORT_GRAVEYARD = 0x353B, CMSG_CLOSE_INTERACTION = 0x3499, - CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E1, - CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3415, + CMSG_CLOSE_QUEST_CHOICE = 0x32C2, + CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x33E6, + CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x341B, CMSG_CLUB_FINDER_APPLICATION_RESPONSE = 0x371C, CMSG_CLUB_FINDER_GET_APPLICANTS_LIST = 0x371A, CMSG_CLUB_FINDER_POST = 0x3717, @@ -274,41 +275,44 @@ enum OpcodeClient : uint16 CMSG_COMMERCE_TOKEN_GET_LOG = 0x36EB, CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x36E2, CMSG_COMPLAINT = 0x366B, - CMSG_COMPLETE_CINEMATIC = 0x3558, - CMSG_COMPLETE_MOVIE = 0x34EB, - CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AB, - CMSG_CONFIRM_RESPEC_WIPE = 0x3215, + CMSG_COMPLETE_CINEMATIC = 0x3559, + CMSG_COMPLETE_MOVIE = 0x34EC, + CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AA, + CMSG_CONFIRM_RESPEC_WIPE = 0x3214, CMSG_CONNECT_TO_FAILED = 0x35D4, CMSG_CONSUMABLE_TOKEN_BUY = 0x36E6, CMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE = 0x36E7, CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x36E5, CMSG_CONSUMABLE_TOKEN_REDEEM = 0x36E9, CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x36EA, - CMSG_CONTRIBUTION_CONTRIBUTE = 0x356C, - CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356D, - CMSG_CONVERSATION_CINEMATIC_READY = 0x355A, - CMSG_CONVERSATION_LINE_STARTED = 0x3559, + CMSG_CONTENT_TRACKING_START_TRACKING = 0x342B, + CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x342C, + CMSG_CONTRIBUTION_CONTRIBUTE = 0x356D, + CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x356E, + CMSG_CONVERSATION_CINEMATIC_READY = 0x355B, + CMSG_CONVERSATION_LINE_STARTED = 0x355A, CMSG_CONVERT_RAID = 0x364D, - CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3580, - CMSG_CRAFTING_ORDER_CANCEL = 0x358B, - CMSG_CRAFTING_ORDER_CLAIM = 0x3588, - CMSG_CRAFTING_ORDER_CREATE = 0x3585, - CMSG_CRAFTING_ORDER_FULFILL = 0x358A, - CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x3587, - CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3586, - CMSG_CRAFTING_ORDER_REJECT = 0x358C, - CMSG_CRAFTING_ORDER_RELEASE = 0x3589, - CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x358D, + CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3581, + CMSG_CRAFTING_ORDER_CANCEL = 0x358C, + CMSG_CRAFTING_ORDER_CLAIM = 0x3589, + CMSG_CRAFTING_ORDER_CREATE = 0x3586, + CMSG_CRAFTING_ORDER_FULFILL = 0x358B, + CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x3588, + CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3587, + CMSG_CRAFTING_ORDER_REJECT = 0x358D, + CMSG_CRAFTING_ORDER_RELEASE = 0x358A, + CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x358E, + CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x358F, CMSG_CREATE_CHARACTER = 0x3643, - CMSG_CREATE_SHIPMENT = 0x3319, + CMSG_CREATE_SHIPMENT = 0x331F, CMSG_DB_QUERY_BULK = 0x35E4, - CMSG_DECLINE_GUILD_INVITES = 0x352D, - CMSG_DECLINE_PETITION = 0x3547, - CMSG_DELETE_EQUIPMENT_SET = 0x3519, + CMSG_DECLINE_GUILD_INVITES = 0x352E, + CMSG_DECLINE_PETITION = 0x3548, + CMSG_DELETE_EQUIPMENT_SET = 0x351A, CMSG_DEL_FRIEND = 0x36CE, CMSG_DEL_IGNORE = 0x36D2, - CMSG_DEPOSIT_REAGENT_BANK = 0x3356, - CMSG_DESTROY_ITEM = 0x32A9, + CMSG_DEPOSIT_REAGENT_BANK = 0x335C, + CMSG_DESTROY_ITEM = 0x32AF, CMSG_DF_BOOT_PLAYER_VOTE = 0x3617, CMSG_DF_CONFIRM_EXPAND_SEARCH = 0x3609, CMSG_DF_GET_JOIN_STATUS = 0x3615, @@ -320,84 +324,84 @@ enum OpcodeClient : uint16 CMSG_DF_SET_ROLES = 0x3616, CMSG_DF_TELEPORT = 0x3618, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A41, - CMSG_DISMISS_CRITTER = 0x3507, + CMSG_DISMISS_CRITTER = 0x3508, CMSG_DO_COUNTDOWN = 0x3716, - CMSG_DO_MASTER_LOOT_ROLL = 0x321A, + CMSG_DO_MASTER_LOOT_ROLL = 0x3219, CMSG_DO_READY_CHECK = 0x3633, - CMSG_DUEL_RESPONSE = 0x34F0, - CMSG_EJECT_PASSENGER = 0x3248, - CMSG_EMOTE = 0x3554, + CMSG_DUEL_RESPONSE = 0x34F1, + CMSG_EJECT_PASSENGER = 0x324D, + CMSG_EMOTE = 0x3555, CMSG_ENABLE_NAGLE = 0x376B, - CMSG_ENABLE_TAXI_NODE = 0x34AF, + CMSG_ENABLE_TAXI_NODE = 0x34B0, CMSG_ENGINE_SURVEY = 0x36E0, CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x3767, CMSG_ENUM_CHARACTERS = 0x35E8, CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DA, - CMSG_FAR_SIGHT = 0x34F6, - CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B2, - CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B1, - CMSG_GAME_OBJ_REPORT_USE = 0x34FD, - CMSG_GAME_OBJ_USE = 0x34FC, - CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3314, - CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32FA, - CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32E7, - CMSG_GARRISON_CHECK_UPGRADEABLE = 0x3349, - CMSG_GARRISON_COMPLETE_MISSION = 0x333B, - CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x3315, - CMSG_GARRISON_GENERATE_RECRUITS = 0x32FD, - CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x330C, - CMSG_GARRISON_GET_MAP_DATA = 0x3313, - CMSG_GARRISON_GET_MISSION_REWARD = 0x336D, - CMSG_GARRISON_LEARN_TALENT = 0x3308, - CMSG_GARRISON_MISSION_BONUS_ROLL = 0x333D, - CMSG_GARRISON_PURCHASE_BUILDING = 0x32E3, - CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32FF, - CMSG_GARRISON_REMOVE_FOLLOWER = 0x3332, - CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32FB, - CMSG_GARRISON_RENAME_FOLLOWER = 0x32FC, - CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32E2, - CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x3317, - CMSG_GARRISON_RESEARCH_TALENT = 0x3300, - CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32E4, - CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32F8, - CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32F0, - CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32FE, - CMSG_GARRISON_SOCKET_TALENT = 0x33EE, - CMSG_GARRISON_START_MISSION = 0x333A, - CMSG_GARRISON_SWAP_BUILDINGS = 0x32E8, + CMSG_FAR_SIGHT = 0x34F7, + CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B1, + CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31B0, + CMSG_GAME_OBJ_REPORT_USE = 0x34FE, + CMSG_GAME_OBJ_USE = 0x34FD, + CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x331A, + CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3300, + CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32ED, + CMSG_GARRISON_CHECK_UPGRADEABLE = 0x334F, + CMSG_GARRISON_COMPLETE_MISSION = 0x3341, + CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS = 0x331B, + CMSG_GARRISON_GENERATE_RECRUITS = 0x3303, + CMSG_GARRISON_GET_CLASS_SPEC_CATEGORY_INFO = 0x3312, + CMSG_GARRISON_GET_MAP_DATA = 0x3319, + CMSG_GARRISON_GET_MISSION_REWARD = 0x3372, + CMSG_GARRISON_LEARN_TALENT = 0x330E, + CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3343, + CMSG_GARRISON_PURCHASE_BUILDING = 0x32E9, + CMSG_GARRISON_RECRUIT_FOLLOWER = 0x3305, + CMSG_GARRISON_REMOVE_FOLLOWER = 0x3338, + CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x3301, + CMSG_GARRISON_RENAME_FOLLOWER = 0x3302, + CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32E8, + CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x331D, + CMSG_GARRISON_RESEARCH_TALENT = 0x3306, + CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32EA, + CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32FE, + CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32F6, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x3304, + CMSG_GARRISON_SOCKET_TALENT = 0x33F3, + CMSG_GARRISON_START_MISSION = 0x3340, + CMSG_GARRISON_SWAP_BUILDINGS = 0x32EE, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7, CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B3, CMSG_GET_ACCOUNT_NOTIFICATIONS = 0x3732, - CMSG_GET_GARRISON_INFO = 0x32DD, - CMSG_GET_ITEM_PURCHASE_DATA = 0x3542, - CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3318, - CMSG_GET_MIRROR_IMAGE_DATA = 0x32AD, + CMSG_GET_GARRISON_INFO = 0x32E3, + CMSG_GET_ITEM_PURCHASE_DATA = 0x3543, + CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x331E, + CMSG_GET_MIRROR_IMAGE_DATA = 0x32B3, CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE, CMSG_GET_RAF_ACCOUNT_INFO = 0x3720, CMSG_GET_REMAINING_GAME_TIME = 0x36E8, - CMSG_GET_TROPHY_LIST = 0x332B, + CMSG_GET_TROPHY_LIST = 0x3331, CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DC, CMSG_GET_VAS_ACCOUNT_CHARACTER_LIST = 0x36ED, CMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST = 0x36EE, CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x368F, CMSG_GM_TICKET_GET_CASE_STATUS = 0x368E, CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x368D, - CMSG_GOSSIP_REFRESH_OPTIONS = 0x357F, + CMSG_GOSSIP_REFRESH_OPTIONS = 0x3580, CMSG_GOSSIP_SELECT_OPTION = 0x349A, CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308D, CMSG_GUILD_ADD_RANK = 0x3065, CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x3060, CMSG_GUILD_AUTO_DECLINE_INVITATION = 0x3062, - CMSG_GUILD_BANK_ACTIVATE = 0x34BC, - CMSG_GUILD_BANK_BUY_TAB = 0x34CA, - CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34CC, + CMSG_GUILD_BANK_ACTIVATE = 0x34BD, + CMSG_GUILD_BANK_BUY_TAB = 0x34CB, + CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34CD, CMSG_GUILD_BANK_LOG_QUERY = 0x3083, - CMSG_GUILD_BANK_QUERY_TAB = 0x34C9, + CMSG_GUILD_BANK_QUERY_TAB = 0x34CA, CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x3084, CMSG_GUILD_BANK_SET_TAB_TEXT = 0x3087, CMSG_GUILD_BANK_TEXT_QUERY = 0x3088, - CMSG_GUILD_BANK_UPDATE_TAB = 0x34CB, - CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34CD, + CMSG_GUILD_BANK_UPDATE_TAB = 0x34CC, + CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34CE, CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x307C, CMSG_GUILD_CHANGE_NAME_REQUEST = 0x307F, CMSG_GUILD_DECLINE_INVITATION = 0x3061, @@ -427,72 +431,72 @@ enum OpcodeClient : uint16 CMSG_GUILD_SHIFT_RANK = 0x3067, CMSG_GUILD_UPDATE_INFO_TEXT = 0x3076, CMSG_GUILD_UPDATE_MOTD_TEXT = 0x3075, - CMSG_HEARTH_AND_RESURRECT = 0x3515, - CMSG_HIDE_QUEST_CHOICE = 0x32BD, + CMSG_HEARTH_AND_RESURRECT = 0x3516, + CMSG_HIDE_QUEST_CHOICE = 0x32C3, CMSG_HOTFIX_REQUEST = 0x35E5, CMSG_IGNORE_TRADE = 0x3159, CMSG_INITIATE_ROLE_POLL = 0x35DA, CMSG_INITIATE_TRADE = 0x3156, - CMSG_INSPECT = 0x353C, - CMSG_INSTANCE_LOCK_RESPONSE = 0x351A, - CMSG_ISLAND_QUEUE = 0x33B1, - CMSG_ITEM_PURCHASE_REFUND = 0x3543, - CMSG_ITEM_TEXT_QUERY = 0x334A, - CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DE, - CMSG_JOIN_RATED_BATTLEGROUND = 0x3179, + CMSG_INSPECT = 0x353D, + CMSG_INSTANCE_LOCK_RESPONSE = 0x351B, + CMSG_ISLAND_QUEUE = 0x33B6, + CMSG_ITEM_PURCHASE_REFUND = 0x3544, + CMSG_ITEM_TEXT_QUERY = 0x3350, + CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DD, + CMSG_JOIN_RATED_BATTLEGROUND = 0x3178, CMSG_KEEP_ALIVE = 0x367E, - CMSG_KEYBOUND_OVERRIDE = 0x322D, + CMSG_KEYBOUND_OVERRIDE = 0x322F, CMSG_LATENCY_REPORT = 0x3771, - CMSG_LEARN_PVP_TALENTS = 0x356B, - CMSG_LEARN_TALENTS = 0x3569, + CMSG_LEARN_PVP_TALENTS = 0x356C, + CMSG_LEARN_TALENTS = 0x356A, CMSG_LEAVE_GROUP = 0x3648, - CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DF, + CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DE, CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360E, CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360F, CMSG_LFG_LIST_DECLINE_APPLICANT = 0x3610, CMSG_LFG_LIST_GET_STATUS = 0x360C, CMSG_LFG_LIST_INVITE_APPLICANT = 0x3611, CMSG_LFG_LIST_INVITE_RESPONSE = 0x3612, - CMSG_LFG_LIST_JOIN = 0x3390, + CMSG_LFG_LIST_JOIN = 0x3395, CMSG_LFG_LIST_LEAVE = 0x360B, CMSG_LFG_LIST_SEARCH = 0x360D, - CMSG_LFG_LIST_UPDATE_REQUEST = 0x3391, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x3396, CMSG_LIST_INVENTORY = 0x34A7, CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B6, CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B5, CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B4, CMSG_LIVE_REGION_KEY_BINDINGS_COPY = 0x36B7, CMSG_LOADING_SCREEN_NOTIFY = 0x35F8, - CMSG_LOAD_SELECTED_TROPHY = 0x332C, - CMSG_LOGOUT_CANCEL = 0x34E6, - CMSG_LOGOUT_INSTANT = 0x34E7, - CMSG_LOGOUT_REQUEST = 0x34E4, + CMSG_LOAD_SELECTED_TROPHY = 0x3332, + CMSG_LOGOUT_CANCEL = 0x34E7, + CMSG_LOGOUT_INSTANT = 0x34E8, + CMSG_LOGOUT_REQUEST = 0x34E5, CMSG_LOG_DISCONNECT = 0x3769, CMSG_LOG_STREAMING_ERROR = 0x376D, - CMSG_LOOT_ITEM = 0x3218, - CMSG_LOOT_MONEY = 0x3217, - CMSG_LOOT_RELEASE = 0x321C, - CMSG_LOOT_ROLL = 0x321D, - CMSG_LOOT_UNIT = 0x3216, + CMSG_LOOT_ITEM = 0x3217, + CMSG_LOOT_MONEY = 0x3216, + CMSG_LOOT_RELEASE = 0x321B, + CMSG_LOOT_ROLL = 0x321C, + CMSG_LOOT_UNIT = 0x3215, CMSG_LOW_LEVEL_RAID1 = 0x369F, - CMSG_LOW_LEVEL_RAID2 = 0x3521, - CMSG_MAIL_CREATE_TEXT_ITEM = 0x354E, - CMSG_MAIL_DELETE = 0x322F, - CMSG_MAIL_GET_LIST = 0x3549, - CMSG_MAIL_MARK_AS_READ = 0x354D, + CMSG_LOW_LEVEL_RAID2 = 0x3522, + CMSG_MAIL_CREATE_TEXT_ITEM = 0x354F, + CMSG_MAIL_DELETE = 0x3231, + CMSG_MAIL_GET_LIST = 0x354A, + CMSG_MAIL_MARK_AS_READ = 0x354E, CMSG_MAIL_RETURN_TO_SENDER = 0x3654, - CMSG_MAIL_TAKE_ITEM = 0x354B, - CMSG_MAIL_TAKE_MONEY = 0x354A, - CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3231, - CMSG_MASTER_LOOT_ITEM = 0x3219, - CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C7, - CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x34C4, - CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C2, + CMSG_MAIL_TAKE_ITEM = 0x354C, + CMSG_MAIL_TAKE_MONEY = 0x354B, + CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3233, + CMSG_MASTER_LOOT_ITEM = 0x3218, + CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C8, + CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x34C5, + CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x34C3, CMSG_MINIMAP_PING = 0x364A, - CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A, + CMSG_MISSILE_TRAJECTORY_COLLISION = 0x3189, CMSG_MOUNT_CLEAR_FANFARE = 0x3127, CMSG_MOUNT_SET_FAVORITE = 0x3631, - CMSG_MOUNT_SPECIAL_ANIM = 0x3296, + CMSG_MOUNT_SPECIAL_ANIM = 0x329B, CMSG_MOVE_ADD_IMPULSE_ACK = 0x3A50, CMSG_MOVE_APPLY_INERTIA_ACK = 0x3A4E, CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A15, @@ -520,7 +524,7 @@ enum OpcodeClient : uint16 CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3A21, CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3A35, CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3A36, - CMSG_MOVE_GUILD_BANK_ITEM = 0x34C1, + CMSG_MOVE_GUILD_BANK_ITEM = 0x34C2, CMSG_MOVE_HEARTBEAT = 0x3A10, CMSG_MOVE_HOVER_ACK = 0x3A13, CMSG_MOVE_INERTIA_DISABLE_ACK = 0x3A37, @@ -583,45 +587,45 @@ enum OpcodeClient : uint16 CMSG_MOVE_UPDATE_FALL_SPEED = 0x3A1A, CMSG_MOVE_WATER_WALK_ACK = 0x3A1D, CMSG_MYTHIC_PLUS_REQUEST_MAP_STATS = 0x308E, - CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D4, - CMSG_NEXT_CINEMATIC_CAMERA = 0x3557, - CMSG_OBJECT_UPDATE_FAILED = 0x3180, - CMSG_OBJECT_UPDATE_RESCUED = 0x3181, - CMSG_OFFER_PETITION = 0x33D8, - CMSG_OPENING_CINEMATIC = 0x3556, - CMSG_OPEN_ITEM = 0x334B, - CMSG_OPEN_MISSION_NPC = 0x330E, - CMSG_OPEN_SHIPMENT_NPC = 0x3316, - CMSG_OPEN_TRADESKILL_NPC = 0x3321, - CMSG_OPT_OUT_OF_LOOT = 0x3504, - CMSG_OVERRIDE_SCREEN_FLASH = 0x352E, + CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D3, + CMSG_NEXT_CINEMATIC_CAMERA = 0x3558, + CMSG_OBJECT_UPDATE_FAILED = 0x317F, + CMSG_OBJECT_UPDATE_RESCUED = 0x3180, + CMSG_OFFER_PETITION = 0x33DD, + CMSG_OPENING_CINEMATIC = 0x3557, + CMSG_OPEN_ITEM = 0x3351, + CMSG_OPEN_MISSION_NPC = 0x3314, + CMSG_OPEN_SHIPMENT_NPC = 0x331C, + CMSG_OPEN_TRADESKILL_NPC = 0x3327, + CMSG_OPT_OUT_OF_LOOT = 0x3505, + CMSG_OVERRIDE_SCREEN_FLASH = 0x352F, CMSG_PARTY_INVITE = 0x3603, CMSG_PARTY_INVITE_RESPONSE = 0x3605, CMSG_PARTY_UNINVITE = 0x3646, - CMSG_PERFORM_ITEM_INTERACTION = 0x3239, + CMSG_PERFORM_ITEM_INTERACTION = 0x323B, CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS = 0x3135, - CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3401, - CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3402, - CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3403, - CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3400, - CMSG_PETITION_BUY = 0x34CF, + CMSG_PERKS_PROGRAM_REQUEST_PURCHASE = 0x3406, + CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3407, + CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3408, + CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3405, + CMSG_PETITION_BUY = 0x34D0, CMSG_PETITION_RENAME_GUILD = 0x36C6, - CMSG_PETITION_SHOW_LIST = 0x34CE, - CMSG_PETITION_SHOW_SIGNATURES = 0x34D0, + CMSG_PETITION_SHOW_LIST = 0x34CF, + CMSG_PETITION_SHOW_SIGNATURES = 0x34D1, CMSG_PET_ABANDON = 0x3493, CMSG_PET_ACTION = 0x3491, - CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E3, + CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E2, CMSG_PET_BATTLE_INPUT = 0x3640, - CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x322E, - CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E2, + CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3230, + CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E1, CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3641, - CMSG_PET_BATTLE_REQUEST_PVP = 0x31DC, - CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DD, - CMSG_PET_BATTLE_REQUEST_WILD = 0x31DA, - CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E4, - CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DB, + CMSG_PET_BATTLE_REQUEST_PVP = 0x31DB, + CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DC, + CMSG_PET_BATTLE_REQUEST_WILD = 0x31D9, + CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E3, + CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31DA, CMSG_PET_CANCEL_AURA = 0x3494, - CMSG_PET_CAST_SPELL = 0x32B2, + CMSG_PET_CAST_SPELL = 0x32B8, CMSG_PET_RENAME = 0x3683, CMSG_PET_SET_ACTION = 0x3490, CMSG_PET_SPELL_AUTOCAST = 0x3495, @@ -629,48 +633,48 @@ enum OpcodeClient : uint16 CMSG_PING = 0x3768, CMSG_PLAYER_LOGIN = 0x35EA, CMSG_PUSH_QUEST_TO_PARTY = 0x34A5, - CMSG_PVP_LOG_DATA = 0x317C, - CMSG_QUERY_BATTLE_PET_NAME = 0x3289, + CMSG_PVP_LOG_DATA = 0x317B, + CMSG_QUERY_BATTLE_PET_NAME = 0x328E, CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x365F, CMSG_QUERY_CORPSE_TRANSPORT = 0x3660, - CMSG_QUERY_COUNTDOWN_TIMER = 0x31A9, - CMSG_QUERY_CREATURE = 0x3283, - CMSG_QUERY_GAME_OBJECT = 0x3284, - CMSG_QUERY_GARRISON_PET_NAME = 0x328A, + CMSG_QUERY_COUNTDOWN_TIMER = 0x31A8, + CMSG_QUERY_CREATURE = 0x3288, + CMSG_QUERY_GAME_OBJECT = 0x3289, + CMSG_QUERY_GARRISON_PET_NAME = 0x328F, CMSG_QUERY_GUILD_INFO = 0x3689, - CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350E, - CMSG_QUERY_NEXT_MAIL_TIME = 0x354C, - CMSG_QUERY_NPC_TEXT = 0x3285, - CMSG_QUERY_PAGE_TEXT = 0x3287, - CMSG_QUERY_PETITION = 0x328B, - CMSG_QUERY_PET_NAME = 0x3288, + CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x350F, + CMSG_QUERY_NEXT_MAIL_TIME = 0x354D, + CMSG_QUERY_NPC_TEXT = 0x328A, + CMSG_QUERY_PAGE_TEXT = 0x328C, + CMSG_QUERY_PETITION = 0x3290, + CMSG_QUERY_PET_NAME = 0x328D, CMSG_QUERY_PLAYER_NAMES = 0x3772, CMSG_QUERY_PLAYER_NAMES_FOR_COMMUNITY = 0x3770, CMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID = 0x376F, - CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3175, - CMSG_QUERY_QUEST_INFO = 0x3286, - CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3176, + CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3174, + CMSG_QUERY_QUEST_INFO = 0x328B, + CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3175, CMSG_QUERY_REALM_NAME = 0x3688, CMSG_QUERY_SCENARIO_POI = 0x3655, - CMSG_QUERY_TIME = 0x34E3, - CMSG_QUERY_TREASURE_PICKER = 0x3370, - CMSG_QUERY_VOID_STORAGE = 0x31A2, + CMSG_QUERY_TIME = 0x34E4, + CMSG_QUERY_TREASURE_PICKER = 0x3375, + CMSG_QUERY_VOID_STORAGE = 0x31A1, CMSG_QUEST_CONFIRM_ACCEPT = 0x34A4, CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349E, CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x34A0, - CMSG_QUEST_GIVER_CLOSE_QUEST = 0x355D, + CMSG_QUEST_GIVER_CLOSE_QUEST = 0x355E, CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x349F, CMSG_QUEST_GIVER_HELLO = 0x349C, CMSG_QUEST_GIVER_QUERY_QUEST = 0x349D, CMSG_QUEST_GIVER_REQUEST_REWARD = 0x34A1, CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x34A3, CMSG_QUEST_GIVER_STATUS_QUERY = 0x34A2, - CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY = 0x358F, - CMSG_QUEST_LOG_REMOVE_QUEST = 0x3541, + CMSG_QUEST_GIVER_STATUS_TRACKED_QUERY = 0x3591, + CMSG_QUEST_LOG_REMOVE_QUEST = 0x3542, CMSG_QUEST_POI_QUERY = 0x36AD, CMSG_QUEST_PUSH_RESULT = 0x34A6, - CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33C9, - CMSG_QUEST_SESSION_REQUEST_START = 0x33C8, + CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x33CE, + CMSG_QUEST_SESSION_REQUEST_START = 0x33CD, CMSG_QUEST_SESSION_REQUEST_STOP = 0x372B, CMSG_QUEUED_MESSAGES_END = 0x376C, CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3703, @@ -678,207 +682,209 @@ enum OpcodeClient : uint16 CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x3730, CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3701, CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3700, - CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3512, + CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3513, CMSG_RAF_CLAIM_NEXT_REWARD = 0x3721, CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x3723, CMSG_RAF_UPDATE_RECRUITMENT_INFO = 0x3722, CMSG_RANDOM_ROLL = 0x3653, CMSG_READY_CHECK_RESPONSE = 0x3634, - CMSG_READ_ITEM = 0x334C, - CMSG_RECLAIM_CORPSE = 0x34E9, - CMSG_REMOVE_NEW_ITEM = 0x3373, + CMSG_READ_ITEM = 0x3352, + CMSG_RECLAIM_CORPSE = 0x34EA, + CMSG_REMOVE_NEW_ITEM = 0x3378, CMSG_REMOVE_RAF_RECRUIT = 0x3724, CMSG_REORDER_CHARACTERS = 0x35E9, - CMSG_REPAIR_ITEM = 0x34FA, - CMSG_REPLACE_TROPHY = 0x332D, - CMSG_REPOP_REQUEST = 0x3539, + CMSG_REPAIR_ITEM = 0x34FB, + CMSG_REPLACE_TROPHY = 0x3333, + CMSG_REPOP_REQUEST = 0x353A, CMSG_REPORT_CLIENT_VARIABLES = 0x36FD, CMSG_REPORT_ENABLED_ADDONS = 0x36FC, CMSG_REPORT_FROZEN_WHILE_LOADING_MAP = 0x36A5, CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x36FE, - CMSG_REPORT_PVP_PLAYER_AFK = 0x3502, - CMSG_REPORT_SERVER_LAG = 0x33C1, - CMSG_REPORT_STUCK_IN_COMBAT = 0x33C2, + CMSG_REPORT_PVP_PLAYER_AFK = 0x3503, + CMSG_REPORT_SERVER_LAG = 0x33C6, + CMSG_REPORT_STUCK_IN_COMBAT = 0x33C7, CMSG_REQUEST_ACCOUNT_DATA = 0x3693, - CMSG_REQUEST_AREA_POI_UPDATE = 0x3372, + CMSG_REQUEST_AREA_POI_UPDATE = 0x3377, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC, - CMSG_REQUEST_CEMETERY_LIST = 0x3177, + CMSG_REQUEST_CEMETERY_LIST = 0x3176, CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x368A, - CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32CF, - CMSG_REQUEST_COVENANT_CALLINGS = 0x33B3, - CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353D, - CMSG_REQUEST_FORCED_REACTIONS = 0x320D, - CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33ED, - CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A8, - CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A7, - CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C3, - CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32BE, - CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3207, - CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3208, + CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32D5, + CMSG_REQUEST_COVENANT_CALLINGS = 0x33B8, + CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x353E, + CMSG_REQUEST_FORCED_REACTIONS = 0x320C, + CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x33F2, + CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A7, + CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A6, + CMSG_REQUEST_LATEST_SPLASH_SCREEN = 0x33C8, + CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32C4, + CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3206, + CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3207, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7, CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3652, CMSG_REQUEST_PET_INFO = 0x3496, - CMSG_REQUEST_PLAYED_TIME = 0x328E, - CMSG_REQUEST_PVP_REWARDS = 0x3195, + CMSG_REQUEST_PLAYED_TIME = 0x3293, + CMSG_REQUEST_PVP_REWARDS = 0x3194, CMSG_REQUEST_RAID_INFO = 0x36C7, CMSG_REQUEST_RATED_PVP_INFO = 0x35E3, CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x309A, - CMSG_REQUEST_RESEARCH_HISTORY = 0x3167, - CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3196, + CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3195, CMSG_REQUEST_STABLED_PETS = 0x3497, - CMSG_REQUEST_VEHICLE_EXIT = 0x3243, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3245, - CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3244, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3246, - CMSG_REQUEST_WEEKLY_REWARDS = 0x33B6, - CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3371, - CMSG_RESET_CHALLENGE_MODE = 0x3205, - CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3206, + CMSG_REQUEST_VEHICLE_EXIT = 0x3248, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x324A, + CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3249, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x324B, + CMSG_REQUEST_WEEKLY_REWARDS = 0x33BB, + CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3376, + CMSG_RESET_CHALLENGE_MODE = 0x3204, + CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3205, CMSG_RESET_INSTANCES = 0x3667, CMSG_RESURRECT_RESPONSE = 0x3682, - CMSG_REVERT_MONUMENT_APPEARANCE = 0x332F, - CMSG_RIDE_VEHICLE_INTERACT = 0x3247, + CMSG_REVERT_MONUMENT_APPEARANCE = 0x3335, + CMSG_RIDE_VEHICLE_INTERACT = 0x324C, + CMSG_RPE_RESET_CHARACTER = 0x374E, CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x3748, - CMSG_SAVE_CUF_PROFILES = 0x318B, - CMSG_SAVE_EQUIPMENT_SET = 0x3518, - CMSG_SAVE_GUILD_EMBLEM = 0x32C2, - CMSG_SCENE_PLAYBACK_CANCELED = 0x322A, - CMSG_SCENE_PLAYBACK_COMPLETE = 0x3229, - CMSG_SCENE_TRIGGER_EVENT = 0x322B, - CMSG_SELF_RES = 0x3544, + CMSG_SAVE_CUF_PROFILES = 0x318A, + CMSG_SAVE_EQUIPMENT_SET = 0x3519, + CMSG_SAVE_GUILD_EMBLEM = 0x32C8, + CMSG_SCENE_PLAYBACK_CANCELED = 0x322C, + CMSG_SCENE_PLAYBACK_COMPLETE = 0x322B, + CMSG_SCENE_TRIGGER_EVENT = 0x322D, + CMSG_SELF_RES = 0x3545, + CMSG_SELL_ALL_JUNK_ITEMS = 0x34A9, CMSG_SELL_ITEM = 0x34A8, CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x36F6, CMSG_SEND_CONTACT_LIST = 0x36CC, CMSG_SEND_MAIL = 0x35FA, CMSG_SEND_TEXT_EMOTE = 0x348E, CMSG_SERVER_TIME_OFFSET_REQUEST = 0x369A, - CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3230, - CMSG_SET_ACTION_BAR_TOGGLES = 0x3545, + CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3232, + CMSG_SET_ACTION_BAR_TOGGLES = 0x3546, CMSG_SET_ACTION_BUTTON = 0x3635, CMSG_SET_ACTIVE_MOVER = 0x3A3C, - CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32D0, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32D6, CMSG_SET_ASSISTANT_LEADER = 0x364E, - CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x334F, - CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3350, + CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3355, + CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3356, CMSG_SET_CONTACT_NOTES = 0x36CF, - CMSG_SET_CURRENCY_FLAGS = 0x3169, - CMSG_SET_DIFFICULTY_ID = 0x322C, + CMSG_SET_CURRENCY_FLAGS = 0x3168, + CMSG_SET_DIFFICULTY_ID = 0x322E, CMSG_SET_DUNGEON_DIFFICULTY = 0x3681, - CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x327D, + CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x3282, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3619, CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x3704, - CMSG_SET_FACTION_AT_WAR = 0x34EC, - CMSG_SET_FACTION_INACTIVE = 0x34EE, - CMSG_SET_FACTION_NOT_AT_WAR = 0x34ED, - CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B9, - CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3352, + CMSG_SET_FACTION_AT_WAR = 0x34ED, + CMSG_SET_FACTION_INACTIVE = 0x34EF, + CMSG_SET_FACTION_NOT_AT_WAR = 0x34EE, + CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B8, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3358, CMSG_SET_LOOT_METHOD = 0x3647, - CMSG_SET_LOOT_SPECIALIZATION = 0x3552, + CMSG_SET_LOOT_SPECIALIZATION = 0x3553, CMSG_SET_PARTY_ASSIGNMENT = 0x3650, CMSG_SET_PARTY_LEADER = 0x3649, - CMSG_SET_PET_SLOT = 0x3168, + CMSG_SET_PET_SLOT = 0x3167, CMSG_SET_PLAYER_DECLINED_NAMES = 0x3687, - CMSG_SET_PREFERRED_CEMETERY = 0x3178, - CMSG_SET_PVP = 0x32C6, + CMSG_SET_PREFERRED_CEMETERY = 0x3177, + CMSG_SET_PVP = 0x32CC, CMSG_SET_RAID_DIFFICULTY = 0x36D8, CMSG_SET_ROLE = 0x35D9, CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3685, - CMSG_SET_SELECTION = 0x353B, + CMSG_SET_SELECTION = 0x353C, CMSG_SET_SHEATHED = 0x348F, - CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3351, - CMSG_SET_TAXI_BENCHMARK_MODE = 0x3501, - CMSG_SET_TITLE = 0x3294, + CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3357, + CMSG_SET_TAXI_BENCHMARK_MODE = 0x3502, + CMSG_SET_TITLE = 0x3299, CMSG_SET_TRADE_CURRENCY = 0x3160, CMSG_SET_TRADE_GOLD = 0x315F, CMSG_SET_TRADE_ITEM = 0x315D, - CMSG_SET_USING_PARTY_GARRISON = 0x3310, - CMSG_SET_WAR_MODE = 0x32C7, - CMSG_SET_WATCHED_FACTION = 0x34EF, + CMSG_SET_USING_PARTY_GARRISON = 0x3316, + CMSG_SET_WAR_MODE = 0x32CD, + CMSG_SET_WATCHED_FACTION = 0x34F0, CMSG_SHOW_TRADE_SKILL = 0x36BF, - CMSG_SIGN_PETITION = 0x3546, + CMSG_SIGN_PETITION = 0x3547, CMSG_SILENCE_PARTY_TALKER = 0x3651, CMSG_SOCIAL_CONTRACT_REQUEST = 0x3743, - CMSG_SOCKET_GEMS = 0x34F9, - CMSG_SORT_BAGS = 0x3353, - CMSG_SORT_BANK_BAGS = 0x3354, - CMSG_SORT_REAGENT_BANK_BAGS = 0x3355, + CMSG_SOCKET_GEMS = 0x34FA, + CMSG_SORT_BAGS = 0x3359, + CMSG_SORT_BANK_BAGS = 0x335A, + CMSG_SORT_REAGENT_BANK_BAGS = 0x335B, + CMSG_SPAWN_TRACKING_UPDATE = 0x32AE, CMSG_SPELL_CLICK = 0x349B, - CMSG_SPELL_EMPOWER_RELEASE = 0x327B, - CMSG_SPELL_EMPOWER_RESTART = 0x327C, - CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B5, - CMSG_SPLIT_GUILD_BANK_ITEM = 0x34C8, - CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x34C5, + CMSG_SPELL_EMPOWER_RELEASE = 0x3280, + CMSG_SPELL_EMPOWER_RESTART = 0x3281, + CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B6, + CMSG_SPLIT_GUILD_BANK_ITEM = 0x34C9, + CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x34C6, CMSG_SPLIT_ITEM = 0x399E, - CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x34C3, - CMSG_STAND_STATE_CHANGE = 0x3189, - CMSG_START_CHALLENGE_MODE = 0x355E, + CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x34C4, + CMSG_STAND_STATE_CHANGE = 0x3188, + CMSG_START_CHALLENGE_MODE = 0x355F, CMSG_START_SPECTATOR_WAR_GAME = 0x35DF, CMSG_START_WAR_GAME = 0x35DE, - CMSG_STORE_GUILD_BANK_ITEM = 0x34BE, + CMSG_STORE_GUILD_BANK_ITEM = 0x34BF, CMSG_SUBMIT_USER_FEEDBACK = 0x3692, - CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E2, + CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x33E7, CMSG_SUMMON_RESPONSE = 0x3669, CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3645, - CMSG_SURRENDER_ARENA = 0x3174, + CMSG_SURRENDER_ARENA = 0x3173, CMSG_SUSPEND_COMMS_ACK = 0x3764, CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A, - CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C0, + CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x34C1, CMSG_SWAP_INV_ITEM = 0x399D, CMSG_SWAP_ITEM = 0x399C, - CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x34BF, + CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x34C0, CMSG_SWAP_SUB_GROUPS = 0x364C, - CMSG_SWAP_VOID_ITEM = 0x31A4, - CMSG_TABARD_VENDOR_ACTIVATE = 0x32C3, + CMSG_SWAP_VOID_ITEM = 0x31A3, + CMSG_TABARD_VENDOR_ACTIVATE = 0x32C9, CMSG_TALK_TO_GOSSIP = 0x3498, - CMSG_TAXI_NODE_STATUS_QUERY = 0x34AE, - CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B0, - CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34B2, + CMSG_TAXI_NODE_STATUS_QUERY = 0x34AF, + CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34B1, + CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34B3, CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A40, CMSG_TIME_SYNC_RESPONSE = 0x3A3D, CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3F, CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A3E, CMSG_TOGGLE_DIFFICULTY = 0x3656, - CMSG_TOGGLE_PVP = 0x32C5, - CMSG_TOTEM_DESTROYED = 0x3506, + CMSG_TOGGLE_PVP = 0x32CB, + CMSG_TOTEM_DESTROYED = 0x3507, CMSG_TOY_CLEAR_FANFARE = 0x3128, - CMSG_TRADE_SKILL_SET_FAVORITE = 0x336F, - CMSG_TRAINER_BUY_SPELL = 0x34B4, - CMSG_TRAINER_LIST = 0x34B3, - CMSG_TRAITS_COMMIT_CONFIG = 0x3409, - CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3407, - CMSG_TRANSMOGRIFY_ITEMS = 0x3197, - CMSG_TURN_IN_PETITION = 0x3548, + CMSG_TRADE_SKILL_SET_FAVORITE = 0x3374, + CMSG_TRAINER_BUY_SPELL = 0x34B5, + CMSG_TRAINER_LIST = 0x34B4, + CMSG_TRAITS_COMMIT_CONFIG = 0x340F, + CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x340D, + CMSG_TRANSMOGRIFY_ITEMS = 0x3196, + CMSG_TURN_IN_PETITION = 0x3549, CMSG_TUTORIAL = 0x36D9, - CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B2, + CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x33B7, CMSG_UNACCEPT_TRADE = 0x315B, CMSG_UNDELETE_CHARACTER = 0x36DB, - CMSG_UNLEARN_SKILL = 0x34F3, - CMSG_UNLEARN_SPECIALIZATION = 0x31A5, - CMSG_UNLOCK_VOID_STORAGE = 0x31A1, + CMSG_UNLEARN_SKILL = 0x34F4, + CMSG_UNLEARN_SPECIALIZATION = 0x31A4, + CMSG_UNLOCK_VOID_STORAGE = 0x31A0, CMSG_UPDATE_AADC_STATUS = 0x3737, CMSG_UPDATE_ACCOUNT_DATA = 0x3694, - CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32B5, + CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x32BB, CMSG_UPDATE_CLIENT_SETTINGS = 0x3663, - CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3322, + CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3328, CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A43, CMSG_UPDATE_RAID_TARGET = 0x364F, - CMSG_UPDATE_SPELL_VISUAL = 0x32B4, + CMSG_UPDATE_SPELL_VISUAL = 0x32BA, CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F0, - CMSG_UPGRADE_GARRISON = 0x32D8, - CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E0, - CMSG_USED_FOLLOW = 0x3186, - CMSG_USE_CRITTER_ITEM = 0x324D, + CMSG_UPGRADE_GARRISON = 0x32DE, + CMSG_UPGRADE_RUNEFORGE_LEGENDARY = 0x33E5, + CMSG_USED_FOLLOW = 0x3185, + CMSG_USE_CRITTER_ITEM = 0x3252, CMSG_USE_EQUIPMENT_SET = 0x3995, - CMSG_USE_ITEM = 0x32AE, - CMSG_USE_TOY = 0x32B1, + CMSG_USE_ITEM = 0x32B4, + CMSG_USE_TOY = 0x32B7, CMSG_VAS_CHECK_TRANSFER_OK = 0x3709, CMSG_VAS_GET_QUEUE_MINUTES = 0x3708, CMSG_VAS_GET_SERVICE_STATUS = 0x3707, - CMSG_VIOLENCE_LEVEL = 0x3184, + CMSG_VIOLENCE_LEVEL = 0x3183, CMSG_VOICE_CHANNEL_STT_TOKEN_REQUEST = 0x370D, CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x370E, CMSG_VOICE_CHAT_LOGIN = 0x370C, - CMSG_VOID_STORAGE_TRANSFER = 0x31A3, + CMSG_VOID_STORAGE_TRANSFER = 0x31A2, CMSG_WARDEN3_DATA = 0x35EC, CMSG_WHO = 0x3680, CMSG_WHO_IS = 0x367F, @@ -888,90 +894,90 @@ enum OpcodeClient : uint16 enum OpcodeServer : uint16 { - SMSG_ABORT_NEW_WORLD = 0x259C, - SMSG_ACCOUNT_COSMETIC_ADDED = 0x287A, - SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2860, - SMSG_ACCOUNT_DATA_TIMES = 0x2704, - SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28B6, - SMSG_ACCOUNT_MOUNT_REMOVED = 0x25B0, - SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AF, - SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2879, - SMSG_ACCOUNT_TOY_UPDATE = 0x25B1, - SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B4, - SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25B3, - SMSG_ACHIEVEMENT_DELETED = 0x26E2, - SMSG_ACHIEVEMENT_EARNED = 0x2640, + SMSG_ABORT_NEW_WORLD = 0x2597, + SMSG_ACCOUNT_COSMETIC_ADDED = 0x2872, + SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2858, + SMSG_ACCOUNT_DATA_TIMES = 0x2700, + SMSG_ACCOUNT_EXPORT_RESPONSE = 0x28AF, + SMSG_ACCOUNT_MOUNT_REMOVED = 0x25AB, + SMSG_ACCOUNT_MOUNT_UPDATE = 0x25AA, + SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x2871, + SMSG_ACCOUNT_TOY_UPDATE = 0x25AC, + SMSG_ACCOUNT_TRANSMOG_SET_FAVORITES_UPDATE = 0x25B0, + SMSG_ACCOUNT_TRANSMOG_UPDATE = 0x25AF, + SMSG_ACHIEVEMENT_DELETED = 0x26DE, + SMSG_ACHIEVEMENT_EARNED = 0x263C, SMSG_ACTIVATE_ESSENCE_FAILED = 0x3015, SMSG_ACTIVATE_SOULBIND_FAILED = 0x3017, - SMSG_ACTIVATE_TAXI_REPLY = 0x267A, + SMSG_ACTIVATE_TAXI_REPLY = 0x2676, SMSG_ACTIVE_GLYPHS = 0x2C54, - SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x2740, - SMSG_ADDON_LIST_REQUEST = 0x263F, - SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x263A, - SMSG_ADD_ITEM_PASSIVE = 0x25AB, - SMSG_ADD_LOSS_OF_CONTROL = 0x266E, - SMSG_ADD_RUNE_POWER = 0x26B4, - SMSG_ADJUST_SPLINE_DURATION = 0x25D0, - SMSG_ADVANCED_COMBAT_LOG = 0x2876, - SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2870, - SMSG_AE_LOOT_TARGETS = 0x2615, - SMSG_AE_LOOT_TARGET_ACK = 0x2616, - SMSG_AI_REACTION = 0x26B1, - SMSG_ALLIED_RACE_DETAILS = 0x27F4, + SMSG_ACTIVE_SCHEDULED_WORLD_STATE_INFO = 0x273C, + SMSG_ADDON_LIST_REQUEST = 0x263B, + SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x2636, + SMSG_ADD_ITEM_PASSIVE = 0x25A6, + SMSG_ADD_LOSS_OF_CONTROL = 0x266A, + SMSG_ADD_RUNE_POWER = 0x26B0, + SMSG_ADJUST_SPLINE_DURATION = 0x25CC, + SMSG_ADVANCED_COMBAT_LOG = 0x286E, + SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE = 0x2868, + SMSG_AE_LOOT_TARGETS = 0x2611, + SMSG_AE_LOOT_TARGET_ACK = 0x2612, + SMSG_AI_REACTION = 0x26AD, + SMSG_ALLIED_RACE_DETAILS = 0x27EC, SMSG_ALL_ACCOUNT_CRITERIA = 0x2571, SMSG_ALL_ACHIEVEMENT_DATA = 0x2570, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8, - SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x284D, - SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2588, + SMSG_APPLY_MOUNT_EQUIPMENT_RESULT = 0x2845, + SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2586, SMSG_AREA_POI_UPDATE_RESPONSE = 0x3010, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x2739, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x2735, SMSG_AREA_TRIGGER_DENIED = 0x2903, SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING = 0x2900, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x2710, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x270C, SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL = 0x28FE, SMSG_AREA_TRIGGER_RE_PATH = 0x28FD, SMSG_AREA_TRIGGER_RE_SHAPE = 0x2902, SMSG_AREA_TRIGGER_UNATTACH = 0x2901, SMSG_AREA_TRIGGER_UPDATE_DECAL_PROPERTIES = 0x28FF, - SMSG_ARENA_CLEAR_OPPONENTS = 0x2646, - SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262F, - SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2645, - SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x279E, - SMSG_ARTIFACT_FORGE_ERROR = 0x279C, - SMSG_ARTIFACT_RESPEC_PROMPT = 0x279D, - SMSG_ARTIFACT_XP_GAIN = 0x27E7, + SMSG_ARENA_CLEAR_OPPONENTS = 0x2642, + SMSG_ARENA_CROWD_CONTROL_SPELL_RESULT = 0x262B, + SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2641, + SMSG_ARTIFACT_ENDGAME_POWERS_REFUNDED = 0x2797, + SMSG_ARTIFACT_FORGE_ERROR = 0x2795, + SMSG_ARTIFACT_RESPEC_PROMPT = 0x2796, + SMSG_ARTIFACT_XP_GAIN = 0x27DF, SMSG_ATTACKER_STATE_UPDATE = 0x294D, SMSG_ATTACK_START = 0x2938, SMSG_ATTACK_STOP = 0x2939, SMSG_ATTACK_SWING_ERROR = 0x2947, SMSG_ATTACK_SWING_LANDED_LOG = 0x2948, - SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27D0, - SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27CF, - SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27CE, - SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26ED, - SMSG_AUCTION_COMMAND_RESULT = 0x26EA, - SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x2896, - SMSG_AUCTION_FAVORITE_LIST = 0x2867, - SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x285E, - SMSG_AUCTION_HELLO_RESPONSE = 0x26E8, - SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x285D, - SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x285A, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x285B, - SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x285C, - SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26EC, - SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EE, - SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E9, - SMSG_AUCTION_WON_NOTIFICATION = 0x26EB, + SMSG_AUCTIONABLE_TOKEN_AUCTION_SOLD = 0x27C8, + SMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE_RESPONSE = 0x27C7, + SMSG_AUCTIONABLE_TOKEN_SELL_CONFIRM_REQUIRED = 0x27C6, + SMSG_AUCTION_CLOSED_NOTIFICATION = 0x26E9, + SMSG_AUCTION_COMMAND_RESULT = 0x26E6, + SMSG_AUCTION_DISABLE_NEW_POSTINGS = 0x288F, + SMSG_AUCTION_FAVORITE_LIST = 0x285F, + SMSG_AUCTION_GET_COMMODITY_QUOTE_RESULT = 0x2856, + SMSG_AUCTION_HELLO_RESPONSE = 0x26E4, + SMSG_AUCTION_LIST_BIDDED_ITEMS_RESULT = 0x2855, + SMSG_AUCTION_LIST_BUCKETS_RESULT = 0x2852, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2853, + SMSG_AUCTION_LIST_OWNED_ITEMS_RESULT = 0x2854, + SMSG_AUCTION_OUTBID_NOTIFICATION = 0x26E8, + SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x26EA, + SMSG_AUCTION_REPLICATE_RESPONSE = 0x26E5, + SMSG_AUCTION_WON_NOTIFICATION = 0x26E7, SMSG_AURA_POINTS_DEPLETED = 0x2C20, SMSG_AURA_UPDATE = 0x2C1F, SMSG_AUTH_CHALLENGE = 0x3048, SMSG_AUTH_FAILED = 0x256C, SMSG_AUTH_RESPONSE = 0x256D, SMSG_AVAILABLE_HOTFIXES = 0x290F, - SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x289B, + SMSG_BACKPACK_DEFAULT_SIZE_CHANGED = 0x2894, SMSG_BAG_CLEANUP_FINISHED = 0x2DA7, - SMSG_BARBER_SHOP_RESULT = 0x26B9, - SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x283E, + SMSG_BARBER_SHOP_RESULT = 0x26B5, + SMSG_BATCH_PRESENCE_SUBSCRIPTION = 0x2836, SMSG_BATTLEFIELD_LIST = 0x2927, SMSG_BATTLEFIELD_PORT_DENIED = 0x292D, SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2923, @@ -987,217 +993,218 @@ enum OpcodeServer : uint16 SMSG_BATTLEGROUND_PLAYER_LEFT = 0x292C, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2928, SMSG_BATTLEGROUND_POINTS = 0x2949, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x2783, - SMSG_BATTLENET_CHALLENGE_START = 0x2782, - SMSG_BATTLENET_NOTIFICATION = 0x2800, - SMSG_BATTLENET_RESPONSE = 0x27FF, - SMSG_BATTLE_NET_CONNECTION_STATUS = 0x2801, - SMSG_BATTLE_PAY_ACK_FAILED = 0x277D, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x2772, - SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x2773, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x277C, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x2770, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x276F, - SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x287F, - SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x276D, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276E, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x276C, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x276A, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x276B, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x2771, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x277B, - SMSG_BATTLE_PAY_START_CHECKOUT = 0x281C, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2779, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2778, - SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2810, - SMSG_BATTLE_PETS_HEALED = 0x25F2, - SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2675, - SMSG_BATTLE_PET_DELETED = 0x25EF, - SMSG_BATTLE_PET_ERROR = 0x2635, - SMSG_BATTLE_PET_JOURNAL = 0x25EE, - SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25EC, - SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25ED, - SMSG_BATTLE_PET_RESTORED = 0x25F1, - SMSG_BATTLE_PET_REVOKED = 0x25F0, - SMSG_BATTLE_PET_TRAP_LEVEL = 0x25EA, - SMSG_BATTLE_PET_UPDATES = 0x25E9, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x277F, + SMSG_BATTLENET_CHALLENGE_START = 0x277E, + SMSG_BATTLENET_NOTIFICATION = 0x27F8, + SMSG_BATTLENET_RESPONSE = 0x27F7, + SMSG_BATTLE_NET_CONNECTION_STATUS = 0x27F9, + SMSG_BATTLE_PAY_ACK_FAILED = 0x2779, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x276E, + SMSG_BATTLE_PAY_COLLECTION_ITEM_DELIVERED = 0x276F, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x2778, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x276C, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x276B, + SMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_VAS_RESPONSE = 0x2877, + SMSG_BATTLE_PAY_DISTRIBUTION_UNREVOKED = 0x2769, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x276A, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x2768, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x2766, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x2767, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x276D, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x2777, + SMSG_BATTLE_PAY_START_CHECKOUT = 0x2814, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x2775, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x2774, + SMSG_BATTLE_PAY_VALIDATE_PURCHASE_RESPONSE = 0x2808, + SMSG_BATTLE_PETS_HEALED = 0x25EE, + SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x2671, + SMSG_BATTLE_PET_DELETED = 0x25EB, + SMSG_BATTLE_PET_ERROR = 0x2631, + SMSG_BATTLE_PET_JOURNAL = 0x25EA, + SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x25E8, + SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x25E9, + SMSG_BATTLE_PET_RESTORED = 0x25ED, + SMSG_BATTLE_PET_REVOKED = 0x25EC, + SMSG_BATTLE_PET_TRAP_LEVEL = 0x25E6, + SMSG_BATTLE_PET_UPDATES = 0x25E5, SMSG_BIND_POINT_UPDATE = 0x257D, - SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2625, - SMSG_BLACK_MARKET_OUTBID = 0x2626, - SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2624, - SMSG_BLACK_MARKET_WON = 0x2627, - SMSG_BONUS_ROLL_EMPTY = 0x2642, + SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2621, + SMSG_BLACK_MARKET_OUTBID = 0x2622, + SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2620, + SMSG_BLACK_MARKET_WON = 0x2623, + SMSG_BONUS_ROLL_EMPTY = 0x263E, SMSG_BOSS_KILL = 0x294C, SMSG_BREAK_TARGET = 0x2937, SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC, - SMSG_BROADCAST_SUMMON_CAST = 0x2840, - SMSG_BROADCAST_SUMMON_RESPONSE = 0x2841, - SMSG_BUY_FAILED = 0x26C2, - SMSG_BUY_SUCCEEDED = 0x26C1, + SMSG_BROADCAST_SUMMON_CAST = 0x2838, + SMSG_BROADCAST_SUMMON_RESPONSE = 0x2839, + SMSG_BUY_FAILED = 0x26BE, + SMSG_BUY_SUCCEEDED = 0x26BD, SMSG_CACHE_INFO = 0x291D, SMSG_CACHE_VERSION = 0x291C, - SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x269A, - SMSG_CALENDAR_COMMAND_RESULT = 0x269B, - SMSG_CALENDAR_COMMUNITY_INVITE = 0x268A, - SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x2692, - SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x2693, - SMSG_CALENDAR_INVITE_ADDED = 0x268B, - SMSG_CALENDAR_INVITE_ALERT = 0x268F, - SMSG_CALENDAR_INVITE_NOTES = 0x2694, - SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2695, - SMSG_CALENDAR_INVITE_REMOVED = 0x268C, - SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x2691, - SMSG_CALENDAR_INVITE_STATUS = 0x268D, - SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x2690, - SMSG_CALENDAR_MODERATOR_STATUS = 0x268E, - SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2696, - SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2697, - SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2698, - SMSG_CALENDAR_SEND_CALENDAR = 0x2688, - SMSG_CALENDAR_SEND_EVENT = 0x2689, - SMSG_CALENDAR_SEND_NUM_PENDING = 0x2699, - SMSG_CAMERA_EFFECT = 0x271F, - SMSG_CANCEL_AUTO_REPEAT = 0x26D8, + SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x2696, + SMSG_CALENDAR_COMMAND_RESULT = 0x2697, + SMSG_CALENDAR_COMMUNITY_INVITE = 0x2686, + SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x268E, + SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x268F, + SMSG_CALENDAR_INVITE_ADDED = 0x2687, + SMSG_CALENDAR_INVITE_ALERT = 0x268B, + SMSG_CALENDAR_INVITE_NOTES = 0x2690, + SMSG_CALENDAR_INVITE_NOTES_ALERT = 0x2691, + SMSG_CALENDAR_INVITE_REMOVED = 0x2688, + SMSG_CALENDAR_INVITE_REMOVED_ALERT = 0x268D, + SMSG_CALENDAR_INVITE_STATUS = 0x2689, + SMSG_CALENDAR_INVITE_STATUS_ALERT = 0x268C, + SMSG_CALENDAR_MODERATOR_STATUS = 0x268A, + SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x2692, + SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x2693, + SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x2694, + SMSG_CALENDAR_SEND_CALENDAR = 0x2684, + SMSG_CALENDAR_SEND_EVENT = 0x2685, + SMSG_CALENDAR_SEND_NUM_PENDING = 0x2695, + SMSG_CAMERA_EFFECT = 0x271B, + SMSG_CANCEL_AUTO_REPEAT = 0x26D4, SMSG_CANCEL_COMBAT = 0x2946, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46, - SMSG_CANCEL_PRELOAD_WORLD = 0x259A, - SMSG_CANCEL_SCENE = 0x2634, + SMSG_CANCEL_PRELOAD_WORLD = 0x2595, + SMSG_CANCEL_SCENE = 0x2630, SMSG_CANCEL_SPELL_VISUAL = 0x2C44, SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48, SMSG_CAN_DUEL_RESULT = 0x2942, - SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x280F, + SMSG_CAN_REDEEM_TOKEN_FOR_BALANCE_RESPONSE = 0x2807, SMSG_CAPTURE_POINT_REMOVED = 0x292A, SMSG_CAST_FAILED = 0x2C57, - SMSG_CHAIN_MISSILE_BOUNCE = 0x25C8, - SMSG_CHALLENGE_MODE_COMPLETE = 0x2609, - SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x260D, - SMSG_CHALLENGE_MODE_RESET = 0x2608, - SMSG_CHALLENGE_MODE_START = 0x2606, - SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2607, + SMSG_CHAIN_MISSILE_BOUNCE = 0x25C4, + SMSG_CHALLENGE_MODE_COMPLETE = 0x2605, + SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2609, + SMSG_CHALLENGE_MODE_RESET = 0x2604, + SMSG_CHALLENGE_MODE_START = 0x2602, + SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x2603, SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x3004, - SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x2802, - SMSG_CHANNEL_LIST = 0x2BC3, - SMSG_CHANNEL_NOTIFY = 0x2BC0, - SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1, - SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2, - SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B9, - SMSG_CHARACTER_LOGIN_FAILED = 0x26FF, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x2781, - SMSG_CHARACTER_RENAME_RESULT = 0x275C, - SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B8, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B7, - SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27BA, - SMSG_CHARACTER_UPGRADE_STARTED = 0x27B6, - SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26DC, - SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26DD, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27A3, + SMSG_CHANGE_REALM_TICKET_RESPONSE = 0x27FA, + SMSG_CHANNEL_LIST = 0x2BC4, + SMSG_CHANNEL_NOTIFY = 0x2BC1, + SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC2, + SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC3, + SMSG_CHARACTER_CHECK_UPGRADE_RESULT = 0x27B2, + SMSG_CHARACTER_LOGIN_FAILED = 0x26FB, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x277D, + SMSG_CHARACTER_RENAME_RESULT = 0x2758, + SMSG_CHARACTER_UPGRADE_ABORTED = 0x27B1, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x27B0, + SMSG_CHARACTER_UPGRADE_MANUAL_UNREVOKE_RESULT = 0x27B3, + SMSG_CHARACTER_UPGRADE_STARTED = 0x27AF, + SMSG_CHAR_CUSTOMIZE_FAILURE = 0x26D8, + SMSG_CHAR_CUSTOMIZE_SUCCESS = 0x26D9, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x279C, SMSG_CHAT = 0x2BAD, SMSG_CHAT_AUTO_RESPONDED = 0x2BB8, - SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x2BCA, - SMSG_CHAT_DOWN = 0x2BBD, + SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE = 0x2BCB, + SMSG_CHAT_DOWN = 0x2BBE, SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0x2BAC, - SMSG_CHAT_IS_DOWN = 0x2BBE, + SMSG_CHAT_IS_DOWN = 0x2BBF, SMSG_CHAT_NOT_IN_PARTY = 0x2BB2, SMSG_CHAT_PLAYER_AMBIGUOUS = 0x2BB0, SMSG_CHAT_PLAYER_NOTFOUND = 0x2BB7, - SMSG_CHAT_RECONNECT = 0x2BBF, - SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x2BC5, + SMSG_CHAT_RECONNECT = 0x2BC0, + SMSG_CHAT_REGIONAL_SERVICE_STATUS = 0x2BC6, SMSG_CHAT_RESTRICTED = 0x2BB3, - SMSG_CHAT_SERVER_MESSAGE = 0x2BC4, + SMSG_CHAT_SERVER_MESSAGE = 0x2BC5, SMSG_CHEAT_IGNORE_DIMISHING_RETURNS = 0x2C12, SMSG_CHECK_ABANDON_NPE = 0x3018, SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT = 0x2584, - SMSG_CHECK_WARGAME_ENTRY = 0x2592, - SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x286A, - SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2851, + SMSG_CHECK_WARGAME_ENTRY = 0x258F, + SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS = 0x2862, + SMSG_CLAIM_RAF_REWARD_RESPONSE = 0x2849, SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C24, - SMSG_CLEAR_BOSS_EMOTES = 0x25BB, - SMSG_CLEAR_COOLDOWN = 0x26B6, + SMSG_CLEAR_BOSS_EMOTES = 0x25B7, + SMSG_CLEAR_COOLDOWN = 0x26B2, SMSG_CLEAR_COOLDOWNS = 0x2C23, SMSG_CLEAR_RESURRECT = 0x257F, SMSG_CLEAR_SPELL_CHARGES = 0x2C25, SMSG_CLEAR_TARGET = 0x2943, SMSG_CLEAR_TREASURE_PICKER_CACHE = 0x2AA1, - SMSG_CLOSE_ARTIFACT_FORGE = 0x279B, - SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2849, - SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x284C, - SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x284A, - SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x2847, - SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x284B, - SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2848, - SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x288D, - SMSG_COIN_REMOVED = 0x2614, + SMSG_CLOSE_ARTIFACT_FORGE = 0x2794, + SMSG_CLUB_FINDER_ERROR_MESSAGE = 0x2841, + SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE = 0x2844, + SMSG_CLUB_FINDER_LOOKUP_CLUB_POSTINGS_LIST = 0x2842, + SMSG_CLUB_FINDER_RESPONSE_CHARACTER_APPLICATION_LIST = 0x283F, + SMSG_CLUB_FINDER_RESPONSE_POST_RECRUITMENT_MESSAGE = 0x2843, + SMSG_CLUB_FINDER_UPDATE_APPLICATIONS = 0x2840, + SMSG_CLUB_FINDER_WHISPER_APPLICANT_RESPONSE = 0x2886, + SMSG_COIN_REMOVED = 0x2610, SMSG_COMBAT_EVENT_FAILED = 0x293A, - SMSG_COMMENTATOR_MAP_INFO = 0x2701, - SMSG_COMMENTATOR_PLAYER_INFO = 0x2702, - SMSG_COMMENTATOR_STATE_CHANGED = 0x2700, - SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27CB, - SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27D7, - SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27CD, - SMSG_COMMERCE_TOKEN_UPDATE = 0x27CC, - SMSG_COMPLAINT_RESULT = 0x26A8, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x2794, - SMSG_CONFIRM_PARTY_INVITE = 0x280E, + SMSG_COMMENTATOR_MAP_INFO = 0x26FD, + SMSG_COMMENTATOR_PLAYER_INFO = 0x26FE, + SMSG_COMMENTATOR_STATE_CHANGED = 0x26FC, + SMSG_COMMERCE_TOKEN_GET_COUNT_RESPONSE = 0x27C3, + SMSG_COMMERCE_TOKEN_GET_LOG_RESPONSE = 0x27CF, + SMSG_COMMERCE_TOKEN_GET_MARKET_PRICE_RESPONSE = 0x27C5, + SMSG_COMMERCE_TOKEN_UPDATE = 0x27C4, + SMSG_COMPLAINT_RESULT = 0x26A4, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x278D, + SMSG_CONFIRM_PARTY_INVITE = 0x2806, SMSG_CONNECT_TO = 0x304D, - SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277E, - SMSG_CONSOLE_WRITE = 0x2632, - SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27D3, - SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27D2, - SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27D1, - SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27D5, - SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27D6, - SMSG_CONTACT_LIST = 0x277F, - SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x2815, - SMSG_CONTROL_UPDATE = 0x2644, - SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x2873, - SMSG_COOLDOWN_CHEAT = 0x2732, - SMSG_COOLDOWN_EVENT = 0x26B5, - SMSG_CORPSE_LOCATION = 0x264C, - SMSG_CORPSE_RECLAIM_DELAY = 0x2743, - SMSG_CORPSE_TRANSPORT_QUERY = 0x270C, + SMSG_CONQUEST_FORMULA_CONSTANTS = 0x277A, + SMSG_CONSOLE_WRITE = 0x262E, + SMSG_CONSUMABLE_TOKEN_BUY_AT_MARKET_PRICE_RESPONSE = 0x27CB, + SMSG_CONSUMABLE_TOKEN_BUY_CHOICE_REQUIRED = 0x27CA, + SMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY_RESPONSE = 0x27C9, + SMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRM_REQUIRED = 0x27CD, + SMSG_CONSUMABLE_TOKEN_REDEEM_RESPONSE = 0x27CE, + SMSG_CONTACT_LIST = 0x277B, + SMSG_CONTRIBUTION_LAST_UPDATE_RESPONSE = 0x280D, + SMSG_CONTROL_UPDATE = 0x2640, + SMSG_CONVERT_ITEMS_TO_CURRENCY_VALUE = 0x286B, + SMSG_COOLDOWN_CHEAT = 0x272E, + SMSG_COOLDOWN_EVENT = 0x26B1, + SMSG_CORPSE_LOCATION = 0x2648, + SMSG_CORPSE_RECLAIM_DELAY = 0x273F, + SMSG_CORPSE_TRANSPORT_QUERY = 0x2708, SMSG_COVENANT_CALLINGS_AVAILABILITY_RESPONSE = 0x2AA3, - SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27F7, - SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x2874, - SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A9, - SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x28A5, - SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x28A1, - SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x28A3, - SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x289F, - SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x28A4, - SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x28A0, - SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A7, - SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x28A2, - SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28AA, - SMSG_CRAFT_ENCHANT_RESULT = 0x28A8, - SMSG_CREATE_CHAR = 0x26FB, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x2793, - SMSG_CREATOR_VISUALS_OVERRIDE = 0x28AD, - SMSG_CRITERIA_DELETED = 0x26E1, - SMSG_CRITERIA_UPDATE = 0x26DB, - SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26BD, - SMSG_CUSTOM_LOAD_SCREEN = 0x25CB, + SMSG_COVENANT_PREVIEW_OPEN_NPC = 0x27EF, + SMSG_COVENANT_RENOWN_SEND_CATCHUP_STATE = 0x286C, + SMSG_CRAFTING_HOUSE_HELLO_RESPONSE = 0x28A2, + SMSG_CRAFTING_ORDER_CANCEL_RESULT = 0x289E, + SMSG_CRAFTING_ORDER_CLAIM_RESULT = 0x289A, + SMSG_CRAFTING_ORDER_CRAFT_RESULT = 0x289C, + SMSG_CRAFTING_ORDER_CREATE_RESULT = 0x2898, + SMSG_CRAFTING_ORDER_FULFILL_RESULT = 0x289D, + SMSG_CRAFTING_ORDER_LIST_ORDERS_RESPONSE = 0x2899, + SMSG_CRAFTING_ORDER_REJECT_RESULT = 0x28A0, + SMSG_CRAFTING_ORDER_RELEASE_RESULT = 0x289B, + SMSG_CRAFTING_ORDER_UPDATE_STATE = 0x28A3, + SMSG_CRAFT_ENCHANT_RESULT = 0x28A1, + SMSG_CREATE_CHAR = 0x26F7, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x278C, + SMSG_CREATOR_VISUALS_OVERRIDE = 0x28A6, + SMSG_CRITERIA_DELETED = 0x26DD, + SMSG_CRITERIA_UPDATE = 0x26D7, + SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26B9, + SMSG_CUSTOM_LOAD_SCREEN = 0x25C7, SMSG_DAILY_QUESTS_RESET = 0x2A80, - SMSG_DAMAGE_CALC_LOG = 0x27C0, + SMSG_DAMAGE_CALC_LOG = 0x2C63, SMSG_DB_REPLY = 0x290E, - SMSG_DEATH_RELEASE_LOC = 0x26CE, - SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x2652, + SMSG_DEATH_RELEASE_LOC = 0x26CA, + SMSG_DEBUG_MENU_MANAGER_FULL_UPDATE = 0x264E, SMSG_DEFENSE_MESSAGE = 0x2BB6, - SMSG_DELETE_CHAR = 0x26FC, + SMSG_DELETE_CHAR = 0x26F8, SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x2980, - SMSG_DESTROY_ARENA_UNIT = 0x273B, - SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26F3, - SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258C, - SMSG_DISENCHANT_CREDIT = 0x25A8, + SMSG_DESTROY_ARENA_UNIT = 0x2737, + SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x26EF, + SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x2589, + SMSG_DISENCHANT_CREDIT = 0x25A3, SMSG_DISMOUNT_RESULT = 0x257C, SMSG_DISPEL_FAILED = 0x2C2D, - SMSG_DISPLAY_GAME_ERROR = 0x25A1, + SMSG_DISPLAY_GAME_ERROR = 0x259C, SMSG_DISPLAY_PLAYER_CHOICE = 0x2FFC, - SMSG_DISPLAY_PROMOTION = 0x2649, + SMSG_DISPLAY_PROMOTION = 0x2645, SMSG_DISPLAY_QUEST_POPUP = 0x2A9E, - SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2878, - SMSG_DISPLAY_TOAST = 0x2621, - SMSG_DISPLAY_WORLD_TEXT = 0x27E8, - SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25E0, + SMSG_DISPLAY_SOULBIND_UPDATE_MESSAGE = 0x2870, + SMSG_DISPLAY_TOAST = 0x261D, + SMSG_DISPLAY_WORLD_TEXT = 0x27E0, + SMSG_DISPLAY_WORLD_TEXT_ON_TARGET = 0x2C62, + SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25DC, SMSG_DROP_NEW_CONNECTION = 0x304C, SMSG_DUEL_ARRANGED = 0x293C, SMSG_DUEL_COMPLETE = 0x2940, @@ -1206,50 +1213,51 @@ enum OpcodeServer : uint16 SMSG_DUEL_OUT_OF_BOUNDS = 0x293D, SMSG_DUEL_REQUESTED = 0x293B, SMSG_DUEL_WINNER = 0x2941, - SMSG_DURABILITY_DAMAGE_DEATH = 0x273E, - SMSG_EMOTE = 0x27C1, - SMSG_ENABLE_BARBER_SHOP = 0x26B8, - SMSG_ENCHANTMENT_LOG = 0x270D, - SMSG_ENCOUNTER_END = 0x2777, - SMSG_ENCOUNTER_START = 0x2776, - SMSG_END_LIGHTNING_STORM = 0x26A5, - SMSG_ENSURE_WORLD_LOADED = 0x2887, + SMSG_DURABILITY_DAMAGE_DEATH = 0x273A, + SMSG_EMOTE = 0x27B9, + SMSG_ENABLE_BARBER_SHOP = 0x26B4, + SMSG_ENCHANTMENT_LOG = 0x2709, + SMSG_ENCOUNTER_END = 0x2773, + SMSG_ENCOUNTER_START = 0x2772, + SMSG_END_LIGHTNING_STORM = 0x26A1, + SMSG_ENSURE_WORLD_LOADED = 0x2880, SMSG_ENTER_ENCRYPTED_MODE = 0x3049, SMSG_ENUM_CHARACTERS_RESULT = 0x2583, - SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27ED, + SMSG_ENUM_VAS_PURCHASE_STATES_RESPONSE = 0x27E5, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C1E, - SMSG_EQUIPMENT_SET_ID = 0x26AE, + SMSG_EQUIPMENT_SET_ID = 0x26AA, SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1, - SMSG_EXPLORATION_EXPERIENCE = 0x2758, - SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2871, - SMSG_FACTION_BONUS_INFO = 0x271E, + SMSG_EXPLORATION_EXPERIENCE = 0x2754, + SMSG_EXTERNAL_TRANSACTION_ID_GENERATED = 0x2869, + SMSG_FACTION_BONUS_INFO = 0x271A, SMSG_FAILED_PLAYER_CONDITION = 0x2FFA, - SMSG_FAILED_QUEST_TURN_IN = 0x280B, - SMSG_FEATURE_SYSTEM_STATUS = 0x25BF, - SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25C0, - SMSG_FEIGN_DEATH_RESISTED = 0x273D, - SMSG_FISH_ESCAPED = 0x26CB, - SMSG_FISH_NOT_HOOKED = 0x26CA, + SMSG_FAILED_QUEST_TURN_IN = 0x2803, + SMSG_FEATURE_SYSTEM_STATUS = 0x25BB, + SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25BC, + SMSG_FEIGN_DEATH_RESISTED = 0x2739, + SMSG_FISH_ESCAPED = 0x26C7, + SMSG_FISH_NOT_HOOKED = 0x26C6, SMSG_FLIGHT_SPLINE_SYNC = 0x2E2B, - SMSG_FORCED_DEATH_UPDATE = 0x26CF, - SMSG_FORCE_ANIM = 0x274A, - SMSG_FORCE_ANIMATIONS = 0x274B, - SMSG_FORCE_OBJECT_RELINK = 0x2648, - SMSG_FRIEND_STATUS = 0x2780, - SMSG_GAIN_MAW_POWER = 0x27DC, - SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25C3, - SMSG_GAME_OBJECT_BASE = 0x2822, - SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x288B, - SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C4, - SMSG_GAME_OBJECT_DESPAWN = 0x25C5, - SMSG_GAME_OBJECT_INTERACTION = 0x288A, + SMSG_FORCED_DEATH_UPDATE = 0x26CB, + SMSG_FORCE_ANIM = 0x2746, + SMSG_FORCE_ANIMATIONS = 0x2747, + SMSG_FORCE_OBJECT_RELINK = 0x2644, + SMSG_FORCE_RANDOM_TRANSMOG_TOAST = 0x25AE, + SMSG_FRIEND_STATUS = 0x277C, + SMSG_GAIN_MAW_POWER = 0x27D4, + SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25BF, + SMSG_GAME_OBJECT_BASE = 0x281A, + SMSG_GAME_OBJECT_CLOSE_INTERACTION = 0x2884, + SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25C0, + SMSG_GAME_OBJECT_DESPAWN = 0x25C1, + SMSG_GAME_OBJECT_INTERACTION = 0x2883, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A, - SMSG_GAME_OBJECT_RESET_STATE = 0x2718, - SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27FE, - SMSG_GAME_SPEED_SET = 0x267E, - SMSG_GAME_TIME_SET = 0x2706, - SMSG_GAME_TIME_UPDATE = 0x2705, + SMSG_GAME_OBJECT_RESET_STATE = 0x2714, + SMSG_GAME_OBJECT_SET_STATE_LOCAL = 0x27F6, + SMSG_GAME_SPEED_SET = 0x267A, + SMSG_GAME_TIME_SET = 0x2702, + SMSG_GAME_TIME_UPDATE = 0x2701, SMSG_GARRISON_ACTIVATE_MISSION_BONUS_ABILITY = 0x2982, SMSG_GARRISON_ADD_EVENT = 0x29A6, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2974, @@ -1321,35 +1329,36 @@ enum OpcodeServer : uint16 SMSG_GARRISON_UPGRADE_RESULT = 0x296B, SMSG_GARRISON_USE_RECALL_PORTAL_RESULT = 0x297D, SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2585, - SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x2816, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275A, + SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x280E, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2756, SMSG_GET_GARRISON_INFO_RESULT = 0x295E, - SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x2796, - SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27D4, - SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27BE, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x2795, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x2791, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x27BD, - SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E9, - SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27EA, + SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x278F, + SMSG_GET_REALM_HIDDEN_RESULT = 0x28B4, + SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x27CC, + SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x27B7, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x278E, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x278A, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x27B6, + SMSG_GET_VAS_ACCOUNT_CHARACTER_LIST_RESULT = 0x27E1, + SMSG_GET_VAS_TRANSFER_TARGET_REALM_LIST_RESULT = 0x27E2, SMSG_GM_PLAYER_INFO = 0x3005, SMSG_GM_REQUEST_PLAYER_INFO = 0x2FFB, - SMSG_GM_TICKET_CASE_STATUS = 0x26A0, - SMSG_GM_TICKET_SYSTEM_STATUS = 0x269F, - SMSG_GOD_MODE = 0x26F6, + SMSG_GM_TICKET_CASE_STATUS = 0x269C, + SMSG_GM_TICKET_SYSTEM_STATUS = 0x269B, + SMSG_GOD_MODE = 0x26F2, SMSG_GOSSIP_COMPLETE = 0x2A97, SMSG_GOSSIP_MESSAGE = 0x2A98, SMSG_GOSSIP_OPTION_NPC_INTERACTION = 0x2AA7, - SMSG_GOSSIP_POI = 0x278E, + SMSG_GOSSIP_POI = 0x2787, SMSG_GOSSIP_QUEST_UPDATE = 0x2A99, SMSG_GOSSIP_REFRESH_OPTIONS = 0x2AA6, - SMSG_GROUP_ACTION_THROTTLED = 0x2590, - SMSG_GROUP_AUTO_KICK = 0x278B, - SMSG_GROUP_DECLINE = 0x2787, - SMSG_GROUP_DESTROYED = 0x278A, - SMSG_GROUP_NEW_LEADER = 0x262A, - SMSG_GROUP_REQUEST_DECLINE = 0x2788, - SMSG_GROUP_UNINVITE = 0x2789, + SMSG_GROUP_ACTION_THROTTLED = 0x258D, + SMSG_GROUP_AUTO_KICK = 0x2784, + SMSG_GROUP_DECLINE = 0x2780, + SMSG_GROUP_DESTROYED = 0x2783, + SMSG_GROUP_NEW_LEADER = 0x2626, + SMSG_GROUP_REQUEST_DECLINE = 0x2781, + SMSG_GROUP_UNINVITE = 0x2782, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7, @@ -1403,59 +1412,59 @@ enum OpcodeServer : uint16 SMSG_GUILD_ROSTER = 0x29BB, SMSG_GUILD_ROSTER_UPDATE = 0x29BC, SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9, - SMSG_HEALTH_UPDATE = 0x26CC, - SMSG_HIGHEST_THREAT_UPDATE = 0x26D4, + SMSG_HEALTH_UPDATE = 0x26C8, + SMSG_HIGHEST_THREAT_UPDATE = 0x26D0, SMSG_HOTFIX_CONNECT = 0x2911, SMSG_HOTFIX_MESSAGE = 0x2910, - SMSG_INITIALIZE_FACTIONS = 0x271D, + SMSG_INITIALIZE_FACTIONS = 0x2719, SMSG_INITIAL_SETUP = 0x2580, - SMSG_INIT_WORLD_STATES = 0x273F, - SMSG_INSPECT_RESULT = 0x262E, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A9, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A8, - SMSG_INSTANCE_ENCOUNTER_END = 0x27B1, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A7, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27B3, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27B2, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27AC, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27AB, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27B0, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27B4, - SMSG_INSTANCE_ENCOUNTER_START = 0x27AD, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27AA, - SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27AF, - SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27AE, - SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F4, - SMSG_INSTANCE_INFO = 0x2631, - SMSG_INSTANCE_RESET = 0x2683, - SMSG_INSTANCE_RESET_FAILED = 0x2684, - SMSG_INSTANCE_SAVE_CREATED = 0x2775, + SMSG_INIT_WORLD_STATES = 0x273B, + SMSG_INSPECT_RESULT = 0x262A, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27A2, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27A1, + SMSG_INSTANCE_ENCOUNTER_END = 0x27AA, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27A0, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27AC, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27AB, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27A5, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27A4, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27A9, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27AD, + SMSG_INSTANCE_ENCOUNTER_START = 0x27A6, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27A3, + SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS = 0x27A8, + SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE = 0x27A7, + SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x26F0, + SMSG_INSTANCE_INFO = 0x262D, + SMSG_INSTANCE_RESET = 0x267F, + SMSG_INSTANCE_RESET_FAILED = 0x2680, + SMSG_INSTANCE_SAVE_CREATED = 0x2771, SMSG_INTERRUPT_POWER_REGEN = 0x2C59, SMSG_INVALIDATE_PAGE_TEXT = 0x2918, SMSG_INVALIDATE_PLAYER = 0x2FFF, - SMSG_INVALID_PROMOTION_CODE = 0x274C, + SMSG_INVALID_PROMOTION_CODE = 0x2748, SMSG_INVENTORY_CHANGE_FAILURE = 0x2DA5, - SMSG_INVENTORY_FIXUP_COMPLETE = 0x280D, - SMSG_INVENTORY_FULL_OVERFLOW = 0x281E, - SMSG_ISLAND_AZERITE_GAIN = 0x2755, - SMSG_ISLAND_COMPLETE = 0x2756, + SMSG_INVENTORY_FIXUP_COMPLETE = 0x2805, + SMSG_INVENTORY_FULL_OVERFLOW = 0x2816, + SMSG_ISLAND_AZERITE_GAIN = 0x2751, + SMSG_ISLAND_COMPLETE = 0x2752, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A84, - SMSG_ITEM_CHANGED = 0x26E5, - SMSG_ITEM_COOLDOWN = 0x27BF, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274E, - SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25A0, - SMSG_ITEM_INTERACTION_COMPLETE = 0x2869, - SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x259E, - SMSG_ITEM_PUSH_RESULT = 0x2620, - SMSG_ITEM_TIME_UPDATE = 0x274D, - SMSG_KICK_REASON = 0x2686, - SMSG_LATENCY_REPORT_PING = 0x287B, + SMSG_ITEM_CHANGED = 0x26E1, + SMSG_ITEM_COOLDOWN = 0x27B8, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x274A, + SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x259B, + SMSG_ITEM_INTERACTION_COMPLETE = 0x2861, + SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x2599, + SMSG_ITEM_PUSH_RESULT = 0x261C, + SMSG_ITEM_TIME_UPDATE = 0x2749, + SMSG_KICK_REASON = 0x2682, + SMSG_LATENCY_REPORT_PING = 0x2873, SMSG_LEARNED_SPELLS = 0x2C4D, - SMSG_LEARN_PVP_TALENT_FAILED = 0x25D4, - SMSG_LEARN_TALENT_FAILED = 0x25D3, - SMSG_LEGACY_LOOT_RULES = 0x2823, - SMSG_LEVEL_LINKING_RESULT = 0x284F, - SMSG_LEVEL_UP_INFO = 0x26E3, + SMSG_LEARN_PVP_TALENT_FAILED = 0x25D0, + SMSG_LEARN_TALENT_FAILED = 0x25CF, + SMSG_LEGACY_LOOT_RULES = 0x281B, + SMSG_LEVEL_LINKING_RESULT = 0x2847, + SMSG_LEVEL_UP_INFO = 0x26DF, SMSG_LFG_BOOT_PLAYER = 0x2A35, SMSG_LFG_DISABLED = 0x2A33, SMSG_LFG_EXPAND_SEARCH_PROMPT = 0x2A3B, @@ -1483,48 +1492,48 @@ enum OpcodeServer : uint16 SMSG_LFG_SLOT_INVALID = 0x2A30, SMSG_LFG_TELEPORT_DENIED = 0x2A32, SMSG_LFG_UPDATE_STATUS = 0x2A24, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2767, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2766, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x275B, - SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2768, - SMSG_LOAD_CUF_PROFILES = 0x25BC, - SMSG_LOAD_EQUIPMENT_SET = 0x2708, - SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x288F, - SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x2890, - SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x2891, - SMSG_LOGIN_SET_TIME_SPEED = 0x2707, - SMSG_LOGIN_VERIFY_WORLD = 0x259B, - SMSG_LOGOUT_CANCEL_ACK = 0x2682, - SMSG_LOGOUT_COMPLETE = 0x2681, - SMSG_LOGOUT_RESPONSE = 0x2680, - SMSG_LOG_XP_GAIN = 0x26DF, - SMSG_LOOT_ALL_PASSED = 0x261E, - SMSG_LOOT_LIST = 0x273A, - SMSG_LOOT_MONEY_NOTIFY = 0x2619, - SMSG_LOOT_RELEASE = 0x2618, - SMSG_LOOT_RELEASE_ALL = 0x2617, - SMSG_LOOT_REMOVED = 0x2613, - SMSG_LOOT_RESPONSE = 0x2612, - SMSG_LOOT_ROLL = 0x261B, - SMSG_LOOT_ROLLS_COMPLETE = 0x261D, - SMSG_LOOT_ROLL_WON = 0x261F, - SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x266D, - SMSG_MAIL_COMMAND_RESULT = 0x2638, - SMSG_MAIL_LIST_RESULT = 0x274F, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2750, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x2763, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x2762, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x2757, + SMSG_LIVE_REGION_KEY_BINDINGS_COPY_RESULT = 0x2764, + SMSG_LOAD_CUF_PROFILES = 0x25B8, + SMSG_LOAD_EQUIPMENT_SET = 0x2704, + SMSG_LOBBY_MATCHMAKER_PARTY_INFO = 0x2888, + SMSG_LOBBY_MATCHMAKER_PARTY_INVITE_REJECTED = 0x2889, + SMSG_LOBBY_MATCHMAKER_RECEIVE_INVITE = 0x288A, + SMSG_LOGIN_SET_TIME_SPEED = 0x2703, + SMSG_LOGIN_VERIFY_WORLD = 0x2596, + SMSG_LOGOUT_CANCEL_ACK = 0x267E, + SMSG_LOGOUT_COMPLETE = 0x267D, + SMSG_LOGOUT_RESPONSE = 0x267C, + SMSG_LOG_XP_GAIN = 0x26DB, + SMSG_LOOT_ALL_PASSED = 0x261A, + SMSG_LOOT_LIST = 0x2736, + SMSG_LOOT_MONEY_NOTIFY = 0x2615, + SMSG_LOOT_RELEASE = 0x2614, + SMSG_LOOT_RELEASE_ALL = 0x2613, + SMSG_LOOT_REMOVED = 0x260F, + SMSG_LOOT_RESPONSE = 0x260E, + SMSG_LOOT_ROLL = 0x2617, + SMSG_LOOT_ROLLS_COMPLETE = 0x2619, + SMSG_LOOT_ROLL_WON = 0x261B, + SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2669, + SMSG_MAIL_COMMAND_RESULT = 0x2634, + SMSG_MAIL_LIST_RESULT = 0x274B, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x274C, SMSG_MAP_OBJECTIVES_INIT = 0x294B, - SMSG_MAP_OBJ_EVENTS = 0x25C6, - SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x261C, - SMSG_MEETING_STONE_FAILED = 0x2892, + SMSG_MAP_OBJ_EVENTS = 0x25C2, + SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2618, + SMSG_MEETING_STONE_FAILED = 0x288B, SMSG_MESSAGE_BOX = 0x2576, - SMSG_MINIMAP_PING = 0x26C9, + SMSG_MINIMAP_PING = 0x26C5, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13, - SMSG_MISSILE_CANCEL = 0x25C7, - SMSG_MODIFY_COOLDOWN = 0x275D, + SMSG_MISSILE_CANCEL = 0x25C3, + SMSG_MODIFY_COOLDOWN = 0x2759, SMSG_MOTD = 0x2BAF, SMSG_MOUNT_RESULT = 0x257B, - SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x283F, + SMSG_MOVEMENT_ENFORCEMENT_ALERT = 0x2837, SMSG_MOVE_ADD_IMPULSE = 0x2E32, SMSG_MOVE_APPLY_INERTIA = 0x2E2E, SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2E15, @@ -1632,84 +1641,83 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_TELEPORT = 0x2DE1, SMSG_MOVE_UPDATE_TURN_RATE = 0x2DDD, SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DD8, - SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D9, - SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D8, - SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x260A, - SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x260C, - SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260F, - SMSG_MYTHIC_PLUS_SEASON_DATA = 0x260B, - SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25DB, - SMSG_NEW_TAXI_PATH = 0x267B, - SMSG_NEW_WORLD = 0x2598, + SMSG_MULTI_FLOOR_LEAVE_FLOOR = 0x27D1, + SMSG_MULTI_FLOOR_NEW_FLOOR = 0x27D0, + SMSG_MYTHIC_PLUS_ALL_MAP_STATS = 0x2606, + SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x2608, + SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x260B, + SMSG_MYTHIC_PLUS_SEASON_DATA = 0x2607, + SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25D7, + SMSG_NEW_DATA_BUILD = 0x28B3, + SMSG_NEW_TAXI_PATH = 0x2677, + SMSG_NEW_WORLD = 0x2593, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43, - SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A7, - SMSG_NOTIFY_MONEY = 0x259D, - SMSG_NOTIFY_RECEIVED_MAIL = 0x2639, - SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2889, - SMSG_OFFER_PETITION_ERROR = 0x26B2, - SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26E0, + SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26A3, + SMSG_NOTIFY_MONEY = 0x2598, + SMSG_NOTIFY_RECEIVED_MAIL = 0x2635, + SMSG_NPC_INTERACTION_OPEN_RESULT = 0x2882, + SMSG_OFFER_PETITION_ERROR = 0x26AE, + SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x26DC, SMSG_ON_MONSTER_MOVE = 0x2DD4, - SMSG_OPEN_ARTIFACT_FORGE = 0x279A, + SMSG_OPEN_ARTIFACT_FORGE = 0x2793, SMSG_OPEN_CONTAINER = 0x2DA6, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x2792, - SMSG_OVERRIDE_LIGHT = 0x26B7, - SMSG_PAGE_TEXT = 0x2713, - SMSG_PARTY_COMMAND_RESULT = 0x278C, - SMSG_PARTY_INVITE = 0x25BD, - SMSG_PARTY_KILL_LOG = 0x2753, - SMSG_PARTY_MEMBER_FULL_STATE = 0x2752, - SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x2751, - SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x286F, - SMSG_PARTY_UPDATE = 0x25F3, - SMSG_PAST_TIME_EVENTS = 0x25C2, - SMSG_PAUSE_MIRROR_TIMER = 0x270A, - SMSG_PENDING_RAID_LOCK = 0x26F2, - SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x2885, - SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x2881, - SMSG_PERKS_PROGRAM_DISABLED = 0x2886, - SMSG_PERKS_PROGRAM_RESULT = 0x2882, - SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x2880, - SMSG_PETITION_ALREADY_SIGNED = 0x25A3, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x278B, + SMSG_OVERRIDE_LIGHT = 0x26B3, + SMSG_PAGE_TEXT = 0x270F, + SMSG_PARTY_COMMAND_RESULT = 0x2785, + SMSG_PARTY_INVITE = 0x25B9, + SMSG_PARTY_KILL_LOG = 0x274F, + SMSG_PARTY_MEMBER_FULL_STATE = 0x274E, + SMSG_PARTY_MEMBER_PARTIAL_STATE = 0x274D, + SMSG_PARTY_NOTIFY_LFG_LEADER_CHANGE = 0x2867, + SMSG_PARTY_UPDATE = 0x25EF, + SMSG_PAST_TIME_EVENTS = 0x25BE, + SMSG_PAUSE_MIRROR_TIMER = 0x2706, + SMSG_PENDING_RAID_LOCK = 0x26EE, + SMSG_PERKS_PROGRAM_ACTIVITY_COMPLETE = 0x287E, + SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE = 0x2879, + SMSG_PERKS_PROGRAM_DISABLED = 0x287F, + SMSG_PERKS_PROGRAM_RESULT = 0x287B, + SMSG_PERKS_PROGRAM_VENDOR_PENDING = 0x287A, + SMSG_PERKS_PROGRAM_VENDOR_UPDATE = 0x2878, + SMSG_PETITION_ALREADY_SIGNED = 0x259E, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29FA, - SMSG_PETITION_SHOW_LIST = 0x26BA, - SMSG_PETITION_SHOW_SIGNATURES = 0x26BB, - SMSG_PETITION_SIGN_RESULTS = 0x2745, - SMSG_PET_ACTION_FEEDBACK = 0x2742, - SMSG_PET_ACTION_SOUND = 0x269D, - SMSG_PET_ADDED = 0x2595, - SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2601, - SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x2672, - SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25FA, - SMSG_PET_BATTLE_FINAL_ROUND = 0x25FF, - SMSG_PET_BATTLE_FINISHED = 0x2600, - SMSG_PET_BATTLE_FIRST_ROUND = 0x25FC, - SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25FB, - SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2602, - SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F9, - SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2636, - SMSG_PET_BATTLE_QUEUE_STATUS = 0x2637, - SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FE, - SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F8, - SMSG_PET_BATTLE_ROUND_RESULT = 0x25FD, - SMSG_PET_BATTLE_SLOT_UPDATES = 0x25EB, + SMSG_PETITION_SHOW_LIST = 0x26B6, + SMSG_PETITION_SHOW_SIGNATURES = 0x26B7, + SMSG_PETITION_SIGN_RESULTS = 0x2741, + SMSG_PET_ACTION_FEEDBACK = 0x273E, + SMSG_PET_ACTION_SOUND = 0x2699, + SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x25FD, + SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x266E, + SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x25F6, + SMSG_PET_BATTLE_FINAL_ROUND = 0x25FB, + SMSG_PET_BATTLE_FINISHED = 0x25FC, + SMSG_PET_BATTLE_FIRST_ROUND = 0x25F8, + SMSG_PET_BATTLE_INITIAL_UPDATE = 0x25F7, + SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x25FE, + SMSG_PET_BATTLE_PVP_CHALLENGE = 0x25F5, + SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2632, + SMSG_PET_BATTLE_QUEUE_STATUS = 0x2633, + SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x25FA, + SMSG_PET_BATTLE_REQUEST_FAILED = 0x25F4, + SMSG_PET_BATTLE_ROUND_RESULT = 0x25F9, + SMSG_PET_BATTLE_SLOT_UPDATES = 0x25E7, SMSG_PET_CAST_FAILED = 0x2C58, SMSG_PET_CLEAR_SPELLS = 0x2C21, - SMSG_PET_DISMISS_SOUND = 0x269E, - SMSG_PET_GOD_MODE = 0x2678, - SMSG_PET_GUIDS = 0x26FE, + SMSG_PET_DISMISS_SOUND = 0x269A, + SMSG_PET_GOD_MODE = 0x2674, + SMSG_PET_GUIDS = 0x26FA, SMSG_PET_LEARNED_SPELLS = 0x2C4F, - SMSG_PET_MODE = 0x258B, - SMSG_PET_NAME_INVALID = 0x26BF, - SMSG_PET_NEWLY_TAMED = 0x2589, - SMSG_PET_SLOT_UPDATED = 0x258A, + SMSG_PET_MODE = 0x2588, + SMSG_PET_NAME_INVALID = 0x26BB, + SMSG_PET_NEWLY_TAMED = 0x2587, SMSG_PET_SPELLS_MESSAGE = 0x2C22, - SMSG_PET_STABLE_LIST = 0x2596, - SMSG_PET_STABLE_RESULT = 0x2597, - SMSG_PET_TAME_FAILURE = 0x26AF, + SMSG_PET_STABLE_RESULT = 0x2592, + SMSG_PET_TAME_FAILURE = 0x26AB, SMSG_PET_UNLEARNED_SPELLS = 0x2C50, SMSG_PHASE_SHIFT_CHANGE = 0x2578, - SMSG_PLAYED_TIME = 0x26D0, + SMSG_PLAYED_TIME = 0x26CC, SMSG_PLAYER_ACKOWLEDGE_ARROW_CALLOUT = 0x3022, SMSG_PLAYER_AZERITE_ITEM_EQUIPPED_STATUS_CHANGED = 0x3014, SMSG_PLAYER_AZERITE_ITEM_GAINS = 0x3013, @@ -1729,33 +1737,34 @@ enum OpcodeServer : uint16 SMSG_PLAYER_SKINNED = 0x3006, SMSG_PLAYER_TUTORIAL_HIGHLIGHT_SPELL = 0x300D, SMSG_PLAYER_TUTORIAL_UNHIGHLIGHT_SPELL = 0x300C, - SMSG_PLAY_MUSIC = 0x2762, - SMSG_PLAY_OBJECT_SOUND = 0x2763, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x272A, + SMSG_PLAY_MUSIC = 0x275E, + SMSG_PLAY_OBJECT_SOUND = 0x275F, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2726, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47, - SMSG_PLAY_SCENE = 0x2633, - SMSG_PLAY_SOUND = 0x2761, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x2764, + SMSG_PLAY_SCENE = 0x262F, + SMSG_PLAY_SOUND = 0x275D, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x2760, SMSG_PLAY_SPELL_VISUAL = 0x2C45, SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49, - SMSG_PLAY_TIME_WARNING = 0x26F8, + SMSG_PLAY_TIME_WARNING = 0x26F4, SMSG_PONG = 0x304E, - SMSG_POWER_UPDATE = 0x26CD, + SMSG_POWER_UPDATE = 0x26C9, SMSG_PRELOAD_CHILD_MAP = 0x2579, - SMSG_PRELOAD_WORLD = 0x2599, - SMSG_PREPOPULATE_NAME_CACHE = 0x2842, - SMSG_PRE_RESSURECT = 0x2760, - SMSG_PRINT_NOTIFICATION = 0x25CA, - SMSG_PROC_RESIST = 0x2754, - SMSG_PROFESSION_GOSSIP = 0x27F9, + SMSG_PRELOAD_WORLD = 0x2594, + SMSG_PREPOPULATE_NAME_CACHE = 0x283A, + SMSG_PRE_RESSURECT = 0x275C, + SMSG_PRINT_NOTIFICATION = 0x25C6, + SMSG_PROC_RESIST = 0x2750, + SMSG_PROFESSION_GOSSIP = 0x27F1, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51, SMSG_PVP_CREDIT = 0x2945, - SMSG_PVP_MATCH_COMPLETE = 0x294F, - SMSG_PVP_MATCH_INITIALIZE = 0x2950, + SMSG_PVP_MATCH_COMPLETE = 0x2950, + SMSG_PVP_MATCH_INITIALIZE = 0x2951, + SMSG_PVP_MATCH_SET_STATE = 0x294F, SMSG_PVP_MATCH_START = 0x294E, SMSG_PVP_MATCH_STATISTICS = 0x2932, SMSG_PVP_OPTIONS_ENABLED = 0x2934, - SMSG_PVP_TIER_RECORD = 0x287C, + SMSG_PVP_TIER_RECORD = 0x2874, SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x291A, SMSG_QUERY_CREATURE_RESPONSE = 0x2914, SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2915, @@ -1771,7 +1780,7 @@ enum OpcodeServer : uint16 SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE = 0x3002, SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A96, SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE = 0x29E6, - SMSG_QUERY_TIME_RESPONSE = 0x26DE, + SMSG_QUERY_TIME_RESPONSE = 0x26DA, SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81, SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8F, SMSG_QUEST_FORCE_REMOVED = 0x2A9C, @@ -1790,141 +1799,137 @@ enum OpcodeServer : uint16 SMSG_QUEST_POI_QUERY_RESPONSE = 0x2A9D, SMSG_QUEST_POI_UPDATE_RESPONSE = 0x2A9F, SMSG_QUEST_PUSH_RESULT = 0x2A90, - SMSG_QUEST_SESSION_INFO_RESPONSE = 0x2865, - SMSG_QUEST_SESSION_READY_CHECK = 0x2853, - SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x2854, - SMSG_QUEST_SESSION_RESULT = 0x2852, + SMSG_QUEST_SESSION_INFO_RESPONSE = 0x285D, + SMSG_QUEST_SESSION_READY_CHECK = 0x284B, + SMSG_QUEST_SESSION_READY_CHECK_RESPONSE = 0x284C, + SMSG_QUEST_SESSION_RESULT = 0x284A, SMSG_QUEST_UPDATE_ADD_CREDIT = 0x2A8C, SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE = 0x2A8D, SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x2A8E, SMSG_QUEST_UPDATE_COMPLETE = 0x2A89, SMSG_QUEST_UPDATE_FAILED = 0x2A8A, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8B, - SMSG_QUEUE_SUMMARY_UPDATE = 0x280C, - SMSG_RAF_ACCOUNT_INFO = 0x2850, - SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2861, - SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x28B7, - SMSG_RAID_DIFFICULTY_SET = 0x27A4, - SMSG_RAID_GROUP_ONLY = 0x27A6, + SMSG_QUEUE_SUMMARY_UPDATE = 0x2804, + SMSG_RAF_ACCOUNT_INFO = 0x2848, + SMSG_RAF_ACTIVITY_STATE_CHANGED = 0x2859, + SMSG_RAF_DEBUG_FRIEND_MONTHS = 0x28B0, + SMSG_RAID_DIFFICULTY_SET = 0x279D, + SMSG_RAID_GROUP_ONLY = 0x279F, SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4, - SMSG_RAID_MARKERS_CHANGED = 0x25A4, - SMSG_RANDOM_ROLL = 0x262D, + SMSG_RAID_MARKERS_CHANGED = 0x259F, + SMSG_RANDOM_ROLL = 0x2629, SMSG_RATED_PVP_INFO = 0x2931, - SMSG_READY_CHECK_COMPLETED = 0x25F7, - SMSG_READY_CHECK_RESPONSE = 0x25F6, - SMSG_READY_CHECK_STARTED = 0x25F5, - SMSG_READ_ITEM_RESULT_FAILED = 0x27A0, - SMSG_READ_ITEM_RESULT_OK = 0x2797, - SMSG_REALM_LOOKUP_INFO = 0x27C4, + SMSG_READY_CHECK_COMPLETED = 0x25F3, + SMSG_READY_CHECK_RESPONSE = 0x25F2, + SMSG_READY_CHECK_STARTED = 0x25F1, + SMSG_READ_ITEM_RESULT_FAILED = 0x2799, + SMSG_READ_ITEM_RESULT_OK = 0x2790, + SMSG_REALM_LOOKUP_INFO = 0x27BC, SMSG_REALM_QUERY_RESPONSE = 0x2913, - SMSG_REATTACH_RESURRECT = 0x2744, - SMSG_RECRAFT_ITEM_RESULT = 0x28A6, - SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26BC, - SMSG_REFRESH_COMPONENT = 0x264E, + SMSG_REATTACH_RESURRECT = 0x2740, + SMSG_RECRAFT_ITEM_RESULT = 0x289F, + SMSG_RECRUIT_A_FRIEND_FAILURE = 0x26B8, + SMSG_REFRESH_COMPONENT = 0x264A, SMSG_REFRESH_SPELL_HISTORY = 0x2C29, - SMSG_REMOVE_ITEM_PASSIVE = 0x25AC, + SMSG_REMOVE_ITEM_PASSIVE = 0x25A7, SMSG_REMOVE_SPELL_FROM_ACTION_BAR = 0x2C52, - SMSG_REPLACE_TROPHY_RESPONSE = 0x27BC, + SMSG_REPLACE_TROPHY_RESPONSE = 0x27B5, SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x3001, - SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x2591, + SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x258E, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x2935, SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE = 0x2936, - SMSG_RESEARCH_COMPLETE = 0x2587, SMSG_RESET_COMPRESSION_CONTEXT = 0x304F, - SMSG_RESET_FAILED_NOTIFY = 0x26B3, - SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28AC, + SMSG_RESET_FAILED_NOTIFY = 0x26AF, + SMSG_RESET_LAST_LOADED_CONFIG_CVARS = 0x28A5, SMSG_RESET_QUEST_POI = 0x2AA0, SMSG_RESET_RANGED_COMBAT_TIMER = 0x2944, SMSG_RESET_WEEKLY_CURRENCY = 0x2575, - SMSG_RESPEC_WIPE_CONFIRM = 0x2610, + SMSG_RESPEC_WIPE_CONFIRM = 0x260C, SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2572, - SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x2883, - SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x2884, + SMSG_RESPONSE_PERK_PENDING_REWARDS = 0x287C, + SMSG_RESPONSE_PERK_RECENT_PURCHASES = 0x287D, SMSG_RESTART_GLOBAL_COOLDOWN = 0x2C61, - SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B9, + SMSG_RESTRICTED_ACCOUNT_WARNING = 0x25B5, SMSG_RESUME_CAST = 0x2C3B, SMSG_RESUME_CAST_BAR = 0x2C3E, SMSG_RESUME_COMMS = 0x304B, - SMSG_RESUME_TOKEN = 0x25AA, + SMSG_RESUME_TOKEN = 0x25A5, SMSG_RESURRECT_REQUEST = 0x257E, SMSG_RESYNC_RUNES = 0x2C5F, - SMSG_RETURNING_PLAYER_PROMPT = 0x279F, - SMSG_RETURN_APPLICANT_LIST = 0x2846, - SMSG_RETURN_RECRUITING_CLUBS = 0x2845, - SMSG_ROLE_CHANGED_INFORM = 0x258D, + SMSG_RETURNING_PLAYER_PROMPT = 0x2798, + SMSG_RETURN_APPLICANT_LIST = 0x283E, + SMSG_RETURN_RECRUITING_CLUBS = 0x283D, + SMSG_ROLE_CHANGED_INFORM = 0x258A, SMSG_ROLE_CHOSEN = 0x2A39, - SMSG_ROLE_POLL_INFORM = 0x258E, - SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F8, - SMSG_RUNE_REGEN_DEBUG = 0x25B6, - SMSG_SCENARIO_COMPLETED = 0x27E6, - SMSG_SCENARIO_POIS = 0x2630, - SMSG_SCENARIO_PROGRESS_UPDATE = 0x2629, - SMSG_SCENARIO_SHOW_CRITERIA = 0x27FC, - SMSG_SCENARIO_STATE = 0x2628, - SMSG_SCENARIO_UI_UPDATE = 0x27FB, - SMSG_SCENARIO_VACATE = 0x27A1, - SMSG_SCENE_OBJECT_EVENT = 0x25E1, - SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E6, - SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E7, - SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25E3, - SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25E2, - SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E5, - SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E4, + SMSG_ROLE_POLL_INFORM = 0x258B, + SMSG_RUNEFORGE_LEGENDARY_CRAFTING_OPEN_NPC = 0x27F0, + SMSG_RUNE_REGEN_DEBUG = 0x25B2, + SMSG_SCENARIO_COMPLETED = 0x27DE, + SMSG_SCENARIO_POIS = 0x262C, + SMSG_SCENARIO_PROGRESS_UPDATE = 0x2625, + SMSG_SCENARIO_SHOW_CRITERIA = 0x27F4, + SMSG_SCENARIO_STATE = 0x2624, + SMSG_SCENARIO_UI_UPDATE = 0x27F3, + SMSG_SCENARIO_VACATE = 0x279A, + SMSG_SCENE_OBJECT_EVENT = 0x25DD, + SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25E2, + SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25E3, + SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25DF, + SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25DE, + SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25E1, + SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25E0, SMSG_SCRIPT_CAST = 0x2C56, - SMSG_SEASON_INFO = 0x25C1, - SMSG_SELL_RESPONSE = 0x26C0, - SMSG_SEND_ITEM_PASSIVES = 0x25AD, + SMSG_SEASON_INFO = 0x25BD, + SMSG_SELL_RESPONSE = 0x26BC, + SMSG_SEND_ITEM_PASSIVES = 0x25A8, SMSG_SEND_KNOWN_SPELLS = 0x2C27, - SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x262B, - SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x262C, + SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x2627, + SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x2628, SMSG_SEND_SPELL_CHARGES = 0x2C2A, SMSG_SEND_SPELL_HISTORY = 0x2C28, SMSG_SEND_UNLEARN_SPELLS = 0x2C2B, - SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x264B, - SMSG_SERVER_TIME = 0x267F, - SMSG_SERVER_TIME_OFFSET = 0x270E, + SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x2647, + SMSG_SERVER_TIME = 0x267B, + SMSG_SERVER_TIME_OFFSET = 0x270A, SMSG_SETUP_CURRENCY = 0x2573, - SMSG_SETUP_RESEARCH_HISTORY = 0x2586, - SMSG_SET_AI_ANIM_KIT = 0x2729, - SMSG_SET_ALL_TASK_PROGRESS = 0x2785, - SMSG_SET_ANIM_TIER = 0x272D, - SMSG_SET_CHR_UPGRADE_TIER = 0x25DE, + SMSG_SET_AI_ANIM_KIT = 0x2725, + SMSG_SET_ANIM_TIER = 0x2729, + SMSG_SET_CHR_UPGRADE_TIER = 0x25DA, SMSG_SET_CURRENCY = 0x2574, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E, - SMSG_SET_DUNGEON_DIFFICULTY = 0x26A1, - SMSG_SET_FACTION_AT_WAR = 0x26FA, - SMSG_SET_FACTION_NOT_VISIBLE = 0x2724, - SMSG_SET_FACTION_STANDING = 0x2725, - SMSG_SET_FACTION_VISIBLE = 0x2723, + SMSG_SET_DUNGEON_DIFFICULTY = 0x269D, + SMSG_SET_FACTION_AT_WAR = 0x26F6, + SMSG_SET_FACTION_NOT_VISIBLE = 0x2720, + SMSG_SET_FACTION_STANDING = 0x2721, + SMSG_SET_FACTION_VISIBLE = 0x271F, SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36, - SMSG_SET_FORCED_REACTIONS = 0x2717, - SMSG_SET_ITEM_PURCHASE_DATA = 0x259F, - SMSG_SET_LOOT_METHOD_FAILED = 0x27CA, - SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25A2, - SMSG_SET_MELEE_ANIM_KIT = 0x272C, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x272B, + SMSG_SET_FORCED_REACTIONS = 0x2713, + SMSG_SET_ITEM_PURCHASE_DATA = 0x259A, + SMSG_SET_LOOT_METHOD_FAILED = 0x27C2, + SMSG_SET_MAX_WEEKLY_QUANTITY = 0x259D, + SMSG_SET_MELEE_ANIM_KIT = 0x2728, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x2727, SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37, - SMSG_SET_PET_SPECIALIZATION = 0x2622, + SMSG_SET_PET_SPECIALIZATION = 0x261E, SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x3003, - SMSG_SET_PLAY_HOVER_ANIM = 0x25BA, - SMSG_SET_PROFICIENCY = 0x272E, - SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2859, + SMSG_SET_PLAY_HOVER_ANIM = 0x25B6, + SMSG_SET_PROFICIENCY = 0x272A, + SMSG_SET_QUEST_REPLAY_COOLDOWN_OVERRIDE = 0x2851, SMSG_SET_SHIPMENT_READY_RESPONSE = 0x2998, SMSG_SET_SPELL_CHARGES = 0x2C26, - SMSG_SET_TASK_COMPLETE = 0x2786, - SMSG_SET_TIME_ZONE_INFORMATION = 0x2674, - SMSG_SET_VEHICLE_REC_ID = 0x26F1, - SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2888, + SMSG_SET_TIME_ZONE_INFORMATION = 0x2670, + SMSG_SET_VEHICLE_REC_ID = 0x26ED, + SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x2881, SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x2999, - SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25DA, + SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25D6, SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x2A95, - SMSG_SHOW_TAXI_NODES = 0x26C8, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2769, - SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x2893, - SMSG_SOCKET_GEMS_FAILURE = 0x2721, - SMSG_SOCKET_GEMS_SUCCESS = 0x2720, - SMSG_SPECIAL_MOUNT_ANIM = 0x269C, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2712, + SMSG_SHOW_TAXI_NODES = 0x26C4, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x2765, + SMSG_SOCIAL_CONTRACT_REQUEST_RESPONSE = 0x288C, + SMSG_SOCKET_GEMS_FAILURE = 0x271D, + SMSG_SOCKET_GEMS_SUCCESS = 0x271C, + SMSG_SPECIAL_MOUNT_ANIM = 0x2698, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x270E, SMSG_SPELL_ABSORB_LOG = 0x2C1C, SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C16, SMSG_SPELL_CHANNEL_START = 0x2C31, @@ -1952,94 +1957,93 @@ enum OpcodeServer : uint16 SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C18, SMSG_SPELL_PREPARE = 0x2C38, SMSG_SPELL_START = 0x2C3A, - SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25CC, - SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x286B, - SMSG_STAND_STATE_UPDATE = 0x2716, - SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25D2, - SMSG_START_ELAPSED_TIMER = 0x2603, - SMSG_START_ELAPSED_TIMERS = 0x2605, - SMSG_START_LIGHTNING_STORM = 0x26A4, - SMSG_START_LOOT_ROLL = 0x261A, - SMSG_START_MIRROR_TIMER = 0x2709, - SMSG_START_TIMER = 0x25A6, - SMSG_STOP_ELAPSED_TIMER = 0x2604, - SMSG_STOP_MIRROR_TIMER = 0x270B, - SMSG_STOP_SPEAKERBOT_SOUND = 0x2765, - SMSG_STOP_TIMER = 0x25A7, - SMSG_STREAMING_MOVIES = 0x25A5, - SMSG_SUGGEST_INVITE_INFORM = 0x278D, - SMSG_SUMMON_CANCEL = 0x26AD, - SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258F, - SMSG_SUMMON_REQUEST = 0x271B, + SMSG_SPELL_VISUAL_LOAD_SCREEN = 0x25C8, + SMSG_SPLASH_SCREEN_SHOW_LATEST = 0x2863, + SMSG_STAND_STATE_UPDATE = 0x2712, + SMSG_STARTER_BUILD_ACTIVATE_FAILED = 0x25CE, + SMSG_START_ELAPSED_TIMER = 0x25FF, + SMSG_START_ELAPSED_TIMERS = 0x2601, + SMSG_START_LIGHTNING_STORM = 0x26A0, + SMSG_START_LOOT_ROLL = 0x2616, + SMSG_START_MIRROR_TIMER = 0x2705, + SMSG_START_TIMER = 0x25A1, + SMSG_STOP_ELAPSED_TIMER = 0x2600, + SMSG_STOP_MIRROR_TIMER = 0x2707, + SMSG_STOP_SPEAKERBOT_SOUND = 0x2761, + SMSG_STOP_TIMER = 0x25A2, + SMSG_STREAMING_MOVIES = 0x25A0, + SMSG_SUGGEST_INVITE_INFORM = 0x2786, + SMSG_SUMMON_CANCEL = 0x26A9, + SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258C, + SMSG_SUMMON_REQUEST = 0x2717, SMSG_SUPERCEDED_SPELLS = 0x2C4C, SMSG_SUSPEND_COMMS = 0x304A, - SMSG_SUSPEND_TOKEN = 0x25A9, - SMSG_SYNC_WOW_ENTITLEMENTS = 0x2863, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2711, - SMSG_TAXI_NODE_STATUS = 0x2679, - SMSG_TEXT_EMOTE = 0x2677, - SMSG_THREAT_CLEAR = 0x26D7, - SMSG_THREAT_REMOVE = 0x26D6, - SMSG_THREAT_UPDATE = 0x26D5, + SMSG_SUSPEND_TOKEN = 0x25A4, + SMSG_SYNC_WOW_ENTITLEMENTS = 0x285B, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x270D, + SMSG_TAXI_NODE_STATUS = 0x2675, + SMSG_TEXT_EMOTE = 0x2673, + SMSG_THREAT_CLEAR = 0x26D3, + SMSG_THREAT_REMOVE = 0x26D2, + SMSG_THREAT_UPDATE = 0x26D1, SMSG_TIME_ADJUSTMENT = 0x2DD3, SMSG_TIME_SYNC_REQUEST = 0x2DD2, - SMSG_TITLE_EARNED = 0x26D2, - SMSG_TITLE_LOST = 0x26D3, - SMSG_TOTEM_CREATED = 0x26C3, - SMSG_TOTEM_DURATION_CHANGED = 0x26C4, - SMSG_TOTEM_MOVED = 0x26C5, + SMSG_TITLE_EARNED = 0x26CE, + SMSG_TITLE_LOST = 0x26CF, + SMSG_TOTEM_CREATED = 0x26BF, + SMSG_TOTEM_DURATION_CHANGED = 0x26C0, + SMSG_TOTEM_MOVED = 0x26C1, SMSG_TRADE_STATUS = 0x2582, SMSG_TRADE_UPDATED = 0x2581, - SMSG_TRAINER_BUY_FAILED = 0x26DA, - SMSG_TRAINER_LIST = 0x26D9, - SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25D1, - SMSG_TRANSFER_ABORTED = 0x26FD, - SMSG_TRANSFER_PENDING = 0x25CD, + SMSG_TRAINER_BUY_FAILED = 0x26D6, + SMSG_TRAINER_LIST = 0x26D5, + SMSG_TRAIT_CONFIG_COMMIT_FAILED = 0x25CD, + SMSG_TRANSFER_ABORTED = 0x26F9, + SMSG_TRANSFER_PENDING = 0x25C9, SMSG_TREASURE_PICKER_RESPONSE = 0x291F, - SMSG_TRIGGER_CINEMATIC = 0x27C2, - SMSG_TRIGGER_MOVIE = 0x26C6, - SMSG_TURN_IN_PETITION_RESULT = 0x2747, - SMSG_TUTORIAL_FLAGS = 0x27B5, + SMSG_TRIGGER_CINEMATIC = 0x27BA, + SMSG_TRIGGER_MOVIE = 0x26C2, + SMSG_TURN_IN_PETITION_RESULT = 0x2743, + SMSG_TUTORIAL_FLAGS = 0x27AE, SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x2AA2, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27C5, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27C6, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x27BD, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x27BE, SMSG_UNLEARNED_SPELLS = 0x2C4E, SMSG_UNLOAD_CHILD_MAP = 0x257A, - SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x287D, - SMSG_UPDATE_ACCOUNT_DATA = 0x2703, - SMSG_UPDATE_ACTION_BUTTONS = 0x25DF, - SMSG_UPDATE_BNET_SESSION_KEY = 0x281D, + SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x2875, + SMSG_UPDATE_ACCOUNT_DATA = 0x26FF, + SMSG_UPDATE_ACTION_BUTTONS = 0x25DB, + SMSG_UPDATE_BNET_SESSION_KEY = 0x2815, SMSG_UPDATE_CAPTURE_POINT = 0x2929, - SMSG_UPDATE_CELESTIAL_BODY = 0x2819, - SMSG_UPDATE_CHARACTER_FLAGS = 0x27BB, - SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x275F, - SMSG_UPDATE_COOLDOWN = 0x275E, + SMSG_UPDATE_CELESTIAL_BODY = 0x2811, + SMSG_UPDATE_CHARACTER_FLAGS = 0x27B4, + SMSG_UPDATE_CHARGE_CATEGORY_COOLDOWN = 0x275B, + SMSG_UPDATE_COOLDOWN = 0x275A, SMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x2996, SMSG_UPDATE_DAILY_MISSION_COUNTER = 0x297F, - SMSG_UPDATE_EXPANSION_LEVEL = 0x2643, - SMSG_UPDATE_GAME_TIME_STATE = 0x2820, - SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A6, - SMSG_UPDATE_LAST_INSTANCE = 0x2685, - SMSG_UPDATE_OBJECT = 0x27C3, - SMSG_UPDATE_PRIMARY_SPEC = 0x25D7, - SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F4, - SMSG_UPDATE_TALENT_DATA = 0x25D6, - SMSG_UPDATE_TASK_PROGRESS = 0x2784, - SMSG_UPDATE_WORLD_STATE = 0x2741, + SMSG_UPDATE_EXPANSION_LEVEL = 0x263F, + SMSG_UPDATE_GAME_TIME_STATE = 0x2818, + SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A2, + SMSG_UPDATE_LAST_INSTANCE = 0x2681, + SMSG_UPDATE_OBJECT = 0x27BB, + SMSG_UPDATE_PRIMARY_SPEC = 0x25D3, + SMSG_UPDATE_RECENT_PLAYER_GUIDS = 0x25F0, + SMSG_UPDATE_TALENT_DATA = 0x25D2, + SMSG_UPDATE_WORLD_STATE = 0x273D, SMSG_USERLIST_ADD = 0x2BB9, SMSG_USERLIST_REMOVE = 0x2BBA, SMSG_USERLIST_UPDATE = 0x2BBB, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x2748, - SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x2814, - SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x2812, - SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2811, - SMSG_VAS_PURCHASE_COMPLETE = 0x27EC, - SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27EB, - SMSG_VENDOR_INVENTORY = 0x25B8, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x2744, + SMSG_VAS_CHECK_TRANSFER_OK_RESPONSE = 0x280C, + SMSG_VAS_GET_QUEUE_MINUTES_RESPONSE = 0x280A, + SMSG_VAS_GET_SERVICE_STATUS_RESPONSE = 0x2809, + SMSG_VAS_PURCHASE_COMPLETE = 0x27E4, + SMSG_VAS_PURCHASE_STATE_UPDATE = 0x27E3, + SMSG_VENDOR_INVENTORY = 0x25B4, SMSG_VIGNETTE_UPDATE = 0x3008, - SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2818, - SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x2877, - SMSG_VOICE_LOGIN_RESPONSE = 0x2817, + SMSG_VOICE_CHANNEL_INFO_RESPONSE = 0x2810, + SMSG_VOICE_CHANNEL_STT_TOKEN_RESPONSE = 0x286F, + SMSG_VOICE_LOGIN_RESPONSE = 0x280F, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x2DA4, SMSG_VOID_STORAGE_CONTENTS = 0x2DA1, SMSG_VOID_STORAGE_FAILED = 0x2DA0, @@ -2048,27 +2052,27 @@ enum OpcodeServer : uint16 SMSG_WAIT_QUEUE_FINISH = 0x256F, SMSG_WAIT_QUEUE_UPDATE = 0x256E, SMSG_WARDEN3_DATA = 0x2577, - SMSG_WARDEN3_DISABLED = 0x281B, - SMSG_WARDEN3_ENABLED = 0x281A, - SMSG_WARFRONT_COMPLETE = 0x2757, + SMSG_WARDEN3_DISABLED = 0x2813, + SMSG_WARDEN3_ENABLED = 0x2812, + SMSG_WARFRONT_COMPLETE = 0x2753, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x2933, - SMSG_WEATHER = 0x26A3, - SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x286E, - SMSG_WEEKLY_REWARDS_RESULT = 0x286C, - SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x286D, + SMSG_WEATHER = 0x269F, + SMSG_WEEKLY_REWARDS_PROGRESS_RESULT = 0x2866, + SMSG_WEEKLY_REWARDS_RESULT = 0x2864, + SMSG_WEEKLY_REWARD_CLAIM_RESULT = 0x2865, SMSG_WHO = 0x2BAE, - SMSG_WHO_IS = 0x26A2, - SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x281F, + SMSG_WHO_IS = 0x269E, + SMSG_WILL_BE_KICKED_FOR_ADDED_SUBSCRIPTION_TIME = 0x2817, SMSG_WORLD_QUEST_UPDATE_RESPONSE = 0x300F, - SMSG_WORLD_SERVER_INFO = 0x25AE, - SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x2864, - SMSG_XP_AWARDED_FROM_CURRENCY = 0x28AB, - SMSG_XP_GAIN_ABORTED = 0x25C9, - SMSG_XP_GAIN_ENABLED = 0x27A5, + SMSG_WORLD_SERVER_INFO = 0x25A9, + SMSG_WOW_ENTITLEMENT_NOTIFICATION = 0x285C, + SMSG_XP_AWARDED_FROM_CURRENCY = 0x28A4, + SMSG_XP_GAIN_ABORTED = 0x25C5, + SMSG_XP_GAIN_ENABLED = 0x279E, SMSG_ZONE_UNDER_ATTACK = 0x2BB5, // Opcodes that are not generated automatically - SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25B2, // no client handler + SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x25AD, // no client handler SMSG_COMPRESSED_PACKET = 0x3052, SMSG_MULTIPLE_PACKETS = 0x3051, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 6b31ed0edd8..150e73da527 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -1068,7 +1068,6 @@ class TC_GAME_API WorldSession // Pet void SendQueryPetNameResponse(ObjectGuid guid); - void SendStablePet(ObjectGuid guid); void SendPetStableResult(StableResult result); bool CheckStableMaster(ObjectGuid guid); @@ -1199,7 +1198,7 @@ class TC_GAME_API WorldSession void HandleGetUndeleteCooldownStatus(WorldPackets::Character::GetUndeleteCharacterCooldownStatus& /*getCooldown*/); void HandleUndeleteCooldownStatusCallback(PreparedQueryResult result); void HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCharacter& undeleteInfo); - bool MeetsChrCustomizationReq(ChrCustomizationReqEntry const* req, Classes playerClass, + bool MeetsChrCustomizationReq(ChrCustomizationReqEntry const* req, Races race, Classes playerClass, bool checkRequiredDependentChoices, Trinity::IteratorPair<UF::ChrCustomizationChoice const*> selectedChoices) const; bool ValidateAppearance(Races race, Classes playerClass, Gender gender, Trinity::IteratorPair<UF::ChrCustomizationChoice const*> customizations); // customizations must be sorted diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 73aa4247eb8..b95b1e51b01 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -629,6 +629,10 @@ enum AuraType : uint32 SPELL_AURA_535 = 535, // related to profession equipment; NYI; MiscValue[0] = Profession (enum, not id) SPELL_AURA_IGNORE_SPELL_CREATURE_TYPE_REQUIREMENTS = 536, SPELL_AURA_537 = 537, + SPELL_AURA_MOD_FAKE_INEBRIATION_MOVEMENT_ONLY = 538, + SPELL_AURA_ALLOW_MOUNT_IN_COMBAT = 539, + SPELL_AURA_MOD_SUPPORT_STAT = 540, // NYI + SPELL_AURA_MOD_REQUIRED_MOUNT_CAPABILITY_FLAGS = 541, TOTAL_AURAS }; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 198f2626d28..4e3cb502aae 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -605,6 +605,10 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //535 &AuraEffect::HandleNoImmediateEffect, //536 SPELL_AURA_IGNORE_SPELL_CREATURE_TYPE_REQUIREMENTS implemented in SpellInfo::CheckTargetCreatureType &AuraEffect::HandleNULL, //537 + &AuraEffect::HandleUnused, //538 SPELL_AURA_MOD_FAKE_INEBRIATION_MOVEMENT_ONLY handled clientside + &AuraEffect::HandleNoImmediateEffect, //539 SPELL_AURA_ALLOW_MOUNT_IN_COMBAT implemented in SpellInfo::CanBeUsedInCombat + &AuraEffect::HandleNULL, //540 SPELL_AURA_MOD_SUPPORT_STAT + &AuraEffect::HandleModRequiredMountCapabilityFlags, //541 SPELL_AURA_MOD_REQUIRED_MOUNT_CAPABILITY_FLAGS }; AuraEffect::AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, int32 const* baseAmount, Unit* caster) : @@ -5196,7 +5200,7 @@ void AuraEffect::HandleAuraOpenStable(AuraApplication const* aurApp, uint8 mode, return; if (apply) - target->ToPlayer()->GetSession()->SendStablePet(target->GetGUID()); + target->ToPlayer()->SetStableMaster(target->GetGUID()); // client auto close stable dialog at !apply aura } @@ -6273,6 +6277,27 @@ void AuraEffect::HandleCosmeticMounted(AuraApplication const* aurApp, uint8 mode playerTarget->SendMovementSetCollisionHeight(playerTarget->GetCollisionHeight(), WorldPackets::Movement::UpdateCollisionHeightReason::Force); } +void AuraEffect::HandleModRequiredMountCapabilityFlags(AuraApplication const* aurApp, uint8 mode, bool apply) const +{ + if (!(mode & AURA_EFFECT_HANDLE_REAL)) + return; + + Player* playerTarget = aurApp->GetTarget()->ToPlayer(); + if (!playerTarget) + return; + + if (apply) + playerTarget->SetRequiredMountCapabilityFlag(GetMiscValue()); + else + { + int32 mountCapabilityFlags = 0; + for (AuraEffect* otherAura : playerTarget->GetAuraEffectsByType(GetAuraType())) + mountCapabilityFlags |= otherAura->GetMiscValue(); + + playerTarget->ReplaceAllRequiredMountCapabilityFlags(mountCapabilityFlags); + } +} + void AuraEffect::HandleSuppressItemPassiveEffectBySpellLabel(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const { if (!(mode & AURA_EFFECT_HANDLE_REAL)) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 36ac2648176..c90bccead32 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -333,6 +333,7 @@ class TC_GAME_API AuraEffect void HandleStoreTeleportReturnPoint(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleMountRestrictions(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleCosmeticMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const; + void HandleModRequiredMountCapabilityFlags(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleSuppressItemPassiveEffectBySpellLabel(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleForceBreathBar(AuraApplication const* aurApp, uint8 mode, bool apply) const; diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 3b7297b3ab6..55dc8c2ba91 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5691,7 +5691,7 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 if (m_spellInfo->ExcludeCasterAuraType && unitCaster->HasAuraType(m_spellInfo->ExcludeCasterAuraType)) return SPELL_FAILED_CASTER_AURASTATE; - if (reqCombat && unitCaster->IsInCombat() && !m_spellInfo->CanBeUsedInCombat()) + if (reqCombat && unitCaster->IsInCombat() && !m_spellInfo->CanBeUsedInCombat(unitCaster)) return SPELL_FAILED_AFFECTING_COMBAT; } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 16e31fb645c..ce24a21b278 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -393,7 +393,7 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF &Spell::EffectCreateTraitTreeConfig, //303 SPELL_EFFECT_CREATE_TRAIT_TREE_CONFIG &Spell::EffectChangeActiveCombatTraitConfig, //304 SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG &Spell::EffectNULL, //305 SPELL_EFFECT_305 - &Spell::EffectNULL, //306 SPELL_EFFECT_306 + &Spell::EffectNULL, //306 SPELL_EFFECT_UPDATE_INTERACTIONS &Spell::EffectNULL, //307 SPELL_EFFECT_307 &Spell::EffectNULL, //308 SPELL_EFFECT_CANCEL_PRELOAD_WORLD &Spell::EffectNULL, //309 SPELL_EFFECT_PRELOAD_WORLD @@ -402,6 +402,7 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF &Spell::EffectNULL, //312 SPELL_EFFECT_312 &Spell::EffectNULL, //313 SPELL_EFFECT_CHANGE_ITEM_BONUSES_2 &Spell::EffectNULL, //314 SPELL_EFFECT_ADD_SOCKET_BONUS + &Spell::EffectNULL, //315 SPELL_EFFECT_LEARN_TRANSMOG_APPEARANCE_FROM_ITEM_MOD_APPEARANCE_GROUP }; void Spell::EffectNULL() diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 62730e218cc..7ecb08e3100 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1133,15 +1133,16 @@ std::array<SpellEffectInfo::StaticData, TOTAL_SPELL_EFFECTS> SpellEffectInfo::_d {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_UNIT}, // 303 SPELL_EFFECT_CREATE_TRAIT_TREE_CONFIG {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_UNIT}, // 304 SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 305 SPELL_EFFECT_305 - {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 306 SPELL_EFFECT_306 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 306 SPELL_EFFECT_UPDATE_INTERACTIONS {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 307 SPELL_EFFECT_307 - {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 308 SPELL_EFFECT_308 - {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 309 SPELL_EFFECT_309 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 308 SPELL_EFFECT_CANCEL_PRELOAD_WORLD + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 309 SPELL_EFFECT_PRELOAD_WORLD {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 310 SPELL_EFFECT_310 - {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 311 SPELL_EFFECT_311 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 311 SPELL_EFFECT_ENSURE_WORLD_LOADED {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 312 SPELL_EFFECT_312 - {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_ITEM}, // 313 SPELL_EFFECT_313 - {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 314 SPELL_EFFECT_314 + {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_ITEM}, // 313 SPELL_EFFECT_CHANGE_ITEM_BONUSES_2 + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 314 SPELL_EFFECT_ADD_SOCKET_BONUS + {EFFECT_IMPLICIT_TARGET_CASTER, TARGET_OBJECT_TYPE_UNIT}, // 315 SPELL_EFFECT_LEARN_TRANSMOG_APPEARANCE_FROM_ITEM_MOD_APPEARANCE_GROUP } }; SpellInfo::SpellInfo(SpellNameEntry const* spellName, ::Difficulty difficulty, SpellInfoLoadHelper const& data) @@ -1677,9 +1678,10 @@ bool SpellInfo::IsGroupBuff() const return false; } -bool SpellInfo::CanBeUsedInCombat() const +bool SpellInfo::CanBeUsedInCombat(Unit const* caster) const { - return !HasAttribute(SPELL_ATTR0_NOT_IN_COMBAT_ONLY_PEACEFUL); + return !HasAttribute(SPELL_ATTR0_NOT_IN_COMBAT_ONLY_PEACEFUL) + || (caster->HasAuraType(SPELL_AURA_ALLOW_MOUNT_IN_COMBAT) && HasAura(SPELL_AURA_MOUNTED)); } bool SpellInfo::IsPositive() const diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 790e38e3b20..770b14cf9c7 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -491,7 +491,7 @@ class TC_GAME_API SpellInfo bool IsRequiringDeadTarget() const; bool IsAllowingDeadTarget() const; bool IsGroupBuff() const; - bool CanBeUsedInCombat() const; + bool CanBeUsedInCombat(Unit const* caster) const; bool IsPositive() const; bool IsPositiveEffect(uint8 effIndex) const; bool IsChanneled() const; diff --git a/src/server/proto/Client/account_service.pb.cc b/src/server/proto/Client/account_service.pb.cc index 4bbfe70b28b..1b9b6a6ee5c 100644 --- a/src/server/proto/Client/account_service.pb.cc +++ b/src/server/proto/Client/account_service.pb.cc @@ -87,6 +87,18 @@ const ::google::protobuf::internal::GeneratedMessageReflection* const ::google::protobuf::Descriptor* GetAuthorizedDataResponse_descriptor_ = NULL; const ::google::protobuf::internal::GeneratedMessageReflection* GetAuthorizedDataResponse_reflection_ = NULL; +const ::google::protobuf::Descriptor* GetAccountInfoRequest_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + GetAccountInfoRequest_reflection_ = NULL; +const ::google::protobuf::Descriptor* GetAccountInfoResponse_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + GetAccountInfoResponse_reflection_ = NULL; +const ::google::protobuf::Descriptor* GetAccountPlatformRestrictionsRequest_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + GetAccountPlatformRestrictionsRequest_reflection_ = NULL; +const ::google::protobuf::Descriptor* GetAccountPlatformRestrictionsResponse_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + GetAccountPlatformRestrictionsResponse_reflection_ = NULL; const ::google::protobuf::Descriptor* AccountStateNotification_descriptor_ = NULL; const ::google::protobuf::internal::GeneratedMessageReflection* AccountStateNotification_reflection_ = NULL; @@ -446,7 +458,67 @@ void protobuf_AssignDesc_account_5fservice_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(GetAuthorizedDataResponse)); - AccountStateNotification_descriptor_ = file->message_type(21); + GetAccountInfoRequest_descriptor_ = file->message_type(21); + static const int GetAccountInfoRequest_offsets_[1] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountInfoRequest, account_id_), + }; + GetAccountInfoRequest_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + GetAccountInfoRequest_descriptor_, + GetAccountInfoRequest::default_instance_, + GetAccountInfoRequest_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountInfoRequest, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountInfoRequest, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(GetAccountInfoRequest)); + GetAccountInfoResponse_descriptor_ = file->message_type(22); + static const int GetAccountInfoResponse_offsets_[1] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountInfoResponse, account_info_), + }; + GetAccountInfoResponse_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + GetAccountInfoResponse_descriptor_, + GetAccountInfoResponse::default_instance_, + GetAccountInfoResponse_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountInfoResponse, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountInfoResponse, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(GetAccountInfoResponse)); + GetAccountPlatformRestrictionsRequest_descriptor_ = file->message_type(23); + static const int GetAccountPlatformRestrictionsRequest_offsets_[1] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountPlatformRestrictionsRequest, account_id_), + }; + GetAccountPlatformRestrictionsRequest_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + GetAccountPlatformRestrictionsRequest_descriptor_, + GetAccountPlatformRestrictionsRequest::default_instance_, + GetAccountPlatformRestrictionsRequest_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountPlatformRestrictionsRequest, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountPlatformRestrictionsRequest, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(GetAccountPlatformRestrictionsRequest)); + GetAccountPlatformRestrictionsResponse_descriptor_ = file->message_type(24); + static const int GetAccountPlatformRestrictionsResponse_offsets_[1] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountPlatformRestrictionsResponse, restriction_info_), + }; + GetAccountPlatformRestrictionsResponse_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + GetAccountPlatformRestrictionsResponse_descriptor_, + GetAccountPlatformRestrictionsResponse::default_instance_, + GetAccountPlatformRestrictionsResponse_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountPlatformRestrictionsResponse, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GetAccountPlatformRestrictionsResponse, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(GetAccountPlatformRestrictionsResponse)); + AccountStateNotification_descriptor_ = file->message_type(25); static const int AccountStateNotification_offsets_[4] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountStateNotification, account_state_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountStateNotification, subscriber_id_), @@ -464,7 +536,7 @@ void protobuf_AssignDesc_account_5fservice_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(AccountStateNotification)); - GameAccountStateNotification_descriptor_ = file->message_type(22); + GameAccountStateNotification_descriptor_ = file->message_type(26); static const int GameAccountStateNotification_offsets_[4] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GameAccountStateNotification, game_account_state_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GameAccountStateNotification, subscriber_id_), @@ -482,7 +554,7 @@ void protobuf_AssignDesc_account_5fservice_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(GameAccountStateNotification)); - GameAccountNotification_descriptor_ = file->message_type(23); + GameAccountNotification_descriptor_ = file->message_type(27); static const int GameAccountNotification_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GameAccountNotification, game_accounts_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GameAccountNotification, subscriber_id_), @@ -499,7 +571,7 @@ void protobuf_AssignDesc_account_5fservice_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(GameAccountNotification)); - GameAccountSessionNotification_descriptor_ = file->message_type(24); + GameAccountSessionNotification_descriptor_ = file->message_type(28); static const int GameAccountSessionNotification_offsets_[2] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GameAccountSessionNotification, game_account_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GameAccountSessionNotification, session_info_), @@ -572,6 +644,14 @@ void protobuf_RegisterTypes(const ::std::string&) { ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( GetAuthorizedDataResponse_descriptor_, &GetAuthorizedDataResponse::default_instance()); ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + GetAccountInfoRequest_descriptor_, &GetAccountInfoRequest::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + GetAccountInfoResponse_descriptor_, &GetAccountInfoResponse::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + GetAccountPlatformRestrictionsRequest_descriptor_, &GetAccountPlatformRestrictionsRequest::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + GetAccountPlatformRestrictionsResponse_descriptor_, &GetAccountPlatformRestrictionsResponse::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( AccountStateNotification_descriptor_, &AccountStateNotification::default_instance()); ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( GameAccountStateNotification_descriptor_, &GameAccountStateNotification::default_instance()); @@ -626,6 +706,14 @@ void protobuf_ShutdownFile_account_5fservice_2eproto() { delete GetAuthorizedDataRequest_reflection_; delete GetAuthorizedDataResponse::default_instance_; delete GetAuthorizedDataResponse_reflection_; + delete GetAccountInfoRequest::default_instance_; + delete GetAccountInfoRequest_reflection_; + delete GetAccountInfoResponse::default_instance_; + delete GetAccountInfoResponse_reflection_; + delete GetAccountPlatformRestrictionsRequest::default_instance_; + delete GetAccountPlatformRestrictionsRequest_reflection_; + delete GetAccountPlatformRestrictionsResponse::default_instance_; + delete GetAccountPlatformRestrictionsResponse_reflection_; delete AccountStateNotification::default_instance_; delete AccountStateNotification_reflection_; delete GameAccountStateNotification::default_instance_; @@ -711,78 +799,95 @@ void protobuf_AddDesc_account_5fservice_2eproto() { "ocol.EntityIdB\006\202\371+\002\020\001\022\013\n\003tag\030\002 \003(\t\022\032\n\022pr" "ivileged_network\030\003 \001(\010\"R\n\031GetAuthorizedD" "ataResponse\0225\n\004data\030\001 \003(\0132\'.bgs.protocol" - ".account.v1.AuthorizedData\"\324\001\n\030AccountSt" - "ateNotification\022<\n\raccount_state\030\001 \001(\0132%" - ".bgs.protocol.account.v1.AccountState\022\031\n" - "\rsubscriber_id\030\002 \001(\004B\002\030\001\022\?\n\014account_tags" - "\030\003 \001(\0132).bgs.protocol.account.v1.Account" - "FieldTags\022\036\n\026subscription_completed\030\004 \001(" - "\010\"\352\001\n\034GameAccountStateNotification\022E\n\022ga" - "me_account_state\030\001 \001(\0132).bgs.protocol.ac" - "count.v1.GameAccountState\022\031\n\rsubscriber_" - "id\030\002 \001(\004B\002\030\001\022H\n\021game_account_tags\030\003 \001(\0132" - "-.bgs.protocol.account.v1.GameAccountFie" - "ldTags\022\036\n\026subscription_completed\030\004 \001(\010\"\262" - "\001\n\027GameAccountNotification\022\?\n\rgame_accou" - "nts\030\001 \003(\0132(.bgs.protocol.account.v1.Game" - "AccountList\022\025\n\rsubscriber_id\030\002 \001(\004\022\?\n\014ac" - "count_tags\030\003 \001(\0132).bgs.protocol.account." - "v1.AccountFieldTags\"\250\001\n\036GameAccountSessi" - "onNotification\022@\n\014game_account\030\001 \001(\0132*.b" - "gs.protocol.account.v1.GameAccountHandle" - "\022D\n\014session_info\030\002 \001(\0132..bgs.protocol.ac" - "count.v1.GameSessionUpdateInfo2\314\013\n\016Accou" - "ntService\022y\n\016ResolveAccount\022..bgs.protoc" - "ol.account.v1.ResolveAccountRequest\032/.bg" - "s.protocol.account.v1.ResolveAccountResp" - "onse\"\006\202\371+\002\010\r\022|\n\tSubscribe\0222.bgs.protocol" - ".account.v1.SubscriptionUpdateRequest\0323." - "bgs.protocol.account.v1.SubscriptionUpda" - "teResponse\"\006\202\371+\002\010\031\022_\n\013Unsubscribe\0222.bgs." - "protocol.account.v1.SubscriptionUpdateRe" - "quest\032\024.bgs.protocol.NoData\"\006\202\371+\002\010\032\022|\n\017G" - "etAccountState\022/.bgs.protocol.account.v1" - ".GetAccountStateRequest\0320.bgs.protocol.a" - "ccount.v1.GetAccountStateResponse\"\006\202\371+\002\010" - "\036\022\210\001\n\023GetGameAccountState\0223.bgs.protocol" - ".account.v1.GetGameAccountStateRequest\0324" - ".bgs.protocol.account.v1.GetGameAccountS" - "tateResponse\"\006\202\371+\002\010\037\022p\n\013GetLicenses\022+.bg" - "s.protocol.account.v1.GetLicensesRequest" - "\032,.bgs.protocol.account.v1.GetLicensesRe" - "sponse\"\006\202\371+\002\010 \022\227\001\n\030GetGameTimeRemainingI" - "nfo\0228.bgs.protocol.account.v1.GetGameTim" - "eRemainingInfoRequest\0329.bgs.protocol.acc" - "ount.v1.GetGameTimeRemainingInfoResponse" - "\"\006\202\371+\002\010!\022\207\001\n\022GetGameSessionInfo\0222.bgs.pr" - "otocol.account.v1.GetGameSessionInfoRequ" - "est\0323.bgs.protocol.account.v1.GetGameSes" - "sionInfoResponse\"\010\202\371+\004\010\"P\001\022p\n\013GetCAISInf" - "o\022+.bgs.protocol.account.v1.GetCAISInfoR" - "equest\032,.bgs.protocol.account.v1.GetCAIS" - "InfoResponse\"\006\202\371+\002\010#\022\202\001\n\021GetAuthorizedDa" - "ta\0221.bgs.protocol.account.v1.GetAuthoriz" - "edDataRequest\0322.bgs.protocol.account.v1." - "GetAuthorizedDataResponse\"\006\202\371+\002\010%\022\216\001\n\025Ge" - "tSignedAccountState\0225.bgs.protocol.accou" - "nt.v1.GetSignedAccountStateRequest\0326.bgs" - ".protocol.account.v1.GetSignedAccountSta" - "teResponse\"\006\202\371+\002\010,\0329\202\371+/\n$bnet.protocol." - "account.AccountService*\007account\212\371+\002\020\0012\220\004" - "\n\017AccountListener\022m\n\025OnAccountStateUpdat" - "ed\0221.bgs.protocol.account.v1.AccountStat" - "eNotification\032\031.bgs.protocol.NO_RESPONSE" - "\"\006\202\371+\002\010\001\022u\n\031OnGameAccountStateUpdated\0225." - "bgs.protocol.account.v1.GameAccountState" - "Notification\032\031.bgs.protocol.NO_RESPONSE\"" - "\006\202\371+\002\010\002\022n\n\025OnGameAccountsUpdated\0220.bgs.p" - "rotocol.account.v1.GameAccountNotificati" - "on\032\031.bgs.protocol.NO_RESPONSE\"\010\202\371+\004\010\003P\001\022" - "t\n\024OnGameSessionUpdated\0227.bgs.protocol.a" - "ccount.v1.GameAccountSessionNotification" - "\032\031.bgs.protocol.NO_RESPONSE\"\010\202\371+\004\010\004P\001\0321\202" - "\371+\'\n#bnet.protocol.account.AccountNotify" - "8\001\212\371+\002\010\001B\005H\002\200\001\000", 5455); + ".account.v1.AuthorizedData\"K\n\025GetAccount" + "InfoRequest\0222\n\naccount_id\030\001 \001(\0132\026.bgs.pr" + "otocol.EntityIdB\006\202\371+\002\020\001\"T\n\026GetAccountInf" + "oResponse\022:\n\014account_info\030\001 \001(\0132$.bgs.pr" + "otocol.account.v1.AccountInfo\"[\n%GetAcco" + "untPlatformRestrictionsRequest\0222\n\naccoun" + "t_id\030\001 \001(\0132\026.bgs.protocol.EntityIdB\006\202\371+\002" + "\020\001\"{\n&GetAccountPlatformRestrictionsResp" + "onse\022Q\n\020restriction_info\030\001 \001(\01327.bgs.pro" + "tocol.account.v1.AccountPlatformRestrict" + "ionInfo\"\324\001\n\030AccountStateNotification\022<\n\r" + "account_state\030\001 \001(\0132%.bgs.protocol.accou" + "nt.v1.AccountState\022\031\n\rsubscriber_id\030\002 \001(" + "\004B\002\030\001\022\?\n\014account_tags\030\003 \001(\0132).bgs.protoc" + "ol.account.v1.AccountFieldTags\022\036\n\026subscr" + "iption_completed\030\004 \001(\010\"\352\001\n\034GameAccountSt" + "ateNotification\022E\n\022game_account_state\030\001 " + "\001(\0132).bgs.protocol.account.v1.GameAccoun" + "tState\022\031\n\rsubscriber_id\030\002 \001(\004B\002\030\001\022H\n\021gam" + "e_account_tags\030\003 \001(\0132-.bgs.protocol.acco" + "unt.v1.GameAccountFieldTags\022\036\n\026subscript" + "ion_completed\030\004 \001(\010\"\262\001\n\027GameAccountNotif" + "ication\022\?\n\rgame_accounts\030\001 \003(\0132(.bgs.pro" + "tocol.account.v1.GameAccountList\022\025\n\rsubs" + "criber_id\030\002 \001(\004\022\?\n\014account_tags\030\003 \001(\0132)." + "bgs.protocol.account.v1.AccountFieldTags" + "\"\250\001\n\036GameAccountSessionNotification\022@\n\014g" + "ame_account\030\001 \001(\0132*.bgs.protocol.account" + ".v1.GameAccountHandle\022D\n\014session_info\030\002 " + "\001(\0132..bgs.protocol.account.v1.GameSessio" + "nUpdateInfo2\363\r\n\016AccountService\022y\n\016Resolv" + "eAccount\022..bgs.protocol.account.v1.Resol" + "veAccountRequest\032/.bgs.protocol.account." + "v1.ResolveAccountResponse\"\006\202\371+\002\010\r\022|\n\tSub" + "scribe\0222.bgs.protocol.account.v1.Subscri" + "ptionUpdateRequest\0323.bgs.protocol.accoun" + "t.v1.SubscriptionUpdateResponse\"\006\202\371+\002\010\031\022" + "_\n\013Unsubscribe\0222.bgs.protocol.account.v1" + ".SubscriptionUpdateRequest\032\024.bgs.protoco" + "l.NoData\"\006\202\371+\002\010\032\022|\n\017GetAccountState\022/.bg" + "s.protocol.account.v1.GetAccountStateReq" + "uest\0320.bgs.protocol.account.v1.GetAccoun" + "tStateResponse\"\006\202\371+\002\010\036\022\210\001\n\023GetGameAccoun" + "tState\0223.bgs.protocol.account.v1.GetGame" + "AccountStateRequest\0324.bgs.protocol.accou" + "nt.v1.GetGameAccountStateResponse\"\006\202\371+\002\010" + "\037\022p\n\013GetLicenses\022+.bgs.protocol.account." + "v1.GetLicensesRequest\032,.bgs.protocol.acc" + "ount.v1.GetLicensesResponse\"\006\202\371+\002\010 \022\227\001\n\030" + "GetGameTimeRemainingInfo\0228.bgs.protocol." + "account.v1.GetGameTimeRemainingInfoReque" + "st\0329.bgs.protocol.account.v1.GetGameTime" + "RemainingInfoResponse\"\006\202\371+\002\010!\022\207\001\n\022GetGam" + "eSessionInfo\0222.bgs.protocol.account.v1.G" + "etGameSessionInfoRequest\0323.bgs.protocol." + "account.v1.GetGameSessionInfoResponse\"\010\202" + "\371+\004\010\"P\001\022p\n\013GetCAISInfo\022+.bgs.protocol.ac" + "count.v1.GetCAISInfoRequest\032,.bgs.protoc" + "ol.account.v1.GetCAISInfoResponse\"\006\202\371+\002\010" + "#\022\202\001\n\021GetAuthorizedData\0221.bgs.protocol.a" + "ccount.v1.GetAuthorizedDataRequest\0322.bgs" + ".protocol.account.v1.GetAuthorizedDataRe" + "sponse\"\006\202\371+\002\010%\022\216\001\n\025GetSignedAccountState" + "\0225.bgs.protocol.account.v1.GetSignedAcco" + "untStateRequest\0326.bgs.protocol.account.v" + "1.GetSignedAccountStateResponse\"\006\202\371+\002\010,\022" + "y\n\016GetAccountInfo\022..bgs.protocol.account" + ".v1.GetAccountInfoRequest\032/.bgs.protocol" + ".account.v1.GetAccountInfoResponse\"\006\202\371+\002" + "\010-\022\251\001\n\036GetAccountPlatformRestrictions\022>." + "bgs.protocol.account.v1.GetAccountPlatfo" + "rmRestrictionsRequest\032\?.bgs.protocol.acc" + "ount.v1.GetAccountPlatformRestrictionsRe" + "sponse\"\006\202\371+\002\010.\0329\202\371+/\n$bnet.protocol.acco" + "unt.AccountService*\007account\212\371+\002\020\0012\220\004\n\017Ac" + "countListener\022m\n\025OnAccountStateUpdated\0221" + ".bgs.protocol.account.v1.AccountStateNot" + "ification\032\031.bgs.protocol.NO_RESPONSE\"\006\202\371" + "+\002\010\001\022u\n\031OnGameAccountStateUpdated\0225.bgs." + "protocol.account.v1.GameAccountStateNoti" + "fication\032\031.bgs.protocol.NO_RESPONSE\"\006\202\371+" + "\002\010\002\022n\n\025OnGameAccountsUpdated\0220.bgs.proto" + "col.account.v1.GameAccountNotification\032\031" + ".bgs.protocol.NO_RESPONSE\"\010\202\371+\004\010\003P\001\022t\n\024O" + "nGameSessionUpdated\0227.bgs.protocol.accou" + "nt.v1.GameAccountSessionNotification\032\031.b" + "gs.protocol.NO_RESPONSE\"\010\202\371+\004\010\004P\001\0321\202\371+\'\n" + "#bnet.protocol.account.AccountNotify8\001\212\371" + "+\002\010\001B\005H\002\200\001\000", 6131); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "account_service.proto", &protobuf_RegisterTypes); ResolveAccountRequest::default_instance_ = new ResolveAccountRequest(); @@ -806,6 +911,10 @@ void protobuf_AddDesc_account_5fservice_2eproto() { GetCAISInfoResponse::default_instance_ = new GetCAISInfoResponse(); GetAuthorizedDataRequest::default_instance_ = new GetAuthorizedDataRequest(); GetAuthorizedDataResponse::default_instance_ = new GetAuthorizedDataResponse(); + GetAccountInfoRequest::default_instance_ = new GetAccountInfoRequest(); + GetAccountInfoResponse::default_instance_ = new GetAccountInfoResponse(); + GetAccountPlatformRestrictionsRequest::default_instance_ = new GetAccountPlatformRestrictionsRequest(); + GetAccountPlatformRestrictionsResponse::default_instance_ = new GetAccountPlatformRestrictionsResponse(); AccountStateNotification::default_instance_ = new AccountStateNotification(); GameAccountStateNotification::default_instance_ = new GameAccountStateNotification(); GameAccountNotification::default_instance_ = new GameAccountNotification(); @@ -831,6 +940,10 @@ void protobuf_AddDesc_account_5fservice_2eproto() { GetCAISInfoResponse::default_instance_->InitAsDefaultInstance(); GetAuthorizedDataRequest::default_instance_->InitAsDefaultInstance(); GetAuthorizedDataResponse::default_instance_->InitAsDefaultInstance(); + GetAccountInfoRequest::default_instance_->InitAsDefaultInstance(); + GetAccountInfoResponse::default_instance_->InitAsDefaultInstance(); + GetAccountPlatformRestrictionsRequest::default_instance_->InitAsDefaultInstance(); + GetAccountPlatformRestrictionsResponse::default_instance_->InitAsDefaultInstance(); AccountStateNotification::default_instance_->InitAsDefaultInstance(); GameAccountStateNotification::default_instance_->InitAsDefaultInstance(); GameAccountNotification::default_instance_->InitAsDefaultInstance(); @@ -2453,6 +2566,302 @@ void GetAuthorizedDataResponse::Swap(GetAuthorizedDataResponse* other) { // =================================================================== #ifndef _MSC_VER +const int GetAccountInfoRequest::kAccountIdFieldNumber; +#endif // !_MSC_VER + +GetAccountInfoRequest::GetAccountInfoRequest() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.account.v1.GetAccountInfoRequest) +} + +void GetAccountInfoRequest::InitAsDefaultInstance() { + account_id_ = const_cast< ::bgs::protocol::EntityId*>(&::bgs::protocol::EntityId::default_instance()); +} + +GetAccountInfoRequest::GetAccountInfoRequest(const GetAccountInfoRequest& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.account.v1.GetAccountInfoRequest) +} + +void GetAccountInfoRequest::SharedCtor() { + _cached_size_ = 0; + account_id_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +GetAccountInfoRequest::~GetAccountInfoRequest() { + // @@protoc_insertion_point(destructor:bgs.protocol.account.v1.GetAccountInfoRequest) + SharedDtor(); +} + +void GetAccountInfoRequest::SharedDtor() { + if (this != default_instance_) { + delete account_id_; + } +} + +void GetAccountInfoRequest::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* GetAccountInfoRequest::descriptor() { + protobuf_AssignDescriptorsOnce(); + return GetAccountInfoRequest_descriptor_; +} + +const GetAccountInfoRequest& GetAccountInfoRequest::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_account_5fservice_2eproto(); + return *default_instance_; +} + +GetAccountInfoRequest* GetAccountInfoRequest::default_instance_ = NULL; + +GetAccountInfoRequest* GetAccountInfoRequest::New() const { + return new GetAccountInfoRequest; +} + +void GetAccountInfoRequest::Swap(GetAccountInfoRequest* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata GetAccountInfoRequest::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = GetAccountInfoRequest_descriptor_; + metadata.reflection = GetAccountInfoRequest_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int GetAccountInfoResponse::kAccountInfoFieldNumber; +#endif // !_MSC_VER + +GetAccountInfoResponse::GetAccountInfoResponse() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.account.v1.GetAccountInfoResponse) +} + +void GetAccountInfoResponse::InitAsDefaultInstance() { + account_info_ = const_cast< ::bgs::protocol::account::v1::AccountInfo*>(&::bgs::protocol::account::v1::AccountInfo::default_instance()); +} + +GetAccountInfoResponse::GetAccountInfoResponse(const GetAccountInfoResponse& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.account.v1.GetAccountInfoResponse) +} + +void GetAccountInfoResponse::SharedCtor() { + _cached_size_ = 0; + account_info_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +GetAccountInfoResponse::~GetAccountInfoResponse() { + // @@protoc_insertion_point(destructor:bgs.protocol.account.v1.GetAccountInfoResponse) + SharedDtor(); +} + +void GetAccountInfoResponse::SharedDtor() { + if (this != default_instance_) { + delete account_info_; + } +} + +void GetAccountInfoResponse::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* GetAccountInfoResponse::descriptor() { + protobuf_AssignDescriptorsOnce(); + return GetAccountInfoResponse_descriptor_; +} + +const GetAccountInfoResponse& GetAccountInfoResponse::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_account_5fservice_2eproto(); + return *default_instance_; +} + +GetAccountInfoResponse* GetAccountInfoResponse::default_instance_ = NULL; + +GetAccountInfoResponse* GetAccountInfoResponse::New() const { + return new GetAccountInfoResponse; +} + +void GetAccountInfoResponse::Swap(GetAccountInfoResponse* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata GetAccountInfoResponse::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = GetAccountInfoResponse_descriptor_; + metadata.reflection = GetAccountInfoResponse_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int GetAccountPlatformRestrictionsRequest::kAccountIdFieldNumber; +#endif // !_MSC_VER + +GetAccountPlatformRestrictionsRequest::GetAccountPlatformRestrictionsRequest() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.account.v1.GetAccountPlatformRestrictionsRequest) +} + +void GetAccountPlatformRestrictionsRequest::InitAsDefaultInstance() { + account_id_ = const_cast< ::bgs::protocol::EntityId*>(&::bgs::protocol::EntityId::default_instance()); +} + +GetAccountPlatformRestrictionsRequest::GetAccountPlatformRestrictionsRequest(const GetAccountPlatformRestrictionsRequest& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.account.v1.GetAccountPlatformRestrictionsRequest) +} + +void GetAccountPlatformRestrictionsRequest::SharedCtor() { + _cached_size_ = 0; + account_id_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +GetAccountPlatformRestrictionsRequest::~GetAccountPlatformRestrictionsRequest() { + // @@protoc_insertion_point(destructor:bgs.protocol.account.v1.GetAccountPlatformRestrictionsRequest) + SharedDtor(); +} + +void GetAccountPlatformRestrictionsRequest::SharedDtor() { + if (this != default_instance_) { + delete account_id_; + } +} + +void GetAccountPlatformRestrictionsRequest::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* GetAccountPlatformRestrictionsRequest::descriptor() { + protobuf_AssignDescriptorsOnce(); + return GetAccountPlatformRestrictionsRequest_descriptor_; +} + +const GetAccountPlatformRestrictionsRequest& GetAccountPlatformRestrictionsRequest::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_account_5fservice_2eproto(); + return *default_instance_; +} + +GetAccountPlatformRestrictionsRequest* GetAccountPlatformRestrictionsRequest::default_instance_ = NULL; + +GetAccountPlatformRestrictionsRequest* GetAccountPlatformRestrictionsRequest::New() const { + return new GetAccountPlatformRestrictionsRequest; +} + +void GetAccountPlatformRestrictionsRequest::Swap(GetAccountPlatformRestrictionsRequest* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata GetAccountPlatformRestrictionsRequest::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = GetAccountPlatformRestrictionsRequest_descriptor_; + metadata.reflection = GetAccountPlatformRestrictionsRequest_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int GetAccountPlatformRestrictionsResponse::kRestrictionInfoFieldNumber; +#endif // !_MSC_VER + +GetAccountPlatformRestrictionsResponse::GetAccountPlatformRestrictionsResponse() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.account.v1.GetAccountPlatformRestrictionsResponse) +} + +void GetAccountPlatformRestrictionsResponse::InitAsDefaultInstance() { + restriction_info_ = const_cast< ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo*>(&::bgs::protocol::account::v1::AccountPlatformRestrictionInfo::default_instance()); +} + +GetAccountPlatformRestrictionsResponse::GetAccountPlatformRestrictionsResponse(const GetAccountPlatformRestrictionsResponse& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.account.v1.GetAccountPlatformRestrictionsResponse) +} + +void GetAccountPlatformRestrictionsResponse::SharedCtor() { + _cached_size_ = 0; + restriction_info_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +GetAccountPlatformRestrictionsResponse::~GetAccountPlatformRestrictionsResponse() { + // @@protoc_insertion_point(destructor:bgs.protocol.account.v1.GetAccountPlatformRestrictionsResponse) + SharedDtor(); +} + +void GetAccountPlatformRestrictionsResponse::SharedDtor() { + if (this != default_instance_) { + delete restriction_info_; + } +} + +void GetAccountPlatformRestrictionsResponse::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* GetAccountPlatformRestrictionsResponse::descriptor() { + protobuf_AssignDescriptorsOnce(); + return GetAccountPlatformRestrictionsResponse_descriptor_; +} + +const GetAccountPlatformRestrictionsResponse& GetAccountPlatformRestrictionsResponse::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_account_5fservice_2eproto(); + return *default_instance_; +} + +GetAccountPlatformRestrictionsResponse* GetAccountPlatformRestrictionsResponse::default_instance_ = NULL; + +GetAccountPlatformRestrictionsResponse* GetAccountPlatformRestrictionsResponse::New() const { + return new GetAccountPlatformRestrictionsResponse; +} + +void GetAccountPlatformRestrictionsResponse::Swap(GetAccountPlatformRestrictionsResponse* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata GetAccountPlatformRestrictionsResponse::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = GetAccountPlatformRestrictionsResponse_descriptor_; + metadata.reflection = GetAccountPlatformRestrictionsResponse_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER const int AccountStateNotification::kAccountStateFieldNumber; const int AccountStateNotification::kSubscriberIdFieldNumber; const int AccountStateNotification::kAccountTagsFieldNumber; @@ -2817,6 +3226,12 @@ void AccountService::CallServerMethod(uint32 token, uint32 methodId, MessageBuff case 44: ParseAndHandleGetSignedAccountState(token, methodId, buffer); break; + case 45: + ParseAndHandleGetAccountInfo(token, methodId, buffer); + break; + case 46: + ParseAndHandleGetAccountPlatformRestrictions(token, methodId, buffer); + break; default: LogInvalidMethod(methodId); SendResponse(service_hash_, methodId, token, ERROR_RPC_INVALID_METHOD); @@ -2879,6 +3294,16 @@ uint32 AccountService::HandleGetSignedAccountState(::bgs::protocol::account::v1: return ERROR_RPC_NOT_IMPLEMENTED; } +uint32 AccountService::HandleGetAccountInfo(::bgs::protocol::account::v1::GetAccountInfoRequest const* request, ::bgs::protocol::account::v1::GetAccountInfoResponse* /*response*/, std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)>& /*continuation*/) { + LogUnimplementedServerMethod("AccountService.GetAccountInfo", request); + return ERROR_RPC_NOT_IMPLEMENTED; +} + +uint32 AccountService::HandleGetAccountPlatformRestrictions(::bgs::protocol::account::v1::GetAccountPlatformRestrictionsRequest const* request, ::bgs::protocol::account::v1::GetAccountPlatformRestrictionsResponse* /*response*/, std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)>& /*continuation*/) { + LogUnimplementedServerMethod("AccountService.GetAccountPlatformRestrictions", request); + return ERROR_RPC_NOT_IMPLEMENTED; +} + void AccountService::ParseAndHandleResolveAccount(uint32 token, uint32 methodId, MessageBuffer& buffer) { ::bgs::protocol::account::v1::ResolveAccountRequest request; if (!request.ParseFromArray(buffer.GetReadPointer(), buffer.GetActiveSize())) { @@ -3044,6 +3469,36 @@ void AccountService::ParseAndHandleGetSignedAccountState(uint32 token, uint32 me continuation(this, status, &response); } +void AccountService::ParseAndHandleGetAccountInfo(uint32 token, uint32 methodId, MessageBuffer& buffer) { + ::bgs::protocol::account::v1::GetAccountInfoRequest request; + if (!request.ParseFromArray(buffer.GetReadPointer(), buffer.GetActiveSize())) { + LogFailedParsingRequest("AccountService.GetAccountInfo"); + SendResponse(service_hash_, methodId, token, ERROR_RPC_MALFORMED_REQUEST); + return; + } + LogCallServerMethod("AccountService.GetAccountInfo", "bgs.protocol.account.v1.GetAccountInfoRequest", &request); + std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)> continuation = CreateServerContinuation(token, methodId, "AccountService.GetAccountInfo", ::bgs::protocol::account::v1::GetAccountInfoResponse::descriptor()); + ::bgs::protocol::account::v1::GetAccountInfoResponse response; + uint32 status = HandleGetAccountInfo(&request, &response, continuation); + if (continuation) + continuation(this, status, &response); +} + +void AccountService::ParseAndHandleGetAccountPlatformRestrictions(uint32 token, uint32 methodId, MessageBuffer& buffer) { + ::bgs::protocol::account::v1::GetAccountPlatformRestrictionsRequest request; + if (!request.ParseFromArray(buffer.GetReadPointer(), buffer.GetActiveSize())) { + LogFailedParsingRequest("AccountService.GetAccountPlatformRestrictions"); + SendResponse(service_hash_, methodId, token, ERROR_RPC_MALFORMED_REQUEST); + return; + } + LogCallServerMethod("AccountService.GetAccountPlatformRestrictions", "bgs.protocol.account.v1.GetAccountPlatformRestrictionsRequest", &request); + std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)> continuation = CreateServerContinuation(token, methodId, "AccountService.GetAccountPlatformRestrictions", ::bgs::protocol::account::v1::GetAccountPlatformRestrictionsResponse::descriptor()); + ::bgs::protocol::account::v1::GetAccountPlatformRestrictionsResponse response; + uint32 status = HandleGetAccountPlatformRestrictions(&request, &response, continuation); + if (continuation) + continuation(this, status, &response); +} + // =================================================================== AccountListener::AccountListener(bool use_original_hash) : ServiceBase(use_original_hash ? OriginalHash::value : NameHash::value) { diff --git a/src/server/proto/Client/account_service.pb.h b/src/server/proto/Client/account_service.pb.h index 0467512cc27..8f790456010 100644 --- a/src/server/proto/Client/account_service.pb.h +++ b/src/server/proto/Client/account_service.pb.h @@ -64,6 +64,10 @@ class GetCAISInfoRequest; class GetCAISInfoResponse; class GetAuthorizedDataRequest; class GetAuthorizedDataResponse; +class GetAccountInfoRequest; +class GetAccountInfoResponse; +class GetAccountPlatformRestrictionsRequest; +class GetAccountPlatformRestrictionsResponse; class AccountStateNotification; class GameAccountStateNotification; class GameAccountNotification; @@ -1744,6 +1748,278 @@ class TC_PROTO_API GetAuthorizedDataResponse : public ::google::protobuf::Messag }; // ------------------------------------------------------------------- +class TC_PROTO_API GetAccountInfoRequest : public ::google::protobuf::Message { + public: + GetAccountInfoRequest(); + virtual ~GetAccountInfoRequest(); + + GetAccountInfoRequest(const GetAccountInfoRequest& from); + + inline GetAccountInfoRequest& operator=(const GetAccountInfoRequest& 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 GetAccountInfoRequest& default_instance(); + + void Swap(GetAccountInfoRequest* other); + + // implements Message ---------------------------------------------- + + GetAccountInfoRequest* 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.EntityId account_id = 1; + inline bool has_account_id() const; + inline void clear_account_id(); + static const int kAccountIdFieldNumber = 1; + inline const ::bgs::protocol::EntityId& account_id() const; + inline ::bgs::protocol::EntityId* mutable_account_id(); + inline ::bgs::protocol::EntityId* release_account_id(); + inline void set_allocated_account_id(::bgs::protocol::EntityId* account_id); + + // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.GetAccountInfoRequest) + private: + inline void set_has_account_id(); + inline void clear_has_account_id(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::bgs::protocol::EntityId* account_id_; + friend void TC_PROTO_API protobuf_AddDesc_account_5fservice_2eproto(); + friend void protobuf_AssignDesc_account_5fservice_2eproto(); + friend void protobuf_ShutdownFile_account_5fservice_2eproto(); + + void InitAsDefaultInstance(); + static GetAccountInfoRequest* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API GetAccountInfoResponse : public ::google::protobuf::Message { + public: + GetAccountInfoResponse(); + virtual ~GetAccountInfoResponse(); + + GetAccountInfoResponse(const GetAccountInfoResponse& from); + + inline GetAccountInfoResponse& operator=(const GetAccountInfoResponse& 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 GetAccountInfoResponse& default_instance(); + + void Swap(GetAccountInfoResponse* other); + + // implements Message ---------------------------------------------- + + GetAccountInfoResponse* 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.v1.AccountInfo account_info = 1; + inline bool has_account_info() const; + inline void clear_account_info(); + static const int kAccountInfoFieldNumber = 1; + inline const ::bgs::protocol::account::v1::AccountInfo& account_info() const; + inline ::bgs::protocol::account::v1::AccountInfo* mutable_account_info(); + inline ::bgs::protocol::account::v1::AccountInfo* release_account_info(); + inline void set_allocated_account_info(::bgs::protocol::account::v1::AccountInfo* account_info); + + // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.GetAccountInfoResponse) + private: + inline void set_has_account_info(); + inline void clear_has_account_info(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::bgs::protocol::account::v1::AccountInfo* account_info_; + friend void TC_PROTO_API protobuf_AddDesc_account_5fservice_2eproto(); + friend void protobuf_AssignDesc_account_5fservice_2eproto(); + friend void protobuf_ShutdownFile_account_5fservice_2eproto(); + + void InitAsDefaultInstance(); + static GetAccountInfoResponse* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API GetAccountPlatformRestrictionsRequest : public ::google::protobuf::Message { + public: + GetAccountPlatformRestrictionsRequest(); + virtual ~GetAccountPlatformRestrictionsRequest(); + + GetAccountPlatformRestrictionsRequest(const GetAccountPlatformRestrictionsRequest& from); + + inline GetAccountPlatformRestrictionsRequest& operator=(const GetAccountPlatformRestrictionsRequest& 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 GetAccountPlatformRestrictionsRequest& default_instance(); + + void Swap(GetAccountPlatformRestrictionsRequest* other); + + // implements Message ---------------------------------------------- + + GetAccountPlatformRestrictionsRequest* 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.EntityId account_id = 1; + inline bool has_account_id() const; + inline void clear_account_id(); + static const int kAccountIdFieldNumber = 1; + inline const ::bgs::protocol::EntityId& account_id() const; + inline ::bgs::protocol::EntityId* mutable_account_id(); + inline ::bgs::protocol::EntityId* release_account_id(); + inline void set_allocated_account_id(::bgs::protocol::EntityId* account_id); + + // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.GetAccountPlatformRestrictionsRequest) + private: + inline void set_has_account_id(); + inline void clear_has_account_id(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::bgs::protocol::EntityId* account_id_; + friend void TC_PROTO_API protobuf_AddDesc_account_5fservice_2eproto(); + friend void protobuf_AssignDesc_account_5fservice_2eproto(); + friend void protobuf_ShutdownFile_account_5fservice_2eproto(); + + void InitAsDefaultInstance(); + static GetAccountPlatformRestrictionsRequest* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API GetAccountPlatformRestrictionsResponse : public ::google::protobuf::Message { + public: + GetAccountPlatformRestrictionsResponse(); + virtual ~GetAccountPlatformRestrictionsResponse(); + + GetAccountPlatformRestrictionsResponse(const GetAccountPlatformRestrictionsResponse& from); + + inline GetAccountPlatformRestrictionsResponse& operator=(const GetAccountPlatformRestrictionsResponse& 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 GetAccountPlatformRestrictionsResponse& default_instance(); + + void Swap(GetAccountPlatformRestrictionsResponse* other); + + // implements Message ---------------------------------------------- + + GetAccountPlatformRestrictionsResponse* 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.v1.AccountPlatformRestrictionInfo restriction_info = 1; + inline bool has_restriction_info() const; + inline void clear_restriction_info(); + static const int kRestrictionInfoFieldNumber = 1; + inline const ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo& restriction_info() const; + inline ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo* mutable_restriction_info(); + inline ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo* release_restriction_info(); + inline void set_allocated_restriction_info(::bgs::protocol::account::v1::AccountPlatformRestrictionInfo* restriction_info); + + // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.GetAccountPlatformRestrictionsResponse) + private: + inline void set_has_restriction_info(); + inline void clear_has_restriction_info(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo* restriction_info_; + friend void TC_PROTO_API protobuf_AddDesc_account_5fservice_2eproto(); + friend void protobuf_AssignDesc_account_5fservice_2eproto(); + friend void protobuf_ShutdownFile_account_5fservice_2eproto(); + + void InitAsDefaultInstance(); + static GetAccountPlatformRestrictionsResponse* default_instance_; +}; +// ------------------------------------------------------------------- + class TC_PROTO_API AccountStateNotification : public ::google::protobuf::Message { public: AccountStateNotification(); @@ -2146,6 +2422,8 @@ class TC_PROTO_API AccountService : public ServiceBase virtual uint32 HandleGetCAISInfo(::bgs::protocol::account::v1::GetCAISInfoRequest const* request, ::bgs::protocol::account::v1::GetCAISInfoResponse* response, std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)>& continuation); virtual uint32 HandleGetAuthorizedData(::bgs::protocol::account::v1::GetAuthorizedDataRequest const* request, ::bgs::protocol::account::v1::GetAuthorizedDataResponse* response, std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)>& continuation); virtual uint32 HandleGetSignedAccountState(::bgs::protocol::account::v1::GetSignedAccountStateRequest const* request, ::bgs::protocol::account::v1::GetSignedAccountStateResponse* response, std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)>& continuation); + virtual uint32 HandleGetAccountInfo(::bgs::protocol::account::v1::GetAccountInfoRequest const* request, ::bgs::protocol::account::v1::GetAccountInfoResponse* response, std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)>& continuation); + virtual uint32 HandleGetAccountPlatformRestrictions(::bgs::protocol::account::v1::GetAccountPlatformRestrictionsRequest const* request, ::bgs::protocol::account::v1::GetAccountPlatformRestrictionsResponse* response, std::function<void(ServiceBase*, uint32, ::google::protobuf::Message const*)>& continuation); private: void ParseAndHandleResolveAccount(uint32 token, uint32 methodId, MessageBuffer& buffer); @@ -2159,6 +2437,8 @@ class TC_PROTO_API AccountService : public ServiceBase void ParseAndHandleGetCAISInfo(uint32 token, uint32 methodId, MessageBuffer& buffer); void ParseAndHandleGetAuthorizedData(uint32 token, uint32 methodId, MessageBuffer& buffer); void ParseAndHandleGetSignedAccountState(uint32 token, uint32 methodId, MessageBuffer& buffer); + void ParseAndHandleGetAccountInfo(uint32 token, uint32 methodId, MessageBuffer& buffer); + void ParseAndHandleGetAccountPlatformRestrictions(uint32 token, uint32 methodId, MessageBuffer& buffer); }; // ------------------------------------------------------------------- @@ -3850,6 +4130,186 @@ GetAuthorizedDataResponse::mutable_data() { // ------------------------------------------------------------------- +// GetAccountInfoRequest + +// optional .bgs.protocol.EntityId account_id = 1; +inline bool GetAccountInfoRequest::has_account_id() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void GetAccountInfoRequest::set_has_account_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void GetAccountInfoRequest::clear_has_account_id() { + _has_bits_[0] &= ~0x00000001u; +} +inline void GetAccountInfoRequest::clear_account_id() { + if (account_id_ != NULL) account_id_->::bgs::protocol::EntityId::Clear(); + clear_has_account_id(); +} +inline const ::bgs::protocol::EntityId& GetAccountInfoRequest::account_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.GetAccountInfoRequest.account_id) + return account_id_ != NULL ? *account_id_ : *default_instance_->account_id_; +} +inline ::bgs::protocol::EntityId* GetAccountInfoRequest::mutable_account_id() { + set_has_account_id(); + if (account_id_ == NULL) account_id_ = new ::bgs::protocol::EntityId; + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.GetAccountInfoRequest.account_id) + return account_id_; +} +inline ::bgs::protocol::EntityId* GetAccountInfoRequest::release_account_id() { + clear_has_account_id(); + ::bgs::protocol::EntityId* temp = account_id_; + account_id_ = NULL; + return temp; +} +inline void GetAccountInfoRequest::set_allocated_account_id(::bgs::protocol::EntityId* account_id) { + delete account_id_; + account_id_ = account_id; + if (account_id) { + set_has_account_id(); + } else { + clear_has_account_id(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.GetAccountInfoRequest.account_id) +} + +// ------------------------------------------------------------------- + +// GetAccountInfoResponse + +// optional .bgs.protocol.account.v1.AccountInfo account_info = 1; +inline bool GetAccountInfoResponse::has_account_info() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void GetAccountInfoResponse::set_has_account_info() { + _has_bits_[0] |= 0x00000001u; +} +inline void GetAccountInfoResponse::clear_has_account_info() { + _has_bits_[0] &= ~0x00000001u; +} +inline void GetAccountInfoResponse::clear_account_info() { + if (account_info_ != NULL) account_info_->::bgs::protocol::account::v1::AccountInfo::Clear(); + clear_has_account_info(); +} +inline const ::bgs::protocol::account::v1::AccountInfo& GetAccountInfoResponse::account_info() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.GetAccountInfoResponse.account_info) + return account_info_ != NULL ? *account_info_ : *default_instance_->account_info_; +} +inline ::bgs::protocol::account::v1::AccountInfo* GetAccountInfoResponse::mutable_account_info() { + set_has_account_info(); + if (account_info_ == NULL) account_info_ = new ::bgs::protocol::account::v1::AccountInfo; + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.GetAccountInfoResponse.account_info) + return account_info_; +} +inline ::bgs::protocol::account::v1::AccountInfo* GetAccountInfoResponse::release_account_info() { + clear_has_account_info(); + ::bgs::protocol::account::v1::AccountInfo* temp = account_info_; + account_info_ = NULL; + return temp; +} +inline void GetAccountInfoResponse::set_allocated_account_info(::bgs::protocol::account::v1::AccountInfo* account_info) { + delete account_info_; + account_info_ = account_info; + if (account_info) { + set_has_account_info(); + } else { + clear_has_account_info(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.GetAccountInfoResponse.account_info) +} + +// ------------------------------------------------------------------- + +// GetAccountPlatformRestrictionsRequest + +// optional .bgs.protocol.EntityId account_id = 1; +inline bool GetAccountPlatformRestrictionsRequest::has_account_id() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void GetAccountPlatformRestrictionsRequest::set_has_account_id() { + _has_bits_[0] |= 0x00000001u; +} +inline void GetAccountPlatformRestrictionsRequest::clear_has_account_id() { + _has_bits_[0] &= ~0x00000001u; +} +inline void GetAccountPlatformRestrictionsRequest::clear_account_id() { + if (account_id_ != NULL) account_id_->::bgs::protocol::EntityId::Clear(); + clear_has_account_id(); +} +inline const ::bgs::protocol::EntityId& GetAccountPlatformRestrictionsRequest::account_id() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.GetAccountPlatformRestrictionsRequest.account_id) + return account_id_ != NULL ? *account_id_ : *default_instance_->account_id_; +} +inline ::bgs::protocol::EntityId* GetAccountPlatformRestrictionsRequest::mutable_account_id() { + set_has_account_id(); + if (account_id_ == NULL) account_id_ = new ::bgs::protocol::EntityId; + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.GetAccountPlatformRestrictionsRequest.account_id) + return account_id_; +} +inline ::bgs::protocol::EntityId* GetAccountPlatformRestrictionsRequest::release_account_id() { + clear_has_account_id(); + ::bgs::protocol::EntityId* temp = account_id_; + account_id_ = NULL; + return temp; +} +inline void GetAccountPlatformRestrictionsRequest::set_allocated_account_id(::bgs::protocol::EntityId* account_id) { + delete account_id_; + account_id_ = account_id; + if (account_id) { + set_has_account_id(); + } else { + clear_has_account_id(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.GetAccountPlatformRestrictionsRequest.account_id) +} + +// ------------------------------------------------------------------- + +// GetAccountPlatformRestrictionsResponse + +// optional .bgs.protocol.account.v1.AccountPlatformRestrictionInfo restriction_info = 1; +inline bool GetAccountPlatformRestrictionsResponse::has_restriction_info() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void GetAccountPlatformRestrictionsResponse::set_has_restriction_info() { + _has_bits_[0] |= 0x00000001u; +} +inline void GetAccountPlatformRestrictionsResponse::clear_has_restriction_info() { + _has_bits_[0] &= ~0x00000001u; +} +inline void GetAccountPlatformRestrictionsResponse::clear_restriction_info() { + if (restriction_info_ != NULL) restriction_info_->::bgs::protocol::account::v1::AccountPlatformRestrictionInfo::Clear(); + clear_has_restriction_info(); +} +inline const ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo& GetAccountPlatformRestrictionsResponse::restriction_info() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.GetAccountPlatformRestrictionsResponse.restriction_info) + return restriction_info_ != NULL ? *restriction_info_ : *default_instance_->restriction_info_; +} +inline ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo* GetAccountPlatformRestrictionsResponse::mutable_restriction_info() { + set_has_restriction_info(); + if (restriction_info_ == NULL) restriction_info_ = new ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo; + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.GetAccountPlatformRestrictionsResponse.restriction_info) + return restriction_info_; +} +inline ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo* GetAccountPlatformRestrictionsResponse::release_restriction_info() { + clear_has_restriction_info(); + ::bgs::protocol::account::v1::AccountPlatformRestrictionInfo* temp = restriction_info_; + restriction_info_ = NULL; + return temp; +} +inline void GetAccountPlatformRestrictionsResponse::set_allocated_restriction_info(::bgs::protocol::account::v1::AccountPlatformRestrictionInfo* restriction_info) { + delete restriction_info_; + restriction_info_ = restriction_info; + if (restriction_info) { + set_has_restriction_info(); + } else { + clear_has_restriction_info(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.GetAccountPlatformRestrictionsResponse.restriction_info) +} + +// ------------------------------------------------------------------- + // AccountStateNotification // optional .bgs.protocol.account.v1.AccountState account_state = 1; diff --git a/src/server/proto/Client/account_types.pb.cc b/src/server/proto/Client/account_types.pb.cc index 57af58a4aeb..b13c05a9733 100644 --- a/src/server/proto/Client/account_types.pb.cc +++ b/src/server/proto/Client/account_types.pb.cc @@ -134,6 +134,18 @@ struct IgrIdOneofInstance { const ::google::protobuf::Descriptor* IgrAddress_descriptor_ = NULL; const ::google::protobuf::internal::GeneratedMessageReflection* IgrAddress_reflection_ = NULL; +const ::google::protobuf::Descriptor* AccountPrivacySetting_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + AccountPrivacySetting_reflection_ = NULL; +const ::google::protobuf::Descriptor* AccountInfo_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + AccountInfo_reflection_ = NULL; +const ::google::protobuf::Descriptor* RestrictionStatus_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + RestrictionStatus_reflection_ = NULL; +const ::google::protobuf::Descriptor* AccountPlatformRestrictionInfo_descriptor_ = NULL; +const ::google::protobuf::internal::GeneratedMessageReflection* + AccountPlatformRestrictionInfo_reflection_ = NULL; const ::google::protobuf::EnumDescriptor* IdentityVerificationStatus_descriptor_ = NULL; } // namespace @@ -792,6 +804,86 @@ void protobuf_AssignDesc_account_5ftypes_2eproto() { ::google::protobuf::DescriptorPool::generated_pool(), ::google::protobuf::MessageFactory::generated_factory(), sizeof(IgrAddress)); + AccountPrivacySetting_descriptor_ = file->message_type(35); + static const int AccountPrivacySetting_offsets_[4] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPrivacySetting, is_using_rid_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPrivacySetting, is_visible_for_view_friends_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPrivacySetting, is_hidden_from_friend_finder_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPrivacySetting, only_allow_friend_whispers_), + }; + AccountPrivacySetting_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + AccountPrivacySetting_descriptor_, + AccountPrivacySetting::default_instance_, + AccountPrivacySetting_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPrivacySetting, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPrivacySetting, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(AccountPrivacySetting)); + AccountInfo_descriptor_ = file->message_type(36); + static const int AccountInfo_offsets_[16] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, battle_tag_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, email_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, phone_number_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, full_name_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, birthdate_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, country_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, default_currency_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, preferred_region_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, ratings_board_minimum_age_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, has_parental_control_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, is_email_verified_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, is_sms_protected_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, is_headless_account_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, is_employee_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, is_test_account_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, privacy_setting_), + }; + AccountInfo_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + AccountInfo_descriptor_, + AccountInfo::default_instance_, + AccountInfo_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountInfo, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(AccountInfo)); + RestrictionStatus_descriptor_ = file->message_type(37); + static const int RestrictionStatus_offsets_[2] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RestrictionStatus, active_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RestrictionStatus, expiration_us_), + }; + RestrictionStatus_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + RestrictionStatus_descriptor_, + RestrictionStatus::default_instance_, + RestrictionStatus_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RestrictionStatus, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RestrictionStatus, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(RestrictionStatus)); + AccountPlatformRestrictionInfo_descriptor_ = file->message_type(38); + static const int AccountPlatformRestrictionInfo_offsets_[2] = { + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPlatformRestrictionInfo, squelched_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPlatformRestrictionInfo, legal_country_feature_restrictions_applied_), + }; + AccountPlatformRestrictionInfo_reflection_ = + new ::google::protobuf::internal::GeneratedMessageReflection( + AccountPlatformRestrictionInfo_descriptor_, + AccountPlatformRestrictionInfo::default_instance_, + AccountPlatformRestrictionInfo_offsets_, + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPlatformRestrictionInfo, _has_bits_[0]), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccountPlatformRestrictionInfo, _unknown_fields_), + -1, + ::google::protobuf::DescriptorPool::generated_pool(), + ::google::protobuf::MessageFactory::generated_factory(), + sizeof(AccountPlatformRestrictionInfo)); IdentityVerificationStatus_descriptor_ = file->enum_type(0); } @@ -875,6 +967,14 @@ void protobuf_RegisterTypes(const ::std::string&) { IgrId_descriptor_, &IgrId::default_instance()); ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( IgrAddress_descriptor_, &IgrAddress::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + AccountPrivacySetting_descriptor_, &AccountPrivacySetting::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + AccountInfo_descriptor_, &AccountInfo::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + RestrictionStatus_descriptor_, &RestrictionStatus::default_instance()); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( + AccountPlatformRestrictionInfo_descriptor_, &AccountPlatformRestrictionInfo::default_instance()); } } // namespace @@ -951,6 +1051,14 @@ void protobuf_ShutdownFile_account_5ftypes_2eproto() { delete IgrId_reflection_; delete IgrAddress::default_instance_; delete IgrAddress_reflection_; + delete AccountPrivacySetting::default_instance_; + delete AccountPrivacySetting_reflection_; + delete AccountInfo::default_instance_; + delete AccountInfo_reflection_; + delete RestrictionStatus::default_instance_; + delete RestrictionStatus_reflection_; + delete AccountPlatformRestrictionInfo::default_instance_; + delete AccountPlatformRestrictionInfo_reflection_; } void protobuf_AddDesc_account_5ftypes_2eproto() { @@ -1046,84 +1154,106 @@ void protobuf_AddDesc_account_5ftypes_2eproto() { "\010\022\025\n\rplay_schedule\030\010 \003(\010\022\026\n\016can_join_gro" "up\030\t \001(\010\022\027\n\017can_use_profile\030\n \001(\010\"B\n\027Pla" "yScheduleRestriction\022\025\n\rplay_schedule\030\001 " - "\003(\010\022\020\n\010timezone\030\002 \001(\t\"\370\001\n\rGameLevelInfo\022" + "\003(\010\022\020\n\010timezone\030\002 \001(\t\"\374\001\n\rGameLevelInfo\022" "\020\n\010is_trial\030\004 \001(\010\022\023\n\013is_lifetime\030\005 \001(\010\022\025" "\n\ris_restricted\030\006 \001(\010\022\017\n\007is_beta\030\007 \001(\010\022\024" "\n\004name\030\010 \001(\tB\006\202\371+\002\010\001\022\017\n\007program\030\t \001(\007\0229\n" "\010licenses\030\n \003(\0132\'.bgs.protocol.account.v" "1.AccountLicense\022\031\n\021realm_permissions\030\013 " - "\001(\r\022\033\n\023last_logout_time_ms\030\014 \001(\004\"\205\001\n\014Gam" - "eTimeInfo\022\036\n\026is_unlimited_play_time\030\003 \001(" - "\010\022\031\n\021play_time_expires\030\005 \001(\004\022\027\n\017is_subsc" - "ription\030\006 \001(\010\022!\n\031is_recurring_subscripti" - "on\030\007 \001(\010\"\261\001\n\025GameTimeRemainingInfo\022\031\n\021mi" - "nutes_remaining\030\001 \001(\r\022(\n parental_daily_" - "minutes_remaining\030\002 \001(\r\022)\n!parental_week" - "ly_minutes_remaining\030\003 \001(\r\022(\n\034seconds_re" - "maining_until_kick\030\004 \001(\rB\002\030\001\"\220\001\n\nGameSta" - "tus\022\024\n\014is_suspended\030\004 \001(\010\022\021\n\tis_banned\030\005" - " \001(\010\022\032\n\022suspension_expires\030\006 \001(\004\022\017\n\007prog" - "ram\030\007 \001(\007\022\021\n\tis_locked\030\010 \001(\010\022\031\n\021is_bam_u" - "nlockable\030\t \001(\010\"\033\n\007RAFInfo\022\020\n\010raf_info\030\001" - " \001(\014\"\250\002\n\017GameSessionInfo\022\026\n\nstart_time\030\003" - " \001(\rB\002\030\001\022>\n\010location\030\004 \001(\0132,.bgs.protoco" - "l.account.v1.GameSessionLocation\022\026\n\016has_" - "benefactor\030\005 \001(\010\022\024\n\014is_using_igr\030\006 \001(\010\022 " - "\n\030parental_controls_active\030\007 \001(\010\022\026\n\016star" - "t_time_sec\030\010 \001(\004\022.\n\006igr_id\030\t \001(\0132\036.bgs.p" - "rotocol.account.v1.IgrId\022\023\n\013platform_id\030" - "\n \001(\007\022\020\n\010igr_paid\030\013 \001(\010\"D\n\025GameSessionUp" - "dateInfo\022+\n\004cais\030\010 \001(\0132\035.bgs.protocol.ac" - "count.v1.CAIS\"H\n\023GameSessionLocation\022\022\n\n" - "ip_address\030\001 \001(\t\022\017\n\007country\030\002 \001(\r\022\014\n\004cit" - "y\030\003 \001(\t\"O\n\004CAIS\022\026\n\016played_minutes\030\001 \001(\r\022" - "\026\n\016rested_minutes\030\002 \001(\r\022\027\n\017last_heard_ti" - "me\030\003 \001(\004\"]\n\017GameAccountList\022\016\n\006region\030\003 " - "\001(\r\022:\n\006handle\030\004 \003(\0132*.bgs.protocol.accou" - "nt.v1.GameAccountHandle\"\231\001\n\016SecurityStat" - "us\022\033\n\023sms_protect_enabled\030\001 \001(\010\022\026\n\016email" - "_verified\030\002 \001(\010\022\035\n\025authenticator_enabled" - "\030\003 \001(\010\022\023\n\013sqa_enabled\030\004 \001(\010\022\036\n\026authentic" - "ator_required\030\005 \001(\010\"\251\004\n\014AccountState\022E\n\022" - "account_level_info\030\001 \001(\0132).bgs.protocol." - "account.v1.AccountLevelInfo\022:\n\014privacy_i" - "nfo\030\002 \001(\0132$.bgs.protocol.account.v1.Priv" - "acyInfo\022K\n\025parental_control_info\030\003 \001(\0132," - ".bgs.protocol.account.v1.ParentalControl" - "Info\022\?\n\017game_level_info\030\005 \003(\0132&.bgs.prot" - "ocol.account.v1.GameLevelInfo\0228\n\013game_st" - "atus\030\006 \003(\0132#.bgs.protocol.account.v1.Gam" - "eStatus\022\?\n\rgame_accounts\030\007 \003(\0132(.bgs.pro" - "tocol.account.v1.GameAccountList\022@\n\017secu" - "rity_status\030\010 \001(\0132\'.bgs.protocol.account" - ".v1.SecurityStatus\022K\n\021government_curfew\030" - "\t \001(\01320.bgs.protocol.account.v1.PlaySche" - "duleRestriction\"\223\001\n\022AccountStateTagged\022<" - "\n\raccount_state\030\001 \001(\0132%.bgs.protocol.acc" - "ount.v1.AccountState\022\?\n\014account_tags\030\002 \001" - "(\0132).bgs.protocol.account.v1.AccountFiel" - "dTags\"\200\002\n\020GameAccountState\022\?\n\017game_level" - "_info\030\001 \001(\0132&.bgs.protocol.account.v1.Ga" - "meLevelInfo\022=\n\016game_time_info\030\002 \001(\0132%.bg" - "s.protocol.account.v1.GameTimeInfo\0228\n\013ga" - "me_status\030\003 \001(\0132#.bgs.protocol.account.v" - "1.GameStatus\0222\n\010raf_info\030\004 \001(\0132 .bgs.pro" - "tocol.account.v1.RAFInfo\"\251\001\n\026GameAccount" - "StateTagged\022E\n\022game_account_state\030\001 \001(\0132" - ").bgs.protocol.account.v1.GameAccountSta" - "te\022H\n\021game_account_tags\030\002 \001(\0132-.bgs.prot" - "ocol.account.v1.GameAccountFieldTags\"/\n\016" - "AuthorizedData\022\014\n\004data\030\001 \001(\t\022\017\n\007license\030" - "\002 \003(\r\"~\n\005IgrId\022F\n\014game_account\030\001 \001(\0132*.b" - "gs.protocol.account.v1.GameAccountHandle" - "B\002\030\001H\000\022\025\n\013external_id\030\002 \001(\007H\000\022\016\n\004uuid\030\003 " - "\001(\tH\000B\006\n\004type\"4\n\nIgrAddress\022\026\n\016client_ad" - "dress\030\001 \001(\t\022\016\n\006region\030\002 \001(\r*\265\001\n\032Identity" - "VerificationStatus\022\021\n\rIDENT_NO_DATA\020\000\022\021\n" - "\rIDENT_PENDING\020\001\022\021\n\rIDENT_OVER_18\020\002\022\022\n\016I" - "DENT_UNDER_18\020\003\022\020\n\014IDENT_FAILED\020\004\022\021\n\rIDE" - "NT_SUCCESS\020\005\022\022\n\016IDENT_SUCC_MNL\020\006\022\021\n\rIDEN" - "T_UNKNOWN\020\007B\002H\002", 6415); + "\001(\r\022\037\n\023last_logout_time_ms\030\014 \001(\004B\002\030\001\"\205\001\n" + "\014GameTimeInfo\022\036\n\026is_unlimited_play_time\030" + "\003 \001(\010\022\031\n\021play_time_expires\030\005 \001(\004\022\027\n\017is_s" + "ubscription\030\006 \001(\010\022!\n\031is_recurring_subscr" + "iption\030\007 \001(\010\"\261\001\n\025GameTimeRemainingInfo\022\031" + "\n\021minutes_remaining\030\001 \001(\r\022(\n parental_da" + "ily_minutes_remaining\030\002 \001(\r\022)\n!parental_" + "weekly_minutes_remaining\030\003 \001(\r\022(\n\034second" + "s_remaining_until_kick\030\004 \001(\rB\002\030\001\"\220\001\n\nGam" + "eStatus\022\024\n\014is_suspended\030\004 \001(\010\022\021\n\tis_bann" + "ed\030\005 \001(\010\022\032\n\022suspension_expires\030\006 \001(\004\022\017\n\007" + "program\030\007 \001(\007\022\021\n\tis_locked\030\010 \001(\010\022\031\n\021is_b" + "am_unlockable\030\t \001(\010\"\033\n\007RAFInfo\022\020\n\010raf_in" + "fo\030\001 \001(\014\"\250\002\n\017GameSessionInfo\022\026\n\nstart_ti" + "me\030\003 \001(\rB\002\030\001\022>\n\010location\030\004 \001(\0132,.bgs.pro" + "tocol.account.v1.GameSessionLocation\022\026\n\016" + "has_benefactor\030\005 \001(\010\022\024\n\014is_using_igr\030\006 \001" + "(\010\022 \n\030parental_controls_active\030\007 \001(\010\022\026\n\016" + "start_time_sec\030\010 \001(\004\022.\n\006igr_id\030\t \001(\0132\036.b" + "gs.protocol.account.v1.IgrId\022\023\n\013platform" + "_id\030\n \001(\007\022\020\n\010igr_paid\030\013 \001(\010\"D\n\025GameSessi" + "onUpdateInfo\022+\n\004cais\030\010 \001(\0132\035.bgs.protoco" + "l.account.v1.CAIS\"H\n\023GameSessionLocation" + "\022\022\n\nip_address\030\001 \001(\t\022\017\n\007country\030\002 \001(\r\022\014\n" + "\004city\030\003 \001(\t\"O\n\004CAIS\022\026\n\016played_minutes\030\001 " + "\001(\r\022\026\n\016rested_minutes\030\002 \001(\r\022\027\n\017last_hear" + "d_time\030\003 \001(\004\"]\n\017GameAccountList\022\016\n\006regio" + "n\030\003 \001(\r\022:\n\006handle\030\004 \003(\0132*.bgs.protocol.a" + "ccount.v1.GameAccountHandle\"\231\001\n\016Security" + "Status\022\033\n\023sms_protect_enabled\030\001 \001(\010\022\026\n\016e" + "mail_verified\030\002 \001(\010\022\035\n\025authenticator_ena" + "bled\030\003 \001(\010\022\023\n\013sqa_enabled\030\004 \001(\010\022\036\n\026authe" + "nticator_required\030\005 \001(\010\"\251\004\n\014AccountState" + "\022E\n\022account_level_info\030\001 \001(\0132).bgs.proto" + "col.account.v1.AccountLevelInfo\022:\n\014priva" + "cy_info\030\002 \001(\0132$.bgs.protocol.account.v1." + "PrivacyInfo\022K\n\025parental_control_info\030\003 \001" + "(\0132,.bgs.protocol.account.v1.ParentalCon" + "trolInfo\022\?\n\017game_level_info\030\005 \003(\0132&.bgs." + "protocol.account.v1.GameLevelInfo\0228\n\013gam" + "e_status\030\006 \003(\0132#.bgs.protocol.account.v1" + ".GameStatus\022\?\n\rgame_accounts\030\007 \003(\0132(.bgs" + ".protocol.account.v1.GameAccountList\022@\n\017" + "security_status\030\010 \001(\0132\'.bgs.protocol.acc" + "ount.v1.SecurityStatus\022K\n\021government_cur" + "few\030\t \001(\01320.bgs.protocol.account.v1.Play" + "ScheduleRestriction\"\223\001\n\022AccountStateTagg" + "ed\022<\n\raccount_state\030\001 \001(\0132%.bgs.protocol" + ".account.v1.AccountState\022\?\n\014account_tags" + "\030\002 \001(\0132).bgs.protocol.account.v1.Account" + "FieldTags\"\200\002\n\020GameAccountState\022\?\n\017game_l" + "evel_info\030\001 \001(\0132&.bgs.protocol.account.v" + "1.GameLevelInfo\022=\n\016game_time_info\030\002 \001(\0132" + "%.bgs.protocol.account.v1.GameTimeInfo\0228" + "\n\013game_status\030\003 \001(\0132#.bgs.protocol.accou" + "nt.v1.GameStatus\0222\n\010raf_info\030\004 \001(\0132 .bgs" + ".protocol.account.v1.RAFInfo\"\251\001\n\026GameAcc" + "ountStateTagged\022E\n\022game_account_state\030\001 " + "\001(\0132).bgs.protocol.account.v1.GameAccoun" + "tState\022H\n\021game_account_tags\030\002 \001(\0132-.bgs." + "protocol.account.v1.GameAccountFieldTags" + "\"/\n\016AuthorizedData\022\014\n\004data\030\001 \001(\t\022\017\n\007lice" + "nse\030\002 \003(\r\"~\n\005IgrId\022F\n\014game_account\030\001 \001(\013" + "2*.bgs.protocol.account.v1.GameAccountHa" + "ndleB\002\030\001H\000\022\025\n\013external_id\030\002 \001(\007H\000\022\016\n\004uui" + "d\030\003 \001(\tH\000B\006\n\004type\"4\n\nIgrAddress\022\026\n\016clien" + "t_address\030\001 \001(\t\022\016\n\006region\030\002 \001(\r\"\234\001\n\025Acco" + "untPrivacySetting\022\024\n\014is_using_rid\030\001 \001(\010\022" + "#\n\033is_visible_for_view_friends\030\002 \001(\010\022$\n\034" + "is_hidden_from_friend_finder\030\003 \001(\010\022\"\n\032on" + "ly_allow_friend_whispers\030\004 \001(\010\"\343\003\n\013Accou" + "ntInfo\022\032\n\nbattle_tag\030\001 \001(\tB\006\202\371+\002\010\001\022\025\n\005em" + "ail\030\002 \001(\tB\006\202\371+\002\010\001\022\034\n\014phone_number\030\003 \001(\tB" + "\006\202\371+\002\010\001\022\031\n\tfull_name\030\004 \001(\tB\006\202\371+\002\010\001\022\031\n\tbi" + "rthdate\030\005 \001(\tB\006\202\371+\002\010\001\022\017\n\007country\030\006 \001(\t\022\030" + "\n\020default_currency\030\007 \001(\t\022\030\n\020preferred_re" + "gion\030\010 \001(\r\022!\n\031ratings_board_minimum_age\030" + "\t \001(\r\022\034\n\024has_parental_control\030\n \001(\010\022\031\n\021i" + "s_email_verified\030\013 \001(\010\022\030\n\020is_sms_protect" + "ed\030\014 \001(\010\022\033\n\023is_headless_account\030\r \001(\010\022\023\n" + "\013is_employee\030\016 \001(\010\022\027\n\017is_test_account\030\017 " + "\001(\010\022G\n\017privacy_setting\030\020 \001(\0132..bgs.proto" + "col.account.v1.AccountPrivacySetting\":\n\021" + "RestrictionStatus\022\016\n\006active\030\001 \001(\010\022\025\n\rexp" + "iration_us\030\002 \001(\004\"\277\001\n\036AccountPlatformRest" + "rictionInfo\022=\n\tsquelched\030\002 \001(\0132*.bgs.pro" + "tocol.account.v1.RestrictionStatus\022^\n*le" + "gal_country_feature_restrictions_applied" + "\030\003 \001(\0132*.bgs.protocol.account.v1.Restric" + "tionStatus*\265\001\n\032IdentityVerificationStatu" + "s\022\021\n\rIDENT_NO_DATA\020\000\022\021\n\rIDENT_PENDING\020\001\022" + "\021\n\rIDENT_OVER_18\020\002\022\022\n\016IDENT_UNDER_18\020\003\022\020" + "\n\014IDENT_FAILED\020\004\022\021\n\rIDENT_SUCCESS\020\005\022\022\n\016I" + "DENT_SUCC_MNL\020\006\022\021\n\rIDENT_UNKNOWN\020\007B\002H\002", 7318); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "account_types.proto", &protobuf_RegisterTypes); AccountId::default_instance_ = new AccountId(); @@ -1162,6 +1292,10 @@ void protobuf_AddDesc_account_5ftypes_2eproto() { IgrId::default_instance_ = new IgrId(); IgrId_default_oneof_instance_ = new IgrIdOneofInstance; IgrAddress::default_instance_ = new IgrAddress(); + AccountPrivacySetting::default_instance_ = new AccountPrivacySetting(); + AccountInfo::default_instance_ = new AccountInfo(); + RestrictionStatus::default_instance_ = new RestrictionStatus(); + AccountPlatformRestrictionInfo::default_instance_ = new AccountPlatformRestrictionInfo(); AccountId::default_instance_->InitAsDefaultInstance(); AccountLicense::default_instance_->InitAsDefaultInstance(); GameAccountHandle::default_instance_->InitAsDefaultInstance(); @@ -1197,6 +1331,10 @@ void protobuf_AddDesc_account_5ftypes_2eproto() { AuthorizedData::default_instance_->InitAsDefaultInstance(); IgrId::default_instance_->InitAsDefaultInstance(); IgrAddress::default_instance_->InitAsDefaultInstance(); + AccountPrivacySetting::default_instance_->InitAsDefaultInstance(); + AccountInfo::default_instance_->InitAsDefaultInstance(); + RestrictionStatus::default_instance_->InitAsDefaultInstance(); + AccountPlatformRestrictionInfo::default_instance_->InitAsDefaultInstance(); ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_account_5ftypes_2eproto); } @@ -4130,6 +4268,362 @@ void IgrAddress::Swap(IgrAddress* other) { return metadata; } +// =================================================================== + +#ifndef _MSC_VER +const int AccountPrivacySetting::kIsUsingRidFieldNumber; +const int AccountPrivacySetting::kIsVisibleForViewFriendsFieldNumber; +const int AccountPrivacySetting::kIsHiddenFromFriendFinderFieldNumber; +const int AccountPrivacySetting::kOnlyAllowFriendWhispersFieldNumber; +#endif // !_MSC_VER + +AccountPrivacySetting::AccountPrivacySetting() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.account.v1.AccountPrivacySetting) +} + +void AccountPrivacySetting::InitAsDefaultInstance() { +} + +AccountPrivacySetting::AccountPrivacySetting(const AccountPrivacySetting& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.account.v1.AccountPrivacySetting) +} + +void AccountPrivacySetting::SharedCtor() { + _cached_size_ = 0; + is_using_rid_ = false; + is_visible_for_view_friends_ = false; + is_hidden_from_friend_finder_ = false; + only_allow_friend_whispers_ = false; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +AccountPrivacySetting::~AccountPrivacySetting() { + // @@protoc_insertion_point(destructor:bgs.protocol.account.v1.AccountPrivacySetting) + SharedDtor(); +} + +void AccountPrivacySetting::SharedDtor() { + if (this != default_instance_) { + } +} + +void AccountPrivacySetting::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* AccountPrivacySetting::descriptor() { + protobuf_AssignDescriptorsOnce(); + return AccountPrivacySetting_descriptor_; +} + +const AccountPrivacySetting& AccountPrivacySetting::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_account_5ftypes_2eproto(); + return *default_instance_; +} + +AccountPrivacySetting* AccountPrivacySetting::default_instance_ = NULL; + +AccountPrivacySetting* AccountPrivacySetting::New() const { + return new AccountPrivacySetting; +} + +void AccountPrivacySetting::Swap(AccountPrivacySetting* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata AccountPrivacySetting::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = AccountPrivacySetting_descriptor_; + metadata.reflection = AccountPrivacySetting_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int AccountInfo::kBattleTagFieldNumber; +const int AccountInfo::kEmailFieldNumber; +const int AccountInfo::kPhoneNumberFieldNumber; +const int AccountInfo::kFullNameFieldNumber; +const int AccountInfo::kBirthdateFieldNumber; +const int AccountInfo::kCountryFieldNumber; +const int AccountInfo::kDefaultCurrencyFieldNumber; +const int AccountInfo::kPreferredRegionFieldNumber; +const int AccountInfo::kRatingsBoardMinimumAgeFieldNumber; +const int AccountInfo::kHasParentalControlFieldNumber; +const int AccountInfo::kIsEmailVerifiedFieldNumber; +const int AccountInfo::kIsSmsProtectedFieldNumber; +const int AccountInfo::kIsHeadlessAccountFieldNumber; +const int AccountInfo::kIsEmployeeFieldNumber; +const int AccountInfo::kIsTestAccountFieldNumber; +const int AccountInfo::kPrivacySettingFieldNumber; +#endif // !_MSC_VER + +AccountInfo::AccountInfo() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.account.v1.AccountInfo) +} + +void AccountInfo::InitAsDefaultInstance() { + privacy_setting_ = const_cast< ::bgs::protocol::account::v1::AccountPrivacySetting*>(&::bgs::protocol::account::v1::AccountPrivacySetting::default_instance()); +} + +AccountInfo::AccountInfo(const AccountInfo& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.account.v1.AccountInfo) +} + +void AccountInfo::SharedCtor() { + ::google::protobuf::internal::GetEmptyString(); + _cached_size_ = 0; + battle_tag_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + email_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + phone_number_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + full_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + birthdate_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + country_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + default_currency_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + preferred_region_ = 0u; + ratings_board_minimum_age_ = 0u; + has_parental_control_ = false; + is_email_verified_ = false; + is_sms_protected_ = false; + is_headless_account_ = false; + is_employee_ = false; + is_test_account_ = false; + privacy_setting_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +AccountInfo::~AccountInfo() { + // @@protoc_insertion_point(destructor:bgs.protocol.account.v1.AccountInfo) + SharedDtor(); +} + +void AccountInfo::SharedDtor() { + if (battle_tag_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete battle_tag_; + } + if (email_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete email_; + } + if (phone_number_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete phone_number_; + } + if (full_name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete full_name_; + } + if (birthdate_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete birthdate_; + } + if (country_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete country_; + } + if (default_currency_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete default_currency_; + } + if (this != default_instance_) { + delete privacy_setting_; + } +} + +void AccountInfo::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* AccountInfo::descriptor() { + protobuf_AssignDescriptorsOnce(); + return AccountInfo_descriptor_; +} + +const AccountInfo& AccountInfo::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_account_5ftypes_2eproto(); + return *default_instance_; +} + +AccountInfo* AccountInfo::default_instance_ = NULL; + +AccountInfo* AccountInfo::New() const { + return new AccountInfo; +} + +void AccountInfo::Swap(AccountInfo* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata AccountInfo::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = AccountInfo_descriptor_; + metadata.reflection = AccountInfo_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int RestrictionStatus::kActiveFieldNumber; +const int RestrictionStatus::kExpirationUsFieldNumber; +#endif // !_MSC_VER + +RestrictionStatus::RestrictionStatus() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.account.v1.RestrictionStatus) +} + +void RestrictionStatus::InitAsDefaultInstance() { +} + +RestrictionStatus::RestrictionStatus(const RestrictionStatus& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.account.v1.RestrictionStatus) +} + +void RestrictionStatus::SharedCtor() { + _cached_size_ = 0; + active_ = false; + expiration_us_ = GOOGLE_ULONGLONG(0); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +RestrictionStatus::~RestrictionStatus() { + // @@protoc_insertion_point(destructor:bgs.protocol.account.v1.RestrictionStatus) + SharedDtor(); +} + +void RestrictionStatus::SharedDtor() { + if (this != default_instance_) { + } +} + +void RestrictionStatus::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* RestrictionStatus::descriptor() { + protobuf_AssignDescriptorsOnce(); + return RestrictionStatus_descriptor_; +} + +const RestrictionStatus& RestrictionStatus::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_account_5ftypes_2eproto(); + return *default_instance_; +} + +RestrictionStatus* RestrictionStatus::default_instance_ = NULL; + +RestrictionStatus* RestrictionStatus::New() const { + return new RestrictionStatus; +} + +void RestrictionStatus::Swap(RestrictionStatus* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata RestrictionStatus::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = RestrictionStatus_descriptor_; + metadata.reflection = RestrictionStatus_reflection_; + return metadata; +} + +// =================================================================== + +#ifndef _MSC_VER +const int AccountPlatformRestrictionInfo::kSquelchedFieldNumber; +const int AccountPlatformRestrictionInfo::kLegalCountryFeatureRestrictionsAppliedFieldNumber; +#endif // !_MSC_VER + +AccountPlatformRestrictionInfo::AccountPlatformRestrictionInfo() + : ::google::protobuf::Message() { + SharedCtor(); + // @@protoc_insertion_point(constructor:bgs.protocol.account.v1.AccountPlatformRestrictionInfo) +} + +void AccountPlatformRestrictionInfo::InitAsDefaultInstance() { + squelched_ = const_cast< ::bgs::protocol::account::v1::RestrictionStatus*>(&::bgs::protocol::account::v1::RestrictionStatus::default_instance()); + legal_country_feature_restrictions_applied_ = const_cast< ::bgs::protocol::account::v1::RestrictionStatus*>(&::bgs::protocol::account::v1::RestrictionStatus::default_instance()); +} + +AccountPlatformRestrictionInfo::AccountPlatformRestrictionInfo(const AccountPlatformRestrictionInfo& from) + : ::google::protobuf::Message() { + SharedCtor(); + MergeFrom(from); + // @@protoc_insertion_point(copy_constructor:bgs.protocol.account.v1.AccountPlatformRestrictionInfo) +} + +void AccountPlatformRestrictionInfo::SharedCtor() { + _cached_size_ = 0; + squelched_ = NULL; + legal_country_feature_restrictions_applied_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +AccountPlatformRestrictionInfo::~AccountPlatformRestrictionInfo() { + // @@protoc_insertion_point(destructor:bgs.protocol.account.v1.AccountPlatformRestrictionInfo) + SharedDtor(); +} + +void AccountPlatformRestrictionInfo::SharedDtor() { + if (this != default_instance_) { + delete squelched_; + delete legal_country_feature_restrictions_applied_; + } +} + +void AccountPlatformRestrictionInfo::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ::google::protobuf::Descriptor* AccountPlatformRestrictionInfo::descriptor() { + protobuf_AssignDescriptorsOnce(); + return AccountPlatformRestrictionInfo_descriptor_; +} + +const AccountPlatformRestrictionInfo& AccountPlatformRestrictionInfo::default_instance() { + if (default_instance_ == NULL) protobuf_AddDesc_account_5ftypes_2eproto(); + return *default_instance_; +} + +AccountPlatformRestrictionInfo* AccountPlatformRestrictionInfo::default_instance_ = NULL; + +AccountPlatformRestrictionInfo* AccountPlatformRestrictionInfo::New() const { + return new AccountPlatformRestrictionInfo; +} + +void AccountPlatformRestrictionInfo::Swap(AccountPlatformRestrictionInfo* other) { + if (other != this) { + GetReflection()->Swap(this, other);} +} + +::google::protobuf::Metadata AccountPlatformRestrictionInfo::GetMetadata() const { + protobuf_AssignDescriptorsOnce(); + ::google::protobuf::Metadata metadata; + metadata.descriptor = AccountPlatformRestrictionInfo_descriptor_; + metadata.reflection = AccountPlatformRestrictionInfo_reflection_; + return metadata; +} + // @@protoc_insertion_point(namespace_scope) } // namespace v1 diff --git a/src/server/proto/Client/account_types.pb.h b/src/server/proto/Client/account_types.pb.h index b40f53fb0e4..8d200d6d925 100644 --- a/src/server/proto/Client/account_types.pb.h +++ b/src/server/proto/Client/account_types.pb.h @@ -76,6 +76,10 @@ class GameAccountStateTagged; class AuthorizedData; class IgrId; class IgrAddress; +class AccountPrivacySetting; +class AccountInfo; +class RestrictionStatus; +class AccountPlatformRestrictionInfo; enum PrivacyInfo_GameInfoPrivacy { PrivacyInfo_GameInfoPrivacy_PRIVACY_ME = 0, @@ -2141,12 +2145,12 @@ class TC_PROTO_API GameLevelInfo : public ::google::protobuf::Message { inline ::google::protobuf::uint32 realm_permissions() const; inline void set_realm_permissions(::google::protobuf::uint32 value); - // optional uint64 last_logout_time_ms = 12; - inline bool has_last_logout_time_ms() const; - inline void clear_last_logout_time_ms(); + // optional uint64 last_logout_time_ms = 12 [deprecated = true]; + inline bool has_last_logout_time_ms() const PROTOBUF_DEPRECATED; + inline void clear_last_logout_time_ms() PROTOBUF_DEPRECATED; static const int kLastLogoutTimeMsFieldNumber = 12; - inline ::google::protobuf::uint64 last_logout_time_ms() const; - inline void set_last_logout_time_ms(::google::protobuf::uint64 value); + inline ::google::protobuf::uint64 last_logout_time_ms() const PROTOBUF_DEPRECATED; + inline void set_last_logout_time_ms(::google::protobuf::uint64 value) PROTOBUF_DEPRECATED; // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.GameLevelInfo) private: @@ -3841,6 +3845,511 @@ class TC_PROTO_API IgrAddress : public ::google::protobuf::Message { void InitAsDefaultInstance(); static IgrAddress* default_instance_; }; +// ------------------------------------------------------------------- + +class TC_PROTO_API AccountPrivacySetting : public ::google::protobuf::Message { + public: + AccountPrivacySetting(); + virtual ~AccountPrivacySetting(); + + AccountPrivacySetting(const AccountPrivacySetting& from); + + inline AccountPrivacySetting& operator=(const AccountPrivacySetting& 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 AccountPrivacySetting& default_instance(); + + void Swap(AccountPrivacySetting* other); + + // implements Message ---------------------------------------------- + + AccountPrivacySetting* 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 bool is_using_rid = 1; + inline bool has_is_using_rid() const; + inline void clear_is_using_rid(); + static const int kIsUsingRidFieldNumber = 1; + inline bool is_using_rid() const; + inline void set_is_using_rid(bool value); + + // optional bool is_visible_for_view_friends = 2; + inline bool has_is_visible_for_view_friends() const; + inline void clear_is_visible_for_view_friends(); + static const int kIsVisibleForViewFriendsFieldNumber = 2; + inline bool is_visible_for_view_friends() const; + inline void set_is_visible_for_view_friends(bool value); + + // optional bool is_hidden_from_friend_finder = 3; + inline bool has_is_hidden_from_friend_finder() const; + inline void clear_is_hidden_from_friend_finder(); + static const int kIsHiddenFromFriendFinderFieldNumber = 3; + inline bool is_hidden_from_friend_finder() const; + inline void set_is_hidden_from_friend_finder(bool value); + + // optional bool only_allow_friend_whispers = 4; + inline bool has_only_allow_friend_whispers() const; + inline void clear_only_allow_friend_whispers(); + static const int kOnlyAllowFriendWhispersFieldNumber = 4; + inline bool only_allow_friend_whispers() const; + inline void set_only_allow_friend_whispers(bool value); + + // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.AccountPrivacySetting) + private: + inline void set_has_is_using_rid(); + inline void clear_has_is_using_rid(); + inline void set_has_is_visible_for_view_friends(); + inline void clear_has_is_visible_for_view_friends(); + inline void set_has_is_hidden_from_friend_finder(); + inline void clear_has_is_hidden_from_friend_finder(); + inline void set_has_only_allow_friend_whispers(); + inline void clear_has_only_allow_friend_whispers(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + bool is_using_rid_; + bool is_visible_for_view_friends_; + bool is_hidden_from_friend_finder_; + bool only_allow_friend_whispers_; + friend void TC_PROTO_API protobuf_AddDesc_account_5ftypes_2eproto(); + friend void protobuf_AssignDesc_account_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_account_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static AccountPrivacySetting* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API AccountInfo : public ::google::protobuf::Message { + public: + AccountInfo(); + virtual ~AccountInfo(); + + AccountInfo(const AccountInfo& from); + + inline AccountInfo& operator=(const AccountInfo& 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 AccountInfo& default_instance(); + + void Swap(AccountInfo* other); + + // implements Message ---------------------------------------------- + + AccountInfo* 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 battle_tag = 1; + inline bool has_battle_tag() const; + inline void clear_battle_tag(); + static const int kBattleTagFieldNumber = 1; + inline const ::std::string& battle_tag() const; + inline void set_battle_tag(const ::std::string& value); + inline void set_battle_tag(const char* value); + inline void set_battle_tag(const char* value, size_t size); + inline ::std::string* mutable_battle_tag(); + inline ::std::string* release_battle_tag(); + inline void set_allocated_battle_tag(::std::string* battle_tag); + + // optional string email = 2; + inline bool has_email() const; + inline void clear_email(); + static const int kEmailFieldNumber = 2; + inline const ::std::string& email() const; + inline void set_email(const ::std::string& value); + inline void set_email(const char* value); + inline void set_email(const char* value, size_t size); + inline ::std::string* mutable_email(); + inline ::std::string* release_email(); + inline void set_allocated_email(::std::string* email); + + // optional string phone_number = 3; + inline bool has_phone_number() const; + inline void clear_phone_number(); + static const int kPhoneNumberFieldNumber = 3; + inline const ::std::string& phone_number() const; + inline void set_phone_number(const ::std::string& value); + inline void set_phone_number(const char* value); + inline void set_phone_number(const char* value, size_t size); + inline ::std::string* mutable_phone_number(); + inline ::std::string* release_phone_number(); + inline void set_allocated_phone_number(::std::string* phone_number); + + // optional string full_name = 4; + inline bool has_full_name() const; + inline void clear_full_name(); + static const int kFullNameFieldNumber = 4; + inline const ::std::string& full_name() const; + inline void set_full_name(const ::std::string& value); + inline void set_full_name(const char* value); + inline void set_full_name(const char* value, size_t size); + inline ::std::string* mutable_full_name(); + inline ::std::string* release_full_name(); + inline void set_allocated_full_name(::std::string* full_name); + + // optional string birthdate = 5; + inline bool has_birthdate() const; + inline void clear_birthdate(); + static const int kBirthdateFieldNumber = 5; + inline const ::std::string& birthdate() const; + inline void set_birthdate(const ::std::string& value); + inline void set_birthdate(const char* value); + inline void set_birthdate(const char* value, size_t size); + inline ::std::string* mutable_birthdate(); + inline ::std::string* release_birthdate(); + inline void set_allocated_birthdate(::std::string* birthdate); + + // optional string country = 6; + inline bool has_country() const; + inline void clear_country(); + static const int kCountryFieldNumber = 6; + inline const ::std::string& country() const; + inline void set_country(const ::std::string& value); + inline void set_country(const char* value); + inline void set_country(const char* value, size_t size); + inline ::std::string* mutable_country(); + inline ::std::string* release_country(); + inline void set_allocated_country(::std::string* country); + + // optional string default_currency = 7; + inline bool has_default_currency() const; + inline void clear_default_currency(); + static const int kDefaultCurrencyFieldNumber = 7; + inline const ::std::string& default_currency() const; + inline void set_default_currency(const ::std::string& value); + inline void set_default_currency(const char* value); + inline void set_default_currency(const char* value, size_t size); + inline ::std::string* mutable_default_currency(); + inline ::std::string* release_default_currency(); + inline void set_allocated_default_currency(::std::string* default_currency); + + // optional uint32 preferred_region = 8; + inline bool has_preferred_region() const; + inline void clear_preferred_region(); + static const int kPreferredRegionFieldNumber = 8; + inline ::google::protobuf::uint32 preferred_region() const; + inline void set_preferred_region(::google::protobuf::uint32 value); + + // optional uint32 ratings_board_minimum_age = 9; + inline bool has_ratings_board_minimum_age() const; + inline void clear_ratings_board_minimum_age(); + static const int kRatingsBoardMinimumAgeFieldNumber = 9; + inline ::google::protobuf::uint32 ratings_board_minimum_age() const; + inline void set_ratings_board_minimum_age(::google::protobuf::uint32 value); + + // optional bool has_parental_control = 10; + inline bool has_has_parental_control() const; + inline void clear_has_parental_control(); + static const int kHasParentalControlFieldNumber = 10; + inline bool has_parental_control() const; + inline void set_has_parental_control(bool value); + + // optional bool is_email_verified = 11; + inline bool has_is_email_verified() const; + inline void clear_is_email_verified(); + static const int kIsEmailVerifiedFieldNumber = 11; + inline bool is_email_verified() const; + inline void set_is_email_verified(bool value); + + // optional bool is_sms_protected = 12; + inline bool has_is_sms_protected() const; + inline void clear_is_sms_protected(); + static const int kIsSmsProtectedFieldNumber = 12; + inline bool is_sms_protected() const; + inline void set_is_sms_protected(bool value); + + // optional bool is_headless_account = 13; + inline bool has_is_headless_account() const; + inline void clear_is_headless_account(); + static const int kIsHeadlessAccountFieldNumber = 13; + inline bool is_headless_account() const; + inline void set_is_headless_account(bool value); + + // optional bool is_employee = 14; + inline bool has_is_employee() const; + inline void clear_is_employee(); + static const int kIsEmployeeFieldNumber = 14; + inline bool is_employee() const; + inline void set_is_employee(bool value); + + // optional bool is_test_account = 15; + inline bool has_is_test_account() const; + inline void clear_is_test_account(); + static const int kIsTestAccountFieldNumber = 15; + inline bool is_test_account() const; + inline void set_is_test_account(bool value); + + // optional .bgs.protocol.account.v1.AccountPrivacySetting privacy_setting = 16; + inline bool has_privacy_setting() const; + inline void clear_privacy_setting(); + static const int kPrivacySettingFieldNumber = 16; + inline const ::bgs::protocol::account::v1::AccountPrivacySetting& privacy_setting() const; + inline ::bgs::protocol::account::v1::AccountPrivacySetting* mutable_privacy_setting(); + inline ::bgs::protocol::account::v1::AccountPrivacySetting* release_privacy_setting(); + inline void set_allocated_privacy_setting(::bgs::protocol::account::v1::AccountPrivacySetting* privacy_setting); + + // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.AccountInfo) + private: + inline void set_has_battle_tag(); + inline void clear_has_battle_tag(); + inline void set_has_email(); + inline void clear_has_email(); + inline void set_has_phone_number(); + inline void clear_has_phone_number(); + inline void set_has_full_name(); + inline void clear_has_full_name(); + inline void set_has_birthdate(); + inline void clear_has_birthdate(); + inline void set_has_country(); + inline void clear_has_country(); + inline void set_has_default_currency(); + inline void clear_has_default_currency(); + inline void set_has_preferred_region(); + inline void clear_has_preferred_region(); + inline void set_has_ratings_board_minimum_age(); + inline void clear_has_ratings_board_minimum_age(); + inline void set_has_has_parental_control(); + inline void clear_has_has_parental_control(); + inline void set_has_is_email_verified(); + inline void clear_has_is_email_verified(); + inline void set_has_is_sms_protected(); + inline void clear_has_is_sms_protected(); + inline void set_has_is_headless_account(); + inline void clear_has_is_headless_account(); + inline void set_has_is_employee(); + inline void clear_has_is_employee(); + inline void set_has_is_test_account(); + inline void clear_has_is_test_account(); + inline void set_has_privacy_setting(); + inline void clear_has_privacy_setting(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::std::string* battle_tag_; + ::std::string* email_; + ::std::string* phone_number_; + ::std::string* full_name_; + ::std::string* birthdate_; + ::std::string* country_; + ::std::string* default_currency_; + ::google::protobuf::uint32 preferred_region_; + ::google::protobuf::uint32 ratings_board_minimum_age_; + bool has_parental_control_; + bool is_email_verified_; + bool is_sms_protected_; + bool is_headless_account_; + bool is_employee_; + bool is_test_account_; + ::bgs::protocol::account::v1::AccountPrivacySetting* privacy_setting_; + friend void TC_PROTO_API protobuf_AddDesc_account_5ftypes_2eproto(); + friend void protobuf_AssignDesc_account_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_account_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static AccountInfo* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API RestrictionStatus : public ::google::protobuf::Message { + public: + RestrictionStatus(); + virtual ~RestrictionStatus(); + + RestrictionStatus(const RestrictionStatus& from); + + inline RestrictionStatus& operator=(const RestrictionStatus& 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 RestrictionStatus& default_instance(); + + void Swap(RestrictionStatus* other); + + // implements Message ---------------------------------------------- + + RestrictionStatus* 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 bool active = 1; + inline bool has_active() const; + inline void clear_active(); + static const int kActiveFieldNumber = 1; + inline bool active() const; + inline void set_active(bool value); + + // optional uint64 expiration_us = 2; + inline bool has_expiration_us() const; + inline void clear_expiration_us(); + static const int kExpirationUsFieldNumber = 2; + inline ::google::protobuf::uint64 expiration_us() const; + inline void set_expiration_us(::google::protobuf::uint64 value); + + // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.RestrictionStatus) + private: + inline void set_has_active(); + inline void clear_has_active(); + inline void set_has_expiration_us(); + inline void clear_has_expiration_us(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::google::protobuf::uint64 expiration_us_; + bool active_; + friend void TC_PROTO_API protobuf_AddDesc_account_5ftypes_2eproto(); + friend void protobuf_AssignDesc_account_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_account_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static RestrictionStatus* default_instance_; +}; +// ------------------------------------------------------------------- + +class TC_PROTO_API AccountPlatformRestrictionInfo : public ::google::protobuf::Message { + public: + AccountPlatformRestrictionInfo(); + virtual ~AccountPlatformRestrictionInfo(); + + AccountPlatformRestrictionInfo(const AccountPlatformRestrictionInfo& from); + + inline AccountPlatformRestrictionInfo& operator=(const AccountPlatformRestrictionInfo& 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 AccountPlatformRestrictionInfo& default_instance(); + + void Swap(AccountPlatformRestrictionInfo* other); + + // implements Message ---------------------------------------------- + + AccountPlatformRestrictionInfo* 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.v1.RestrictionStatus squelched = 2; + inline bool has_squelched() const; + inline void clear_squelched(); + static const int kSquelchedFieldNumber = 2; + inline const ::bgs::protocol::account::v1::RestrictionStatus& squelched() const; + inline ::bgs::protocol::account::v1::RestrictionStatus* mutable_squelched(); + inline ::bgs::protocol::account::v1::RestrictionStatus* release_squelched(); + inline void set_allocated_squelched(::bgs::protocol::account::v1::RestrictionStatus* squelched); + + // optional .bgs.protocol.account.v1.RestrictionStatus legal_country_feature_restrictions_applied = 3; + inline bool has_legal_country_feature_restrictions_applied() const; + inline void clear_legal_country_feature_restrictions_applied(); + static const int kLegalCountryFeatureRestrictionsAppliedFieldNumber = 3; + inline const ::bgs::protocol::account::v1::RestrictionStatus& legal_country_feature_restrictions_applied() const; + inline ::bgs::protocol::account::v1::RestrictionStatus* mutable_legal_country_feature_restrictions_applied(); + inline ::bgs::protocol::account::v1::RestrictionStatus* release_legal_country_feature_restrictions_applied(); + inline void set_allocated_legal_country_feature_restrictions_applied(::bgs::protocol::account::v1::RestrictionStatus* legal_country_feature_restrictions_applied); + + // @@protoc_insertion_point(class_scope:bgs.protocol.account.v1.AccountPlatformRestrictionInfo) + private: + inline void set_has_squelched(); + inline void clear_has_squelched(); + inline void set_has_legal_country_feature_restrictions_applied(); + inline void clear_has_legal_country_feature_restrictions_applied(); + + ::google::protobuf::UnknownFieldSet _unknown_fields_; + + ::google::protobuf::uint32 _has_bits_[1]; + mutable int _cached_size_; + ::bgs::protocol::account::v1::RestrictionStatus* squelched_; + ::bgs::protocol::account::v1::RestrictionStatus* legal_country_feature_restrictions_applied_; + friend void TC_PROTO_API protobuf_AddDesc_account_5ftypes_2eproto(); + friend void protobuf_AssignDesc_account_5ftypes_2eproto(); + friend void protobuf_ShutdownFile_account_5ftypes_2eproto(); + + void InitAsDefaultInstance(); + static AccountPlatformRestrictionInfo* default_instance_; +}; // =================================================================== // =================================================================== @@ -6952,7 +7461,7 @@ inline void GameLevelInfo::set_realm_permissions(::google::protobuf::uint32 valu // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.GameLevelInfo.realm_permissions) } -// optional uint64 last_logout_time_ms = 12; +// optional uint64 last_logout_time_ms = 12 [deprecated = true]; inline bool GameLevelInfo::has_last_logout_time_ms() const { return (_has_bits_[0] & 0x00000100u) != 0; } @@ -9147,6 +9656,1013 @@ inline void IgrAddress::set_region(::google::protobuf::uint32 value) { // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.IgrAddress.region) } +// ------------------------------------------------------------------- + +// AccountPrivacySetting + +// optional bool is_using_rid = 1; +inline bool AccountPrivacySetting::has_is_using_rid() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void AccountPrivacySetting::set_has_is_using_rid() { + _has_bits_[0] |= 0x00000001u; +} +inline void AccountPrivacySetting::clear_has_is_using_rid() { + _has_bits_[0] &= ~0x00000001u; +} +inline void AccountPrivacySetting::clear_is_using_rid() { + is_using_rid_ = false; + clear_has_is_using_rid(); +} +inline bool AccountPrivacySetting::is_using_rid() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountPrivacySetting.is_using_rid) + return is_using_rid_; +} +inline void AccountPrivacySetting::set_is_using_rid(bool value) { + set_has_is_using_rid(); + is_using_rid_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountPrivacySetting.is_using_rid) +} + +// optional bool is_visible_for_view_friends = 2; +inline bool AccountPrivacySetting::has_is_visible_for_view_friends() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void AccountPrivacySetting::set_has_is_visible_for_view_friends() { + _has_bits_[0] |= 0x00000002u; +} +inline void AccountPrivacySetting::clear_has_is_visible_for_view_friends() { + _has_bits_[0] &= ~0x00000002u; +} +inline void AccountPrivacySetting::clear_is_visible_for_view_friends() { + is_visible_for_view_friends_ = false; + clear_has_is_visible_for_view_friends(); +} +inline bool AccountPrivacySetting::is_visible_for_view_friends() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountPrivacySetting.is_visible_for_view_friends) + return is_visible_for_view_friends_; +} +inline void AccountPrivacySetting::set_is_visible_for_view_friends(bool value) { + set_has_is_visible_for_view_friends(); + is_visible_for_view_friends_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountPrivacySetting.is_visible_for_view_friends) +} + +// optional bool is_hidden_from_friend_finder = 3; +inline bool AccountPrivacySetting::has_is_hidden_from_friend_finder() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void AccountPrivacySetting::set_has_is_hidden_from_friend_finder() { + _has_bits_[0] |= 0x00000004u; +} +inline void AccountPrivacySetting::clear_has_is_hidden_from_friend_finder() { + _has_bits_[0] &= ~0x00000004u; +} +inline void AccountPrivacySetting::clear_is_hidden_from_friend_finder() { + is_hidden_from_friend_finder_ = false; + clear_has_is_hidden_from_friend_finder(); +} +inline bool AccountPrivacySetting::is_hidden_from_friend_finder() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountPrivacySetting.is_hidden_from_friend_finder) + return is_hidden_from_friend_finder_; +} +inline void AccountPrivacySetting::set_is_hidden_from_friend_finder(bool value) { + set_has_is_hidden_from_friend_finder(); + is_hidden_from_friend_finder_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountPrivacySetting.is_hidden_from_friend_finder) +} + +// optional bool only_allow_friend_whispers = 4; +inline bool AccountPrivacySetting::has_only_allow_friend_whispers() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void AccountPrivacySetting::set_has_only_allow_friend_whispers() { + _has_bits_[0] |= 0x00000008u; +} +inline void AccountPrivacySetting::clear_has_only_allow_friend_whispers() { + _has_bits_[0] &= ~0x00000008u; +} +inline void AccountPrivacySetting::clear_only_allow_friend_whispers() { + only_allow_friend_whispers_ = false; + clear_has_only_allow_friend_whispers(); +} +inline bool AccountPrivacySetting::only_allow_friend_whispers() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountPrivacySetting.only_allow_friend_whispers) + return only_allow_friend_whispers_; +} +inline void AccountPrivacySetting::set_only_allow_friend_whispers(bool value) { + set_has_only_allow_friend_whispers(); + only_allow_friend_whispers_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountPrivacySetting.only_allow_friend_whispers) +} + +// ------------------------------------------------------------------- + +// AccountInfo + +// optional string battle_tag = 1; +inline bool AccountInfo::has_battle_tag() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void AccountInfo::set_has_battle_tag() { + _has_bits_[0] |= 0x00000001u; +} +inline void AccountInfo::clear_has_battle_tag() { + _has_bits_[0] &= ~0x00000001u; +} +inline void AccountInfo::clear_battle_tag() { + if (battle_tag_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + battle_tag_->clear(); + } + clear_has_battle_tag(); +} +inline const ::std::string& AccountInfo::battle_tag() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.battle_tag) + return *battle_tag_; +} +inline void AccountInfo::set_battle_tag(const ::std::string& value) { + set_has_battle_tag(); + if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + battle_tag_ = new ::std::string; + } + battle_tag_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.battle_tag) +} +inline void AccountInfo::set_battle_tag(const char* value) { + set_has_battle_tag(); + if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + battle_tag_ = new ::std::string; + } + battle_tag_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.account.v1.AccountInfo.battle_tag) +} +inline void AccountInfo::set_battle_tag(const char* value, size_t size) { + set_has_battle_tag(); + if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + battle_tag_ = new ::std::string; + } + battle_tag_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.account.v1.AccountInfo.battle_tag) +} +inline ::std::string* AccountInfo::mutable_battle_tag() { + set_has_battle_tag(); + if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + battle_tag_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountInfo.battle_tag) + return battle_tag_; +} +inline ::std::string* AccountInfo::release_battle_tag() { + clear_has_battle_tag(); + if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = battle_tag_; + battle_tag_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void AccountInfo::set_allocated_battle_tag(::std::string* battle_tag) { + if (battle_tag_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete battle_tag_; + } + if (battle_tag) { + set_has_battle_tag(); + battle_tag_ = battle_tag; + } else { + clear_has_battle_tag(); + battle_tag_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountInfo.battle_tag) +} + +// optional string email = 2; +inline bool AccountInfo::has_email() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void AccountInfo::set_has_email() { + _has_bits_[0] |= 0x00000002u; +} +inline void AccountInfo::clear_has_email() { + _has_bits_[0] &= ~0x00000002u; +} +inline void AccountInfo::clear_email() { + if (email_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + email_->clear(); + } + clear_has_email(); +} +inline const ::std::string& AccountInfo::email() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.email) + return *email_; +} +inline void AccountInfo::set_email(const ::std::string& value) { + set_has_email(); + if (email_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + email_ = new ::std::string; + } + email_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.email) +} +inline void AccountInfo::set_email(const char* value) { + set_has_email(); + if (email_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + email_ = new ::std::string; + } + email_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.account.v1.AccountInfo.email) +} +inline void AccountInfo::set_email(const char* value, size_t size) { + set_has_email(); + if (email_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + email_ = new ::std::string; + } + email_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.account.v1.AccountInfo.email) +} +inline ::std::string* AccountInfo::mutable_email() { + set_has_email(); + if (email_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + email_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountInfo.email) + return email_; +} +inline ::std::string* AccountInfo::release_email() { + clear_has_email(); + if (email_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = email_; + email_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void AccountInfo::set_allocated_email(::std::string* email) { + if (email_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete email_; + } + if (email) { + set_has_email(); + email_ = email; + } else { + clear_has_email(); + email_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountInfo.email) +} + +// optional string phone_number = 3; +inline bool AccountInfo::has_phone_number() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void AccountInfo::set_has_phone_number() { + _has_bits_[0] |= 0x00000004u; +} +inline void AccountInfo::clear_has_phone_number() { + _has_bits_[0] &= ~0x00000004u; +} +inline void AccountInfo::clear_phone_number() { + if (phone_number_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + phone_number_->clear(); + } + clear_has_phone_number(); +} +inline const ::std::string& AccountInfo::phone_number() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.phone_number) + return *phone_number_; +} +inline void AccountInfo::set_phone_number(const ::std::string& value) { + set_has_phone_number(); + if (phone_number_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + phone_number_ = new ::std::string; + } + phone_number_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.phone_number) +} +inline void AccountInfo::set_phone_number(const char* value) { + set_has_phone_number(); + if (phone_number_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + phone_number_ = new ::std::string; + } + phone_number_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.account.v1.AccountInfo.phone_number) +} +inline void AccountInfo::set_phone_number(const char* value, size_t size) { + set_has_phone_number(); + if (phone_number_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + phone_number_ = new ::std::string; + } + phone_number_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.account.v1.AccountInfo.phone_number) +} +inline ::std::string* AccountInfo::mutable_phone_number() { + set_has_phone_number(); + if (phone_number_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + phone_number_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountInfo.phone_number) + return phone_number_; +} +inline ::std::string* AccountInfo::release_phone_number() { + clear_has_phone_number(); + if (phone_number_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = phone_number_; + phone_number_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void AccountInfo::set_allocated_phone_number(::std::string* phone_number) { + if (phone_number_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete phone_number_; + } + if (phone_number) { + set_has_phone_number(); + phone_number_ = phone_number; + } else { + clear_has_phone_number(); + phone_number_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountInfo.phone_number) +} + +// optional string full_name = 4; +inline bool AccountInfo::has_full_name() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void AccountInfo::set_has_full_name() { + _has_bits_[0] |= 0x00000008u; +} +inline void AccountInfo::clear_has_full_name() { + _has_bits_[0] &= ~0x00000008u; +} +inline void AccountInfo::clear_full_name() { + if (full_name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + full_name_->clear(); + } + clear_has_full_name(); +} +inline const ::std::string& AccountInfo::full_name() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.full_name) + return *full_name_; +} +inline void AccountInfo::set_full_name(const ::std::string& value) { + set_has_full_name(); + if (full_name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + full_name_ = new ::std::string; + } + full_name_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.full_name) +} +inline void AccountInfo::set_full_name(const char* value) { + set_has_full_name(); + if (full_name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + full_name_ = new ::std::string; + } + full_name_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.account.v1.AccountInfo.full_name) +} +inline void AccountInfo::set_full_name(const char* value, size_t size) { + set_has_full_name(); + if (full_name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + full_name_ = new ::std::string; + } + full_name_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.account.v1.AccountInfo.full_name) +} +inline ::std::string* AccountInfo::mutable_full_name() { + set_has_full_name(); + if (full_name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + full_name_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountInfo.full_name) + return full_name_; +} +inline ::std::string* AccountInfo::release_full_name() { + clear_has_full_name(); + if (full_name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = full_name_; + full_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void AccountInfo::set_allocated_full_name(::std::string* full_name) { + if (full_name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete full_name_; + } + if (full_name) { + set_has_full_name(); + full_name_ = full_name; + } else { + clear_has_full_name(); + full_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountInfo.full_name) +} + +// optional string birthdate = 5; +inline bool AccountInfo::has_birthdate() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void AccountInfo::set_has_birthdate() { + _has_bits_[0] |= 0x00000010u; +} +inline void AccountInfo::clear_has_birthdate() { + _has_bits_[0] &= ~0x00000010u; +} +inline void AccountInfo::clear_birthdate() { + if (birthdate_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + birthdate_->clear(); + } + clear_has_birthdate(); +} +inline const ::std::string& AccountInfo::birthdate() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.birthdate) + return *birthdate_; +} +inline void AccountInfo::set_birthdate(const ::std::string& value) { + set_has_birthdate(); + if (birthdate_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + birthdate_ = new ::std::string; + } + birthdate_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.birthdate) +} +inline void AccountInfo::set_birthdate(const char* value) { + set_has_birthdate(); + if (birthdate_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + birthdate_ = new ::std::string; + } + birthdate_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.account.v1.AccountInfo.birthdate) +} +inline void AccountInfo::set_birthdate(const char* value, size_t size) { + set_has_birthdate(); + if (birthdate_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + birthdate_ = new ::std::string; + } + birthdate_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.account.v1.AccountInfo.birthdate) +} +inline ::std::string* AccountInfo::mutable_birthdate() { + set_has_birthdate(); + if (birthdate_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + birthdate_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountInfo.birthdate) + return birthdate_; +} +inline ::std::string* AccountInfo::release_birthdate() { + clear_has_birthdate(); + if (birthdate_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = birthdate_; + birthdate_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void AccountInfo::set_allocated_birthdate(::std::string* birthdate) { + if (birthdate_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete birthdate_; + } + if (birthdate) { + set_has_birthdate(); + birthdate_ = birthdate; + } else { + clear_has_birthdate(); + birthdate_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountInfo.birthdate) +} + +// optional string country = 6; +inline bool AccountInfo::has_country() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void AccountInfo::set_has_country() { + _has_bits_[0] |= 0x00000020u; +} +inline void AccountInfo::clear_has_country() { + _has_bits_[0] &= ~0x00000020u; +} +inline void AccountInfo::clear_country() { + if (country_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + country_->clear(); + } + clear_has_country(); +} +inline const ::std::string& AccountInfo::country() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.country) + return *country_; +} +inline void AccountInfo::set_country(const ::std::string& value) { + set_has_country(); + if (country_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + country_ = new ::std::string; + } + country_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.country) +} +inline void AccountInfo::set_country(const char* value) { + set_has_country(); + if (country_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + country_ = new ::std::string; + } + country_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.account.v1.AccountInfo.country) +} +inline void AccountInfo::set_country(const char* value, size_t size) { + set_has_country(); + if (country_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + country_ = new ::std::string; + } + country_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.account.v1.AccountInfo.country) +} +inline ::std::string* AccountInfo::mutable_country() { + set_has_country(); + if (country_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + country_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountInfo.country) + return country_; +} +inline ::std::string* AccountInfo::release_country() { + clear_has_country(); + if (country_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = country_; + country_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void AccountInfo::set_allocated_country(::std::string* country) { + if (country_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete country_; + } + if (country) { + set_has_country(); + country_ = country; + } else { + clear_has_country(); + country_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountInfo.country) +} + +// optional string default_currency = 7; +inline bool AccountInfo::has_default_currency() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void AccountInfo::set_has_default_currency() { + _has_bits_[0] |= 0x00000040u; +} +inline void AccountInfo::clear_has_default_currency() { + _has_bits_[0] &= ~0x00000040u; +} +inline void AccountInfo::clear_default_currency() { + if (default_currency_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + default_currency_->clear(); + } + clear_has_default_currency(); +} +inline const ::std::string& AccountInfo::default_currency() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.default_currency) + return *default_currency_; +} +inline void AccountInfo::set_default_currency(const ::std::string& value) { + set_has_default_currency(); + if (default_currency_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + default_currency_ = new ::std::string; + } + default_currency_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.default_currency) +} +inline void AccountInfo::set_default_currency(const char* value) { + set_has_default_currency(); + if (default_currency_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + default_currency_ = new ::std::string; + } + default_currency_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.account.v1.AccountInfo.default_currency) +} +inline void AccountInfo::set_default_currency(const char* value, size_t size) { + set_has_default_currency(); + if (default_currency_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + default_currency_ = new ::std::string; + } + default_currency_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.account.v1.AccountInfo.default_currency) +} +inline ::std::string* AccountInfo::mutable_default_currency() { + set_has_default_currency(); + if (default_currency_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + default_currency_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountInfo.default_currency) + return default_currency_; +} +inline ::std::string* AccountInfo::release_default_currency() { + clear_has_default_currency(); + if (default_currency_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = default_currency_; + default_currency_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void AccountInfo::set_allocated_default_currency(::std::string* default_currency) { + if (default_currency_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete default_currency_; + } + if (default_currency) { + set_has_default_currency(); + default_currency_ = default_currency; + } else { + clear_has_default_currency(); + default_currency_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountInfo.default_currency) +} + +// optional uint32 preferred_region = 8; +inline bool AccountInfo::has_preferred_region() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void AccountInfo::set_has_preferred_region() { + _has_bits_[0] |= 0x00000080u; +} +inline void AccountInfo::clear_has_preferred_region() { + _has_bits_[0] &= ~0x00000080u; +} +inline void AccountInfo::clear_preferred_region() { + preferred_region_ = 0u; + clear_has_preferred_region(); +} +inline ::google::protobuf::uint32 AccountInfo::preferred_region() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.preferred_region) + return preferred_region_; +} +inline void AccountInfo::set_preferred_region(::google::protobuf::uint32 value) { + set_has_preferred_region(); + preferred_region_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.preferred_region) +} + +// optional uint32 ratings_board_minimum_age = 9; +inline bool AccountInfo::has_ratings_board_minimum_age() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void AccountInfo::set_has_ratings_board_minimum_age() { + _has_bits_[0] |= 0x00000100u; +} +inline void AccountInfo::clear_has_ratings_board_minimum_age() { + _has_bits_[0] &= ~0x00000100u; +} +inline void AccountInfo::clear_ratings_board_minimum_age() { + ratings_board_minimum_age_ = 0u; + clear_has_ratings_board_minimum_age(); +} +inline ::google::protobuf::uint32 AccountInfo::ratings_board_minimum_age() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.ratings_board_minimum_age) + return ratings_board_minimum_age_; +} +inline void AccountInfo::set_ratings_board_minimum_age(::google::protobuf::uint32 value) { + set_has_ratings_board_minimum_age(); + ratings_board_minimum_age_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.ratings_board_minimum_age) +} + +// optional bool has_parental_control = 10; +inline bool AccountInfo::has_has_parental_control() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void AccountInfo::set_has_has_parental_control() { + _has_bits_[0] |= 0x00000200u; +} +inline void AccountInfo::clear_has_has_parental_control() { + _has_bits_[0] &= ~0x00000200u; +} +inline void AccountInfo::clear_has_parental_control() { + has_parental_control_ = false; + clear_has_has_parental_control(); +} +inline bool AccountInfo::has_parental_control() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.has_parental_control) + return has_parental_control_; +} +inline void AccountInfo::set_has_parental_control(bool value) { + set_has_has_parental_control(); + has_parental_control_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.has_parental_control) +} + +// optional bool is_email_verified = 11; +inline bool AccountInfo::has_is_email_verified() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void AccountInfo::set_has_is_email_verified() { + _has_bits_[0] |= 0x00000400u; +} +inline void AccountInfo::clear_has_is_email_verified() { + _has_bits_[0] &= ~0x00000400u; +} +inline void AccountInfo::clear_is_email_verified() { + is_email_verified_ = false; + clear_has_is_email_verified(); +} +inline bool AccountInfo::is_email_verified() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.is_email_verified) + return is_email_verified_; +} +inline void AccountInfo::set_is_email_verified(bool value) { + set_has_is_email_verified(); + is_email_verified_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.is_email_verified) +} + +// optional bool is_sms_protected = 12; +inline bool AccountInfo::has_is_sms_protected() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void AccountInfo::set_has_is_sms_protected() { + _has_bits_[0] |= 0x00000800u; +} +inline void AccountInfo::clear_has_is_sms_protected() { + _has_bits_[0] &= ~0x00000800u; +} +inline void AccountInfo::clear_is_sms_protected() { + is_sms_protected_ = false; + clear_has_is_sms_protected(); +} +inline bool AccountInfo::is_sms_protected() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.is_sms_protected) + return is_sms_protected_; +} +inline void AccountInfo::set_is_sms_protected(bool value) { + set_has_is_sms_protected(); + is_sms_protected_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.is_sms_protected) +} + +// optional bool is_headless_account = 13; +inline bool AccountInfo::has_is_headless_account() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void AccountInfo::set_has_is_headless_account() { + _has_bits_[0] |= 0x00001000u; +} +inline void AccountInfo::clear_has_is_headless_account() { + _has_bits_[0] &= ~0x00001000u; +} +inline void AccountInfo::clear_is_headless_account() { + is_headless_account_ = false; + clear_has_is_headless_account(); +} +inline bool AccountInfo::is_headless_account() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.is_headless_account) + return is_headless_account_; +} +inline void AccountInfo::set_is_headless_account(bool value) { + set_has_is_headless_account(); + is_headless_account_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.is_headless_account) +} + +// optional bool is_employee = 14; +inline bool AccountInfo::has_is_employee() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void AccountInfo::set_has_is_employee() { + _has_bits_[0] |= 0x00002000u; +} +inline void AccountInfo::clear_has_is_employee() { + _has_bits_[0] &= ~0x00002000u; +} +inline void AccountInfo::clear_is_employee() { + is_employee_ = false; + clear_has_is_employee(); +} +inline bool AccountInfo::is_employee() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.is_employee) + return is_employee_; +} +inline void AccountInfo::set_is_employee(bool value) { + set_has_is_employee(); + is_employee_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.is_employee) +} + +// optional bool is_test_account = 15; +inline bool AccountInfo::has_is_test_account() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void AccountInfo::set_has_is_test_account() { + _has_bits_[0] |= 0x00004000u; +} +inline void AccountInfo::clear_has_is_test_account() { + _has_bits_[0] &= ~0x00004000u; +} +inline void AccountInfo::clear_is_test_account() { + is_test_account_ = false; + clear_has_is_test_account(); +} +inline bool AccountInfo::is_test_account() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.is_test_account) + return is_test_account_; +} +inline void AccountInfo::set_is_test_account(bool value) { + set_has_is_test_account(); + is_test_account_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.AccountInfo.is_test_account) +} + +// optional .bgs.protocol.account.v1.AccountPrivacySetting privacy_setting = 16; +inline bool AccountInfo::has_privacy_setting() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void AccountInfo::set_has_privacy_setting() { + _has_bits_[0] |= 0x00008000u; +} +inline void AccountInfo::clear_has_privacy_setting() { + _has_bits_[0] &= ~0x00008000u; +} +inline void AccountInfo::clear_privacy_setting() { + if (privacy_setting_ != NULL) privacy_setting_->::bgs::protocol::account::v1::AccountPrivacySetting::Clear(); + clear_has_privacy_setting(); +} +inline const ::bgs::protocol::account::v1::AccountPrivacySetting& AccountInfo::privacy_setting() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountInfo.privacy_setting) + return privacy_setting_ != NULL ? *privacy_setting_ : *default_instance_->privacy_setting_; +} +inline ::bgs::protocol::account::v1::AccountPrivacySetting* AccountInfo::mutable_privacy_setting() { + set_has_privacy_setting(); + if (privacy_setting_ == NULL) privacy_setting_ = new ::bgs::protocol::account::v1::AccountPrivacySetting; + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountInfo.privacy_setting) + return privacy_setting_; +} +inline ::bgs::protocol::account::v1::AccountPrivacySetting* AccountInfo::release_privacy_setting() { + clear_has_privacy_setting(); + ::bgs::protocol::account::v1::AccountPrivacySetting* temp = privacy_setting_; + privacy_setting_ = NULL; + return temp; +} +inline void AccountInfo::set_allocated_privacy_setting(::bgs::protocol::account::v1::AccountPrivacySetting* privacy_setting) { + delete privacy_setting_; + privacy_setting_ = privacy_setting; + if (privacy_setting) { + set_has_privacy_setting(); + } else { + clear_has_privacy_setting(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountInfo.privacy_setting) +} + +// ------------------------------------------------------------------- + +// RestrictionStatus + +// optional bool active = 1; +inline bool RestrictionStatus::has_active() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void RestrictionStatus::set_has_active() { + _has_bits_[0] |= 0x00000001u; +} +inline void RestrictionStatus::clear_has_active() { + _has_bits_[0] &= ~0x00000001u; +} +inline void RestrictionStatus::clear_active() { + active_ = false; + clear_has_active(); +} +inline bool RestrictionStatus::active() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.RestrictionStatus.active) + return active_; +} +inline void RestrictionStatus::set_active(bool value) { + set_has_active(); + active_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.RestrictionStatus.active) +} + +// optional uint64 expiration_us = 2; +inline bool RestrictionStatus::has_expiration_us() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void RestrictionStatus::set_has_expiration_us() { + _has_bits_[0] |= 0x00000002u; +} +inline void RestrictionStatus::clear_has_expiration_us() { + _has_bits_[0] &= ~0x00000002u; +} +inline void RestrictionStatus::clear_expiration_us() { + expiration_us_ = GOOGLE_ULONGLONG(0); + clear_has_expiration_us(); +} +inline ::google::protobuf::uint64 RestrictionStatus::expiration_us() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.RestrictionStatus.expiration_us) + return expiration_us_; +} +inline void RestrictionStatus::set_expiration_us(::google::protobuf::uint64 value) { + set_has_expiration_us(); + expiration_us_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.account.v1.RestrictionStatus.expiration_us) +} + +// ------------------------------------------------------------------- + +// AccountPlatformRestrictionInfo + +// optional .bgs.protocol.account.v1.RestrictionStatus squelched = 2; +inline bool AccountPlatformRestrictionInfo::has_squelched() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void AccountPlatformRestrictionInfo::set_has_squelched() { + _has_bits_[0] |= 0x00000001u; +} +inline void AccountPlatformRestrictionInfo::clear_has_squelched() { + _has_bits_[0] &= ~0x00000001u; +} +inline void AccountPlatformRestrictionInfo::clear_squelched() { + if (squelched_ != NULL) squelched_->::bgs::protocol::account::v1::RestrictionStatus::Clear(); + clear_has_squelched(); +} +inline const ::bgs::protocol::account::v1::RestrictionStatus& AccountPlatformRestrictionInfo::squelched() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountPlatformRestrictionInfo.squelched) + return squelched_ != NULL ? *squelched_ : *default_instance_->squelched_; +} +inline ::bgs::protocol::account::v1::RestrictionStatus* AccountPlatformRestrictionInfo::mutable_squelched() { + set_has_squelched(); + if (squelched_ == NULL) squelched_ = new ::bgs::protocol::account::v1::RestrictionStatus; + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountPlatformRestrictionInfo.squelched) + return squelched_; +} +inline ::bgs::protocol::account::v1::RestrictionStatus* AccountPlatformRestrictionInfo::release_squelched() { + clear_has_squelched(); + ::bgs::protocol::account::v1::RestrictionStatus* temp = squelched_; + squelched_ = NULL; + return temp; +} +inline void AccountPlatformRestrictionInfo::set_allocated_squelched(::bgs::protocol::account::v1::RestrictionStatus* squelched) { + delete squelched_; + squelched_ = squelched; + if (squelched) { + set_has_squelched(); + } else { + clear_has_squelched(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountPlatformRestrictionInfo.squelched) +} + +// optional .bgs.protocol.account.v1.RestrictionStatus legal_country_feature_restrictions_applied = 3; +inline bool AccountPlatformRestrictionInfo::has_legal_country_feature_restrictions_applied() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void AccountPlatformRestrictionInfo::set_has_legal_country_feature_restrictions_applied() { + _has_bits_[0] |= 0x00000002u; +} +inline void AccountPlatformRestrictionInfo::clear_has_legal_country_feature_restrictions_applied() { + _has_bits_[0] &= ~0x00000002u; +} +inline void AccountPlatformRestrictionInfo::clear_legal_country_feature_restrictions_applied() { + if (legal_country_feature_restrictions_applied_ != NULL) legal_country_feature_restrictions_applied_->::bgs::protocol::account::v1::RestrictionStatus::Clear(); + clear_has_legal_country_feature_restrictions_applied(); +} +inline const ::bgs::protocol::account::v1::RestrictionStatus& AccountPlatformRestrictionInfo::legal_country_feature_restrictions_applied() const { + // @@protoc_insertion_point(field_get:bgs.protocol.account.v1.AccountPlatformRestrictionInfo.legal_country_feature_restrictions_applied) + return legal_country_feature_restrictions_applied_ != NULL ? *legal_country_feature_restrictions_applied_ : *default_instance_->legal_country_feature_restrictions_applied_; +} +inline ::bgs::protocol::account::v1::RestrictionStatus* AccountPlatformRestrictionInfo::mutable_legal_country_feature_restrictions_applied() { + set_has_legal_country_feature_restrictions_applied(); + if (legal_country_feature_restrictions_applied_ == NULL) legal_country_feature_restrictions_applied_ = new ::bgs::protocol::account::v1::RestrictionStatus; + // @@protoc_insertion_point(field_mutable:bgs.protocol.account.v1.AccountPlatformRestrictionInfo.legal_country_feature_restrictions_applied) + return legal_country_feature_restrictions_applied_; +} +inline ::bgs::protocol::account::v1::RestrictionStatus* AccountPlatformRestrictionInfo::release_legal_country_feature_restrictions_applied() { + clear_has_legal_country_feature_restrictions_applied(); + ::bgs::protocol::account::v1::RestrictionStatus* temp = legal_country_feature_restrictions_applied_; + legal_country_feature_restrictions_applied_ = NULL; + return temp; +} +inline void AccountPlatformRestrictionInfo::set_allocated_legal_country_feature_restrictions_applied(::bgs::protocol::account::v1::RestrictionStatus* legal_country_feature_restrictions_applied) { + delete legal_country_feature_restrictions_applied_; + legal_country_feature_restrictions_applied_ = legal_country_feature_restrictions_applied; + if (legal_country_feature_restrictions_applied) { + set_has_legal_country_feature_restrictions_applied(); + } else { + clear_has_legal_country_feature_restrictions_applied(); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.account.v1.AccountPlatformRestrictionInfo.legal_country_feature_restrictions_applied) +} + // @@protoc_insertion_point(namespace_scope) } // namespace v1 diff --git a/src/server/proto/Client/authentication_service.pb.cc b/src/server/proto/Client/authentication_service.pb.cc index 7b91dadb933..9418d99a8f4 100644 --- a/src/server/proto/Client/authentication_service.pb.cc +++ b/src/server/proto/Client/authentication_service.pb.cc @@ -66,7 +66,7 @@ void protobuf_AssignDesc_authentication_5fservice_2eproto() { "authentication_service.proto"); GOOGLE_CHECK(file != NULL); LogonRequest_descriptor_ = file->message_type(0); - static const int LogonRequest_offsets_[12] = { + static const int LogonRequest_offsets_[13] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(LogonRequest, program_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(LogonRequest, platform_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(LogonRequest, locale_), @@ -79,6 +79,7 @@ void protobuf_AssignDesc_authentication_5fservice_2eproto() { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(LogonRequest, user_agent_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(LogonRequest, device_id_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(LogonRequest, phone_number_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(LogonRequest, auth_platform_), }; LogonRequest_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -314,7 +315,7 @@ void protobuf_AddDesc_authentication_5fservice_2eproto() { ::google::protobuf::DescriptorPool::InternalAddGeneratedFile( "\n\034authentication_service.proto\022\036bgs.prot" "ocol.authentication.v1\032\022entity_types.pro" - "to\032\017rpc_types.proto\"\264\002\n\014LogonRequest\022\017\n\007" + "to\032\017rpc_types.proto\"\313\002\n\014LogonRequest\022\017\n\007" "program\030\001 \001(\t\022\020\n\010platform\030\002 \001(\t\022\016\n\006local" "e\030\003 \001(\t\022\025\n\005email\030\004 \001(\tB\006\202\371+\002\010\001\022\017\n\007versio" "n\030\005 \001(\t\022\033\n\023application_version\030\006 \001(\005\022\027\n\017" @@ -322,58 +323,58 @@ void protobuf_AddDesc_authentication_5fservice_2eproto() { "ue_notifications\030\n \001(\010:\005false\022\036\n\026cached_" "web_credentials\030\014 \001(\014\022\022\n\nuser_agent\030\016 \001(" "\t\022\021\n\tdevice_id\030\017 \001(\t\022\034\n\014phone_number\030\020 \001" - "(\tB\006\202\371+\002\010\001\"\275\002\n\013LogonResult\022\022\n\nerror_code" - "\030\001 \002(\r\022*\n\naccount_id\030\002 \001(\0132\026.bgs.protoco" - "l.EntityId\022/\n\017game_account_id\030\003 \003(\0132\026.bg" - "s.protocol.EntityId\022\025\n\005email\030\004 \001(\tB\006\202\371+\002" - "\010\001\022\030\n\020available_region\030\005 \003(\r\022\030\n\020connecte" - "d_region\030\006 \001(\r\022\032\n\nbattle_tag\030\007 \001(\tB\006\202\371+\002" - "\010\001\022\025\n\rgeoip_country\030\010 \001(\t\022\023\n\013session_key" - "\030\t \001(\014\022\027\n\017restricted_mode\030\n \001(\010\022\021\n\tclien" - "t_id\030\013 \001(\t\"(\n\022LogonUpdateRequest\022\022\n\nerro" - "r_code\030\001 \002(\r\"a\n\027LogonQueueUpdateRequest\022" - "\020\n\010position\030\001 \002(\r\022\026\n\016estimated_time\030\002 \002(" - "\004\022\034\n\024eta_deviation_in_sec\030\003 \002(\004\"=\n\030Serve" - "rStateChangeRequest\022\r\n\005state\030\001 \002(\r\022\022\n\nev" - "ent_time\030\002 \002(\004\"T\n\013VersionInfo\022\016\n\006number\030" - "\001 \001(\r\022\r\n\005patch\030\002 \001(\t\022\023\n\013is_optional\030\003 \001(" - "\010\022\021\n\tkick_time\030\004 \001(\004\"\\\n\027VersionInfoNotif" - "ication\022A\n\014version_info\030\001 \001(\0132+.bgs.prot" - "ocol.authentication.v1.VersionInfo\"0\n\035Ge" - "nerateWebCredentialsRequest\022\017\n\007program\030\001" - " \001(\007\"9\n\036GenerateWebCredentialsResponse\022\027" - "\n\017web_credentials\030\001 \001(\014\"6\n\033VerifyWebCred" - "entialsRequest\022\027\n\017web_credentials\030\001 \001(\0142" - "\312\005\n\026AuthenticationListener\022r\n\023OnServerSt" - "ateChange\0228.bgs.protocol.authentication." - "v1.ServerStateChangeRequest\032\031.bgs.protoc" - "ol.NO_RESPONSE\"\006\202\371+\002\010\004\022a\n\017OnLogonComplet" - "e\022+.bgs.protocol.authentication.v1.Logon" - "Result\032\031.bgs.protocol.NO_RESPONSE\"\006\202\371+\002\010" - "\005\022f\n\rOnLogonUpdate\0222.bgs.protocol.authen" - "tication.v1.LogonUpdateRequest\032\031.bgs.pro" - "tocol.NO_RESPONSE\"\006\202\371+\002\010\n\022r\n\024OnVersionIn" - "foUpdated\0227.bgs.protocol.authentication." - "v1.VersionInfoNotification\032\031.bgs.protoco" - "l.NO_RESPONSE\"\006\202\371+\002\010\013\022p\n\022OnLogonQueueUpd" - "ate\0227.bgs.protocol.authentication.v1.Log" - "onQueueUpdateRequest\032\031.bgs.protocol.NO_R" - "ESPONSE\"\006\202\371+\002\010\014\022J\n\017OnLogonQueueEnd\022\024.bgs" - ".protocol.NoData\032\031.bgs.protocol.NO_RESPO" - "NSE\"\006\202\371+\002\010\r\032\?\202\371+5\n1bnet.protocol.authent" - "ication.AuthenticationClient8\001\212\371+\002\010\0012\302\003\n" - "\025AuthenticationService\022S\n\005Logon\022,.bgs.pr" - "otocol.authentication.v1.LogonRequest\032\024." - "bgs.protocol.NoData\"\006\202\371+\002\010\001\022q\n\024VerifyWeb" - "Credentials\022;.bgs.protocol.authenticatio" - "n.v1.VerifyWebCredentialsRequest\032\024.bgs.p" - "rotocol.NoData\"\006\202\371+\002\010\007\022\237\001\n\026GenerateWebCr" - "edentials\022=.bgs.protocol.authentication." - "v1.GenerateWebCredentialsRequest\032>.bgs.p" + "(\tB\006\202\371+\002\010\001\022\025\n\rauth_platform\030\021 \001(\t\"\275\002\n\013Lo" + "gonResult\022\022\n\nerror_code\030\001 \002(\r\022*\n\naccount" + "_id\030\002 \001(\0132\026.bgs.protocol.EntityId\022/\n\017gam" + "e_account_id\030\003 \003(\0132\026.bgs.protocol.Entity" + "Id\022\025\n\005email\030\004 \001(\tB\006\202\371+\002\010\001\022\030\n\020available_r" + "egion\030\005 \003(\r\022\030\n\020connected_region\030\006 \001(\r\022\032\n" + "\nbattle_tag\030\007 \001(\tB\006\202\371+\002\010\001\022\025\n\rgeoip_count" + "ry\030\010 \001(\t\022\023\n\013session_key\030\t \001(\014\022\027\n\017restric" + "ted_mode\030\n \001(\010\022\021\n\tclient_id\030\013 \001(\t\"(\n\022Log" + "onUpdateRequest\022\022\n\nerror_code\030\001 \002(\r\"a\n\027L" + "ogonQueueUpdateRequest\022\020\n\010position\030\001 \002(\r" + "\022\026\n\016estimated_time\030\002 \002(\004\022\034\n\024eta_deviatio" + "n_in_sec\030\003 \002(\004\"=\n\030ServerStateChangeReque" + "st\022\r\n\005state\030\001 \002(\r\022\022\n\nevent_time\030\002 \002(\004\"T\n" + "\013VersionInfo\022\016\n\006number\030\001 \001(\r\022\r\n\005patch\030\002 " + "\001(\t\022\023\n\013is_optional\030\003 \001(\010\022\021\n\tkick_time\030\004 " + "\001(\004\"\\\n\027VersionInfoNotification\022A\n\014versio" + "n_info\030\001 \001(\0132+.bgs.protocol.authenticati" + "on.v1.VersionInfo\"0\n\035GenerateWebCredenti" + "alsRequest\022\017\n\007program\030\001 \001(\007\"9\n\036GenerateW" + "ebCredentialsResponse\022\027\n\017web_credentials" + "\030\001 \001(\014\"6\n\033VerifyWebCredentialsRequest\022\027\n" + "\017web_credentials\030\001 \001(\0142\312\005\n\026Authenticatio" + "nListener\022r\n\023OnServerStateChange\0228.bgs.p" + "rotocol.authentication.v1.ServerStateCha" + "ngeRequest\032\031.bgs.protocol.NO_RESPONSE\"\006\202" + "\371+\002\010\004\022a\n\017OnLogonComplete\022+.bgs.protocol." + "authentication.v1.LogonResult\032\031.bgs.prot" + "ocol.NO_RESPONSE\"\006\202\371+\002\010\005\022f\n\rOnLogonUpdat" + "e\0222.bgs.protocol.authentication.v1.Logon" + "UpdateRequest\032\031.bgs.protocol.NO_RESPONSE" + "\"\006\202\371+\002\010\n\022r\n\024OnVersionInfoUpdated\0227.bgs.p" + "rotocol.authentication.v1.VersionInfoNot" + "ification\032\031.bgs.protocol.NO_RESPONSE\"\006\202\371" + "+\002\010\013\022p\n\022OnLogonQueueUpdate\0227.bgs.protoco" + "l.authentication.v1.LogonQueueUpdateRequ" + "est\032\031.bgs.protocol.NO_RESPONSE\"\006\202\371+\002\010\014\022J" + "\n\017OnLogonQueueEnd\022\024.bgs.protocol.NoData\032" + "\031.bgs.protocol.NO_RESPONSE\"\006\202\371+\002\010\r\032\?\202\371+5" + "\n1bnet.protocol.authentication.Authentic" + "ationClient8\001\212\371+\002\010\0012\302\003\n\025AuthenticationSe" + "rvice\022S\n\005Logon\022,.bgs.protocol.authentica" + "tion.v1.LogonRequest\032\024.bgs.protocol.NoDa" + "ta\"\006\202\371+\002\010\001\022q\n\024VerifyWebCredentials\022;.bgs" + ".protocol.authentication.v1.VerifyWebCre" + "dentialsRequest\032\024.bgs.protocol.NoData\"\006\202" + "\371+\002\010\007\022\237\001\n\026GenerateWebCredentials\022=.bgs.p" "rotocol.authentication.v1.GenerateWebCre" - "dentialsResponse\"\006\202\371+\002\010\010\032\?\202\371+5\n1bnet.pro" - "tocol.authentication.AuthenticationServe" - "r8\001\212\371+\002\020\001B\005H\002\200\001\000", 2456); + "dentialsRequest\032>.bgs.protocol.authentic" + "ation.v1.GenerateWebCredentialsResponse\"" + "\006\202\371+\002\010\010\032\?\202\371+5\n1bnet.protocol.authenticat" + "ion.AuthenticationServer8\001\212\371+\002\020\001B\005H\002\200\001\000", 2479); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "authentication_service.proto", &protobuf_RegisterTypes); LogonRequest::default_instance_ = new LogonRequest(); @@ -420,6 +421,7 @@ const int LogonRequest::kCachedWebCredentialsFieldNumber; const int LogonRequest::kUserAgentFieldNumber; const int LogonRequest::kDeviceIdFieldNumber; const int LogonRequest::kPhoneNumberFieldNumber; +const int LogonRequest::kAuthPlatformFieldNumber; #endif // !_MSC_VER LogonRequest::LogonRequest() @@ -453,6 +455,7 @@ void LogonRequest::SharedCtor() { user_agent_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); device_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); phone_number_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + auth_platform_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -489,6 +492,9 @@ void LogonRequest::SharedDtor() { if (phone_number_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { delete phone_number_; } + if (auth_platform_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete auth_platform_; + } if (this != default_instance_) { } } diff --git a/src/server/proto/Client/authentication_service.pb.h b/src/server/proto/Client/authentication_service.pb.h index bc9d3a451de..28d5b0b534f 100644 --- a/src/server/proto/Client/authentication_service.pb.h +++ b/src/server/proto/Client/authentication_service.pb.h @@ -224,6 +224,18 @@ class TC_PROTO_API LogonRequest : public ::google::protobuf::Message { inline ::std::string* release_phone_number(); inline void set_allocated_phone_number(::std::string* phone_number); + // optional string auth_platform = 17; + inline bool has_auth_platform() const; + inline void clear_auth_platform(); + static const int kAuthPlatformFieldNumber = 17; + inline const ::std::string& auth_platform() const; + inline void set_auth_platform(const ::std::string& value); + inline void set_auth_platform(const char* value); + inline void set_auth_platform(const char* value, size_t size); + inline ::std::string* mutable_auth_platform(); + inline ::std::string* release_auth_platform(); + inline void set_allocated_auth_platform(::std::string* auth_platform); + // @@protoc_insertion_point(class_scope:bgs.protocol.authentication.v1.LogonRequest) private: inline void set_has_program(); @@ -250,6 +262,8 @@ class TC_PROTO_API LogonRequest : public ::google::protobuf::Message { inline void clear_has_device_id(); inline void set_has_phone_number(); inline void clear_has_phone_number(); + inline void set_has_auth_platform(); + inline void clear_has_auth_platform(); ::google::protobuf::UnknownFieldSet _unknown_fields_; @@ -267,6 +281,7 @@ class TC_PROTO_API LogonRequest : public ::google::protobuf::Message { ::std::string* user_agent_; ::std::string* device_id_; ::std::string* phone_number_; + ::std::string* auth_platform_; friend void TC_PROTO_API protobuf_AddDesc_authentication_5fservice_2eproto(); friend void protobuf_AssignDesc_authentication_5fservice_2eproto(); friend void protobuf_ShutdownFile_authentication_5fservice_2eproto(); @@ -1901,6 +1916,82 @@ inline void LogonRequest::set_allocated_phone_number(::std::string* phone_number // @@protoc_insertion_point(field_set_allocated:bgs.protocol.authentication.v1.LogonRequest.phone_number) } +// optional string auth_platform = 17; +inline bool LogonRequest::has_auth_platform() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void LogonRequest::set_has_auth_platform() { + _has_bits_[0] |= 0x00001000u; +} +inline void LogonRequest::clear_has_auth_platform() { + _has_bits_[0] &= ~0x00001000u; +} +inline void LogonRequest::clear_auth_platform() { + if (auth_platform_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + auth_platform_->clear(); + } + clear_has_auth_platform(); +} +inline const ::std::string& LogonRequest::auth_platform() const { + // @@protoc_insertion_point(field_get:bgs.protocol.authentication.v1.LogonRequest.auth_platform) + return *auth_platform_; +} +inline void LogonRequest::set_auth_platform(const ::std::string& value) { + set_has_auth_platform(); + if (auth_platform_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + auth_platform_ = new ::std::string; + } + auth_platform_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.authentication.v1.LogonRequest.auth_platform) +} +inline void LogonRequest::set_auth_platform(const char* value) { + set_has_auth_platform(); + if (auth_platform_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + auth_platform_ = new ::std::string; + } + auth_platform_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.authentication.v1.LogonRequest.auth_platform) +} +inline void LogonRequest::set_auth_platform(const char* value, size_t size) { + set_has_auth_platform(); + if (auth_platform_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + auth_platform_ = new ::std::string; + } + auth_platform_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.authentication.v1.LogonRequest.auth_platform) +} +inline ::std::string* LogonRequest::mutable_auth_platform() { + set_has_auth_platform(); + if (auth_platform_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + auth_platform_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.authentication.v1.LogonRequest.auth_platform) + return auth_platform_; +} +inline ::std::string* LogonRequest::release_auth_platform() { + clear_has_auth_platform(); + if (auth_platform_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = auth_platform_; + auth_platform_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void LogonRequest::set_allocated_auth_platform(::std::string* auth_platform) { + if (auth_platform_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete auth_platform_; + } + if (auth_platform) { + set_has_auth_platform(); + auth_platform_ = auth_platform; + } else { + clear_has_auth_platform(); + auth_platform_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.authentication.v1.LogonRequest.auth_platform) +} + // ------------------------------------------------------------------- // LogonResult diff --git a/src/server/proto/Client/club_invitation.pb.cc b/src/server/proto/Client/club_invitation.pb.cc index 8ba0d30b41a..16a7e624e3d 100644 --- a/src/server/proto/Client/club_invitation.pb.cc +++ b/src/server/proto/Client/club_invitation.pb.cc @@ -150,11 +150,12 @@ void protobuf_AssignDesc_club_5finvitation_2eproto() { ::google::protobuf::MessageFactory::generated_factory(), sizeof(ClubSuggestion)); CreateTicketOptions_descriptor_ = file->message_type(5); - static const int CreateTicketOptions_offsets_[4] = { + static const int CreateTicketOptions_offsets_[5] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CreateTicketOptions, slot_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CreateTicketOptions, attribute_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CreateTicketOptions, allowed_redeem_count_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CreateTicketOptions, expiration_time_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CreateTicketOptions, join_club_source_), }; CreateTicketOptions_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -280,20 +281,21 @@ void protobuf_AddDesc_club_5finvitation_2eproto() { "ription\022,\n\004slot\030\005 \001(\0132\036.bgs.protocol.clu" "b.v1.ClubSlot\022-\n\tattribute\030\006 \003(\0132\032.bgs.p" "rotocol.v2.Attribute\022\025\n\rcreation_time\030\007 " - "\001(\004\022\027\n\017expiration_time\030\010 \001(\004\"\251\001\n\023CreateT" + "\001(\004\022\027\n\017expiration_time\030\010 \001(\004\"\331\001\n\023CreateT" "icketOptions\022,\n\004slot\030\001 \001(\0132\036.bgs.protoco" "l.club.v1.ClubSlot\022-\n\tattribute\030\002 \003(\0132\032." "bgs.protocol.v2.Attribute\022\034\n\024allowed_red" "eem_count\030\003 \001(\r\022\027\n\017expiration_time\030\004 \001(\004" - "\"\320\002\n\nClubTicket\022\n\n\002id\030\001 \001(\t\0228\n\007creator\030\002" - " \001(\0132\'.bgs.protocol.club.v1.MemberDescri" - "ption\0223\n\004club\030\003 \001(\0132%.bgs.protocol.club." - "v1.ClubDescription\022,\n\004slot\030\004 \001(\0132\036.bgs.p" - "rotocol.club.v1.ClubSlot\022-\n\tattribute\030\005 " - "\003(\0132\032.bgs.protocol.v2.Attribute\022\034\n\024curre" - "nt_redeem_count\030\006 \001(\r\022\034\n\024allowed_redeem_" - "count\030\007 \001(\r\022\025\n\rcreation_time\030\010 \001(\004\022\027\n\017ex" - "piration_time\030\t \001(\004B\002H\002P\000", 1825); + "\022.\n\020join_club_source\030\005 \001(\rB\024\202\371+\020*\016JoinCl" + "ubSource\"\320\002\n\nClubTicket\022\n\n\002id\030\001 \001(\t\0228\n\007c" + "reator\030\002 \001(\0132\'.bgs.protocol.club.v1.Memb" + "erDescription\0223\n\004club\030\003 \001(\0132%.bgs.protoc" + "ol.club.v1.ClubDescription\022,\n\004slot\030\004 \001(\013" + "2\036.bgs.protocol.club.v1.ClubSlot\022-\n\tattr" + "ibute\030\005 \003(\0132\032.bgs.protocol.v2.Attribute\022" + "\034\n\024current_redeem_count\030\006 \001(\r\022\034\n\024allowed" + "_redeem_count\030\007 \001(\r\022\025\n\rcreation_time\030\010 \001" + "(\004\022\027\n\017expiration_time\030\t \001(\004B\002H\002P\000", 1873); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "club_invitation.proto", &protobuf_RegisterTypes); ClubSlot::default_instance_ = new ClubSlot(); @@ -748,6 +750,7 @@ const int CreateTicketOptions::kSlotFieldNumber; const int CreateTicketOptions::kAttributeFieldNumber; const int CreateTicketOptions::kAllowedRedeemCountFieldNumber; const int CreateTicketOptions::kExpirationTimeFieldNumber; +const int CreateTicketOptions::kJoinClubSourceFieldNumber; #endif // !_MSC_VER CreateTicketOptions::CreateTicketOptions() @@ -772,6 +775,7 @@ void CreateTicketOptions::SharedCtor() { slot_ = NULL; allowed_redeem_count_ = 0u; expiration_time_ = GOOGLE_ULONGLONG(0); + join_club_source_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } diff --git a/src/server/proto/Client/club_invitation.pb.h b/src/server/proto/Client/club_invitation.pb.h index 205ec712b8d..a07a62131d9 100644 --- a/src/server/proto/Client/club_invitation.pb.h +++ b/src/server/proto/Client/club_invitation.pb.h @@ -702,6 +702,13 @@ class TC_PROTO_API CreateTicketOptions : public ::google::protobuf::Message { inline ::google::protobuf::uint64 expiration_time() const; inline void set_expiration_time(::google::protobuf::uint64 value); + // optional uint32 join_club_source = 5; + inline bool has_join_club_source() const; + inline void clear_join_club_source(); + static const int kJoinClubSourceFieldNumber = 5; + inline ::google::protobuf::uint32 join_club_source() const; + inline void set_join_club_source(::google::protobuf::uint32 value); + // @@protoc_insertion_point(class_scope:bgs.protocol.club.v1.CreateTicketOptions) private: inline void set_has_slot(); @@ -710,6 +717,8 @@ class TC_PROTO_API CreateTicketOptions : public ::google::protobuf::Message { inline void clear_has_allowed_redeem_count(); inline void set_has_expiration_time(); inline void clear_has_expiration_time(); + inline void set_has_join_club_source(); + inline void clear_has_join_club_source(); ::google::protobuf::UnknownFieldSet _unknown_fields_; @@ -719,6 +728,7 @@ class TC_PROTO_API CreateTicketOptions : public ::google::protobuf::Message { ::google::protobuf::RepeatedPtrField< ::bgs::protocol::v2::Attribute > attribute_; ::google::protobuf::uint64 expiration_time_; ::google::protobuf::uint32 allowed_redeem_count_; + ::google::protobuf::uint32 join_club_source_; friend void TC_PROTO_API protobuf_AddDesc_club_5finvitation_2eproto(); friend void protobuf_AssignDesc_club_5finvitation_2eproto(); friend void protobuf_ShutdownFile_club_5finvitation_2eproto(); @@ -1885,6 +1895,30 @@ inline void CreateTicketOptions::set_expiration_time(::google::protobuf::uint64 // @@protoc_insertion_point(field_set:bgs.protocol.club.v1.CreateTicketOptions.expiration_time) } +// optional uint32 join_club_source = 5; +inline bool CreateTicketOptions::has_join_club_source() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void CreateTicketOptions::set_has_join_club_source() { + _has_bits_[0] |= 0x00000010u; +} +inline void CreateTicketOptions::clear_has_join_club_source() { + _has_bits_[0] &= ~0x00000010u; +} +inline void CreateTicketOptions::clear_join_club_source() { + join_club_source_ = 0u; + clear_has_join_club_source(); +} +inline ::google::protobuf::uint32 CreateTicketOptions::join_club_source() const { + // @@protoc_insertion_point(field_get:bgs.protocol.club.v1.CreateTicketOptions.join_club_source) + return join_club_source_; +} +inline void CreateTicketOptions::set_join_club_source(::google::protobuf::uint32 value) { + set_has_join_club_source(); + join_club_source_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.club.v1.CreateTicketOptions.join_club_source) +} + // ------------------------------------------------------------------- // ClubTicket diff --git a/src/server/proto/Client/club_member.pb.cc b/src/server/proto/Client/club_member.pb.cc index 40824ffa79b..dabc89aa63d 100644 --- a/src/server/proto/Client/club_member.pb.cc +++ b/src/server/proto/Client/club_member.pb.cc @@ -188,9 +188,10 @@ void protobuf_AssignDesc_club_5fmember_2eproto() { ::google::protobuf::MessageFactory::generated_factory(), sizeof(MemberVoiceState)); CreateMemberOptions_descriptor_ = file->message_type(6); - static const int CreateMemberOptions_offsets_[2] = { + static const int CreateMemberOptions_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CreateMemberOptions, id_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CreateMemberOptions, attribute_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CreateMemberOptions, join_club_source_), }; CreateMemberOptions_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -456,39 +457,40 @@ void protobuf_AddDesc_club_5fmember_2eproto() { "\001(\010\"\221\001\n\020MemberVoiceState\022\n\n\002id\030\001 \001(\t\022\021\n\t" "stream_id\030\002 \001(\004\022\016\n\006joined\030\003 \001(\010\022>\n\nmicro" "phone\030\004 \001(\0162*.bgs.protocol.club.v1.Voice" - "MicrophoneState\022\016\n\006active\030\005 \001(\010\"p\n\023Creat" - "eMemberOptions\022*\n\002id\030\001 \001(\0132\036.bgs.protoco" - "l.club.v1.MemberId\022-\n\tattribute\030\002 \003(\0132\032." - "bgs.protocol.v2.Attribute\"[\n\021MemberDescr" - "iption\022*\n\002id\030\001 \001(\0132\036.bgs.protocol.club.v" - "1.MemberId\022\032\n\nbattle_tag\030\002 \001(\tB\006\202\371+\002\010\001\"^" - "\n\013RoleOptions\0221\n\tmember_id\030\001 \001(\0132\036.bgs.p" - "rotocol.club.v1.MemberId\022\034\n\004role\030\002 \003(\rB\016" - "\020\001\212\371+\010*\006\n\004\010\001\020\001\"U\n\016RoleAssignment\0221\n\tmemb" - "er_id\030\001 \001(\0132\036.bgs.protocol.club.v1.Membe" - "rId\022\020\n\004role\030\002 \003(\rB\002\020\001\"}\n\031MemberAttribute" - "Assignment\0221\n\tmember_id\030\001 \001(\0132\036.bgs.prot" - "ocol.club.v1.MemberId\022-\n\tattribute\030\002 \003(\013" - "2\032.bgs.protocol.v2.Attribute\"Q\n\026Subscrib" - "erStateOptions\0227\n\005voice\030\001 \001(\0132(.bgs.prot" - "ocol.club.v1.MemberVoiceOptions\"\225\001\n\031Subs" - "criberStateAssignment\0221\n\tmember_id\030\001 \001(\013" - "2\036.bgs.protocol.club.v1.MemberId\022\016\n\006acti" - "ve\030\002 \001(\010\0225\n\005voice\030\003 \001(\0132&.bgs.protocol.c" - "lub.v1.MemberVoiceState\"\341\001\n\022MemberStateO" - "ptions\022-\n\tattribute\030\001 \003(\0132\032.bgs.protocol" - ".v2.Attribute\022;\n\016presence_level\030\002 \001(\0162#." - "bgs.protocol.club.v1.PresenceLevel\022\026\n\016mo" - "derator_mute\030\003 \001(\010\0229\n\rwhisper_level\030\004 \001(" - "\0162\".bgs.protocol.club.v1.WhisperLevel\022\014\n" - "\004note\030\005 \001(\t\"\227\002\n\025MemberStateAssignment\0221\n" - "\tmember_id\030\001 \001(\0132\036.bgs.protocol.club.v1." - "MemberId\022-\n\tattribute\030\002 \003(\0132\032.bgs.protoc" - "ol.v2.Attribute\022;\n\016presence_level\030\003 \001(\0162" - "#.bgs.protocol.club.v1.PresenceLevel\022\026\n\016" - "moderator_mute\030\004 \001(\010\0229\n\rwhisper_level\030\005 " - "\001(\0162\".bgs.protocol.club.v1.WhisperLevel\022" - "\014\n\004note\030\006 \001(\tB\002H\002P\000", 2419); + "MicrophoneState\022\016\n\006active\030\005 \001(\010\"\240\001\n\023Crea" + "teMemberOptions\022*\n\002id\030\001 \001(\0132\036.bgs.protoc" + "ol.club.v1.MemberId\022-\n\tattribute\030\002 \003(\0132\032" + ".bgs.protocol.v2.Attribute\022.\n\020join_club_" + "source\030\003 \001(\rB\024\202\371+\020*\016JoinClubSource\"[\n\021Me" + "mberDescription\022*\n\002id\030\001 \001(\0132\036.bgs.protoc" + "ol.club.v1.MemberId\022\032\n\nbattle_tag\030\002 \001(\tB" + "\006\202\371+\002\010\001\"^\n\013RoleOptions\0221\n\tmember_id\030\001 \001(" + "\0132\036.bgs.protocol.club.v1.MemberId\022\034\n\004rol" + "e\030\002 \003(\rB\016\020\001\212\371+\010*\006\n\004\010\001\020\001\"U\n\016RoleAssignmen" + "t\0221\n\tmember_id\030\001 \001(\0132\036.bgs.protocol.club" + ".v1.MemberId\022\020\n\004role\030\002 \003(\rB\002\020\001\"}\n\031Member" + "AttributeAssignment\0221\n\tmember_id\030\001 \001(\0132\036" + ".bgs.protocol.club.v1.MemberId\022-\n\tattrib" + "ute\030\002 \003(\0132\032.bgs.protocol.v2.Attribute\"Q\n" + "\026SubscriberStateOptions\0227\n\005voice\030\001 \001(\0132(" + ".bgs.protocol.club.v1.MemberVoiceOptions" + "\"\225\001\n\031SubscriberStateAssignment\0221\n\tmember" + "_id\030\001 \001(\0132\036.bgs.protocol.club.v1.MemberI" + "d\022\016\n\006active\030\002 \001(\010\0225\n\005voice\030\003 \001(\0132&.bgs.p" + "rotocol.club.v1.MemberVoiceState\"\341\001\n\022Mem" + "berStateOptions\022-\n\tattribute\030\001 \003(\0132\032.bgs" + ".protocol.v2.Attribute\022;\n\016presence_level" + "\030\002 \001(\0162#.bgs.protocol.club.v1.PresenceLe" + "vel\022\026\n\016moderator_mute\030\003 \001(\010\0229\n\rwhisper_l" + "evel\030\004 \001(\0162\".bgs.protocol.club.v1.Whispe" + "rLevel\022\014\n\004note\030\005 \001(\t\"\227\002\n\025MemberStateAssi" + "gnment\0221\n\tmember_id\030\001 \001(\0132\036.bgs.protocol" + ".club.v1.MemberId\022-\n\tattribute\030\002 \003(\0132\032.b" + "gs.protocol.v2.Attribute\022;\n\016presence_lev" + "el\030\003 \001(\0162#.bgs.protocol.club.v1.Presence" + "Level\022\026\n\016moderator_mute\030\004 \001(\010\0229\n\rwhisper" + "_level\030\005 \001(\0162\".bgs.protocol.club.v1.Whis" + "perLevel\022\014\n\004note\030\006 \001(\tB\002H\002P\000", 2468); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "club_member.proto", &protobuf_RegisterTypes); Member::default_instance_ = new Member(); @@ -1026,6 +1028,7 @@ void MemberVoiceState::Swap(MemberVoiceState* other) { #ifndef _MSC_VER const int CreateMemberOptions::kIdFieldNumber; const int CreateMemberOptions::kAttributeFieldNumber; +const int CreateMemberOptions::kJoinClubSourceFieldNumber; #endif // !_MSC_VER CreateMemberOptions::CreateMemberOptions() @@ -1048,6 +1051,7 @@ CreateMemberOptions::CreateMemberOptions(const CreateMemberOptions& from) void CreateMemberOptions::SharedCtor() { _cached_size_ = 0; id_ = NULL; + join_club_source_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } diff --git a/src/server/proto/Client/club_member.pb.h b/src/server/proto/Client/club_member.pb.h index bfe2dc6ef9a..48d329c370d 100644 --- a/src/server/proto/Client/club_member.pb.h +++ b/src/server/proto/Client/club_member.pb.h @@ -747,10 +747,19 @@ class TC_PROTO_API CreateMemberOptions : public ::google::protobuf::Message { inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::v2::Attribute >* mutable_attribute(); + // optional uint32 join_club_source = 3; + inline bool has_join_club_source() const; + inline void clear_join_club_source(); + static const int kJoinClubSourceFieldNumber = 3; + inline ::google::protobuf::uint32 join_club_source() const; + inline void set_join_club_source(::google::protobuf::uint32 value); + // @@protoc_insertion_point(class_scope:bgs.protocol.club.v1.CreateMemberOptions) private: inline void set_has_id(); inline void clear_has_id(); + inline void set_has_join_club_source(); + inline void clear_has_join_club_source(); ::google::protobuf::UnknownFieldSet _unknown_fields_; @@ -758,6 +767,7 @@ class TC_PROTO_API CreateMemberOptions : public ::google::protobuf::Message { mutable int _cached_size_; ::bgs::protocol::club::v1::MemberId* id_; ::google::protobuf::RepeatedPtrField< ::bgs::protocol::v2::Attribute > attribute_; + ::google::protobuf::uint32 join_club_source_; friend void TC_PROTO_API protobuf_AddDesc_club_5fmember_2eproto(); friend void protobuf_AssignDesc_club_5fmember_2eproto(); friend void protobuf_ShutdownFile_club_5fmember_2eproto(); @@ -2475,6 +2485,30 @@ CreateMemberOptions::mutable_attribute() { return &attribute_; } +// optional uint32 join_club_source = 3; +inline bool CreateMemberOptions::has_join_club_source() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void CreateMemberOptions::set_has_join_club_source() { + _has_bits_[0] |= 0x00000004u; +} +inline void CreateMemberOptions::clear_has_join_club_source() { + _has_bits_[0] &= ~0x00000004u; +} +inline void CreateMemberOptions::clear_join_club_source() { + join_club_source_ = 0u; + clear_has_join_club_source(); +} +inline ::google::protobuf::uint32 CreateMemberOptions::join_club_source() const { + // @@protoc_insertion_point(field_get:bgs.protocol.club.v1.CreateMemberOptions.join_club_source) + return join_club_source_; +} +inline void CreateMemberOptions::set_join_club_source(::google::protobuf::uint32 value) { + set_has_join_club_source(); + join_club_source_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.club.v1.CreateMemberOptions.join_club_source) +} + // ------------------------------------------------------------------- // MemberDescription diff --git a/src/server/proto/Client/connection_service.pb.cc b/src/server/proto/Client/connection_service.pb.cc index 51b2e012333..d8656fd14cb 100644 --- a/src/server/proto/Client/connection_service.pb.cc +++ b/src/server/proto/Client/connection_service.pb.cc @@ -123,7 +123,7 @@ void protobuf_AssignDesc_connection_5fservice_2eproto() { ::google::protobuf::MessageFactory::generated_factory(), sizeof(ConnectionMeteringContentHandles)); ConnectResponse_descriptor_ = file->message_type(3); - static const int ConnectResponse_offsets_[9] = { + static const int ConnectResponse_offsets_[10] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ConnectResponse, server_id_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ConnectResponse, client_id_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ConnectResponse, bind_result_), @@ -133,6 +133,7 @@ void protobuf_AssignDesc_connection_5fservice_2eproto() { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ConnectResponse, use_bindless_rpc_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ConnectResponse, binary_content_handle_array_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ConnectResponse, ciid_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ConnectResponse, connected_region_), }; ConnectResponse_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -369,7 +370,7 @@ void protobuf_AddDesc_connection_5fservice_2eproto() { "\005 \001(\01320.bgs.protocol.connection.v1.Clien" "tSdkVersionInfo\"W\n ConnectionMeteringCon" "tentHandles\0223\n\016content_handle\030\001 \003(\0132\033.bg" - "s.protocol.ContentHandle\"\302\003\n\017ConnectResp" + "s.protocol.ContentHandle\"\334\003\n\017ConnectResp" "onse\022*\n\tserver_id\030\001 \002(\0132\027.bgs.protocol.P" "rocessId\022*\n\tclient_id\030\002 \001(\0132\027.bgs.protoc" "ol.ProcessId\022\023\n\013bind_result\030\003 \001(\r\022\?\n\rbin" @@ -380,47 +381,48 @@ void protobuf_AddDesc_connection_5fservice_2eproto() { "_time\030\006 \001(\004\022\037\n\020use_bindless_rpc\030\007 \001(\010:\005f" "alse\022a\n\033binary_content_handle_array\030\010 \001(" "\0132<.bgs.protocol.connection.v1.Connectio" - "nMeteringContentHandles\022\014\n\004ciid\030\t \001(\t\"(\n" - "\014BoundService\022\014\n\004hash\030\001 \002(\007\022\n\n\002id\030\002 \002(\r\"" - "\230\002\n\013BindRequest\022.\n deprecated_imported_s" - "ervice_hash\030\001 \003(\007B\004\020\001\030\001\022Q\n\033deprecated_ex" - "ported_service\030\002 \003(\0132(.bgs.protocol.conn" - "ection.v1.BoundServiceB\002\030\001\022B\n\020exported_s" - "ervice\030\003 \003(\0132(.bgs.protocol.connection.v" - "1.BoundService\022B\n\020imported_service\030\004 \003(\013" - "2(.bgs.protocol.connection.v1.BoundServi" - "ce\"1\n\014BindResponse\022!\n\023imported_service_i" - "d\030\001 \003(\rB\004\020\001\030\001\"\216\001\n\013EchoRequest\022\014\n\004time\030\001 " - "\001(\006\022\033\n\014network_only\030\002 \001(\010:\005false\022\017\n\007payl" - "oad\030\003 \001(\014\022(\n\007forward\030\004 \001(\0132\027.bgs.protoco" - "l.ProcessId\022\031\n\021forward_client_id\030\005 \001(\t\"-" - "\n\014EchoResponse\022\014\n\004time\030\001 \001(\006\022\017\n\007payload\030" - "\002 \001(\014\"\'\n\021DisconnectRequest\022\022\n\nerror_code" - "\030\001 \002(\r\"<\n\026DisconnectNotification\022\022\n\nerro" - "r_code\030\001 \002(\r\022\016\n\006reason\030\002 \001(\t\"\020\n\016EncryptR" - "equest*J\n\rMeteringLevel\022\031\n\025METERING_LEVE" - "L_LEGACY\020\000\022\036\n\032METERING_LEVEL_CATEGORIZED" - "\020\0012\373\005\n\021ConnectionService\022j\n\007Connect\022*.bg" - "s.protocol.connection.v1.ConnectRequest\032" - "+.bgs.protocol.connection.v1.ConnectResp" - "onse\"\006\202\371+\002\010\001\022c\n\004Bind\022\'.bgs.protocol.conn" - "ection.v1.BindRequest\032(.bgs.protocol.con" - "nection.v1.BindResponse\"\010\202\371+\004\010\002P\001\022a\n\004Ech" - "o\022\'.bgs.protocol.connection.v1.EchoReque" - "st\032(.bgs.protocol.connection.v1.EchoResp" - "onse\"\006\202\371+\002\010\003\022h\n\017ForceDisconnect\0222.bgs.pr" - "otocol.connection.v1.DisconnectNotificat" - "ion\032\031.bgs.protocol.NO_RESPONSE\"\006\202\371+\002\010\004\022D" - "\n\tKeepAlive\022\024.bgs.protocol.NoData\032\031.bgs." - "protocol.NO_RESPONSE\"\006\202\371+\002\010\005\022U\n\007Encrypt\022" - "*.bgs.protocol.connection.v1.EncryptRequ" - "est\032\024.bgs.protocol.NoData\"\010\202\371+\004\010\006P\001\022e\n\021R" - "equestDisconnect\022-.bgs.protocol.connecti" - "on.v1.DisconnectRequest\032\031.bgs.protocol.N" - "O_RESPONSE\"\006\202\371+\002\010\007\032D\202\371+8\n*bnet.protocol." - "connection.ConnectionService*\nconnection" - "\212\371+\004\010\001\020\001B<\n\032bgs.protocol.connection.v1B\026" - "ConnectionServiceProtoH\002\200\001\000\210\001\001", 2710); + "nMeteringContentHandles\022\014\n\004ciid\030\t \001(\t\022\030\n" + "\020connected_region\030\n \001(\r\"(\n\014BoundService\022" + "\014\n\004hash\030\001 \002(\007\022\n\n\002id\030\002 \002(\r\"\230\002\n\013BindReques" + "t\022.\n deprecated_imported_service_hash\030\001 " + "\003(\007B\004\020\001\030\001\022Q\n\033deprecated_exported_service" + "\030\002 \003(\0132(.bgs.protocol.connection.v1.Boun" + "dServiceB\002\030\001\022B\n\020exported_service\030\003 \003(\0132(" + ".bgs.protocol.connection.v1.BoundService" + "\022B\n\020imported_service\030\004 \003(\0132(.bgs.protoco" + "l.connection.v1.BoundService\"1\n\014BindResp" + "onse\022!\n\023imported_service_id\030\001 \003(\rB\004\020\001\030\001\"" + "\216\001\n\013EchoRequest\022\014\n\004time\030\001 \001(\006\022\033\n\014network" + "_only\030\002 \001(\010:\005false\022\017\n\007payload\030\003 \001(\014\022(\n\007f" + "orward\030\004 \001(\0132\027.bgs.protocol.ProcessId\022\031\n" + "\021forward_client_id\030\005 \001(\t\"-\n\014EchoResponse" + "\022\014\n\004time\030\001 \001(\006\022\017\n\007payload\030\002 \001(\014\"\'\n\021Disco" + "nnectRequest\022\022\n\nerror_code\030\001 \002(\r\"<\n\026Disc" + "onnectNotification\022\022\n\nerror_code\030\001 \002(\r\022\016" + "\n\006reason\030\002 \001(\t\"\020\n\016EncryptRequest*J\n\rMete" + "ringLevel\022\031\n\025METERING_LEVEL_LEGACY\020\000\022\036\n\032" + "METERING_LEVEL_CATEGORIZED\020\0012\373\005\n\021Connect" + "ionService\022j\n\007Connect\022*.bgs.protocol.con" + "nection.v1.ConnectRequest\032+.bgs.protocol" + ".connection.v1.ConnectResponse\"\006\202\371+\002\010\001\022c" + "\n\004Bind\022\'.bgs.protocol.connection.v1.Bind" + "Request\032(.bgs.protocol.connection.v1.Bin" + "dResponse\"\010\202\371+\004\010\002P\001\022a\n\004Echo\022\'.bgs.protoc" + "ol.connection.v1.EchoRequest\032(.bgs.proto" + "col.connection.v1.EchoResponse\"\006\202\371+\002\010\003\022h" + "\n\017ForceDisconnect\0222.bgs.protocol.connect" + "ion.v1.DisconnectNotification\032\031.bgs.prot" + "ocol.NO_RESPONSE\"\006\202\371+\002\010\004\022D\n\tKeepAlive\022\024." + "bgs.protocol.NoData\032\031.bgs.protocol.NO_RE" + "SPONSE\"\006\202\371+\002\010\005\022U\n\007Encrypt\022*.bgs.protocol" + ".connection.v1.EncryptRequest\032\024.bgs.prot" + "ocol.NoData\"\010\202\371+\004\010\006P\001\022e\n\021RequestDisconne" + "ct\022-.bgs.protocol.connection.v1.Disconne" + "ctRequest\032\031.bgs.protocol.NO_RESPONSE\"\006\202\371" + "+\002\010\007\032D\202\371+8\n*bnet.protocol.connection.Con" + "nectionService*\nconnection\212\371+\004\010\001\020\001B<\n\032bg" + "s.protocol.connection.v1B\026ConnectionServ" + "iceProtoH\002\200\001\000\210\001\001", 2736); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "connection_service.proto", &protobuf_RegisterTypes); ClientSdkVersionInfo::default_instance_ = new ClientSdkVersionInfo(); @@ -723,6 +725,7 @@ const int ConnectResponse::kServerTimeFieldNumber; const int ConnectResponse::kUseBindlessRpcFieldNumber; const int ConnectResponse::kBinaryContentHandleArrayFieldNumber; const int ConnectResponse::kCiidFieldNumber; +const int ConnectResponse::kConnectedRegionFieldNumber; #endif // !_MSC_VER ConnectResponse::ConnectResponse() @@ -758,6 +761,7 @@ void ConnectResponse::SharedCtor() { use_bindless_rpc_ = false; binary_content_handle_array_ = NULL; ciid_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + connected_region_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } diff --git a/src/server/proto/Client/connection_service.pb.h b/src/server/proto/Client/connection_service.pb.h index 7a5c1844e2e..0c05ed44cbb 100644 --- a/src/server/proto/Client/connection_service.pb.h +++ b/src/server/proto/Client/connection_service.pb.h @@ -472,6 +472,13 @@ class TC_PROTO_API ConnectResponse : public ::google::protobuf::Message { inline ::std::string* release_ciid(); inline void set_allocated_ciid(::std::string* ciid); + // optional uint32 connected_region = 10; + inline bool has_connected_region() const; + inline void clear_connected_region(); + static const int kConnectedRegionFieldNumber = 10; + inline ::google::protobuf::uint32 connected_region() const; + inline void set_connected_region(::google::protobuf::uint32 value); + // @@protoc_insertion_point(class_scope:bgs.protocol.connection.v1.ConnectResponse) private: inline void set_has_server_id(); @@ -492,6 +499,8 @@ class TC_PROTO_API ConnectResponse : public ::google::protobuf::Message { inline void clear_has_binary_content_handle_array(); inline void set_has_ciid(); inline void clear_has_ciid(); + inline void set_has_connected_region(); + inline void clear_has_connected_region(); ::google::protobuf::UnknownFieldSet _unknown_fields_; @@ -506,6 +515,7 @@ class TC_PROTO_API ConnectResponse : public ::google::protobuf::Message { ::google::protobuf::uint64 server_time_; ::bgs::protocol::connection::v1::ConnectionMeteringContentHandles* binary_content_handle_array_; ::std::string* ciid_; + ::google::protobuf::uint32 connected_region_; friend void TC_PROTO_API protobuf_AddDesc_connection_5fservice_2eproto(); friend void protobuf_AssignDesc_connection_5fservice_2eproto(); friend void protobuf_ShutdownFile_connection_5fservice_2eproto(); @@ -1948,6 +1958,30 @@ inline void ConnectResponse::set_allocated_ciid(::std::string* ciid) { // @@protoc_insertion_point(field_set_allocated:bgs.protocol.connection.v1.ConnectResponse.ciid) } +// optional uint32 connected_region = 10; +inline bool ConnectResponse::has_connected_region() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void ConnectResponse::set_has_connected_region() { + _has_bits_[0] |= 0x00000200u; +} +inline void ConnectResponse::clear_has_connected_region() { + _has_bits_[0] &= ~0x00000200u; +} +inline void ConnectResponse::clear_connected_region() { + connected_region_ = 0u; + clear_has_connected_region(); +} +inline ::google::protobuf::uint32 ConnectResponse::connected_region() const { + // @@protoc_insertion_point(field_get:bgs.protocol.connection.v1.ConnectResponse.connected_region) + return connected_region_; +} +inline void ConnectResponse::set_connected_region(::google::protobuf::uint32 value) { + set_has_connected_region(); + connected_region_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.connection.v1.ConnectResponse.connected_region) +} + // ------------------------------------------------------------------- // BoundService diff --git a/src/server/proto/Client/friends_types.pb.cc b/src/server/proto/Client/friends_types.pb.cc index 4798f62c41d..57db0de4ad3 100644 --- a/src/server/proto/Client/friends_types.pb.cc +++ b/src/server/proto/Client/friends_types.pb.cc @@ -286,42 +286,43 @@ void protobuf_AddDesc_friends_5ftypes_2eproto() { "\026.bgs.protocol.EntityId\022\034\n\004role\030\003 \003(\rB\016\020" "\001\212\371+\010*\006\n\004\010\001\020\001\022\022\n\nprivileges\030\004 \001(\004\022\031\n\tful" "l_name\030\006 \001(\tB\006\202\371+\002\010\001\022\032\n\nbattle_tag\030\007 \001(\t" - "B\006\202\371+\002\010\001\"\337\001\n\022ReceivedInvitation\022\n\n\002id\030\001 " + "B\006\202\371+\002\010\001\"\357\001\n\022ReceivedInvitation\022\n\n\002id\030\001 " "\002(\006\0220\n\020inviter_identity\030\002 \002(\0132\026.bgs.prot" "ocol.Identity\0220\n\020invitee_identity\030\003 \002(\0132" - "\026.bgs.protocol.Identity\022\024\n\014inviter_name\030" - "\004 \001(\t\022\024\n\014invitee_name\030\005 \001(\t\022\025\n\rcreation_" - "time\030\007 \001(\004\022\017\n\007program\030\t \001(\007*\005\010d\020\220N\"\317\001\n\020F" - "riendInvitation\022\034\n\004role\030\002 \003(\rB\016\020\001\212\371+\010*\006\n" - "\004\010\001\020\001\022*\n\tattribute\030\003 \003(\0132\027.bgs.protocol." - "Attribute2q\n\021friend_invitation\022+.bgs.pro" - "tocol.friends.v1.ReceivedInvitation\030g \001(" - "\0132).bgs.protocol.friends.v1.FriendInvita" - "tion\"\223\001\n\016SentInvitation\022\n\n\002id\030\001 \001(\006\022\023\n\013t" - "arget_name\030\002 \001(\t\022\014\n\004role\030\003 \001(\r\022*\n\tattrib" - "ute\030\004 \003(\0132\027.bgs.protocol.Attribute\022\025\n\rcr" - "eation_time\030\005 \001(\004\022\017\n\007program\030\006 \001(\007\"\332\002\n\026F" - "riendInvitationParams\022\034\n\014target_email\030\001 " - "\001(\tB\006\202\371+\002\010\001\022!\n\021target_battle_tag\030\002 \001(\tB\006" - "\202\371+\002\010\001\022\034\n\004role\030\006 \003(\rB\016\020\001\212\371+\010*\006\n\004\010\001\020\001\022*\n\t" - "attribute\030\010 \003(\0132\027.bgs.protocol.Attribute" - "\022\023\n\013target_name\030\t \001(\t\022\023\n\007program\030\n \001(\007B\002" - "\030\001\022#\n\023target_phone_number\030\013 \001(\tB\006\202\371+\002\010\0012" - "f\n\rfriend_params\022\036.bgs.protocol.Invitati" - "onParams\030g \001(\0132/.bgs.protocol.friends.v1" - ".FriendInvitationParams\"\326\002\n\021SubscribeRes" - "ponse\022\027\n\013max_friends\030\001 \001(\rB\002\030\001\022$\n\030max_re" - "ceived_invitations\030\002 \001(\rB\002\030\001\022 \n\024max_sent" - "_invitations\030\003 \001(\rB\002\030\001\022 \n\004role\030\004 \003(\0132\022.b" - "gs.protocol.Role\0220\n\007friends\030\005 \003(\0132\037.bgs." - "protocol.friends.v1.Friend\022I\n\024received_i" - "nvitations\030\007 \003(\0132+.bgs.protocol.friends." - "v1.ReceivedInvitation\022A\n\020sent_invitation" - "s\030\010 \003(\0132\'.bgs.protocol.friends.v1.SentIn" - "vitation\"F\n\027AcceptInvitationOptions\022\032\n\004r" - "ole\030\001 \001(\rB\014\212\371+\010\022\006\n\004\010\000\020\002\022\017\n\007program\030\002 \001(\007" - "B.\n\027bgs.protocol.friends.v1B\021FriendsType" - "sProtoH\002P\000", 1930); + "\026.bgs.protocol.Identity\022\034\n\014inviter_name\030" + "\004 \001(\tB\006\202\371+\002\010\001\022\034\n\014invitee_name\030\005 \001(\tB\006\202\371+" + "\002\010\001\022\025\n\rcreation_time\030\007 \001(\004\022\017\n\007program\030\t " + "\001(\007*\005\010d\020\220N\"\317\001\n\020FriendInvitation\022\034\n\004role\030" + "\002 \003(\rB\016\020\001\212\371+\010*\006\n\004\010\001\020\001\022*\n\tattribute\030\003 \003(\013" + "2\027.bgs.protocol.Attribute2q\n\021friend_invi" + "tation\022+.bgs.protocol.friends.v1.Receive" + "dInvitation\030g \001(\0132).bgs.protocol.friends" + ".v1.FriendInvitation\"\233\001\n\016SentInvitation\022" + "\n\n\002id\030\001 \001(\006\022\033\n\013target_name\030\002 \001(\tB\006\202\371+\002\010\001" + "\022\014\n\004role\030\003 \001(\r\022*\n\tattribute\030\004 \003(\0132\027.bgs." + "protocol.Attribute\022\025\n\rcreation_time\030\005 \001(" + "\004\022\017\n\007program\030\006 \001(\007\"\342\002\n\026FriendInvitationP" + "arams\022\034\n\014target_email\030\001 \001(\tB\006\202\371+\002\010\001\022!\n\021t" + "arget_battle_tag\030\002 \001(\tB\006\202\371+\002\010\001\022\034\n\004role\030\006" + " \003(\rB\016\020\001\212\371+\010*\006\n\004\010\001\020\001\022*\n\tattribute\030\010 \003(\0132" + "\027.bgs.protocol.Attribute\022\033\n\013target_name\030" + "\t \001(\tB\006\202\371+\002\010\001\022\023\n\007program\030\n \001(\007B\002\030\001\022#\n\023ta" + "rget_phone_number\030\013 \001(\tB\006\202\371+\002\010\0012f\n\rfrien" + "d_params\022\036.bgs.protocol.InvitationParams" + "\030g \001(\0132/.bgs.protocol.friends.v1.FriendI" + "nvitationParams\"\326\002\n\021SubscribeResponse\022\027\n" + "\013max_friends\030\001 \001(\rB\002\030\001\022$\n\030max_received_i" + "nvitations\030\002 \001(\rB\002\030\001\022 \n\024max_sent_invitat" + "ions\030\003 \001(\rB\002\030\001\022 \n\004role\030\004 \003(\0132\022.bgs.proto" + "col.Role\0220\n\007friends\030\005 \003(\0132\037.bgs.protocol" + ".friends.v1.Friend\022I\n\024received_invitatio" + "ns\030\007 \003(\0132+.bgs.protocol.friends.v1.Recei" + "vedInvitation\022A\n\020sent_invitations\030\010 \003(\0132" + "\'.bgs.protocol.friends.v1.SentInvitation" + "\"F\n\027AcceptInvitationOptions\022\032\n\004role\030\001 \001(" + "\rB\014\212\371+\010\022\006\n\004\010\000\020\002\022\017\n\007program\030\002 \001(\007B.\n\027bgs." + "protocol.friends.v1B\021FriendsTypesProtoH\002" + "P\000", 1962); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "friends_types.proto", &protobuf_RegisterTypes); Friend::default_instance_ = new Friend(); diff --git a/src/server/proto/Client/global_extensions/method_options.pb.cc b/src/server/proto/Client/global_extensions/method_options.pb.cc index 9d3c2ea5d03..c585877cae5 100644 --- a/src/server/proto/Client/global_extensions/method_options.pb.cc +++ b/src/server/proto/Client/global_extensions/method_options.pb.cc @@ -34,7 +34,7 @@ void protobuf_AssignDesc_global_5fextensions_2fmethod_5foptions_2eproto() { "global_extensions/method_options.proto"); GOOGLE_CHECK(file != NULL); BGSMethodOptions_descriptor_ = file->message_type(0); - static const int BGSMethodOptions_offsets_[10] = { + static const int BGSMethodOptions_offsets_[12] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BGSMethodOptions, id_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BGSMethodOptions, client_identity_routing_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BGSMethodOptions, enable_fanout_), @@ -45,6 +45,8 @@ void protobuf_AssignDesc_global_5fextensions_2fmethod_5foptions_2eproto() { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BGSMethodOptions, custom_region_resolver_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BGSMethodOptions, explicit_region_routing_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BGSMethodOptions, obsolete_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BGSMethodOptions, client_register_type_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BGSMethodOptions, forward_key_proto_file_), }; BGSMethodOptions_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -88,22 +90,27 @@ void protobuf_AddDesc_global_5fextensions_2fmethod_5foptions_2eproto() { ::google::protobuf::protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto(); ::bgs::protocol::protobuf_AddDesc_global_5fextensions_2frouting_2eproto(); + ::bgs::protocol::protobuf_AddDesc_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto(); ::google::protobuf::DescriptorPool::InternalAddGeneratedFile( "\n&global_extensions/method_options.proto" "\022\014bgs.protocol\032 google/protobuf/descript" "or.proto\032\037global_extensions/routing.prot" - "o\"\306\002\n\020BGSMethodOptions\022\n\n\002id\030\001 \001(\r\022H\n\027cl" - "ient_identity_routing\030\002 \001(\0162\'.bgs.protoc" - "ol.ClientIdentityRoutingType\022\025\n\renable_f" - "anout\030\003 \001(\010\022!\n\031legacy_fanout_replacement" - "\030\004 \001(\t\022\023\n\013forward_key\030\005 \001(\t\022\022\n\nidempoten" - "t\030\006 \001(\010\022&\n\036handle_destination_unreachabl" - "e\030\007 \001(\010\022\036\n\026custom_region_resolver\030\010 \001(\t\022" - "\037\n\027explicit_region_routing\030\t \001(\010\022\020\n\010obso" - "lete\030\n \001(\010:X\n\016method_options\022\036.google.pr" - "otobuf.MethodOptions\030\220\277\005 \001(\0132\036.bgs.proto" - "col.BGSMethodOptionsB$\n\014bgs.protocolB\022Me" - "thodOptionsProtoH\002", 578); + "o\032-global_extensions/register_method_typ" + "es.proto\"\254\003\n\020BGSMethodOptions\022\n\n\002id\030\001 \001(" + "\r\022H\n\027client_identity_routing\030\002 \001(\0162\'.bgs" + ".protocol.ClientIdentityRoutingType\022\025\n\re" + "nable_fanout\030\003 \001(\010\022!\n\031legacy_fanout_repl" + "acement\030\004 \001(\t\022\023\n\013forward_key\030\005 \001(\t\022\022\n\nid" + "empotent\030\006 \001(\010\022&\n\036handle_destination_unr" + "eachable\030\007 \001(\010\022\036\n\026custom_region_resolver" + "\030\010 \001(\t\022\037\n\027explicit_region_routing\030\t \001(\010\022" + "\020\n\010obsolete\030\n \001(\010\022D\n\024client_register_typ" + "e\030\013 \001(\0162&.bgs.protocol.ClientRegisterMet" + "hodType\022\036\n\026forward_key_proto_file\030\014 \001(\t:" + "X\n\016method_options\022\036.google.protobuf.Meth" + "odOptions\030\220\277\005 \001(\0132\036.bgs.protocol.BGSMeth" + "odOptionsB$\n\014bgs.protocolB\022MethodOptions" + "ProtoH\002", 727); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "global_extensions/method_options.proto", &protobuf_RegisterTypes); BGSMethodOptions::default_instance_ = new BGSMethodOptions(); @@ -134,6 +141,8 @@ const int BGSMethodOptions::kHandleDestinationUnreachableFieldNumber; const int BGSMethodOptions::kCustomRegionResolverFieldNumber; const int BGSMethodOptions::kExplicitRegionRoutingFieldNumber; const int BGSMethodOptions::kObsoleteFieldNumber; +const int BGSMethodOptions::kClientRegisterTypeFieldNumber; +const int BGSMethodOptions::kForwardKeyProtoFileFieldNumber; #endif // !_MSC_VER BGSMethodOptions::BGSMethodOptions() @@ -165,6 +174,8 @@ void BGSMethodOptions::SharedCtor() { custom_region_resolver_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); explicit_region_routing_ = false; obsolete_ = false; + client_register_type_ = 0; + forward_key_proto_file_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -183,6 +194,9 @@ void BGSMethodOptions::SharedDtor() { if (custom_region_resolver_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { delete custom_region_resolver_; } + if (forward_key_proto_file_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete forward_key_proto_file_; + } if (this != default_instance_) { } } diff --git a/src/server/proto/Client/global_extensions/method_options.pb.h b/src/server/proto/Client/global_extensions/method_options.pb.h index 2e7678a9332..467890d838d 100644 --- a/src/server/proto/Client/global_extensions/method_options.pb.h +++ b/src/server/proto/Client/global_extensions/method_options.pb.h @@ -26,6 +26,7 @@ #include <google/protobuf/unknown_field_set.h> #include "google/protobuf/descriptor.pb.h" #include "global_extensions/routing.pb.h" +#include "global_extensions/register_method_types.pb.h" #include "Define.h" // for TC_PROTO_API // @@protoc_insertion_point(includes) @@ -166,6 +167,25 @@ class TC_PROTO_API BGSMethodOptions : public ::google::protobuf::Message { inline bool obsolete() const; inline void set_obsolete(bool value); + // optional .bgs.protocol.ClientRegisterMethodType client_register_type = 11; + inline bool has_client_register_type() const; + inline void clear_client_register_type(); + static const int kClientRegisterTypeFieldNumber = 11; + inline ::bgs::protocol::ClientRegisterMethodType client_register_type() const; + inline void set_client_register_type(::bgs::protocol::ClientRegisterMethodType value); + + // optional string forward_key_proto_file = 12; + inline bool has_forward_key_proto_file() const; + inline void clear_forward_key_proto_file(); + static const int kForwardKeyProtoFileFieldNumber = 12; + inline const ::std::string& forward_key_proto_file() const; + inline void set_forward_key_proto_file(const ::std::string& value); + inline void set_forward_key_proto_file(const char* value); + inline void set_forward_key_proto_file(const char* value, size_t size); + inline ::std::string* mutable_forward_key_proto_file(); + inline ::std::string* release_forward_key_proto_file(); + inline void set_allocated_forward_key_proto_file(::std::string* forward_key_proto_file); + // @@protoc_insertion_point(class_scope:bgs.protocol.BGSMethodOptions) private: inline void set_has_id(); @@ -188,6 +208,10 @@ class TC_PROTO_API BGSMethodOptions : public ::google::protobuf::Message { inline void clear_has_explicit_region_routing(); inline void set_has_obsolete(); inline void clear_has_obsolete(); + inline void set_has_client_register_type(); + inline void clear_has_client_register_type(); + inline void set_has_forward_key_proto_file(); + inline void clear_has_forward_key_proto_file(); ::google::protobuf::UnknownFieldSet _unknown_fields_; @@ -203,6 +227,8 @@ class TC_PROTO_API BGSMethodOptions : public ::google::protobuf::Message { bool explicit_region_routing_; bool obsolete_; ::std::string* custom_region_resolver_; + ::std::string* forward_key_proto_file_; + int client_register_type_; friend void TC_PROTO_API protobuf_AddDesc_global_5fextensions_2fmethod_5foptions_2eproto(); friend void protobuf_AssignDesc_global_5fextensions_2fmethod_5foptions_2eproto(); friend void protobuf_ShutdownFile_global_5fextensions_2fmethod_5foptions_2eproto(); @@ -620,6 +646,107 @@ inline void BGSMethodOptions::set_obsolete(bool value) { // @@protoc_insertion_point(field_set:bgs.protocol.BGSMethodOptions.obsolete) } +// optional .bgs.protocol.ClientRegisterMethodType client_register_type = 11; +inline bool BGSMethodOptions::has_client_register_type() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void BGSMethodOptions::set_has_client_register_type() { + _has_bits_[0] |= 0x00000400u; +} +inline void BGSMethodOptions::clear_has_client_register_type() { + _has_bits_[0] &= ~0x00000400u; +} +inline void BGSMethodOptions::clear_client_register_type() { + client_register_type_ = 0; + clear_has_client_register_type(); +} +inline ::bgs::protocol::ClientRegisterMethodType BGSMethodOptions::client_register_type() const { + // @@protoc_insertion_point(field_get:bgs.protocol.BGSMethodOptions.client_register_type) + return static_cast< ::bgs::protocol::ClientRegisterMethodType >(client_register_type_); +} +inline void BGSMethodOptions::set_client_register_type(::bgs::protocol::ClientRegisterMethodType value) { + assert(::bgs::protocol::ClientRegisterMethodType_IsValid(value)); + set_has_client_register_type(); + client_register_type_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.BGSMethodOptions.client_register_type) +} + +// optional string forward_key_proto_file = 12; +inline bool BGSMethodOptions::has_forward_key_proto_file() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void BGSMethodOptions::set_has_forward_key_proto_file() { + _has_bits_[0] |= 0x00000800u; +} +inline void BGSMethodOptions::clear_has_forward_key_proto_file() { + _has_bits_[0] &= ~0x00000800u; +} +inline void BGSMethodOptions::clear_forward_key_proto_file() { + if (forward_key_proto_file_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + forward_key_proto_file_->clear(); + } + clear_has_forward_key_proto_file(); +} +inline const ::std::string& BGSMethodOptions::forward_key_proto_file() const { + // @@protoc_insertion_point(field_get:bgs.protocol.BGSMethodOptions.forward_key_proto_file) + return *forward_key_proto_file_; +} +inline void BGSMethodOptions::set_forward_key_proto_file(const ::std::string& value) { + set_has_forward_key_proto_file(); + if (forward_key_proto_file_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + forward_key_proto_file_ = new ::std::string; + } + forward_key_proto_file_->assign(value); + // @@protoc_insertion_point(field_set:bgs.protocol.BGSMethodOptions.forward_key_proto_file) +} +inline void BGSMethodOptions::set_forward_key_proto_file(const char* value) { + set_has_forward_key_proto_file(); + if (forward_key_proto_file_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + forward_key_proto_file_ = new ::std::string; + } + forward_key_proto_file_->assign(value); + // @@protoc_insertion_point(field_set_char:bgs.protocol.BGSMethodOptions.forward_key_proto_file) +} +inline void BGSMethodOptions::set_forward_key_proto_file(const char* value, size_t size) { + set_has_forward_key_proto_file(); + if (forward_key_proto_file_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + forward_key_proto_file_ = new ::std::string; + } + forward_key_proto_file_->assign(reinterpret_cast<const char*>(value), size); + // @@protoc_insertion_point(field_set_pointer:bgs.protocol.BGSMethodOptions.forward_key_proto_file) +} +inline ::std::string* BGSMethodOptions::mutable_forward_key_proto_file() { + set_has_forward_key_proto_file(); + if (forward_key_proto_file_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + forward_key_proto_file_ = new ::std::string; + } + // @@protoc_insertion_point(field_mutable:bgs.protocol.BGSMethodOptions.forward_key_proto_file) + return forward_key_proto_file_; +} +inline ::std::string* BGSMethodOptions::release_forward_key_proto_file() { + clear_has_forward_key_proto_file(); + if (forward_key_proto_file_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + return NULL; + } else { + ::std::string* temp = forward_key_proto_file_; + forward_key_proto_file_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + return temp; + } +} +inline void BGSMethodOptions::set_allocated_forward_key_proto_file(::std::string* forward_key_proto_file) { + if (forward_key_proto_file_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) { + delete forward_key_proto_file_; + } + if (forward_key_proto_file) { + set_has_forward_key_proto_file(); + forward_key_proto_file_ = forward_key_proto_file; + } else { + clear_has_forward_key_proto_file(); + forward_key_proto_file_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_set_allocated:bgs.protocol.BGSMethodOptions.forward_key_proto_file) +} + // @@protoc_insertion_point(namespace_scope) } // namespace protocol diff --git a/src/server/proto/Client/global_extensions/register_method_types.pb.cc b/src/server/proto/Client/global_extensions/register_method_types.pb.cc new file mode 100644 index 00000000000..489a3697e63 --- /dev/null +++ b/src/server/proto/Client/global_extensions/register_method_types.pb.cc @@ -0,0 +1,99 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: global_extensions/register_method_types.proto + +#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION +#include "global_extensions/register_method_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 { + +const ::google::protobuf::EnumDescriptor* ClientRegisterMethodType_descriptor_ = NULL; + +} // namespace + +void protobuf_AssignDesc_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto() { + protobuf_AddDesc_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto(); + const ::google::protobuf::FileDescriptor* file = + ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName( + "global_extensions/register_method_types.proto"); + GOOGLE_CHECK(file != NULL); + ClientRegisterMethodType_descriptor_ = file->enum_type(0); +} + +namespace { + +GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_); +inline void protobuf_AssignDescriptorsOnce() { + ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_, + &protobuf_AssignDesc_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto); +} + +void protobuf_RegisterTypes(const ::std::string&) { + protobuf_AssignDescriptorsOnce(); +} + +} // namespace + +void protobuf_ShutdownFile_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto() { +} + +void protobuf_AddDesc_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto() { + static bool already_here = false; + if (already_here) return; + already_here = true; + GOOGLE_PROTOBUF_VERIFY_VERSION; + + ::google::protobuf::DescriptorPool::InternalAddGeneratedFile( + "\n-global_extensions/register_method_type" + "s.proto\022\014bgs.protocol*\245\001\n\030ClientRegister" + "MethodType\022\030\n\024REGISTER_CLIENT_NONE\020\000\022\036\n\032" + "REGISTER_CLIENT_REGISTERED\020\001\022 \n\034REGISTER" + "_CLIENT_UNREGISTERED\020\002\022-\n)REGISTER_CLIEN" + "T_UNREGISTERED_NOTIFICATION\020\003B\002H\002", 233); + ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( + "global_extensions/register_method_types.proto", &protobuf_RegisterTypes); + ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto); +} + +// Force AddDescriptors() to be called at static initialization time. +struct StaticDescriptorInitializer_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto { + StaticDescriptorInitializer_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto() { + protobuf_AddDesc_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto(); + } +} static_descriptor_initializer_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto_; +const ::google::protobuf::EnumDescriptor* ClientRegisterMethodType_descriptor() { + protobuf_AssignDescriptorsOnce(); + return ClientRegisterMethodType_descriptor_; +} +bool ClientRegisterMethodType_IsValid(int value) { + switch(value) { + case 0: + case 1: + case 2: + case 3: + return true; + default: + return false; + } +} + +// @@protoc_insertion_point(namespace_scope) + +} // namespace protocol +} // namespace bgs + +// @@protoc_insertion_point(global_scope) diff --git a/src/server/proto/Client/global_extensions/register_method_types.pb.h b/src/server/proto/Client/global_extensions/register_method_types.pb.h new file mode 100644 index 00000000000..78dacd41dcb --- /dev/null +++ b/src/server/proto/Client/global_extensions/register_method_types.pb.h @@ -0,0 +1,84 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: global_extensions/register_method_types.proto + +#ifndef PROTOBUF_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto__INCLUDED +#define PROTOBUF_global_5fextensions_2fregister_5fmethod_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/repeated_field.h> +#include <google/protobuf/extension_set.h> +#include <google/protobuf/generated_enum_reflection.h> +#include "Define.h" // for TC_PROTO_API +// @@protoc_insertion_point(includes) + +namespace bgs { +namespace protocol { + +// Internal implementation detail -- do not call these. +void TC_PROTO_API protobuf_AddDesc_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto(); +void protobuf_AssignDesc_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto(); +void protobuf_ShutdownFile_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto(); + +enum ClientRegisterMethodType { + REGISTER_CLIENT_NONE = 0, + REGISTER_CLIENT_REGISTERED = 1, + REGISTER_CLIENT_UNREGISTERED = 2, + REGISTER_CLIENT_UNREGISTERED_NOTIFICATION = 3 +}; +TC_PROTO_API bool ClientRegisterMethodType_IsValid(int value); +const ClientRegisterMethodType ClientRegisterMethodType_MIN = REGISTER_CLIENT_NONE; +const ClientRegisterMethodType ClientRegisterMethodType_MAX = REGISTER_CLIENT_UNREGISTERED_NOTIFICATION; +const int ClientRegisterMethodType_ARRAYSIZE = ClientRegisterMethodType_MAX + 1; + +TC_PROTO_API const ::google::protobuf::EnumDescriptor* ClientRegisterMethodType_descriptor(); +inline const ::std::string& ClientRegisterMethodType_Name(ClientRegisterMethodType value) { + return ::google::protobuf::internal::NameOfEnum( + ClientRegisterMethodType_descriptor(), value); +} +inline bool ClientRegisterMethodType_Parse( + const ::std::string& name, ClientRegisterMethodType* value) { + return ::google::protobuf::internal::ParseNamedEnum<ClientRegisterMethodType>( + ClientRegisterMethodType_descriptor(), name, value); +} +// =================================================================== + +// =================================================================== + +// =================================================================== + +// =================================================================== +// @@protoc_insertion_point(namespace_scope) + +} // namespace protocol +} // namespace bgs + +#ifndef SWIG +namespace google { +namespace protobuf { +template <> struct is_proto_enum< ::bgs::protocol::ClientRegisterMethodType> : ::google::protobuf::internal::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::bgs::protocol::ClientRegisterMethodType>() { + return ::bgs::protocol::ClientRegisterMethodType_descriptor(); +} +} // namespace google +} // namespace protobuf +#endif // SWIG + +// @@protoc_insertion_point(global_scope) + +#endif // PROTOBUF_global_5fextensions_2fregister_5fmethod_5ftypes_2eproto__INCLUDED diff --git a/src/server/proto/Client/invitation_types.pb.cc b/src/server/proto/Client/invitation_types.pb.cc index 2dede344f85..800d4a6439d 100644 --- a/src/server/proto/Client/invitation_types.pb.cc +++ b/src/server/proto/Client/invitation_types.pb.cc @@ -112,30 +112,32 @@ void protobuf_AddDesc_invitation_5ftypes_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; ::bgs::protocol::protobuf_AddDesc_entity_5ftypes_2eproto(); + ::bgs::protocol::protobuf_AddDesc_global_5fextensions_2ffield_5foptions_2eproto(); ::google::protobuf::DescriptorPool::InternalAddGeneratedFile( "\n\026invitation_types.proto\022\014bgs.protocol\032\022" - "entity_types.proto\"\373\001\n\nInvitation\022\n\n\002id\030" - "\001 \002(\006\0220\n\020inviter_identity\030\002 \002(\0132\026.bgs.pr" - "otocol.Identity\0220\n\020invitee_identity\030\003 \002(" - "\0132\026.bgs.protocol.Identity\022\024\n\014inviter_nam" - "e\030\004 \001(\t\022\024\n\014invitee_name\030\005 \001(\t\022\032\n\022invitat" - "ion_message\030\006 \001(\t\022\025\n\rcreation_time\030\007 \001(\004" - "\022\027\n\017expiration_time\030\010 \001(\004*\005\010d\020\220N\"R\n\020Invi" - "tationParams\022\036\n\022invitation_message\030\001 \001(\t" - "B\002\030\001\022\027\n\017expiration_time\030\002 \001(\004*\005\010d\020\220N*\206\002\n" - "\027InvitationRemovedReason\022&\n\"INVITATION_R" - "EMOVED_REASON_ACCEPTED\020\000\022&\n\"INVITATION_R" - "EMOVED_REASON_DECLINED\020\001\022%\n!INVITATION_R" - "EMOVED_REASON_REVOKED\020\002\022%\n!INVITATION_RE" - "MOVED_REASON_IGNORED\020\003\022%\n!INVITATION_REM" - "OVED_REASON_EXPIRED\020\004\022&\n\"INVITATION_REMO" - "VED_REASON_CANCELED\020\005*\270\001\n\027SuggestionRemo" - "vedReason\022&\n\"SUGGESTION_REMOVED_REASON_A" - "PPROVED\020\000\022&\n\"SUGGESTION_REMOVED_REASON_D" - "ECLINED\020\001\022%\n!SUGGESTION_REMOVED_REASON_E" - "XPIRED\020\002\022&\n\"SUGGESTION_REMOVED_REASON_CA" - "NCELED\020\003B&\n\014bgs.protocolB\024InvitationType" - "sProtoH\002", 888); + "entity_types.proto\032%global_extensions/fi" + "eld_options.proto\"\213\002\n\nInvitation\022\n\n\002id\030\001" + " \002(\006\0220\n\020inviter_identity\030\002 \002(\0132\026.bgs.pro" + "tocol.Identity\0220\n\020invitee_identity\030\003 \002(\013" + "2\026.bgs.protocol.Identity\022\034\n\014inviter_name" + "\030\004 \001(\tB\006\202\371+\002\010\001\022\034\n\014invitee_name\030\005 \001(\tB\006\202\371" + "+\002\010\001\022\032\n\022invitation_message\030\006 \001(\t\022\025\n\rcrea" + "tion_time\030\007 \001(\004\022\027\n\017expiration_time\030\010 \001(\004" + "*\005\010d\020\220N\"R\n\020InvitationParams\022\036\n\022invitatio" + "n_message\030\001 \001(\tB\002\030\001\022\027\n\017expiration_time\030\002" + " \001(\004*\005\010d\020\220N*\206\002\n\027InvitationRemovedReason\022" + "&\n\"INVITATION_REMOVED_REASON_ACCEPTED\020\000\022" + "&\n\"INVITATION_REMOVED_REASON_DECLINED\020\001\022" + "%\n!INVITATION_REMOVED_REASON_REVOKED\020\002\022%" + "\n!INVITATION_REMOVED_REASON_IGNORED\020\003\022%\n" + "!INVITATION_REMOVED_REASON_EXPIRED\020\004\022&\n\"" + "INVITATION_REMOVED_REASON_CANCELED\020\005*\270\001\n" + "\027SuggestionRemovedReason\022&\n\"SUGGESTION_R" + "EMOVED_REASON_APPROVED\020\000\022&\n\"SUGGESTION_R" + "EMOVED_REASON_DECLINED\020\001\022%\n!SUGGESTION_R" + "EMOVED_REASON_EXPIRED\020\002\022&\n\"SUGGESTION_RE" + "MOVED_REASON_CANCELED\020\003B&\n\014bgs.protocolB" + "\024InvitationTypesProtoH\002", 943); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "invitation_types.proto", &protobuf_RegisterTypes); Invitation::default_instance_ = new Invitation(); diff --git a/src/server/proto/Client/invitation_types.pb.h b/src/server/proto/Client/invitation_types.pb.h index 32ceb4fa6be..b3262f28b72 100644 --- a/src/server/proto/Client/invitation_types.pb.h +++ b/src/server/proto/Client/invitation_types.pb.h @@ -26,6 +26,7 @@ #include <google/protobuf/generated_enum_reflection.h> #include <google/protobuf/unknown_field_set.h> #include "entity_types.pb.h" +#include "global_extensions/field_options.pb.h" #include "Define.h" // for TC_PROTO_API // @@protoc_insertion_point(includes) diff --git a/src/server/proto/Client/presence_listener.pb.cc b/src/server/proto/Client/presence_listener.pb.cc index 25d6d1e8222..603b57902e8 100644 --- a/src/server/proto/Client/presence_listener.pb.cc +++ b/src/server/proto/Client/presence_listener.pb.cc @@ -41,9 +41,10 @@ void protobuf_AssignDesc_presence_5flistener_2eproto() { "presence_listener.proto"); GOOGLE_CHECK(file != NULL); SubscribeNotification_descriptor_ = file->message_type(0); - static const int SubscribeNotification_offsets_[2] = { + static const int SubscribeNotification_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SubscribeNotification, subscriber_id_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SubscribeNotification, state_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SubscribeNotification, subscriber_program_), }; SubscribeNotification_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -57,9 +58,10 @@ void protobuf_AssignDesc_presence_5flistener_2eproto() { ::google::protobuf::MessageFactory::generated_factory(), sizeof(SubscribeNotification)); StateChangedNotification_descriptor_ = file->message_type(1); - static const int StateChangedNotification_offsets_[2] = { + static const int StateChangedNotification_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StateChangedNotification, subscriber_id_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StateChangedNotification, state_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StateChangedNotification, subscriber_program_), }; StateChangedNotification_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -112,22 +114,23 @@ void protobuf_AddDesc_presence_5flistener_2eproto() { ::google::protobuf::DescriptorPool::InternalAddGeneratedFile( "\n\027presence_listener.proto\022\030bgs.protocol." "presence.v1\032\024presence_types.proto\032\023accou" - "nt_types.proto\032\017rpc_types.proto\"\212\001\n\025Subs" + "nt_types.proto\032\017rpc_types.proto\"\246\001\n\025Subs" "cribeNotification\0229\n\rsubscriber_id\030\001 \001(\013" "2\".bgs.protocol.account.v1.AccountId\0226\n\005" "state\030\002 \003(\0132\'.bgs.protocol.presence.v1.P" - "resenceState\"\215\001\n\030StateChangedNotificatio" - "n\0229\n\rsubscriber_id\030\001 \001(\0132\".bgs.protocol." - "account.v1.AccountId\0226\n\005state\030\002 \003(\0132\'.bg" - "s.protocol.presence.v1.PresenceState2\234\002\n" - "\020PresenceListener\022c\n\013OnSubscribe\022/.bgs.p" - "rotocol.presence.v1.SubscribeNotificatio" - "n\032\031.bgs.protocol.NO_RESPONSE\"\010\202\371+\004\010\0018\001\022i" - "\n\016OnStateChanged\0222.bgs.protocol.presence" - ".v1.StateChangedNotification\032\031.bgs.proto" - "col.NO_RESPONSE\"\010\202\371+\004\010\0028\001\0328\202\371+.\n*bnet.pr" - "otocol.presence.v1.PresenceListener8\001\212\371+" - "\002\010\001B\002H\002", 687); + "resenceState\022\032\n\022subscriber_program\030\003 \001(\r" + "\"\251\001\n\030StateChangedNotification\0229\n\rsubscri" + "ber_id\030\001 \001(\0132\".bgs.protocol.account.v1.A" + "ccountId\0226\n\005state\030\002 \003(\0132\'.bgs.protocol.p" + "resence.v1.PresenceState\022\032\n\022subscriber_p" + "rogram\030\003 \001(\r2\234\002\n\020PresenceListener\022c\n\013OnS" + "ubscribe\022/.bgs.protocol.presence.v1.Subs" + "cribeNotification\032\031.bgs.protocol.NO_RESP" + "ONSE\"\010\202\371+\004\010\0018\001\022i\n\016OnStateChanged\0222.bgs.p" + "rotocol.presence.v1.StateChangedNotifica" + "tion\032\031.bgs.protocol.NO_RESPONSE\"\010\202\371+\004\010\0028" + "\001\0328\202\371+.\n*bnet.protocol.presence.v1.Prese" + "nceListener8\001\212\371+\002\010\001B\002H\002", 743); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "presence_listener.proto", &protobuf_RegisterTypes); SubscribeNotification::default_instance_ = new SubscribeNotification(); @@ -148,6 +151,7 @@ struct StaticDescriptorInitializer_presence_5flistener_2eproto { #ifndef _MSC_VER const int SubscribeNotification::kSubscriberIdFieldNumber; const int SubscribeNotification::kStateFieldNumber; +const int SubscribeNotification::kSubscriberProgramFieldNumber; #endif // !_MSC_VER SubscribeNotification::SubscribeNotification() @@ -170,6 +174,7 @@ SubscribeNotification::SubscribeNotification(const SubscribeNotification& from) void SubscribeNotification::SharedCtor() { _cached_size_ = 0; subscriber_id_ = NULL; + subscriber_program_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -223,6 +228,7 @@ void SubscribeNotification::Swap(SubscribeNotification* other) { #ifndef _MSC_VER const int StateChangedNotification::kSubscriberIdFieldNumber; const int StateChangedNotification::kStateFieldNumber; +const int StateChangedNotification::kSubscriberProgramFieldNumber; #endif // !_MSC_VER StateChangedNotification::StateChangedNotification() @@ -245,6 +251,7 @@ StateChangedNotification::StateChangedNotification(const StateChangedNotificatio void StateChangedNotification::SharedCtor() { _cached_size_ = 0; subscriber_id_ = NULL; + subscriber_program_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } diff --git a/src/server/proto/Client/presence_listener.pb.h b/src/server/proto/Client/presence_listener.pb.h index b69337ff7fd..c297f6a888b 100644 --- a/src/server/proto/Client/presence_listener.pb.h +++ b/src/server/proto/Client/presence_listener.pb.h @@ -109,10 +109,19 @@ class TC_PROTO_API SubscribeNotification : public ::google::protobuf::Message { inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v1::PresenceState >* mutable_state(); + // optional uint32 subscriber_program = 3; + inline bool has_subscriber_program() const; + inline void clear_subscriber_program(); + static const int kSubscriberProgramFieldNumber = 3; + inline ::google::protobuf::uint32 subscriber_program() const; + inline void set_subscriber_program(::google::protobuf::uint32 value); + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v1.SubscribeNotification) private: inline void set_has_subscriber_id(); inline void clear_has_subscriber_id(); + inline void set_has_subscriber_program(); + inline void clear_has_subscriber_program(); ::google::protobuf::UnknownFieldSet _unknown_fields_; @@ -120,6 +129,7 @@ class TC_PROTO_API SubscribeNotification : public ::google::protobuf::Message { mutable int _cached_size_; ::bgs::protocol::account::v1::AccountId* subscriber_id_; ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v1::PresenceState > state_; + ::google::protobuf::uint32 subscriber_program_; friend void TC_PROTO_API protobuf_AddDesc_presence_5flistener_2eproto(); friend void protobuf_AssignDesc_presence_5flistener_2eproto(); friend void protobuf_ShutdownFile_presence_5flistener_2eproto(); @@ -190,10 +200,19 @@ class TC_PROTO_API StateChangedNotification : public ::google::protobuf::Message inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v1::PresenceState >* mutable_state(); + // optional uint32 subscriber_program = 3; + inline bool has_subscriber_program() const; + inline void clear_subscriber_program(); + static const int kSubscriberProgramFieldNumber = 3; + inline ::google::protobuf::uint32 subscriber_program() const; + inline void set_subscriber_program(::google::protobuf::uint32 value); + // @@protoc_insertion_point(class_scope:bgs.protocol.presence.v1.StateChangedNotification) private: inline void set_has_subscriber_id(); inline void clear_has_subscriber_id(); + inline void set_has_subscriber_program(); + inline void clear_has_subscriber_program(); ::google::protobuf::UnknownFieldSet _unknown_fields_; @@ -201,6 +220,7 @@ class TC_PROTO_API StateChangedNotification : public ::google::protobuf::Message mutable int _cached_size_; ::bgs::protocol::account::v1::AccountId* subscriber_id_; ::google::protobuf::RepeatedPtrField< ::bgs::protocol::presence::v1::PresenceState > state_; + ::google::protobuf::uint32 subscriber_program_; friend void TC_PROTO_API protobuf_AddDesc_presence_5flistener_2eproto(); friend void protobuf_AssignDesc_presence_5flistener_2eproto(); friend void protobuf_ShutdownFile_presence_5flistener_2eproto(); @@ -310,6 +330,30 @@ SubscribeNotification::mutable_state() { return &state_; } +// optional uint32 subscriber_program = 3; +inline bool SubscribeNotification::has_subscriber_program() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void SubscribeNotification::set_has_subscriber_program() { + _has_bits_[0] |= 0x00000004u; +} +inline void SubscribeNotification::clear_has_subscriber_program() { + _has_bits_[0] &= ~0x00000004u; +} +inline void SubscribeNotification::clear_subscriber_program() { + subscriber_program_ = 0u; + clear_has_subscriber_program(); +} +inline ::google::protobuf::uint32 SubscribeNotification::subscriber_program() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v1.SubscribeNotification.subscriber_program) + return subscriber_program_; +} +inline void SubscribeNotification::set_subscriber_program(::google::protobuf::uint32 value) { + set_has_subscriber_program(); + subscriber_program_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v1.SubscribeNotification.subscriber_program) +} + // ------------------------------------------------------------------- // StateChangedNotification @@ -385,6 +429,30 @@ StateChangedNotification::mutable_state() { return &state_; } +// optional uint32 subscriber_program = 3; +inline bool StateChangedNotification::has_subscriber_program() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void StateChangedNotification::set_has_subscriber_program() { + _has_bits_[0] |= 0x00000004u; +} +inline void StateChangedNotification::clear_has_subscriber_program() { + _has_bits_[0] &= ~0x00000004u; +} +inline void StateChangedNotification::clear_subscriber_program() { + subscriber_program_ = 0u; + clear_has_subscriber_program(); +} +inline ::google::protobuf::uint32 StateChangedNotification::subscriber_program() const { + // @@protoc_insertion_point(field_get:bgs.protocol.presence.v1.StateChangedNotification.subscriber_program) + return subscriber_program_; +} +inline void StateChangedNotification::set_subscriber_program(::google::protobuf::uint32 value) { + set_has_subscriber_program(); + subscriber_program_ = value; + // @@protoc_insertion_point(field_set:bgs.protocol.presence.v1.StateChangedNotification.subscriber_program) +} + // @@protoc_insertion_point(namespace_scope) } // namespace v1 diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index da8e3d28d5e..15ab53d023a 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -869,13 +869,14 @@ public: // Generate random customizations std::vector<UF::ChrCustomizationChoice> customizations; + Races race = Races(target->GetRace()); Classes playerClass = Classes(target->GetClass()); std::vector<ChrCustomizationOptionEntry const*> const* options = sDB2Manager.GetCustomiztionOptions(target->GetRace(), gender); WorldSession const* worldSession = target->GetSession(); for (ChrCustomizationOptionEntry const* option : *options) { ChrCustomizationReqEntry const* optionReq = sChrCustomizationReqStore.LookupEntry(option->ChrCustomizationReqID); - if (optionReq && !worldSession->MeetsChrCustomizationReq(optionReq, playerClass, false, MakeChrCustomizationChoiceRange(customizations))) + if (optionReq && !worldSession->MeetsChrCustomizationReq(optionReq, race, playerClass, false, MakeChrCustomizationChoiceRange(customizations))) continue; // Loop over the options until the first one fits @@ -883,7 +884,7 @@ public: for (ChrCustomizationChoiceEntry const* choiceForOption : *choicesForOption) { ChrCustomizationReqEntry const* choiceReq = sChrCustomizationReqStore.LookupEntry(choiceForOption->ChrCustomizationReqID); - if (choiceReq && !worldSession->MeetsChrCustomizationReq(choiceReq, playerClass, false, MakeChrCustomizationChoiceRange(customizations))) + if (choiceReq && !worldSession->MeetsChrCustomizationReq(choiceReq, race, playerClass, false, MakeChrCustomizationChoiceRange(customizations))) continue; ChrCustomizationChoiceEntry const* choiceEntry = choicesForOption->at(0); diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h index c938aedd563..cc9565e8c3d 100644 --- a/src/tools/map_extractor/loadlib/DBFilesClientList.h +++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h @@ -33,6 +33,9 @@ DB2FileInfo const DBFilesClientList[] = { 1115949, "AdventureJournal.db2" }, { 1267070, "AdventureMapPOI.db2" }, { 1710672, "AlliedRace.db2" }, + { 5156218, "AltMinimap.db2" }, + { 5156219, "AltMinimapFiledata.db2" }, + { 5156220, "AltMinimapWMO.db2" }, { 1304323, "AnimKit.db2" }, { 1375433, "AnimKitBoneSet.db2" }, { 1266937, "AnimKitBoneSetAlias.db2" }, @@ -61,7 +64,7 @@ DB2FileInfo const DBFilesClientList[] = { 1121943, "AreaTriggerCylinder.db2" }, { 4223661, "AreaTriggerDisk.db2" }, { 1315630, "AreaTriggerSphere.db2" }, - { 3849793, "ArenaCcItem.db2" }, + { 5226140, "ArenaTrackedItem.db2" }, { 1284818, "ArmorLocation.db2" }, { 1007934, "Artifact.db2" }, { 1116407, "ArtifactAppearance.db2" }, @@ -193,6 +196,13 @@ DB2FileInfo const DBFilesClientList[] = { 1939843, "ClientSceneEffect.db2" }, { 1465903, "CloakDampening.db2" }, { 2175218, "CloneEffect.db2" }, + { 5152111, "CollectableSourceEncounter.db2" }, + { 5152908, "CollectableSourceEncounterSparse.db2" }, + { 5152112, "CollectableSourceInfo.db2" }, + { 5205183, "CollectableSourceQuest.db2" }, + { 5205600, "CollectableSourceQuestSparse.db2" }, + { 5163410, "CollectableSourceVendor.db2" }, + { 5159897, "CollectableSourceVendorSparse.db2" }, { 1120958, "CombatCondition.db2" }, { 3067644, "CommentatorIndirectSpell.db2" }, { 1664251, "CommentatorStartLocation.db2" }, @@ -200,6 +210,7 @@ DB2FileInfo const DBFilesClientList[] = { 2098645, "CommunityIcon.db2" }, { 1349053, "ComponentModelFileData.db2" }, { 1278239, "ComponentTextureFileData.db2" }, + { 5211412, "ConditionalChrModel.db2" }, { 3501965, "ConditionalContentTuning.db2" }, { 1709409, "ConfigurationWarning.db2" }, { 4668112, "ContentRestrictionRule.db2" }, @@ -484,6 +495,8 @@ DB2FileInfo const DBFilesClientList[] = { 1121901, "JournalEncounterXDifficulty.db2" }, { 1722928, "JournalEncounterXMapLoc.db2" }, { 1237438, "JournalInstance.db2" }, + { 5228481, "JournalInstanceEntrance.db2" }, + { 5228217, "JournalInstanceQueueLoc.db2" }, { 1277744, "JournalItemXDifficulty.db2" }, { 1121900, "JournalSectionXDifficulty.db2" }, { 1349056, "JournalTier.db2" }, @@ -647,6 +660,7 @@ DB2FileInfo const DBFilesClientList[] = { 1282622, "QuestFactionReward.db2" }, { 1343388, "QuestFeedbackEffect.db2" }, { 1120960, "QuestInfo.db2" }, + { 5202058, "QuestLabel.db2" }, { 973430, "QuestLine.db2" }, { 973441, "QuestLineXQuest.db2" }, { 1139047, "QuestMoneyReward.db2" }, |