conditions

Back-to:World

The `conditions` table

This table allows you to define conditions for various systems - Gossip, loot etc.

Structure

Field

Type

Attributes

Key

Null

Default

Extra

Comment

SourceTypeOrReferenceId

mediumint(8)

signed

PRI

NO

0



SourceGroup

mediumint(8)

unsigned

PRI

NO

0



SourceEntry

mediumint(8)

signed

PRI

NO

0



SourceId

int(11)

signed

PRI

NO

0


smart_scripts.source_type || 0 for everything else

ElseGroup

mediumint(8)

unsigned

PRI

NO

0



ConditionTypeOrReference

mediumint(8)

signed

PRI

NO

0



ConditionTarget

tinyint(3)

unsigned

PRI

NO

0



ConditionValue1

int(10)

unsigned

PRI

NO

0



ConditionValue2

int(10)

unsigned

PRI

NO

0



ConditionValue3

int(10)

unsigned

PRI

NO

0



NegativeCondition

tinyint(3)

unsigned


NO

0


Boolean 0 or 1 (if NegativeCondition

ErrorType

mediumint(8)

unsigned


NO

0



ErrorTextId

mediumint(8)

unsigned


NO

0



ScriptName

char(64)

signed


NO

' '



Comment

varchar(255)



YES

NULL



Description of the fields

SourceTypeOrReferenceId

if negative, then it is a reference template.

SourceTypeOrReferenceId

IDSourceGroupSourceEntrySourceIdConditionTargetNotes
CONDITION_SOURCE_TYPE_NONE0See REFERENCE TEMPLATES(conditions#REFERENCE TEMPLATES)Always 0(See below)
Only used in Reference Templates! See below.
CONDITION_SOURCE_TYPE_CREATURE_LOOT_TEMPLATE1creature_loot_template.Entry or reference_loot_template.Entryitem id (_loot_template.Item or reference_loot_template.Item)Always 0Always 0
CONDITION_SOURCE_TYPE_DISENCHANT_LOOT_TEMPLATE2disenchant_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_FISHING_LOOT_TEMPLATE3fishing_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_GAMEOBJECT_LOOT_TEMPLATE4gameobject_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_ITEM_LOOT_TEMPLATE5item_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_MAIL_LOOT_TEMPLATE6mail_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_MILLING_LOOT_TEMPLATE7milling_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_PICKPOCKETING_LOOT_TEMPLATE8pickpocketing_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_PROSPECTING_LOOT_TEMPLATE9prospecting_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_REFERENCE_LOOT_TEMPLATE10reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_SKINNING_LOOT_TEMPLATE11skinning_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0
CONDITION_SOURCE_TYPE_SPELL_LOOT_TEMPLATE12spell_loot_template.Entry or reference_loot_template.Entry
item id (_loot_template.Item or reference_loot_template.Item)
Always 0Always 0

CONDITION_SOURCE_TYPE_SPELL_IMPLICIT_TARGET

13
Mask of effects to be affected by condition:
1 = EFFECT_0, 2 = EFFECT_1, 4 = EFFECT_2
Spell Id from  Spell DBC fileAlways 0

0 : Potential spell Target
1 : spell Caster

Don't use wowhead to get number of effects, data from wowhead sometimes doesn't match real effect number.
CONDITION_SOURCE_TYPE_GOSSIP_MENU14gossip_menu.entry (gossip menu entry)gossip_menu.text_id (points to npc_text.ID)Always 0

0 = Player
1 = WorldObject


CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION15gossip_menu_option.menu_id (menu entry)gossip_menu_option.idAlways 0

0 = Player
1 = WorldObject


CONDITION_SOURCE_TYPE_CREATURE_TEMPLATE_VEHICLE16Always 0creature entry (creature_template.entry)Always 0

0 = Player riding vehicle
1 = Vehicle creature







CONDITION_SOURCE_TYPE_SPELL





17





Always 0





Spell ID from Spell.dbc





Always 0



0 = spell Caster
1 =  Explicit Target of the spell (only for spells which take the object selected by caster into account)
  • This source type allows you to define caster/explicit target requirements for spell to be cast.
  • Explicit target of the spell is the target which is selected by player during cast, not all spells take that target into account. non-explicit targets of the spell (the ones which are selected by spell like area or nearby targets for example) are not affected by this condition source type, if you want to affect those use CONDITION_SOURCE_TYPE_SPELL_IMPLICIT_TARGET instead.
  • If you are looking for old CONDITION_SOURCE_TYPE_ITEM_REQUIRED_TARGET, use this condition source type instead (ConditionTarget = 1 allows you to set requirements for a given spell, so to use this condition type you need spellid of the spell cast on item use).
  • Remember that conditions with the same ElseGroup value will be used to make logical AND check, so to allow different targets for the same spell effect you have to set ElseGroup respectively.
CONDITION_SOURCE_TYPE_SPELL_CLICK_EVENT18creature entry (npc_spellclick_spells.npc_entry)Spell (npc_spellclick_spells.spell_id)Always 00 = Clicker
1 =  Spellclick target (clickee)

CONDITION_SOURCE_TYPE_QUEST_AVAILABLE19Always 0Quest IDAlways 0Always 0Condition must be met for quest to be available to player.
UNUSED20





CONDITION_SOURCE_TYPE_VEHICLE_SPELL

21
creature entry (creature_template.entry)
Spell ID from Spell.dbc

Always 0
0 = Player for whom spell bar is shown
1 =  Vehicle creature

This will show or hide spells in vehicle spell bar.
CONDITION_SOURCE_TYPE_SMART_EVENT22ID (smart_scripts.id) + 1EntryOrGuid (smart_scripts.entryorguid)SourceType (smart_scripts.source_type)0 = Invoker
1 = Object

CONDITION_SOURCE_TYPE_NPC_VENDOR23vendor entry (npc_vendor.entry)item entry (npc_vendor.item)Always 0Always 0
CONDITION_SOURCE_TYPE_SPELL_PROC24Always 0Spell ID of aura which triggers the procAlways 00 = Actor
1 = ActionTarget

CONDITION_SOURCE_TYPE_TERRAIN_SWAP (6.x / 7.x only)25Always 0terrainSwap - object in terrainswap [ 6.x / 7.x only ]Always 0(source code / new description here)
CONDITION_SOURCE_TYPE_PHASE (6.x / 7.x only)26Phase IDZone or Area ID (or 0 for any area)Always 0(source code / new description here)
CONDITION_SOURCE_TYPE_MAX27



(Placeholder)


SourceGroup

See above.

SourceEntry

See above.

ElseGroup

Allows building grouped conditions - all entries belonging to the same condition (same SourceType, SourceGroup and SourceEntry) that share the same number in ElseGroup, define one group. The entire condition is met when any of its groups is met (logical OR). The group is met when all of its entries are met (logical AND).

Example:

Two conditions with the same SourceType, SourceGroup and SourceEntry but with a different Condition, the first one has ElseGroup = 1 and the second has ElseGroup = 2, this creates a Logical OR.

Two conditions with the same SourceType, SourceGroup and SourceEntry but with a different Condition, both has ElseGroup = 1, this creates a Logical AND.

ConditionTypeOrReference
 

ConditionTypeOrReference (name)ValueConditionValue1ConditionValue2ConditionValue3Usage
CONDITION_NONE0(Never used)(Never used)(Never used)
CONDITION_AURA1Spell ID from Spell.dbcEffect index (0-2)Always 0
CONDITION_ITEM2item entry (item_template.entry)item count0 = not in bank, 1 = in bank
CONDITION_ITEM_EQUIPPED3item entry (item_template.entry)Always 0Always 0
CONDITION_ZONEID4Zone ID where this condition will be true.Always 0Always 0





CONDITION_REPUTATION_RANK





5






Faction template ID from Faction.dbc

rank:
1 = Hated
2 = Hostile
4 = Unfriendly
8 = Neutral
16 = Friendly
32 = Honored
64 = Revered
128 = Exalted

Add the target ranks together for the condition to be true for all those ranks.






Always 0

CONDITION_TEAM6Team id :Alliance = 469 / Horde = 67Always 0Always 0
CONDITION_SKILL7Required skill. See SkillLine.dbc .Skill rank value (e.g. from 1 to 450 for the 3.3.5 branch)Always 0
CONDITION_QUESTREWARDED8Quest ID - see quest_template.idAlways 0Always 0
CONDITION_QUESTTAKEN9Quest ID - see quest_template.idAlways 0Always 0
CONDITION_DRUNKENSTATE10Sober=0; Tipsy=1, Drunk=2, Smashed=3Always 0Always 0
CONDITION_WORLD_STATE11World state indexWorld state valueAlways 0
CONDITION_ACTIVE_EVENT12Event entry (game_event.eventEntry)Always 0Always 0

CONDITION_INSTANCE_INFO

13

entry
(see corresponding source script files for info)

data
(see corresponding script source files for more info)

0=INSTANCE_INFO_DATA

1=INSTANCE_INFO_GUID_DATA

2=INSTANCE_INFO_BOSS_STATE

3=INSTANCE_INFO_DATA64


CONDITION_QUEST_NONE14Quest ID - see quest_template.idAlways 0Always 0

CONDITION_CLASS

15
Class mask from ChrClasses.dbc
Add flags together for all classes where condition is true.

Always 0

Always 0

CONDITION_RACE16Player must be this race. See ChrRaces.dbc .
Add flags together for all races where condition is true.
Always 0Always 0
CONDITION_ACHIEVEMENT17Achievement ID from Achievement.dbcAlways 0Always 0
CONDITION_TITLE18Title ID from CharTitles.dbcAlways 0Always 0
CONDITION_SPAWNMASK19spawnMask from
Creature.spawnMask / Gameobject.spawnMask
Always 0Always 0
CONDITION_GENDER200 = Male, 1 = Female, 2 = NoneAlways 0Always 0
CONDITION_UNIT_STATE21UnitState (enum from Unit.h)Always 0Always 0
CONDITION_MAPID22

Map entry from Map.dbc

(0=Eastern Kingdoms, 1=Kalimdor, - and so on.)

Always 0Always 0
CONDITION_AREAID23Area ID from AreaTable.dbcAlways 0Always 0
CONDITION_CREATURE_TYPE24

Creature type from creature_template.type

True if creature_template.type == ConditionValue1

Always 0Always 0
CONDITION_SPELL25Spell ID from Spell.dbcAlways 0Always 0
CONDITION_PHASEMASK26phasemask valueAlways 0Always 0

CONDITION_LEVEL

27

Player level (1-80 in 3.3.5 || 1-110 in 7.x)
Optional: 0 = Level must be equal, 1 = Level must be higher, 2 = Level must be lower,
3 = Level must be higher or equal, 4 = Level must be lower or equal.
Always 0
CONDITION_QUEST_COMPLETE28Quest ID - see quest_template.idAlways 0Always 0
CONDITION_NEAR_CREATURE29Creature entry from creature_template.entryDistance in yardsAlive=0 / Dead=1
CONDITION_NEAR_GAMEOBJECT30Gameobject entry from gameobject_template.entryDistance in yardsAlways 0


CONDITION_OBJECT_ENTRY_GUID


31

TypeID. Available object types:
3 : TYPEID_UNIT
4 : TYPEID_PLAYER
5 : TYPEID_GAMEOBJECT
7 : TYPEID_CORPSE (player corpse, after spirit release)


0 = Any object of given TypeID
if TypeID = TYPEID_UNIT => Creature entry from creature_template.entry
if TypeID = TYPEID_GAMEOBJECT => Gameobject entry from 
gameobject_template.entry


0 = Any object of given type

1 - 500k : creature / gameobject GUID




CONDITION_TYPE_MASK


32

TypeMask - a bitmask of following object types:
0x0008 - TYPEMASK_UNIT (8)
0x0010 - TYPEMASK_PLAYER (16)
0x0020 - TYPEMASK_GAMEOBJECT (32)
0x0080 - TYPEMASK_CORPSE (player corpse after spirit release) (128)



Always 0


Always 0




CONDITION_RELATION_TO



33




Target to which relation is checked.
- one of the ConditionTargets available in current SourceType

RelationType - defines relation of current ConditionTarget to target specified in ConditionValue1.
0 - RELATION_SELF
1 - RELATION_IN_PARTY
2 - RELATION_IN_RAID_OR_PARTY
3 - RELATION_OWNED_BY (ConditionTarget is owned by ConditionValue1)
4 - RELATION_PASSENGER_OF (ConditionTarget is passenger of ConditionValue1)
5 - RELATION_CREATED_BY (ConditionTarget is summoned by ConditionValue1)




Always 0






CONDITION_REACTION_TO





34






Target to which reaction is checked.
- one of the ConditionTargets available in current SourceType

rankMask: This bitmask defines the reaction(s) of the current ConditionTarget
to the target specified in ConditionValue1 (which are allowed).
Flags for the reactions are:
1 = Hated
2 = Hostile
4 = Unfriendly
8 = Neutral
16 = Friendly
32 = Honored
64 = Revered
128 = Exalted





Always 0





CONDITION_DISTANCE_TO




35




Target to which distance is checked
- one of ConditionTargets available in current SourceType




Distance.
Defines distance between current ConditionTarget and target specified in ConditionValue1

ComparisionType:
0 = distance must be equal to ConditionValue2
1 = distance must be higher than ConditionValue2
2 = distance must be lower than ConditionValue2
3 = distance must be equal to or higher than ConditionValue2
4 = distance must be equal to or lower than ConditionValue2





CONDITION_ALIVE



36
Always 0 - Use NegativeCondition and the following settings:

NegativeCondition = 0 if target needs to be ALIVE.
NegativeCondition = 1 if target needs to be DEAD.
NOTE: A creature corpse and a creature that_looks_dead
are two different things. One is actually dead
and the other is just using an emote to appear dead. 




Always 0



Always 0




CONDITION_HP_VAL



37



HP value
ComparisionType:
  • 0 = HP must be equal
  • 1 = HP must be higher
  • 2 = HP must be lesser
  • 3 = HP must be equal or higher
  • 4 = HP must be equal or lower



Always 0




CONDITION_HP_PCT



38



Percentage of max 
HP
ComparisionType:
  • 0 = Percentage of max HP must be equal
  • 1 = Percentage of max HP must be higher
  • 2 = Percentage of max HP must be lower
  • 3 = Percentage of max HP must be equal or higher
  • 4 = Percentage of max HP must be equal or lower



Always 0

CONDITION_REALM_ACHIEVEMENT39Achievement ID from Achievement.dbcAlways 0Always 0

CONDITION_IN_WATER

40
Always 0 - Use NegativeCondition and the following settings:
NegativeCondition = 0
If target needs to be on land
NegativeCondition = 1 If target needs to be in water

Always 0

Always 0

CONDITION_TERRAIN_SWAP41

terrainSwap - true if object is in terrainswap [ 6.x only ]

Always 0Always 0


CONDITION_STAND_STATE


42
stateType (exact or any): 0 = Exact state used in ConditionValue2 1 = Any type of state in ConditionValue2Exact stand state, or generic state (stand / sit), depending on value 1
0 = Standing 1 = Sitting

Always 0

CONDITION_DAILY_QUEST_DONE43Quest ID - see quest_template.idAlways 0Always 0
CONDITION_CHARMED44Always 0Always 0Always 0
CONDITION_PET_TYPE 45maskAlways 0Always 0
CONDITION_TAXI 46Always 0Always 0Always 0
CONDITION_QUESTSTATE 47Quest ID - see quest_template.idstate_mask: true if player is in any of the provided quest states for the quest (1 = not taken, 2 = completed, 8 = in progress, 32 = failed, 64 = rewarded)Always 0
CONDITION_QUEST_OBJECTIVE_COMPLETE
48

Quest Objective ID - see quest_objectives (6.x / 7.x/ 8.x only)

Quest ID (3.3.5 only)

Objective index (a value from 0 to 3) 3.3.5 onlyCounter (3.3.5 only)

CONDITION_DIFFICULTY_ID

49Difficulty (0 None, 1 Normal, etc)Always 0 Always 0true if target's map has difficulty id
CONDITION_OBJECT_ENTRY_GUID51TypeIDentryguidtrue if object is type TypeID and the entry is 0 or matches entry of the object or matches guid of the object
CONDITION_TYPE_MASK52TypeMaskAlways 0Always 0true if object is type object's TypeMask matches provided TypeMask






ConditionTarget

Allows selecting an object for which conditions will be checked. Available objects are dependant on SourceTypeOrReferenceId, for details see respective source type reference.

ConditionValue1

See below

ConditionValue2

See below

ConditionValue3

See below

NegativeCondition

If set to 1, the condition will be "inverted"

Example: CONDITION_AURA with NegativeCondition will be true when the player does NOT have the aura.

ErrorType

Id from /src/server/game/Miscellaneous/SharedDefines.h:839. Will be displayed only for the below condition source type:

CONDITION_SOURCE_TYPE_SPELL = 17

ErrorTextId

Id from /src/server/game/Miscellaneous/SharedDefines.h:1033. Will be displayed only for the below condition source type:

CONDITION_SOURCE_TYPE_SPELL = 17

(ErrorType must be SPELL_FAILED_CUSTOM_ERROR (209) otherwise 0)

ScriptName

The ScriptName this condition uses, if any.

Comment

Explanation of this condition or reference

Explanation of condition types

The content of the conditions#SourceGroup and conditions#SourceEntry fields depends on the conditions#SourceTypeOrReferenceId

*CONDITION_SOURCE_TYPE_NONE = 0

Only used in Reference Templates! See below.

*CONDITION_SOURCE_TYPE_ * _LOOT_TEMPLATE = 1 - 12
*SourceGroup: loot entry (_loot_template.Entry or Reference_loot_template.Entry)
*SourceEntry: item id (_loot_template.Item or Reference_loot_template.Item)

    • ConditionTarget: always 0

example: if you use type 1 (creature_loot_template) then use the entry and item fields from that table

*CONDITION_SOURCE_TYPE_SPELL_IMPLICIT_TARGET = 13

    • SourceGroup: mask of effects to be affected by condition (1 - EFFECT_0, 2 - EFFECT_1, 4 - EFFECT_2 - don't use wowhead to get number of effects, data from wowhead sometimes doesn't match real effect number)
    • SourceEntry: spell (Spell Id from  Spell DBC file.)
    • ConditionTarget:
      • 0 - Potential target of the spell
      • 1 - Caster of the spell

Notes:

  • this condition source type allows to define a filter for possible spell effect targets, so only targets matching condition will be selected as implicit targets of the spell. Only target types: AREA, NEARBY and CONE are allowed to be filtered. This source type affects only targets selected by spell, it doesn't affect spell target selected by player on cast, to affect that target use CONDITION_SOURCE_TYPE_SPELL.
  • to restrict targets to player's only use CONDITION_TYPEMASK with TYPEMASK_PLAYER + TYPEMASK_CORPSE to allow targeting dead players.
  • remember that conditions with the same value ElseGroup will be used to make logical AND check, so to allow different targets for the same spell effect you have to set ElseGroup respectively.
  • if you're looking for old CONDITION_SOURCE_TYPE_SPELL_SCRIPT_TARGET - use this condition source type instead

*CONDITION_SOURCE_TYPE_GOSSIP_MENU = 14

    • SourceGroup: gossip menu entry (gossip_menu.entry)
    • SourceEntry: gossip menu text id (gossip_menu.text_id)
    • ConditionTarget:
      • 0 - Player for which gossip text is shown
      • 1 - WorldObject providing gossip

*CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION = 15

*CONDITION_SOURCE_TYPE_CREATURE_TEMPLATE_VEHICLE = 16

    • SourceGroup: always 0
    • SourceEntry: creature entry (creature_template.entry)
    • ConditionTarget:
      • 0 - Player riding a vehicle
      • 1 - Vehicle creature

Note: creature entry must be a vehicle. Example: If this is used with CONDITION_AREA, the player will be dismounted from the vehicle if the mounted player leaves that area.

*CONDITION_SOURCE_TYPE_SPELL = 17

    • SourceGroup: always 0
    • SourceEntry: spell (Spell Id from Spell.dbc)
    • ConditionTarget:
      • 0 - Caster of the spell
      • 1 - Explicit target of the spell (only for spell