ChomperBrute
¶
BattleControl.GetEXP special logic¶
This enemy is part of the set of the enemies that yields a different clamping on the rewarded amount of exp given their scaled exp
field when they die (processed by CheckDead).
If all of these conditions are fufilled, the rewarded amount of exp is clamped to 20 instead of 15 like most other enemies:
- flags 613 is false (RUIGEE is inactive)
partylevel
is less than 27 (not yet at max rank)- Flags 166 is false (not during an EX mode B.O.S.S session)
HardMode changes¶
HardMode being true does the following changes:
- The odds to summon a new FlyTrap enemy in the pre move logic when this enemy is the last
enemydata
remaining changes to 41% from 31% - In the seeds throw move, the amount of seeds to throw changes to be random between 2 and 3 inclusive instead of being random between 1 and 3 inclusive
- In the seeds throw move, the amount of frames each seed takes to reach its target changes to 35.0 frames from 41.0 frames
Move selection¶
2 moves are possible:
- A multiple target seeds throw
- A single target head bash
The decision of which move to use is based on the following odds:
Move | Odds |
---|---|
1 | 4/7 |
2 | 3/7 |
Pre move logic¶
The following logic always happen before any move is used if this enemy is the last enemydata
remaining and a 31% RNG check passes (41% instead if hardmode is true):
- A Vector3 is attempted to be generated that will corresponds to the position to spawn the new enemy. Each attempt may fail, but up to 20 attempts will be done and the first one that fufills some conditions will be used. Each attempts generates a vector where the x component is between 0.25 and 7.0, the y component is 0.0 and the z component is between -0.75 and 0.75. For the location to be accepted, any enemy part member needs to be located at a distance less than its
size
* 1.75. If no suitable locations is found after 20 attempts, the logic will not proceed and move selection is done immeditately - If a suitable location is found:
- Camera moves to look near the location
- This enemy FaceTowards the location
- animstate set to 100
Clomp
sound plays- Yield for a second
Charge5
sound plays- animstate set to 104
- Yield for 0.2 seconds
- A new sprite object is created rooted at this enemy position + (1.7 if
flip
is true, -1.7 otherwise, 4.6, 0.1) using theChomperSeed
item sprite with a SpinAround that has anitself
of 20.0 in z - Over the course of 70.0 frames, the
ChomperSeed
moves to the location via a BeizierCurve3 with a ymax of 6.0. On the second half of the movement, this enemy animstate is set to 0 (Idle
) before each frame yield - DeathSmoke particles plays at the
ChomperSeed
position Charge
sound playscheckingdead
is set to a new SummonEnemy call to a summon a FlyTrap with typeFromGroundKeepScale
at theChomperSeed
position with cantmove (meaning the summoned enemy can't act on the current main turn and needs to wait on the next one)ChomperSeed
gets destroyed- Yield all frames until
checkingdead
is null (the coroutine completed) - SetDefaultCamera called
Move 1 - Seeds throw¶
A multiple target seeds throw.
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 1 to 3 times inclusive determined randomly (2 to 3 times inclusive instead if hardmode is true), but the call and no further calls happen if GetRandomAvaliablePlayer with nullable returns -1 | This enemy | GetRandomAvaliablePlayer with nullable1 (target changes for each calls) | 2 | null | null | commandsuccess |
1: This targetting scheme is broken. See the nullable GetRandomAvaliablePlayer documentation for more details.
Logic sequence¶
flip
set to falsecheckingdead
is set to a new SpiSeed coroutine call which will setcheckingdead
to null when done- Yield all frames until
checkingdead
is null
Here is what the coroutine ends up doing:
- animstate set to 100
- Camera moves to look near
partymiddle
Clomp
sound plays- Yield for 0.25 seconds
- A new sprite object is created rooted offscreen at 999.0 in y using the
HardSeed
item sprite with a SpinAround that has anitself
of 20.0 in z - The amount of hits is determined. It's random between 1 and 3 inclusive (between 2 and 3 instead if hardmode is true)
- For each hit to do as long as GetRandomAvaliablePlayer with nullable doesn't return -1 (result stored in
playertargetID
):playertargetentity
is manually set toplayerdata[playertargetID]
's battleentity- animstate set to 100
- Yield for 0.35 seconds
- animstate set to 102
- Yield for 0.2 seconds
- The
HardSeed
position set to this enemy + (-2.0, 2.25, -0.1) - Over the course of 41.0 frames (35.0 frames instead if hardmode is true),
HardSeed
moves toplayertargetentity
position + (0.0, 1.0, -0.1) via a lerp. During the second half of the movement, if this isn't the last hit, animstate is set to 101 HardSeed
moves offscreen at 999.0- DoDamage 1 call happens
HardSeed
gets destroyed- Yield for 0.5 seconds
checkingdead
is set to null which signals the caller that the coroutine completed
Move 2 - Head bash¶
A single target head bash.
DoDamage calls¶
# | Conditions | attacker | target | damageammount | property | overrides | block |
---|---|---|---|---|---|---|---|
1 | Always happen | This enemy | playertargetID after GetSingleTarget |
3 | Flip1 | null | commandsuccess |
1: This property gets overriden to null in CalculateBaseDamage as the target is a player party member so it does nothing.
Logic sequence¶
flip
set to false- GetSingleTarget called
- Camera moves to look near
playerdata[playertargetID]
- MoveTowards
playertargetentity
position + (2.65, 0.0. -0.1) with a 1.6 multiplier - Yield all frames until
forcemove
is done Grow2
sound plays with 0.8 pitch- animstate set to 100
- Yield for a random interval between 0.55 and 0.75 seconds
- animstate set to 105
Thump5
sound playsimpactsmoke
particles plays atplayertargetentity
position- ShakeScreen with 0.2 ammount and 1.0 time
- DoDamage 1 call happens
- Yield for 1.25 seconds