Skill Triggers
Triggers are used to determine how a skill is triggered from within the mobs skill configuration section.
TRIGGERS CANNOT BE USED IN META-SKILLS AND SHOULD NOT BE INCLUDED IN THEM. Triggers can only be used to activate the meta-skill itself.
Table of all available triggers:
Trigger | When it fires... |
---|---|
onCombat | Default |
onAttack | When the mob hits something |
onDamaged | When the mob is damaged |
onSpawn | When the mob spawns |
onDespawn | When the mob is despawned |
onFirstSpawn | Triggered the first time a mob is spawned from a spawner |
onLoad | When the mob is loaded (spawning or loading after a restart) |
onDeath | When the mob dies |
onTimer:# | Every # ticks (where # is the interval in ticks) |
onInteract | When the mob is right-clicked |
onKill | When something kills a mob |
onKillPlayer | When the mob kills a player |
onPlayerDeath | When a player dies for any reason |
onEnterCombat | When the mob enters combat (requires threat tables be on) |
onDropCombat | When the mob leaves combat (requires threat tables be on) |
onChangeTarget | When the mob changes targets (requires threat tables be on) |
onExplode | When the mob explodes (typically only used for creepers) |
onPrime | When the creeper charges up for an explosion |
onTeleport | When the mob teleports (typically only used for endermen) |
onSignal | When the mob receives a signal |
onSignal:[signal] | When the mob receives a specific signal |
onShoot | When the mob fires a projectile |
onTame | When the mob gets tamed |
onBreed | When the mob breeds with another mob. |
onTrade | When the Villager completes a trade. Requires Paper |
Using Triggers
Triggers are defined in the skill section of the mob configuration and must use tilda (~) in front of them. In the case of the Timer, a time in ticks is also required.
SkeletalWizard_Fire:
Type: WITHER_SKELETON
Display: '&Skeletal Fire Wizard'
Health: 50
Damage: 0.5
Skills:
- ignite{ticks=100} @target ~onAttack
- skill{s=FireShield} @trigger ~onDamaged 0.1
- skill{s=AOEFire} ~onTimer:300
In this example the mob will also set its target on fire when melee-attacking, will use a "FireShield" skill when taking damage, and will use the "AOEFire" skill every 300 ticks [1].
Not using Triggers...
Skill triggers give far more flexibility in determining exactly when a skill should go off. It is highly recommended that you trigger all your skills using advanced triggers as opposed to the old, legacy methods.
If a skill does not have a trigger, it will default to the "~onCombat" trigger (shown further below) which will execute when these four basic things occur:
- The mob takes damage
- The mob deals damage
- The mob spawns
- The mob dies
SkeletalWarrior:
Mobtype: skeleton
Display: '&9A Skeletal Warrior'
Health: 100
Damage: 2
Drops:
- DropTable
Skills:
- skill{s=Bash} =10%-90%
In this instance the Bash skill is triggered when the mob deals or takes damage when it is between 10% and 90% health.
The @trigger Targeter
You may have noticed there is an @trigger targeter in the examples above, and listed in the targeters section. The @trigger will target the "cause" of the skill being set off, i.e. if a player damages a mob and that mob uses an onDamage-triggered skill, it will target that player. If a signal is being sent to a mob, it will target the mob that has sent the signal, and so on.
Detailed Descriptions & Examples
~onSpawn
- Trigger the skill to execute when the mob spawns.
- This will only occur once.
- Can be used along with the chance parameters to make the chance to execute less than 100%
- - skill{s=DamageImmunity} ~onSpawn 0.50 (The mob has a 50% chance to use a DamageImmunity skill when it spawns)
~onDeath
- Trigger the skill to execute when the mob dies.
- This will only occur once.
- Can be used along with the chance parameters to make the chance to execute less than 100%
- - skill{s=SpawnSpiderlings} ~onDeath 1 (The mob has a 100% chance to use a SpawnSpiderlings spell when it dies)
~onAttack
- Trigger the skill to execute when the mob attacks.
- This will occur anytime the mob attacks something.
- Can be used along with the health and chance parameters to further define when this occurs.
- - skill{s=Bash} ~onAttack <50% 0.1 (The mob has a 10% chance to use the Bash skill when it attacks and has less than 50% health)
~onDamaged
- Trigger the skill to execute when the mob takes damage.
- This will occur anytime the mob takes damage.
- Can be used along with the health and chance parameters to further define when this occurs.
- - skill{s=FlameShield} ~onDamaged 1 (The mob has a 100% chance to use the FlameShield skill when it takes damage)
~onExplode
- Trigger the skill to execute when the mob explodes.
- This will generally occur only once unless you have the PreventSuicide option set. Generally only works with creepers, since other mobs tend to not explode...
- Can be used along with the chance parameters to make the chance to execute less than 100%
- - skill{s=SpawnCreeper} ~onExplode 0.25 (The mob has a 25% chance to use the SpawnCreeper skill when it explodes)
~onTeleport
- Trigger the skill to execute when the mob teleports.
- Generally only used for Endermen or mobs that have skills that allow them to teleport.
- Can be used along with the health and chance parameters to further define when this occurs.
- - skill{s=GustOfWind} ~onTeleport <50% 1 (The mob has a 100% chance to use a GustOfWind spell when it teleports if it has less than 50% health)
~onTimer:<ticks>
- Trigger the skill to execute based on a timer.
- The timer is in ticks so 20 ticks equates to 1 second.
- Care must be taken when using the Timer trigger as skills that are not properly designed can potentially lead to server or client side performance issues. Skills with particularly low timers that call complex syntax can cause server side performance issues, while large count particle effects and other graphic intensive things can lead to potential client side performance issues.
- - skill{s=SingleTargetFire} ~onTimer:200 (The mob will use the SingleTargetFire skill every 10 seconds)
~onPlayerKill
- Trigger the skill to execute when the mob kills a player character.
- Can be used along with the health and chance parameters to further define when this occurs.
- - skill{s=BossRegen} ~onPlayerKill >0 1 (The mob has a 100% chance to use the BossRegen spell when it kills a player)
~onEnterCombat
- Trigger the skill to execute when the mob enters combat.
- This trigger will only work when ThreatTables are enabled.
- - skill{s=BuffSelf} ~onEnterCombat >0 1 (The mob has a 100% chance to use the BuffSelf skill when it enters combat with a player or mob)
~onDropCombat
- Trigger the skill to execute when the mob drops combat.
- This trigger will only work when ThreatTables are enabled.
- - skill{s=BossRegen} ~onDropCombat >0 1 (The mob has a 100% chance to use the BossRegen skill when it drops combat with a player or mob)
~onChangeTarget
- Trigger the skill to execute when the mob changes target.
- This trigger will only work when ThreatTables are enabled.
- - skill{s=Charge} ~onChangeTarget >0 1 (The mob has a 100% chance to use the Charge skill when it changes targets)
~onInteract
- Trigger the skill to execute when the player interacts with them (right-clicks on them).
- - skill{s=QuestDialogue} ~onInteract >0 1 (The mob has a 100% chance to use the QuestDialogue skill when the player interacts or right-click on it)
~onSignal or ~onSignal:[signal]
- Trigger the skill to execute when the mob receives a specific signal from the Signal mechanic.
- Useful for skills that require communication between mobs or from a player to a mob [2].
- See signal-skill page.
~onShoot
- Trigger the skill to execute when the mob fires a projectile (Ghast/Blaze Fireballs).
- - skill{s=ExplodeParticles} ~onShoot >0 1 (The mob has a 100% chance to use the ExplodeParticles skill when it fires a projectile)
[1] 20 ticks = 1 second
[2] players can communicate signals to mobs by using the mythicmobs-command /mm signal <uuid> <signal>