Événements Elite Script
Les EliteScripts sont basés sur les événements. Cela signifie qu'ils se déclenchent lorsqu'un événement spécifique survient. Voici les événements actuellement valides :
| Événement | Détails | Cible Directe [?] |
|---|---|---|
| EliteMobDamagedByEliteMobEvent | Élite endommagée par une autre élite | Entité vivante de l'élite attaquante |
| EliteMobDamagedByPlayerEvent | Élite endommagée par un joueur | Joueur attaquant |
| EliteMobDamagedEvent | Élite endommagée par n'importe quoi | ❌ |
| EliteMobDeathEvent | Mort de l'élite | ❌ |
| EliteMobEnterCombatEvent | Élite entre en combat avec un joueur | Joueur engagé |
| EliteMobExitCombatEvent | Élite quitte le combat | ❌ |
| EliteMobHealEvent | Soin de l'élite (y compris soin complet) | ❌ |
| EliteMobSpawnEvent | Apparition de l'élite | ❌ |
| EliteMobTargetPlayerEvent | Élite cible un joueur | Joueur ciblé |
| PlayerDamagedByEliteMobEvent | Élite inflige des dégâts à un joueur | Joueur endommagé |
| ElitePhaseSwitchEvent | Boss apparaît suite à un changement de phase | ❌ |
| ZoneEnterEvent (ScriptZoneEnterEvent) | Entité entre dans la zone. Nécessite qu'une zone soit définie ! | Entité qui est entrée dans la zone |
| ZoneLeaveEvent (ScriptZoneLeaveEvent) | Entité quitte la zone. Nécessite qu'une zone soit définie ! | Entité qui a quitté la zone |
« Élite » désigne une entité suivie comme élite par EliteMobs, y compris les boss et les renforts élites. Remarque : ZoneEnterEvent et ZoneLeaveEvent sont coûteux en calcul, veuillez les utiliser avec parcimonie !
Direct Target est utilisé par les Cibles de Script, plus d'informations ici.
Dans YAML, écrivez ZoneEnterEvent et ZoneLeaveEvent. Les noms entre parenthèses (ScriptZoneEnterEvent et ScriptZoneLeaveEvent) sont les événements Java sous-jacents, et non des alias YAML acceptés. Annuler un événement annulable arrête les scripts et pouvoirs Lua suivants dans son ordre de distribution, mais pas les actions restantes du script déjà en cours. Les événements d'entrée et de sortie de zone ne sont pas annulables.
EliteMobDamagedEvent couvre les dégâts de toute source ; EliteMobDamagedByPlayerEvent et EliteMobDamagedByEliteMobEvent couvrent leurs sources respectives. Ce sont des événements distribués séparément, pas des possibilités mutuellement exclusives. Déclarer un événement générique et un événement spécifique peut exécuter le même script plusieurs fois pour un coup si les temps de recharge le permettent. Les dégâts déjà annulés avant le passage de l'écouteur générique ne le déclenchent pas.
Note : les noms d'événements sont comparés exactement, caractère par caractère. elitemobdeathevent ou ELITEMOBDEATHEVENT sont rejetés avec un avertissement en console ; seul EliteMobDeathEvent fonctionne. Les noms de sections au niveau du script sont également sensibles à la casse : Events, Actions, Zone, Conditions et Cooldowns doivent être écrits exactement ainsi. Un bloc Conditions imbriqué sous une action est lu quelle que soit sa casse. Tout ce qui se trouve à l'intérieur de ces sections (targetType, radius, borderRadius, isAlive, Target, ...) est insensible à la casse, et chaque valeur d'enum est une constante UPPER_SNAKE_CASE conventionnelle à la casse exacte.
on_zone_enter / on_zone_leave en LuaLister ZoneEnterEvent ou ZoneLeaveEvent ici est ce qui démarre l'écouteur de zone par tick sur le boss. Cet écouteur est la seule chose qui déclenche les hooks de premier niveau on_zone_enter / on_zone_leave d'un pouvoir Lua sur le même boss. Le context.zones:watch_zone(...) d'un pouvoir Lua ne les déclenche pas.
ZoneEnterEvent et ZoneLeaveEvent déclenchent des actions lorsque des entités entrent dans l'union des formes de zone générées par le script ou en sortent. Leur DIRECT_TARGET est l'entité entrée ou sortie. Le scanner lui-même n'a pas de cible directe : n'utilisez donc pas DIRECT_TARGET pour définir sa zone. Les positions fixes et SELF / SELF_SPAWN fournissent des origines simples. Un sélecteur tel que NEARBY_PLAYERS peut aussi résoudre des origines sans cible directe ; dans ce cas la zone se déplace avec les joueurs sélectionnés et les entrées/sorties reflètent l'appartenance à cette zone combinée en mouvement.
L'écouteur de zone analyse les entités à chaque tick, même lorsque les temps de recharge empêchent le lancement des actions. Les temps de recharge réduisent les exécutions, pas le coût de détection de l'appartenance à la zone. Lorsqu'un écouteur démarre, les entités déjà présentes lors de son premier balayage sont considérées comme entrantes.
Les événements de zone identifient le boss et l'entité qui franchit la limite, mais pas le script ni la zone d'origine. Une transition détectée par un écouteur est transmise à tous les scripts et pouvoirs Lua correspondants du boss. Plusieurs écouteurs peuvent donc provoquer des activations répétées ou entre zones différentes. Le filter de la zone détermine les entités vivantes examinées ; sa valeur par défaut est PLAYER.
Utilisez une section Events par script, avec autant de déclencheurs pris en charge que nécessaire. Un script sans événements ne se déclenche pas automatiquement, mais peut être appelé par un autre script :
Exemple
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
- EliteMobTargetPlayerEvent
Actions:
- action: PUSH
Target:
targetType: SELF
vValue: 0,.3,0
Cooldowns:
local: 60
global: 20
Ce script ferait sauter l'élite lorsqu'elle est frappée par un joueur ou lorsqu'elle cible un joueur.