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):
maxhpandhpgets increased by 10defgets 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 orhitactionthat 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
enemydataindex of Maki is obtained if they are present - If
Makiis present inenemydata:Wamsound plays- Emoticon called on this enemy with the
Exclamationemote for 45 time - animstate set to 5 (
Angry) - Yield for 0.5 seconds
- Yield for 0.25 seconds
- If
chargeis less than 3:chargeis incremented- StatEffect called on this enemy with type 4 (green up arrow)
StatUpsound plays- Yield for 0.5 seconds
- Otherwise (
Makiisn'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
Jumpsound 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 thatMakidied 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
hpand 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
enemydataindex of Maki is obtained if they are present - If
Makiisn'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
Jumpsound 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 thatMakidied)
- animstate set to 5 (
- If
data[0]is 1 (it was found thatMakidied just now or in a previoushitaction) and this enemy doesn't have the AttackUp condition, an infinite one will be inflicted with the following:Charge7sound 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 (
hpabove 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
FastWooshsound plays- animstate set to 103
- The projectile element is set to a new sprite object childed to the
battlemapusing 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
Toss3sound plays- Yield for 0.5 seconds
PingShotsound 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) trailset to true- animstate set to 104
- Yield for 0.5 seconds
- Camera moves to look near
playerdata[playertargetID] - Yield for 0.25 seconds
Toss12sound 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
Woosh5sound plays with 0.8 pitch- DoDamage 1 call happens
- animstate set to 101
- SetAnimForce called on this enemy
- z
spinset 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 Dropsound playstrailset to falsespinzeroed out- animstate set to 106
spriteangles 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) ItemHoldsound plays- A new sprite object is created childed to the
battlemapusing theMiteBurgitem 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
Makiby 6hp - SetCondition called to inflict the GradualHP condition on
Makifor 3 main turns - animstate set to 0 (
Idle) - Yield for 0.5 seconds