LeafbugClubber¶
Assumptions¶
It is assumed this enemy is loaded with a non empty chargeonotherenemy as it is needed for their hitaction logic to work. Typically, it will be set to other LeafbugClubber, LeafbugArcher and LeafbugNinja.
hitaction support¶
This enemy supports hitaction logic and it will be performed when hitaction is true instead of any moves.
dontusecharge set to true¶
This move always sets dontusecharge to true which means charges will not get zeroed out in post action.
Logic sequence¶
This is done by yield returning the EnemyAngryCharge coroutine with the battleentity. It does the following:
- Set
dontusechargeto true - If
chargeis less than 3, it is incremented with the following:- animstate set to 5 (
Angry) Wamsound plays- Emoticon called on this enemy with the
Exclamationemote with 20 time - Yield all frames until
emoticoncooldownexpires StatUpsound plays- StatEffect called on this enemy with type 4 (green up arrow)
- Yield for 0.5 seconds
chargeis incremented
- animstate set to 5 (
Move selection¶
2 moves are possible:
- A single target club slash
- A party wide club jumping attack
The decision of which move to use is based on the following odds:
| Move | Odds |
|---|---|
| 1 | 3/4 |
| 2 | 1/4 |
Pre move logic¶
The following logic is always done at the start of the action if this enemy is the last enemydata remaining:
Charge10sound plays with 0.9 pitch- ShakeSprite called with intensity of (0.1, 0.0, 0.0) and 25.0 frametimer
- animstate set to 5 (
Angry) - Yield for 0.3 seconds
StatUpsound plays- StatEffect called on this enemy with type 0 (red up arrow)
- SetCondition called to inflict the AttackUp condition on this enemy for 1 main turn (only the current action)
- Yield for 0.5 seconds
Move 1 - Club slash¶
A single target club slash.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | playertargetID after GetSingleTarget |
4 | null | null | commandsuccess |
Logic sequence¶
- GetSingleTarget called
- Camera moves to look near
playerdata[playertargetID] - MoveTowards
playertargetentityposition + (1.5, 0.0, -0.1) with a 2.0 multiplier - Yield all frames until
forcemoveis done Rope2sound plays with 1.1 pitch- animstate set to 100
- Yield for 0.65 seconds
- animstate set to 102
Rope2sound playsDeath3sound plays- DeathSmoke particles plays at
playertargetentity - ShakeScreen called with an ammount of 0.2 and 0.5 time
- DoDamage 1 call happens
- Yield for 0.75 seconds
Move 2 - Club jumping attack¶
A party wide club jumping attack.
PartyDamage¶
| # | Conditions | caller | damage | property | block | jumpheight | spinammount | jumpevenonblock | overrides |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | 3 | null | commandsuccess |
0.0 | Vector3.zero | false | null |
Logic sequence¶
- animstate set to 5 (
Angry) checkingdeadset to a new JumpPartyAttackCoroutine (checkingdeadis set to null when completed)- Yield all frames until
checkingdeadis null
This is what the coroutine ends up doing:
- ShakeSprite called with intensity of (0.1, 0.0, 0.0) and 30.0 frametimer
Grow1sound plays with 0.8 pitch- Yield for 0.5 seconds
- Camera moves to look near
partymiddle - animstate set to 103
Jumpsound playsLaunchsound plays- Over the course of 41.0 frames, this enemy moves from its position with a y component of 0.0 to (-4.0, 0.0, 0.0) via a BeizierCurve3 with a ymax of 6.0
- animstate set to 102
Launchsound playsExplosion5sound plays- ShakeScreen called with an ammount of 0.2 and 0.5 time
impactsmokeparticles plays at this enemy position - 0.5 in x- PartyDamage 1 call happens
- Yield for 0.75 seconds
checkingdeadset to null which signals the caller that this coroutine completed