aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp13
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.h3
-rw-r--r--src/server/game/AI/CoreAI/GameObjectAI.h2
-rw-r--r--src/server/game/AI/CoreAI/PetAI.cpp4
-rw-r--r--src/server/game/AI/CreatureAI.h2
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp52
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp10
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h44
-rw-r--r--src/server/game/DataStores/DB2Metadata.h286
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp2
-rw-r--r--src/server/game/DataStores/DB2Stores.h1
-rw-r--r--src/server/game/DataStores/DB2Structure.h29
-rw-r--r--src/server/game/DataStores/DBCEnums.h25
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.cpp6
-rw-r--r--src/server/game/Entities/Creature/GossipDef.h2
-rw-r--r--src/server/game/Entities/GameObject/GameObjectData.h1
-rw-r--r--src/server/game/Entities/Item/Item.cpp13
-rw-r--r--src/server/game/Entities/Item/Item.h1
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.cpp37
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h7
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp1110
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h458
-rw-r--r--src/server/game/Entities/Pet/Pet.h6
-rw-r--r--src/server/game/Entities/Pet/PetDefines.h17
-rw-r--r--src/server/game/Entities/Player/Player.cpp290
-rw-r--r--src/server/game/Entities/Player/Player.h12
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp7
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp35
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp5
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp3
-rw-r--r--src/server/game/Handlers/NPCHandler.cpp199
-rw-r--r--src/server/game/Handlers/PetHandler.cpp3
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp2
-rw-r--r--src/server/game/Mails/Mail.h16
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h23
-rw-r--r--src/server/game/Quests/QuestDef.cpp10
-rw-r--r--src/server/game/Quests/QuestDef.h62
-rw-r--r--src/server/game/Scenarios/Scenario.cpp4
-rw-r--r--src/server/game/Scenarios/Scenario.h1
-rw-r--r--src/server/game/Server/Packets/AchievementPackets.cpp5
-rw-r--r--src/server/game/Server/Packets/AchievementPackets.h3
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp3
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h3
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h7
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h31
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h1
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.cpp88
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.h12
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.cpp10
-rw-r--r--src/server/game/Server/Packets/CombatLogPacketsCommon.h10
-rw-r--r--src/server/game/Server/Packets/DuelPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/DuelPackets.h4
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/MailPackets.cpp40
-rw-r--r--src/server/game/Server/Packets/MailPackets.h4
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/PetPackets.cpp20
-rw-r--r--src/server/game/Server/Packets/PetPackets.h22
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp137
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h5
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h2
-rw-r--r--src/server/game/Server/Packets/ScenarioPackets.cpp37
-rw-r--r--src/server/game/Server/Packets/ScenarioPackets.h187
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp1
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h1
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp24
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2004
-rw-r--r--src/server/game/Server/WorldSession.h3
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h4
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp27
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h1
-rw-r--r--src/server/game/Spells/Spell.cpp2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp3
-rw-r--r--src/server/game/Spells/SpellInfo.cpp18
-rw-r--r--src/server/game/Spells/SpellInfo.h2
-rw-r--r--src/server/proto/Client/account_service.pb.cc607
-rw-r--r--src/server/proto/Client/account_service.pb.h460
-rw-r--r--src/server/proto/Client/account_types.pb.cc640
-rw-r--r--src/server/proto/Client/account_types.pb.h1528
-rw-r--r--src/server/proto/Client/authentication_service.pb.cc112
-rw-r--r--src/server/proto/Client/authentication_service.pb.h91
-rw-r--r--src/server/proto/Client/club_invitation.pb.cc26
-rw-r--r--src/server/proto/Client/club_invitation.pb.h34
-rw-r--r--src/server/proto/Client/club_member.pb.cc72
-rw-r--r--src/server/proto/Client/club_member.pb.h34
-rw-r--r--src/server/proto/Client/connection_service.pb.cc90
-rw-r--r--src/server/proto/Client/connection_service.pb.h34
-rw-r--r--src/server/proto/Client/friends_types.pb.cc69
-rw-r--r--src/server/proto/Client/global_extensions/method_options.pb.cc40
-rw-r--r--src/server/proto/Client/global_extensions/method_options.pb.h127
-rw-r--r--src/server/proto/Client/global_extensions/register_method_types.pb.cc99
-rw-r--r--src/server/proto/Client/global_extensions/register_method_types.pb.h84
-rw-r--r--src/server/proto/Client/invitation_types.pb.cc46
-rw-r--r--src/server/proto/Client/invitation_types.pb.h1
-rw-r--r--src/server/proto/Client/presence_listener.pb.cc37
-rw-r--r--src/server/proto/Client/presence_listener.pb.h68
-rw-r--r--src/server/scripts/Commands/cs_modify.cpp5
102 files changed, 7239 insertions, 2624 deletions
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);