Krawler¶
StartBattle special logic¶
This enemy has special logic that happens on StartBattle after it is loaded:
- If calledfrom exists and its entity is
iniceor the battleentity is:freezeresincreased by 70iniceset to true- weakness set to a new list with one element being HornExtraDamage
Additionally, if all of the following is true, the exp is incremented by the floored result of a lerp from 10.0 to 3.0 with a factor of instance.partylevel / 27.0:
- battleentity.
forcefireis true or we are in theGiantLairarea except for theGiantLairFridgeInsidemap - instance.
partylevelis less than 27 (meaning it's not maxed) - flags 613 is false (RUIGEE is inactive)
For more information, consult the exp logic documentation.
Fire damage infliction logic in CalculateBaseDamage¶
This enemy has a 50% chance to be on fire on a Fire property attack if the current area is GiantLair while the current map isn't GiantLairFridgeInside. It cannot be on fire otherwise.
GetEnemyPortrait logic¶
If flag 664 is true (approached the oven during Chapter 7), the portrait sprite index field of this enemy is ignored and 226 is returned instead which includes the fire variant of this enemy in the portrait.
HardMode changes¶
HardMode being true does the following changes:
- In the laser attack move, the yield time while charging the laser changes to 0.75 seconds from 0.85 seconds
- In the dash attack move, the amount of frames this enemy takes to reach the target is always 21.0 frames instead of being 27.0 frames if neither of the following were true (it would still be 21.0 if either were true even if hardmode is false):
Move selection¶
2 moves are possible:
- A single target laser attack
- A single target dash attack
The decision of which move to use is based on the following odds:
| Move | Odds |
|---|---|
| 1 | 40% |
| 2 | 60% |
Move 1 - Laser attack¶
A single target laser 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.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Happens if at least one of the following is true: | This enemy | playertargetID after GetSingleTarget |
3 | Fire | null | commandsuccess |
| 2 | Happens if DoDamage 1 didn't and inice is true |
This enemy | playertargetID after GetSingleTarget |
2 | Freeze | null | commandsuccess |
| 3 | Happens if DoDamage 1 and 2 didn't | This enemy | playertargetID after GetSingleTarget |
2 | Numb | null | commandsuccess |
Logic sequence¶
- GetSingleTarget called
- If this enemy x position is less than 2.0:
- MoveTowards (2.5, 0.0, -0.5) with a 2.0 multiplier
- Yield all frames until
forcemoveis done
- animstate set to 100
- Yield for 0.5 seconds
Charge11sound plays with 1.1 pitch- A new
Prefabs/Particles/ChargingGameObject is created rooted positioned atspriteposition + (0.0, 2.0, -0.1) - Yield for 0.85 seconds (0.75 seconds instead if hardmode is true)
Shotsound playsPrefabs/Particles/Chargingmoved offscreen at 999.0 in yPrefabs/Particles/Charginggets destroyed in 5.0 seconds- The color of the laser is determined:
- A new LightingBolt coroutine starts which will use a
Prefabs/Particles/LightingBoltto animate a lighting using its TrailRenderer. The coroutine only contains visual logic that doesn't affect the timing of the block so its logic will be omitted - Yield for 0.1 seconds
- DoDamage 1, 2 or 3 happens depending on which one fits its condition requirements
- Yield for 0.5 seconds
Move 2 - Dash attack¶
A single target dash attack.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Happens if at least one of the following is true: | This enemy | playertargetID after GetSingleTarget |
4 | Fire | null | commandsuccess |
| 2 | Happens if DoDamage 1 didn't | 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
Scuttle3sound plays on loop with 1.2 pitch- Camera moves to look near the midpoint between this enemey and
playertargetentity - animstate set to 1 (
Walk) Prefabs/Particles/WalkDustparticles are instantiated childed to thespritewith a local position (0.0, 0.2, -0.1) with its EmissionModule's rateOverTime set to 20.0- ShakeSprite called with an intensity of (0.1, 0.1, 0.1) and frametimer of 50.0
- Yield for a random time between 0.75 and 1.0 seconds
Shot2sound plays- Camera moved to look near
playertargetentityzoomed Prefabs/Particles/WalkDust's MainModule's startLifetime set to a constant curve with a value of 1.5 and its startSize set to 1.25- The amount of frames for the dash is determined. It's 27.0 frames unless any of the following is true where it's 21.0 frames:
- Over the course of the amount of frames determined, this enemy moves to
playertargetentityposition + (0.4, 0.0, -0.1) via a lerp Scuttle3sound stops- ShakeScreen called with an ammount of 0.3 and time of 0.65
Death3sound plays- DoDamage 1 or 2 call happens depending on which one has its conditions requirements fufilled
Prefabs/Particles/WalkDustmoves offscreen at 999.0 in y then destroyed in 2.0 seconds- Over the course of 41.0 frames, this enemy moves to + 2.25 in x via a BeizierCurve3 with a ymax of 2.25
- animstate set to 0 (
Idle) - Yield for 0.5 seconds