Thief¶
HardMode changes¶
HardMode being true does the following changes:
- In the gust attack move, the DoCommand call (which is a TappingKey) has
barfilldecrease 25% faster each frame. However, this change doesn't affect anything ifmashcommandaltis true making the command a SequentialKeys
Move selection¶
3 moves are possible:
- A single target aerial strike attack that may steal an item
- A party wide wind gust attack
- Flees the battle
Move 3 is always (and only) used if this enemy has an holditem.
As for the other moves, the decision of which moves to use is based on the following odds:
| Move | Odds |
|---|---|
| 1 | 4/10 |
| 2 | 6/10 |
Pre move logic¶
If the fleeing move wasn't used, the enemy will always change its position to Flying if it was Ground by doing the following:
- Over the course of 20.0 frames,
heightis lerped from 0 toinitialheight heightset toinitialheightbobrangeset tostartbfbobspeedset tostartbs- position set to
Flying
Move 1 - Aerial strike attack with potential item steal¶
A single target aerial strike attack that may steal an item.
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen | This enemy | playertargetID after GetSingleTarget |
2 | null | null | commandsuccess |
Logic sequence¶
- GetSingleTarget called
- animstate set to 102
- Yield for 0.1 seconds
Gleamparticles played withGleamsound at this enemy position + (0.25, 1.0 +height, -0.1) with an alivetime of 0.5- Yield for 0.5 seconds
BugWingsound plays via PlayMoveSound on loop usingsounds[9]- animstate set to 1 (
Walk) - Over the course of 30.0 frames:
heightchanges to 4.0 via a lerp- position is changes to (-1.0, 0.0, 0.0)
sounds[9]is stoppedspin4sound plays- z
spinset to 30.0 - ResetTrail called
trailset to false- Yield for a frame
- Yield for 0.34 seconds
spinzeroed outWoosh2sound playssprite's angles reset to Vector3.zero- Yield for a frame
trailset to true- Over the course of 15.0 frames, position is lerped to
playertargetentityposition flipset to true- DoDamage 1 call happens
- If
playerdata[playertargetID]doesn't have the Shield condition, StealItem is called - If an item was stolen from the call above, the local startstate is set to 4 (
ItemGet) - Over the course of 20.0 frames, this enemy moves to startp + the
heightbefore this action in y via a BeizierCurve3 with a ymax of 7.0 - position set to startp
heightset to the value before this actiontrailset to falseflipset to false
Move 2 - Wind gust attack¶
A party wide wind gust 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 any player party member whose hp is above 0.
DoCommand calls¶
| # | Conditions | timer | commandtype | data |
|---|---|---|---|---|
| 1 | None | 165.0 | TappingKey |
|
1: Due to the clamping logic related to this value, it means that the decrease value per frame is 0.005 * the game's frametime when hardmode is false and 0.00625 * the game's frametime when hardmode is true. Effectively, it means that hardmode being true makes barfil decrease 25% more per frame
DoDamage calls¶
| # | Conditions | attacker | target | damageammount | property | overrides | block |
|---|---|---|---|---|---|---|---|
| 1 | Always happen for each player party member whose hp is above 0 |
This enemy | The player party member | 1 | null | null | barfill >= 11 |
1: The super block timing is affected by the DoCommand timing caveat even if the regular block is true from suceeding DoCommand 1
Logic sequence¶
BugWingsound plays via PlayMoveSound on loop usingsounds[9]- MoveTowards (-1.5, 0.0, -0.2)
blockcooldownset to 0.0 which resets the blocking state to be expired (doesn't matter since there is enough yields later to make up for this)- Camera moves to look near
partypos[0]which is the front player party member position - Yield all frames until
forcemoveis done sounds[9]stopped- animstate set to 100
- CreateHelpBox called with 4 (the
TappingKeycommand's help) Wooshsound plays on loop usingsounds[8]with 0.5 pitch and 0.7 volume- A
Prefabs/Particles/ThiefSmokeis instantiated and positioned at (-4.0, 0.0, 0.0) rooted - DoCommand 1 call happens
- Yield all frames until
doingactiongoes to false and that 80.0 frames passed or more. Before each frame yield:- All player party member whose
hpis above 0 has their animstate set to 11 (Hurt) (but ifblockcooldownis above 0 meaning a block was done, it's set to 24 (Block) instead) - All player party member whose
hpis above 0 has their yspinset to 20.0 * the frame number since the start of these yields / 40.0 clamped from 0.0 to 1.0 sounds[8]pitch set to the frame number since the start of these yields / 80.0 clamped from 0.4 to 1.0
- All player party member whose
- DestroyHelpBox is called which sets
helpboxidto -1 and destroyshelpboxif it existed in 0.5 seconds with shrink before setting it to null Prefabs/Particles/ThiefSmokepositioned offscreen at -9999..0 in y, destroyed in 1.0 second and set to nullsounds[8]stops with a 0.02 delay- All player party member whose
hpis above 0 has theirspingetting zeroed out followed by DoDamage 1 call happen on them - Yield for 0.5 seconds
Move 3 - Flee¶
Flees the battle, no damages are dealt.
Logic sequence¶
tryenemyhealset to a new EnemyFlee coroutine with walkstate 27 (ItemWalk) with afterimage on this enemy- Yield all frames until
tryenemyhealgoes to null (the coroutine completed) - The local fled is set to true indicating a different post action will be done