WaspHealer¶
MainManager.GetEXP special logic¶
This enemy features special exp handling logic. Check the documentation to learn more.
HardMode changes¶
HardMode being true does the following changes:
- In the needles throw move, the property of all the Projectile calls is always Poison instead of only being
Poisonwith a 6/10 chance and null with a 4/10 chance - In the needles throw move, the damage is always 1 instead of being 2 (3 instead if instance.
areaidis theRubberPrisonorMetalLakeareas) - In the needles throw move, the speed is 10.0 instead of 15.0
- In the needles throw move, the yield time between each hits is 0.35 seconds instead of being 0.25 seconds
- In the aerial strike move, the amount of frames this enemy takes to reach its target from near the target is 9.0 frames instead of 11.0 frames
Move selection¶
3 moves are possible:
- A single target aerial needles throw that hits twice
- A single target aerial strike
- Summons another
WaspHealerenemy and change position toGround.
The decision of which move to use is based on the following odds:
| Move | Odds |
|---|---|
| 1 | 2/4 |
| 2 | 1/4 |
| 3 | 1/4 |
However, in order for move 3 to actually be used, the following conditions needs to be fufilled after selecting it:
- This enemy is alone in
enemydata locktriis false (meaning it hasn't summoned before and it wasn't a summonedWaspHealer)
If the move was selected, but the conditions above aren't fufilled, move 2 is used instead.
Move 1 - Needles throw¶
A single target aerial needles throw that hits twice.
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.
Projectile calls¶
| # | Conditions | damage | property | attacker | playertarget | obj | speed | height | extraargs | destroyparticle | audioonhit | audiomoving | spin | nosound |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Always happen from 2 times |
|
null (Poison instead if hardmode is true) | This enemy | playertargetID after GetSingleTarget (target is the same for all calls) |
A new GameObject childed to battlemap with a SpriteRenderer using the projectilepsrites[2] sprite (a needle) with the spritemate material (if hardmode is true color is set to pure magenta) positioned at this enemy's sprite + (-1.5, 0.25, -0.1) with a z angle of -45.0 on layer 14 (Sprite) |
15 (10 if hardmode is true) | 0.0 | null | null | null | null | Vector3.zero | false |
Logic sequence¶
checkingdeadset to a new ChangePosition call on this enemy to change its position toFlying(checkingdeadis set to null when completed)- Yield until
checkingdeadis null - GetSingleTarget called
- Camera moves to look near
playerdata[playertargetID] - MoveTowards
playertargetentityposition + (3.25, 0.0, -0.25) with a 2.0 multiplier - Yield all frames until
forcemoveis done - animstate set to 100
- Yield for 0.4 seconds
- A new Transform array of 2 elements is created to contain each needles
- Done 2 times for each needle to throw:
Tosssound plays- animstate set to 102
- Needle element initialized to a new GameObject childed to
battlemapwith a SpriteRenderer using theprojectilepsrites[2]sprite (a needle) with thespritematematerial (if hardmode is true color is set to pure magenta) positioned at this enemy'ssprite+ (-1.5, 0.25, -0.1) with a z angle of -45.0 on layer 14 (Sprite) - Projectile 1 call happens
- Yield for 0.25 seconds (0.35 instead if hardmode is true)
- If this is the last needle:
- animstate set to 100
- Yield for 0.4 seconds
- Yield all frames until all the needles array elements are null (meaning all Projectile calls completed)
- animstate set to 0 (
Idle) - Yield for 0.5 seconds
Move 2 - 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 (4 instead if instance.areaid is the RubberPrison or MetalLake areas) |
null | null | commandsuccess |
Logic sequence¶
checkingdeadset to a new ChangePosition call on this enemy to change its position toFlying(checkingdeadis set to null when completed)- Yield until
checkingdeadis null - GetSingleTarget called
- Camera moves to look near
playerdata[playertargetID] - MoveTowards
playertargetentityposition + (3.25, 0.0, -0.25) with a 2.0 multiplier - Yield all frames until
forcemoveis done - animstate set to 101
heightset to 0.0- y position increased by the
heightvalue before this action BugWingFastsound plays- Over the course of 31.0 frames, this enemy moves + 1.25 in x via a BeizierCurve3 with a ymax of -1.5
- ShakeSprite called with intensity (0.1, 0.0, 0.0) and 30.0 frametimer
- Yield for 0.5 seconds
- animstate set to 105
trailset to trueWoosh2sound plays- Over the course of 11.0 frames (8.0 frames instead if hardmode is true), this enemy moves to
playertargetentityposition + (0.75, 0.75, -0.1) via a lerp - ShakeScreen called with an ammount of 0.05 and time of 0.2
- DoDamage 1 call happens
- Yield for 0.35 seconds
- animstate set to 104
- Over the course of 11.0 frames, this enemy moves to
playertargetentityposition + (2.0,heightvalue of this enemy before this action, -0.2) via a lerp trailset to falseheightset to the value before this action- y position set to 0.0
Move 3 - Summons another WaspHealer¶
Summons another WaspHealer enemy and change position to Ground. No damages are dealt.
nocharm set to true¶
This move always set the nocharm local to true which will prevent any UseCharm calls to occur in the post action phase. This means no HealHP charm can occur after this action.
Logic sequence¶
checkingdeadset to a new ChangePosition call on this enemy to change its position toGround(checkingdeadis set to null when completed)- Yield until
checkingdeadis null - animstate set to 106
- Yield for 0.3 seconds
Whistlesound plays with 0.9 pitch and 0.7 volumecheckingdeadset to a new SummonEnemy call to summon a newWaspHealerwith anOffscreentype at a random location between (0.25, 0.0, -0.75) and (7.0, 0.0, 0.75) where the distance between any enemy party member is less than itssize* 1.75 with cantmove (meaning the enemy needs to wait on the next main turn to act)- Yield for 0.85 seconds
- animstate set to 0 (
Idle) locktriset to true (prevents from using this move again)enemydata[lastaddedid]'slocktriset to true which prevents the summoned enemy from using this move. NOTE: It is technically possible that the summoning hasn't completed yet, but the previous yield makes it very unlikely in practice- Yield until
checkingdeadis null (the coroutine completed)