Elite Script Events
EliteScripts are event-based. This means that they are launched when a specific event is triggered. The following are the currently valid events:
| Event | Details | Direct Target [?] |
|---|---|---|
| EliteMobDamagedByEliteMobEvent | Elite damaged by another elite | ❌ |
| EliteMobDamagedByPlayerEvent | Elite damaged by a player | Damaging player |
| EliteMobDamagedEvent | Elite damaged by anything | ❌ |
| EliteMobDeathEvent | Elite death | ❌ |
| EliteMobEnterCombatEvent | Elite enter combat with player | Engaging player |
| EliteMobExitCombatEvent | Elite exit combat | ❌ |
| EliteMobHealEvent | Elite heal (including full heal) | ❌ |
| EliteMobSpawnEvent | Elite spawn | ❌ |
| EliteMobTargetPlayerEvent | Elite target player | Targeted player |
| PlayerDamagedByEliteMobEvent | Elite damage player | Damaged player |
| ElitePhaseSwitchEvent | Boss spawn from phase switch | ❌ |
| ZoneEnterEvent (ScriptZoneEnterEvent) | Entity enters zone. Requires a zone to be set! | Entity that entered the zone |
| ZoneLeaveEvent (ScriptZoneLeaveEvent) | Entity leaves zone. Requires a zone to be set! | Entity that left the zone |
Note: "Elite" refers to any aggressive entity spawned by the plugin, no matter if they're a reinforcement, a boss or anything else. Note: ZoneEnterEvent and ZoneLeaveEvent are computationally expensive to run so please use these sparingly!
Direct Target is used by the Script Targets, more on that here.
Note: EliteMobDamagedEvent triggers when an elite takes damage from ANY source, while EliteMobDamagedByPlayerEvent and EliteMobDamagedByEliteMobEvent are more specific versions that trigger only for player or elite mob damage respectively.
Note: event names are matched exactly, character for character. elitemobdeathevent or ELITEMOBDEATHEVENT are rejected with a console warning; only EliteMobDeathEvent works. The section names themselves are also case-sensitive: Events, Actions, Zone, Conditions and Cooldowns must be spelled exactly like that, and a Conditions: block nested under an action must be capitalised too — a lowercase conditions: under an action is silently discarded. Everything inside those sections (targetType, radius, borderRadius, isAlive, Target, ...) is case-insensitive, and every enum value is a conventional exact-case UPPER_SNAKE_CASE constant.
on_zone_enter / on_zone_leaveListing ZoneEnterEvent or ZoneLeaveEvent here is what starts the per-tick zone listener on the boss. That listener is the only thing that fires the top-level on_zone_enter / on_zone_leave hooks in a Lua power on the same boss. A Lua power's own context.zones:watch_zone(...) does not fire them.
ZoneEnterEvent and ZoneLeaveEvent are special events that allow scripters to trigger actions based on entities entering and leaving zones set in scripts. The DIRECT_TARGET of ZoneEnterEvent and ZoneLeaveEvent is the entity that entered or left (this means you can't use the direct target as the target of the zone), and due to how the internal logic works only absolute points (specific coordinates) and points relative to the boss can be used for scanning entering and leaving (cannot use zones that target players).
There can only be one Event section per script. However, several events can be set as triggers for a script:
Example
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
- EliteMobTargetPlayerEvent
Actions:
- action: PUSH
Target:
targetType: SELF
vValue: 0,.3,0
Cooldowns:
local: 60
global: 20
This script would make the elite jump when hit by a player or when targeting a player.