PrimalWeevil¶
HardMode changes¶
HardMode being true does the following changes:
- The odds for this enemy to get an AttackUp condition in the pre move logic when it didn't had it already and the numbing scream or enemy summon wasn't used changes to be 41% from 31%
- In the grab attack move, the amount of frames this enemy takes to move before attempting to grab the target changes to 36.0 frames from 43.5 frames
Move selection¶
5 moves are possible:
- A party wide numbing scream attack
- A single target swipe attack that may hit twice
- A single target tail slash attack
- A single target grab attack that may hit twice
- Summons a new Weevil enemy
The decision of which move to use is based on the following odds:
| Move | Odds |
|---|---|
| 1 | 1/8 |
| 2 | 2/8 |
| 3 | 2/8 |
| 4 | 1/8 |
| 5 | 2/8 |
However, if move 5 is used while this isn't the only enemydata left, a continue directive will be issued to the enemy action loop which restarts the entire action and effectively rerolls the move selection process.
Pre move logic¶
The following logic is always done before using a move if all of the following conditions are fufilled to get an AttackUp condition:
- The selected move is not the numbing scream or enemy summon move (this applies even if this is a reroll from selecting the enemy summon while this enemy isn't the last remaining
enemydata) - This enemy doesn't already the AttackUp condition
- A 31% RNG check passes (41% instead if hardmode is true)
Here is the logic if all of the above are fufilled:
- animstate set to 100
Charge7sound plays- ShakeSprite called with an intensity of (0.1, 0.0, 0.0) and 45.0 frametimer
- Yield for 0.75 seconds
- animstate set to 2 (
Jump) - y
spinset to 20.0 - StatusEffect called to inflict the AttackUp condition on this enemy for 2 main turn with effect
- Yield for 0.5 seconds
spinzeroed out- Yield for 0.15 seconds
Move 1 - Numbing scream¶
A party wide numbing scream attack.
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.
PartyDamage¶
| # | Conditions | caller | damage | property | block | jumpheight | spinammount | jumpevenonblock | overrides |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | 2 | Numb | commandsuccess |
0.0 | Vector3.zero | false | null |
Logic sequence¶
Charge7sound plays- Camera moves to look near this enemy
- animstate set to 100
- ShakeSprite called with intensity (0.1, 0.0. 0.0) and 75.0 frametimer
- Yield for 0.75 seconds
Gleamparticles plays with theGleamsound at this enemy + (-0.5, 3.0, -0.1) with 0.5 alivetime- Yield for 0.5 seconds
- SetDefaultCamera called
- animstate set to 101
Roar3sound plays with 0.8 pitch- ShakeScreen called with 0.2 ammount and 0.1 time
- PartyDamage 1 call happens
- Yield for 0.5 seconds
Move 2 - Swipe attack¶
A single target swipe attack that may hit twice.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | playertargetID after GetSingleTarget |
3 | Flip1 | null | commandsuccess |
| 2 | Happens only if at least one of the following is true:
|
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¶
- GetSingleTarget called
- Camera moves to look near
playerdata[playertargetID] - MoveTowards
playertargetentityposition + (2.0, 0.0, -0.1) with 2.0 multiplier, 1 (Walk) as walkstate and 103 as stopstate - Yield all frames until
forcemoveis done - animstate set to 109
Growlsound plays- Yield for 0.65 seconds
Growl2sound plays- animstate set to 105
- DoDamage 1 call happens
- If
commandsuccessis true (blocked, ignores FRAMEONE) or HPPercent is less than 0.6:- Yield for 0.3 seconds
- animstate set to 106
- Yield for 0.2 seconds
Growl2sound plays with 1.1 pitch- DoDamage 2 call happens
- Yield for 0.5 seconds
Move 3 - Tail slash¶
A single target tail slash attack.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | playertargetID after GetSingleTarget |
5 | null | {BlockSoundOnly} | commandsuccess |
Logic sequence¶
- GetSingleTarget called
- Camera moves to look near
playerdata[playertargetID] - MoveTowards
playertargetentityposition + (2.1, 0.0, -0.1) with 2.0 multiplier, 1 (Walk) as walkstate and 103 as stopstate - Yield all frames until
forcemoveis done - animstate set to 109
Growl3sound plays- A random number is generated between 0.6 and 0.8
- ShakeSprite called with intensity (0.1, 0.0, 0.0) with a frametimer of 60.0 * the random number
- Yield for an amount of seconds being the random number
- animstate set to 110
HugeHitsound playsSlash3sound plays- DoDamage 1 call happens
- If
commandsuccessis false (didn't block, ignores FRAMEONE),enemybounceis set to a new array with one element being a new BounceEnemy call withplayerdata[playertargetID]using routineid 0 for 1 bounce with 1.2 multiplier - Yield for 0.2 seconds
- FlipSimple called
- Yield for 0.5 seconds
- Yield all frames until all
enemybounceare done - FlipSimple called
- FlipAngle called with setangle
- Yield for a frame
Move 4 - Grab attack¶
A single target grab attack that may hit twice.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | playertargetID after GetSingleTarget |
4 | null | null | commandsuccess |
| 2 | Happens only if commandsuccess is false after DoDamage 1 (din't blocked, ignores FRAMEONE) |
This enemy | playertargetID after GetSingleTarget |
2 | null | {NoSound} | false |
Logic sequence¶
- GetSingleTarget called
- Camera moves to look near the midpoint between this enemy and
playerdata[playertargetID] - MoveTowards
playertargetentityposition + (5.0, 0.0, -0.1) with 2.0 multiplier, 107 as walkstate and stopstate - Yield all frames until
forcemoveis done Stepsound plays on loop usingsounds[9]with 1.3 pitch- ShakeSprite called with intensity (0.1, 0.0, 0.0) with a frametimer of 50.0
- Over the course of 41.0 frames, this enemy moves to + 2.0 in x via a SmoothLerp
- Yield for 0.35 seconds
- Over the course of 43.5 frames (36.0 frames instead if hardmode is true), this enemy moves to (-20.0, 0.0, same z position) via a lerp and
sounds[9]volume changes to 0.0 via a lerp calculated over half of the amount of frames. On the first frame this enemy x position becomes lower thanplayertargetentityx position:- DoDamage 1 call happens
- If
commandsuccessis false (didn't blocked, ignores FRAMEONE):Dragsound plays- animstate set to 108
playertargetentitygets childed to this enemyplayertargetentityanimstate set to 11 (Hurt)playertargetentitylocal position set to (-2.35, 0.35, -0.1)playertargetentityz angle set to -90.0
- SetDefaultCamera called
- Over the course of 43.5 frames (36.0 frames instead if hardmode is true), this enemy moves from (20.0, 0.0, same z position) to starp via a lerp and
sounds[9]volume changes to MainManager.soundvolumevia a lerp calculated over half of the amount of frames sounds[9]stops looping- If
commandsuccesswas false earlier when DoDamage 1 call happened:- animstate set to 111
playertargetentitygets childed to thebattlemapspritey angle set to -180.0- y
spinset to 20.0 Toss8sound playsToss9sound plays- Over the course of 61.0 frames,
playertargetentitymoves to the position they were at before this action via a BeizierCurve3 with a ymax of 12.0. Before each frame yield,playertargetentityanimstate set to 11 (Hurt) playertargetentity'sspinzeroed outThud3sound plays- DeathSmoke particles plays at
playertargetentityposition with a size of 2.0x - ShakeScreen called with an ammount of 0.2 and 0.8 time
- DoDamage 2 call happens
- Yield for 0.75 seconds
Move 5 - Weevil summon¶
Summons a new Weevil enemy. No damages are dealt.
Logic sequence¶
- animstate set to 100
- Yield for 0.75 seconds
- animstate set to 102
Whistle2sound playscheckingdeadset to a new SummonEnemy call to summon a new Weevil enemy with typeOffscreenat this enemy position + (3.0, 0.0, 0.5)- Yield for 1.25 seconds
- animstate set to 0 (
Idle) - Yield all frames until
checkingdeadis null (the coroutine completed)