IceBeemerang¶
This is a MultiSkillMove with Bee and Moth and as such, it is assumed that the attacker is either one and it also means that post-action won't consume their actor turns like normal.
NOTE: This action is unique in the sense that it is the only MultiSkillMove that doesn't involve GetMultiDamage and instead uses the regular damage pipeline directly. This creates unique circumstances in which some issues arises in CalculateBaseDamage where the user of the move and the attacker sent to DoDamage may be different and lead to unexpected behaviors. Also, this action is excluded to benefit from the
Magicweakness bonus in CalculateBaseDamage. For more information, check the CalculateBaseDamage documentation.
DoCommand calls¶
| # | Conditions | timer | commandtype | data |
|---|---|---|---|---|
| 1 | None | 60.0 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 2 | DoCommand 1 set commandsuccess to true |
60.0 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 3 | DoCommand 2 set commandsuccess to true |
54.5454521 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 4 | DoCommand 3 set commandsuccess to true |
60.0 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 5 | DoCommand 4 set commandsuccess to true |
54.5454521 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 6 | DoCommand 5 set commandsuccess to true |
60.0 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 7 | DoCommand 6 set commandsuccess to true |
54.5454521 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 8 | DoCommand 7 set commandsuccess to true |
60.0 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 9 | DoCommand 8 set commandsuccess to true |
54.5454521 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 10 | DoCommand 9 set commandsuccess to true |
47.0 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 11 | DoCommand 10 set commandsuccess to true |
42.727272 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
| 12 | DoCommand 11 set commandsuccess to true |
34 | PressKeyTimer | {Random integer (cast to float) between 4 and 6 (Confirm, Cancel or Switch input)} |
DoDamage calls¶
NOTE: The clampings done in the damageammount columns can incorrectly remove the influence of negative
atkvalue or disproportionally benefits positive CalculateBaseDamage effects as opposed to a higher baseatkvalue. Also note: the / 1.15 ceiled operation effectively doesn't change anatkvalue from 0 to 7, but it will it increase by 1 for a value of -2 or -1 and decrease it by 1 for a value of 8 or 9.
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | DoCommand 1 set commandsuccess to true |
Moth's player party member |
availabletargets[target] |
Moth's atk / 1.15 ceiled clamped from 0 to 99 |
Freeze | {NoSound} | false |
| 2 | DoCommand 2 set commandsuccess to true |
Bee's player party member |
availabletargets[target] |
Bee's atk / 1.15 ceiled clamped from 0 to 99 |
null | empty array | false |
| 3 | DoCommand 3 set commandsuccess to true |
Moth's player party member |
availabletargets[target] |
Moth's atk / 1.15 ceiled - 1 clamped from 0 to 99 |
Freeze | {NoSound} | false |
| 4 | DoCommand 4 set commandsuccess to true |
Bee's player party member |
availabletargets[target] |
Bee's atk / 1.15 ceiled - 1 clamped from 0 to 99 |
null | empty array | false |
| 5 | DoCommand 5 set commandsuccess to true |
Moth's player party member |
availabletargets[target] |
Moth's atk / 1.15 ceiled - 2 clamped from 0 to 99 |
Freeze | {NoSound} | false |
| 6 | DoCommand 6 set commandsuccess to true |
Bee's player party member |
availabletargets[target] |
Bee's atk / 1.15 ceiled - 2 clamped from 0 to 99 |
null | empty array | false |
| 7 | DoCommand 7 set commandsuccess to true |
Moth's player party member |
availabletargets[target] |
Moth's atk / 1.15 ceiled - 3 clamped from 0 to 99 |
Freeze | {NoSound} | false |
| 8 | DoCommand 8 set commandsuccess to true |
Bee's player party member |
availabletargets[target] |
Bee's atk / 1.15 ceiled - 3 clamped from 0 to 99 |
null | empty array | false |
| 9 | DoCommand 9 set commandsuccess to true |
Moth's player party member |
availabletargets[target] |
Moth's atk / 1.15 ceiled - 1 clamped from 1 to 99 - 4 clamped from 0 to 99 |
Freeze | {NoSound} | false |
| 10 | DoCommand 10 set commandsuccess to true |
Bee's player party member |
availabletargets[target] |
Bee's atk / 1.15 ceiled - 1 clamped from 1 to 99 - 4 clamped from 0 to 99 |
null | empty array | false |
| 11 | DoCommand 11 set commandsuccess to true |
Moth's player party member |
availabletargets[target] |
Moth's atk / 1.15 ceiled - 2 clamped from 1 to 99 - 5 clamped from 0 to 99 |
Freeze | {NoSound} | false |
| 12 | DoCommand 12 set commandsuccess to true |
Bee's player party member |
availabletargets[target] |
Bee's atk / 1.15 ceiled - 2 clamped from 1 to 99 - 5 clamped from 0 to 99 |
null | empty array | false |
| F1 | DoCommand 1*, 2, 4, 6, 8, 10 or 12 set commandsuccess to false |
Bee's player party member |
availabletargets[target] |
1 | null | empty array | false |
| F2 | DoCommand 3, 5, 7, 9 or 11 set commandsuccess to false |
Moth's player party member |
availabletargets[target] |
1 | null | empty array | false |
*: It is unexpected for F1 to happen instead of F2 if DoCommand 1 set commandsuccess to false because Moth would have attacked first, not Bee
Custom charge reset logic¶
- After DoDamage 1 (if it occurs),
Moth'schargeis set to 0. The same happen with DoDamage 3, 5, 7, 9 or 11, but they don't influence the logic since the value was already set to 0 - After DoDamage 2 (if it occurs),
Bee'schargeis set to 0. The same happen after DoDamage 4, 6, 8, 10 or 12, but they don't influence the logic since the value was already set to 0
Logic sequence¶
- Camera moves +1.5 in x towards the left side of the stage
- The
atkofBee/ 1.15 ceiled andMoth/ 1.15 ceiled are saved in a local array which will be refered to as their "rounded base atk" from now on - Both
BeeandMothhave LockRigid(false) called on them withoverrideflipset to true BeeMoveTowards (-2.2, 0.0, -0.9) at 2.0x multiplier with a stopstate of 13 (BattleIdle)MothMoveTowards (-3.65, 0.0, -1.55) at 2.0x multiplier with a stopstate of 13 (BattleIdle)- Yield until
BeeandMoth'sforcemoveare done Beeanimstate set to 0 (Idle)- DoCommand 1 happens
- Yield until
doingactiongoes to false Prefabs/Objects/BeerangBattleis instantiated rooted- If
commandsuccessis false, refer to the section below when DoCommand 1 fails which will eventually end the action - Otherwise, the following is done up to 6 times (index tracked in reverse so it goes from 6 to 1) as long as DoCommand calls keep setting
commandsuccessto true (the first one that sets it to false causes a breakout early which will eventually end the action early):- If theres less than 3 cycles left:
- The rounded base atk of
BeeandMothdecreases by 1 and then clamped from 1 to 99 - FinishAction is called manually (shouldn't do anything in practice)
- Yield for a frame
- The rounded base atk of
Prefabs/Objects/BeerangBattlemoved offscreenBeeanimstate set to 103Mothanimstate set to 111mothicenormalparticles plays at the world CenterPos oftargetenemy party member - Vector3.upIceMothHitsound plays- DoDamage 1 + 2x call happens (
Mothas attacker) where x starts at 0 and increments after each cycle Moth'schargeset to 0- Yield for 0.5 -
combo* 0.025 clamped from 0.0 to 1.0 seconds (this wait gets shorter as more DoDamage call happens within this action) Mothanimstate set to 102- Yield for 0.1 seconds
- DoCommand 2 + 2x call happens where x starts at 0 and increments after each cycle
- Yield for a frame
- Yield until
doingactiongoes to false Tosssound plays- If
commandsuccessis false, refer to the section below whereBee's associated DoCommand fails which will breakout of this loop early and eventually end this action - Yield for 0.1 seconds
Toss2sound plays onsounds[9]with pitch 1.0 + 0.1 *comboon loop (this sound will increase pitch after each DoDamage calls within this action)Beeanimstate set to 105- Over the course of the last DoCammand's
timervalue / 1.5 + 1.0 frames,Prefabs/Objects/BeerangBattlemoves fromBee's position + 1.0 in y to the world CenterPos oftargetenemy party member. During the move, the object z angle is set to framestep * 10.0 + 2.0 *combo(meaning it rotates faster after each DoDamage call within this action) - DoDamage 2 + 2x call happens (
Beeas attacker) where x starts at 0 and increments after each cycle Bee'schargeset to 0- FinishAction is called manually (shouldn't do anything in practice)
- Yield for 0.1 seconds
- If this isn't the last cycle, DoCommand 3 + 2x call happens where x starts at 0 and increments after each cycle
- Over the course of the first DoCammand call of this cycle's
timervalue + 1.0 frames,Prefabs/Objects/BeerangBattlemoves from the world CenterPos oftargetenemy party member toBee's position + 1.0 in y via a BeizierCurve3 with a ymax of 8.0. During the move, the object z angle is set to framestep * -10.0 - 2.0 *combo(meaning it rotates faster after each DoDamage call within this action) sounds[9]is stopped- Yield until
doingactiongoes to false - If this is the last cycle,
Beeanimstate set to 13 (BattleIdle). Otheriwse,mothicenormalparticles plays at the world CenterPos oftargetenemy party member - 1.0 in y (uniform scale of 0.5x ifcommandsuccessis false) - If
commandsuccessis false refer to the section below whereMoth's associated DoCommand fails which will breakout of this loop early and eventually end this action - If
targetenemy party member'shpreached 0 or below:commandsuccessis set to truetargetenemy party member'sflipis set to false- Refer to the ending section below where the action will be ended early
- FinishAction is called manually (shouldn't do anything in practice)
- Yield for a frame
- If theres less than 3 cycles left:
- Once all cycles are done without a breakout early:
targetenemy party member'sflipis set to false- Refer to the ending section below where the action will be ended early
DoCommand 1, 2, 4, 6, 8, 10 or 12 set commandsuccess to false¶
This happens whenever a Bee related action command is failed and it causes the action to end early:
- FinishAction is called manually (shouldn't do anything in practice)
Beeanimstate set to 106Mothanimstate set to 14 (Sleep)Toss2sound plays onsounds[9]with pitch 0.9 on loopPrefabs/Objects/BeerangBattleangles zeroed out- Over the course of 46.0 frames,
Prefabs/Objects/BeerangBattlemoves fromBee's position + 1.0 in y to the world CenterPos oftargetenemy party member via a BeizierCurve3 with a ymax of 8.0. During the move, the object's z angle is set to framestep * 10.0 sounds[9]is stoppedAtkFailsound plays- DoDamage F1 call happens
targetenemy party member'sflipis set to false- Refer to the ending section below where the action will be ended early
DoCommand 3, 5, 7, 9 or 11 set commandsuccess to false¶
This happens whenever a Moth related action command is failed and it causes the action to end early:
Prefabs/Objects/BeerangBattleis moved offscreenIceMothMisssound plays- DoDamage F2 call happens
Beeanimstate set to 11 (Hurt)Mothanimstate set to 110- Yield for 1.0 seconds
IceShatterparticles plays atMoth's position + 1.0 in yMothanimstate set to 13 (BattleIdle)- Refer to the ending section below where the action will be ended early
Ending¶
All branches ends here eventually:
Prefabs/Objects/BeerangBattleis destroyed- Yield for 0.5 seconds
- Camera resets to default
- Both
BeeandMothMoveTowards their initial position before this action with 2.0x speed withoverrideflipset to true - Yield until
BeeandMoth'sforcemoveare done - Both
BeeandMoth's positions are set to their initial position before this action withoverrideflipset to false andflipset to true - UpdateAnim is called
- MultiSkillMove is called with 0 and 2 (normally
BeeandMoth)