Skip to main content

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:

EventDetailsDirect Target [?]
EliteMobDamagedByEliteMobEventElite damaged by another elite
EliteMobDamagedByPlayerEventElite damaged by a playerDamaging player
EliteMobDamagedEventElite damaged by anything
EliteMobDeathEventElite death
EliteMobEnterCombatEventElite enter combat with playerEngaging player
EliteMobExitCombatEventElite exit combat
EliteMobHealEventElite heal (including full heal)
EliteMobSpawnEventElite spawn
EliteMobTargetPlayerEventElite target playerTargeted player
PlayerDamagedByEliteMobEventElite damage playerDamaged player
ElitePhaseSwitchEventBoss 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.

These also drive Lua on_zone_enter / on_zone_leave

Listing 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.