Smart scripts SF: Difference between revisions
(recategorized) |
m (decat) |
||
Line 2,459: | Line 2,459: | ||
[[Category: SkyFire World database tables]] | [[Category: SkyFire World database tables]] | ||
Revision as of 15:56, 18 September 2011
Back to world database list of tables.
The `smart_scripts` table
Table 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 |
Table fields description
- Entryorguid > 0: entry of the creature / game object / etc.
- Entryorguid < 0: guid of the creature / game object / etc.
- Depends on source_type.
- Object type: creature, game object, spell.
- 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.
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%.
- 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 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:
- 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:
- Always update creature_template or gameobject_template with:
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=y; UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=y;
- 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 | Comment |
---|---|---|
SMART_SCRIPT_TYPE_CREATURE | 0 | |
SMART_SCRIPT_TYPE_GAMEOBJECT | 1 | Partially implemented |
SMART_SCRIPT_TYPE_AREATRIGGER | 2 | |
SMART_SCRIPT_TYPE_EVENT | 3 | Not Yet Implemented |
SMART_SCRIPT_TYPE_GOSSIP | 4 | Not Yet Implemented |
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 |
Event types
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 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 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 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 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_COPLETETION | 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 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 | menuID | actionID | |||
SMART_EVENT_JUST_CREATED | 63 | |||||
SMART_EVENT_GOSSIP_HELLO | 64 | |||||
SMART_EVENT_FOLLOW_COMPLETED | 65 | |||||
SMART_EVENT_DUMMY_EFFECT | 66 | spellId | effectIndex |
Action types
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 | CreatureID | 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) | Target | 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) | Target | 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 | |||||||
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 | Angle | EndCreatureEntry | 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 | CreatureId | ||||||
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 | 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 ( CREATURE ONLY - TODO ) | ||||
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 | run/walk | Waypoints.entry | canRepeat | Quest_template.entry | despawntime | reactState | |
SMART_ACTION_WP_PAUSE | 54 | time | ||||||
SMART_ACTION_WP_STOP | 55 | despawnTime | Quest_template.entry | 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 | AITemplateID | ||||||
SMART_ACTION_SET_RUN | 59 | 0/1 | ||||||
SMART_ACTION_SET_FLY | 60, | 0/1 | ||||||
SMART_ACTION_SET_SWIMM | 61 | 0/1 | ||||||
SMART_ACTION_TELEPORT | 62 | MapID | Use Any SMART_TARGET, and Set target_x, target_y, target_z, target_o. (param4,param5,param6,param7) | |||||
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 | 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 | 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_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 | |||||||
SMART_ACTION_TRIGGER_TIMED_EVENT | 73 | id(>1) | ||||||
SMART_ACTION_REMOVE_TIMED_EVENT | 74 | id(>1) | ||||||
SMART_ACTION_ADD_AURA | 75 | Spellid | targets | |||||
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_ENTER_VEHICLE | 79 | SeatID | ||||||
SMART_ACTION_CALL_TIMED_ACTIONLIST | 80 | ID (overwrites already running actionlist) | Stop after combat (0/1) | timer update type(0-OOC,1-IC,2-ALWAYS) | ||||
SMART_ACTION_SET_NPC_FLAG | 81 | Creature_template.npcflag | ||||||
SMART_ACTION_ADD_NPC_FLAG | 82 | Add this number to the above flag | ||||||
SMART_ACTION_REMOVE_NPC_FLAG | 83 | Subtract this number from the above flag | ||||||
SMART_ACTION_SIMPLE_TALK | 84 | Creature_text.groupID | 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) | |||||
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 | ( + 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_SET_UNIT_FIELD_BYTES_1 | 90 | Value | ||||||
SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1 | 91 | 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) |
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 |
Targets
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) | |||||||
SMART_TARGET_CLOSEST_GAMEOBJECT | 20 | goEntry (0 any) | |||||||
SMART_TARGET_CLOSEST_PLAYER | 21 | ||||||||
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 | Value | 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 |
Cast flags
Name | Value | 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 | Not Yet Implemented: Forces cast even if creature is out of mana or out of range |
CAST_NO_MELEE_IF_OOM | 0x08 | Not Yet Implemented: Prevents creature from entering melee if out of mana or out of range |
CAST_FORCE_TARGET_SELF | 0x10 | Not Yet Implemented: Forces the target to cast this spell on itself |
CAST_AURA_NOT_PRESENT | 0x20 | Not Yet Implemented: Only casts the spell if the target does not have an aura from the spell |
React States
Name | Value | Comment |
---|---|---|
REACT_PASSIVE | 0 | attacks nothing, does not defend (default setting) |
REACT_DEFENSIVE | 1 | only attacks when attacked |
REACT_AGGRESSIVE | 2 | will attack if on threat list and in threat radius |
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