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
dontusecharge
to true - If
charge
is less than 3, it is incremented with the following:- animstate set to 5 (
Angry
) Wam
sound plays- Emoticon called on this enemy with the
Exclamation
emote with 20 time - Yield all frames until
emoticoncooldown
expires StatUp
sound plays- StatEffect called on this enemy with type 4 (green up arrow)
- Yield for 0.5 seconds
charge
is 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:
Charge10
sound 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
StatUp
sound 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
playertargetentity
position + (1.5, 0.0, -0.1) with a 2.0 multiplier - Yield all frames until
forcemove
is done Rope2
sound plays with 1.1 pitch- animstate set to 100
- Yield for 0.65 seconds
- animstate set to 102
Rope2
sound playsDeath3
sound 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
) checkingdead
set to a new JumpPartyAttackCoroutine (checkingdead
is set to null when completed)- Yield all frames until
checkingdead
is null
This is what the coroutine ends up doing:
- ShakeSprite called with intensity of (0.1, 0.0, 0.0) and 30.0 frametimer
Grow1
sound plays with 0.8 pitch- Yield for 0.5 seconds
- Camera moves to look near
partymiddle
- animstate set to 103
Jump
sound playsLaunch
sound 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
Launch
sound playsExplosion5
sound plays- ShakeScreen called with an ammount of 0.2 and 0.5 time
impactsmoke
particles plays at this enemy position - 0.5 in x- PartyDamage 1 call happens
- Yield for 0.75 seconds
checkingdead
set to null which signals the caller that this coroutine completed