BeeTurret
¶
data
usage¶
At the start of the action, if data
is null or empty, it's initialised to be 1 element with a starting value of 0.
data[0]
: The amount of actor turns left before being about to use the delayed projectile move again after it was used. This value is set to 4 when the delayed projectile move is used and in the pre move logic, it is decremented if it is higher than 0. This means normally, 4 actor turns needs to pass between each delayed projectiles usage.
HardMode changes¶
HardMode being true does the following changes:
- In the delayed projectile move, the amount of main turns needed for the projectile to land changes to 1 from 2
- In the honey projectiles move, the speed of each projectiles changes to 40.0 from 45.0
- In the rocket projectiles move, the speed of each projectiles changes to 30.0 from 35.0
Move selection¶
3 moves are possible:
- A Multiple targets honey projectiles throw that hits twice
- A multiple targets rocket projectiles throw that hits twice
- Adds a single target Delayed projectile
The decision of which moves to use is based on the following odds:
Move | Odds |
---|---|
1 | 2/5 |
2 | 2/5 |
3 | 1/5 |
However, move 3 has the additional requirement that data[0]
has to be 0 after the pre move logic for the move to be used. If it's selected, but this requirement isn't fufilled, Move 1 will be used instead, but with one change: the Blosh
sound will be played instead of Clomp
like it normally would.
Pre move logic¶
The following logic always happen at the start of the actor turn:
- If
data[0]
is higher than 0, it is decremented
Move 1 - Honey projectiles throw¶
A multiple target honey projectiles 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 2 times, but each call can only happen if at least 1 player party member is alive (hp more than 0 and not eatenby) |
2 | Numb | This enemy | playertargetID after GetSingleTarget (target changes for each calls) |
A new GameObject childed to battlemap with a SpriteRenderer using the projectilepsrites[10] sprite (a honey projectile) with the spritemat material positioned at this enemy position + (-1.0, -1.0, 0.1) on layer 14 (Sprite ) with a SpriteBounce that has MessageBounce called on it with 3.0 multiplier |
35.0 (30.0 instead if hardmode is true) | 0.0 | null | ElecFast |
null | null | (0.0, 0.0, 20.0) | false |
Logic sequence¶
Clomp
sound plays. NOTE: If this moved is used as a result from selecting move 2 whendata[0]
wasn't 0,Blosh
sound plays instead- animstate set to 100
- Yield for 0.95 seconds
- A new array of 2 Transform is created to hold the projectiles
- For each projectiles to throw:
- If there is at least one alive player party member (
hp
above 0 and not EatenBy):- GetSingleTarget called
- animstate set to 102
Shot
sound plays- Projectile element initialized to a new GameObject childed to
battlemap
with a SpriteRenderer using theprojectilepsrites[10]
sprite (a honey projectile) with thespritemat
material positioned at this enemy position + (-1.0, -1.0, 0.1) on layer 14 (Sprite
) with a SpriteBounce that has MessageBounce called on it with 3.0 multiplier - Projectile 1 call happens
- Yield for 0.15 seconds
- If this isn't the last projectile:
- animstate set to 100
- Yield for 0.85 seconds
- If there is at least one alive player party member (
- Yield all frames until both projectiles are null (meaning all Projectile 1 calls completed)
- Yield for 0.5 seconds
Move 2 - Rocket projectiles throw¶
A multiple targets rocket projectiles 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 2 times, but each call can only happen if at least 1 player party member is alive (hp more than 0 and not eatenby) and that GetRandomAvaliablePlayer with nullable doesn't return -1 (if the first call returns -1, the second one won't happen) |
3 | null | This enemy | GetRandomAvaliablePlayer with nullable1 (target changes for each calls) | A new Prefabs/Objects/BeeRocket GameObject childed to battlemap positioned at this enemy position + (-1.25, 1.7, 0.1) with scale (0.5, 0.75, 1.0) on layer 14 (Sprite ) |
45.0 (40.0 instead if hardmode is true) | 4.0 | null | explosionsmall |
Explosion |
null | Vector3.zero | false |
1: This targetting scheme is broken. See the nullable GetRandomAvaliablePlayer documentation for more details.
Logic sequence¶
Blosh
sound plays- animstate set to 100
- Yield for 0.95 seconds
- A new array of 2 Transform is created to hold the projectiles
- For each projectiles to throw:
- If there is at least one alive player party member (
hp
above 0 and not EatenBy):- GetRandomAvailablePlayer called. If it returns -1, this will be seen as the last projectile and this one will not be thrown (skips to the next Yield)
- animstate set to 103
b33BotInstantMissle
sound plays- Projectile element initialized to a new
Prefabs/Objects/BeeRocket
GameObject childed tobattlemap
positioned at this enemy position + (-1.25, 1.7, 0.1) with scale (0.5, 0.75, 1.0) on layer 14 (Sprite
) - Projectile 1 call happens
- Yield for 0.15 seconds
- If this isn't the last projectile:
- animstate set to 100
- Yield for 0.85 seconds
- If there is at least one alive player party member (
- Yield all frames until both projectiles are null (meaning all Projectile 1 calls completed)
- Yield for 0.5 seconds
Move 3 - Delayed projectile¶
Adds a single target Delayed projectile. No damages are dealt.
nonphyscal
set to true¶
This move always sets nonphyscal
to true which doesn't affect aything for this move.
AddDelayedProjectile calls¶
# | Conditions | obj | targetpos | damage | turnstohit | areadamage | property | framespeed | summonedby | hitsound | hitparticle | whilesound |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Always happen | A new Prefabs/Objects/BeeRocket GameObject rooted positioned at (0.0, 20.0, 0.0), a scale of (0.75, 1.0, 1.0) and a z angle of -75.0 |
playertargetID after GetSingleTarget |
3 | 2 (1 instead if hardmode is true) | 0 | null | 70.0 | This enemy | null | explosion |
@MisseleFall |
Logic sequence¶
- GetSingleTarget called
- Camera moves to look near this enemy, but a bit up
- animstate set to 100
- Yield for a second
- animstate set to 104
b33BotRocketLaunchInAir
sound plays- A new
Prefabs/Objects/BeeRocket
GameObject rooted positioned at this enemy position + (0.0, 2.0, 0.2), a scale of (0.75, 1.0, 1.0) and a z angle of -85.0 - HitPart particles plays at the
Prefabs/Objects/BeeRocket
position - Over the course of 41.0 frames, the
Prefabs/Objects/BeeRocket
moves to (this enemy x position -1.0, 10.0, 0.0) via a SmoothLerp. After the first frame past 20.0 frames, animstate is set to 104 - The
Prefabs/Objects/BeeRocket
position is set to (0.0, 20.0, 0.0) - The
Prefabs/Objects/BeeRocket
z angle is set to 75.0 - AddDelayedProjectile call happens
data[0]
set to 4 meaning this move won't be usable until 4 more actor turns passes on this enemy