BeeBoss
¶
data
usage¶
At the start of the action, if data
is null or empty, it's initialised to be 4 element with a starting value of 0.
data[0]
: The amount of actor turns left before being able to use the summon move again after it was just used. When the move is used, the value is set to 3 meaning this enemy cannot use the summon move for the next 3 actor turns (the missiles throw move will be used instead if selected). The value is decremented in the pre move logicdata[1]
: The amount of actor turns left before being able to launch a delayed projectile in the post move logic again after one was just launched. When a delayed projectile is launched, the value is set to 4 meaning this enemy cannot launch another delayed projectile for the next 4 actor turns. The value is decremented in the pre move logicdata[2]
: This is set to 1 when the phase transition occurs in the pre move logiic when HPPercent reaches lower than 0.6 so it prevents the transition to happen againdata[3]
: A counter that is set to 3 when the charge move is used and gets decremented if it was above 0 in the post move logic on every actor turns except when the charged dash attack move is used. The charge move requires this value to be at 0 to be used again which effectively means that when the charge move is used, it will not be used for the next 3 actor turns (the next one isn't counted and the next 2 won't have a charge usage because this value will be above 0). If the charge move is selected and this value is above 0, the missiles throw move will be used instead
StartBattle special logic¶
This enemy has some special logic that happens on StartBattle after they are loaded:
battlepos
set to (4.5, 0.0, 0.0)- position set to their
battlepos
HardMode changes¶
HardMode being true does the following changes:
- In the missiles throw move, the amount of missiles thrown changes to 3 from 2
- In the missiles throw move, the speed of each projectile changes to 40.0 from 50.0
- In the missiles throw move, the yield time between each throw changes to 0.65 seconds from 0.85 seconds
Move selection¶
5 moves are possible:
- A party wide laser attack
- A multiple targets missiles throw
- Summon a new BeeBot enemy
- Prepares an attack next turn which increments
charge
- A party wide charged dash attack
Move 5 will always be used (and can only be used) when basestate
isn't 0 (Idle
) or charge
is above 0 (meaning move 4 was used last actor turn).
As for other moves, the decision of which move to use is based on odds, but the odds changes depending if HPPercent is less than 0.5 or not. Additionally, some moves have additional requirements that needs to be fufilled upon selecting the move. If those requirements aren't fufilled when the move is selected, another move will be used instead.
Move | Odds when HPPercent >= 0.5 | Odds when HPPercent < 0.5 | Requirements | Move used when requirements failed |
---|---|---|---|---|
1 | 1/4 | 1/6 | None | N/A |
2 | 1/4 | 2/6 | None | N/A |
3 | 1/4 | 1/6 |
|
Move 2 |
4 | 1/4 | 2/6 |
|
Move 2 |
Pre move logic¶
There is logic that always happen at the start of the action. It's split in 3 parts that happens in the order mentioned.
Change of position to Flying
¶
The following logic always happen if position is Ground
:
- ShakeSprite called with intensity (0.15, 0.0, 0.0) and 50.0 frametimer
- animstate set to 0 (
Idle
) b33Shake
sound plays- Yield for 0.8 seconds
b33BotRisingFromGround
sound plays- Over the course of 51.0 frames,
height
changes to the y component of a BeizierCurve3 from Vector3.zero to (0.0,initialheight
, 0.0) with a ymax ofinitialheight
* 2 height
set toinitialheight
bobrange
andbobspeed
set tostartbf
andstartbs
respectively- position set to
Flying
data
cooldowns decrement¶
The following logic always happen:
- If
data[0]
is higher than 0, it is decremented (this is the summon move cooldown) - If
data[1]
is higher than 0, it is decremented (this is the delayed projectile cooldown)
Phase transition¶
The following logic always happen if data[2]
is 0 (this phase transition hasn't happened yet) and HPPercent is less than 0.65:
- animstate set to 108
B33BotMalfunction
sound plays- Done 3 times:
- ShakeSprite called with intensity (0.2, 0.2, 0.2) and 30.0 frametimer
- DeathSmoke particles plays at this enemy position + (0.0,
height
+ 1.5, -0.25) + a random vector between (-2.5, -0.75, 0.0) and (2.5, 0.75, 0.0) b33BotCracking
sound plays- Yield for 0.8 seconds if this isn't the last iteration
- SetCondition called to inflict the AttackUp condition on this enemy for 9999999 main turns (infinite)
- SetCondition called to inflict the DefenseDown condition on this enemy for 9999999 main turns (infinite)
- The sprite of the
model
's first child (their main body part) is set toSprites/Entities/beeboss
index 12 (a cracked body party) - The
model
's 6th child (weak smoke particles) has its ParticleSystem played data[2]
set to 1 (so this phase transition doesn't happen again)- Yield for 0.85 seconds
- animstate set to
basestate
- Yield for 0.3 seconds
Post move logic¶
There is logic that always happen after a move is used with the exception of move 5 being used (the charged dash attack) where none of the logic happens. It notably features a DelayedProjectile being launched.
AddDelayedProjectile calls¶
# | Conditions | obj | targetpos | damage | turnstohit | areadamage | property | framespeed | summonedby | hitsound | hitparticle | whilesound |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
|
A new Prefabs/Objects/BeeRocket GameObject rooted positioned at (0.0, 20.0, 0.0) with a z angle of 75.0 |
GetRandomAvaliablePlayer with nullable1 | 4 | 3 | 0 | null | 60.0 | This enemy | Explosion3 |
explosion |
MisseleFall |
1: This targetting scheme is broken. See the nullable GetRandomAvaliablePlayer documentation for more details.
Logic sequence¶
- If
data[3]
is above 0, it is decremented (this is the cooldown for the charging move) - GetRandomAvaliablePlayer with nullable is called. If it returns -1, the action ends early
- Camera moves to look near this enemy, but a bit up
- animstate set to 105
B33BotHatchOpen
sound plays- Yield for 0.75 seconds
- animstate set to 106
- A new
Prefabs/Objects/BeeRocket
GameObject rooted positioned atmodel
's third child position (their front canon) + (-0.2, 0.8, -0.2) with a z angle of -85.0 - HitPart particles plays at the
Prefabs/Objects/BeeRocket
position b33BotRocketLaunchInAir
sound plays- 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 yield past 20.0 frames animstate set to 104 Prefabs/Objects/BeeRocket
position set to (0.0, 20.0, 0.0)Prefabs/Objects/BeeRocket
z angle set to 75.0- AddDelayedProjectile 1 call happens
data[1]
set to 4 (this is the cooldown for launching another delayed projectile)
Move 1 - Laser attack¶
A party wide 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.
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¶
- Camera moves to look near the midpoint between this enemey and
partymiddle
- animstate set to 102
B33BotHatchOpen
sound plays- Yield for 0.65 seconds
- animstate set to 103
- Yield for a frame
anim
gets disabledb33BotLaser
sound plays- Done 2 times:
model
's second or third child (their front or back canon)'s z angle set to 75.0. The front canon is changed on the first iteration and the back one is changed on the second- A new
Prefabs/Particles/Lazer
GameObject is instantiated childed to the matching canon with a local postion of (-1.0, 0.0, 0.0), a y angle of -95.0 and their ParticleSystem's main module's startLifetime set to a 15.0 constant curve - The
Prefabs/Particles/Lazer
's ParticleSystem's MainModule is fast forwarded via Simulate for 20.0 seconds
- Yield for 0.2 seconds
- Over the course of 26.0 frames, both canon's z angle changes from 75.0 to 10.0 via LerpAngle
- Both
Prefabs/Particles/Lazer
gets destroyed in 0.15 seconds - Done 4 times:
b33BotLaserExplosions
sound plays with a pitch of 1.0 + 0.1 * the index of this iteration starting at 0ExplosionPillar
particles played at a specific lerp between this enemy -1.0 in x andpartymiddle
where the factor is the (this iteration index starting at 1) / 4 (each gets closer topartymiddle
with equidistance between the lerp factors)- ShakeScreen called with ammount of 0.05 * this iteration index starting at 1 and 0.2 time
- Yield for 0.2 seconds if this isn't the last iteration
anim
is enabled- animstate set to 104
- PartyDamage 1 called
- Yield for 0.5 seconds
Click2
sound plays
Move 2 - Missiles throw¶
A multiple targets missiles throw.
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 (3 times instead if hardmode is true), but the call and each subsequent ones won't happen if GetRandomAvaliablePlayer with nullable returns -1 | 2 | null | This enemy | GetRandomAvaliablePlayer with nullable1 (target changes for each calls) | A new Prefabs/Objects/BeeRocket GameObject rooted positioned at this enemy's front canon position (back canon instead if it's the second call) + (-1.0, 0.5, -0.2) with scale (0.5, 0.75, 1.0) |
50.0 (40.0 instead if hardmode is true) | 4.0 | null | deathsmoke |
Explosion |
null | Vector3.zero | false |
1: This targetting scheme is broken. See the nullable GetRandomAvaliablePlayer documentation for more details.
Logic sequence¶
- Camera moves to look near the midpoint between this enemey and
partymiddle
- animstate set to 100
B33BotHatchOpen
sound plays- Yield for 0.65 seconds
- The amount of hits is determined which is always 2 (3 instead if hardmode is true)
- animstate set to 101
- Yield for a frame
anim
gets disabled- A new array of GameObject is created with the length being the amount of hits to do to hold the projectiles
- A new sprite object is created rooted using the
guisprites[93]
sprite (a crosshair) positioned offscreen at 99.0 in y with a pure green color on layer 15 (3DUI
) - For each hits to do:
- GetRandomAvaliablePlayer with nullable is called
- If it didn't returned -1 (a valid target was found):
- The crosshair scale is set to 3x
- GradualScale happens on the crosshair towards 1x with 15.0 frametime without destroy
b33BotSummonNoise
sound plays usingsounds[5]
with 1.3 pitch- The crosshair position is set to the target player party member's position + (0.0, 1.5, 0.1)
- Yield for 0.1 seconds
sounds[5]
stoppedb33BotInstantMissle
sound plays- The projectile element is set to a new
Prefabs/Objects/BeeRocket
GameObject rooted positioned at this enemy's front canon position (back canon instead if it's the second call) + (-1.0, 0.5, -0.2) with scale (0.5, 0.75, 1.0) - HitPart particles plays at the projectile position
- Projectile 1 call happens
- Yield for 0.85 seconds (0.65 seconds instead if hardmode is true)
- Otherwise (no target was found), for each player party members whose
hp
is 0:- The crosshair position is set to the player party member's position + (0.0, 1.0, 0.1)
- The crosshair scale is set to 3x
- GradualScale happens on the crosshair towards 1x with 15.0 frametime without destroy
b33BotSummonNoise
sound plays usingsounds[5]
with 1.3 pitch- Yield for 0.5 seconds
sounds[5]
stopped
anim
enabled- animstate set to 104
- Yield all frames until all projectiles elements are null (all Projectile calls completed)
- Yield for 0.5 seconds
Click2
sound plays- The crosshair is destroyed
Move 3 - BeeBot summon¶
Summon a new BeeBot enemy. No damages are dealt.
nonphyscal
set to true¶
This move always sets nonphyscal
to true which doesn't affect anything for this action.
Logic sequence¶
- animstate set to 107
b33BotSummonNoise
sound plays- Yield for 0.5 seconds
checkingdead
set to a new SummonEnemy call to summon a BeeBot enemy with typeOffscreenNoAnim
at (0.6, 0.0, -0.75)- Yield all frames until
checkingdead
is null (the coroutine completed) - animstate set to 0 (
Idle
) data[0]
set to 3 (this is the cooldown to use this move again)
Move 4 - Prepares a big attack with 1 charge
¶
Prepares an attack next turn which increments charge
. No damages are dealt.
dontusecharge
set to true¶
This move always sets dontusecharge
to true which means charges
will not get zeroed out in post action.
nonphyscal
set to true¶
This move always sets nonphyscal
to true which doesn't affect anything for this action.
Logic sequence¶
- animstate set to 107
b33BotChargept1
sound plays- ShakeSprite called with intensity (0.1, 0.0, 0.0) and 40.0 frametimer
- Yield for 0.75 seconds
- StatEffect called on this enemy with type 4 (green up arrow)
charge
incrementedbasestate
and the local startstate set to 107 (this is what will allow to use move 5 on the next actor turn which is the charged dash attack)data[3]
set to 3 (this is the cooldown to use this move again)- Yield for 0.5 seconds
Move 5 - Dash attack¶
A party wide charged dash attack.
PartyDamage¶
# | Conditions | caller | damage | property | block | jumpheight | spinammount | jumpevenonblock | overrides |
---|---|---|---|---|---|---|---|---|---|
1 | Always happen | This enemy | 4 | null | commandsuccess |
20.0 | (0.0, 30.0, 0.0) | false | {NoDamageAnim} |
Logic sequence¶
height
set to 0- animstate set to 23 (
Chase
) - y position increased by
height
value before this action b33BotChargept1
sound plays- Over the course of 61.0 frames, this enemy moves to its current position + (1.0, -0.5, 0.0) via a BeizierCurve3 with a ymax of -1.5
b33BotChargept2
sound plays- ShakeSprite called with intensity (0.15, 0.0, 0.0) and 60.0 frametimer
- Yield for a second
model
's 6th children's ParticleSystem (a thrust below on the right of their main body part) is playedmodel
's 5th children's ParticleSystem (a thrust below their main body part) is stopped- The first
shadow
's ParticleSystem is stopped b33BotChargept3
sound plays- Over the course of 61.0 frames, this enemy moves to (-30.0, 0.0, 0.0) via a SmoothLerp. On the first frame that this enemy x position becomes less than -4.5:
BigHit
sound plays- PartyDamage 1 call happens
- ShakeScreen called with 0.5 ammount and 0.35 time
- position set to (30.0, 0.0, 0.0)
height
set to the value before this action- animstate set to 0 (
Idle
) - Over the course of 61.0 frames, this enemy moves to startp via a SmoothLerp
model
's 6th children's ParticleSystem (a thrust below on the right of their main body part) is stoppedmodel
's 5th children's ParticleSystem (a thrust below their main body part) is played- The first
shadow
's ParticleSystem is played basestate
, animstate and the local startstate set to 0 (Idle
) which will prevent this move to be used again until move 4 is used (charge and prepare)