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)
partylevelis 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
enemydataremaining 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
Clompsound plays- Yield for a second
Charge5sound plays- animstate set to 104
- Yield for 0.2 seconds
- A new sprite object is created rooted at this enemy position + (1.7 if
flipis true, -1.7 otherwise, 4.6, 0.1) using theChomperSeeditem sprite with a SpinAround that has anitselfof 20.0 in z - Over the course of 70.0 frames, the
ChomperSeedmoves 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
ChomperSeedposition Chargesound playscheckingdeadis set to a new SummonEnemy call to a summon a FlyTrap with typeFromGroundKeepScaleat theChomperSeedposition with cantmove (meaning the summoned enemy can't act on the current main turn and needs to wait on the next one)ChomperSeedgets destroyed- Yield all frames until
checkingdeadis 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¶
flipset to falsecheckingdeadis set to a new SpiSeed coroutine call which will setcheckingdeadto null when done- Yield all frames until
checkingdeadis null
Here is what the coroutine ends up doing:
- animstate set to 100
- Camera moves to look near
partymiddle Clompsound plays- Yield for 0.25 seconds
- A new sprite object is created rooted offscreen at 999.0 in y using the
HardSeeditem sprite with a SpinAround that has anitselfof 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):playertargetentityis 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
HardSeedposition 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),
HardSeedmoves toplayertargetentityposition + (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 HardSeedmoves offscreen at 999.0- DoDamage 1 call happens
HardSeedgets destroyed- Yield for 0.5 seconds
checkingdeadis 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¶
flipset to false- GetSingleTarget called
- Camera moves to look near
playerdata[playertargetID] - MoveTowards
playertargetentityposition + (2.65, 0.0. -0.1) with a 1.6 multiplier - Yield all frames until
forcemoveis done Grow2sound 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
Thump5sound playsimpactsmokeparticles plays atplayertargetentityposition- ShakeScreen with 0.2 ammount and 1.0 time
- DoDamage 1 call happens
- Yield for 1.25 seconds