/* * Copyright (C) 2008-2018 TrinityCore * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef GameObjectData_h__ #define GameObjectData_h__ #include "Common.h" #include "SharedDefines.h" #include #include // from `gameobject_template` struct GameObjectTemplate { uint32 entry; uint32 type; uint32 displayId; std::string name; std::string IconName; std::string castBarCaption; std::string unk1; float size; int32 RequiredLevel; union { // 0 GAMEOBJECT_TYPE_DOOR struct { uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: false uint32 open; // 1 open, References: Lock_, NoValue = 0 uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000 uint32 noDamageImmune; // 3 noDamageImmune, enum { false, true, }; Default: false uint32 openTextID; // 4 openTextID, References: BroadcastText, NoValue = 0 uint32 closeTextID; // 5 closeTextID, References: BroadcastText, NoValue = 0 uint32 IgnoredByPathing; // 6 Ignored By Pathing, enum { false, true, }; Default: false uint32 conditionID1; // 7 conditionID1, References: PlayerCondition, NoValue = 0 uint32 DoorisOpaque; // 8 Door is Opaque (Disable portal on close), enum { false, true, }; Default: true 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 } door; // 1 GAMEOBJECT_TYPE_BUTTON struct { uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: false uint32 open; // 1 open, References: Lock_, NoValue = 0 uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000 uint32 linkedTrap; // 3 linkedTrap, References: GameObjects, NoValue = 0 uint32 noDamageImmune; // 4 noDamageImmune, enum { false, true, }; Default: false uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0 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 } button; // 2 GAMEOBJECT_TYPE_QUESTGIVER struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 uint32 questGiver; // 1 questGiver, References: QuestGiver, NoValue = 0 uint32 pageMaterial; // 2 pageMaterial, References: PageTextMaterial, NoValue = 0 uint32 gossipID; // 3 gossipID, References: Gossip, NoValue = 0 uint32 customAnim; // 4 customAnim, int, Min value: 0, Max value: 4, Default value: 0 uint32 noDamageImmune; // 5 noDamageImmune, enum { false, true, }; Default: false uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0 uint32 requireLOS; // 7 require LOS, enum { false, true, }; Default: false uint32 allowMounted; // 8 allowMounted, enum { false, true, }; Default: false 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 } questgiver; // 3 GAMEOBJECT_TYPE_CHEST struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 uint32 chestLoot; // 1 chestLoot, References: Treasure, NoValue = 0 uint32 chestRestockTime; // 2 chestRestockTime, int, Min value: 0, Max value: 1800000, Default value: 0 uint32 consumable; // 3 consumable, enum { false, true, }; Default: false uint32 minRestock; // 4 minRestock, int, Min value: 0, Max value: 65535, Default value: 0 uint32 maxRestock; // 5 maxRestock, int, Min value: 0, Max value: 65535, Default value: 0 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 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 uint32 logloot; // 13 log loot, enum { false, true, }; Default: false uint32 openTextID; // 14 openTextID, References: BroadcastText, NoValue = 0 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 int32 xpLevel; // 18 xpLevel, int, Min value: -1, Max value: 123, 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 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 uint32 trivialSkillHigh; // 24 trivialSkillHigh, int, Min value: 0, Max value: 65535, Default value: 0 uint32 DungeonEncounter; // 25 Dungeon Encounter, References: DungeonEncounter, NoValue = 0 uint32 spell; // 26 spell, References: Spell, NoValue = 0 uint32 GiganticAOI; // 27 Gigantic AOI, enum { false, true, }; Default: false uint32 LargeAOI; // 28 Large AOI, enum { false, true, }; Default: false uint32 SpawnVignette; // 29 Spawn Vignette, References: vignette, NoValue = 0 uint32 chestPersonalLoot; // 30 chest Personal Loot, References: Treasure, NoValue = 0 uint32 turnpersonallootsecurityoff; // 31 turn personal loot security off, enum { false, true, }; Default: false uint32 ChestProperties; // 32 Chest Properties, References: ChestProperties, NoValue = 0 } chest; // 4 GAMEOBJECT_TYPE_BINDER struct { } binder; // 5 GAMEOBJECT_TYPE_GENERIC struct { uint32 floatingTooltip; // 0 floatingTooltip, enum { false, true, }; Default: false uint32 highlight; // 1 highlight, enum { false, true, }; Default: true uint32 serverOnly; // 2 serverOnly, enum { false, true, }; Default: false uint32 GiganticAOI; // 3 Gigantic AOI, enum { false, true, }; Default: false uint32 floatOnWater; // 4 floatOnWater, enum { false, true, }; Default: false uint32 questID; // 5 questID, References: QuestV2, NoValue = 0 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 } 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 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 uint32 cooldown; // 5 cooldown, int, Min value: 0, Max value: 65535, Default value: 0 uint32 autoClose; // 6 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 startDelay; // 7 startDelay, int, Min value: 0, Max value: 65535, Default value: 0 uint32 serverOnly; // 8 serverOnly, enum { false, true, }; Default: false uint32 stealthed; // 9 stealthed, enum { false, true, }; Default: false uint32 GiganticAOI; // 10 Gigantic AOI, enum { false, true, }; Default: false uint32 stealthAffected; // 11 stealthAffected, enum { false, true, }; Default: false uint32 openTextID; // 12 openTextID, References: BroadcastText, NoValue = 0 uint32 closeTextID; // 13 closeTextID, References: BroadcastText, NoValue = 0 uint32 IgnoreTotems; // 14 Ignore Totems, enum { false, true, }; Default: false uint32 conditionID1; // 15 conditionID1, References: PlayerCondition, NoValue = 0 uint32 playerCast; // 16 playerCast, enum { false, true, }; Default: false uint32 SummonerTriggered; // 17 Summoner Triggered, enum { false, true, }; Default: false uint32 requireLOS; // 18 require LOS, enum { false, true, }; Default: false } trap; // 7 GAMEOBJECT_TYPE_CHAIR struct { uint32 chairslots; // 0 chairslots, int, Min value: 1, Max value: 5, Default value: 1 uint32 chairheight; // 1 chairheight, int, Min value: 0, Max value: 2, Default value: 1 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 } chair; // 8 GAMEOBJECT_TYPE_SPELL_FOCUS struct { uint32 spellFocusType; // 0 spellFocusType, References: SpellFocusObject, NoValue = 0 uint32 radius; // 1 radius, int, Min value: 0, Max value: 50, Default value: 10 uint32 linkedTrap; // 2 linkedTrap, References: GameObjects, NoValue = 0 uint32 serverOnly; // 3 serverOnly, enum { false, true, }; Default: false uint32 questID; // 4 questID, References: QuestV2, NoValue = 0 uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false 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 } spellFocus; // 9 GAMEOBJECT_TYPE_TEXT struct { uint32 pageID; // 0 pageID, References: PageText, NoValue = 0 uint32 language; // 1 language, References: Languages, NoValue = 0 uint32 pageMaterial; // 2 pageMaterial, References: PageTextMaterial, NoValue = 0 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 } text; // 10 GAMEOBJECT_TYPE_GOOBER struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 uint32 questID; // 1 questID, References: QuestV2, NoValue = 0 uint32 eventID; // 2 eventID, References: GameEvents, NoValue = 0 uint32 autoClose; // 3 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000 uint32 customAnim; // 4 customAnim, int, Min value: 0, Max value: 4, Default value: 0 uint32 consumable; // 5 consumable, enum { false, true, }; Default: false uint32 cooldown; // 6 cooldown, int, Min value: 0, Max value: 65535, Default value: 0 uint32 pageID; // 7 pageID, References: PageText, NoValue = 0 uint32 language; // 8 language, References: Languages, NoValue = 0 uint32 pageMaterial; // 9 pageMaterial, References: PageTextMaterial, NoValue = 0 uint32 spell; // 10 spell, References: Spell, NoValue = 0 uint32 noDamageImmune; // 11 noDamageImmune, enum { false, true, }; Default: false uint32 linkedTrap; // 12 linkedTrap, References: GameObjects, NoValue = 0 uint32 GiganticAOI; // 13 Gigantic AOI, enum { false, true, }; Default: false uint32 openTextID; // 14 openTextID, References: BroadcastText, NoValue = 0 uint32 closeTextID; // 15 closeTextID, References: BroadcastText, NoValue = 0 uint32 requireLOS; // 16 require LOS, enum { false, true, }; Default: false uint32 allowMounted; // 17 allowMounted, enum { false, true, }; Default: false uint32 floatingTooltip; // 18 floatingTooltip, enum { false, true, }; Default: false uint32 gossipID; // 19 gossipID, References: Gossip, NoValue = 0 uint32 AllowMultiInteract; // 20 Allow Multi-Interact, enum { false, true, }; Default: false uint32 floatOnWater; // 21 floatOnWater, enum { false, true, }; Default: false uint32 conditionID1; // 22 conditionID1, References: PlayerCondition, NoValue = 0 uint32 playerCast; // 23 playerCast, enum { false, true, }; Default: false uint32 SpawnVignette; // 24 Spawn Vignette, References: vignette, NoValue = 0 uint32 startOpen; // 25 startOpen, enum { false, true, }; Default: false uint32 DontPlayOpenAnim; // 26 Dont Play Open Anim, enum { false, true, }; Default: false uint32 IgnoreBoundingBox; // 27 Ignore Bounding Box, enum { false, true, }; Default: false uint32 NeverUsableWhileMounted; // 28 Never Usable While Mounted, enum { false, true, }; Default: false 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 } goober; // 11 GAMEOBJECT_TYPE_TRANSPORT struct { uint32 Timeto2ndfloor; // 0 Time to 2nd floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached1stfloor; // 3 Reached 1st floor, References: GameEvents, NoValue = 0 uint32 Reached2ndfloor; // 4 Reached 2nd floor, References: GameEvents, NoValue = 0 int32 SpawnMap; // 5 Spawn Map, References: Map, NoValue = -1 uint32 Timeto3rdfloor; // 6 Time to 3rd floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached3rdfloor; // 7 Reached 3rd floor, References: GameEvents, NoValue = 0 uint32 Timeto4thfloor; // 8 Time to 4th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached4thfloor; // 9 Reached 4th floor, References: GameEvents, NoValue = 0 uint32 Timeto5thfloor; // 10 Time to 5th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached5thfloor; // 11 Reached 5th floor, References: GameEvents, NoValue = 0 uint32 Timeto6thfloor; // 12 Time to 6th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached6thfloor; // 13 Reached 6th floor, References: GameEvents, NoValue = 0 uint32 Timeto7thfloor; // 14 Time to 7th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached7thfloor; // 15 Reached 7th floor, References: GameEvents, NoValue = 0 uint32 Timeto8thfloor; // 16 Time to 8th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached8thfloor; // 17 Reached 8th floor, References: GameEvents, NoValue = 0 uint32 Timeto9thfloor; // 18 Time to 9th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached9thfloor; // 19 Reached 9th floor, References: GameEvents, NoValue = 0 uint32 Timeto10thfloor; // 20 Time to 10th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 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 } transport; // 12 GAMEOBJECT_TYPE_AREADAMAGE struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 uint32 radius; // 1 radius, int, Min value: 0, Max value: 50, Default value: 3 uint32 damageMin; // 2 damageMin, int, Min value: 0, Max value: 65535, Default value: 0 uint32 damageMax; // 3 damageMax, int, Min value: 0, Max value: 65535, Default value: 0 uint32 damageSchool; // 4 damageSchool, int, Min value: 0, Max value: 65535, Default value: 0 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 } areaDamage; // 13 GAMEOBJECT_TYPE_CAMERA struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 uint32 camera; // 1 camera, References: CinematicSequences, NoValue = 0 uint32 eventID; // 2 eventID, References: GameEvents, NoValue = 0 uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0 uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0 } camera; // 14 GAMEOBJECT_TYPE_MAP_OBJECT struct { } mapobject; // 15 GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT struct { uint32 taxiPathID; // 0 taxiPathID, References: TaxiPath, NoValue = 0 uint32 moveSpeed; // 1 moveSpeed, int, Min value: 1, Max value: 60, Default value: 1 uint32 accelRate; // 2 accelRate, int, Min value: 1, Max value: 20, Default value: 1 uint32 startEventID; // 3 startEventID, References: GameEvents, NoValue = 0 uint32 stopEventID; // 4 stopEventID, References: GameEvents, NoValue = 0 uint32 transportPhysics; // 5 transportPhysics, References: TransportPhysics, NoValue = 0 int32 SpawnMap; // 6 Spawn Map, References: Map, NoValue = -1 uint32 worldState1; // 7 worldState1, References: WorldState, NoValue = 0 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 } moTransport; // 16 GAMEOBJECT_TYPE_DUEL_ARBITER struct { } duelFlag; // 17 GAMEOBJECT_TYPE_FISHINGNODE struct { } fishingNode; // 18 GAMEOBJECT_TYPE_RITUAL struct { uint32 casters; // 0 casters, int, Min value: 1, Max value: 10, Default value: 1 uint32 spell; // 1 spell, References: Spell, NoValue = 0 uint32 animSpell; // 2 animSpell, References: Spell, NoValue = 0 uint32 ritualPersistent; // 3 ritualPersistent, enum { false, true, }; Default: false uint32 casterTargetSpell; // 4 casterTargetSpell, References: Spell, NoValue = 0 uint32 casterTargetSpellTargets; // 5 casterTargetSpellTargets, int, Min value: 1, Max value: 10, Default value: 1 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 } ritual; // 19 GAMEOBJECT_TYPE_MAILBOX struct { uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0 } mailbox; // 20 GAMEOBJECT_TYPE_DO_NOT_USE struct { } DONOTUSE; // 21 GAMEOBJECT_TYPE_GUARDPOST struct { uint32 creatureID; // 0 creatureID, References: Creature, NoValue = 0 uint32 charges; // 1 charges, int, Min value: 0, Max value: 65535, Default value: 1 } guardPost; // 22 GAMEOBJECT_TYPE_SPELLCASTER struct { uint32 spell; // 0 spell, References: Spell, NoValue = 0 int32 charges; // 1 charges, int, Min value: -1, Max value: 65535, Default value: 1 uint32 partyOnly; // 2 partyOnly, enum { false, true, }; Default: false uint32 allowMounted; // 3 allowMounted, enum { false, true, }; Default: false uint32 GiganticAOI; // 4 Gigantic AOI, enum { false, true, }; Default: false 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 } 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 areaID; // 2 areaID, References: AreaTable, NoValue = 0 } meetingStone; // 24 GAMEOBJECT_TYPE_FLAGSTAND struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 uint32 pickupSpell; // 1 pickupSpell, References: Spell, NoValue = 0 uint32 radius; // 2 radius, int, Min value: 0, Max value: 50, Default value: 0 uint32 returnAura; // 3 returnAura, References: Spell, NoValue = 0 uint32 returnSpell; // 4 returnSpell, References: Spell, NoValue = 0 uint32 noDamageImmune; // 5 noDamageImmune, enum { false, true, }; Default: false uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0 uint32 requireLOS; // 7 require LOS, enum { false, true, }; Default: true uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0 uint32 playerCast; // 9 playerCast, enum { false, true, }; Default: false 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 } flagStand; // 25 GAMEOBJECT_TYPE_FISHINGHOLE struct { uint32 radius; // 0 radius, int, Min value: 0, Max value: 50, Default value: 0 uint32 chestLoot; // 1 chestLoot, References: Treasure, NoValue = 0 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 } fishingHole; // 26 GAMEOBJECT_TYPE_FLAGDROP struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 uint32 eventID; // 1 eventID, References: GameEvents, NoValue = 0 uint32 pickupSpell; // 2 pickupSpell, References: Spell, NoValue = 0 uint32 noDamageImmune; // 3 noDamageImmune, enum { false, true, }; Default: false uint32 openTextID; // 4 openTextID, References: BroadcastText, NoValue = 0 uint32 playerCast; // 5 playerCast, enum { false, true, }; Default: false uint32 ExpireDuration; // 6 Expire Duration, int, Min value: 0, Max value: 60000, Default value: 10000 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 } flagDrop; // 27 GAMEOBJECT_TYPE_MINI_GAME struct { } miniGame; // 28 GAMEOBJECT_TYPE_DO_NOT_USE_2 struct { } DONOTUSE2; // 29 GAMEOBJECT_TYPE_CONTROL_ZONE struct { uint32 radius; // 0 radius, int, Min value: 0, Max value: 100, Default value: 10 uint32 spell; // 1 spell, References: Spell, NoValue = 0 uint32 worldState1; // 2 worldState1, References: WorldState, NoValue = 0 uint32 worldstate2; // 3 worldstate2, References: WorldState, NoValue = 0 uint32 CaptureEventHorde; // 4 Capture Event (Horde), References: GameEvents, NoValue = 0 uint32 CaptureEventAlliance; // 5 Capture Event (Alliance), References: GameEvents, NoValue = 0 uint32 ContestedEventHorde; // 6 Contested Event (Horde), References: GameEvents, NoValue = 0 uint32 ContestedEventAlliance; // 7 Contested Event (Alliance), References: GameEvents, NoValue = 0 uint32 ProgressEventHorde; // 8 Progress Event (Horde), References: GameEvents, NoValue = 0 uint32 ProgressEventAlliance; // 9 Progress Event (Alliance), References: GameEvents, NoValue = 0 uint32 NeutralEventHorde; // 10 Neutral Event (Horde), References: GameEvents, NoValue = 0 uint32 NeutralEventAlliance; // 11 Neutral Event (Alliance), References: GameEvents, NoValue = 0 uint32 neutralPercent; // 12 neutralPercent, int, Min value: 0, Max value: 100, Default value: 0 uint32 worldstate3; // 13 worldstate3, References: WorldState, NoValue = 0 uint32 minSuperiority; // 14 minSuperiority, int, Min value: 1, Max value: 65535, Default value: 1 uint32 maxSuperiority; // 15 maxSuperiority, int, Min value: 1, Max value: 65535, Default value: 1 uint32 minTime; // 16 minTime, int, Min value: 1, Max value: 65535, Default value: 1 uint32 maxTime; // 17 maxTime, int, Min value: 1, Max value: 65535, Default value: 1 uint32 GiganticAOI; // 18 Gigantic AOI, enum { false, true, }; Default: false uint32 highlight; // 19 highlight, enum { false, true, }; Default: true uint32 startingValue; // 20 startingValue, int, Min value: 0, Max value: 100, Default value: 50 uint32 unidirectional; // 21 unidirectional, enum { false, true, }; Default: false uint32 killbonustime; // 22 kill bonus time %, int, Min value: 0, Max value: 100, Default value: 0 uint32 speedWorldState1; // 23 speedWorldState1, References: WorldState, NoValue = 0 uint32 speedWorldState2; // 24 speedWorldState2, References: WorldState, NoValue = 0 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 } controlZone; // 30 GAMEOBJECT_TYPE_AURA_GENERATOR struct { uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: true uint32 radius; // 1 radius, int, Min value: 0, Max value: 100, Default value: 10 uint32 auraID1; // 2 auraID1, References: Spell, NoValue = 0 uint32 conditionID1; // 3 conditionID1, References: PlayerCondition, NoValue = 0 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 } auraGenerator; // 31 GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY struct { uint32 InstanceType; // 0 Instance Type, enum { Not Instanced, Party Dungeon, Raid Dungeon, PVP Battlefield, Arena Battlefield, Scenario, }; Default: Party Dungeon uint32 DifficultyNormal; // 1 Difficulty Normal, References: animationdata, NoValue = 0 uint32 DifficultyHeroic; // 2 Difficulty Heroic, References: animationdata, NoValue = 0 uint32 DifficultyEpic; // 3 Difficulty Epic, References: animationdata, NoValue = 0 uint32 DifficultyLegendary; // 4 Difficulty Legendary, References: animationdata, NoValue = 0 uint32 HeroicAttachment; // 5 Heroic Attachment, References: gameobjectdisplayinfo, NoValue = 0 uint32 ChallengeAttachment; // 6 Challenge Attachment, References: gameobjectdisplayinfo, NoValue = 0 uint32 DifficultyAnimations; // 7 Difficulty Animations, References: GameObjectDiffAnim, NoValue = 0 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 } dungeonDifficulty; // 32 GAMEOBJECT_TYPE_BARBER_CHAIR struct { 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 } barberChair; // 33 GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING struct { int32 Unused; // 0 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 CreditProxyCreature; // 1 Credit Proxy Creature, References: Creature, NoValue = 0 uint32 HealthRec; // 2 Health Rec, References: DestructibleHitpoint, NoValue = 0 uint32 IntactEvent; // 3 Intact Event, References: GameEvents, NoValue = 0 uint32 PVPEnabling; // 4 PVP Enabling, enum { false, true, }; Default: false uint32 InteriorVisible; // 5 Interior Visible, enum { false, true, }; Default: false uint32 InteriorLight; // 6 Interior Light, enum { false, true, }; Default: false int32 Unused1; // 7 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 int32 Unused2; // 8 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 DamagedEvent; // 9 Damaged Event, References: GameEvents, NoValue = 0 int32 Unused3; // 10 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 int32 Unused4; // 11 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 int32 Unused5; // 12 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 int32 Unused6; // 13 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 DestroyedEvent; // 14 Destroyed Event, References: GameEvents, NoValue = 0 int32 Unused7; // 15 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 RebuildingTime; // 16 Rebuilding: Time (secs), int, Min value: 0, Max value: 65535, Default value: 0 int32 Unused8; // 17 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 DestructibleModelRec; // 18 Destructible Model Rec, References: DestructibleModelData, NoValue = 0 uint32 RebuildingEvent; // 19 Rebuilding: Event, References: GameEvents, NoValue = 0 int32 Unused9; // 20 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 int32 Unused10; // 21 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 DamageEvent; // 22 Damage Event, References: GameEvents, NoValue = 0 } destructibleBuilding; // 34 GAMEOBJECT_TYPE_GUILD_BANK struct { uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0 } guildbank; // 35 GAMEOBJECT_TYPE_TRAPDOOR struct { uint32 AutoLink; // 0 Auto Link, enum { false, true, }; Default: false uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 BlocksPathsDown; // 3 Blocks Paths Down, enum { false, true, }; Default: false uint32 PathBlockerBump; // 4 Path Blocker Bump (ft), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 } trapdoor; // 36 GAMEOBJECT_TYPE_NEW_FLAG struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 uint32 pickupSpell; // 1 pickupSpell, References: Spell, NoValue = 0 uint32 openTextID; // 2 openTextID, References: BroadcastText, NoValue = 0 uint32 requireLOS; // 3 require LOS, enum { false, true, }; Default: true uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0 uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false uint32 InfiniteAOI; // 6 Infinite AOI, enum { false, true, }; Default: false uint32 ExpireDuration; // 7 Expire Duration, int, Min value: 0, Max value: 3600000, Default value: 10000 uint32 RespawnTime; // 8 Respawn Time, int, Min value: 0, Max value: 3600000, Default value: 20000 uint32 FlagDrop; // 9 Flag Drop, References: GameObjects, NoValue = 0 int32 ExclusiveCategory; // 10 Exclusive Category (BGs Only), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 worldState1; // 11 worldState1, References: WorldState, NoValue = 0 uint32 ReturnonDefenderInteract; // 12 Return on Defender Interact, enum { false, true, }; Default: false } newflag; // 37 GAMEOBJECT_TYPE_NEW_FLAG_DROP struct { uint32 open; // 0 open, References: Lock_, NoValue = 0 } newflagdrop; // 38 GAMEOBJECT_TYPE_GARRISON_BUILDING struct { int32 SpawnMap; // 0 Spawn Map, References: Map, NoValue = -1 } 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 } garrisonPlot; // 40 GAMEOBJECT_TYPE_CLIENT_CREATURE struct { uint32 CreatureDisplayInfo; // 0 Creature Display Info, References: CreatureDisplayInfo, NoValue = 0 uint32 AnimKit; // 1 Anim Kit, References: AnimKit, NoValue = 0 uint32 creatureID; // 2 creatureID, References: Creature, NoValue = 0 } clientCreature; // 41 GAMEOBJECT_TYPE_CLIENT_ITEM struct { uint32 Item; // 0 Item, References: Item, NoValue = 0 } clientItem; // 42 GAMEOBJECT_TYPE_CAPTURE_POINT struct { uint32 CaptureTime; // 0 Capture Time (ms), int, Min value: 0, Max value: 2147483647, Default value: 60000 uint32 GiganticAOI; // 1 Gigantic AOI, enum { false, true, }; Default: false uint32 highlight; // 2 highlight, enum { false, true, }; Default: true uint32 open; // 3 open, References: Lock_, NoValue = 0 uint32 AssaultBroadcastHorde; // 4 Assault Broadcast (Horde), References: BroadcastText, NoValue = 0 uint32 CaptureBroadcastHorde; // 5 Capture Broadcast (Horde), References: BroadcastText, NoValue = 0 uint32 DefendedBroadcastHorde; // 6 Defended Broadcast (Horde), References: BroadcastText, NoValue = 0 uint32 AssaultBroadcastAlliance; // 7 Assault Broadcast (Alliance), References: BroadcastText, NoValue = 0 uint32 CaptureBroadcastAlliance; // 8 Capture Broadcast (Alliance), References: BroadcastText, NoValue = 0 uint32 DefendedBroadcastAlliance; // 9 Defended Broadcast (Alliance), References: BroadcastText, NoValue = 0 uint32 worldState1; // 10 worldState1, References: WorldState, NoValue = 0 uint32 ContestedEventHorde; // 11 Contested Event (Horde), References: GameEvents, NoValue = 0 uint32 CaptureEventHorde; // 12 Capture Event (Horde), References: GameEvents, NoValue = 0 uint32 DefendedEventHorde; // 13 Defended Event (Horde), References: GameEvents, NoValue = 0 uint32 ContestedEventAlliance; // 14 Contested Event (Alliance), References: GameEvents, NoValue = 0 uint32 CaptureEventAlliance; // 15 Capture Event (Alliance), References: GameEvents, NoValue = 0 uint32 DefendedEventAlliance; // 16 Defended Event (Alliance), References: GameEvents, NoValue = 0 uint32 SpellVisual1; // 17 Spell Visual 1, References: SpellVisual, NoValue = 0 uint32 SpellVisual2; // 18 Spell Visual 2, References: SpellVisual, NoValue = 0 uint32 SpellVisual3; // 19 Spell Visual 3, References: SpellVisual, NoValue = 0 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 } capturePoint; // 43 GAMEOBJECT_TYPE_PHASEABLE_MO struct { int32 SpawnMap; // 0 Spawn Map, References: Map, NoValue = -1 uint32 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 } 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 } garrisonMonument; // 45 GAMEOBJECT_TYPE_GARRISON_SHIPMENT struct { 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 } garrisonShipment; // 46 GAMEOBJECT_TYPE_GARRISON_MONUMENT_PLAQUE struct { uint32 TrophyInstanceID; // 0 Trophy Instance ID, References: TrophyInstance, NoValue = 0 } garrisonMonumentPlaque; // 47 GAMEOBJECT_TYPE_ARTIFACT_FORGE struct { uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0 uint32 LargeAOI; // 1 Large AOI, enum { false, true, }; Default: false 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, }; Default: Relic Forge } artifactForge; // 48 GAMEOBJECT_TYPE_UI_LINK struct { uint32 UILinkType; // 0 UI Link Type, enum { Adventure Journal, Obliterum Forge, }; Default: Adventure Journal uint32 allowMounted; // 1 allowMounted, enum { false, true, }; Default: false 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 } UILink; // 49 GAMEOBJECT_TYPE_KEYSTONE_RECEPTACLE struct { } 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 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 uint32 ObjectDespawnDelay; // 6 Object Despawn Delay, int, Min value: 0, Max value: 600, Default value: 15 uint32 triggeredEvent; // 7 triggeredEvent, References: GameEvents, NoValue = 0 uint32 requireLOS; // 8 require LOS, enum { false, true, }; Default: false 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 xpLevel; // 12 xpLevel, int, Min value: -1, Max value: 123, 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 uint32 LargeAOI; // 16 Large AOI, enum { false, true, }; Default: false uint32 SpawnVignette; // 17 Spawn Vignette, References: vignette, NoValue = 0 uint32 MaxNumberofLoots; // 18 Max Number of Loots, int, Min value: 1, Max value: 40, Default value: 10 uint32 logloot; // 19 log loot, enum { false, true, }; Default: false uint32 linkedTrap; // 20 linkedTrap, References: GameObjects, NoValue = 0 } gatheringNode; // 51 GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD struct { uint32 chestLoot; // 0 chestLoot, References: Treasure, NoValue = 0 uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0 } challengeModeReward; struct { uint32 data[MAX_GAMEOBJECT_DATA]; } raw; }; std::string AIName; uint32 ScriptId; // helpers bool IsDespawnAtAction() const { switch (type) { case GAMEOBJECT_TYPE_CHEST: return chest.consumable != 0; case GAMEOBJECT_TYPE_GOOBER: return goober.consumable != 0; default: return false; } } bool IsUsableMounted() const { switch (type) { case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.allowMounted != 0; case GAMEOBJECT_TYPE_TEXT: return text.allowMounted != 0; case GAMEOBJECT_TYPE_GOOBER: return goober.allowMounted != 0; case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.allowMounted != 0; case GAMEOBJECT_TYPE_UI_LINK: return UILink.allowMounted != 0; default: return false; } } uint32 GetLockId() const { 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; default: return 0; } } bool GetDespawnPossibility() const // despawn at targeting of cast? { switch (type) { case GAMEOBJECT_TYPE_DOOR: return door.noDamageImmune != 0; case GAMEOBJECT_TYPE_BUTTON: return button.noDamageImmune != 0; case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.noDamageImmune != 0; case GAMEOBJECT_TYPE_GOOBER: return goober.noDamageImmune != 0; case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.noDamageImmune != 0; case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.noDamageImmune != 0; default: return true; } } uint32 GetCharges() const // despawn at uses amount { switch (type) { //case GAMEOBJECT_TYPE_TRAP: return trap.charges; case GAMEOBJECT_TYPE_GUARDPOST: return guardPost.charges; case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.charges; default: return 0; } } uint32 GetLinkedGameObjectEntry() const { switch (type) { case GAMEOBJECT_TYPE_BUTTON: return button.linkedTrap; case GAMEOBJECT_TYPE_CHEST: return chest.linkedTrap; case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.linkedTrap; case GAMEOBJECT_TYPE_GOOBER: return goober.linkedTrap; case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.linkedTrap; default: return 0; } } 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; } return autoCloseTime / IN_MILLISECONDS; // prior to 3.0.3, conversion was / 0x10000; } uint32 GetLootId() const { switch (type) { case GAMEOBJECT_TYPE_CHEST: return chest.chestLoot; case GAMEOBJECT_TYPE_FISHINGHOLE: return fishingHole.chestLoot; case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.chestLoot; case GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD: return challengeModeReward.chestLoot; default: return 0; } } uint32 GetGossipMenuId() const { switch (type) { case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.gossipID; case GAMEOBJECT_TYPE_GOOBER: return goober.gossipID; default: return 0; } } uint32 GetEventScriptId() const { switch (type) { case GAMEOBJECT_TYPE_GOOBER: return goober.eventID; case GAMEOBJECT_TYPE_CHEST: return chest.triggeredEvent; case GAMEOBJECT_TYPE_CAMERA: return camera.eventID; case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.triggeredEvent; default: return 0; } } uint32 GetCooldown() const // Cooldown preventing goober and traps to cast spell { switch (type) { case GAMEOBJECT_TYPE_TRAP: return trap.cooldown; case GAMEOBJECT_TYPE_GOOBER: return goober.cooldown; default: return 0; } } }; // From `gameobject_template_addon` struct GameObjectTemplateAddon { uint32 entry; uint32 faction; uint32 flags; uint32 mingold; uint32 maxgold; uint32 WorldEffectID; }; struct GameObjectLocale { std::vector Name; std::vector CastBarCaption; std::vector Unk1; }; struct TC_GAME_API QuaternionData { float x, y, z, w; QuaternionData() : x(0.0f), y(0.0f), z(0.0f), w(1.0f) {} QuaternionData(float X, float Y, float Z, float W) : x(X), y(Y), z(Z), w(W) {} bool isUnit() const; static QuaternionData fromEulerAnglesZYX(float Z, float Y, float X); }; // `gameobject_addon` table struct GameObjectAddon { QuaternionData ParentRotation; InvisibilityType invisibilityType; uint32 InvisibilityValue; uint32 WorldEffectID; }; // from `gameobject` struct GameObjectData { explicit GameObjectData() : id(0), mapid(0), posX(0.0f), posY(0.0f), posZ(0.0f), orientation(0.0f), spawntimesecs(0), animprogress(0), go_state(GO_STATE_ACTIVE), spawnDifficulties(), artKit(0), phaseUseFlags(0), phaseId(0), phaseGroup(0), terrainSwapMap(-1), ScriptId(0), dbData(true) { } uint32 id; // entry in gamobject_template uint16 mapid; float posX; float posY; float posZ; float orientation; QuaternionData rotation; int32 spawntimesecs; uint32 animprogress; GOState go_state; std::vector spawnDifficulties; uint8 artKit; uint8 phaseUseFlags; uint32 phaseId; uint32 phaseGroup; int32 terrainSwapMap; uint32 ScriptId; bool dbData; }; #endif // GameObjectData_h__