smart_scripts

Manual editing smart_scripts table can be tedious and difficult, for easier writing scripts you can use additional TrinityCore tools like WoW Database Editor.

Table Structure

Field

Type

Attributes

Key

Null

Default

Extra

Comment

entryorguid

bigint(20)

signed

PRI

NO

0



source_type

tinyint(3)

unsigned

PRI

NO

0



id

smallint(5)

unsigned

PRI

NO

0



ink

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



event_param5int(10)unsigned
NO0

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

NO



target_param4int(10)unsigned
NONO

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:  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. see table below for values


    Name

    Value

    SMART_SCRIPT_TYPE_CREATURE

    0

    SMART_SCRIPT_TYPE_GAMEOBJECT

    1

    SMART_SCRIPT_TYPE_AREATRIGGER

    2

    SMART_SCRIPT_TYPE_EVENT

    3

    SMART_SCRIPT_TYPE_GOSSIP

    4

    SMART_SCRIPT_TYPE_QUEST

    5

    SMART_SCRIPT_TYPE_SPELL

    6

    SMART_SCRIPT_TYPE_TRANSPORT

    7

    SMART_SCRIPT_TYPE_INSTANCE

    8

    SMART_SCRIPT_TYPE_TIMED_ACTIONLIST

    9

    SMART_SCRIPT_TYPE_SCENE10
    SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY11
    SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_SERVERSIDE12

id

  • Incremental id bound to each entryorguid & source_type (0, 1, 2, ...).
  • Simple event linking;
  • Example: if id = 0 and link = 1; id 1 will only be able to occur if id = 0 was triggered.
  • Smart_event to be used.

event_phase_mask

When dealing with phases, phase IDs have to be used. There are 10 (9+1) different phases: 1, 2, ... 9 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
NameFlagHexComment

SMART_EVENT_PHASE_ALWAYS_BIT

00x000Means all phases (1 ... 9)
SMART_EVENT_PHASE_110x001Phase 1 only.
SMART_EVENT_PHASE_220x002Phase 2 only.
SMART_EVENT_PHASE_340x004Phase 3 only.
SMART_EVENT_PHASE_480x008Phase 4 only.
SMART_EVENT_PHASE_5160x010Phase 5 only.
SMART_EVENT_PHASE_6320x020Phase 6 only.
SMART_EVENT_PHASE_7640x040Phase 7 only.
SMART_EVENT_PHASE_81280x080Phase 8 only.
SMART_EVENT_PHASE_92560x100Phase 9 only.


  • Event will only be able to occur if creature/GO is in this phase.
  • Example: If we want an event to only be able to occure in phase 1 and 4, event_phase_mask = 1+8 = 9
  • (Inverse of EAI: event_inverse_phase_mask).

event_chance

This is the probability of the event to occur as a percentage from 0-100. So, if you want the event to occur roughly half of the time, then set this to 50. 

event_flags

NameFlagHexComment

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_RESERVED_5320x20
SMART_EVENT_FLAG_RESERVED_6640x40

SMART_EVENT_FLAG_DEBUG_ONLY

128

0x80

Event only occurs in debug build

SMART_EVENT_FLAG_DONT_RESET2560x100Event will not reset in SmartScript::OnReset()
SMART_EVENT_FLAG_WHILE_CHARMED5120x200Event can occur while player controlled


  • 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).

event_type

Name

Value

Param1

Param2

Param3

Param4

Param5Comment

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_HEALTH_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

CooldownMin

CooldownMax

Player only (0/1)

Creature entry (if param3 is 0)


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

0/1 Player OnlyOn Target In Distance Out of Combat

SMART_EVENT_RESPAWN

11

type (None= 0, Map = 1, Area = 2)

MapId

ZoneId



On Creature/Gameobject Respawn

SMART_EVENT_TARGET_HEALTH_PCT (unused on 3.3.5)

12

HPMin%

HPMax%

RepeatMin

RepeatMax


On Target Health Percentage

SMART_EVENT_VICTIM_CASTING

13

RepeatMin

RepeatMax

Spell id (0 any)



On Target Casting Spell

SMART_EVENT_FRIENDLY_HEALTH (unused on 3.3.5)

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 (unused on 3.3.5)

18

ManaMin%

ManaMax%

RepeatMin

RepeatMax


On Target Mana Percentage

SMART_EVENT_ACCEPTED_QUEST

19

QuestID (0 any)

RepeatMin

RepeatMax



On Target Accepted Quest

SMART_EVENT_REWARD_QUEST

20

QuestID (0 any)

RepeatMin

RepeatMax



On Target Rewarded Quest

SMART_EVENT_REACHED_HOME

21






On Creature Reached Home

SMART_EVENT_RECEIVE_EMOTE

22

EmoteId

CooldownMin

CooldownMax



On Receive Emote.

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

0/1 Player OnlyOn Target In Distance In Combat

SMART_EVENT_PASSENGER_BOARDED

27

CooldownMin

CooldownMax





SMART_EVENT_PASSENGER_REMOVED

28

CooldownMin

CooldownMax





SMART_EVENT_CHARMED

29

0 (on charm apply) / 1 (on charm remove)





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 (0=any)

PointID




MovementType

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

SMART_EVENT_TRANSPORT_ADDPLAYER

41







SMART_EVENT_TRANSPORT_ADDCREATURE

42

Entry (0 any)






SMART_EVENT_TRANSPORT_REMOVE_PLAYER

43







SMART_EVENT_TRANSPORT_RELOCATE

44

PointId






SMART_EVENT_INSTANCE_PLAYER_ENTER

45

Team (0 any)

CooldownMin

CooldownMax




SMART_EVENT_AREATRIGGER_ONTRIGGER

46

TriggerId (0 any)






SMART_EVENT_QUEST_ACCEPTED

47






On Target Quest Accepted

SMART_EVENT_QUEST_OBJ_COMPLETION

48






On Target Quest Objective Completed

SMART_EVENT_QUEST_COMPLETION

49






On Target Quest Completed

SMART_EVENT_QUEST_REWARDED

50






On Target Quest Rewarded

SMART_EVENT_QUEST_FAIL

51






On Target Quest Field

SMART_EVENT_TEXT_OVER

52

GroupId (from creature_text)

Creature.Id (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 as a chain of events.

SMART_EVENT_GOSSIP_SELECT

62

menu_id

id




On gossip clicked (gossip_menu_option335).

SMART_EVENT_JUST_CREATED

63







SMART_EVENT_GOSSIP_HELLO

64

0/1/2 (For gameobject only) 0 = on gossip hello and on report use This might result in the action being executed twice when clicking the GameObject, 1 = on gossip hello only, 2 = on report use only





On Right-Click Creature/Gameobject that have gossip enabled.

SMART_EVENT_FOLLOW_COMPLETED

65







SMART_EVENT_EVENT_PHASE_CHANGE

66

event phase mask





On event phase mask set

SMART_EVENT_IS_BEHIND_TARGET (unused on 3.3.5)

67

CooldownMin

CooldownMax




On Creature is behind target.

SMART_EVENT_GAME_EVENT_START

68

game_event.eventEntry





On game_event started.

SMART_EVENT_GAME_EVENT_END

69

game_event.eventEntry





On game_event ended.

SMART_EVENT_GO_LOOT_STATE_CHANGED

70

State (0 - Not Ready, 1 - Ready, 2 - Activacted, 3 - Just deactivated)






SMART_EVENT_GO_EVENT_INFORM

71

EventId






SMART_EVENT_ACTION_DONE

72

EventId






SMART_EVENT_ON_SPELLCLICK73





SMART_EVENT_FRIENDLY_HEALTH_PCT74minHpPctmaxHpPctrepeatMin

repeatMax



SMART_EVENT_DISTANCE_CREATURE75database guiddatabase entrydistancerepeat interval (ms)

On creature guid OR any instance of creature entry is within distance.

SMART_EVENT_DISTANCE_GAMEOBJECT76database guiddatabase entrydistancerepeat interval (ms)

On gameobject guid OR any instance of gameobject entry is within distance.

SMART_EVENT_COUNTER_SET77counterIDvaluecooldownMincooldownMax
If the value of specified counterID is equal to a specified value
SMART_EVENT_SCENE_START78none



Master only
SMART_EVENT_SCENE_TRIGGER79param_string : triggerName



Master only
SMART_EVENT_SCENE_CANCEL80none



Master only
SMART_EVENT_SCENE_COMPLETE81none



Master only

SMART_EVENT_SUMMONED_UNIT_DIES

82none




action_type


Name

Value

Param1

Param2

Param3

Param4

Param5

Param6

Comment

Branch Limitation































Name

Value

Param1

Param2

Param3

Param4

Param5

Param6

Comment

Branch Limitation

SMART_ACTION_NONE

0







Do nothing


SMART_ACTION_TALK

1

Creature_text.groupid

Duration to wait before SMART_EVENT_TEXT_OVER is triggered.

0 It will try to trigger talk of the target

1 Set target as talk target (used for $vars in texts and whisper target)




Param2 in Milliseconds.


SMART_ACTION_SET_FACTION

2

FactionID (or 0 for default)






Sets faction to creature.


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

onlySelf (0/1)

Distant Sound (0/1)




Play Sound; TextRange = 0 only sends sound to self, TextRange = 1 sends sound to everyone in visibility range


SMART_ACTION_PLAY_EMOTE

5

EmoteId






Play Emote


SMART_ACTION_FAIL_QUEST

6

QuestID






Fail Quest of Target


SMART_ACTION_OFFER_QUEST

7

QuestID

directAdd (0/1)





Add Quest to Target


SMART_ACTION_SET_REACT_STATE

8

State






React State. Can be Passive (0), Defensive (1), Aggressive (2), Assist (3).


SMART_ACTION_ACTIVATE_GOBJECT

9







Activate Object


SMART_ACTION_RANDOM_EMOTE

10

EmoteId1

EmoteId2

EmoteId3

Emote4

Emote5

Emote6

Play Random Emote


SMART_ACTION_CAST

11

SpellId

castFlags

triggeredFlags




Cast Spell ID at Target


SMART_ACTION_SUMMON_CREATURE

12

creature_template.entry

Summon type

duration in ms

attackInvoker

SmartActionSummonCreatureFlags:
PersonalSpawn = 1

PreferUnit = 2


Summon Unit


SMART_ACTION_THREAT_SINGLE_PCT

13

Threat% inc

Threat% dec





Change Threat Percentage for Single Target


SMART_ACTION_THREAT_ALL_PCT

14

Threat% inc

Threat% dec





Change Threat Percentage for All Enemies


SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS

15

QuestID








SMART_ACTION_SET_INGAME_PHASE_ID

16

phaseId

apply/remove (1/0)





For 4.3.4 + only


SMART_ACTION_SET_EMOTE_STATE

17

EmoteId






Play Emote Continuously


SMART_ACTION_SET_UNIT_FLAG (unused on 3.3.5)

18

(may be more than one field OR'd together)

type

If false set creature_template.unit_flags

If true set creature_template.unit_flags2





Can set Multi-able flags at once


SMART_ACTION_REMOVE_UNIT_FLAG (unused on 3.3.5)

19

(may be more than one field OR'd together)

type

If false set  creature_template.unit_flags

If true set creature_template.unit_flags2





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

0/1 Set 0 if you want the NPC to move to the RespawnPosition; use 1 if you want the NPC to move to the last HomePosition.






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_COMBAT_STOP

27









SMART_ACTION_REMOVEAURASFROMSPELL

28

Spellid

0/1 onlyOwnedAuras





0 removes all auras


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

smart_scripts.event_phase_mask
1

smart_scripts.event_phase_mask
2

smart_scripts.event_phase_mask 3

smart_scripts.event_phase_mask 4

smart_scripts.event_phase_mask 5

smart_scripts.event_phase_mask
6



SMART_ACTION_RANDOM_PHASE_RANGE

31

smart_scripts.event_phase_mask minimum

smart_scripts.event_phase_mask 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

Type (0 = SetData, 1 = SetBossState)




Set Instance Data


SMART_ACTION_SET_INST_DATA64

35

Field






Set Instance Data uint64


SMART_ACTION_UPDATE_TEMPLATE

36

Creature_template.entry

Update Level





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.

0/1 (say calls for help text)





If you want the NPC to say '%s calls for help!'. Use 1 on param1, 0 for no message.


SMART_ACTION_SET_SHEATH

40

Sheath (0-unarmed, 1-melee, 2-ranged)








SMART_ACTION_FORCE_DESPAWN

41

Despawn timer "ms"

Respawn timer "sec"





Despawn Target after param1 in Milliseconds. If you want to set respawn time set param2 in seconds.


SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL

42

flat hp value

percent hp value





If you use both params, only percent will be used.


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 (for 3.3.5)

SMART_ACTION_SET_INGAME_PHASE_GROUP (for 4.3.4 +)

44

creature.phasemask (3.3.5)

creature.phasegroup (4.3.4 +)

0 = remove / 1 = add (4.3.4+ only)







SMART_ACTION_SET_DATA

45

Field

Data





Set Data For Target, can be used with SMART_EVENT_DATA_SET


SMART_ACTION_ATTACK_STOP

46







Stop melee, spell casting during combat, chasing the target and facing


SMART_ACTION_SET_VISIBILITY

47

0/1






Makes creature Visible = 1  or  Invisible = 0


SMART_ACTION_SET_ACTIVE

48

0/1








SMART_ACTION_ATTACK_START

49







Allows basic melee swings to creature.


SMART_ACTION_SUMMON_GO

50

gameobject_template.entry

De-spawn time in seconds.

If 0 and Param2=0 the gob will despawns only with the summoner

0 - For despawn when the summoner despawn or time runs out

1 - For despawn when time runs out




Spawns Gameobject, use target_type to set spawn position.


SMART_ACTION_KILL_UNIT

51







Kills Creature.


SMART_ACTION_ACTIVATE_TAXI

52

TaxiID






Sends player to flight path. You have to be close to Flight Master, which gives Taxi ID you need.


SMART_ACTION_WP_START

53

0 = walk / 1 = run

waypoints.entry

canRepeat

quest_template.id

despawntime

reactState

Creature starts Waypoint Movement. Use waypoints table to create movement.


SMART_ACTION_WP_PAUSE

54

time (in ms)






Creature pauses its Waypoint Movement for given time.


SMART_ACTION_WP_STOP

55

despawnTime

quest_template.id

fail (0/1)




Creature stops its Waypoint Movement.


SMART_ACTION_ADD_ITEM

56

item_template.entry

count





Adds item(s) to player.


SMART_ACTION_REMOVE_ITEM

57

item_template.entry

count





Removes item(s) from player.


SMART_ACTION_INSTALL_AI_TEMPLATE (unused on 3.3.5)

58

TemplateID (see Predefined SAI templates below)








SMART_ACTION_SET_RUN

59

0 = Off / 1 = On








SMART_ACTION_SET_DISABLE_GRAVITY

60

0 = gravity On / 1 = gravity Off






Only works for creatures with inhabit air.


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 (except 0), and use target_x, target_y, target_z, target_o as the coordinates


SMART_ACTION_SET_COUNTER

63

counterIDvalue

reset (0/1)






SMART_ACTION_STORE_TARGET_LIST

64

varID








SMART_ACTION_WP_RESUME

65







Creature continues in its Waypoint Movement.


SMART_ACTION_SET_ORIENTATION

66

Depends on the script target.
if SMART_TARGET_SELF, facing will be the same as in HomePosition, For 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

isTransport (0 or 1)

disablePathfinding (0 or 1)

ContactDistance



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_ENABLE_TEMP_GOBJ

70

Respawntime in seconds (The time which the gob remains spawned)






Always action_param1>0

For npcs use action_type=133


SMART_ACTION_EQUIP

71

creature_equip_template.CreatureID

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







Closes gossip window.

SMART_ACTION_TRIGGER_TIMED_EVENT

73

id(>1)








SMART_ACTION_REMOVE_TIMED_EVENT

74

id(>1)








SMART_ACTION_ADD_AURA

75

SpellId






Adds aura to player(s). Use target_type 17 to make AoE aura.


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









SMART_ACTION_SET_RANGED_MOVEMENT

79

attackDistance

attackAngle





Sets movement to follow at a specific range to the target.


SMART_ACTION_CALL_TIMED_ACTIONLIST

80

EntryOrGuid * 100 (smart_scripts.entryorguid with 00 added after the entry, or 01, 02, 03 etc. for multiple action lists)

timer update type(0 OOC, 1 IC, 2 ALWAYS)

Can override in going action list 0/1

This will to stop an action list and start an other






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_SELF_CAST

85

SpellID

castFlags

triggeredFlags




The target will cast the spell on it self


SMART_ACTION_CROSS_CAST

86

SpellID

castFlags

CasterTargetType (caster is selected here, use it as target_type)

CasterTarget (target_param1)

CasterTarget (target_param2)

CasterTarget (target_param3)

This action is used to make selected caster (in CasterTargetType) to cast spell. Actual target is entered in target_type as normally.


SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST

87

EntryOrGuid 1 (smart_scripts.entryorguid * 100 + n)

EntryOrGuid 2 (smart_scripts.entryorguid * 100 + n)

EntryOrGuid 3 (smart_scripts.entryorguid * 100 + n)

EntryOrGuid 4 (smart_scripts.entryorguid * 100 + n)

EntryOrGuid 5 (smart_scripts.entryorguid * 100 + n)

EntryOrGuid 6 (smart_scripts.entryorguid * 100 + n)

Will select one entry from the ones provided. 0 is ignored.


SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST

88

EntryOrGuid 1 (smart_scripts.entryorguid * 100 + n)

EntryOrGuid 2 (smart_scripts.entryorguid * 100 + n)





0 is ignored.


SMART_ACTION_RANDOM_MOVE

89

Radius






Creature moves to random position in given radius.


SMART_ACTION_SET_UNIT_FIELD_BYTES_1

90

Value

Type







SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1

91

Value

Type







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 (unused on 3.3.5)

94

creature.dynamicflags








SMART_ACTION_ADD_DYNAMIC_FLAG (unused on 3.3.5)

95

creature.dynamicflags








SMART_ACTION_REMOVE_DYNAMIC_FLAG (unused on 3.3.5)

96

creature.dynamicflags








SMART_ACTION_JUMP_TO_POS

97

Speed XY

Speed Z







SMART_ACTION_SEND_GOSSIP_MENU

98

gossip_menu.entry

gossip_menu.text_id
(same value as 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)








SMART_ACTION_SEND_TARGET_TO_TARGET

100

Id






Send targets previously stored with SMART_ACTION_STORE_TARGET, to another npc/go, the other npc/go can then access them as if it was its own stored list


SMART_ACTION_SET_HOME_POS

101







Use with SMART_TARGET_SELF or SMART_TARGET_POSITION


SMART_ACTION_SET_HEALTH_REGEN

102

0/1






Sets the current creatures health regen on or off.


SMART_ACTION_SET_ROOT1030/1




Enables or disables creature movement
SMART_ACTION_SET_GO_FLAG104gameobject_template_addon.flags




oldFlag = newFlag
SMART_ACTION_ADD_GO_FLAG105gameobject_template_addon.flags




oldFlag |= newFlag
SMART_ACTION_REMOVE_GO_FLAG106gameobject_template_addon.flags




oldFlag &= ~newFlag
SMART_ACTION_SUMMON_CREATURE_GROUP107creature_summon_groups.groupIdAttack invoker (0/1)



Use creature_summon_groups table. SAI target has no effect, use 0
SMART_ACTION_SET_POWER108Power typeNew power





SMART_ACTION_ADD_POWER109Power typePower to add





SMART_ACTION_REMOVE_POWER110Power typePower to remove





SMART_ACTION_GAME_EVENT_STOP111GameEventId






SMART_ACTION_GAME_EVENT_START112GameEventId






SMART_ACTION_START_CLOSEST_WAYPOINT113wp1wp2wp3wp4

wp5


wp6Make target follow closest waypoint to its location
SMART_ACTION_MOVE_OFFSET114





Use  target_x,  target_y,  target_z

With target_type=1


SMART_ACTION_RANDOM_SOUND115soundId1soundId2soundId3soundId4onlySelf (0/1)Distant Sound (0/1)

SMART_ACTION_SET_CORPSE_DELAY116timer






SMART_ACTION_DISABLE_EVADE117disable evade (1) / re-enable (0)






SMART_ACTION_GO_SET_GO_STATE118state






SMART_ACTION_SET_CAN_FLY1190/1






SMART_ACTION_REMOVE_AURAS_BY_TYPE120Type






SMART_ACTION_SET_SIGHT_DIST121SightDistance






SMART_ACTION_FLEE122FleeTime






SMART_ACTION_ADD_THREAT123+threat-threat





SMART_ACTION_LOAD_EQUIPMENT124Id






SMART_ACTION_TRIGGER_RANDOM_TIMED_EVENT125id min rangeid max range





SMART_ACTION_REMOVE_ALL_GAMEOBJECTS126







SMART_ACTION_PAUSE_MOVEMENT127MovementSlot (default = 0, active = 1, controlled = 2)PauseTime (ms)

Forced

(depends on the movement generator. some will stop automatically, other will let the current spline finish first)




default --> waypoint, random etc

active --> point movement

controlled --> mindcontrol etc


SMART_ACTION_PLAY_ANIMKIT128AnimKit ID

type:

0- PlayOneShotAnimKitId

1- SetAIAnimKitId

2- SetMeleeAnimKitId

3- SetMovementAnimKitId





// don't use on 3.3.5a
SMART_ACTION_SCENE_PLAY129SceneId




// don't use on 3.3.5a
SMART_ACTION_SCENE_CANCEL130SceneId




// don't use on 3.3.5a
SMART_ACTION_SPAWN_SPAWNGROUP131groupIdminDelaymaxDelayspawnflags



SMART_ACTION_DESPAWN_SPAWNGROUP132groupIdminDelaymaxDelayspawnflags



SMART_ACTION_RESPAWN_BY_SPAWNID133spawnType (0 npc/ 1 gob)spawnId (DB Guid)



Use to respawn npcs and gobs, the target in this case is always=1 and only a single unit could be a target via the spawnId (action_param1, action_param2)
SMART_ACTION_INVOKER_CAST134

SpellID

castFlagstriggeredFlags


if avaliable, last used invoker will cast spellId with castFlags on targets
SMART_ACTION_PLAY_CINEMATIC 135entry
cinematic





SMART_ACTION_SET_MOVEMENT_SPEED 136movementType
speedIntegerspeedFraction




SMART_ACTION_PLAY_SPELL_VISUAL_KIT137spellVisualKitId





(RESERVED, PENDING CHERRYPICK)
SMART_ACTION_OVERRIDE_LIGHT138zoneId
areaLightId
lightId (overrideLightId)fadeInTime (transition Milliseconds)


3.3.5
SMART_ACTION_OVERRIDE_WEATHER139zoneId
weatherIdweatherGrade (intensity)




3.3.5
SMART_ACTION_SET_AI_ANIM_KIT140






3.3.5
SMART_ACTION_SET_HOVER1410 = Off / 1 = On





3.3.5
SMART_ACTION_SET_HEALTH_PCT142percent





3.3.5
SMART_ACTION_CREATE_CONVERSATION143conversation_template.id





master
SMART_ACTION_SET_IMMUNE_PC1440 = Off / 1 = On




UNIT_FLAG_IMMUNE_TO_PC3.3.5
SMART_ACTION_SET_IMMUNE_NPC1450 = Off / 1 = On




UNIT_FLAG_IMMUNE_TO_NPC3.3.5
SMART_ACTION_SET_UNINTERACTIBLE1460 = Off / 1 = On




UNIT_FLAG_UNINTERACTIBLE3.3.5

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_param4

target_x

target_y

target_z

target_o

Comment

SMART_TARGET_NONE

0









NONE, defaulting to invoker.

SMART_TARGET_SELF

1









Self cast.

SMART_TARGET_VICTIM

2









Our current target. (ie: highest aggro)

SMART_TARGET_HOSTILE_SECOND_AGGRO

3

maxdist

playerOnly (0/1)

powerType + 1






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 Entry (0 any)

minDist

maxDist

Number of target

0 = all targets





(Random?) creature with specified ID within specified range.

SMART_TARGET_CREATURE_GUID

10

guid

entry







Creature with specified GUID.

SMART_TARGET_CREATURE_DISTANCE

11

creature Entry (0 any)

maxDist

Number of target

0 = all targets






Creature with specified ID within distance. (Different from #9?)

SMART_TARGET_STORED

12

id








Uses pre-stored target(list)

SMART_TARGET_GAMEOBJECT_RANGE

13

GO Entry (0 any)

minDist

maxDist

Number of target

0 = all targets





(Random?) object with specified ID within specified range.

SMART_TARGET_GAMEOBJECT_GUID

14

guid

entry







Object with specified GUID.

SMART_TARGET_GAMEOBJECT_DISTANCE

15

GO Entry (0 any)

maxDist

Number of target

0 = all targets






Object with specified ID within distance. (Different from #13?)

SMART_TARGET_INVOKER_PARTY

16









Invoker's party members

SMART_TARGET_PLAYER_RANGE

17

minDist

maxDist







(Random?) player within specified range.

SMART_TARGET_PLAYER_DISTANCE

18

maxDist








(Random?) player within specified distance. (Different from #17?)

SMART_TARGET_CLOSEST_CREATURE

19

creature Entry (0 any)

maxDist (Can be from 0-100 yards)

dead? (0/1)






Closest creature with specified ID within specified range.

SMART_TARGET_CLOSEST_GAMEOBJECT

20

GO Entry (0 any)

maxDist (Can be from 0-100 yards)







Closest object with specified ID within specified range.

SMART_TARGET_CLOSEST_PLAYER

21

maxDist








Closest player within specified range.

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

SMART_TARGET_CLOSEST_ENEMY25maxDistplayerOnly (0/1)





Any attackable target (creature or player) within maxDist
SMART_TARGET_CLOSEST_FRIENDLY26maxDistplayerOnly (0/1)





Any friendly unit (creature, player or pet) within maxDist
SMART_TARGET_LOOT_RECIPIENTS27







All tagging players
SMART_TARGET_FARTHEST28maxDistplayerOnlyisInLos (0/1)




Farthest unit on the threat list

SMART_TARGET_VEHICLE_ACCESSORY29seat






Vehicle can target unit in given seat

SMART_TARGET_CLOSEST_UNSPAWNED_GAMEOBJECT

30GO Entry (0 any)maxDist (Can be from 0-100 yards)





Closest unspawned object with specified ID within specified range. (to be used only with action 70 and gameobjects with negative respawn time in the DB)

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)

Cast Flags

Name

Flag

Hex

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)

CAST_FORCE_CAST

4

0x04

Forces cast even if creature is out of mana or out of range

CAST_NO_MELEE_IF_OOM

8

0x08

Prevents creature from entering melee if out of mana or out of range

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
SMARTCAST_COMBAT_MOVE640x40Prevent combat movement on cast, allow on fail range, mana, LOS

triggeredFlags

Name

Flag

Hex

Comment

TRIGGERED_IGNORE_GCD

1

0x00000001

Will ignore GCD

TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD

2

0x00000002

Will ignore Spell and Category cooldowns

TRIGGERED_IGNORE_POWER_AND_REAGENT_COST

4

0x00000004

Will ignore power and reagent cost

TRIGGERED_IGNORE_CAST_ITEM

8

0x00000008

Will not take away cast item or update related achievement criteria

TRIGGERED_IGNORE_AURA_SCALING

16

0x00000010

Will ignore aura scaling

TRIGGERED_IGNORE_CAST_IN_PROGRESS

32

0x00000020

Will not check if a current cast is in progress
TRIGGERED_IGNORE_COMBO_POINTS640x00000040Will ignore combo point requirement
TRIGGERED_CAST_DIRECTLY1280x00000080In Spell::prepare, will be cast directly without setting containers for executed spell
TRIGGERED_IGNORE_AURA_INTERRUPT_FLAGS5120x00000100Will ignore interruptible aura's at cast
TRIGGERED_IGNORE_SET_FACING10240x00000200Will not adjust facing to target (if any)
TRIGGERED_IGNORE_SHAPESHIFT20480x00000400Will ignore shapeshift checks
TRIGGERED_IGNORE_CASTER_AURASTATE‭4 096‬0x00000800Will ignore caster aura states including combat requirements and death state
TRIGGERED_DISALLOW_PROC_EVENTS8 192‬0x00001000Disallows proc events from triggered spell (default)
TRIGGERED_IGNORE_CASTER_MOUNTED_OR_ON_VEHICLE16 3840x00002000Will ignore mounted/on vehicle restrictions
TRIGGERED_IGNORE_BLOCKED_SPELL_FAMILY327680x00004000Will ignore blocked casts of SPELL_AURA_BLOCK_SPELL_FAMILY
Not used655360x00008000Not used
TRIGGERED_IGNORE_CASTER_AURA1310720x00010000Will ignore caster aura restrictions or requirements
TRIGGERED_DONT_RESET_PERIODIC_TIMER2621440x00020000Will allow periodic aura timers to keep ticking (instead of resetting)
TRIGGERED_DONT_REPORT_CAST_ERROR5242880x00040000Will return SPELL_FAILED_DONT_REPORT in CheckCast functions
TRIGGERED_FULL_MASK1048576 or 00x0007FFFFUsed when doing CastSpell with triggered == true
TRIGGERED_IGNORE_EQUIPPED_ITEM_REQUIREMENT20971520x00080000Will ignore equipped item requirements
TRIGGERED_IGNORE_TARGET_CHECK41943040x00100000Will ignore most target checks (mostly DBC target checks)
TRIGGERED_FULL_DEBUG_MASK83886080xFFFFFFFF

NOTICE: TRIGGERED_FULL_MASK=1048576 or 0 so using triggeredFlags=0 will trigger the cast with full mask.

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.

Invoker:

// white list of events that actually have an invoker passed to them

Actions like SMART_ACTION_INVOKER_CAST and targets like SMART_TARGET_ACTION_INVOKER will work only if the event is in this list:

SMART_EVENT_AGGRO

SMART_EVENT_DEATH

SMART_EVENT_KILL

SMART_EVENT_SUMMONED_UNIT

SMART_EVENT_SPELLHIT

SMART_EVENT_SPELLHIT_TARGET

SMART_EVENT_DAMAGED

SMART_EVENT_RECEIVE_HEAL

SMART_EVENT_RECEIVE_EMOTE

SMART_EVENT_JUST_SUMMONED

SMART_EVENT_DAMAGED_TARGET

SMART_EVENT_SUMMON_DESPAWNED

SMART_EVENT_PASSENGER_BOARDED

SMART_EVENT_PASSENGER_REMOVED

SMART_EVENT_GOSSIP_HELLO

SMART_EVENT_GOSSIP_SELECT

SMART_EVENT_ACCEPTED_QUEST

SMART_EVENT_REWARD_QUEST

SMART_EVENT_FOLLOW_COMPLETED

SMART_EVENT_ON_SPELLCLICK

SMART_EVENT_GO_LOOT_STATE_CHANGED

SMART_EVENT_AREATRIGGER_ONTRIGGER

SMART_EVENT_IC_LOS

SMART_EVENT_OOC_LOS

SMART_EVENT_DISTANCE_CREATURE

SMART_EVENT_FRIENDLY_HEALTH

SMART_EVENT_FRIENDLY_HEALTH_PCT

SMART_EVENT_FRIENDLY_IS_CC

SMART_EVENT_FRIENDLY_MISSING_BUFF

SMART_EVENT_ACTION_DONE

SMART_EVENT_TARGET_HEALTH_PCT

SMART_EVENT_TARGET_MANA_PCT

SMART_EVENT_RANGE

SMART_EVENT_VICTIM_CASTING

SMART_EVENT_TARGET_BUFFED

SMART_EVENT_IS_BEHIND_TARGET

SMART_EVENT_INSTANCE_PLAYER_ENTER

SMART_EVENT_TRANSPORT_ADDCREATURE

SMART_EVENT_DATA_SET