Smart scripts SF: Difference between revisions

From Project Skyfire
Jump to navigation Jump to search
m (decat)
No edit summary
Line 1: Line 1:
{| align="right"
{| align="right"
| __TOC__
| __TOC__
|}
|}


{{Back-to:World}}
{{Back-to:World}}


<br><big>'''The `Smart_Scripts` table'''</big>


<big>'''The `smart_scripts` table'''</big>
{| border="1"


==== Table Structure  ====
|-
 
| '''Field'''
 
| '''Type'''
 
| '''Attributes'''
 
| '''Key'''
 
| '''Null'''
 
| '''Default'''
 
| '''Extra'''


{| border="1"
|-
| '''Field'''
| '''Type'''
| '''Attributes'''
| '''Key'''
| '''Null'''
| '''Default'''
| '''Extra'''
| '''Comment'''
| '''Comment'''
|-
|-
| [[#entryorguid|entryorguid]]
| [[#entryorguid|entryorguid]]
| int(11)  
 
| signed  
| int(11)
| PRI  
 
| NO  
| signed
| ''None''  
 
| <br>
| PRI
| <br>
 
| NO
 
| ''None''
 
|
 
|
 
|-
|-
| [[#Source_Type|source_type]]  
 
| tinyint(3)  
| [[#source_type|source_type]]
| unsigned  
 
| PRI  
| tinyint(3)
| NO  
 
| 0
| unsigned
|
 
| <br>
| PRI
|-
 
| [[#id|id]]
| NO
| smallint(5)
 
| unsigned
| 0
| PRI
 
| NO
|
| 0  
 
|
|
| <br>
 
|-
| [[#link|link]]
| smallint(5)
| unsigned
| PRI
| NO
| 0
|
| <br>
|-
|-
| [[#Event_types|event_type]]  
 
| tinyint(3)  
| [[#id|id]]
| unsigned  
 
|  
| smallint(5)
| NO  
 
| 0  
| unsigned
|  
 
|  
| PRI
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| [[#event_phase_mask|event_phase_mask]]
 
| tinyint(3)  
| [[#link|link]]
| unsigned  
 
|  
| smallint(5)
| NO  
 
| 0  
| unsigned
|  
 
|  
| PRI
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| [[#event_chance|event_chance]]
 
| tinyint(3)  
| [[#event_type|event_type]]
| unsigned  
 
|  
| tinyint(3)
| NO  
 
| 100
| unsigned
|  
 
|  
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| [[#Event_flags|event_flags]]  
 
| tinyint(3)  
| [[#event_phase_mask|event_phase_mask]]
| unsigned  
 
|
| tinyint(3)
| NO
 
| 0
| unsigned
|  
 
|
|
|-
 
| [[#Event_types|event_param1]]
| NO
| int(10)
 
| unsigned
| 0
|
 
| NO
|
| 0
 
|
|
| <br>
 
|-
|-
| [[#Event_types|event_param2]]  
 
| int(10)  
| [[#event_chance|event_chance]]
| unsigned  
 
|  
| tinyint(3)
| NO  
 
| 0
| unsigned
|  
 
|  
|
 
| NO
 
| 100
 
|
 
|
 
|-
|-
| [[#Event_types|event_param3]]  
 
| int(10)  
| [[#event_flags|event_flags]]
| unsigned  
 
|
| tinyint(3)
| NO
 
| 0
| unsigned
|  
 
| <br>
|
|-
 
| [[#Event_types|event_param4]]
| NO
| int(10)
 
| unsigned
| 0
|
 
| NO
|
| 0
 
|
|
|
 
|-
|-
| [[#Action_types|action_type]]  
 
| tinyint(3)  
| [[#event_param1-4|event_param1]]
| unsigned  
 
|  
| int(10)
| NO  
 
| 0  
| unsigned
|  
 
|  
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| [[#Action_types|action_param1]]  
 
| int(10)  
| [[#event_param1-4|event_param2]]
| unsigned  
 
|
| int(10)
| NO
 
| 0
| unsigned
|
 
|  
|
|-
 
| [[#Action_types|action_param2]]
| NO
| int(10)
 
| unsigned
| 0
|  
 
| NO
|
| 0  
 
|
|
| <br>
 
|-
| [[#Action_types|action_param3]]
| int(10)
| unsigned
|
| NO
| 0
|  
|
|-
|-
| [[#Action_types|action_param4]]  
 
| int(10)  
| [[#event_param1-4|event_param3]]
| unsigned  
 
|  
| int(10)
| NO  
 
| 0  
| unsigned
|  
 
|  
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| [[#Action_types|action_param5]]  
 
| int(10)  
| [[#event_param1-4|event_param4]]
| unsigned  
 
|
| int(10)
| NO
 
| 0
| unsigned
|  
 
|
|
|-
 
| [[#Action_types|action_param6]]
| NO
| int(10)
 
| unsigned
| 0
|
 
| NO
|
| 0
 
|  
|
| <br>
 
|-
|-
| [[#Targets|target_type]]  
 
| tinyint(3)  
| [[#action_type|action_type]]
| unsigned  
 
|  
| tinyint(3)
| NO  
 
| 0  
| unsigned
|  
 
|  
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| [[#Targets|target_param1]]
| int(10)
| unsigned
|
| NO
| 0
|
|
|-
| [[#Targets|target_param2]]
| int(10)
| unsigned
|
| NO
| 0
|
|
|-
| [[#Targets|target_param3]]
| int(10)
| unsigned
|
| NO
| 0
|
|
|-
| [[#Targets|target_x]]
| float
| signed
|
| NO
| 0
|
|
|-
| [[#Targets|target_y]]
| float
| signed
|
| NO
| 0
|
|
|-
| [[#Targets|target_z]]
| float
| signed
|
| NO
| 0
|
|
|-
| [[#Targets|target_o]]
| float
| signed
|
| NO
| 0
|
|
|-
| [[#comment|comment]]
| text
| signed
|
| NO
| <br>
|
| Event Comment
|}


<br>
| [[#action_param1-6|action_param1]]
 
| int(10)
 
| unsigned
 
|
 
| NO
 
| 0


==== Table fields description  ====
|


'''[[#EntryOrGuid|EntryOrGuid:]]'''
|


*Entryorguid &gt; 0: entry of the creature / game object / etc.
|-
*Entryorguid &lt; 0: guid of the creature / game object / etc.
*Depends on source_type.


'''[[#Source_Type|source_type:]]'''
| [[#action_param1-6|action_param2]]


*Object type: creature, game object, spell.
| int(10)


'''[[#Id|id:]]'''
| unsigned


*Incremental id ''bound'' to each entryorguid&amp;source_type (0, 1, 2, ...).
|
 
| NO


'''[[#Link|link:]]'''
| 0


*Simple event linking;
|
*Example: if id = 0 and link = 1; id 1 will only be able to occur if id = 0 was triggered.


'''[[#Event_types|event_type, event_param1, event_param2, event_param3, event_param4:]]'''
|


*Smart_event to be used.
|-


'''event_phase_mask:'''
| [[#action_param1-6|action_param3]]


*Event will only be able to occur if creature/GO is in this phase;
| int(10)
*0 means all phases (?);
*(Inverse of EAI: event_inverse_phase_mask).


'''event_chance:'''
| unsigned


*Probability of the event to occur, in percentage;
|
*0-100%.
 
| NO


'''[[#Event_flags|event_flags:]]'''
| 0


*Sets if the event should not repeat or should only happen in a given instance/dungeon difficulty (if applicable);
|
*Values can be added together (bitwise math).


'''[[#Action_types|action_type, action_param1,&nbsp;action_param2, action_param3, action_param4, action_param5, action_param6:]]'''
|


*Action what will be used if event is triggered.
|-


'''[[#Targets|target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o:]]'''
| [[#action_param1-6|action_param4]]


*Defines the target of the event and/or action.
| int(10)


'''comment:'''
| unsigned


*Description of the event-action combo;
|
*Use simple comments however they should not be ambiguous;
*(not used by core).
* Style should be something like this: 'Creature (or Gameobject) name - Cast Spellname'
Read some real scripts for more info.


'''Quick notes:'''
| NO


*Always update ''creature_template'' or ''gameobject_template'' with:
| 0
<pre>UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=y;
UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=y;
</pre>
*If the creature or GO is inside a dungeon, set ''event_flags'' accordingly to the instance difficulty (heroic, 25 man, etc.).
*In case of doubt about an ''Event'', ''Action ''or ''Target, ''check source code (''src/server/game/AI/SmartScripts'' files; mainly '''SmartScript.cpp'''


<br>
|


==== Source_Type  ====
|


{| width="50%" border="1" cellpadding="1" cellspacing="1"
|-
|-
! scope="col" | Name
 
! scope="col" | Value
| [[#action_param1-6|action_param5]]
! scope="col" | Comment
 
|-
| int(10)
| SMART_SCRIPT_TYPE_CREATURE
 
| 0
| unsigned
| <br>
 
|-
|
| SMART_SCRIPT_TYPE_GAMEOBJECT
 
| 1
| NO
| Partially implemented
 
|-
| 0
| SMART_SCRIPT_TYPE_AREATRIGGER
 
| 2
|
| <br>
 
|-
|
| SMART_SCRIPT_TYPE_EVENT
 
| 3
| Not Yet Implemented<br>
|-
|-
| SMART_SCRIPT_TYPE_GOSSIP
 
| 4
| [[#action_param1-6|action_param6]]
| Not Yet Implemented
 
| int(10)
 
| unsigned
 
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| SMART_SCRIPT_TYPE_QUEST
| 5
| Not Yet Implemented
|-
| SMART_SCRIPT_TYPE_SPELL
| 6
| Not Yet Implemented
|-
| SMART_SCRIPT_TYPE_TRANSPORT
| 7
| Not Yet Implemented
|-
| SMART_SCRIPT_TYPE_INSTANCE
| 8
| Not Yet Implemented
|-
| SMART_SCRIPT_TYPE_TIMED_ACTIONLIST
| 9
|
|}


<br>
| [[#target_type|target_type]]
 
| tinyint(3)
 
| unsigned


==== Event types  ====
|
 
| NO
 
| 0
 
|
 
|


{| width="100%" border="1" cellpadding="1" cellspacing="1"
|-
! scope="col" | Name
! scope="col" | Value
! scope="col" | Param1
! scope="col" | Param2
! scope="col" | Param3
! scope="col" | Param4
! scope="col" | Comment
|-
| SMART_EVENT_UPDATE_IC
| 0
| InitialMin
| InitialMax
| RepeatMin
| RepeatMax
| In combat.
|-
|-
| SMART_EVENT_UPDATE_OOC
 
| 1
| [[#target_param1-3|target_param1]]
| InitialMin
 
| InitialMax
| int(10)
| RepeatMin
 
| RepeatMax
| unsigned
| Out of combat.
 
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| SMART_EVENT_HEALT_PCT
 
| 2
| [[#target_param1-3|target_param2]]
| HPMin%
 
| HPMax%
| int(10)
| RepeatMin
 
| RepeatMax
| unsigned
| Health Percentage
 
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| SMART_EVENT_MANA_PCT
 
| 3
| [[#target_param1-3|target_param3]]
| ManaMin%
 
| ManaMax%
| int(10)
| RepeatMin
 
| RepeatMax
| unsigned
| Mana Percentage
 
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| SMART_EVENT_AGGRO
 
| 4
| [[#target_xyzo|target_x]]
|  
 
|  
| float
|  
 
|  
| signed
| On Creature Aggro
 
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| SMART_EVENT_KILL
 
| 5
| [[#target_xyzo|target_y]]
| CooldownMin0
 
| CooldownMax1
| float
| playerOnly2
 
| else creature entry3
| signed
| On Creature Kill
 
|-
|
| SMART_EVENT_DEATH
 
| 6
| NO
|
 
|  
| 0
|
 
|  
|
| On Creature Death
 
|
 
|-
|-
| SMART_EVENT_EVADE
 
| 7
| [[#target_xyzo|target_z]]
|  
 
|  
| float
|  
 
|  
| signed
| On Creature Evade Attack
 
|
 
| NO
 
| 0
 
|
 
|
 
|-
|-
| SMART_EVENT_SPELLHIT
 
| 8
| [[#target_xyzo|target_o]]
| SpellID
 
| School
| float
| CooldownMin
 
| CooldownMax
| signed
| On Creature Spell Hit
 
|-
|
| SMART_EVENT_RANGE
 
| 9
| NO
| MinDist
 
| MaxDist
| 0
| RepeatMin
 
| RepeatMax
|
| On Target In Range
 
|
 
|-
|-
| SMART_EVENT_OOC_LOS
 
| 10
| [[#comment|comment]]
| NoHostile
 
| MaxRange
| text
| CooldownMin
 
| CooldownMax
| signed
| On Target In Distance Out of Combat
 
|-
|
| SMART_EVENT_RESPAWN
 
| 11
| NO
| type
 
| MapId
|
| ZoneId
 
|
|
| On Creature Respawn
 
|-
| Event Comment
| SMART_EVENT_TARGET_HEALTH_PCT
 
| 12
|}
| HPMin%
 
| HPMax%
<br> <big>'''Description of the fields'''</big>
| RepeatMin
 
| RepeatMax
Please note: <b style="color:red">X</b> means that the feature/option is not (yet) implemented.
| On Target Health Percentage
 
|-
==== entryorguid ====
| SMART_EVENT_TARGET_CASTING
 
| 13
*EntryOrGuid &gt; 0: entry of the creature / game object / etc.
| RepeatMin
 
| RepeatMax
*EntryOrGuid &lt; 0: guid of the creature / game object / etc.
|
 
|
*Depends on source_type.
| On Target Casting Spell
 
|-
==== source_type ====
| SMART_EVENT_FRIENDLY_HEALTH
 
| 14
*Object type: creature, game object, spell.
| HPDeficit
 
| Radius
==== id ====
| RepeatMin
 
| RepeatMax
*Incremental id ''bound'' to each entryorguid&amp;source_type (0, 1, 2, ...).
| On Friendly Health Deficit
 
|-
==== link ====
| SMART_EVENT_FRIENDLY_IS_CC
 
| 15
*Simple event linking;
| Radius
 
| RepeatMin
*Example: if id = 0 and link = 1; id 1 will only be able to occur if id = 0 was triggered.
| RepeatMax
 
|
'''[[#Event_types|event_type, event_param1, event_param2, event_param3, event_param4:]]'''
|  
 
|-
*Smart_event to be used.
| SMART_EVENT_FRIENDLY_MISSING_BUFF
 
| 16
==== event_phase_mask ====
| SpellId
 
| Radius
*Event will only be able to occur if creature/GO is in this phase;
| RepeatMin
 
| RepeatMax
*0 means all phases (?);
| On Friendly Lost Buff
 
|-
*(Inverse of EAI: event_inverse_phase_mask).
| SMART_EVENT_SUMMONED_UNIT
 
| 17
==== event_chance ====
| CretureId (0 all)  
 
| CooldownMin
*Probability of the event to occur, in percentage;
| CooldownMax
 
|
*0-100%.
| On Creature Summoned Unit
 
|-
'''event_flags'''
| SMART_EVENT_TARGET_MANA_PCT
 
| 18
*Sets if the event should not repeat or should only happen in a given instance/dungeon difficulty (if applicable);
| ManaMin%
 
| ManaMax%
*Values can be added together (bitwise math).
| RepeatMin
 
| RepeatMax
'''[[#Action_types|action_type, action_param1,&nbsp;action_param2, action_param3, action_param4, action_param5, action_param6:]]'''
| On Target Mana Percentage
 
|-
*Action what will be used if event is triggered.
| SMART_EVENT_ACCEPTED_QUEST
 
| 19
'''[[#Targets|target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o:]]'''
| QuestID (0 any)
 
|  
*Defines the target of the event and/or action.
|
 
|
==== comment ====
| On Target Accepted Quest
 
|-
Commenting on SAI uses a template which is the following: (with an example)
| SMART_EVENT_REWARD_QUEST
 
| 20
"Creature name - Event - Action"
| QuestID (0 any)  
 
|
"Minion of Gurok - On spawn - Set Random Movement"
|
 
|
'''Quick notes:'''
| On Target Rewarded Quest
 
|-
*Always update ''creature_template'',''gameobject_template'' or ''areatrigger_scripts'' with:
| SMART_EVENT_REACHED_HOME
 
| 21
<pre>UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=y;
|
 
|
UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=y;
|
 
|
INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES(y,'SmartTrigger');
| On Creature Reached Home
 
|-
</pre>
| SMART_EVENT_RECEIVE_EMOTE
 
| 22
*If the creature or GO is inside a dungeon, set ''event_flags'' accordingly to the instance difficulty (heroic, 25 man, etc.).
| EmoteId
 
| CooldownMin
*In case of doubt about an ''Event'', ''Action ''or ''Target, ''check source code (''src/server/game/AI/SmartScripts'' files; mainly '''SmartScript.cpp''')
| CooldownMax
 
| condition
<br>
| val1,val2,val3 (?)
 
|-
==== source_type ====
| SMART_EVENT_HAS_AURA
 
| 23
{| width="50%" border="1" cellpadding="1" cellspacing="1"
| SpellID
 
| Stacks
| RepeatMin
| RepeatMax
| On Creature Has Aura
|-
| SMART_EVENT_TARGET_BUFFED
| 24
| SpellID
| Stacks
| RepeatMin
| RepeatMax
| On Target Buffed With Spell
|-
| SMART_EVENT_RESET
| 25
|
|
|
|  
| After Combat, On Respawn or Spawn
|-
|-
| SMART_EVENT_IC_LOS
 
| 26
! scope="col" | Name
| NoHostile
 
| MaxRange
! scope="col" | Value
| CooldownMin
 
| CooldownMax
| On Target In Distance In Combat
|-
|-
| SMART_EVENT_PASSENGER_BOARDED
 
| 27
| SMART_SCRIPT_TYPE_CREATURE
| CooldownMin
 
| CooldownMax
| 0
|  
 
|
|
|-
|-
| SMART_EVENT_PASSENGER_REMOVED
 
| 28
| SMART_SCRIPT_TYPE_GAMEOBJECT
| CooldownMin
 
| CooldownMax
| 1
|  
 
|
|
|-
|-
| SMART_EVENT_CHARMED
 
| 29
| SMART_SCRIPT_TYPE_AREATRIGGER
|  
 
|
| 2
|  
 
|
| On Creature Charmed
|-
|-
| SMART_EVENT_CHARMED_TARGET
 
| 30
| <b style="color:red">X</b> SMART_SCRIPT_TYPE_EVENT
|  
 
|
| 3
|  
 
|
| On Target Charmed
|-
|-
| SMART_EVENT_SPELLHIT_TARGET
 
| 31
| <b style="color:red">X</b> SMART_SCRIPT_TYPE_GOSSIP
| SpellId
 
| School
| 4
| RepeatMin
 
| RepeatMax
| On Target Spell Hit
|-
|-
| SMART_EVENT_DAMAGED
 
| 32
| <b style="color:red">X</b>  SMART_SCRIPT_TYPE_QUEST
| MinDmg
 
| MaxDmg
| 5
| RepeatMin
 
| RepeatMax
| On Creature Damaged
|-
|-
| SMART_EVENT_DAMAGED_TARGET
 
| 33
| <b style="color:red">X</b>  SMART_SCRIPT_TYPE_SPELL
| MinDmg
 
| MaxDmg
| 6
| RepeatMin
 
| RepeatMax
| On Target Damaged
|-
|-
| SMART_EVENT_MOVEMENTINFORM
 
| 34
| <b style="color:red">X</b>  SMART_SCRIPT_TYPE_TRANSPORT
| MovementType (any)
 
| PointID
| 7
|  
 
|
|
|-
|-
| SMART_EVENT_SUMMON_DESPAWNED
 
| 35
| <b style="color:red">X</b> SMART_SCRIPT_TYPE_INSTANCE
| Entry
 
| CooldownMin
| 8
| CooldownMax
 
|
| On Summoned Unit Despawned
|-
|-
| SMART_EVENT_CORPSE_REMOVED
 
| 36
| SMART_SCRIPT_TYPE_TIMED_ACTIONLIST
|  
 
|
| 9
|
 
|  
|}
| On Creature Corpse Removed
 
<br>
 
==== event_type ====
 
{| width="100%" border="1" cellpadding="1" cellspacing="1"
 
|-
|-
| SMART_EVENT_AI_INIT
 
| 37
! scope="col" | Name
|  
 
|  
! scope="col" | Value
|  
 
|  
! scope="col" | Param1
|  
 
! scope="col" | Param2
 
! scope="col" | Param3
 
! scope="col" | Param4
 
! scope="col" | Comment
 
|-
|-
| SMART_EVENT_DATA_SET
 
| 38
| SMART_EVENT_UPDATE_IC
| Field
 
| Value
| 0
| CooldownMin
 
| CooldownMax
| InitialMin
| On Creature Data Set,  Can be used with  SMART_ACTION_SET_DATA
 
| InitialMax
 
| RepeatMin
 
| RepeatMax
 
| In combat.
 
|-
|-
| SMART_EVENT_WAYPOINT_START
 
| 39
| SMART_EVENT_UPDATE_OOC
| PointId (0 any)
 
| pathId (0 any)
| 1
|  
 
|  
| InitialMin
| On Creature Waypoint ID Started
 
| InitialMax
 
| RepeatMin
 
| RepeatMax
 
| Out of combat.
 
|-
|-
| SMART_EVENT_WAYPOINT_REACHED
 
| 40
| SMART_EVENT_HEALT_PCT
| PointId (0 any)
 
| pathId (0 any)
| 2
|  
 
|  
| HPMin%
| On Creature Waypoint ID Reached
 
| HPMax%
 
| RepeatMin
 
| RepeatMax
 
| Health Percentage
 
|-
|-
| SMART_EVENT_TRANSPORT_ADDPLAYER
 
| 41
| SMART_EVENT_MANA_PCT
|  
 
|  
| 3
|  
 
|  
| ManaMin%
|  
 
| ManaMax%
 
| RepeatMin
 
| RepeatMax
 
| Mana Percentage
 
|-
|-
| SMART_EVENT_TRANSPORT_ADDCREATURE
 
| 42
| SMART_EVENT_AGGRO
| Entry (0 any)
 
|  
| 4
|  
 
|  
|
|  
 
|
 
|
 
|
 
| On Creature Aggro
 
|-
|-
| SMART_EVENT_TRANSPORT_REMOVE_PLAYER
 
| 43
| SMART_EVENT_KILL
|  
 
|  
| 5
|  
 
|  
| CooldownMin0
|  
 
| CooldownMax1
 
| playerOnly2
 
| else creature entry3
 
| On Creature Kill
 
|-
|-
| SMART_EVENT_TRANSPORT_RELOCATE
 
| 44
| SMART_EVENT_DEATH
| PointId
 
|  
| 6
|
 
|  
|
|
 
|-
|
| SMART_EVENT_INSTANCE_PLAYER_ENTER
 
| 45
|
| Team (0 any)
 
| CooldownMin
|
| CooldownMax
 
|  
| On Creature Death
|
 
|-
|-
| SMART_EVENT_AREATRIGGER_ONTRIGGER
 
| 46
| SMART_EVENT_EVADE
| TriggerId (0 any)
 
|  
| 7
|  
 
|  
|
|  
 
|
 
|
 
|
 
| On Creature Evade Attack
 
|-
|-
| SMART_EVENT_QUEST_ACCEPTED
 
| 47
| SMART_EVENT_SPELLHIT
|  
 
|  
| 8
|  
 
|  
| SpellID
| On Target Quest Accepted
 
| School
 
| CooldownMin
 
| CooldownMax
 
| On Creature/Gameobject Spell Hit
 
|-
|-
| SMART_EVENT_QUEST_OBJ_COPLETETION
 
| 48
| SMART_EVENT_RANGE
|  
 
|  
| 9
|  
 
|  
| MinDist
| On Target Quest Objective Completed
 
| MaxDist
 
| RepeatMin
 
| RepeatMax
 
| On Target In Range
 
|-
|-
| SMART_EVENT_QUEST_COMPLETION
 
| 49
| SMART_EVENT_OOC_LOS
|  
 
|  
| 10
|  
 
|  
| NoHostile
| On Target Quest Completed
 
| MaxRange
 
| CooldownMin
 
| CooldownMax
 
| On Target In Distance Out of Combat
 
|-
|-
| SMART_EVENT_QUEST_REWARDED
 
| 50
| SMART_EVENT_RESPAWN
|  
 
|  
| 11
|  
 
|  
| type
| On Target Quest Rewarded
 
| MapId
 
| ZoneId
 
|
 
| On Creature/Gameobject Respawn
 
|-
|-
| SMART_EVENT_QUEST_FAIL
 
| 51
| SMART_EVENT_TARGET_HEALTH_PCT
|  
 
|  
| 12
|  
 
|  
| HPMin%
| On Target Quest Field
 
| HPMax%
 
| RepeatMin
 
| RepeatMax
 
| On Target Health Percentage
 
|-
|-
| SMART_EVENT_TEXT_OVER
 
| 52
| SMART_EVENT_TARGET_CASTING
| GroupId (from creatue_text)
 
| CreatureId (0 any)
| 13
|
 
|  
| RepeatMin
| On TEXT_OVER Event Triggered After SMART_ACTION_TALK
 
|-
| RepeatMax
| SMART_EVENT_RECEIVE_HEAL
 
| 53
|
| MinHeal
 
| MaxHeal
|
| CooldownMin
 
| CooldownMax
| On Target Casting Spell
| On Creature Received Healing
 
|-
|-
| SMART_EVENT_JUST_SUMMONED
 
| 54
| SMART_EVENT_FRIENDLY_HEALTH
|  
 
|  
| 14
|  
 
|  
| HPDeficit
| On Creature Just spawned
 
| Radius
 
| RepeatMin
 
| RepeatMax
 
| On Friendly Health Deficit
 
|-
|-
| SMART_EVENT_WAYPOINT_PAUSED
 
| 55
| SMART_EVENT_FRIENDLY_IS_CC
| PointId (0 any)
 
| pathID (0 any)
| 15
|
 
|  
| Radius
| On Creature Paused at Waypoint ID
 
|-
| RepeatMin
| SMART_EVENT_WAYPOINT_RESUMED
 
| 56
| RepeatMax
| PointId (0 any)
 
| pathID (0 any)
|
|
 
|  
|
| On Creature Resumed after Waypoint ID
 
|-
|-
| SMART_EVENT_WAYPOINT_STOPPED
 
| 57
| SMART_EVENT_FRIENDLY_MISSING_BUFF
| PointId (0 any)
 
| pathID (0 any)
| 16
|  
 
|  
| SpellId
| On Creature Stopped On Waypoint ID
 
| Radius
 
| RepeatMin
 
| RepeatMax
 
| On Friendly Lost Buff
 
|-
|-
| SMART_EVENT_WAYPOINT_ENDED
 
| 58
| SMART_EVENT_SUMMONED_UNIT
| PointId (0 any)  
 
| pathID (0 any)
| 17
|  
 
|  
| CretureId (0 all)
| On Creature Waypoint Path Ended
 
| CooldownMin
 
| CooldownMax
 
|
 
| On Creature/Gameobject Summoned Unit
 
|-
|-
| SMART_EVENT_TIMED_EVENT_TRIGGERED
 
| 59
| SMART_EVENT_TARGET_MANA_PCT
| Id
 
|  
| 18
|  
 
|  
| ManaMin%
|  
 
| ManaMax%
 
| RepeatMin
 
| RepeatMax
 
| On Target Mana Percentage
 
|-
|-
| SMART_EVENT_UPDATE
 
| 60
| SMART_EVENT_ACCEPTED_QUEST
| InitialMin
 
| InitialMax
| 19
| RepeatMin
 
| RepeatMax
| QuestID (0 any)
|  
 
|
 
|
 
|
 
| On Target Accepted Quest
 
|-
|-
| SMART_EVENT_LINK
 
| 61
| SMART_EVENT_REWARD_QUEST
|
 
|
| 20
|
 
|
| QuestID (0 any)
| used to link together multiple events
 
|-
|
| SMART_EVENT_GOSSIP_SELECT
 
| 62
|
| menuID
 
| actionID
|
|
 
|
| On Target Rewarded Quest
|
 
|-
| SMART_EVENT_JUST_CREATED
| 63
|  
|
|
|  
|
|-
| SMART_EVENT_GOSSIP_HELLO
| 64
|
|  
|
|  
|
|-
|-
| SMART_EVENT_FOLLOW_COMPLETED
| 65
|
|
|
|
|
|-
| SMART_EVENT_DUMMY_EFFECT
| 66
| spellId
| effectIndex
|
|
|
|}


<br>
| SMART_EVENT_REACHED_HOME


==== Action types  ====
| 21
 
|
 
|
 
|
 
|
 
| On Creature Reached Home


{| width="100%" border="1" cellpadding="1" cellspacing="1"
|-
! scope="col" | Name
! scope="col" | Value
! scope="col" | Param1
! scope="col" | Param2
! scope="col" | Param3
! scope="col" | Param4
! scope="col" | Param5
! scope="col" | Param6
! scope="col" | Comment
|-
|-
| SMART_ACTION_NONE
 
| 0
| SMART_EVENT_RECEIVE_EMOTE
|  
 
|  
| 22
|  
 
|  
| EmoteId
|
 
|  
| CooldownMin
| Do Nothing
 
| CooldownMax
 
| condition
 
| val1,val2,val3 (?)
 
|-
|-
| SMART_ACTION_TALK
 
| 1
| SMART_EVENT_HAS_AURA
| [[Creature_text_tc2#group_id|Creature_text.groupid]]
 
| duration to wait before TEXT_OVER event is triggered
| 23
|
 
|  
| SpellID
|
 
|  
| Stacks
| Param2 in Milliseconds.
 
| RepeatMin
 
| RepeatMax
 
| On Creature Has Aura
 
|-
|-
| SMART_ACTION_SET_FACTION
 
| 2
| SMART_EVENT_TARGET_BUFFED
| [[FactionTemplate.dbc_tc2|FactionID]] (or 0 for default)
 
|  
| 24
|
 
|  
| SpellID
|
 
|  
| Stacks
|
 
| RepeatMin
 
| RepeatMax
 
| On Target Buffed With Spell
 
|-
|-
| SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL
 
| 3
| SMART_EVENT_RESET
| [[Creature_template_tc2#entry|Creature_template.entry]](param1)
 
| [[Creature_template_tc2#modelid1-4|Creature_template.modelID]](param2)
| 25
|  
 
|
|
|  
 
|
|
| Take DisplayID of creature (param1)  OR  Turn to DisplayID (param2)  OR  Both = 0 for Demorph
 
|-
|
| SMART_ACTION_SOUND
 
| 4
|
| SoundId
 
| TextRange
| After Combat, On Respawn or Spawn
|  
 
|
|
|  
| Play Sound
|-
|-
| SMART_ACTION_PLAY_EMOTE
 
| 5
| SMART_EVENT_IC_LOS
| EmoteId
 
|  
| 26
|  
 
|  
| NoHostile
|
 
|  
| MaxRange
| Play Emote
 
| CooldownMin
 
| CooldownMax
 
| On Target In Distance In Combat
 
|-
|-
| SMART_ACTION_FAIL_QUEST
 
| 6
| SMART_EVENT_PASSENGER_BOARDED
| [[Quest_template_tc2#entry|QuestID]]
 
|  
| 27
|
 
|  
| CooldownMin
|
 
|  
| CooldownMax
| Fail Quest of Target
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_ADD_QUEST
 
| 7
| SMART_EVENT_PASSENGER_REMOVED
| [[Quest_template_tc2#entry|QuestID]]
 
|  
| 28
|
 
|  
| CooldownMin
|
 
|  
| CooldownMax
| Add Quest to Target
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_SET_REACT_STATE
 
| 8
| SMART_EVENT_CHARMED
| State
 
|  
| 29
|  
 
|  
|
|
 
|  
|
| React State. Can be Aggressive, Passive or Defensive.
 
|
 
|
 
| On Creature Charmed
 
|-
|-
| SMART_ACTION_ACTIVATE_GOBJECT
 
| 9
| SMART_EVENT_CHARMED_TARGET
|  
 
|  
| 30
|  
 
|  
|
|
 
|  
|
| Activate Object
 
|
 
|
 
| On Target Charmed
 
|-
|-
| SMART_ACTION_RANDOM_EMOTE
 
| 10
| SMART_EVENT_SPELLHIT_TARGET
| EmoteId1
 
| EmoteId2
| 31
| EmoteId3...
 
|  
| SpellId
|
 
|  
| School
| Play Random Emote
 
| RepeatMin
 
| RepeatMax
 
| On Target Spell Hit
 
|-
|-
| SMART_ACTION_CAST
 
| 11
| SMART_EVENT_DAMAGED
| SpellId
 
| [[#Cast_flags|CastFlags]]
| 32
|
 
|  
| MinDmg
|
 
|  
| MaxDmg
| Cast Spell ID at Target
 
| RepeatMin
 
| RepeatMax
 
| On Creature Damaged
 
|-
|-
| SMART_ACTION_SUMMON_CREATURE
 
| 12
| SMART_EVENT_DAMAGED_TARGET
| CreatureID
 
| [[#Summon Types|Summon type]]
| 33
| duration in ms
 
| StorageID (always 0)
| MinDmg
| attackInvoker
 
|  
| MaxDmg
| Summon Unit
 
|-
| RepeatMin
| SMART_ACTION_THREAT_SINGLE_PCT
 
| 13
| RepeatMax
| Threat%
 
|  
| On Target Damaged
|
 
|
|
|
| Change Threat Percentage for Single Target
|-
|-
| SMART_ACTION_THREAT_ALL_PCT
 
| 14
| SMART_EVENT_MOVEMENTINFORM
| Threat%
 
|  
| 34
|  
 
|  
| MovementType (any)
|
 
|  
| PointID
| Change Threat Percentage for All Enemies
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS
 
| 15
| SMART_EVENT_SUMMON_DESPAWNED
| [[Quest_template_tc2#entry|QuestID]]
 
|  
| 35
|
 
|  
| Entry
|
 
|  
| CooldownMin
|
 
| CooldownMax
 
|
 
| On Summoned Unit Despawned
 
|-
|-
| SMART_ACTION_SEND_CASTCREATUREORGO
 
| 16
| SMART_EVENT_CORPSE_REMOVED
| [[Quest_template_tc2#entry|QuestID]]
 
| SpellId
| 36
|
 
|  
|
|
 
|  
|
|
 
|
 
|
 
| On Creature Corpse Removed
 
|-
|-
| SMART_ACTION_SET_EMOTE_STATE
 
| 17
| SMART_EVENT_AI_INIT
| emoteID
 
|  
| 37
|  
 
|  
|
|
 
|  
|
| Play Emote Continuously
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_SET_UNIT_FLAG
 
| 18
| SMART_EVENT_DATA_SET
| [[Creature_template_tc2#unit_flags|Creature_template.unit_flags]] (may be more than one field OR'd together)
 
| Target
| 38
|  
 
|
| Field
|  
 
|
| Value
| Can set Multi-able flags at once
 
| CooldownMin
 
| CooldownMax
 
| On Creature/Gameobject Data Set, Can be used with SMART_ACTION_SET_DATA
 
|-
|-
| SMART_ACTION_REMOVE_UNIT_FLAG
 
| 19
| SMART_EVENT_WAYPOINT_START
| [[Creature_template_tc2#unit_flags|Creature_template.unit_flags]] (may be more than one field OR'd together)  
 
| Target
| 39
|
 
|  
| PointId (0 any)
|
 
|  
| pathId (0 any)
| Can Remove Multi-able flags at once
 
|
 
|
 
| On Creature Waypoint ID Started
 
|-
|-
| SMART_ACTION_AUTO_ATTACK
 
| 20
| SMART_EVENT_WAYPOINT_REACHED
| AllowAttackState (0 = Stop attack, anything else means continue attacking)  
 
|  
| 40
|  
 
|  
| PointId (0 any)
|
 
|  
| pathId (0 any)
| Stop or Continue Automatic Attack.
 
|
 
|
 
| On Creature Waypoint ID Reached
 
|-
|-
| SMART_ACTION_ALLOW_COMBAT_MOVEMENT
 
| 21
| <b style="color:red">X</b> SMART_EVENT_TRANSPORT_ADDPLAYER
| AllowCombatMovement (0 = Stop combat based movement, anything else continue attacking)
 
|  
| 41
|  
 
|  
|
|
 
|  
|
| Allow or Disable Combat Movement
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_SET_EVENT_PHASE
 
| 22
| <b style="color:red">X</b> SMART_EVENT_TRANSPORT_ADDCREATURE
| smart_scripts.event_phase_mask
 
|  
| 42
|  
 
|  
| Entry (0 any)
|
 
|  
|
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_INC_EVENT_PHASE
 
| 23
| <b style="color:red">X</b>SMART_EVENT_TRANSPORT_REMOVE_PLAYER
| Increment
 
| Decrement
| 43
|  
 
|  
|
|
 
|  
|
| Set param1 OR param2 (not both). Value 0 has no effect.
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_EVADE
 
| 24
| <b style="color:red">X</b> SMART_EVENT_TRANSPORT_RELOCATE
|  
 
|  
| 44
|  
 
|  
| PointId
|
 
|  
|
| Evade Incoming Attack
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_FLEE_FOR_ASSIST
 
| 25
| <b style="color:red">X</b> SMART_EVENT_INSTANCE_PLAYER_ENTER
|  
 
|  
| 45
|  
 
|  
| Team (0 any)
|
 
|  
| CooldownMin
|
 
| CooldownMax
 
|
 
|
 
|-
|-
| SMART_ACTION_CALL_GROUPEVENTHAPPENS
 
| 26
| SMART_EVENT_AREATRIGGER_ONTRIGGER
| [[Quest_template_tc2#entry|QuestID]]
 
|  
| 46
|
 
|  
| TriggerId (0 any)
|
 
|  
|
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_CALL_CASTEDCREATUREORGO
 
| 27
| <b style="color:red">X</b> SMART_EVENT_QUEST_ACCEPTED
| [[Creature_template_tc2#entry|Creature_template.entry]]
 
| SpellId
| 47
|
 
|  
|
|
 
|  
|
|
 
|
 
|
 
| On Target Quest Accepted
 
|-
|-
| SMART_ACTION_REMOVEAURASFROMSPELL
 
| 28
| <b style="color:red">X</b> SMART_EVENT_QUEST_OBJ_COPLETETION
| Spellid
 
|  
| 48
|
 
|  
|
|
 
|  
|
|
 
|-
|
| SMART_ACTION_FOLLOW
 
| 29
|
| Distance
 
| Angle
| On Target Quest Objective Completed
| EndCreatureEntry
 
| credit
| creditType (0monsterkill, 1event)
|
| Follow Target
|-
|-
| SMART_ACTION_RANDOM_PHASE
 
| 30
| <b style="color:red">X</b> SMART_EVENT_QUEST_COMPLETION
| [[Creature_tc2#phaseMask|Creature.phasemask]] 1
 
| [[Creature_tc2#phaseMask|Creature.phasemask]] 2
| 49
| [[Creature_tc2#phaseMask|Creature.phasemask]] 3...
 
|  
|
|
 
|  
|
|
 
|
 
|
 
| On Target Quest Completed
 
|-
|-
| SMART_ACTION_RANDOM_PHASE_RANGE
 
| 31
| <b style="color:red">X</b> SMART_EVENT_QUEST_REWARDED
| [[Creature_tc2#phaseMask|Creature.phasemask]] minimum
 
| [[Creature_tc2#phaseMask|Creature.phasemask]] maximum
| 50
|
 
|  
|
|
 
|  
|
|
 
|
 
|
 
| On Target Quest Rewarded
 
|-
|-
| SMART_ACTION_RESET_GOBJECT
 
| 32
| <b style="color:red">X</b> SMART_EVENT_QUEST_FAIL
|  
 
|  
| 51
|  
 
|  
|
|
 
|  
|
| Reset Gameobject
 
|
 
|
 
| On Target Quest Field
 
|-
|-
| SMART_ACTION_CALL_KILLEDMONSTER
 
| 33
| SMART_EVENT_TEXT_OVER
| CreatureId  
 
|  
| 52
|
 
|  
| GroupId (from creatue_text)
|
 
|  
| CreatureId (0 any)
|
 
|
 
|
 
| On TEXT_OVER Event Triggered After SMART_ACTION_TALK
 
|-
|-
| SMART_ACTION_SET_INST_DATA
 
| 34
| SMART_EVENT_RECEIVE_HEAL
| Field
 
| Data
| 53
|  
 
|  
| MinHeal
|
 
|  
| MaxHeal
| Set Instance Data
 
| CooldownMin
 
| CooldownMax
 
| On Creature Received Healing
 
|-
|-
| SMART_ACTION_SET_INST_DATA64
 
| 35
| SMART_EVENT_JUST_SUMMONED
| Field
 
|  
| 54
|  
 
|  
|
|
 
|  
|
| Set Instance Data uint64
 
|
 
|
 
| On Creature Just spawned
 
|-
|-
| SMART_ACTION_UPDATE_TEMPLATE
 
| 36
| SMART_EVENT_WAYPOINT_PAUSED
| Entry
 
| Team (updates creature_template to given entry)  
| 55
|  
 
|  
| PointId (0 any)
|
 
|  
| pathID (0 any)
|
 
|
 
|
 
| On Creature Paused at Waypoint ID
 
|-
|-
| SMART_ACTION_DIE
 
| 37
| SMART_EVENT_WAYPOINT_RESUMED
|  
 
|  
| 56
|  
 
|  
| PointId (0 any)
|
 
|  
| pathID (0 any)
| Kill Target
 
|
 
|
 
| On Creature Resumed after Waypoint ID
 
|-
|-
| SMART_ACTION_SET_IN_COMBAT_WITH_ZONE
 
| 38
| SMART_EVENT_WAYPOINT_STOPPED
|  
 
|  
| 57
|  
 
|  
| PointId (0 any)
|
 
|  
| pathID (0 any)
|
 
|
 
|
 
| On Creature Stopped On Waypoint ID
 
|-
|-
| SMART_ACTION_CALL_FOR_HELP
 
| 39
| SMART_EVENT_WAYPOINT_ENDED
| Radius in yards that other creatures must be to acknowledge the cry for help
 
|  
| 58
|  
 
|  
| PointId (0 any)
|
 
|  
| pathID (0 any)
|
 
|
 
|
 
| On Creature Waypoint Path Ended
 
|-
|-
| SMART_ACTION_SET_SHEATH
 
| 40
| SMART_EVENT_TIMED_EVENT_TRIGGERED
| Sheath (0-unarmed, 1-melee, 2-ranged)
 
|  
| 59
|  
 
|  
| Id
|
 
|  
|
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_FORCE_DESPAWN
 
| 41
| SMART_EVENT_UPDATE
| timer
 
|  
| 60
|  
 
|  
| InitialMin
|
 
|  
| InitialMax
| Despawn Target after param1 Milliseconds
 
| RepeatMin
 
| RepeatMax
 
|
 
|-
|-
| SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL
 
| 42
| SMART_EVENT_LINK
| MinHpValue(+pct,-flat)
 
|
| 61
|  
 
|
|
|  
 
|
|
|  
 
|-
| SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL
| 43
| [[Creature_template_tc2#entry|Creature_template.entry]]
| [[Creature_template_tc2#modelid1-4|Creature_template.modelID]]
|
|
|
|
|
 
| Mount to Creature Entry (param1) OR Mount to Creature Display (param2) Or both = 0 for Unmount
|
|-
 
| SMART_ACTION_SET_INGAME_PHASE_MASK
| used to link together multiple events
| 44
 
| [[Creature_tc2#phaseMask|Creature.phasemask]]
|
|
|
|
|
|
|-
|-
| SMART_ACTION_SET_DATA
 
| 45
| SMART_EVENT_GOSSIP_SELECT
| Field
 
| Data
| 62
|  
 
|  
| [[Gossip_menu_option_tc2#menu_id|menu_ID]]
|
 
|  
| [[Gossip_menu_option_tc2#id|ID]]
| Set Data For Target, can be used with  SMART_EVENT_DATA_SET ( CREATURE ONLY - TODO )
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_MOVE_FORWARD
 
| 46
| SMART_EVENT_JUST_CREATED
| Distance in yards
 
|  
| 63
|  
 
|  
|
|
 
|  
|
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_SET_VISIBILITY
 
| 47
| SMART_EVENT_GOSSIP_HELLO
| 0/1
 
|  
| 64
|  
 
|  
|
|
 
|  
|
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_SET_ACTIVE
 
| 48
| SMART_EVENT_FOLLOW_COMPLETED
|  
 
|  
| 65
|  
 
|  
|
|
 
|  
|
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_ATTACK_START
 
| 49
| *** SMART_EVENT_DUMMY_EFFECT
|  
 
|
| 66
|  
 
|
| spellId
|
 
|  
| effectIndex
|
 
|-
|
| SMART_ACTION_SUMMON_GO
 
| 50
|
| [[Gameobject_template_tc2#entry|Gameobject_template.entry]]
 
| DespawnTime in ms
|
|
 
|  
|
|
 
|  
|
|-
|-
| SMART_ACTION_KILL_UNIT
 
| 51
| SMART_EVENT_IS_BEHIND_TARGET
|  
 
|  
| 67
|  
 
|  
| CooldownMin
|
 
|  
| CooldownMax
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_ACTIVATE_TAXI
 
| 52
| SMART_EVENT_GAME_EVENT_START
| TaxiID
 
|  
| 68
|
 
|  
| [[game_event tc2#eventEntry|game_event.eventEntry]]
|  
 
|
|  
|  
|
|
|
|-
|-
| SMART_ACTION_WP_START
 
| 53
| SMART_EVENT_GAME_EVENT_END
| run/walk
 
| [[Waypoints_tc2#entry|Waypoints.entry]]
| 69
| canRepeat
 
| [[Quest_template_tc2#entry|Quest_template.entry]]
| [[game_event tc2#eventEntry|game_event.eventEntry]]
| despawntime
 
| reactState
|  
|  
|
|
|
|-
|-
| SMART_ACTION_WP_PAUSE
 
| 54
| SMART_EVENT_GO_STATE_CHANGED
| time
 
|  
| 70
|  
 
|  
| State (0 - Active, 1 - Ready, 2 - Active alternative)
|  
 
|  
|
|  
 
|
 
|
 
|
 
|}
 
<br>
 
==== action_type ====
 
{| width="100%" border="1" cellpadding="1" cellspacing="1"
 
|-
|-
| SMART_ACTION_WP_STOP
 
| 55
! scope="col" | Name
| despawnTime
 
| [[Quest_template_tc2#entry|Quest_template.entry]]
! scope="col" | Value
| fail (0/1)
 
|  
! scope="col" | Param1
|  
 
|  
! scope="col" | Param2
|
 
! scope="col" | Param3
 
! scope="col" | Param4
 
! scope="col" | Param5
 
! scope="col" | Param6
 
! scope="col" | Comment
 
|-
|-
| SMART_ACTION_ADD_ITEM
 
| 56
| SMART_ACTION_NONE
| [[Item_template_tc2#entry|Item_template.entry]]
 
| count
| 0
|  
 
|  
|
|  
 
|  
|
|
 
|
 
|
 
|
 
|
 
| Do nothing
 
|-
|-
| SMART_ACTION_REMOVE_ITEM
 
| 57
| SMART_ACTION_TALK
| [[Item_template_tc2#entry|Item_template.entry]]
 
| count
| 1
|  
 
|
| [[Creature_text_tc2#group_id|Creature_text.groupid]]
|  
 
|
| duration to wait before TEXT_OVER event is triggered
|  
 
|-
|
| SMART_ACTION_INSTALL_AI_TEMPLATE
 
| 58
|
| AITemplateID
 
|
|
|
 
|
|
|
 
|  
| Param2 in Milliseconds.
|
 
|-
|-
| SMART_ACTION_SET_RUN
 
| 59
| SMART_ACTION_SET_FACTION
| 0/1
 
|  
| 2
|  
 
|  
| [[FactionTemplate.dbc_tc2|FactionID]] (or 0 for default)
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_SET_FLY
 
| 60,
| SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL
| 0/1
 
|  
| 3
|  
 
|  
| [[Creature_template_tc2#entry|Creature_template.entry]](param1)
|  
 
|  
| [[Creature_template_tc2#modelid1-4|Creature_template.modelID]](param2)
|  
 
|
 
|
 
|
 
|
 
| Take DisplayID of creature (param1) OR Turn to DisplayID (param2) OR Both = 0 for Demorph
 
|-
|-
| SMART_ACTION_SET_SWIMM
 
| 61
| SMART_ACTION_SOUND
| 0/1
 
|  
| 4
|
 
|  
| SoundId
|
 
|  
| TextRange
|
 
|-
|
| SMART_ACTION_TELEPORT
 
| 62
|
| [[Maps.dbc_tc2|MapID]]
 
|  
|
|
 
|  
|
|
 
|  
| Play Sound
| Use Any SMART_TARGET, and Set  target_x,  target_y, target_z, target_o. (param4,param5,param6,param7)
 
|-
|-
| SMART_ACTION_STORE_VARIABLE_DECIMAL
 
| 63
| SMART_ACTION_PLAY_EMOTE
| varID
 
| number
| 5
|  
 
|  
| [[Emote_tc2#id|EmoteId]]
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| Play Emote
 
|-
|-
| SMART_ACTION_STORE_TARGET_LIST
 
| 64
| SMART_ACTION_FAIL_QUEST
| varID
 
|  
| 6
|  
 
|  
| [[Quest_template_tc2#id|QuestID]]
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| Fail Quest of Target
 
|-
|-
| SMART_ACTION_WP_RESUME
 
| 65
| SMART_ACTION_ADD_QUEST
|  
 
|  
| 7
|  
 
|  
| [[Quest_template_tc2#id|QuestID]]
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| Add Quest to Target
 
|-
|-
| SMART_ACTION_SET_ORIENTATION
 
| 66
| SMART_ACTION_SET_REACT_STATE
| 0 = North, West = 1.5, South = 3, East = 4.5
 
|  
| 8
|  
 
|  
| [[Smart_scripts_tc2#React_States|State]]
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| React State. Can be Aggressive, Passive or Defensive.
 
|-
|-
| SMART_ACTION_CREATE_TIMED_EVENT
 
| 67
| SMART_ACTION_ACTIVATE_GOBJECT
| id
 
| InitialMin
| 9
| InitialMax
 
| RepeatMin(only if it repeats)
|
| RepeatMax(only if it repeats)
 
| chance
|
|  
 
|
 
|
 
|
 
|
 
| Activate Object
 
|-
|-
| SMART_ACTION_PLAYMOVIE
 
| 68
| SMART_ACTION_RANDOM_EMOTE
| entry
 
|  
| 10
|
 
|  
| [[Emote_tc2#id|EmoteId1]]
|  
 
|
| [[Emote_tc2#id|EmoteId2]]
|  
 
|-
| [[Emote_tc2#id|EmoteId3...]]
| SMART_ACTION_MOVE_TO_POS
 
| 69
|
 
|
|
 
|  
|
|
 
|  
| Play Random Emote
| Use Any SMART_TARGET, and Set  target_x,  target_y, target_z, target_o. (param4,param5,param6,param7)
 
|-
|-
| SMART_ACTION_RESPAWN_TARGET
 
| 70
| SMART_ACTION_CAST
|  
 
|  
| 11
|  
 
|  
| SpellId
|  
 
|  
| [[#Cast_flags|CastFlags]]
|  
 
|
 
|
 
|
 
|
 
| Cast Spell ID at Target
 
|-
|-
| SMART_ACTION_EQUIP
 
| 71
| SMART_ACTION_SUMMON_CREATURE
| [[Creature_equip_template_tc2#entry|Creature_equip_template.entry]]
 
| Slotmask
| 12
| slot1 (item_template.entry)
 
| Slot2 (item_template.entry)  
| [[Creature_template_tc2#entry|Creature_template.entry]]
| Slot3 (item_template.entry)
 
|  
| [[#Summon Types|Summon type]]
| only slots with mask set will be sent to client, bits are 1, 2, 4, leaving mask 0 is defaulted to mask 7 (send all), Slots1-3 are only used if no Param1 is set
 
| duration in ms
 
| StorageID (always 0)
 
| attackInvoker
 
|
 
| Summon Unit
 
|-
|-
| SMART_ACTION_CLOSE_GOSSIP
 
| 72
| SMART_ACTION_THREAT_SINGLE_PCT
|  
 
|  
| 13
|  
 
|  
| Threat%
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| Change Threat Percentage for Single Target
 
|-
|-
| SMART_ACTION_TRIGGER_TIMED_EVENT
 
| 73
| SMART_ACTION_THREAT_ALL_PCT
| id(&gt;1)
 
|  
| 14
|  
 
|  
| Threat%
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| Change Threat Percentage for All Enemies
 
|-
|-
| SMART_ACTION_REMOVE_TIMED_EVENT
 
| 74
| SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS
| id(&gt;1)
 
|  
| 15
|  
 
|  
| [[Quest_template_tc2#id|QuestID]]
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_ADD_AURA
 
| 75
| SMART_ACTION_SEND_CASTCREATUREORGO
| Spellid
 
| targets
| 16
|  
 
|  
| [[Quest_template_tc2#id|QuestID]]
|  
 
|  
| SpellId
|  
 
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_ACTION_OVERRIDE_SCRIPT_BASE_OBJECT
 
| 76
| SMART_ACTION_SET_EMOTE_STATE
|  
 
|  
| 17
|  
 
|  
| [[Emote_tc2#id|EmoteId]]
|  
 
|  
|
| WARNING: CAN CRASH CORE, do not use if you dont know what you are doing
 
|
 
|
 
|
 
|
 
| Play Emote Continuously
 
|-
|-
| SMART_ACTION_RESET_SCRIPT_BASE_OBJECT
 
| 77
| SMART_ACTION_SET_UNIT_FLAG
|  
 
|  
| 18
|  
 
|  
| [[Creature_template_tc2#unit_flags|Creature_template.unit_flags]] (may be more than one field OR'd together)
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| Can set Multi-able flags at once
 
|-
|-
| SMART_ACTION_CALL_SCRIPT_RESET
 
| 78
| SMART_ACTION_REMOVE_UNIT_FLAG
|  
 
|  
| 19
|  
 
|  
| [[Creature_template_tc2#unit_flags|Creature_template.unit_flags]] (may be more than one field OR'd together)
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| Can Remove Multi-able flags at once
 
|-
|-
| SMART_ACTION_ENTER_VEHICLE
 
| 79
| SMART_ACTION_AUTO_ATTACK
| SeatID
 
|  
| 20
|  
 
|  
| AllowAttackState (0 = Stop attack, anything else means continue attacking)
|  
 
|  
|
|  
 
|
 
|
 
|
 
|
 
| Stop or Continue Automatic Attack.
 
|-
|-
| SMART_ACTION_CALL_TIMED_ACTIONLIST
 
| 80
| SMART_ACTION_ALLOW_COMBAT_MOVEMENT
| ID (overwrites already running actionlist)
 
| Stop after combat (0/1)
| 21
| timer update type(0-OOC,1-IC,2-ALWAYS)  
 
|
| AllowCombatMovement (0 = Stop combat based movement, anything else continue attacking)
|  
 
|
|
|  
 
|-
|
| SMART_ACTION_SET_NPC_FLAG
 
| 81
|
| [[Creature_template_tc2#npcflag|Creature_template.npcflag]]
 
|
|
|  
 
|
|
|  
 
|
| Allow or Disable Combat Movement
|
 
|-
|-
| SMART_ACTION_ADD_NPC_FLAG
 
| 82
| SMART_ACTION_SET_EVENT_PHASE
| Add this number to the above flag
 
|
| 22
|  
 
|  
| [[Smart_scripts_tc2#event_phase_mask|smart_scripts.event_phase_mask]]
|
 
|  
|
|
 
|-
|
| SMART_ACTION_REMOVE_NPC_FLAG
 
| 83
|
| Subtract this number from the above flag
 
|  
|
|
 
|  
|
|
 
|  
|
|
 
|-
|-
| SMART_ACTION_SIMPLE_TALK
 
| 84
| SMART_ACTION_INC_EVENT_PHASE
| [[Creature_text_tc2#group_id|Creature_text.groupID]]
 
|  
| 23
|  
 
|  
| Increment
|  
 
|
| Decrement
| can be used to make players say groupID, Text_over event is not triggered, whisper can not be used (Target units will say the text)
 
|
 
|
 
|
 
|
 
| Set param1 OR param2 (not both). Value 0 has no effect.
 
|-
|-
| SMART_ACTION_INVOKER_CAST
| 85
| SpellID
| [[#Cast_flags|castFlags]]
|
|
|
|
| if avaliable, last used invoker will cast spellId with castFlags on targets
|-
| SMART_ACTION_CROSS_CAST
| 86
| SpellID
| [[#Cast_flags|castFlags]]
| CasterTargetType
| CasterTarget param1
| CasterTarget param2
| CasterTarget param3
| ( + the original target fields as Destination target), CasterTargets will cast spellID on all Targets (use with caution if targeting multiple * multiple units)
|-
| SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST
| 87
| Script9 ids 1-9
|
|
|
|
|
|
|-
| SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST
| 88
| Script9 entry of script1
| entry of script2
|
|
|
|
|
|-
| SMART_ACTION_RANDOM_MOVE
| 89
| maxDist
|
|
|
|
|
|


|-
| SMART_ACTION_EVADE
| SMART_ACTION_SET_UNIT_FIELD_BYTES_1
 
| 90
| 24
| [[Creature_addon_tc2#bytes1|Value]]
 
|
|
|
|
|
|
|  


|-
|
| SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1
 
| 91
|
| [[Creature_addon_tc2#bytes1|Value]]
 
|
|
|
|
|
|
|
|-
| SMART_ACTION_INTERRUPT_SPELL
| 92
| withDelay (bool value)
| spellId (uint32 value)
| withInstant (bool value)
|
|
|
| This action allows you to interrupt the current spell being cast. If you do not set the spellId, the core will find the current spell depending on the withDelay and the withInstant values.


|-
|
| SMART_ACTION__GO_CUSTOM_ANIM
| 93
| animprogress (0-255)
|
|
|
|
|
|
|}


<br>
|
<br>


==== Predefined SAI templates  ====
| Evade Incoming Attack


{| width="50%" border="1" cellpadding="1" cellspacing="1"
|-
|-
! scope="col" | Description Name
! scope="col" | Value (Param1)
! scope="col" | Param2
! scope="col" | Param3
! scope="col" | Param4
! scope="col" | Param5
! scope="col" | Param6
! scope="col" | Comment
|-
| SMARTAI_TEMPLATE_BASIC
| 0
| <br>
| <br>
| <br>
| <br>
| <br>
| <br>
|-
| SMARTAI_TEMPLATE_CASTER
| 1
| spellid
| repeatMin
| repeatMax
| range
| manaPCT
| +JOIN: target_param1 as castFlag
|-
| SMARTAI_TEMPLATE_TURRET
| 2
| spellid
| repeatMin
| repeatMax
| range
| manaPCT
| +JOIN: target_param1 as castflag
|-
| SMARTAI_TEMPLATE_PASSIVE
| 3
|
|
|
|
|
|
|-
| SMARTAI_TEMPLATE_CAGED_GO_PART
| 4
| creatureID
| give credit at point end (0/1)
|
|
|
|
|-
| SMARTAI_TEMPLATE_CAGED_NPC_PART
| 5
| gameObjectID
| despawntime
| run (0/1)
| dist
| TextGroupID
|
|}


<br>
| SMART_ACTION_FLEE_FOR_ASSIST
 
| 25
 
| 0/1 (If you want the fleeing NPC to say attempts to flee text on flee, use 1 on param1. For no message use 0.)
 
|
 
|
 
|
 
|
 
|


==== Targets  ====
| If you want the fleeing NPC to say '%s attempts to run away in fear!' on flee, use 1 on param1. 0 for no message.


{| width="100%" border="1" cellpadding="1" cellspacing="1"
|-
|-
! scope="col" | Name
 
! scope="col" | Value
| SMART_ACTION_CALL_GROUPEVENTHAPPENS
! scope="col" | target_param1
 
! scope="col" | target_param2
| 26
! scope="col" | target_param3
 
! scope="col" | target_x
| [[Quest_template_tc2#id|QuestID]]
! scope="col" | target_y
 
! scope="col" | target_z
|
! scope="col" | target_o
 
! scope="col" | Comment
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_NONE
 
| 0
| SMART_ACTION_CALL_CASTEDCREATUREORGO
|  
 
|  
| 27
|  
 
|  
| [[Creature_template_tc2#entry|Creature_template.entry]]
|  
 
|  
| SpellId
|  
 
| None, default to invoker
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_SELF
 
| 1
| SMART_ACTION_REMOVEAURASFROMSPELL
|  
 
|  
| 28
|  
 
|  
| Spellid
|  
 
|  
|
|  
 
| Self cast
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_VICTIM
 
| 2
| SMART_ACTION_FOLLOW
|  
 
|  
| 29
|  
 
|  
| Distance (0 = Default value)
|  
 
|  
| Angle (0 = Default value)
|  
 
| Our current target (ie: highest aggro)
| End [[Creature_template_tc2#entry|creature_template.entry]]
 
| credit
 
| creditType (0monsterkill, 1event)
 
|
 
| Follow Target
 
|-
|-
| SMART_TARGET_HOSTILE_SECOND_AGGRO
 
| 3
| SMART_ACTION_RANDOM_PHASE
|  
 
|  
| 30
|  
 
|  
| [[Creature_tc2#phaseMask|Creature.phasemask]] 1
|  
 
|  
| [[Creature_tc2#phaseMask|Creature.phasemask]] 2
|  
 
| Second highest aggro
| [[Creature_tc2#phaseMask|Creature.phasemask]] 3...
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_HOSTILE_LAST_AGGRO
 
| 4
| SMART_ACTION_RANDOM_PHASE_RANGE
|  
 
|  
| 31
|  
 
|  
| [[Creature_tc2#phaseMask|Creature.phasemask]] minimum
|  
 
|  
| [[Creature_tc2#phaseMask|Creature.phasemask]] maximum
|  
 
| Dead last on aggro
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_HOSTILE_RANDOM
 
| 5
| SMART_ACTION_RESET_GOBJECT
|  
 
|  
| 32
|  
 
|  
|
|  
 
|  
|
|  
 
| Just any random target on our threat list
|
 
|
 
|
 
|
 
| Reset Gameobject
 
|-
|-
| SMART_TARGET_HOSTILE_RANDOM_NOT_TOP
 
| 6
| SMART_ACTION_CALL_KILLEDMONSTER
|  
 
|  
| 33
|  
 
|  
| [[Creature_template_tc2#entry|Creature_template.entry]]
|  
 
|  
|
|  
 
| Any random target except top threat
|
 
|
 
|
 
|
 
| This is the ID from [[Quest_template_tc2#RequiredNpcOrGo|quest_template.RequiredNpcOrGo]]
 
|-
|-
| SMART_TARGET_ACTION_INVOKER
 
| 7
| SMART_ACTION_SET_INST_DATA
|  
 
|
| 34
|  
 
|
| Field
|
 
|  
| Data
|
 
| Unit who caused this Event to occur
|
|-
 
| SMART_TARGET_POSITION
|
| 8
 
|  
|
|
 
|  
|
| x
 
| y
| Set Instance Data
| z
 
| o
| Use xyz from event params
|-
|-
| SMART_TARGET_CREATURE_RANGE
 
| 9
| SMART_ACTION_SET_INST_DATA64
| [[Creature_template_tc2#entry|creatureEntry]] (0 any)
 
| minDist
| 35
| maxDist
 
|  
| Field
|  
 
|
|
|  
 
|
|
 
|
 
|
 
|
 
| Set Instance Data uint64
 
|-
|-
| SMART_TARGET_CREATURE_GUID
 
| 10
| SMART_ACTION_UPDATE_TEMPLATE
| guid
 
| entry  
| 36
|  
 
|  
| [[Creature_template_tc2#entry|Creature_template.entry]]
|  
 
|  
| Team (updates creature_template to given entry)
|  
 
|
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_CREATURE_DISTANCE
 
| 11
| SMART_ACTION_DIE
| [[Creature_template_tc2#entry|creatureEntry]] (0 any)
 
| maxDist
| 37
|
 
|  
|
|
 
|  
|
|
 
|  
|
|-
 
| SMART_TARGET_STORED
|
| 12
 
| id
|
|
 
|
|
|  
 
|
| Kill Target
|  
 
|
| Uses pre-stored target(list)
|-
|-
| SMART_TARGET_GAMEOBJECT_RANGE
 
| 13
| SMART_ACTION_SET_IN_COMBAT_WITH_ZONE
| [[Gameobject_template_tc2#entry|goEntry]] (0 any)
 
| minDist
| 38
| maxDist
 
|  
|
|
 
|  
|
|
 
|  
|
|-
 
| SMART_TARGET_GAMEOBJECT_GUID
|
| 14
 
| guid
|
| entry
 
|
|
|  
 
|
|
|  
 
|
|
|-
|-
| SMART_TARGET_GAMEOBJECT_DISTANCE
 
| 15
| SMART_ACTION_CALL_FOR_HELP
| [[Gameobject_template_tc2#entry|goEntry]] (0 any)
 
| maxDist
| 39
|  
 
|  
| Radius in yards that other creatures must be to acknowledge the cry for help
|  
 
|
|
|  
 
|
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_INVOKER_PARTY
 
| 16
| SMART_ACTION_SET_SHEATH
|  
 
|  
| 40
|  
 
|  
| Sheath (0-unarmed, 1-melee, 2-ranged)
|  
 
|  
|
|  
 
| Invoker's party members
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_PLAYER_RANGE
 
| 17
| SMART_ACTION_FORCE_DESPAWN
| minDist
 
| maxDist
| 41
|  
 
|  
| timer
|  
 
|  
|
|  
 
|
|
 
|
 
|
 
|
 
| Despawn Target after param1 Milliseconds
 
|-
|-
| SMART_TARGET_PLAYER_DISTANCE
 
| 18
| SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL
| maxDist
 
|  
| 42
|
 
|  
| MinHpValue(+pct,-flat)
|
 
|  
|
|
 
|  
|
|-
 
| SMART_TARGET_CLOSEST_CREATURE
|
| 19
 
| [[Creature_template_tc2#entry|creatureEntry]] (0 any)
|
|  
 
|
|
|  
 
|
|
|  
 
|
|
|-
|-
| SMART_TARGET_CLOSEST_GAMEOBJECT
 
| 20
| SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL
| [[Gameobject_template_tc2#entry|goEntry]] (0 any)
 
|  
| 43
|  
 
|  
| [[Creature_template_tc2#entry|Creature_template.entry]]
|  
 
|  
| [[Creature_template_tc2#modelid1-4|Creature_template.modelID]]
|  
 
|
|
 
|
 
|
 
|
 
| Mount to Creature Entry (param1) OR Mount to Creature Display (param2) Or both = 0 for Unmount
 
|-
|-
| SMART_TARGET_CLOSEST_PLAYER
 
| 21
| SMART_ACTION_SET_INGAME_PHASE_MASK
|  
 
|  
| 44
|  
 
|  
| [[Creature_tc2#phaseMask|Creature.phasemask]]
|  
 
|  
|
|  
 
|
|
 
|
 
|
 
|
 
|
 
|-
|-
| SMART_TARGET_ACTION_INVOKER_VEHICLE
 
| 22
| SMART_ACTION_SET_DATA
|  
 
|
| 45
|  
 
|
| Field
|
 
|  
| Data
|
 
| Unit's vehicle who caused this Event to occur
|
|-
 
| SMART_TARGET_OWNER_OR_SUMMONER
|
| 23
 
|  
|
|
 
|  
|
|
 
|  
| Set Data For Target, can be used with SMART_EVENT_DATA_SET
|
 
|  
| Unit's owner or summoner
|-
|-
| SMART_TARGET_THREAT_LIST
| 24
|
|
|
|
|
|
|
| All units on creature's threat list
|}


<br>
| SMART_ACTION_MOVE_FORWARD


==== Event flags  ====
| 46
 
| Distance in yards
 
|
 
|
 
|
 
|
 
|
 
|


{| width="50%" border="1" cellpadding="1" cellspacing="1"
|-
! scope="col" | Name
! scope="col" | Value
! scope="col" | Comment
|-
|-
| SMART_EVENT_FLAG_NOT_REPEATABLE
| 0x01
| Event can not repeat
|-
| SMART_EVENT_FLAG_DIFFICULTY_0
| 0x02
| Event only occurs in instance difficulty 0
|-
| SMART_EVENT_FLAG_DIFFICULTY_1
| 0x04
| Event only occurs in instance difficulty 1
|-
| SMART_EVENT_FLAG_DIFFICULTY_2
| 0x08
| Event only occurs in instance difficulty 2
|-
| SMART_EVENT_FLAG_DIFFICULTY_3
| 0x10
| Event only occurs in instance difficulty 3
|-
| SMART_EVENT_FLAG_DEBUG_ONLY
| 0x80
| Event only occurs in debug build
|}


<br>
| SMART_ACTION_SET_VISIBILITY
 
| 47
 
| 0/1
 
|


==== Cast flags  ====
|
 
|
 
|
 
|
 
|


{| width="50%" border="1" cellpadding="1" cellspacing="1"
|-
! scope="col" | Name
! scope="col" | Value
! scope="col" | Comment
|-
| SMARTCAST_INTERRUPT_PREVIOUS
| 0x01
| Interrupt any spell casting
|-
| SMARTCAST_TRIGGERED
| 0x02
| Triggered (this makes spell cost zero mana and have no cast time)
|-
|-
| CAST_FORCE_CAST
 
| 0x04
| SMART_ACTION_SET_ACTIVE
| Not Yet Implemented: Forces cast even if creature is out of mana or out of range
 
| 48
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
|-
| CAST_NO_MELEE_IF_OOM
 
| 0x08
| SMART_ACTION_ATTACK_START
| Not Yet Implemented: Prevents creature from entering melee if out of mana or out of range
 
|-
| 49
| CAST_FORCE_TARGET_SELF
 
| 0x10
|
| Not Yet Implemented: Forces the target to cast this spell on itself
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SUMMON_GO
 
| 50
 
| [[Gameobject_template_tc2#entry|Gameobject_template.entry]]
 
| DespawnTime in ms
 
|
 
|
 
|
 
|
 
|
 
|-
|-
| CAST_AURA_NOT_PRESENT
 
| 0x20
| SMART_ACTION_KILL_UNIT
| Not Yet Implemented: Only casts the spell if the target does not have an aura from the spell
 
| 51
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_ACTIVATE_TAXI
 
| 52
 
| TaxiID
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_WP_START
 
| 53
 
| walk = 0 run = 1
 
| [[Waypoints_tc2#entry|Waypoints.entry]]
 
| canRepeat
 
| [[Quest_template_tc2#id|Quest_template.id]]
 
| despawntime
 
| reactState
 
|
 
|-
 
| SMART_ACTION_WP_PAUSE
 
| 54
 
| time
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_WP_STOP
 
| 55
 
| despawnTime
 
| [[Quest_template_tc2#id|Quest_template.id]]
 
| fail (0/1)
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_ADD_ITEM
 
| 56
 
| [[Item_template_tc2#entry|Item_template.entry]]
 
| count
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_REMOVE_ITEM
 
| 57
 
| [[Item_template_tc2#entry|Item_template.entry]]
 
| count
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_INSTALL_AI_TEMPLATE
 
| 58
 
| [[Smart_scripts_tc2#Predefined_SAI_templates|TemplateID]]
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SET_RUN
 
| 59
 
| 0 = Off / 1 = On
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SET_FLY
 
| 60
 
| 0 = Off / 1 = On
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SET_SWIM
 
| 61
 
| 0 = Off / 1 = On
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_TELEPORT
 
| 62
 
| [[Map.dbc_tc2|MapID]]
 
|
 
|
 
|
 
|
 
|
 
| Continue this action with the TARGET_TYPE column. Use any target_type, and use target_x, target_y, target_z, target_o as the coordinates
 
|-
 
| SMART_ACTION_STORE_VARIABLE_DECIMAL
 
| 63
 
| varID
 
| number
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_STORE_TARGET_LIST
 
| 64
 
| varID
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_WP_RESUME
 
| 65
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SET_ORIENTATION
 
| 66
 
| This depends on whet target script have if SMART_TARGET_SELF than Facing will be set like in HomePosition, When SMART_TARGET_POSITION you need to set target_o. 0 = North, West = 1.5, South = 3, East = 4.5
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_CREATE_TIMED_EVENT
 
| 67
 
| id
 
| InitialMin
 
| InitialMax
 
| RepeatMin(only if it repeats)
 
| RepeatMax(only if it repeats)
 
| chance
 
|
 
|-
 
| SMART_ACTION_PLAYMOVIE
 
| 68
 
| entry
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_MOVE_TO_POS
 
| 69
 
| PointId
 
|
 
|
 
|
 
|
 
|
 
| PointId is called by SMART_EVENT_MOVEMENTINFORM. Continue this action with the TARGET_TYPE column. Use any target_type, and use target_x, target_y, target_z, target_o as the coordinates
 
|-
 
| SMART_ACTION_RESPAWN_TARGET
 
| 70
 
| Respawntime in seconds for gameobjects (only GOs)
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_EQUIP
 
| 71
 
| [[Creature_equip_template_tc2#entry|Creature_equip_template.entry]]
 
| Slotmask
 
| slot1 (item_template.entry)
 
| Slot2 (item_template.entry)
 
| Slot3 (item_template.entry)
 
|
 
| only slots with mask set will be sent to client, bits are 1, 2, 4, leaving mask 0 is defaulted to mask 7 (send all), Slots1-3 are only used if no Param1 is set
 
|-
 
| SMART_ACTION_CLOSE_GOSSIP
 
| 72
 
|
 
|
 
|
 
|
 
|
 
|
 
|[[Gossip_menu_option_tc2#action_menu_id|gossip_menu_option.action_menu_id]] must be 0, and [[Smart_scripts_tc2#target_type|target_type]] must be 7
 
|-
 
| SMART_ACTION_TRIGGER_TIMED_EVENT
 
| 73
 
| id(&gt;1)
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_REMOVE_TIMED_EVENT
 
| 74
 
| id(&gt;1)
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_ADD_AURA
 
| 75
 
| SpellId
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_OVERRIDE_SCRIPT_BASE_OBJECT
 
| 76
 
|
 
|
 
|
 
|
 
|
 
|
 
| WARNING: CAN CRASH CORE, do not use if you dont know what you are doing
 
|-
 
| SMART_ACTION_RESET_SCRIPT_BASE_OBJECT
 
| 77
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_CALL_SCRIPT_RESET
 
| 78
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| None
 
| 79
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_CALL_TIMED_ACTIONLIST
 
| 80
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid]]
 
| timer update type(0 OOC, 1 IC, 2 ALWAYS)
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SET_NPC_FLAG
 
| 81
 
| [[Creature_template_tc2#npcflag|Creature_template.npcflag]]
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_ADD_NPC_FLAG
 
| 82
 
| [[Creature_template_tc2#npcflag|Creature_template.npcflag]]
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_REMOVE_NPC_FLAG
 
| 83
 
| [[Creature_template_tc2#npcflag|Creature_template.npcflag]]
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SIMPLE_TALK
 
| 84
 
| [[Creature_text_tc2#group_id|Creature_text.groupID]]
 
|
 
|
 
|
 
|
 
|
 
| Makes a player say text. SMART_EVENT_TEXT_OVER is not triggered and whispers can not be used.
 
|-
 
| SMART_ACTION_INVOKER_CAST
 
| 85
 
| SpellID
 
| [[#Cast_flags|castFlags]]
 
|
 
|
 
|
 
|
 
| if avaliable, last used invoker will cast spellId with castFlags on targets
 
|-
 
| SMART_ACTION_CROSS_CAST
 
| 86
 
| SpellID
 
| [[#Cast_flags|castFlags]]
 
| CasterTargetType
 
| CasterTarget param1
 
| CasterTarget param2
 
| CasterTarget param3
 
|
 
|-
 
| SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST
 
| 87
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid 1]]
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid 2]]
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid 3]]
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid 4]]
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid 5]]
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid 6]]
 
| Will select one entry from the ones provided. 0 is ignored.
 
|-
 
| SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST
 
| 88
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid 1]]
 
| [[Smart_scripts_tc2#entryorguid|EntryOrGuid 2]]
 
|
 
|
 
|
 
|
 
| 0 is ignored.
 
|-
 
| SMART_ACTION_RANDOM_MOVE
 
| 89
 
| Max distance in yards
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SET_UNIT_FIELD_BYTES_1
 
| 90
 
| [[Creature_addon_tc2#bytes1|Value]]
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1
 
| 91
 
| [[Creature_addon_tc2#bytes1|Value]]
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_INTERRUPT_SPELL
 
| 92
 
| With delay (0/1)
 
| SpellId
 
| Instant (0/1)
 
|
 
|
 
|
 
| This action allows you to interrupt the current spell being cast. If you do not set the spellId, the core will find the current spell depending on the withDelay and the withInstant values.
 
|-
 
| SMART_ACTION_SEND_GO_CUSTOM_ANIM
 
| 93
 
| animprogress (0-255)
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_SET_DYNAMIC_FLAG
 
| 94
 
| [[Creature_template_tc2#dynamicflags|dynamicflag]].
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_ADD_DYNAMIC_FLAG
 
| 95
 
| [[Creature_template_tc2#dynamicflags|dynamicflags]]
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_REMOVE_DYNAMIC_FLAG
 
| 96
 
| [[Creature_template_tc2#dynamicflags|dynamicflags]]
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_ACTION_JUMP_TO_POS
 
| 97
 
| Speed XY
 
| Speed Z
 
| Target X
 
| Target Y
 
| Target Z
 
|
 
|
 
|-
 
| SMART_ACTION_SEND_GOSSIP_MENU
 
| 98
 
| [[Gossip_menu_option_tc2#menu_id|Gossip_menu_option.menuId]]
 
| [[Gossip_menu_option_tc2#npc_text_id|Gossip_menu_option.npc_text_id]]
 
|
 
|
 
|
 
|
 
| Can be used together with 'SMART_EVENT_GOSSIP_HELLO' to set custom gossip.
 
|-
 
| SMART_ACTION_GO_SET_LOOT_STATE
 
| 99
 
| LootState (0 - Not ready, 1 - Ready, 2 - Activated, 3 - Just deactivated)
 
|
 
|
 
|
 
|
 
|
 
|
 
|}
|}


<br>
<br>
 
 
==== React States ====
<br>
 
 
{| width="55%" border="1" cellpadding="1" cellspacing="1"  
==== Predefined SAI templates ====
|-  
 
! scope="col" | Name
{| width="50%" border="1" cellpadding="1" cellspacing="1"
! scope="col" | Value
 
! scope="col" | Comment  
|-
|-  
 
| REACT_PASSIVE
! scope="col" | Description Name
| 0
 
| attacks nothing, does not defend (default setting)
! scope="col" | Value (Param1)
|-  
 
| REACT_DEFENSIVE
! scope="col" | Param2
| 1
 
| only attacks when attacked  
! scope="col" | Param3
|-  
 
| REACT_AGGRESSIVE  
! scope="col" | Param4
| 2  
 
| will attack if on threat list and in threat radius  
! scope="col" | Param5
|-  
 
|}
! scope="col" | Param6
 
 
 
! scope="col" | Comment
==== Summon Types ====
 
 
|-
{| width="55%" border="1" cellpadding="1" cellspacing="1"  
 
|-  
| SMARTAI_TEMPLATE_BASIC
! scope="col" | Name
 
! scope="col" | Value
| 0
! scope="col" | Comment  
 
|-  
|
| TEMPSUMMON_TIMED_OR_DEAD_DESPAWN
 
| 1
|
| despawns after a specified time OR when the creature disappears  
 
|-  
|
| TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN
 
| 2
|
| despawns after a specified time OR when the creature dies  
 
|-  
|
| TEMPSUMMON_TIMED_DESPAWN  
 
| 3  
|
| despawns after a specified time  
 
|-  
|-
| TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
 
| 4
| SMARTAI_TEMPLATE_CASTER
| despawns after a specified time after the creature is out of combat
 
|-  
| 1
| TEMPSUMMON_CORPSE_DESPAWN
 
| 5
| spellid
| despawns instantly after death  
 
|-  
| repeatMin
| TEMPSUMMON_CORPSE_TIMED_DESPAWN  
 
| 6  
| repeatMax
| despawns after a specified time after death  
 
|-  
| range
| TEMPSUMMON_DEAD_DESPAWN  
 
| 7  
| manaPCT
| despawns when the creature disappears  
 
|-  
| +JOIN: target_param1 as castFlag
| TEMPSUMMON_MANUAL_DESPAWN  
 
| 8  
|-
| despawns when UnSummon() (or Force Despawn action) is called  
 
|-  
| SMARTAI_TEMPLATE_TURRET
|}
 
 
| 2
 
 
==== (Event) Phases explained ====
| spellid
 
 
 
| repeatMin
When dealing with phases, ''phase IDs'' have to be used.
 
 
| repeatMax
There are 7 (6+1) different phases: 1, 2, 3, 4, 5, 6 and the default, 0.
 
 
| range
 
 
''Example'': the script is in phase 0 by default: if we want it to go to phase 1, we got two choices:
| manaPCT
 
 
SMART_ACTION_INC_PHASE by 1 or SMART_ACTION_SET_PHASE 1
| +JOIN: target_param1 as castflag
 
 
 
|-
If the script is in phase 0 and want to skip to phase 2:
 
 
| SMARTAI_TEMPLATE_PASSIVE
SMART_ACTION_INC_PHASE by 2 or SMART_ACTION_SET_PHASE 2
 
 
| 3
 
 
If the script is in phase 1 and want to skip to phase 2:
|
 
 
SMART_ACTION_INC_PHASE by 1 or SMART_ACTION_SET_PHASE 2
|
 
 
|
 
|
 
|
 
|
 
|-
 
| SMARTAI_TEMPLATE_CAGED_GO_PART
 
| 4
 
| creatureID
 
| give credit at point end (0/1)
 
|
 
|
 
|
 
|
 
|-
 
| SMARTAI_TEMPLATE_CAGED_NPC_PART
 
| 5
 
| gameObjectID
 
| despawntime
 
| run (0/1)
 
| dist
 
| TextGroupID
 
|
 
|}
 
<br>
 
==== target_type ====
 
{| width="100%" border="1" cellpadding="1" cellspacing="1"
 
|-
 
! scope="col" | Name
 
! scope="col" | Value
 
! scope="col" | target_param1
 
! scope="col" | target_param2
 
! scope="col" | target_param3
 
! scope="col" | target_x
 
! scope="col" | target_y
 
! scope="col" | target_z
 
! scope="col" | target_o
 
! scope="col" | Comment
 
|-
 
| SMART_TARGET_NONE
 
| 0
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| None, default to invoker
 
|-
 
| SMART_TARGET_SELF
 
| 1
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Self cast
 
|-
 
| SMART_TARGET_VICTIM
 
| 2
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Our current target (ie: highest aggro)
 
|-
 
| SMART_TARGET_HOSTILE_SECOND_AGGRO
 
| 3
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Second highest aggro
 
|-
 
| SMART_TARGET_HOSTILE_LAST_AGGRO
 
| 4
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Dead last on aggro
 
|-
 
| SMART_TARGET_HOSTILE_RANDOM
 
| 5
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Just any random target on our threat list
 
|-
 
| SMART_TARGET_HOSTILE_RANDOM_NOT_TOP
 
| 6
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Any random target except top threat
 
|-
 
| SMART_TARGET_ACTION_INVOKER
 
| 7
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Unit who caused this Event to occur
 
|-
 
| SMART_TARGET_POSITION
 
| 8
 
|
 
|
 
|
 
| x
 
| y
 
| z
 
| o
 
| Use xyz from event params
 
|-
 
| SMART_TARGET_CREATURE_RANGE
 
| 9
 
| [[Creature_template_tc2#entry|creatureEntry]] (0 any)
 
| minDist
 
| maxDist
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_CREATURE_GUID
 
| 10
 
| guid
 
| entry
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_CREATURE_DISTANCE
 
| 11
 
| [[Creature_template_tc2#entry|creatureEntry]] (0 any)
 
| maxDist
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_STORED
 
| 12
 
| id
 
|
 
|
 
|
 
|
 
|
 
|
 
| Uses pre-stored target(list)
 
|-
 
| SMART_TARGET_GAMEOBJECT_RANGE
 
| 13
 
| [[Gameobject_template_tc2#entry|goEntry]] (0 any)
 
| minDist
 
| maxDist
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_GAMEOBJECT_GUID
 
| 14
 
| guid
 
| entry
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_GAMEOBJECT_DISTANCE
 
| 15
 
| [[Gameobject_template_tc2#entry|goEntry]] (0 any)
 
| maxDist
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_INVOKER_PARTY
 
| 16
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Invoker's party members
 
|-
 
| SMART_TARGET_PLAYER_RANGE
 
| 17
 
| minDist
 
| maxDist
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_PLAYER_DISTANCE
 
| 18
 
| maxDist
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_CLOSEST_CREATURE
 
| 19
 
| [[Creature_template_tc2#entry|creatureEntry]] (0 any)
 
| maxDist
 
| dead? (0/1)
 
|
 
|
 
|
 
|
 
| param2 = 0 -> 100 yards
 
|-
 
| SMART_TARGET_CLOSEST_GAMEOBJECT
 
| 20
 
| [[Gameobject_template_tc2#entry|goEntry]] (0 any)
 
| maxDist
 
|
 
|
 
|
 
|
 
|
 
| param2 = 0 -> 100 yards
 
|-
 
| SMART_TARGET_CLOSEST_PLAYER
 
| 21
 
| maxDist
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|-
 
| SMART_TARGET_ACTION_INVOKER_VEHICLE
 
| 22
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Unit's vehicle who caused this Event to occur
 
|-
 
| SMART_TARGET_OWNER_OR_SUMMONER
 
| 23
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| Unit's owner or summoner
 
|-
 
| SMART_TARGET_THREAT_LIST
 
| 24
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| All units on creature's threat list
 
|}
 
<br>
 
==== event_flags ====
 
{| width="50%" border="1" cellpadding="1" cellspacing="1"
 
|-
 
! scope="col" | Name
 
! colspan="2" | Flag
 
! scope="col" | Comment
 
|-
 
| SMART_EVENT_FLAG_NOT_REPEATABLE
 
| 1
 
| 0x01
 
| Event can not repeat
 
|-
 
| SMART_EVENT_FLAG_DIFFICULTY_0
 
| 2
 
| 0x02
 
| Event only occurs in normal dungeon
 
|-
 
| SMART_EVENT_FLAG_DIFFICULTY_1
 
| 4
 
| 0x04
 
| Event only occurs in heroic dungeon
 
|-
 
| SMART_EVENT_FLAG_DIFFICULTY_2
 
| 8
 
| 0x08
 
| Event only occurs in normal raid
 
|-
 
| SMART_EVENT_FLAG_DIFFICULTY_3
 
| 16
 
| 0x10
 
| Event only occurs in heroic raid
 
|-
 
| SMART_EVENT_FLAG_DEBUG_ONLY
 
| 128
 
| 0x80
 
| Event only occurs in debug build
 
|}
 
<br>
 
==== Cast flags ====
 
{| width="50%" border="1" cellpadding="1" cellspacing="1"
 
|-
 
! scope="col" | Name
 
! colspan="2" | Flag
 
! scope="col" | Comment
 
|-
 
| SMARTCAST_INTERRUPT_PREVIOUS
 
| 1
 
| 0x01
 
| Interrupt any spell casting
 
|-
 
| SMARTCAST_TRIGGERED
 
| 2
 
| 0x02
 
| Triggered (this makes spell cost zero mana and have no cast time)
 
|-
 
| <b style="color:red">X</b> CAST_FORCE_CAST
 
| 4
 
| 0x04
 
| Forces cast even if creature is out of mana or out of range
 
|-
 
| <b style="color:red">X</b> CAST_NO_MELEE_IF_OOM
 
| 8
 
| 0x08
 
| Prevents creature from entering melee if out of mana or out of range
 
|-
 
| <b style="color:red">X</b> CAST_FORCE_TARGET_SELF
 
| 16
 
| 0x10
 
| Forces the target to cast this spell on itself
 
|-
 
| CAST_AURA_NOT_PRESENT
 
| 32
 
| 0x20
 
| Only casts the spell if the target does not have an aura from the spell
 
|}
 
<br>
 
==== React States ====
 
{| width="55%" border="1" cellpadding="1" cellspacing="1"
 
|-
 
! scope="col" | Name
 
! scope="col" | Value
 
! scope="col" | Comment
 
|-
 
| REACT_PASSIVE
 
| 0
 
| Does not defend or attack at all. Does nothing!
 
|-
 
| REACT_DEFENSIVE
 
| 1
 
| Only attacks back when attacked
 
|-
 
| REACT_AGGRESSIVE
 
| 2
 
| Will attack if on threat list and in threat radius (default)
 
|-
 
|}
 
<br>
 
==== Summon Types ====
 
{| width="55%" border="1" cellpadding="1" cellspacing="1"
 
|-
 
! scope="col" | Name
 
! scope="col" | Value
 
! scope="col" | Comment
 
|-
 
| TEMPSUMMON_TIMED_OR_DEAD_DESPAWN
 
| 1
 
| despawns after a specified time OR when the creature disappears
 
|-
 
| TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN
 
| 2
 
| despawns after a specified time OR when the creature dies
 
|-
 
| TEMPSUMMON_TIMED_DESPAWN
 
| 3
 
| despawns after a specified time
 
|-
 
| TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
 
| 4
 
| despawns after a specified time after the creature is out of combat
 
|-
 
| TEMPSUMMON_CORPSE_DESPAWN
 
| 5
 
| despawns instantly after death
 
|-
 
| TEMPSUMMON_CORPSE_TIMED_DESPAWN
 
| 6
 
| despawns after a specified time after death
 
|-
 
| TEMPSUMMON_DEAD_DESPAWN
 
| 7
 
| despawns when the creature disappears
 
|-
 
| TEMPSUMMON_MANUAL_DESPAWN
 
| 8
 
| despawns when UnSummon() (or Force Despawn action) is called
 
|-
 
|}
 
<br>
 
==== (Event) Phases explained ====
 
When dealing with phases, ''phase IDs'' have to be used.
 
There are 7 (6+1) different phases: 1, 2, 3, 4, 5, 6 and the default, 0.
 
''Example'': the script is in phase 0 by default: if we want it to go to phase 1, we got two choices:
 
SMART_ACTION_INC_PHASE by 1 or SMART_ACTION_SET_PHASE 1
 
If the script is in phase 0 and want to skip to phase 2:
 
SMART_ACTION_INC_PHASE by 2 or SMART_ACTION_SET_PHASE 2
 
If the script is in phase 1 and want to skip to phase 2:
 
SMART_ACTION_INC_PHASE by 1 or SMART_ACTION_SET_PHASE 2
 
<br>


'''smart_scripts.event_phase_mask''':
'''smart_scripts.event_phase_mask''':
Line 2,433: Line 4,899:
The values in this field are bitmasked values:
The values in this field are bitmasked values:


PHASE_ALWAYS_BIT = 0,


PHASE_ALWAYS_BIT  = 0,
PHASE_1_BIT = 1,
 
PHASE_1_BIT       = 1,
 
PHASE_2_BIT        = 2,


PHASE_3_BIT        = 4,
PHASE_2_BIT = 2,


PHASE_4_BIT        = 8,
PHASE_3_BIT = 4,


PHASE_5_BIT        = 16,
PHASE_4_BIT = 8,


PHASE_6_BIT        = 32
PHASE_5_BIT = 16,


PHASE_6_BIT = 32


''Example'': if we want an event to only be able to occur in phase 1 and phase 4:
''Example'': if we want an event to only be able to occur in phase 1 and phase 4:
Line 2,457: Line 4,921:
phase 4: 8
phase 4: 8


 
[[Category: TrinityCore2 World database tables]]
[[Category: SkyFire World database tables]]

Revision as of 22:45, 4 March 2012

Back to world database list of tables.


The `Smart_Scripts` table

Field Type Attributes Key Null Default Extra Comment
entryorguid int(11) signed PRI NO None
source_type tinyint(3) unsigned PRI NO 0
id smallint(5) unsigned PRI NO 0
link smallint(5) unsigned PRI NO 0
event_type tinyint(3) unsigned NO 0
event_phase_mask tinyint(3) unsigned NO 0
event_chance tinyint(3) unsigned NO 100
event_flags tinyint(3) unsigned NO 0
event_param1 int(10) unsigned NO 0
event_param2 int(10) unsigned NO 0
event_param3 int(10) unsigned NO 0
event_param4 int(10) unsigned NO 0
action_type tinyint(3) unsigned NO 0
action_param1 int(10) unsigned NO 0
action_param2 int(10) unsigned NO 0
action_param3 int(10) unsigned NO 0
action_param4 int(10) unsigned NO 0
action_param5 int(10) unsigned NO 0
action_param6 int(10) unsigned NO 0
target_type tinyint(3) unsigned NO 0
target_param1 int(10) unsigned NO 0
target_param2 int(10) unsigned NO 0
target_param3 int(10) unsigned NO 0
target_x float signed NO 0
target_y float signed NO 0
target_z float signed NO 0
target_o float signed NO 0
comment text signed NO Event Comment


Description of the fields

Please note: X means that the feature/option is not (yet) implemented.

entryorguid

  • EntryOrGuid > 0: entry of the creature / game object / etc.
  • EntryOrGuid < 0: guid of the creature / game object / etc.
  • Depends on source_type.

source_type

  • Object type: creature, game object, spell.

id

  • Incremental id bound to each entryorguid&source_type (0, 1, 2, ...).

link

  • Simple event linking;
  • Example: if id = 0 and link = 1; id 1 will only be able to occur if id = 0 was triggered.

event_type, event_param1, event_param2, event_param3, event_param4:

  • Smart_event to be used.

event_phase_mask

  • Event will only be able to occur if creature/GO is in this phase;
  • 0 means all phases (?);
  • (Inverse of EAI: event_inverse_phase_mask).

event_chance

  • Probability of the event to occur, in percentage;
  • 0-100%.

event_flags

  • Sets if the event should not repeat or should only happen in a given instance/dungeon difficulty (if applicable);
  • Values can be added together (bitwise math).

action_type, action_param1, action_param2, action_param3, action_param4, action_param5, action_param6:

  • Action what will be used if event is triggered.

target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o:

  • Defines the target of the event and/or action.

comment

Commenting on SAI uses a template which is the following: (with an example)

"Creature name - Event - Action"

"Minion of Gurok - On spawn - Set Random Movement"

Quick notes:

  • Always update creature_template,gameobject_template or areatrigger_scripts with:
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=y;

UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=y;

INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES(y,'SmartTrigger');

  • If the creature or GO is inside a dungeon, set event_flags accordingly to the instance difficulty (heroic, 25 man, etc.).
  • In case of doubt about an Event, Action or Target, check source code (src/server/game/AI/SmartScripts files; mainly SmartScript.cpp)


source_type

Name Value
SMART_SCRIPT_TYPE_CREATURE 0
SMART_SCRIPT_TYPE_GAMEOBJECT 1
SMART_SCRIPT_TYPE_AREATRIGGER 2
X SMART_SCRIPT_TYPE_EVENT 3
X SMART_SCRIPT_TYPE_GOSSIP 4
X SMART_SCRIPT_TYPE_QUEST 5
X SMART_SCRIPT_TYPE_SPELL 6
X SMART_SCRIPT_TYPE_TRANSPORT 7
X SMART_SCRIPT_TYPE_INSTANCE 8
SMART_SCRIPT_TYPE_TIMED_ACTIONLIST 9


event_type

Name Value Param1 Param2 Param3 Param4 Comment
SMART_EVENT_UPDATE_IC 0 InitialMin InitialMax RepeatMin RepeatMax In combat.
SMART_EVENT_UPDATE_OOC 1 InitialMin InitialMax RepeatMin RepeatMax Out of combat.
SMART_EVENT_HEALT_PCT 2 HPMin% HPMax% RepeatMin RepeatMax Health Percentage
SMART_EVENT_MANA_PCT 3 ManaMin% ManaMax% RepeatMin RepeatMax Mana Percentage
SMART_EVENT_AGGRO 4 On Creature Aggro
SMART_EVENT_KILL 5 CooldownMin0 CooldownMax1 playerOnly2 else creature entry3 On Creature Kill
SMART_EVENT_DEATH 6 On Creature Death
SMART_EVENT_EVADE 7 On Creature Evade Attack
SMART_EVENT_SPELLHIT 8 SpellID School CooldownMin CooldownMax On Creature/Gameobject Spell Hit
SMART_EVENT_RANGE 9 MinDist MaxDist RepeatMin RepeatMax On Target In Range
SMART_EVENT_OOC_LOS 10 NoHostile MaxRange CooldownMin CooldownMax On Target In Distance Out of Combat
SMART_EVENT_RESPAWN 11 type MapId ZoneId On Creature/Gameobject Respawn
SMART_EVENT_TARGET_HEALTH_PCT 12 HPMin% HPMax% RepeatMin RepeatMax On Target Health Percentage
SMART_EVENT_TARGET_CASTING 13 RepeatMin RepeatMax On Target Casting Spell
SMART_EVENT_FRIENDLY_HEALTH 14 HPDeficit Radius RepeatMin RepeatMax On Friendly Health Deficit
SMART_EVENT_FRIENDLY_IS_CC 15 Radius RepeatMin RepeatMax
SMART_EVENT_FRIENDLY_MISSING_BUFF 16 SpellId Radius RepeatMin RepeatMax On Friendly Lost Buff
SMART_EVENT_SUMMONED_UNIT 17 CretureId (0 all) CooldownMin CooldownMax On Creature/Gameobject Summoned Unit
SMART_EVENT_TARGET_MANA_PCT 18 ManaMin% ManaMax% RepeatMin RepeatMax On Target Mana Percentage
SMART_EVENT_ACCEPTED_QUEST 19 QuestID (0 any) On Target Accepted Quest
SMART_EVENT_REWARD_QUEST 20 QuestID (0 any) On Target Rewarded Quest
SMART_EVENT_REACHED_HOME 21 On Creature Reached Home
SMART_EVENT_RECEIVE_EMOTE 22 EmoteId CooldownMin CooldownMax condition val1,val2,val3 (?)
SMART_EVENT_HAS_AURA 23 SpellID Stacks RepeatMin RepeatMax On Creature Has Aura
SMART_EVENT_TARGET_BUFFED 24 SpellID Stacks RepeatMin RepeatMax On Target Buffed With Spell
SMART_EVENT_RESET 25 After Combat, On Respawn or Spawn
SMART_EVENT_IC_LOS 26 NoHostile MaxRange CooldownMin CooldownMax On Target In Distance In Combat
SMART_EVENT_PASSENGER_BOARDED 27 CooldownMin CooldownMax
SMART_EVENT_PASSENGER_REMOVED 28 CooldownMin CooldownMax
SMART_EVENT_CHARMED 29 On Creature Charmed
SMART_EVENT_CHARMED_TARGET 30 On Target Charmed
SMART_EVENT_SPELLHIT_TARGET 31 SpellId School RepeatMin RepeatMax On Target Spell Hit
SMART_EVENT_DAMAGED 32 MinDmg MaxDmg RepeatMin RepeatMax On Creature Damaged
SMART_EVENT_DAMAGED_TARGET 33 MinDmg MaxDmg RepeatMin RepeatMax On Target Damaged
SMART_EVENT_MOVEMENTINFORM 34 MovementType (any) PointID
SMART_EVENT_SUMMON_DESPAWNED 35 Entry CooldownMin CooldownMax On Summoned Unit Despawned
SMART_EVENT_CORPSE_REMOVED 36 On Creature Corpse Removed
SMART_EVENT_AI_INIT 37
SMART_EVENT_DATA_SET 38 Field Value CooldownMin CooldownMax On Creature/Gameobject Data Set, Can be used with SMART_ACTION_SET_DATA
SMART_EVENT_WAYPOINT_START 39 PointId (0 any) pathId (0 any) On Creature Waypoint ID Started
SMART_EVENT_WAYPOINT_REACHED 40 PointId (0 any) pathId (0 any) On Creature Waypoint ID Reached
X SMART_EVENT_TRANSPORT_ADDPLAYER 41
X SMART_EVENT_TRANSPORT_ADDCREATURE 42 Entry (0 any)
XSMART_EVENT_TRANSPORT_REMOVE_PLAYER 43
X SMART_EVENT_TRANSPORT_RELOCATE 44 PointId
X SMART_EVENT_INSTANCE_PLAYER_ENTER 45 Team (0 any) CooldownMin CooldownMax
SMART_EVENT_AREATRIGGER_ONTRIGGER 46 TriggerId (0 any)
X SMART_EVENT_QUEST_ACCEPTED 47 On Target Quest Accepted
X SMART_EVENT_QUEST_OBJ_COPLETETION 48 On Target Quest Objective Completed
X SMART_EVENT_QUEST_COMPLETION 49 On Target Quest Completed
X SMART_EVENT_QUEST_REWARDED 50 On Target Quest Rewarded
X SMART_EVENT_QUEST_FAIL 51 On Target Quest Field
SMART_EVENT_TEXT_OVER 52 GroupId (from creatue_text) CreatureId (0 any) On TEXT_OVER Event Triggered After SMART_ACTION_TALK
SMART_EVENT_RECEIVE_HEAL 53 MinHeal MaxHeal CooldownMin CooldownMax On Creature Received Healing
SMART_EVENT_JUST_SUMMONED 54 On Creature Just spawned
SMART_EVENT_WAYPOINT_PAUSED 55 PointId (0 any) pathID (0 any) On Creature Paused at Waypoint ID
SMART_EVENT_WAYPOINT_RESUMED 56 PointId (0 any) pathID (0 any) On Creature Resumed after Waypoint ID
SMART_EVENT_WAYPOINT_STOPPED 57 PointId (0 any) pathID (0 any) On Creature Stopped On Waypoint ID
SMART_EVENT_WAYPOINT_ENDED 58 PointId (0 any) pathID (0 any) On Creature Waypoint Path Ended
SMART_EVENT_TIMED_EVENT_TRIGGERED 59 Id
SMART_EVENT_UPDATE 60 InitialMin InitialMax RepeatMin RepeatMax
SMART_EVENT_LINK 61 used to link together multiple events
SMART_EVENT_GOSSIP_SELECT 62 menu_ID ID
SMART_EVENT_JUST_CREATED 63
SMART_EVENT_GOSSIP_HELLO 64
SMART_EVENT_FOLLOW_COMPLETED 65
*** SMART_EVENT_DUMMY_EFFECT 66 spellId effectIndex
SMART_EVENT_IS_BEHIND_TARGET 67 CooldownMin CooldownMax
SMART_EVENT_GAME_EVENT_START 68 game_event.eventEntry
SMART_EVENT_GAME_EVENT_END 69 game_event.eventEntry
SMART_EVENT_GO_STATE_CHANGED 70 State (0 - Active, 1 - Ready, 2 - Active alternative)


action_type

Name Value Param1 Param2 Param3 Param4 Param5 Param6 Comment
SMART_ACTION_NONE 0 Do nothing
SMART_ACTION_TALK 1 Creature_text.groupid duration to wait before TEXT_OVER event is triggered Param2 in Milliseconds.
SMART_ACTION_SET_FACTION 2 FactionID (or 0 for default)
SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL 3 Creature_template.entry(param1) Creature_template.modelID(param2) Take DisplayID of creature (param1) OR Turn to DisplayID (param2) OR Both = 0 for Demorph
SMART_ACTION_SOUND 4 SoundId TextRange Play Sound
SMART_ACTION_PLAY_EMOTE 5 EmoteId Play Emote
SMART_ACTION_FAIL_QUEST 6 QuestID Fail Quest of Target
SMART_ACTION_ADD_QUEST 7 QuestID Add Quest to Target
SMART_ACTION_SET_REACT_STATE 8 State React State. Can be Aggressive, Passive or Defensive.
SMART_ACTION_ACTIVATE_GOBJECT 9 Activate Object
SMART_ACTION_RANDOM_EMOTE 10 EmoteId1 EmoteId2 EmoteId3... Play Random Emote
SMART_ACTION_CAST 11 SpellId CastFlags Cast Spell ID at Target
SMART_ACTION_SUMMON_CREATURE 12 Creature_template.entry Summon type duration in ms StorageID (always 0) attackInvoker Summon Unit
SMART_ACTION_THREAT_SINGLE_PCT 13 Threat% Change Threat Percentage for Single Target
SMART_ACTION_THREAT_ALL_PCT 14 Threat% Change Threat Percentage for All Enemies
SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS 15 QuestID
SMART_ACTION_SEND_CASTCREATUREORGO 16 QuestID SpellId
SMART_ACTION_SET_EMOTE_STATE 17 EmoteId Play Emote Continuously
SMART_ACTION_SET_UNIT_FLAG 18 Creature_template.unit_flags (may be more than one field OR'd together) Can set Multi-able flags at once
SMART_ACTION_REMOVE_UNIT_FLAG 19 Creature_template.unit_flags (may be more than one field OR'd together) Can Remove Multi-able flags at once
SMART_ACTION_AUTO_ATTACK 20 AllowAttackState (0 = Stop attack, anything else means continue attacking) Stop or Continue Automatic Attack.
SMART_ACTION_ALLOW_COMBAT_MOVEMENT 21 AllowCombatMovement (0 = Stop combat based movement, anything else continue attacking) Allow or Disable Combat Movement
SMART_ACTION_SET_EVENT_PHASE 22 smart_scripts.event_phase_mask
SMART_ACTION_INC_EVENT_PHASE 23 Increment Decrement Set param1 OR param2 (not both). Value 0 has no effect.
SMART_ACTION_EVADE 24 Evade Incoming Attack
SMART_ACTION_FLEE_FOR_ASSIST 25 0/1 (If you want the fleeing NPC to say attempts to flee text on flee, use 1 on param1. For no message use 0.) If you want the fleeing NPC to say '%s attempts to run away in fear!' on flee, use 1 on param1. 0 for no message.
SMART_ACTION_CALL_GROUPEVENTHAPPENS 26 QuestID
SMART_ACTION_CALL_CASTEDCREATUREORGO 27 Creature_template.entry SpellId
SMART_ACTION_REMOVEAURASFROMSPELL 28 Spellid
SMART_ACTION_FOLLOW 29 Distance (0 = Default value) Angle (0 = Default value) End creature_template.entry credit creditType (0monsterkill, 1event) Follow Target
SMART_ACTION_RANDOM_PHASE 30 Creature.phasemask 1 Creature.phasemask 2 Creature.phasemask 3...
SMART_ACTION_RANDOM_PHASE_RANGE 31 Creature.phasemask minimum Creature.phasemask maximum
SMART_ACTION_RESET_GOBJECT 32 Reset Gameobject
SMART_ACTION_CALL_KILLEDMONSTER 33 Creature_template.entry This is the ID from quest_template.RequiredNpcOrGo
SMART_ACTION_SET_INST_DATA 34 Field Data Set Instance Data
SMART_ACTION_SET_INST_DATA64 35 Field Set Instance Data uint64
SMART_ACTION_UPDATE_TEMPLATE 36 Creature_template.entry Team (updates creature_template to given entry)
SMART_ACTION_DIE 37 Kill Target
SMART_ACTION_SET_IN_COMBAT_WITH_ZONE 38
SMART_ACTION_CALL_FOR_HELP 39 Radius in yards that other creatures must be to acknowledge the cry for help
SMART_ACTION_SET_SHEATH 40 Sheath (0-unarmed, 1-melee, 2-ranged)
SMART_ACTION_FORCE_DESPAWN 41 timer Despawn Target after param1 Milliseconds
SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL 42 MinHpValue(+pct,-flat)
SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL 43 Creature_template.entry Creature_template.modelID Mount to Creature Entry (param1) OR Mount to Creature Display (param2) Or both = 0 for Unmount
SMART_ACTION_SET_INGAME_PHASE_MASK 44 Creature.phasemask
SMART_ACTION_SET_DATA 45 Field Data Set Data For Target, can be used with SMART_EVENT_DATA_SET
SMART_ACTION_MOVE_FORWARD 46 Distance in yards
SMART_ACTION_SET_VISIBILITY 47 0/1
SMART_ACTION_SET_ACTIVE 48
SMART_ACTION_ATTACK_START 49
SMART_ACTION_SUMMON_GO 50 Gameobject_template.entry DespawnTime in ms
SMART_ACTION_KILL_UNIT 51
SMART_ACTION_ACTIVATE_TAXI 52 TaxiID
SMART_ACTION_WP_START 53 walk = 0 run = 1 Waypoints.entry canRepeat Quest_template.id despawntime reactState
SMART_ACTION_WP_PAUSE 54 time
SMART_ACTION_WP_STOP 55 despawnTime Quest_template.id fail (0/1)
SMART_ACTION_ADD_ITEM 56 Item_template.entry count
SMART_ACTION_REMOVE_ITEM 57 Item_template.entry count
SMART_ACTION_INSTALL_AI_TEMPLATE 58 TemplateID
SMART_ACTION_SET_RUN 59 0 = Off / 1 = On
SMART_ACTION_SET_FLY 60 0 = Off / 1 = On
SMART_ACTION_SET_SWIM 61 0 = Off / 1 = On
SMART_ACTION_TELEPORT 62 MapID Continue this action with the TARGET_TYPE column. Use any target_type, and use target_x, target_y, target_z, target_o as the coordinates
SMART_ACTION_STORE_VARIABLE_DECIMAL 63 varID number
SMART_ACTION_STORE_TARGET_LIST 64 varID
SMART_ACTION_WP_RESUME 65
SMART_ACTION_SET_ORIENTATION 66 This depends on whet target script have if SMART_TARGET_SELF than Facing will be set like in HomePosition, When SMART_TARGET_POSITION you need to set target_o. 0 = North, West = 1.5, South = 3, East = 4.5
SMART_ACTION_CREATE_TIMED_EVENT 67 id InitialMin InitialMax RepeatMin(only if it repeats) RepeatMax(only if it repeats) chance
SMART_ACTION_PLAYMOVIE 68 entry
SMART_ACTION_MOVE_TO_POS 69 PointId PointId is called by SMART_EVENT_MOVEMENTINFORM. Continue this action with the TARGET_TYPE column. Use any target_type, and use target_x, target_y, target_z, target_o as the coordinates
SMART_ACTION_RESPAWN_TARGET 70 Respawntime in seconds for gameobjects (only GOs)
SMART_ACTION_EQUIP 71 Creature_equip_template.entry Slotmask slot1 (item_template.entry) Slot2 (item_template.entry) Slot3 (item_template.entry) only slots with mask set will be sent to client, bits are 1, 2, 4, leaving mask 0 is defaulted to mask 7 (send all), Slots1-3 are only used if no Param1 is set
SMART_ACTION_CLOSE_GOSSIP 72 gossip_menu_option.action_menu_id must be 0, and target_type must be 7
SMART_ACTION_TRIGGER_TIMED_EVENT 73 id(>1)
SMART_ACTION_REMOVE_TIMED_EVENT 74 id(>1)
SMART_ACTION_ADD_AURA 75 SpellId
SMART_ACTION_OVERRIDE_SCRIPT_BASE_OBJECT 76 WARNING: CAN CRASH CORE, do not use if you dont know what you are doing
SMART_ACTION_RESET_SCRIPT_BASE_OBJECT 77
SMART_ACTION_CALL_SCRIPT_RESET 78
None 79
SMART_ACTION_CALL_TIMED_ACTIONLIST 80 EntryOrGuid timer update type(0 OOC, 1 IC, 2 ALWAYS)
SMART_ACTION_SET_NPC_FLAG 81 Creature_template.npcflag
SMART_ACTION_ADD_NPC_FLAG 82 Creature_template.npcflag
SMART_ACTION_REMOVE_NPC_FLAG 83 Creature_template.npcflag
SMART_ACTION_SIMPLE_TALK 84 Creature_text.groupID Makes a player say text. SMART_EVENT_TEXT_OVER is not triggered and whispers can not be used.
SMART_ACTION_INVOKER_CAST 85 SpellID castFlags if avaliable, last used invoker will cast spellId with castFlags on targets
SMART_ACTION_CROSS_CAST 86 SpellID castFlags CasterTargetType CasterTarget param1 CasterTarget param2 CasterTarget param3
SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST 87 EntryOrGuid 1 EntryOrGuid 2 EntryOrGuid 3 EntryOrGuid 4 EntryOrGuid 5 EntryOrGuid 6 Will select one entry from the ones provided. 0 is ignored.
SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST 88 EntryOrGuid 1 EntryOrGuid 2 0 is ignored.
SMART_ACTION_RANDOM_MOVE 89 Max distance in yards
SMART_ACTION_SET_UNIT_FIELD_BYTES_1 90 Value
SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1 91 Value
SMART_ACTION_INTERRUPT_SPELL 92 With delay (0/1) SpellId Instant (0/1) This action allows you to interrupt the current spell being cast. If you do not set the spellId, the core will find the current spell depending on the withDelay and the withInstant values.
SMART_ACTION_SEND_GO_CUSTOM_ANIM 93 animprogress (0-255)
SMART_ACTION_SET_DYNAMIC_FLAG 94 dynamicflag.
SMART_ACTION_ADD_DYNAMIC_FLAG 95 dynamicflags
SMART_ACTION_REMOVE_DYNAMIC_FLAG 96 dynamicflags
SMART_ACTION_JUMP_TO_POS 97 Speed XY Speed Z Target X Target Y Target Z
SMART_ACTION_SEND_GOSSIP_MENU 98 Gossip_menu_option.menuId Gossip_menu_option.npc_text_id Can be used together with 'SMART_EVENT_GOSSIP_HELLO' to set custom gossip.
SMART_ACTION_GO_SET_LOOT_STATE 99 LootState (0 - Not ready, 1 - Ready, 2 - Activated, 3 - Just deactivated)



Predefined SAI templates

Description Name Value (Param1) Param2 Param3 Param4 Param5 Param6 Comment
SMARTAI_TEMPLATE_BASIC 0
SMARTAI_TEMPLATE_CASTER 1 spellid repeatMin repeatMax range manaPCT +JOIN: target_param1 as castFlag
SMARTAI_TEMPLATE_TURRET 2 spellid repeatMin repeatMax range manaPCT +JOIN: target_param1 as castflag
SMARTAI_TEMPLATE_PASSIVE 3
SMARTAI_TEMPLATE_CAGED_GO_PART 4 creatureID give credit at point end (0/1)
SMARTAI_TEMPLATE_CAGED_NPC_PART 5 gameObjectID despawntime run (0/1) dist TextGroupID


target_type

Name Value target_param1 target_param2 target_param3 target_x target_y target_z target_o Comment
SMART_TARGET_NONE 0 None, default to invoker
SMART_TARGET_SELF 1 Self cast
SMART_TARGET_VICTIM 2 Our current target (ie: highest aggro)
SMART_TARGET_HOSTILE_SECOND_AGGRO 3 Second highest aggro
SMART_TARGET_HOSTILE_LAST_AGGRO 4 Dead last on aggro
SMART_TARGET_HOSTILE_RANDOM 5 Just any random target on our threat list
SMART_TARGET_HOSTILE_RANDOM_NOT_TOP 6 Any random target except top threat
SMART_TARGET_ACTION_INVOKER 7 Unit who caused this Event to occur
SMART_TARGET_POSITION 8 x y z o Use xyz from event params
SMART_TARGET_CREATURE_RANGE 9 creatureEntry (0 any) minDist maxDist
SMART_TARGET_CREATURE_GUID 10 guid entry
SMART_TARGET_CREATURE_DISTANCE 11 creatureEntry (0 any) maxDist
SMART_TARGET_STORED 12 id Uses pre-stored target(list)
SMART_TARGET_GAMEOBJECT_RANGE 13 goEntry (0 any) minDist maxDist
SMART_TARGET_GAMEOBJECT_GUID 14 guid entry
SMART_TARGET_GAMEOBJECT_DISTANCE 15 goEntry (0 any) maxDist
SMART_TARGET_INVOKER_PARTY 16 Invoker's party members
SMART_TARGET_PLAYER_RANGE 17 minDist maxDist
SMART_TARGET_PLAYER_DISTANCE 18 maxDist
SMART_TARGET_CLOSEST_CREATURE 19 creatureEntry (0 any) maxDist dead? (0/1) param2 = 0 -> 100 yards
SMART_TARGET_CLOSEST_GAMEOBJECT 20 goEntry (0 any) maxDist param2 = 0 -> 100 yards
SMART_TARGET_CLOSEST_PLAYER 21 maxDist
SMART_TARGET_ACTION_INVOKER_VEHICLE 22 Unit's vehicle who caused this Event to occur
SMART_TARGET_OWNER_OR_SUMMONER 23 Unit's owner or summoner
SMART_TARGET_THREAT_LIST 24 All units on creature's threat list


event_flags

Name Flag Comment
SMART_EVENT_FLAG_NOT_REPEATABLE 1 0x01 Event can not repeat
SMART_EVENT_FLAG_DIFFICULTY_0 2 0x02 Event only occurs in normal dungeon
SMART_EVENT_FLAG_DIFFICULTY_1 4 0x04 Event only occurs in heroic dungeon
SMART_EVENT_FLAG_DIFFICULTY_2 8 0x08 Event only occurs in normal raid
SMART_EVENT_FLAG_DIFFICULTY_3 16 0x10 Event only occurs in heroic raid
SMART_EVENT_FLAG_DEBUG_ONLY 128 0x80 Event only occurs in debug build


Cast flags

Name Flag Comment
SMARTCAST_INTERRUPT_PREVIOUS 1 0x01 Interrupt any spell casting
SMARTCAST_TRIGGERED 2 0x02 Triggered (this makes spell cost zero mana and have no cast time)
X CAST_FORCE_CAST 4 0x04 Forces cast even if creature is out of mana or out of range
X CAST_NO_MELEE_IF_OOM 8 0x08 Prevents creature from entering melee if out of mana or out of range
X CAST_FORCE_TARGET_SELF 16 0x10 Forces the target to cast this spell on itself
CAST_AURA_NOT_PRESENT 32 0x20 Only casts the spell if the target does not have an aura from the spell


React States

Name Value Comment
REACT_PASSIVE 0 Does not defend or attack at all. Does nothing!
REACT_DEFENSIVE 1 Only attacks back when attacked
REACT_AGGRESSIVE 2 Will attack if on threat list and in threat radius (default)


Summon Types

Name Value Comment
TEMPSUMMON_TIMED_OR_DEAD_DESPAWN 1 despawns after a specified time OR when the creature disappears
TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN 2 despawns after a specified time OR when the creature dies
TEMPSUMMON_TIMED_DESPAWN 3 despawns after a specified time
TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT 4 despawns after a specified time after the creature is out of combat
TEMPSUMMON_CORPSE_DESPAWN 5 despawns instantly after death
TEMPSUMMON_CORPSE_TIMED_DESPAWN 6 despawns after a specified time after death
TEMPSUMMON_DEAD_DESPAWN 7 despawns when the creature disappears
TEMPSUMMON_MANUAL_DESPAWN 8 despawns when UnSummon() (or Force Despawn action) is called


(Event) Phases explained

When dealing with phases, phase IDs have to be used.

There are 7 (6+1) different phases: 1, 2, 3, 4, 5, 6 and the default, 0.

Example: the script is in phase 0 by default: if we want it to go to phase 1, we got two choices:

SMART_ACTION_INC_PHASE by 1 or SMART_ACTION_SET_PHASE 1

If the script is in phase 0 and want to skip to phase 2:

SMART_ACTION_INC_PHASE by 2 or SMART_ACTION_SET_PHASE 2

If the script is in phase 1 and want to skip to phase 2:

SMART_ACTION_INC_PHASE by 1 or SMART_ACTION_SET_PHASE 2


smart_scripts.event_phase_mask:

The values in this field are bitmasked values:

PHASE_ALWAYS_BIT = 0,

PHASE_1_BIT = 1,

PHASE_2_BIT = 2,

PHASE_3_BIT = 4,

PHASE_4_BIT = 8,

PHASE_5_BIT = 16,

PHASE_6_BIT = 32

Example: if we want an event to only be able to occur in phase 1 and phase 4:

event_phase_mask = 1+8 = 9

phase 1: 1

phase 4: 8