IceSphere¶
This is a MultiSkillMove with Bee, Beetle and Moth and as such, it is assumed that the attacker is one of them and it also means that post-action won't consume their actor turns like normal.
DoCommand calls¶
| # | Conditions | timer | commandtype | data | 
|---|---|---|---|---|
| 1 | None | 275.0 | SequentialKeys | {6.0, 1.0} | 
| 2 | None | 53.3333321 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} | 
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block | 
|---|---|---|---|---|---|---|---|
| 1 | Done for each enemy party member that fufills these conditions: 
 | null | The enemy party member | GetMultiDamage with Bee,BeetleandMoth(halved ceiled if DoCommand 2 setcommandsuccessto false) * (barfillif it's 0.9 or higher otherwise, takebarfill* 0.8 clamped from 0.25 to 1.0) ceiled clamped from 2 to 99 | Freeze | empty array | false | 
DamageWithinPos calls¶
| # | Conditions | playerid | damageammount | property | radius | xonly | 
|---|---|---|---|---|---|---|
| 1 | DoCommand 2 set commandsuccessto true and the Confirm input was pressed to explode the iceball. The iceball's position is effectively used as the position sinceBee's position is set to it (see the section below for details) | 0 ( Bee) | GetMultiDamage with Bee,BeetleandMoth(halved ceiled if DoCommand 2 setcommandsuccessto false) / 2.0 * (barfillif it's 0.9 or higher otherwise, takebarfill* 0.8 clamped from 0.25 to 1.0) clamped from 1.0 floored | Freeze | 3.0 | false | 
Iceball rolling logic¶
The damaging logic of this action is affected by an iceball rolling to the right towards the enemy party and by its optional explosion that the player can trigger.
How it works is a Prefabs/Objects/IceSphere gets instantiated and after a bunch of animation logic (after DoCommand 2), it ends up being rooted at (-4.5, 1.75 * x + 0.25 * (1.0 - x), 0.0) where x is barfill if it's 0.9 or higher otherwise, it's barfill * 0.8 clamped from 0.25 to 1.0.
From there, over the course of 81.0 frames (101.0 frames instead if DoCommand 2 set commandsuccess to false), the iceball will move to 10.0 in x via a lerp. During this move, this is where DoDamage 1 call can take effect if the iceball's position + 1.0 goes past an enemy party member's position (they still need to respect some other conditions as the DoDamage table above shows).
However, during the move, the player can at any point interrupt it by pressing the Confirm input when past 34.0 frames. This is only available if DoCommand 2 set commandsuccess to true. This is optional: the player may decide to not press the input and let the iceball move all the way to 10.0 in x.
If it is pressed, the iceball immediately stops, Bee's position is set to the iceball's position and DoDamageWithinPos 1 call happens. Since Bee's position is the same as the iceball's for that moment, the iceball's position is what is going to be used as the position to compare the radiuses and determine which enemy party members is affected.
Logic sequence¶
- BeeMoveTowards (-4.5, 0.0, 0.0) at 2.0x speed
- BeetleMoveTowards (-8.2, 0.0, 0.0) at 2.0x speed
- MothMoveTowards (-6.45, 0.0, -0.85) at 2.0x speed
- Camera is set to look at at the left side of the stage
- Yield until Bee,BeetleandMoth'sforcemoveare done
- Bee,- Beetleand- Mothhave LockRigid(true) called on them with- overrideflip,- overrideanim,- overideflyand- flipset to true
- Mothanimstate set to 105
- Beeanimstate set to 11 (- Hurt)
- Prefabs/Objects/IceSphereinstantiated rooted with a scale of Vector3.zero and stored in a local named iceball with its first child named bsrpite which is rooted and moved offscreen
- IceRadiusparticles played at- Bee's position + Vector3.up infinetly with 7.0x uniform scale chiled to- Bee's- sprite
- iceball gets childed to Bee'ssprite
- OverworldIcesound plays
- mothicenormalparticles plays without sound at- Bee's position + 1.0 in y for 3.0 alivetime and 3500 rendersort
- iceball local position set to Vector3.up
- Bee's- bobrangeset to 1.0
- DoCommand 1 call happens
- Spinsound plays on- sounds[9]with 0.5 pitch on loop
- Yield until doingactiongoes to false. Before each frame yield:- A value is calculated being the lerp from the previous value of barfillclamped from 0.25 to 1.0 (starting at 0.0) to its current value clamped from 0.25 to 1.0 with a factor of 1/10th of the game's frametime. This controls progression throughbarfill
- Bee's y- spinset to 20.0 * the- barfillprogression value
- iceball scale set to a lerp from Vector3.zero to Vector3.one * 200.0 with a factor of the barfillprogression value clamped from 0.5 to 1.0
- Bee's- heightset to a lerp from the existing one to 2.5 with a factor of 0.0075 * the game's frametime
- IceRadius's ParticleSystem's emmision's rateOverTime set to a lerp from 1.0 to 20.0 with a factor of the- barfillprogression value
- sounds[9]'s pitch set to a lerp from 0.5 to 0.75 with a factor of- barfill
- instance.camoffsetset to a lerp fromdefaultcamoffsetto (0.0, 2.5, -11.0) with a factor of thebarfillprogression value
 
- A value is calculated being the lerp from the previous value of 
- sounds[9]is stopped
- The corrected barfillamount is calculated by taking its value (or the value * 0.8 if it's less than 0.9) and clamping it from 0.25 to 1.0
- iceball's scale set to uniform 200.0x * the corrected barfillvalue clamped from 0.5 to 1.0
- instance.camoffsetset to (0.0, 3.2, -9.85)
- IceRadiusmoved offscreen and destroyed in 5.0 seconds
- iceball gets rooted
- bsprite gets childed to the iceball with a scale of Vector3.zero
- Beeis moved offscreen
- Freezesound plays
- mothicenormalparticles plays without sound at bsprite's position + Vector3.one for 3.0 alivetime and 3500 rendersort with a scale of uniform 2.0x * the corrected- barfillvalue
- Yield for 0.5 seconds
- Beetlehas LockRigid(false) called on them
- Beetle's- overrideflipset to true
- BeetleMoveTowards (-9.5, 0.0, 0.0) with a stopstate of 116
- Charge7sound plays at 0.7 pitch
- Over the course of max 81.0 frames (or until the DoCommand 2 call is done with doingactiongoing false after it started), the iceball moves to its position + 2.0 in y via a BeizierCurve3 with a ymax of 8.0. Before each frame yield, the following happens:- If Beetle'sforcemoveis done, it gets ShakeSprite called with 0.1 intensity and 1.0 frametimer
- Beetleanimstate set to 116
- Yield for an additional extra frame
- If DoCommand 2 call didn't happened yet and we are past 32.0 frames, DoCommand 2 call happens
 
- If 
- Beetle's- spritelocal position is reset to Vector3.zero
- Beetlehas LockRigid(true) called on them
- Mothanimstate set to 102
- If commandsuccessis true,PingShotsound plays at 0.9 pitch. Otherwise,Beetleanimstate set to 105
- Over the course of 16.0 frames (26.0 frames instead if commandsuccessis false), iceball moves in y to 1.75f * x + 0.25f * (1f - x) where x is the correctedbarfillvalue andBeetlemoves to the iceball initial position before this move -1.0 in x (0.0 for y and z)
- ShakeScreen with an ammount of 0.2 * the corrected barfillvalue for 0.5 time with dontreset
- A SpinAround gets added to iceball
- Camera reset to default
- hitpart(the particles) plays at- Beetle's position
- If commandsuccessis true:- iceball's SpinAround's itselfset to (-10.0, -3.0, -8.0) * the correctedbarfillvalue
- BigHitsound plays
 
- iceball's SpinAround's 
- Otherwise:- iceball's SpinAround's itselfset to (-10.0, -3.0, -8.0) * the correctedbarfillvalue / 3.0
- Beetleanimstate set to 18 (- KO)
- DeathSmoke particles plays at Beetle's position
- Damage0sound plays
 
- iceball's SpinAround's 
- If commandsuccessis true:- Beetlemoves to its position + (-1.5, 0.0, 0.0) via an ArcMovement with a height of 3.0 over 40.0 frametime
- presskeyset to 4 (Confirm)
- If the corrected barfillvalue is higher than 0.6, a ButtonSprite is SetUp with thepresskeyinput childed to theGUICamerawith a local positon of (0.0, 2.0, 10.0) and a sortorder of 10. The ButtonSprite is disabled for now
 
- spin5sound plays on- sounds[9]with 1.5 pitch and 0.9 volume on loop
- Yield for a frame
- Over the course of 81.0 frames (101.0 frames instead if commandsuccessis false), the iceball moves to (10.0, its current y position, 0.0). During the move:- If commandsuccessis true and we are past 24 frames:- The ButtonSprite gets enabled
- The ButtonSprite's basesprite's color is set to grey or white (white if Sin(Time.time * 20.0) is higher than 0.0, grey otherwise)
- If presskey(Confirm) is pressed, the iceball moves breaks out early and the explosion damage will happen
 
- DoDamage 2 call happens for each applicable enemy party members if they hadn't received the call yet
 
- If 
- The ButtonSprite is destroyed
- Beetleand- Mothanimstate set to 13 (- BattleIdle)
- sounds[9]is stopped
- Explosion5sound plays
- IceShatterparticles plays at the iceball with a scale of uniform 3.0x
- Bee's position is set to the iceball's
- The iceball is destroyed
- If the Confirm input press was accepted earlier:- ShakeScreen for 0.3 ammount and 1.25 time with dontreset
- mothicenormalparticles played at- Bee's position + 1.0 in y with scale of uniform 4.0 * corrected value of- barfill
- DamageWithinPos 1 call happens
 
- Otherwise (commandsuccesswas false or no Confirm input was pressed), ShakeScreen for 0.2 ammount for 0.75 time with dontreset
- Bee's y- spinset to 30.0
- Bee's- heightset to 0.0
- Over the course of 61.0 frames, Beemoves to their initial position before this action via a BeizierCurve3 with a ymax of 7.0
- Beeanimstate set to 18 (- KO)
- Bee's- spinis zeroed out
- DeathSmoke particles played at Bee's position
- Death3sound plays
- Yield for 0.5 seconds
- Bee,- Beetleand- Mothhave LockRigid(false) called on them, they MoveTowards their initial position before this action with a 2.0x speed with- overrideflip,- overrideanim,- overridejumpand- overideflyset to false
- Yield until Bee,BeetleandMoth'sforcemoveare done
- Bee,- Beetleand- Mothhave their- flipset to true and their position set to their initial one before this action
- UpdateAnim is called
- Yield for a frame
- MultiSkillMove is called with 0, 1 and 2 (normally Bee,BeetleandMoth)