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
Charge7
sound 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
spin
set to 20.0 - StatusEffect called to inflict the AttackUp condition on this enemy for 2 main turn with effect
- Yield for 0.5 seconds
spin
zeroed 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¶
Charge7
sound 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
Gleam
particles plays with theGleam
sound at this enemy + (-0.5, 3.0, -0.1) with 0.5 alivetime- Yield for 0.5 seconds
- SetDefaultCamera called
- animstate set to 101
Roar3
sound 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
playertargetentity
position + (2.0, 0.0, -0.1) with 2.0 multiplier, 1 (Walk
) as walkstate and 103 as stopstate - Yield all frames until
forcemove
is done - animstate set to 109
Growl
sound plays- Yield for 0.65 seconds
Growl2
sound plays- animstate set to 105
- DoDamage 1 call happens
- If
commandsuccess
is 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
Growl2
sound 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
playertargetentity
position + (2.1, 0.0, -0.1) with 2.0 multiplier, 1 (Walk
) as walkstate and 103 as stopstate - Yield all frames until
forcemove
is done - animstate set to 109
Growl3
sound 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
HugeHit
sound playsSlash3
sound plays- DoDamage 1 call happens
- If
commandsuccess
is false (didn't block, ignores FRAMEONE),enemybounce
is 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
enemybounce
are 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
playertargetentity
position + (5.0, 0.0, -0.1) with 2.0 multiplier, 107 as walkstate and stopstate - Yield all frames until
forcemove
is done Step
sound 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 thanplayertargetentity
x position:- DoDamage 1 call happens
- If
commandsuccess
is false (didn't blocked, ignores FRAMEONE):Drag
sound plays- animstate set to 108
playertargetentity
gets childed to this enemyplayertargetentity
animstate set to 11 (Hurt
)playertargetentity
local position set to (-2.35, 0.35, -0.1)playertargetentity
z 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.soundvolume
via a lerp calculated over half of the amount of frames sounds[9]
stops looping- If
commandsuccess
was false earlier when DoDamage 1 call happened:- animstate set to 111
playertargetentity
gets childed to thebattlemap
sprite
y angle set to -180.0- y
spin
set to 20.0 Toss8
sound playsToss9
sound plays- Over the course of 61.0 frames,
playertargetentity
moves to the position they were at before this action via a BeizierCurve3 with a ymax of 12.0. Before each frame yield,playertargetentity
animstate set to 11 (Hurt
) playertargetentity
'sspin
zeroed outThud3
sound plays- DeathSmoke particles plays at
playertargetentity
position 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
Whistle2
sound playscheckingdead
set to a new SummonEnemy call to summon a new Weevil enemy with typeOffscreen
at this enemy position + (3.0, 0.0, 0.5)- Yield for 1.25 seconds
- animstate set to 0 (
Idle
) - Yield all frames until
checkingdead
is null (the coroutine completed)