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:
battleposset 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) b33Shakesound plays- Yield for 0.8 seconds
b33BotRisingFromGroundsound plays- Over the course of 51.0 frames,
heightchanges to the y component of a BeizierCurve3 from Vector3.zero to (0.0,initialheight, 0.0) with a ymax ofinitialheight* 2 heightset toinitialheightbobrangeandbobspeedset tostartbfandstartbsrespectively- 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
B33BotMalfunctionsound 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) b33BotCrackingsound 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/beebossindex 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
B33BotHatchOpensound plays- Yield for 0.75 seconds
- animstate set to 106
- A new
Prefabs/Objects/BeeRocketGameObject 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/BeeRocketposition b33BotRocketLaunchInAirsound plays- Over the course of 41.0 frames, the
Prefabs/Objects/BeeRocketmoves 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/BeeRocketposition set to (0.0, 20.0, 0.0)Prefabs/Objects/BeeRocketz 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
B33BotHatchOpensound plays- Yield for 0.65 seconds
- animstate set to 103
- Yield for a frame
animgets disabledb33BotLasersound 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/LazerGameObject 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/Lazergets destroyed in 0.15 seconds - Done 4 times:
b33BotLaserExplosionssound plays with a pitch of 1.0 + 0.1 * the index of this iteration starting at 0ExplosionPillarparticles played at a specific lerp between this enemy -1.0 in x andpartymiddlewhere the factor is the (this iteration index starting at 1) / 4 (each gets closer topartymiddlewith 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
animis enabled- animstate set to 104
- PartyDamage 1 called
- Yield for 0.5 seconds
Click2sound 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
B33BotHatchOpensound 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
animgets 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
b33BotSummonNoisesound 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]stoppedb33BotInstantMisslesound plays- The projectile element is set to a new
Prefabs/Objects/BeeRocketGameObject 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
hpis 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
b33BotSummonNoisesound plays usingsounds[5]with 1.3 pitch- Yield for 0.5 seconds
sounds[5]stopped
animenabled- animstate set to 104
- Yield all frames until all projectiles elements are null (all Projectile calls completed)
- Yield for 0.5 seconds
Click2sound 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
b33BotSummonNoisesound plays- Yield for 0.5 seconds
checkingdeadset to a new SummonEnemy call to summon a BeeBot enemy with typeOffscreenNoAnimat (0.6, 0.0, -0.75)- Yield all frames until
checkingdeadis 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
b33BotChargept1sound 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)
chargeincrementedbasestateand 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¶
heightset to 0- animstate set to 23 (
Chase) - y position increased by
heightvalue before this action b33BotChargept1sound 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
b33BotChargept2sound 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 b33BotChargept3sound 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:
BigHitsound plays- PartyDamage 1 call happens
- ShakeScreen called with 0.5 ammount and 0.35 time
- position set to (30.0, 0.0, 0.0)
heightset 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)