Kina
¶
Assumptions¶
This enemy is assumed to be fought with Maki for the move selection to function otherwise, unexpected logic will occur.
It is also assumed that the DeathType of the enemy supports the reservedata
feature as it is needed by Maki in case they want to revive this enemy.
It is also assumed that this enemy is loaded with a chargeonotherenemy configured so their hitaction
logic works (typically it would be set to Maki).
StartBattle special logic¶
After loading this enemy, the following special adjustements happens to them if flags 614 is true (HARDEST is active):
maxhp
andhp
gets increased by 10def
gets incremented
data
usage¶
At the start of the action, if data
is null or empty, it's initialised to be 1 element with a starting value of 0.
data[0]
: This tells if this enemy should receive an infinite AttackUp condition. The value becomes 1 on the first actor turn's pre move logic orhitaction
that Maki isn't found inenemydata
. When the value is 1 at the end of the pre move logic, it allows this enemy to receive an infinite AttackUp condition if they didn't had it already
HardMode changes¶
HardMode being true does the following changes:
- In the projectiles throw move, the odds that the property of each Projectile calls is Poison, Sleep or Numb changes to 50% from 70%
- In the projectiles throw move, the speed of each Projectile call changes to 12.0 from 19.0
- In the jump kick attack move, the amount of frames this enemy takes to reach its target changes to 21.0 from 28.0. However, after this, there is always a yield of 0.1 seconds regardless if hardmode is true or not before the DoDamage call
hitaction support¶
This enemy supports hitaction
logic and it will be performed when hitaction
is true instead of any moves.
dontusecharge
set to true¶
The hitaction
logic always sets dontusecharge
to true which means charges
will not get zeroed out in post action.
Logic sequence¶
- The
enemydata
index of Maki is obtained if they are present - If
Maki
is present inenemydata
:Wam
sound plays- Emoticon called on this enemy with the
Exclamation
emote for 45 time - animstate set to 5 (
Angry
) - Yield for 0.5 seconds
- Yield for 0.25 seconds
- If
charge
is less than 3:charge
is incremented- StatEffect called on this enemy with type 4 (green up arrow)
StatUp
sound plays- Yield for 0.5 seconds
- Otherwise (
Maki
isn't present), ifdata[0]
is 0 (meaning their absence wasn't noticed before):- animstate set to 5 (
Angry
) - Done 2 times:
- Jump called on this enemy
Jump
sound plays with 1.2 pitch- Yield for 0.25 seconds
- Yield all frames until this enemy is
onground
data[0]
is set to 1 (indicating that it was found thatMaki
died which means on the next actor turn, this enemy will get an infinite AttackUp condition in the pre move logic)
- animstate set to 5 (
Move selection¶
3 moves are possible:
- A multiple targets projectiles throw with varying effects
- A single target jump kick attack
- Heals Maki by 6
hp
and inflicts them the GradualHP condition
The decision of which move to use is based on the following odds:
Move | Odds |
---|---|
1 | 3/9 |
2 | 4/9 |
3 | 2/9 |
However, if move 3 is selected and Maki is either not present or their HPPercent is above 0.7, a continue directive is issued to the enemy action loop which restarts the entire action. Effectively, this will reroll the move selection process.
Pre move logic¶
The following logic always happen before a move is used:
- The
enemydata
index of Maki is obtained if they are present - If
Maki
isn't present anddata[0]
is 0 (meaning their absence wasn't noticed before):- animstate set to 5 (
Angry
) - Done 2 times:
- Jump called on this enemy
Jump
sound plays with 1.2 pitch- Yield for 0.25 seconds
- Yield all frames until this enemy is
onground
data[0]
is set to 1 (indicating that it was found thatMaki
died)
- animstate set to 5 (
- If
data[0]
is 1 (it was found thatMaki
died just now or in a previoushitaction
) and this enemy doesn't have the AttackUp condition, an infinite one will be inflicted with the following:Charge7
sound plays- ShakeSprite called with 0.1 intensity and 45.0 frametimer
- Yield for 0.5 seconds
- StatusEffect called to inflict the AttackUp condition on this enemy for 999999 main turns (infinite) with effect
- Yield for 0.5 seconds
Move 1 - Projectiles throw¶
A multiple targets projectiles throw with varying 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 from 2 to 4 times determined randomly, but each calls requires that there's at least 1 player party member alive (hp above 0 and not eatenby) |
2 | null, but there is a 70% chance (50% instead if hardmode is true) that the property is determined randomly among the following with uniform odds: | This enemy | playertargetID after GetSingleTarget |
A new sprite object childed to the battlemap using the projectilepsrites[12] sprite (purple pointy projectile) positioned at this enemy + (-1.5, 1.5, -0.1) with a scale of 0.6x and a z angle of -90.0. The color depends on the property: |
19.0 (12.0 instead if hardmode is true) | 0.0 | keepcolor,x |
null | null | null | Vector3.zero | false |
Logic sequence¶
- The property of each Projectile 1 call is determined here (see the Projectile calls table above for details)
- The amount of hits is determined which is random from 2 to 4 inclusive. A SpriteRenderer array is created with this amount as the length to hold the projectiles objects
- For each hits to do, if there's at least 1 player party member alive (
hp
above 0 and not eatenby):- GetSingleTarget called
- Camera moves to look near the midpoint between this enemy and
playertargetentity
- animstate set to 102
- Yield for 0.5 seconds
FastWoosh
sound plays- animstate set to 103
- The projectile element is set to a new sprite object childed to the
battlemap
using theprojectilepsrites[12]
sprite (purple pointy projectile) positioned at this enemy + (-1.5, 1.5, -0.1) with a scale of 0.6x and a z angle of -90.0 - The color of the projectile is set which depends on the property determined earlier:
- Projectile 1 call happens
- Yield for 0.5 seconds
- animstate set to 13 (
BattleIdle
) - Yield all frames until all projectiles elements are null (all Projectile 1 calls completed)
- Yield for 0.5 seconds
Move 2 - Jump kick attack¶
A single target jump kick attack.
DoDamage calls¶
# | Conditions | attacker | target | damageammount | property | overrides | block |
---|---|---|---|---|---|---|---|
1 | Always happen | This enemy | playertargetID after GetSingleTarget |
5 | null | null | commandsuccess |
Logic sequence¶
- animstate set to 103
Toss3
sound plays- Yield for 0.5 seconds
PingShot
sound plays- DeathSmoke particles plays at this enemy position + 0.5 in y with a size of 3.0x
- Yield for a frame
- GetSingleTarget called
- position set to
playertargetentity
+ (0.0, 15.0, -0.1) trail
set to true- animstate set to 104
- Yield for 0.5 seconds
- Camera moves to look near
playerdata[playertargetID]
- Yield for 0.25 seconds
Toss12
sound plays- Over the course of 28.0 frames (21.0 frames instead if hardmode is true), this enemy moves to
playertargetentity
+ (0.0, 1.5, -0.1) via a lerp - animstate set to 105
- Yield for 0.1 seconds
Woosh5
sound plays with 0.8 pitch- DoDamage 1 call happens
- animstate set to 101
- SetAnimForce called on this enemy
- z
spin
set to -25.0 - SetDefaultCamera called
- Yield for a frame
- ShakeScreen called with an ammount of 0.2 and 0.75 time with dontreset
- Over the course of 61.0 frames, this enemy moves from
playertargetentity
+ (0.0, 2.5, -0.1) to startp + 1.0 in y via a BeizierCurve3 with a ymax of 7.0 Drop
sound playstrail
set to falsespin
zeroed out- animstate set to 106
sprite
angles reset to Vector3.zero- position set to startp
- SetAnimForce called on this enemy
- Yield for 0.25 seconds
Move 3 - Heals Maki with GradualHP infliction¶
Heals Maki by 6 hp
and inflicts them the GradualHP condition. No damages are dealt.
Logic sequence¶
- animstate set to 4 (
ItemGet
) ItemHold
sound plays- A new sprite object is created childed to the
battlemap
using theMiteBurg
item sprite positioned at this enemy position + (-0.43, 3.9, -0.1). The object is destroyed in 1 second - Yield for a second
- Heal called to heal
Maki
by 6hp
- SetCondition called to inflict the GradualHP condition on
Maki
for 3 main turns - animstate set to 0 (
Idle
) - Yield for 0.5 seconds