KeyR and KeyL¶
NOTE: Both
KeyRandKeyL, while different enemies, they share the exact same action logic so they are documented together.
Fire damage infliction logic in CalculateBaseDamage¶
This enemy cannot be on fire meaning any Fire property damages will not inflict the Fire condition.
HPBarOnOther special logic¶
This enemy has special logic in a method called HPBarOnOther which is used by RefreshEnemyHP to know if the hpbar should be shown despite this enemy not being spied yet. It returns true if EverlastingKing was spied which is needed because it's not possible under normal gameplay to spy this enemy, but it is possible to spy EverlastingKing. This means that this logic allows this enemy's hpbar to be displayed by spying EverlastingKing.
HardMode changes¶
HardMode being true does the following changes:
- In the aerial spinning strike move, the ForceMove call's frametime before the DoDamage call changes to 17.0 from 23.5
Move selection¶
2 moves are possible:
- A single target laser attack
- A single target aerial spinning strike
The decision of which move to use is based on the following odds:
| Move | Odds |
|---|---|
| 1 | 49% |
| 2 | 51% |
Pre move logic¶
The following logic always happen before using a move if position is Ground to change it to Flying:
- Over the course of 31.0 frames,
heightchanges fromminheighttoinitialheightvia a lerp - position is set to
Flying
Move 1 - Laser attack¶
A single target laser attack.
nonphyscal set to true¶
This move always sets nonphyscal to true which affects the effects of the FrostBite, SpikeBod and PoisonTouch medal if equipped on the target.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | playertargetID after GetSingleTarget |
2 | Pierce1 | null | commandsuccess |
1: Enemy piercing damages are disabled so this property does nothing, see the CalculateBaseDamage documentation to learn more
Logic sequence¶
- GetSingleTarget called
walkstateset to 0 (Idle)bobspeedset to 0.0- MoveTowards
playertargetentityposition + (3.0, 0.0, -0.1) with a 3.0 multiplier using 100 as the walkstate and stopstate - Camera moves to look near the midpoint between
playertargetentityandforcetarget - Yield all frames until
forcemoveis done - animstate set to 100
- A new
Prefabs/Particles/ChargingGameObject is instantiated childed to thespritewith a local position of -1.0 in y and a z angle of -45.0 - Yield for 0.5 seconds
- Yield for 0.25 seconds
Shotsound playsPrefabs/Particles/Charging's position set to offscreen at 999.0 in y then destroyed in 5.0 secondsLazerparticles plays at this enemy position with -1.0 alivetime then gets childed to thespritewith a local position of -1.0 in y and a x angle of 90.0- DoDamage 1 call happens
- Over the course of 41.0 frames, the
Lazerparticles x and y scale changes to 0.0 via a lerp Lazerparticles gets destroyed- animstate set to 0 (
Idle) bobspeedset to the value before this action
Move 2 - Aerial spinning strike¶
A single target aerial spinning 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
walkstateset to 0 (Idle)bobspeedset to 0.0Spinsound plays on loop usingsounds[9]- animstate set to 100
spritez angle set to -70.0- y
spinset to 30.0 - ForceMove called on this enemy to move them to + 1.5 in x with 30.0 framtime without changeanim
- Yield all frames until
forcemovingis done - Yield for 0.25 seconds
- Camera moves to look near
playerdata[playertargetID] trailset to truesounds[9]stoppedShot2sound plays- ForceMove called on this enemy to move them to
playertargetentityposition + (0.25, 1.0 -height, -0.1) with 23.5 framtime (17.0 instead if hardmode is true) without changeanim - Yield all frames until
forcemovingis done - DoDamage 1 call happens
- SetDefaultCamera called
trailset to falsespriteangles reset to Vector3.zerospinset to (0.0, 0.0, 30.0)- Over the course of 41.0 frames, this enemy moves to startp via a BeizierCurve3 with a ymax of 6.0
spinzeroed out- animstate set to 0 (
Idle) bobspeedset to the value before this action