Ahoneynation¶
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]: UNUSED
HardMode changes¶
HardMode being true does the following changes:
- In the honey throw move, the amount of frames each projectile takes to reach its target changes to 21.0 frames from 23.5 frames
Move selection¶
4 moves are possible:
- A single target punch attack
- A single target honey throw that may hit multiple times and summon new Abomihoney enemies
- Prepares themselves for a big attack by setting
chargeto 2 - A party wide jump attack
Move 4 is always used (and only used) if basestate isn't 0 (Idle) meaning move 3 was performed last actor turn.
As for other moves, the decision of which moves to use is based on odds, but the odds changes when HPPercent is 0.6 or less. Move 2 and 3 have additional requirements that if failed when selecting the move, move 1 will be performed instead. Here are the odds and requirements:
| Move | Odds when HPPercent floored > 0.6 | Odds when HPPercent <= 0.6 | Additional requirments |
|---|---|---|---|
| 1 | 1/4 | 1/6 | None, the move is always used when selected |
| 2 | 2/4 | 2/6 | The enemy party must have less than 3 enemy party members |
| 3 | 1/4 | 3/6 | HPPercent must be between 0.15 exclusive and 0.65 exclusive (between 15% exclusive and 65% exclusive hp remaining) |
Move 1 - Punch attack¶
A single target punch attack.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | playertargetID after GetSingleTarget |
5 | null | {NoSound} | commandsuccess |
Logic sequence¶
- GetSingleTarget called
- Camera moves to look near
playertargetentity - MoveTowards
playertargetentity+ (4.85, 0.0, -0.1) with a 0.7 multiplier - Yield until
forcemoveis done and this enemy isonground - animstate set to 100
Charge18sound plays- Yield for 0.75 seconds
- animstate set to 102
- Yield for 0.06 seconds
- ShakeScreen called with 0.3 ammount and 0.5 time
- DoDamage 1 call happens
BigHitsound playsimpactsmokeparticles plays atplayertargetentityposition- Yield for 0.75 seconds
Move 2 - Honey throw¶
A single target honey throw that may hit multiple times and summon new Abomihoney enemies.
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.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen from 1 to 2 times (always 1 time if there's already 2 or more enemy party members). Each call requires that at least one player party member is alive (hp above 0 and not EatenBy) |
This enemy | playertargetID after GetSingleTarget (target changes for each calls) |
3 | Numb | null | commandsuccess |
Logic sequence¶
- Camera moves a bit forward
AhoneynationSpitChargesound plays- animstate set to 104
- Yield for 0.65 seconds
- The amount of hits is determined. It's random between 1 and 2 inclusive (always 1 instead if there's already 2 or more enemy party members)
- For each hit:
- If no player party members are alive (
hpabove 0 and not EatenBy), this hit and all further ones are skipped - GetSingleTarget called
- animstate set to 106
AhoneynationSpitsound plays- CreateNewEntity called with name
enemy, animid of 177 (Abomihoney) positioned offscreen at (0.0, 999.0, 0.0) enemy'shologramgets set to this enemy's valueenemy'sbattlegets set to true (this is needed because if they are summoned, the search for the free spot filters based on this)- Yield a frame
enemy'sstartscaleset to 0.75xenemy'sshadowsizeset to 1.1enemy's animstate set to 108- Yield for 0.1 seconds
- animstate set to 107
- Over the course of 23.5 frames (21.0 frames instead if hardmode is true),
enemymoves toplayertargetentityposition + (0.0, 1.0, -0.1) via a lerp - DoDamage 1 call happens
ElecFastparticles plays atplayertargetentityposition + (0.0, 1.0, -0.1)- If
commandsuccessis true (blocked, ignores FRAMEONE), the enemy will be slated for summoning by doing the following:- The location of the enemy is determined. The locations considered in order are (0.5, 0.0, 0.85) and (6.55, 0.0, -0.5). The first free one (no
battleEntityControl within a 1.0 radius) will be selected, but it defaults to (-15.0, 5.0, 0.0) if neither are free the enemy won't be summoned (this can happen if other Abomihoneis called CleanKill since they never got destroyed even if they got removed fromenemydata) enemymoves to the location - 0.2 in z via ArcMovement without spin and with a height of the distance ofenemyto the location clamped from 2.0 to 4.5 for 35.0 frametime without destroyonend
- The location of the enemy is determined. The locations considered in order are (0.5, 0.0, 0.85) and (6.55, 0.0, -0.5). The first free one (no
- If no player party members are alive (
- animstate set to 0 (
Idle) - Yield for 0.75 seconds if any enemy are slated for summoning through a projectile entity. For each enemy to summon:
- animstate set to 107
- Yield for 0.4 seconds
Puddlesound plays- AddNewEnemy called to add an Abomihoney offscreen at (0.0, 999.0, 0.0)
- Yield for a frame
enemydata[lastaddedid]is positioned at the matching projectile entity position- The projectile entity gets destroyed
- The new enemy gets some fields changed:
- animstate and
basestate: 0 (Idle) startscale: 0.75xhpandmaxhp: divided by 3 flooreddef: decremented. NOTE: This can incorrectly result in a value of -1 which can impact the damage pipeline in unexpected ways (such as increasing the result by 1) and to cause TrueDef to incorrectly report a?defense value when this enemy won't have aLimitX10weaknessexp: 1 (0 instead if theAhoneynation'shologramis true)locktri: truecantmove: 1 (meaning this enemy cannot act on this main turn and needs to wait the current main turn advances)
- animstate and
Move 3 - Charging¶
Braces themselves to set charge to 2. No damages are dealt. The basestate changes allowing move 4 (party wide jump attack) to be used on the next actor turn.
dontusecharge set to true¶
This move always sets dontusecharge to true which means charges will not get zeroed out in post action.
Logic sequence¶
- animstate set to 109
Charge18sound plays with 0.9 pitch- animstate set to 109
- Over the course of 61.0 frames, y
spingoes to 15.0 via a lerp - Yield for 0.3 seconds
- animstate,
basestateand the local startstate set to 108 spinzeroed outStatUpsound plays- StatEffect called on this enemy with type 4 (green up arrow)
chargeset to 2- Yield for 0.5 seconds
Move 4 - Party wide jump attack¶
A party wide jump attack.
PartyDamage¶
| # | Conditions | caller | damage | property | block | jumpheight | spinammount | jumpevenonblock | overrides |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | 4 | null | commandsuccess |
0.0 | Vector3.zero | false | null |
Logic sequence¶
AhoneynationBodySlamChargesound plays- Camera moved to look near (-4.0, 1.0, 0.0)
- Over the course of 51.0 frames, the
rotater's SpriteBounce (this is setup by CheckSpecialID) has theirbasescalechanged to (1.2, 0.5, 1.0) via a lerp and theirbasespeedchanged to be multiplied by 1.5 via a lerp - Yield for 0.1 seconds
- y
spinset to 20.0 - animstate set to 109
rotater's SpriteBounce'sbasescalereset to its value before this actionAhoneynationBodySlamJumpsound plays- Over the course of 61.0 frames, this enemy moves to
partymiddlevia a BeizierCurve3 with a ymax of 15.0 - position set to
partymiddle spinzeroed out- animstate set to 108
impactsmokeparticles played at this enemy position- ShakeScreen called with 0.3 ammount and 0.5 time
- PartyDamage 1 call happens
Thud3sound plays- Over the course of 61.0 frames,
rotater's SpriteBounce'sfrequencygoes from 1.0 to 0.0 via a lerp rotater's SpriteBounce'sbasescalereset to its value before this actionrotater's SpriteBounce is SetUp with the frequency and speed it had before this action- animstate,
basestateand the local startstate set to 0 (Idle)