Delilah
¶
Assumptions¶
It is assumed this enemy is fought with them and Stratos only in the enemy party as they strongly interact together. If this assumption isn't respected, exceptions may be thrown.
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 times the LongLegSummoner equivalent action move and any moves among the support items set were used (see the move selection section below for details). The value is incremented each time any of these moves are used and once it reaches 10, the usage of these moves are no longer allowed. Essentially, it's a hard limit to this enemy where they cannot use any of these moves more than 10 times combined in the entire battledata[1]
: A lock on the usage of any moves from the support items move selection set (see the move selection section below for details). When the value is 1, it prevents these move to be used. The value is always reset to 0 in the post move logic. The lock is never activated by this enemy, but rather by Statos which sets it to 1 when they use their enemy party healing movedata[2]
: This value does nothing. It was intended to act similarly to Stratos'sdata[1]
which is a revive move usage deterant, but the value is never incremented even when delilah uses their equivalent move. It means this deterant never activates and they always have a 70% chance to use the move if all other conditions are satisfied instead of lowering the chances to 30% after 3 usage of the movedata[3]
: A cooldown on the usage of any moves among the support items set (see the move selection section below for details). When any of these move is used (except for the ClearBomb equivalent action move), the value is set above 0. On every actor turns that these moves aren't used (except for the ClearBomb equivalent action move where this applies), the value is decremented in the post move logic. For any of these moves to become usable again, the value must be 0 or below. Essentially, it's an actor turn antispam where the moves among the support items set can't be used again until x amount of actor turns passes where x is this value. As for the exact value set by each of these moves, it depends on the move itself:- The Stratos healing move with GradualHP sets it to 2
- The AttackUp and DefenseUp conditions infliction move on Stratos sets it to 1
- The ClearStatus move on Stratos sets it to 1
- The
moreturnnextturn
increment move on Stratos sets it to 1 - The ClearBomb equivalent action move doesn't set the value to anything, but it will still cause a decrement on it in the post move logic and the move is still among the ones that this value restricts the usage of
- The enemy party healing move sets it to 2
- The Stratos reviving move sets it to 2
Move selection¶
11 moves are possible:
- A multiple targets bazooka projectiles throws in multiple sets that have varying effects
- A single target multiple hits dart throws that may inflict Poison or Sleep
- A single target dash attack followed by an
hp
draining attack - A single target attack involving the same effects as the LongLegSummoner action where the target is a player party member
- Heals Stratos by 6
hp
and gives them the GradualHP condition for 3 main turns - Gives Stratos the AttackUp and DefenseUp conditions for 3 main turns (effectively 2 since the current main turn gets advanced soon)
- Cures Stratos's negative conditions with ClearStatus
- Increments Stratos's
moreturnnextturn
giving them an additional actor turn on the next main turn - Does the equivalent of the ClearBomb action which clears every actor's conditions via ClearStatus
- Heals 15
hp
and calls ClearStatus on themselves and Stratos - Revives Stratos leaving them at 7
hp
Moves 5 through 11 belongs in a special sets of move that have their own move selection process. Since all of them involves simulating the usage of an items without doing damages, the move selection for them will be refered to as the support items move selection while the other moves will be refered to as the standard move selection.
Support items move selection¶
To have a chance to use move 5 through 11, all of the following conditions must be fufilled:
data[1]
is 0 (Stratos didn't set a lock on this enemy using these moves which happens when they used their enemy party healing move)- This enemy doesn't have the Sticky condition
data[0]
is less than 10 (this enemy hasn't reached its limit of using these moves and move 4)turns
is above 0 (at least 1 main turns passed since the start of the battle)data[3]
is 0 or below (the cooldown for being able to use these moves expired)
If all of the above are fufilled, it is now possible that move 5 through 11 is used. However, each must go through a complex selection process to see if a move will be used among them. It is still possible that none of these moves are used. If this happens, this enemy will falback to the standard move selection process.
Move 11 is checked first and it will be used if all of the following conditions are fufilled:
- Stratos isn't present in
enemydata
(they died) - A 70% RNG check passes. NOTE: there is dead logic where the odds could have changed to 30% instead if
data[2]
is at least 3, butdata[2]
is always 0 meaning the odds always are 70% (see thedata
section as to whatdata[2]
was supposed to do)
If move 11 was decided to not be used, move 5 through 10 can only be used if Stratos is still present in enemydata
. If that's the case, this move selection process continues, but if it's not, this enemy falbacks to the standard move selection process.
If we continue, move 10 is checked next. It's only used if all of the following conditions are fufilled:
If neither move 10 or 11 are used, move 5 through 9 are considered next, but only if a 37.5% RNG check passes. If it fails, this enemy falbacks to the standard move selection process.
If it passes, the decision of which moves to use among 5 through 9 is based on odds, but each have additional requirements that must be fufilled once the move is selected for the move to be actually used. If the move is selected, but the requirements aren't fufilled, this enemy falbacks to the standard move selection process. Here is a table with all these informations for each of these moves:
Move | Odds | Requirements |
---|---|---|
5 | 4/18 | Stratos's HPPercent is below 0.75 |
6 | 3/18 | Both of the following has to be true: |
7 | 5/18 | At least 1 of the following has to be true: |
8 | 3/18 | Stratos's moves is 1 (meaning they haven't yet gone through their phase transition) |
9 | 3/18 | PartyIsBuffed with a cutoff of 3 returns true (see the section below for details, this is logically broken and has several caveats) |
Move 9's requirements is special since it involves a method specifically for this move, but the method is logically broken.
About move 9 and PartyIsBuffed¶
Move 9 affects every actors in the battle by removing a lot of conditions and effects that are either positive or negative to them. It means that this enemy shouldn't want to use this move if it would negatively impact the enemy party more than benefit from it.
The method PartyIsBuffed was supposed to the determine if this is the case. It attempts to use multiple heuritstics to see if the player party has more positive effects (such as conditions or charge
) than the enemy party.
private bool PartyIsBuffed(int cutoff)
Its intent was that it would use a number starting at 0 and perform the following on it for each positive or negative effects applied on each actor:
- Increase the number for each positive effect applied on each player party member
- Decrease the number for each negative effect applied on each player party member
- Increase the number for each negative effect applies on each enemy party member
- Decrease the number for each positive effect applies on each enemy party member
Once all this is done, the method would have returned true if the final number is higher than the cutoff parameter (here, it's always 3) and it would have returned false otherwise. This was the likely intended logic: it would tell if there's slighly more positive effects from performing move 9 or if there isn't enough reasons to use it.
However, step 3 and 4 aren't done correctly due to a programming error. Instead of counting each effect on enemy party members, it counts the effects applied on the playerdata
who shares an enemydata
index. Effectively, it means that:
playerdata[0]
(should beBee
)'s effects will be counted instead ofenemydata[0]
(should be Stratos)playerdata[1]
(should beBeetle
)'s effects will be counted instead ofenemydata[1]
(should be this enemy)
The only exception to this are the enemy party member's charge
where these are counted correctly.
This drastically complexify what this method ACTUALLY does, but the end result is still the same: the final number is compared to the cutoff and the return is true if it's higher or false if it's not. It means however that the vast majority of the enemy party's effects aren't counted correctly which affects the logic. For the most part, it means that for a typical party under normal gameplay (Bee
, Beetle
and Moth
in that order), Moth
's effects are the only ones that gets counted on the player party side since Bee
and Beetle
gets counted twice, but with the opposite effects so they get cancelled. It also means that except for charge
, no effects is actually counted for the enemy party members.
The following table can be used to determine the final result considering all of this broken logic. A note about conditions check however: since when this method is invoked, the current main turn ends very soon, these checks involves the main turn counter on the condition being higher than 1. This is because if it was 1, it would expire very soon which means the condition isn't very useful to consider here.
As a reminder, the initial value of the result is 0 and the cutoff passed is 3 under normal gameplay:
Condition | Effect on result |
---|---|
playerdata[2] (should be Moth ) has the AttackUp condition with more than 1 main turn left on it (Bee and Beetle having it doesn't count) |
+ 1 |
playerdata[2] (should be Moth ) has the DefenseUp condition with more than 1 main turn left on it (Bee and Beetle having it doesn't count) |
+ 1 |
A player party member has a charge above 0 |
+ (charge + 1) applied for each applicable player party members |
An enemy party member has a charge above 0 |
- (charge + 1) applied for each applicable enemy party members |
A player party member has the Inked condition with more than 1 main turn left on it | -2 applied for each applicable player party member |
playerdata[2] (should be Moth ) has the Numb condition with more than 1 main turn left on it (Bee and Beetle having it doesn't count) |
- 1 |
playerdata[2] (should be Moth ) has the Freeze condition with more than 1 main turn left on it (Bee and Beetle having it doesn't count) |
- 1 |
playerdata[2] (should be Moth ) has the Fire condition with more than 1 main turn left on it (Bee and Beetle having it doesn't count) |
- 2 |
playerdata[2] (should be Moth ) has the Poison condition with more than 1 main turn left on it (Bee and Beetle having it doesn't count) |
- 1 |
A player party member has the Sticky condition with more than 1 main turn left on it | -2 applied for each applicable player party member |
playerdata[2] (should be Moth ) has the GradualHP condition with more than 1 main turn left on it (Bee and Beetle having it doesn't count) |
+ 1 |
playerdata[2] (should be Moth ) has the GradualTP condition with more than 1 main turn left on it (Bee and Beetle having it doesn't count) |
+ 1 |
Standard move selection¶
This move selection applies to move 1 through 4 and it happens if it was determined that the support items move selection won't apply for any reasons.
The decision of which moves to use is based on odds, but those odds changes depending on if this enemy has the Inked condition or not. Here are the odds in either situations:
Move | Odds when not Inked | Odds when Inked |
---|---|---|
1 | 4/13 | Never used |
2 | 3/13 | Never used |
3 | 5/13 | 1/2 |
4 | 1/13 | 1/2 |
However, move 4 has additional requirements that must all be fufilled for the move to actually be used once selected:
- This enemy doesn't have the Sticky condition
turns
is above 0 (at least 1 main turn passed since the start of the battle)data[0]
is below 10 (this enemy hasn't yet reached its limit on the usage of this move and any amoing the support items moves)
If the move is selected, but the requirements above aren't fufilled, another move is used instead depending on if this enemy has the Inked condition:
- If it has it, move 3 is used
- If if doesn't have it, move 1 is used
Pre move logic¶
The following logic is always done before the usage of a move if HPPercent is less than 0.5 and moves
is 1 (meaning this phase transition hasn't happened yet).
When the above is fufilled, this enemy goes into a phase transition where they get 2 actor turns per main turn including the current one:
Charge18
sound plays with 1.1 pitch- y
spin
set to 10.0 - animstate set to 4
ItemGet
- Yield for 0.5 seconds
spin
zeroed out- StatEffect called with type 5 (yellow up arrow)
StatUp
sound plays- animstate set to the local startstate
- Yield for 0.5 seconds
moves
set to 2 andcantmove
is decremented which gives 2 actor turn per main turn to this enemy including the current one
Post move logic¶
The following logic is always done after the usage of a move:
- If the move that was used belongs in a certain set,
data[3]
is decremented (the cooldown for the usage of the moves used in the support items move selection). The set of moves this applies are the following:- Bazooka projectiles move
- Darts throws move
- Dash attack and
hp
drain move - LongLegSummoner equivalent action move
- ClearBomb equivalent action move (this move belongs in the support items move selection, but it will still cause the decrement to happen instead of setting the value above 0 like other moves from the support items move selection)
data[1]
is set to 0 (clears the lock set by Stratos on moves used in the support items move selection)
Move 1 - Bazooka projectiles throws¶
A multiple targets bazooka projectiles throws in multiple sets that have varying effects.
This move throws projectils in 3 or 4 sets. Each set has 1 or 3 hits depending on the set itself. Each set has a unique property and amount of hits to do with other additional changes such as the base damage amount and other visual changes. See the information on the Projectile 1 call below to learn their selection odds and their specific effects.
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 1 or 3 times per set depending on the set selected (it's 1 time except if the set has the Ink or Sticky property where it's 3 times) The amount of sets is random between 3 and 4 inclusive. Each sets requires that at least 1 player party member is alive (hp above 0 and not eatenby). If the entire player party becomes dead during the set, the calls still happens, but the target doesn't change between calls until the end of the set where no more calls will happen |
Depends on the property of the set:
|
The set determines the value which is determined randomly among the following weighthed odds:
|
This enemy | playertargetID after GetSingleTarget (target changes for each calls except when the player party died during the set) |
A new sprite object rooted positioned at startp + (-1.0, 2.2, -0.1). The sprite, its scale and color depends on the property of the set:
|
Random between 35 and 44 inclusive unless property is Ink or Sticky where it's random between 25 and 34 inclusive instead |
5.0 unless property is Ink or Sticky where it's random between 6.0 and 8.0 instead |
keepcolor |
Depends on the property of the set:
|
Depends on the property of the set:
|
null | (0.0, 0.0, 20.0) | false |
Logic sequence¶
- animstate set to 107
WaspKingAxeThrowCatch
sound plays with 0.9 pitch- Yield for a second
- The amount of sets of hits to do is determined. It's random between 3 and 4 inclusive. A new SpriteRenderer array is created with this amount as the length to hold the projectiles objects (NOTE: this is technically wrong because it's the amount of sets and not the amount of hits per set, but it's guaranteed to contain enough anyway so it's safe still)
- For each sets of hits to do, if there's at least 1 player party member is alive (
hp
above 0 and not eatenby):- GetSingleTarget called
- The set is determined. They will be identified by the property they will have on the Projectile 1 call and the amounts of hits in the set. The set is determined randomly with weighted odds:
- null (1 hit): 2/15
Ink
(3 hits): 4/15Sticky
(3 hits): 3/15Freeze
(1 hit): 2/15Poison
(1 hit): 2/15Fire
(1 hit): 2/15
b33BotInstantMissle
sound plays with 1.1 pitch- For each hit in the set:
- If this isn't the first hit (and only) hit,
b33BotInstantMissle
sound plays with a pitch of 1.325 if it's the second hit or 1.4 if it's the third hit - The projectile element is set to a new sprite object as described in the Projectile 1 call above depending on the property of the set
- Projectile 1 call happens with the determined set
- MainManager.MoveTowards called to move this enemy from startp + 0.5 in x to startp with 20.0 frametime without smooth and without caller (done in paralel)
- DeathSmoke particles plays at the projectile sprite position
- If this isn't the last hit of the set, animstate is set to 110. Otherwise, it's set to 109
- Yield for a random interval betweem 0.65 and 1.0 seconds if there's only 1 hit in the set or between 0.3 and 0.5 seconds if there's more than 1 hit in the set
- If there's still at least 1 player party member is alive (
hp
above 0 and not eatenby), GetSingleTarget is called
- If this isn't the first hit (and only) hit,
- If this isn't the last set, animstate is set to 108
- Yield for a frame
- Yield all frames until all projectiles elements are null (all Projectile 1 calls completed)
Move 2 - Darts throws with potential Poison or Sleep infliction¶
A single target multiple hits dart throws that may inflict Poison or Sleep.
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 2 times (4 times instead if HPPercent is less than 0.65) | 3 | Poison or Sleep determined randomly with uniform odds | This enemy | playertargetID after GetSingleTarget (target is the same for each calls) |
A new sprite object rooted using the PoisonDart item sprite if property is Poison or the NumbDart item sprite if property is Sleep positioned at this enemy + (-0.5, 1.25, -0.1) with a z angle of -15.0 |
20.0 | 0.0 | null | null | null | null | Vector3.zero | false |
Logic sequence¶
Gleam
particles plays with theGleam
sound at this enemy + (0.3, 2, -0.1) with 0.5 alivetime- Yield for 0.5 seconds
- GetSingleTarget called
- Camera moves to look near (-1.75, 0.0, 1.6)
- MoveTowards (2.25, 0.0, -0.5) with a 2.0 multiplier
- Yield all frames until
forcemove
is done - animstate set to 103
- Yield for 0.5 seconds
Jump
sound playsSpin2
sound plays on loop usingsounds[5]
with 1.2 pitch- animstate set to 102
- y
spin
set to 20.0 - MainManager.MoveTowards called on this enemy to move them to (1.35, 2.5, -0.5) with 40.0 frametime without smooth and without local (done in paralel)
- Yield 0.5 seconds
- Yield 0.25 seconds
spin
zeroed outsprite
angle set to FlipAnglesounds[5]
stopped- The amount of hits is determined. It's 2 unless HPPercent is below 0.65 where it's 4 instead. A new SpriteRenderer array is created with this amount as the length to hold the projectiles objects
- For each hit to do:
Toss
sound playsSpin10
sound plays- The property of the Projectile 1 call is determined randomly with uniform odds between Poison and Sleep
- animstate set to 111
- The projectile element is set to a new sprite object rooted using the
PoisonDart
item sprite if property isPoison
or theNumbDart
item sprite if property isSleep
positioned at this enemy + (-0.5, 1.25, -0.1) with a z angle of -15.0 - Projectile 1 call happens
- If this isn't the last hit:
- Yield for 0.5 seconds
Move 3 - Dash attack followed by hp
drain attack¶
A single target dash attack followed by an hp
draining attack.
DoDamage calls¶
# | Conditions | attacker | target | damageammount | property | overrides | block |
---|---|---|---|---|---|---|---|
1 | Always happen | This enemy | playertargetID after GetSingleTarget |
4 | null | null | commandsuccess |
2 | Always happen after DoDamage 1 | This enemy | The same target as DoDamage 1 | 3 | null | null | commandsuccess |
Logic sequence¶
- GetSingleTarget called
- Camera moves to look near (-1.75, 0.0, 1.6)
- MoveTowards (2.25, 0.0, -0.5) with a 2.0 multiplier
- Yield all frames until
forcemove
is done - animstate set to 103
- Yield for 0.5 seconds
Jump
sound playsSpin2
sound plays on loop usingsounds[5]
with 1.2 pitch- animstate set to 102
- y
spin
set to 20.0 - MainManager.MoveTowards called on this enemy to move them to (1.35, 2.5, -0.5) with 40.0 frametime without smooth and without local (done in paralel)
- Yield 0.5 seconds
- Yield 0.25 seconds
spin
zeroed outsprite
angle set to FlipAnglesounds[5]
stoppedtrail
set to true- animstate set to 104
- Camera moves to look near
playerdata[playertargetID]
FastWoosh
sound plays- Over the course of 21.0 frames, this enemy moves to
playerdata[playertargetID]
position + (0.75, 0.75, -0.1) via a lerp trail
set to false- This enemy position set to
playerdata[playertargetID]
position + (0.35, 0.85, -0.1) - DoDamage 1 call happens
sprite
gets a SpriteBounce added on it with a MessageBounce using a 1.0 multiplier and aspeed
of 15.0- animstate set to 105
- Done 3 times:
Kiss
sound plays with 1.1 pitch- Yield for 0.33 seconds
- DoDamage 2 call happens
- The SpriteBounce of the
sprite
gets destroyed sprite
scale reset to 1.0x- Heal called to heal this enemy by
lastdamage
amount ofhp
- SetDefaultCamera called
- animstate set to 106
- z
spin
set to -15.0 trail
set to trueSpin3
sound plays with 0.9 pitch- Over the course of 41.0 frames, this enemy moves to startp + 0.25 in y via a BeizierCurve3 with a ymax of 8.0
trail
set to falsespin
zeroed outsprite
angles reset to Vector3.zero- animstate set to 0 (
Idle
) - SetAnimForce called
Move 4 - LongLegSummoner equivalent action¶
A single target attack involving the same effects as the LongLegSummoner action where the target is a player party member.
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.
dontusecharge
set to true¶
This move always sets dontusecharge
to true which means charge
will not get zeroed out in post action. This doesn't effectively do anything because this enemy cannot get charge
normally.
DoDamage calls¶
# | Conditions | attacker | target | damageammount | property | overrides | block |
---|---|---|---|---|---|---|---|
1 | Always happen | null | playerdata[playertargetID] after GetSingleTarget |
6 | Flip1 | empty array | commandsuccess |
1: This property gets overriden to null in CalculateBaseDamage as the target is a player party member so it does nothing.
Logic sequence¶
data[0]
is incremented (amount of times this this move and the support items moves were used)ItemHold
sound plays- animstate set to 4 (
ItemGet
) - A new sprite object is created rooted using the
LonglegSummoner
item sprite positioned at this enemy position + theiritemoffset
- Yield for a second
- The
LonglegSummoner
sprite gets destroyed - GetSingleTarget called
checkingdead
is set to a new LongLeg coroutine withplayerdata[playertargetID]
as the target from this enemy which will do similar logic than the player action version- Yield all frames until
checkingdead
is null (the coroutine completed)
Here is what the coroutine ends up doing:
- Camera moves slowly towards the target slightly to the left, up and behind
- animstate set to 28 (
TossItem
) - A new sprite is created rooted using the
LonglegSummoner
item's sprite positioned at this enemy + (0.25, 2.25, -0.1) Toss
sound plays- Over the course of 51.0 frames, the sprite moves to the target position + (1.5, 0.0, 1.25) via a BeizierCurve3 with a ymax of 5.0. Before each frame yield, the sprite's z angle is increased by 10.0 * MainManager.
framestep
- animstate reset to the value before this action
LongLegsGrow
sound playsPrefabs/Objects/LongLegs
instantiated offscreen with 0.0x scale- DeathSmoke particles plays at the sprite position
- The sprite is destroyed
- Yield for a frame
Prefabs/Objects/LongLegs
position set to where the sprite was before its destruction- Over the course of 31.0 frames, the
Prefabs/Objects/LongLegs
moves to + 4.75 in y via a SmoothLerp and its scale changes to (1.0, 1.0, -1.0) via a SmoothLerp - The
Stomp
animation clip plays fromPrefabs/Objects/LongLegs
Grow1
sound plays- Yield for 0.75 seconds
- The
Stomp2
animation clip plays fromPrefabs/Objects/LongLegs
longLegsStomp
sound plays- Yield for 0.15 seconds
- DoDamage 1 call happens
- Yield for 0.75 seconds
- Over the course of 31.0 frames, the
Prefabs/Objects/LongLegs
moves to - 4.75 in y via a SmoothLerp and its scale changes to 0.0x via a SmoothLerp - DeathSmoke particles plays at the
Prefabs/Objects/LongLegs
position ChargeDown2
sound playsPrefabs/Objects/LongLegs
is destroyed- Yield for 0.5 seconds
checkingdead
is set to null which signals the caller that the coroutine is done
Move 5 - Heals Stratos by 6 hp
with GradualHP¶
Heals Stratos by 6 hp
and gives them the GradualHP condition for 3 main turns. No damages are dealt.
Logic sequence¶
ItemHold
sound plays- animstate set to 4 (
ItemGet
) - A new sprite object is created rooted using the
MiteBurg
item sprite positioned at this enemy position + theiritemoffset
- Yield for a second
- Heal called to heal
Stratos
by 6hp
- Yield for 0.5 seconds
Heal3
sound playsMagicUp
particles plays atStratos
's position- ClearStatus called on
Stratos
- SetCondition called to inflict the GradualHP condition on
Stratos
for 3 main turns data[3]
is set to 2 (the cooldown on the usage of this move and other moves from the support items set)- The
MiteBurg
sprite gets destroyed - This enemy animstate set to the local startstate
- Yield for 0.5 seconds
data[0]
is incremented (amount of times this this move, the LongLegSummoner equivalent action move and other support items moves one were used)
Move 6 - Gives Stratos the AttackUp and DefenseUp conditions¶
Gives Stratos the AttackUp and DefenseUp conditions for 3 main turns (effectively 2 since the current main turn gets advanced soon). No damages are dealt.
Logic sequence¶
ItemHold
sound plays- animstate set to 4 (
ItemGet
) - A new sprite object is created rooted using the
BerryShake
item sprite positioned at this enemy position + theiritemoffset
- Yield for a second
- StatusEffect called to inflict the AttackUp condition on
Stratos
for 3 main turns (effectively 2 since the current main turn advances soon) with effect - Yield for 0.5 seconds
- StatusEffect called to inflict the DefenseUp condition on
Stratos
for 3 main turns (effectively 2 since the current main turn advances soon) with effect data[3]
is set to 1 (the cooldown on the usage of this move and other moves from the support items set)- The
BerryShake
sprite gets destroyed - This enemy animstate set to the local startstate
- Yield for 0.5 seconds
data[0]
is incremented (amount of times this this move, the LongLegSummoner equivalent action move and other support items moves one were used)
Move 7 - ClearStatus on Stratos¶
Cures Stratos's negative conditions with ClearStatus. No damages are dealt.
Logic sequence¶
ItemHold
sound plays- animstate set to 4 (
ItemGet
) - A new sprite object is created rooted using the
ClearWater
item sprite positioned at this enemy position + theiritemoffset
- Yield for a second
Heal3
sound playsMagicUp
particles plays atStratos
's position- ClearStatus called on
Stratos
data[3]
is set to 1 (the cooldown on the usage of this move and other moves from the support items set)- The
ClearWater
sprite gets destroyed - This enemy animstate set to the local startstate
- Yield for 0.5 seconds
data[0]
is incremented (amount of times this this move, the LongLegSummoner equivalent action move and other support items moves one were used)
Move 8 - Increments Stratos's moreturnnextturn
¶
Increments Stratos's moreturnnextturn
giving them an additional actor turn on the next main turn. No damages are dealt.
Logic sequence¶
ItemHold
sound plays- animstate set to 4 (
ItemGet
) - A new sprite object is created rooted using the
HustleSeed
item sprite positioned at this enemy position + theiritemoffset
- Yield for a second
Heal3
sound plays- StatEffect called on
Stratos
with type 5 (yellow up arrow) Stratos
'smoreturnnextturn
incremented (this will give them an additional actor turn on the next main turn)data[3]
is set to 1 (the cooldown on the usage of this move and other moves from the support items set)- The
HustleSeed
sprite gets destroyed - This enemy animstate set to the local startstate
- Yield for 0.5 seconds
data[0]
is incremented (amount of times this this move, the LongLegSummoner equivalent action move and other support items moves one were used)
Move 9 - ClearBomb equivalent action¶
Does the equivalent of the ClearBomb action which clears every actor's conditions via ClearStatus. No damages are dealt.
Logic sequence¶
- animstate set to 4 (
ItemGet
) - A new sprite object is created rooted using the
ClearBomb
item sprite positioned at this enemy position + theiritemoffset
- Yield for a second
- The
ClearBomb
sprite gets destroyed Toss
sound playsToss4
sound plays- A new sprite object is created rooted using the
ClearBomb
item sprite positioned at this enemy position + their (-0.5, 2.0, -0.1) - Over the course of 51.0 frames, the
ClearBomb
sprite moves to Vector3.zero via a BeizierCurve3 with a ymax of 7.0. Before each frame yield, the z angle of the sprite increases by 15.0 * MainManager.framestep
- The
ClearBomb
sprite gets destroyed checkingdead
is set to a new ClearBombEffect coroutine which will do the same logic than the player action version- Yield all frames until
checkingdead
is null (the coroutine completed)
Here is what the coroutine ends up doing:
IceBreak
sound plays at 0.6 volumeimpactsmoke
particles plays at Vector3.zero- Yield for 0.3 seconds
impactsmoke
particles plays at (-3.0, 0.0, 0.0)- Yield for 0.3 seconds
impactsmoke
particles plays at (3.0, 0.0, 0.0)- Yield for 0.3 seconds
- ClearStatus is called on each enemy party members
- ClearStatus is called on each player party members
checkingdead
is set to null to signal the caller that the coroutine is done
Move 10 - Heals 15 hp
and ClearStatus on themselves and Stratos¶
Heals 15 hp
and calls ClearStatus on themselves and Stratos. No damages are dealt.
Logic sequence¶
data[0]
is incremented (amount of times this this move, the LongLegSummoner equivalent action move and other support items moves one were used)ItemHold
sound plays- animstate set to 4 (
ItemGet
) - A new sprite object is created rooted using the
KingDinner
item sprite positioned at this enemy position + theiritemoffset
- Yield for a second
- Heal called to heal this enemy by 15
hp
- Heal called to heal Stratos by 15
hp
- The
KingDinner
sprite gets destroyed - ClearStatus called on this enemy
- ClearStatus called on
Stratos
- This enemy animstate set to the local startstate
- Yield for 0.5 seconds
data[3]
is set to 2 (the cooldown on the usage of this move and other moves from the support items set)
Move 11 - Revives Stratos with 7 hp
¶
Revives Stratos leaving them at 7 hp
. No damages are dealt.
Logic sequence¶
data[0]
is incremented (amount of times this this move, the LongLegSummoner equivalent action move and other support items moves one were used)ItemHold
sound plays- animstate set to 4 (
ItemGet
) - A new sprite object is created rooted using the
MagicDrops
item sprite positioned at this enemy position + theiritemoffset
- Yield for a second
- ReviveEnemy called with
reservedata
index 0 (Stratos
) leaving them with 0.3% ofhp
with canmove - Yield for a frame
- ShowDamageCounter called with type 1 (HP counter) with an ammount of 7 starting from
enemydata[0]
's position (should beStratos
) + 1.0 in y and ending to Vector3.up enemydata[0]
(Stratos
)'shp
is set to 7Heal
sound playsenemydata[0]
(Stratos
) animstate set to 13 (BattleIdle
)Stratos
'sdata[3]
is set to 1 which activates the lock onStratos
's usage of their reviving move and enemy party healing move- The
MagicDrops
sprite gets destroyed - This enemy animstate set to the local startstate
- Yield for 0.5 seconds
data[3]
is set to 2 (the cooldown on the usage of this move and other moves from the support items set)