MothflyCluster
¶
HardMode changes¶
HardMode being true does the following changes:
- In the aerial strike move, the amount of frames this enemy takes to reach its target changes to 11.0 frames from 17.0 frames
Move selection¶
2 moves are possible:
- A single target aerial strike
- Summons 2 new Mothfly enemies
Move 2 is always (and only) used when this enemy is the last enemydata
remaining.
If move 2 wasn't used, move 1 is always used.
Pre move logic¶
The following logic is always done at the start of the actor turn if position is Ground
:
checkingdead
is set to a new ChangePosition call to set the position toFlying
(checkingdead
set to null when completed)- Yield all frames until
checkingdead
is null
Move 1 - Aerial strike¶
A single target aerial strike.
DoDamage calls¶
# | Conditions | attacker | target | damageammount | property | overrides | block |
---|---|---|---|---|---|---|---|
1 | Always happen | This enemy | playertargetID after GetSingleTarget |
3 | null | null | commandsuccess |
Logic sequence¶
- GetSingleTarget called
- Camera moves to look near
playerdata[playertargetID]
, but zoomed in - MoveTowards
playerdata[playertargetID]
+ (3.0, 0.0, -0.1) with 2.0 multiplier - Yield all frames until
forcemove
is done - animstate set to 11 (
Hurt
) - ShakeSprite called with 0.1 intensity and 30.0 frametimer
Charge19
sound plays- Yield for 0.5 seconds
- animstate set to 100
Toss13
sound plays- Over the course of 17.0 frames (11.0 frames instead if hardmode is true), this enemy moves to
playertargetentity
+ (0.5, 0.0 -height
+ 0.5, -0.1) via a lerp - ShakeScreen called with 0.075 ammount and 0.5 time with dontreset
- DoDamage 1 call happens
- Yield for 0.25 seconds
- Over the course of 21.0 frames, this enemy moves to
playerdata[playertargetID]
+ (2.0, 0.0, -0.1) via a lerp
Move 2 - Summons 2 Mothfly¶
Summons 2 new Mothfly enemies. No damages are dealt.
Logic sequence¶
- MoveTowards (4.0, 0.0, 0.0) with 2.0 multiplier
- Yield all frames until
forcemove
is done Toss11
sound plays- startp set to this enemy position except for the y component which is set to 0.0
checkingdead
set to a new SummonMothFly coroutine (checkingdead
is set to null when it completes)- Yield all frames until
checkingdead
is null
This is what the SummonMothfly coroutine ends up doing:
- Camera moves to look near this enemy, but zoomed in
- animstate set to 11 (
Hurt
) rotater
gets a SpriteBounce added with 0.0frequency
and 20.0speed
- Over the course of 31.0 frames, the
rotater
's SpriteBounce'sfrequency
changes to 0.1 via a lerp - Yield for 0.5 seconds
- The
rotater
's SpriteBounce gets destroyed rotater
scale increased by 30%PingDown
sound plays- Done 2 times:
- AddNewEnemy called to a new Mothfly enemy at this enemy + (0.0,
height
, 0.1) - Yield a frame
- The
enemydata[lastaddedid]
gets some adjustements:maxhp
andhp
: divided by 2 flooredexp
: 0money
: 0- y
spin
: 20.0
- AddNewEnemy called to a new Mothfly enemy at this enemy + (0.0,
- Over the course of 31.0 frames,
rotater
scale changes to its original value before this coroutine via a lerp and the 2 new enemies that were just summoned moves from this enemy position to (x
, 0.0, -0.1) via a BeizierCurve3 with a ymax of 4.0 wherex
is 1.0 for the first enemy and 7.0 for the second enemy rotater
scale is set to its value before this coroutine- Both enemies who were just summoned has their
spin
zeroed out checkingdead
is set to null which signals the caller that this coroutine completed