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