gameobject_template - cmangos/issues GitHub Wiki

Back to world database list of tables.

The `gameobject_template` table

Contains template of all world’s objects

Structure

Field Type Null Key Default Extra
entry int(10) unsigned NO PRI 0
type int(10) unsigned NO 0
displayId int(10) unsigned NO 0
name char(100) NO MUL 0
IconName varchar NO
castBarCaption varchar(100) NO
faction int(4) unsigned NO 0
flags int(4) unsigned NO 0
ExtraFlags int(11) unsigned NO 0
size float NO 1
data0 int(10) unsigned NO 0
data1 int(10) unsigned NO 0
data2 int(10) unsigned NO 0
data3 int(10) unsigned NO 0
data4 int(10) unsigned NO 0
data5 int(10) unsigned NO 0
data6 int(10) unsigned NO 0
data7 int(10) unsigned NO 0
data8 int(10) unsigned NO 0
data9 int(10) unsigned NO 0
data10 int(10) unsigned NO 0
data11 int(10) unsigned NO 0
data12 int(10) unsigned NO 0
data13 int(10) unsigned NO 0
data14 int(10) unsigned NO 0
data15 int(10) unsigned NO 0
data16 int(10) unsigned NO 0
data17 int(10) unsigned NO 0
data18 int(10) unsigned NO 0
data19 int(10) unsigned NO 0
data20 int(10) unsigned NO 0
data21 int(10) unsigned NO 0
data22 int(10) unsigned NO 0
data23 int(10) unsigned NO 0
CustomData1 int(11) unsigned NO 0
mingold mediumint(8) unsigned NO 0
maxgold mediumint(8) unsigned NO 0
StringId int(11) unsigned NO 0
ScriptName char(100) NO

Description of the fields

GAMEOBJECT_BYTES_1: State/Type/Artkit/Animprogress – wotlk+

entry

Id of the gameobject template

type

   
GAMEOBJECT_TYPE_DOOR                  = 0
GAMEOBJECT_TYPE_BUTTON                = 1
GAMEOBJECT_TYPE_QUESTGIVER            = 2
GAMEOBJECT_TYPE_CHEST                 = 3
GAMEOBJECT_TYPE_BINDER                = 4
GAMEOBJECT_TYPE_GENERIC               = 5
GAMEOBJECT_TYPE_TRAP                  = 6
GAMEOBJECT_TYPE_CHAIR                 = 7
GAMEOBJECT_TYPE_SPELL_FOCUS           = 8
GAMEOBJECT_TYPE_TEXT                  = 9
GAMEOBJECT_TYPE_GOOBER                = 10
GAMEOBJECT_TYPE_TRANSPORT             = 11
GAMEOBJECT_TYPE_AREADAMAGE            = 12
GAMEOBJECT_TYPE_CAMERA                = 13
GAMEOBJECT_TYPE_MAP_OBJECT            = 14
GAMEOBJECT_TYPE_MO_TRANSPORT          = 15
GAMEOBJECT_TYPE_DUEL_ARBITER          = 16
GAMEOBJECT_TYPE_FISHINGNODE           = 17
GAMEOBJECT_TYPE_RITUAL                = 18
GAMEOBJECT_TYPE_MAILBOX               = 19
GAMEOBJECT_TYPE_AUCTIONHOUSE          = 20
GAMEOBJECT_TYPE_GUARDPOST             = 21
GAMEOBJECT_TYPE_SPELLCASTER           = 22
GAMEOBJECT_TYPE_MEETINGSTONE          = 23
GAMEOBJECT_TYPE_FLAGSTAND             = 24
GAMEOBJECT_TYPE_FISHINGHOLE           = 25
GAMEOBJECT_TYPE_FLAGDROP              = 26
GAMEOBJECT_TYPE_MINI_GAME             = 27
GAMEOBJECT_TYPE_LOTTERY_KIOSK         = 28
GAMEOBJECT_TYPE_CAPTURE_POINT         = 29
GAMEOBJECT_TYPE_AURA_GENERATOR        = 30
GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY    = 31
GAMEOBJECT_TYPE_BARBER_CHAIR          = 32
GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33
GAMEOBJECT_TYPE_GUILD_BANK            = 34

displayId

Graphic model id sent to the client from GameObjectDisplayInfo.dbc.

name

Object’s name

IconName

castBarCaption

Shows unique text in the object’s casting bar when the object is used.

faction

Object’s faction, if any. See FactionTemplate.dbc

flags

  • 1 = in use (can’t interact with the object)
  • 2 = Makes chests/doors locked (requiring a key, spell, event to open)
  • 4 = Untargetable
  • 8 = Transport (Object can transport (elevator, boat, car))
  • 16 = Player cant interact with the object.
  • 32 = No despawn (never despawn, typically for doors, they just change state)
  • 64 = Triggered (typically, summoned objects. Triggered by spell or other events)

NOTE: All chests that contain only quest loots need to have flag 4 set as the core will only allow players who have the quest in their questlog to loot them.

ExtraFlags

   
enum GameobjectExtraFlags
    GAMEOBJECT_EXTRA_FLAG_CUSTOM_ANIM_ON_USE = 0x00000001,    // GO that plays custom animation on usage
    GAMEOBJECT_EXTRA_FLAG_DYNGUID            = 0x00000002,    // Temporary - Uses new dynguid system
    GAMEOBJECT_EXTRA_FLAG_ACTIVE             = 0x00001000,    // Always active

size

Object’s size must be set because graphic models can be resample.

data0-23

The content of the data fields depends on the gameobject type

  • GAMEOBJECT_TYPE_DOOR = 0
    • data0: startOpen (Boolean flag)
    • data1: open (LockId from Lock.dbc)
    • data2: autoClose (65536 * seconds(sniff value)) (e.g. open after 5 min = 300 * 65536 = 19660800)
    • data3: noDamageImmune (Boolean flag)
    • data4: openTextID (Unknown Text ID)
    • data5: closeTextID (Unknown Text ID)
  • GAMEOBJECT_TYPE_BUTTON = 1
    • data0: startOpen (State)
    • data1: open (LockId from Lock.dbc)
    • data2: autoClose (65536 * seconds(sniff value))
    • data3: linkedTrap (gameobject_template.entry (Spawned GO type 6))
    • data4: noDamageImmune (Boolean flag)
    • data5: large? (Boolean flag)
    • data6: openTextID (Unknown Text ID)
    • data7: closeTextID (Unknown Text ID)
    • data8: losOK (Boolean flag)
  • GAMEOBJECT_TYPE_QUESTGIVER = 2
    • data0: open (LockId from Lock.dbc)
    • data1: questList (unknown ID)
    • data2: pageMaterial (PageTextMaterial.dbc)
    • data3: gossipID (unknown ID)
    • data4: customAnim (unknown value from 1 to 4)
    • data5: noDamageImmune (Boolean flag)
    • data6: openTextID (broadcast_text ID)
    • data7: losOK (Boolean flag)
    • data8: allowMounted (Boolean flag)
    • data9: large? (Boolean flag)
  • GAMEOBJECT_TYPE_CHEST = 3
    • data0: open (LockId from Lock.dbc)
    • data1: chestLoot (gameobject_loot_template.entry) This field is obtained from WDB data and is not to be changed
    • data2: chestRestockTime (time in seconds)
    • data3: consumable (State: Boolean flag)
    • data4: minRestock (Min successful loot attempts for Mining, Herbalism etc)
    • data5: maxRestock (Max successful loot attempts for Mining, Herbalism etc)
    • data6: lootedEvent (dbscripts_on_event)
    • data7: linkedTrap (gameobject_template.entry (Spawned GO type 6))
    • data8: questID (quest_template.entry of completed quest)
    • data9: level (minimal level required to open this gameobject)
    • data10: losOK (Boolean flag)
    • data11: leaveLoot (Boolean flag)
    • data12: notInCombat (Boolean flag)
    • data13: log loot (Boolean flag)
    • data14: openTextID (Unknown ID)
    • data15: use group loot rules (Boolean flag)
  • GAMEOBJECT_TYPE_BINDER = 4

Object type not used

  • GAMEOBJECT_TYPE_GENERIC = 5
    • data0: floatingTooltip (Boolean flag)
    • data1: highlight (Boolean flag)
    • data2: serverOnly? (Always 0)
    • data3: large? (Boolean flag)
    • data4: floatOnWater (Boolean flag)
    • data5: questID (Required active quest_template.entry to work)
  • GAMEOBJECT_TYPE_TRAP = 6
    • data0: open (LockId from Lock.dbc)
    • data1: level (npc equivalent level for casted spell)
    • data2: diameter (so radius*2)
    • data3: spell (Spell Id from spell.dbc)
    • data4: charges (0 or 1)
    • data5: cooldown (time in seconds)
    • data6: autoClose (unknown)
    • data7: startDelay? (time in seconds)
    • data8: serverOnly? (always 0)
    • data9: stealthed (Boolean flag)
    • data10: large? (Boolean flag)
    • data11: stealthAffected (Boolean flag)
    • data12: openTextID (Unknown ID)
  • GAMEOBJECT_TYPE_CHAIR = 7
    • data0: chairslots (number of players that can sit down on it)
    • data1: chairorientation? (number of usable side?)
  • GAMEOBJECT_TYPE_SPELL_FOCUS = 8
    • data0: spellFocusType (from SpellFocusObject.dbc)
    • data1: diameter (so radius*2)
    • data2: linkedTrap (gameobject_template.entry (Spawned GO type 6))
    • data3: serverOnly? (1: Visible to GM only, 0: Visible to all players)
    • data4: questID (Required active quest_template.entry to work)
    • data5: large? (Boolean flag)
  • GAMEOBJECT_TYPE_GOOBER = 10
    • data0: open (LockId from Lock.dbc)
    • data1: questID (Required active quest_template.entry to work)
    • data2: eventID (The id of the event that the gameobject will activate)
    • data3: autoClose (most be the same like doors (65536 * seconds(sniff value))
    • data4: customAnim (unknown)
    • data5: consumable (Boolean flag controling if gameobject will despawn or not)
    • data6: cooldown (time in seconds)
    • data7: pageID (page_text.entry)
    • data8: language (from Languages.dbc)
    • data9: pageMaterial (PageTextMaterial.dbc)
    • data10: spell (Spell Id from spell.dbc)
    • data11: noDamageImmune (Boolean flag)
    • data12: linkedTrap (gameobject_template.entry (Spawned GO type 6))
    • data13: large? (Boolean flag)
    • data14: openTextID (Unknown ID)
    • data15: closeTextID (Unknown ID)
    • data16: losOK (Boolean flag)
  • GAMEOBJECT_TYPE_TRANSPORT = 11

No data data used, all are always 0

  • GAMEOBJECT_TYPE_AREADAMAGE = 12

Object type not used

  • GAMEOBJECT_TYPE_CAMERA = 13
    • data0: open (LockId from Lock.dbc)
    • data1: camera (Cinematic entry from CinematicCamera.dbc)
  • GAMEOBJECT_TYPE_MAPOBJECT = 14

No data data used, all are always 0

  • GAMEOBJECT_TYPE_MOTRANSPORT = 15
    • data0: taxiPathID (Id from TaxiPath.dbc)
    • data1: moveSpeed
    • data2: accelRate
  • GAMEOBJECT_TYPE_DUELFLAG = 16

Only one Gameobject with this type (21680) and no data data

  • GAMEOBJECT_TYPE_FISHINGNODE = 17

Only one Gameobject with this type (35591) and no data data

  • GAMEOBJECT_TYPE_RITUAL = 18
    • data0: casters/clickers
    • data1: spell (Spell Id from spell.dbc)
    • data2: animSpell (Spell Id from spell.dbc)
    • data3: ritualPersistent (Boolean flag)
    • data4: casterTargetSpell (Spell Id from spell.dbc)
    • data5: casterTargetSpellTargets (Boolean flag)
    • data6: castersGrouped (Boolean flag)
  • GAMEOBJECT_TYPE_MAILBOX = 19

No data data used, all are always 0

  • GAMEOBJECT_TYPE_AUCTIONHOUSE = 20
    • data0: actionHouseID (From AuctionHouse.dbc ?)
  • GAMEOBJECT_TYPE_GUARDPOST = 21

Object type not used

  • GAMEOBJECT_TYPE_SPELLCASTER = 22
    • data0: spell (Spell Id from spell.dbc)
    • data1: charges
    • data2: partyOnly (Boolean flag, need to be in group to use it)
  • GAMEOBJECT_TYPE_MEETINGSTONE = 23
    • data0: minLevel
    • data1: maxLevel
    • data2: areaID (From AreaTable.dbc)
  • GAMEOBJECT_TYPE_FLAGSTAND = 24
    • data0: open (LockId from Lock.dbc)
    • data1: pickupSpell (Spell Id from spell.dbc)
    • data2: radius (distance)
    • data3: returnAura (Spell Id from spell.dbc)
    • data4: returnSpell (Spell Id from spell.dbc)
    • data5: noDamageImmune (Boolean flag)
    • data6: openTextID
    • data7: losOK (Boolean flag)
  • GAMEOBJECT_TYPE_FLAGDROP = 26
    • data0: open (LockId from Lock.dbc)
    • data1: eventID (Unknown Event ID)
    • data2: pickupSpell (Spell Id from spell.dbc)
    • data3: noDamageImmune (Boolean flag)
  • GAMEOBJECT_TYPE_MINIGAME = 27

Object type not used

Reused in core for CUSTOM_TELEPORT

  • GAMEOBJECT_TYPE_LOTTERYKIOSK = 28

Object type not used

  • GAMEOBJECT_TYPE_CAPTUREPOINT = 29
    • data0: radius (Distance)
    • data1: spell (Unknown ID, not a spell id in dbc file, maybe server only side spell)
    • data2: worldState1
    • data3: worldstate2
    • data4: winEventID1 (Unknown Event ID)
    • data5: winEventID2 (Unknown Event ID)
    • data6: contestedEventID1 (Unknown Event ID)
    • data7: contestedEventID2 (Unknown Event ID)
    • data8: progressEventID1 (Unknown Event ID)
    • data9: progressEventID2 (Unknown Event ID)
    • data10: neutralEventID1 (Unknown Event ID)
    • data11: neutralEventID2 (Unknown Event ID)
    • data12: neutralPercent
    • data13: worldstate3
    • data14: minSuperiority
    • data15: maxSuperiority
    • data16: minTime (in seconds)
    • data17: maxTime (in seconds)
    • data18: large? (Boolean flag)
  • GAMEOBJECT_TYPE_AURA_GENERATOR = 30
    • data0: startOpen (Boolean flag)
    • data1: radius (Distance)
    • data2: auraID1 (Spell Id from spell.dbc)
    • data3: conditionID1 (Unknown ID)
  • GAMEOBJECT_TYPE_DUNGEONDIFFICULTY = 31
    • data0: mapID (From Map.dbc)
    • data1: difficulty (0 or 1)
  • GAMEOBJECT_TYPE_BARBER_CHAIR = 32

Used for barber chairs.

  • GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33

Object type not used

  • GAMEOBJECT_TYPE_GUILD_BANK = 34

No data data used, all are always 0

CustomData1

For trap => type 6 GO, 0 value targets enemies, 1 friendlies and 2 all

mingold

Minimum possible gold that the GO holds when looted, in copper.

maxgold

Maximum possible gold that the GO holds when looted, in copper.

StringId

string_id – sets StringId to all spawns of entry

ScriptName

Name of the script this object uses if needed

⚠️ **GitHub.com Fallback** ⚠️