aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-12-09 00:03:10 +0100
committerShauren <shauren.trinity@gmail.com>2020-12-09 00:03:10 +0100
commit364f6eec9a4d6d044666a172a2823161e0e3a418 (patch)
tree9793077f5f88cf79b61884cd288fe170db3f57bf
parent0beaee407e04ae9769d9cd9d3928a67ab750d54b (diff)
Core/GameObjects: Updated gameobject template structure to 9.0
-rw-r--r--sql/updates/world/master/2020_12_09_00_world.sql2
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp15
-rw-r--r--src/server/game/Entities/GameObject/GameObjectData.h168
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp8
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h9
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h2
7 files changed, 150 insertions, 56 deletions
diff --git a/sql/updates/world/master/2020_12_09_00_world.sql b/sql/updates/world/master/2020_12_09_00_world.sql
new file mode 100644
index 00000000000..f49fc758417
--- /dev/null
+++ b/sql/updates/world/master/2020_12_09_00_world.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `gameobject_template` ADD `ContentTuningId` int(11) NOT NULL DEFAULT '0' AFTER `Data33`;
+ALTER TABLE `gameobject_template` DROP `RequiredLevel`;
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index cc6e2bde27b..9247c0eb731 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -90,7 +90,7 @@ WorldPacket GameObjectTemplate::BuildQueryData(LocaleConstant loc) const
stats.QuestItems.push_back(item);
memcpy(stats.Data, raw.data, MAX_GAMEOBJECT_DATA * sizeof(int32));
- stats.RequiredLevel = RequiredLevel;
+ stats.ContentTuningId = ContentTuningId;
return *queryTemp.Write();
}
@@ -1898,12 +1898,13 @@ void GameObject::Use(Unit* user)
return;
//required lvl checks!
- uint8 level = player->getLevel();
- if (level < info->meetingStone.minLevel)
- return;
- level = targetPlayer->getLevel();
- if (level < info->meetingStone.minLevel)
- return;
+ if (Optional<ContentTuningLevels> userLevels = sDB2Manager.GetContentTuningData(info->ContentTuningId, player->m_playerData->CtrOptions->ContentTuningConditionMask))
+ if (player->getLevel() < userLevels->MaxLevel)
+ return;
+
+ if (Optional<ContentTuningLevels> targetLevels = sDB2Manager.GetContentTuningData(info->ContentTuningId, targetPlayer->m_playerData->CtrOptions->ContentTuningConditionMask))
+ if (targetPlayer->getLevel() < targetLevels->MaxLevel)
+ return;
if (info->entry == 194097)
spellId = 61994; // Ritual of Summoning
diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h
index 9b382bc84ab..fa6627cd2db 100644
--- a/src/server/game/Entities/GameObject/GameObjectData.h
+++ b/src/server/game/Entities/GameObject/GameObjectData.h
@@ -37,7 +37,7 @@ struct GameObjectTemplate
std::string castBarCaption;
std::string unk1;
float size;
- int32 RequiredLevel;
+ int32 ContentTuningId;
union
{
// 0 GAMEOBJECT_TYPE_DOOR
@@ -55,6 +55,7 @@ struct GameObjectTemplate
uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 10 Infinite AOI, enum { false, true, }; Default: false
uint32 NotLOSBlocking; // 11 Not LOS Blocking, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 12 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} door;
// 1 GAMEOBJECT_TYPE_BUTTON
struct
@@ -69,6 +70,7 @@ struct GameObjectTemplate
uint32 closeTextID; // 7 closeTextID, References: BroadcastText, NoValue = 0
uint32 requireLOS; // 8 require LOS, enum { false, true, }; Default: false
uint32 conditionID1; // 9 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 InteractRadiusOverride; // 10 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} button;
// 2 GAMEOBJECT_TYPE_QUESTGIVER
struct
@@ -85,6 +87,7 @@ struct GameObjectTemplate
uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false
uint32 conditionID1; // 10 conditionID1, References: PlayerCondition, NoValue = 0
uint32 NeverUsableWhileMounted; // 11 Never Usable While Mounted, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 12 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} questgiver;
// 3 GAMEOBJECT_TYPE_CHEST
struct
@@ -98,7 +101,7 @@ struct GameObjectTemplate
uint32 triggeredEvent; // 6 triggeredEvent, References: GameEvents, NoValue = 0
uint32 linkedTrap; // 7 linkedTrap, References: GameObjects, NoValue = 0
uint32 questID; // 8 questID, References: QuestV2, NoValue = 0
- uint32 level; // 9 level, int, Min value: 0, Max value: 65535, Default value: 0
+ uint32 InteractRadiusOverride; // 9 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 requireLOS; // 10 require LOS, enum { false, true, }; Default: false
uint32 leaveLoot; // 11 leaveLoot, enum { false, true, }; Default: false
uint32 notInCombat; // 12 notInCombat, enum { false, true, }; Default: false
@@ -107,9 +110,9 @@ struct GameObjectTemplate
uint32 usegrouplootrules; // 15 use group loot rules, enum { false, true, }; Default: false
uint32 floatingTooltip; // 16 floatingTooltip, enum { false, true, }; Default: false
uint32 conditionID1; // 17 conditionID1, References: PlayerCondition, NoValue = 0
- uint32 XPLevelRange; // 18 XP Level Range, References: ContentTuning, NoValue = 0
+ int32 Unused; // 18 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 xpDifficulty; // 19 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp
- uint32 lootLevel; // 20 lootLevel, int, Min value: 0, Max value: 123, Default value: 0
+ uint32 Unused2; // 20 Unused, int, Min value: 0, Max value: 123, Default value: 0
uint32 GroupXP; // 21 Group XP, enum { false, true, }; Default: false
uint32 DamageImmuneOK; // 22 Damage Immune OK, enum { false, true, }; Default: false
uint32 trivialSkillLow; // 23 trivialSkillLow, int, Min value: 0, Max value: 65535, Default value: 0
@@ -127,6 +130,7 @@ struct GameObjectTemplate
// 4 GAMEOBJECT_TYPE_BINDER
struct
{
+ uint32 InteractRadiusOverride; // 0 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} binder;
// 5 GAMEOBJECT_TYPE_GENERIC
struct
@@ -140,12 +144,13 @@ struct GameObjectTemplate
uint32 conditionID1; // 6 conditionID1, References: PlayerCondition, NoValue = 0
uint32 LargeAOI; // 7 Large AOI, enum { false, true, }; Default: false
uint32 UseGarrisonOwnerGuildColors; // 8 Use Garrison Owner Guild Colors, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 9 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} generic;
// 6 GAMEOBJECT_TYPE_TRAP
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
- uint32 level; // 1 level, int, Min value: 0, Max value: 65535, Default value: 0
+ uint32 Unused; // 1 Unused, int, Min value: 0, Max value: 65535, Default value: 0
uint32 radius; // 2 radius, int, Min value: 0, Max value: 100, Default value: 0
uint32 spell; // 3 spell, References: Spell, NoValue = 0
uint32 charges; // 4 charges, int, Min value: 0, Max value: 65535, Default value: 1
@@ -165,6 +170,7 @@ struct GameObjectTemplate
uint32 requireLOS; // 18 require LOS, enum { false, true, }; Default: false
uint32 TriggerCondition; // 19 Trigger Condition, References: PlayerCondition, NoValue = 0
uint32 Checkallunits; // 20 Check all units (spawned traps only check players), enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 21 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} trap;
// 7 GAMEOBJECT_TYPE_CHAIR
struct
@@ -174,6 +180,7 @@ struct GameObjectTemplate
uint32 onlyCreatorUse; // 2 onlyCreatorUse, enum { false, true, }; Default: false
uint32 triggeredEvent; // 3 triggeredEvent, References: GameEvents, NoValue = 0
uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 InteractRadiusOverride; // 5 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} chair;
// 8 GAMEOBJECT_TYPE_SPELL_FOCUS
struct
@@ -187,6 +194,7 @@ struct GameObjectTemplate
uint32 floatingTooltip; // 6 floatingTooltip, enum { false, true, }; Default: false
uint32 floatOnWater; // 7 floatOnWater, enum { false, true, }; Default: false
uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 InteractRadiusOverride; // 9 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} spellFocus;
// 9 GAMEOBJECT_TYPE_TEXT
struct
@@ -197,6 +205,7 @@ struct GameObjectTemplate
uint32 allowMounted; // 3 allowMounted, enum { false, true, }; Default: false
uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0
uint32 NeverUsableWhileMounted; // 5 Never Usable While Mounted, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 6 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} text;
// 10 GAMEOBJECT_TYPE_GOOBER
struct
@@ -233,6 +242,8 @@ struct GameObjectTemplate
uint32 SortFarZ; // 29 Sort Far Z, enum { false, true, }; Default: false
uint32 SyncAnimationtoObjectLifetime; // 30 Sync Animation to Object Lifetime (global track only), enum { false, true, }; Default: false
uint32 NoFuzzyHit; // 31 No Fuzzy Hit, enum { false, true, }; Default: false
+ uint32 LargeAOI; // 32 Large AOI, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 33 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} goober;
// 11 GAMEOBJECT_TYPE_TRANSPORT
struct
@@ -261,6 +272,7 @@ struct GameObjectTemplate
uint32 Reached10thfloor; // 21 Reached 10th floor, References: GameEvents, NoValue = 0
uint32 onlychargeheightcheck; // 22 only charge height check. (yards), int, Min value: 0, Max value: 65535, Default value: 0
uint32 onlychargetimecheck; // 23 only charge time check, int, Min value: 0, Max value: 65535, Default value: 0
+ uint32 InteractRadiusOverride; // 24 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} transport;
// 12 GAMEOBJECT_TYPE_AREADAMAGE
struct
@@ -273,6 +285,7 @@ struct GameObjectTemplate
uint32 autoClose; // 5 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0
uint32 closeTextID; // 7 closeTextID, References: BroadcastText, NoValue = 0
+ uint32 InteractRadiusOverride; // 8 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} areaDamage;
// 13 GAMEOBJECT_TYPE_CAMERA
struct
@@ -282,6 +295,7 @@ struct GameObjectTemplate
uint32 eventID; // 2 eventID, References: GameEvents, NoValue = 0
uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0
uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 InteractRadiusOverride; // 5 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} camera;
// 14 GAMEOBJECT_TYPE_MAP_OBJECT
struct
@@ -301,14 +315,18 @@ struct GameObjectTemplate
uint32 allowstopping; // 8 allow stopping, enum { false, true, }; Default: false
uint32 InitStopped; // 9 Init Stopped, enum { false, true, }; Default: false
uint32 TrueInfiniteAOI; // 10 True Infinite AOI (programmer only!), enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 11 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Allowareaexplorationwhileonthistransport;// 12 Allow area exploration while on this transport, enum { false, true, }; Default: false
} moTransport;
// 16 GAMEOBJECT_TYPE_DUEL_ARBITER
struct
{
+ uint32 InteractRadiusOverride; // 0 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} duelFlag;
// 17 GAMEOBJECT_TYPE_FISHINGNODE
struct
{
+ uint32 InteractRadiusOverride; // 0 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} fishingNode;
// 18 GAMEOBJECT_TYPE_RITUAL
struct
@@ -322,11 +340,13 @@ struct GameObjectTemplate
uint32 castersGrouped; // 6 castersGrouped, enum { false, true, }; Default: true
uint32 ritualNoTargetCheck; // 7 ritualNoTargetCheck, enum { false, true, }; Default: true
uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 InteractRadiusOverride; // 9 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} ritual;
// 19 GAMEOBJECT_TYPE_MAILBOX
struct
{
uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 InteractRadiusOverride; // 1 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} mailbox;
// 20 GAMEOBJECT_TYPE_DO_NOT_USE
struct
@@ -338,6 +358,7 @@ struct GameObjectTemplate
uint32 creatureID; // 0 creatureID, References: Creature, NoValue = 0
uint32 charges; // 1 charges, int, Min value: 0, Max value: 65535, Default value: 1
uint32 Preferonlyifinlineofsight; // 2 Prefer only if in line of sight (expensive), enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 3 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} guardPost;
// 22 GAMEOBJECT_TYPE_SPELLCASTER
struct
@@ -350,13 +371,15 @@ struct GameObjectTemplate
uint32 conditionID1; // 5 conditionID1, References: PlayerCondition, NoValue = 0
uint32 playerCast; // 6 playerCast, enum { false, true, }; Default: false
uint32 NeverUsableWhileMounted; // 7 Never Usable While Mounted, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 8 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} spellCaster;
// 23 GAMEOBJECT_TYPE_MEETINGSTONE
struct
{
- uint32 minLevel; // 0 minLevel, int, Min value: 0, Max value: 65535, Default value: 1
- uint32 maxLevel; // 1 maxLevel, int, Min value: 1, Max value: 65535, Default value: 60
+ uint32 Unused; // 0 Unused, int, Min value: 0, Max value: 65535, Default value: 1
+ uint32 Unused2; // 1 Unused, int, Min value: 1, Max value: 65535, Default value: 60
uint32 areaID; // 2 areaID, References: AreaTable, NoValue = 0
+ uint32 InteractRadiusOverride; // 3 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} meetingStone;
// 24 GAMEOBJECT_TYPE_FLAGSTAND
struct
@@ -374,6 +397,7 @@ struct GameObjectTemplate
uint32 GiganticAOI; // 10 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 11 Infinite AOI, enum { false, true, }; Default: false
uint32 cooldown; // 12 cooldown, int, Min value: 0, Max value: 2147483647, Default value: 3000
+ uint32 InteractRadiusOverride; // 13 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} flagStand;
// 25 GAMEOBJECT_TYPE_FISHINGHOLE
struct
@@ -383,6 +407,7 @@ struct GameObjectTemplate
uint32 minRestock; // 2 minRestock, int, Min value: 0, Max value: 65535, Default value: 0
uint32 maxRestock; // 3 maxRestock, int, Min value: 0, Max value: 65535, Default value: 0
uint32 open; // 4 open, References: Lock_, NoValue = 0
+ uint32 InteractRadiusOverride; // 5 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} fishingHole;
// 26 GAMEOBJECT_TYPE_FLAGDROP
struct
@@ -397,6 +422,7 @@ struct GameObjectTemplate
uint32 GiganticAOI; // 7 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 8 Infinite AOI, enum { false, true, }; Default: false
uint32 cooldown; // 9 cooldown, int, Min value: 0, Max value: 2147483647, Default value: 3000
+ uint32 InteractRadiusOverride; // 10 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} flagDrop;
// 27 GAMEOBJECT_TYPE_MINI_GAME
struct
@@ -437,6 +463,7 @@ struct GameObjectTemplate
uint32 UncontestedTime; // 25 Uncontested Time, int, Min value: 0, Max value: 65535, Default value: 0
uint32 FrequentHeartbeat; // 26 Frequent Heartbeat, enum { false, true, }; Default: false
uint32 EnablingWorldStateExpression; // 27 Enabling World State Expression, References: WorldStateExpression, NoValue = 0
+ uint32 InteractRadiusOverride; // 28 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} controlZone;
// 30 GAMEOBJECT_TYPE_AURA_GENERATOR
struct
@@ -448,6 +475,7 @@ struct GameObjectTemplate
uint32 auraID2; // 4 auraID2, References: Spell, NoValue = 0
uint32 conditionID2; // 5 conditionID2, References: PlayerCondition, NoValue = 0
uint32 serverOnly; // 6 serverOnly, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 7 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} auraGenerator;
// 31 GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY
struct
@@ -463,6 +491,7 @@ struct GameObjectTemplate
uint32 LargeAOI; // 8 Large AOI, enum { false, true, }; Default: false
uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false
uint32 Legacy; // 10 Legacy, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 11 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} dungeonDifficulty;
// 32 GAMEOBJECT_TYPE_BARBER_CHAIR
struct
@@ -470,6 +499,7 @@ struct GameObjectTemplate
uint32 chairheight; // 0 chairheight, int, Min value: 0, Max value: 2, Default value: 1
int32 HeightOffset; // 1 Height Offset (inches), int, Min value: -100, Max value: 100, Default value: 0
uint32 SitAnimKit; // 2 Sit Anim Kit, References: AnimKit, NoValue = 0
+ uint32 InteractRadiusOverride; // 3 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} barberChair;
// 33 GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING
struct
@@ -501,11 +531,13 @@ struct GameObjectTemplate
int32 Thexoffsetofthedestructiblenameplateifitisenabled;// 24 The x offset (in hundredths) of the destructible nameplate, if it is enabled, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Theyoffsetofthedestructiblenameplateifitisenabled;// 25 The y offset (in hundredths) of the destructible nameplate, if it is enabled, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Thezoffsetofthedestructiblenameplateifitisenabled;// 26 The z offset (in hundredths) of the destructible nameplate, if it is enabled, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 InteractRadiusOverride; // 27 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} destructibleBuilding;
// 34 GAMEOBJECT_TYPE_GUILD_BANK
struct
{
uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 InteractRadiusOverride; // 1 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} guildbank;
// 35 GAMEOBJECT_TYPE_TRAPDOOR
struct
@@ -518,6 +550,7 @@ struct GameObjectTemplate
uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 6 Infinite AOI, enum { false, true, }; Default: false
uint32 DoorisOpaque; // 7 Door is Opaque (Disable portal on close), enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 8 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} trapdoor;
// 36 GAMEOBJECT_TYPE_NEW_FLAG
struct
@@ -536,23 +569,27 @@ struct GameObjectTemplate
uint32 worldState1; // 11 worldState1, References: WorldState, NoValue = 0
uint32 ReturnonDefenderInteract; // 12 Return on Defender Interact, enum { false, true, }; Default: false
uint32 SpawnVignette; // 13 Spawn Vignette, References: vignette, NoValue = 0
+ uint32 InteractRadiusOverride; // 14 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} newflag;
// 37 GAMEOBJECT_TYPE_NEW_FLAG_DROP
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 SpawnVignette; // 1 Spawn Vignette, References: vignette, NoValue = 0
+ uint32 InteractRadiusOverride; // 2 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} newflagdrop;
// 38 GAMEOBJECT_TYPE_GARRISON_BUILDING
struct
{
int32 SpawnMap; // 0 Spawn Map, References: Map, NoValue = -1
+ uint32 InteractRadiusOverride; // 1 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonBuilding;
// 39 GAMEOBJECT_TYPE_GARRISON_PLOT
struct
{
uint32 PlotInstance; // 0 Plot Instance, References: GarrPlotInstance, NoValue = 0
int32 SpawnMap; // 1 Spawn Map, References: Map, NoValue = -1
+ uint32 InteractRadiusOverride; // 2 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonPlot;
// 40 GAMEOBJECT_TYPE_CLIENT_CREATURE
struct
@@ -592,6 +629,7 @@ struct GameObjectTemplate
uint32 SpellVisual4; // 20 Spell Visual 4, References: SpellVisual, NoValue = 0
uint32 SpellVisual5; // 21 Spell Visual 5, References: SpellVisual, NoValue = 0
uint32 SpawnVignette; // 22 Spawn Vignette, References: vignette, NoValue = 0
+ uint32 InteractRadiusOverride; // 23 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} capturePoint;
// 43 GAMEOBJECT_TYPE_PHASEABLE_MO
struct
@@ -600,12 +638,14 @@ struct GameObjectTemplate
int32 AreaNameSet; // 1 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 DoodadSetA; // 2 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 DoodadSetB; // 3 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 InteractRadiusOverride; // 4 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} phaseableMO;
// 44 GAMEOBJECT_TYPE_GARRISON_MONUMENT
struct
{
uint32 TrophyTypeID; // 0 Trophy Type ID, References: TrophyType, NoValue = 0
uint32 TrophyInstanceID; // 1 Trophy Instance ID, References: TrophyInstance, NoValue = 0
+ uint32 InteractRadiusOverride; // 2 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonMonument;
// 45 GAMEOBJECT_TYPE_GARRISON_SHIPMENT
struct
@@ -613,11 +653,13 @@ struct GameObjectTemplate
uint32 ShipmentContainer; // 0 Shipment Container, References: CharShipmentContainer, NoValue = 0
uint32 GiganticAOI; // 1 Gigantic AOI, enum { false, true, }; Default: false
uint32 LargeAOI; // 2 Large AOI, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 3 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonShipment;
// 46 GAMEOBJECT_TYPE_GARRISON_MONUMENT_PLAQUE
struct
{
uint32 TrophyInstanceID; // 0 Trophy Instance ID, References: TrophyInstance, NoValue = 0
+ uint32 InteractRadiusOverride; // 1 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonMonumentPlaque;
// 47 GAMEOBJECT_TYPE_ITEM_FORGE
struct
@@ -627,7 +669,9 @@ struct GameObjectTemplate
uint32 IgnoreBoundingBox; // 2 Ignore Bounding Box, enum { false, true, }; Default: false
uint32 CameraMode; // 3 Camera Mode, References: CameraMode, NoValue = 0
uint32 FadeRegionRadius; // 4 Fade Region Radius, int, Min value: 0, Max value: 2147483647, Default value: 0
- uint32 ForgeType; // 5 Forge Type, enum { Artifact Forge, Relic Forge, Heart Forge, }; Default: Relic Forge
+ uint32 ForgeType; // 5 Forge Type, enum { Artifact Forge, Relic Forge, Heart Forge, Soulbind Forge, Anima Reservoir, }; Default: Relic Forge
+ uint32 InteractRadiusOverride; // 6 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 GarrTalentTreeID; // 7 GarrTalentTree ID, References: GarrTalentTree, NoValue = 0
} itemForge;
// 48 GAMEOBJECT_TYPE_UI_LINK
struct
@@ -637,17 +681,19 @@ struct GameObjectTemplate
uint32 GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false
uint32 spellFocusType; // 3 spellFocusType, References: SpellFocusObject, NoValue = 0
uint32 radius; // 4 radius, int, Min value: 0, Max value: 50, Default value: 10
+ uint32 InteractRadiusOverride; // 5 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} UILink;
// 49 GAMEOBJECT_TYPE_KEYSTONE_RECEPTACLE
struct
{
+ uint32 InteractRadiusOverride; // 0 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} KeystoneReceptacle;
// 50 GAMEOBJECT_TYPE_GATHERING_NODE
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 chestLoot; // 1 chestLoot, References: Treasure, NoValue = 0
- uint32 level; // 2 level, int, Min value: 0, Max value: 65535, Default value: 0
+ uint32 Unused; // 2 Unused, int, Min value: 0, Max value: 65535, Default value: 0
uint32 notInCombat; // 3 notInCombat, enum { false, true, }; Default: false
uint32 trivialSkillLow; // 4 trivialSkillLow, int, Min value: 0, Max value: 65535, Default value: 0
uint32 trivialSkillHigh; // 5 trivialSkillHigh, int, Min value: 0, Max value: 65535, Default value: 0
@@ -657,7 +703,7 @@ struct GameObjectTemplate
uint32 openTextID; // 9 openTextID, References: BroadcastText, NoValue = 0
uint32 floatingTooltip; // 10 floatingTooltip, enum { false, true, }; Default: false
uint32 conditionID1; // 11 conditionID1, References: PlayerCondition, NoValue = 0
- uint32 XPLevelRange; // 12 XP Level Range, References: ContentTuning, NoValue = 0
+ int32 Unused2; // 12 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 xpDifficulty; // 13 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp
uint32 spell; // 14 spell, References: Spell, NoValue = 0
uint32 GiganticAOI; // 15 Gigantic AOI, enum { false, true, }; Default: false
@@ -669,6 +715,7 @@ struct GameObjectTemplate
uint32 PlayOpenAnimationonOpening; // 21 Play Open Animation on Opening, enum { false, true, }; Default: false
uint32 turnpersonallootsecurityoff; // 22 turn personal loot security off, enum { false, true, }; Default: false
uint32 ClearObjectVignetteonOpening; // 23 Clear Object Vignette on Opening, enum { false, true, }; Default: false
+ uint32 InteractRadiusOverride; // 24 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} gatheringNode;
// 51 GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD
struct
@@ -677,6 +724,7 @@ struct GameObjectTemplate
uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0
uint32 open; // 2 open, References: Lock_, NoValue = 0
uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0
+ uint32 InteractRadiusOverride; // 4 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} challengeModeReward;
// 52 GAMEOBJECT_TYPE_MULTI
struct
@@ -698,6 +746,7 @@ struct GameObjectTemplate
uint32 DoodadSetC; // 3 Doodad Set C, int, Min value: 0, Max value: 2147483647, Default value: 0
int32 SpawnMap; // 4 Spawn Map, References: Map, NoValue = -1
int32 AreaNameSet; // 5 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 InteractRadiusOverride; // 6 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} siegeableMO;
// 55 GAMEOBJECT_TYPE_PVP_REWARD
struct
@@ -706,15 +755,50 @@ struct GameObjectTemplate
uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0
uint32 open; // 2 open, References: Lock_, NoValue = 0
uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0
+ uint32 InteractRadiusOverride; // 4 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
} pvpReward;
- // 56 GAMEOBJECT_TYPE_FUTURE_PATCH_1
+ // 56 GAMEOBJECT_TYPE_PLAYER_CHOICE_CHEST
struct
{
- } futurePatch1;
- // 57 GAMEOBJECT_TYPE_FUTURE_PATCH_2
+ uint32 spell; // 0 spell, References: Spell, NoValue = 0
+ uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0
+ uint32 GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 PlayerChoice; // 3 Player Choice, References: PlayerChoice, NoValue = 0
+ uint32 MawPowerFilter; // 4 Maw Power Filter, References: MawPowerFilter, NoValue = 0
+ uint32 Script; // 5 Script, References: SpellScript, NoValue = 0
+ uint32 SpellVisual1; // 6 Spell Visual 1, References: SpellVisual, NoValue = 0
+ uint32 InteractRadiusOverride; // 7 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Dontupdateplayerinteractability; // 8 Don't update player interactability, enum { false, true, }; Default: false
+ } playerChoiceChest;
+ // 57 GAMEOBJECT_TYPE_LEGENDARY_FORGE
+ struct
+ {
+ uint32 PlayerChoice; // 0 Player Choice, References: PlayerChoice, NoValue = 0
+ uint32 CustomItemBonusFilter; // 1 Custom Item Bonus Filter, References: CustomItemBonusFilter, NoValue = 0
+ uint32 InteractRadiusOverride; // 2 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
+ } legendaryForge;
+ // 58 GAMEOBJECT_TYPE_GARR_TALENT_TREE
+ struct
+ {
+ uint32 UiMapID; // 0 Ui Map ID, References: UiMap, NoValue = 0
+ uint32 GarrTalentTreeID; // 1 GarrTalentTree ID, References: GarrTalentTree, NoValue = 0
+ uint32 InteractRadiusOverride; // 2 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
+ } garrTalentTree;
+ // 59 GAMEOBJECT_TYPE_WEEKLY_REWARD_CHEST
+ struct
+ {
+ uint32 WhenAvailable; // 0 When Available, References: GameObjectDisplayInfo, NoValue = 0
+ uint32 open; // 1 open, References: Lock_, NoValue = 0
+ uint32 InteractRadiusOverride; // 2 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
+ } weeklyRewardChest;
+ // 60 GAMEOBJECT_TYPE_CLIENT_MODEL
struct
{
- } futurePatch2;
+ uint32 LargeAOI; // 0 Large AOI, enum { false, true, }; Default: false
+ uint32 GiganticAOI; // 1 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 InfiniteAOI; // 2 Infinite AOI, enum { false, true, }; Default: false
+ uint32 TrueInfiniteAOI; // 3 True Infinite AOI (programmer only!), enum { false, true, }; Default: false
+ } clientModel;
struct
{
uint32 data[MAX_GAMEOBJECT_DATA];
@@ -753,23 +837,24 @@ struct GameObjectTemplate
{
switch (type)
{
- case GAMEOBJECT_TYPE_DOOR: return door.open;
- case GAMEOBJECT_TYPE_BUTTON: return button.open;
- case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.open;
- case GAMEOBJECT_TYPE_CHEST: return chest.open;
- case GAMEOBJECT_TYPE_TRAP: return trap.open;
- case GAMEOBJECT_TYPE_GOOBER: return goober.open;
- case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.open;
- case GAMEOBJECT_TYPE_CAMERA: return camera.open;
- case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.open;
- case GAMEOBJECT_TYPE_FISHINGHOLE: return fishingHole.open;
- case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.open;
- case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.open;
- case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.open;
- case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.open;
- case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.open;
+ case GAMEOBJECT_TYPE_DOOR: return door.open;
+ case GAMEOBJECT_TYPE_BUTTON: return button.open;
+ case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.open;
+ case GAMEOBJECT_TYPE_CHEST: return chest.open;
+ case GAMEOBJECT_TYPE_TRAP: return trap.open;
+ case GAMEOBJECT_TYPE_GOOBER: return goober.open;
+ case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.open;
+ case GAMEOBJECT_TYPE_CAMERA: return camera.open;
+ case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.open;
+ case GAMEOBJECT_TYPE_FISHINGHOLE: return fishingHole.open;
+ case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.open;
+ case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.open;
+ case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.open;
+ case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.open;
+ case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.open;
case GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD: return challengeModeReward.open;
- case GAMEOBJECT_TYPE_PVP_REWARD: return pvpReward.open;
+ case GAMEOBJECT_TYPE_PVP_REWARD: return pvpReward.open;
+ case GAMEOBJECT_TYPE_WEEKLY_REWARD_CHEST: return weeklyRewardChest.open;
default: return 0;
}
}
@@ -814,19 +899,17 @@ struct GameObjectTemplate
uint32 GetAutoCloseTime() const
{
- uint32 autoCloseTime = 0;
switch (type)
{
- case GAMEOBJECT_TYPE_DOOR: autoCloseTime = door.autoClose; break;
- case GAMEOBJECT_TYPE_BUTTON: autoCloseTime = button.autoClose; break;
- case GAMEOBJECT_TYPE_TRAP: autoCloseTime = trap.autoClose; break;
- case GAMEOBJECT_TYPE_GOOBER: autoCloseTime = goober.autoClose; break;
- case GAMEOBJECT_TYPE_TRANSPORT: autoCloseTime = transport.autoClose; break;
- case GAMEOBJECT_TYPE_AREADAMAGE: autoCloseTime = areaDamage.autoClose; break;
- case GAMEOBJECT_TYPE_TRAPDOOR: autoCloseTime = trapdoor.autoClose; break;
- default: break;
+ case GAMEOBJECT_TYPE_DOOR: return door.autoClose;
+ case GAMEOBJECT_TYPE_BUTTON: return button.autoClose;
+ case GAMEOBJECT_TYPE_TRAP: return trap.autoClose;
+ case GAMEOBJECT_TYPE_GOOBER: return goober.autoClose;
+ case GAMEOBJECT_TYPE_TRANSPORT: return transport.autoClose;
+ case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.autoClose;
+ case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.autoClose;
+ default: return 0;
}
- return autoCloseTime; // prior to 3.0.3, conversion was / 0x10000;
}
uint32 GetLootId() const
@@ -881,6 +964,7 @@ struct GameObjectTemplate
case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.InfiniteAOI != 0;
case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.InfiniteAOI != 0;
case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.InfiniteAOI != 0;
+ case GAMEOBJECT_TYPE_CLIENT_MODEL: return newflag.InfiniteAOI != 0;
default: return false;
}
}
@@ -908,6 +992,8 @@ struct GameObjectTemplate
case GAMEOBJECT_TYPE_GARRISON_SHIPMENT: return garrisonShipment.GiganticAOI != 0;
case GAMEOBJECT_TYPE_UI_LINK: return UILink.GiganticAOI != 0;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.GiganticAOI != 0;
+ case GAMEOBJECT_TYPE_PLAYER_CHOICE_CHEST: return gatheringNode.GiganticAOI != 0;
+ case GAMEOBJECT_TYPE_CLIENT_MODEL: return gatheringNode.GiganticAOI != 0;
default: return false;
}
}
@@ -918,10 +1004,12 @@ struct GameObjectTemplate
{
case GAMEOBJECT_TYPE_CHEST: return chest.LargeAOI != 0;
case GAMEOBJECT_TYPE_GENERIC: return generic.LargeAOI != 0;
+ case GAMEOBJECT_TYPE_GOOBER: return goober.LargeAOI != 0;
case GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY: return dungeonDifficulty.LargeAOI != 0;
case GAMEOBJECT_TYPE_GARRISON_SHIPMENT: return garrisonShipment.LargeAOI != 0;
case GAMEOBJECT_TYPE_ITEM_FORGE: return itemForge.LargeAOI != 0;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.LargeAOI != 0;
+ case GAMEOBJECT_TYPE_CLIENT_MODEL: return clientModel.LargeAOI != 0;
default: return false;
}
}
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 2b5be2e3fd5..c5f4f51599a 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -7235,7 +7235,7 @@ void ObjectMgr::LoadGameObjectTemplate()
go.size = db2go->Scale;
memset(go.raw.data, 0, sizeof(go.raw.data));
memcpy(go.raw.data, db2go->PropValue, std::min(sizeof(db2go->PropValue), sizeof(go.raw.data)));
- go.RequiredLevel = 0;
+ go.ContentTuningId = 0;
go.ScriptId = 0;
}
@@ -7245,8 +7245,8 @@ void ObjectMgr::LoadGameObjectTemplate()
"Data0, Data1, Data2, Data3, Data4, Data5, Data6, Data7, Data8, Data9, Data10, Data11, Data12, "
// 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
"Data13, Data14, Data15, Data16, Data17, Data18, Data19, Data20, Data21, Data22, Data23, Data24, Data25, Data26, Data27, Data28, "
- // 37 38 39 40 41 42 43 44
- "Data29, Data30, Data31, Data32, Data33, RequiredLevel, AIName, ScriptName "
+ // 37 38 39 40 41 42 43 44
+ "Data29, Data30, Data31, Data32, Data33, ContentTuningId, AIName, ScriptName "
"FROM gameobject_template");
if (!result)
@@ -7276,7 +7276,7 @@ void ObjectMgr::LoadGameObjectTemplate()
for (uint8 i = 0; i < MAX_GAMEOBJECT_DATA; ++i)
got.raw.data[i] = fields[8 + i].GetUInt32();
- got.RequiredLevel = fields[42].GetInt32();
+ got.ContentTuningId = fields[42].GetInt32();
got.AIName = fields[43].GetString();
got.ScriptId = GetScriptId(fields[44].GetString());
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index a80b610f59c..621100c4033 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -2621,11 +2621,14 @@ enum GameobjectTypes : uint8
GAMEOBJECT_TYPE_SIEGEABLE_MULTI = 53,
GAMEOBJECT_TYPE_SIEGEABLE_MO = 54,
GAMEOBJECT_TYPE_PVP_REWARD = 55,
- GAMEOBJECT_TYPE_FUTURE_PATCH_1 = 56,
- GAMEOBJECT_TYPE_FUTURE_PATCH_2 = 57
+ GAMEOBJECT_TYPE_PLAYER_CHOICE_CHEST = 56,
+ GAMEOBJECT_TYPE_LEGENDARY_FORGE = 57,
+ GAMEOBJECT_TYPE_GARR_TALENT_TREE = 58,
+ GAMEOBJECT_TYPE_WEEKLY_REWARD_CHEST = 59,
+ GAMEOBJECT_TYPE_CLIENT_MODEL = 60
};
-#define MAX_GAMEOBJECT_TYPE 58 // sending to client this or greater value can crash client.
+#define MAX_GAMEOBJECT_TYPE 61 // sending to client this or greater value can crash client.
#define MAX_GAMEOBJECT_DATA 34 // Max number of uint32 vars in gameobject_template data field
enum GameObjectFlags
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index d1a113b9ed6..96e29b1477d 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -292,7 +292,7 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write()
if (!Stats.QuestItems.empty())
statsData.append(Stats.QuestItems.data(), Stats.QuestItems.size());
- statsData << int32(Stats.RequiredLevel);
+ statsData << int32(Stats.ContentTuningId);
}
_worldPacket << uint32(statsData.size());
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index b7279d18964..5cca2e916c5 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -227,7 +227,7 @@ namespace WorldPackets
uint32 Data[MAX_GAMEOBJECT_DATA];
float Size = 0.0f;
std::vector<int32> QuestItems;
- uint32 RequiredLevel = 0;
+ uint32 ContentTuningId = 0;
};
class QueryGameObjectResponse final : public ServerPacket