agile_melee_movement 
Yakety sax type melee movement; If you can attack (next_move off cooldown), then get in range, otherwise, move inbetween standdoff_min and max, if within the band; randomly jitter in the band.
Vars | |
| current_mode | Which AGILE_MELEE_MODE_ we drove movement with last tick, so we only tear the moveloop down when it flips. |
|---|---|
| hold_until | When we can move post attack |
| jitter_chance | Percent chance per tick to take another step while loitering inside the standoff band. |
| last_next_move | Last next_move we saw on the pawn. A jump means a hit landed, which is what starts the post attack pause. |
| movement_failed | Set by on_movement_failed() when the movement system gives up pathing. |
| standoff_max | Distance past which we close in again even while on cooldown, so we never lose the target. |
| standoff_min | Distance we back off to once we've swung. |
| target_key | Blackboard key holding the atom to fight. |
| wait_after_attack | time to stay planted until after a hit. Makes it a bit more fair to fight against. |
Procs | |
| can_swing | Whether our melee attack is off cooldown, meaning it's worth being adjacent right now. |
| close_in | Beelines into melee range. Retargeting to a new target is handled inside start_moving_towards(). |
| jitter | Takes one step to a random adjacent turf, anywhere that keeps us inside the standoff band. |
| retreat | Steps one tile away from target using backstep avoidance, falling back to shuffled directions if blocked. |
| set_movement_mode | Switches which mode is driving our movement, tearing the current moveloop down first. |
Var Details
current_mode 
Which AGILE_MELEE_MODE_ we drove movement with last tick, so we only tear the moveloop down when it flips.
hold_until 
When we can move post attack
jitter_chance 
Percent chance per tick to take another step while loitering inside the standoff band.
last_next_move 
Last next_move we saw on the pawn. A jump means a hit landed, which is what starts the post attack pause.
movement_failed 
Set by on_movement_failed() when the movement system gives up pathing.
standoff_max 
Distance past which we close in again even while on cooldown, so we never lose the target.
standoff_min 
Distance we back off to once we've swung.
target_key 
Blackboard key holding the atom to fight.
wait_after_attack 
time to stay planted until after a hit. Makes it a bit more fair to fight against.
Proc Details
can_swing
Whether our melee attack is off cooldown, meaning it's worth being adjacent right now.
close_in
Beelines into melee range. Retargeting to a new target is handled inside start_moving_towards().
jitter
Takes one step to a random adjacent turf, anywhere that keeps us inside the standoff band.
retreat
Steps one tile away from target using backstep avoidance, falling back to shuffled directions if blocked.
set_movement_mode
Switches which mode is driving our movement, tearing the current moveloop down first.