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
Magic
weakness 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
atk
value or disproportionally benefits positive CalculateBaseDamage effects as opposed to a higher baseatk
value. Also note: the / 1.15 ceiled operation effectively doesn't change anatk
value 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
'scharge
is 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
'scharge
is 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
atk
ofBee
/ 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
Bee
andMoth
have LockRigid(false) called on them withoverrideflip
set to true Bee
MoveTowards (-2.2, 0.0, -0.9) at 2.0x multiplier with a stopstate of 13 (BattleIdle
)Moth
MoveTowards (-3.65, 0.0, -1.55) at 2.0x multiplier with a stopstate of 13 (BattleIdle
)- Yield until
Bee
andMoth
'sforcemove
are done Bee
animstate set to 0 (Idle
)- DoCommand 1 happens
- Yield until
doingaction
goes to false Prefabs/Objects/BeerangBattle
is instantiated rooted- If
commandsuccess
is 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
commandsuccess
to 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
Bee
andMoth
decreases 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/BeerangBattle
moved offscreenBee
animstate set to 103Moth
animstate set to 111mothicenormal
particles plays at the world CenterPos oftarget
enemy party member - Vector3.upIceMothHit
sound plays- DoDamage 1 + 2x call happens (
Moth
as attacker) where x starts at 0 and increments after each cycle Moth
'scharge
set 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) Moth
animstate 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
doingaction
goes to false Toss
sound plays- If
commandsuccess
is 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
Toss2
sound plays onsounds[9]
with pitch 1.0 + 0.1 *combo
on loop (this sound will increase pitch after each DoDamage calls within this action)Bee
animstate set to 105- Over the course of the last DoCammand's
timer
value / 1.5 + 1.0 frames,Prefabs/Objects/BeerangBattle
moves fromBee
's position + 1.0 in y to the world CenterPos oftarget
enemy 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 (
Bee
as attacker) where x starts at 0 and increments after each cycle Bee
'scharge
set 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
timer
value + 1.0 frames,Prefabs/Objects/BeerangBattle
moves from the world CenterPos oftarget
enemy 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
doingaction
goes to false - If this is the last cycle,
Bee
animstate set to 13 (BattleIdle
). Otheriwse,mothicenormal
particles plays at the world CenterPos oftarget
enemy party member - 1.0 in y (uniform scale of 0.5x ifcommandsuccess
is false) - If
commandsuccess
is false refer to the section below whereMoth
's associated DoCommand fails which will breakout of this loop early and eventually end this action - If
target
enemy party member'shp
reached 0 or below:commandsuccess
is set to truetarget
enemy party member'sflip
is 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:
target
enemy party member'sflip
is 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)
Bee
animstate set to 106Moth
animstate set to 14 (Sleep
)Toss2
sound plays onsounds[9]
with pitch 0.9 on loopPrefabs/Objects/BeerangBattle
angles zeroed out- Over the course of 46.0 frames,
Prefabs/Objects/BeerangBattle
moves fromBee
's position + 1.0 in y to the world CenterPos oftarget
enemy 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 stoppedAtkFail
sound plays- DoDamage F1 call happens
target
enemy party member'sflip
is 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/BeerangBattle
is moved offscreenIceMothMiss
sound plays- DoDamage F2 call happens
Bee
animstate set to 11 (Hurt
)Moth
animstate set to 110- Yield for 1.0 seconds
IceShatter
particles plays atMoth
's position + 1.0 in yMoth
animstate 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/BeerangBattle
is destroyed- Yield for 0.5 seconds
- Camera resets to default
- Both
Bee
andMoth
MoveTowards their initial position before this action with 2.0x speed withoverrideflip
set to true - Yield until
Bee
andMoth
'sforcemove
are done - Both
Bee
andMoth
's positions are set to their initial position before this action withoverrideflip
set to false andflip
set to true - UpdateAnim is called
- MultiSkillMove is called with 0 and 2 (normally
Bee
andMoth
)