Smart AI (DB Scripting) reference

From Project Skyfire
Jump to navigation Jump to search

Back to world database list of tables.


Smart_Scripts_SF

This table controls events for the SmartAI system.


Structure

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.
Example1: Lets say we want all Azure Netherwing Drakes to perform this action... our creature_template entry=23456
 EntryorGuid= 23456
Example2: Lets say we only want ONE Azure Netherwing Drake to perform this action... his guid=1234
 EntryorGuid= -1234

source_type

  • Object type: creature, game object, spell.

id

  • Incremental id bound to each entryorguid&source_type (0, 1, 2, ...).
  • Every event for a single creature or gobject needs its own specific id number
    • EXAMPLE: CreatureX
      • EVENT 1 would have id= 0
      • EVENT 2 would have id= 1
      • EVENT 3 would have id= 2
      • Etc...

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;
  • All events default in phase 0
  • (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 (minimum time to wait before execute) InitialMax (maximum time to wait before execute) RepeatMin (When repeating, minimum wait for repeat - If 0, will not repeat) RepeatMax (When repeating, maximum wait for repeat - If 0, will not repeat) 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 (Does not function if creature is running)
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 (Use event 19 instead)
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 (Use event 20 instead)
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 (Does not function if creature is running)
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
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 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)
SMART_ACTION_GO_SET_LOOT_STATE 100 Sets the state of loot.
SMART_ACTION_SEND_TARGET_TO_TARGET 101
SMART_ACTION_SET_MANA 102 Sets Mana Ammount
SMART_ACTION_CHARACTER_SAVE 103 Force save character to DB. This prevents character relogging in wrong phase.
SMART_ACTION_CHARACTER_BIND 104 Force save homebind in script.



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