Pets slowed dramatically after #2591 (issue #2593): the per-step budget grew
from half a think interval to the full RunUO-parity move table, and a guarding
pet resolves passive (OnCombatantChange clears Warmode whenever the combatant
clears), putting Guard/Come at ~1.05s/step for Medium-bucket pets. Order
changes and speed-ups also waited out the previously scheduled AITimer wake,
because the timer wheel reads Interval only after the next fire.
- CurrentMoveSpeed: a controlled pet executing a master's movement order
(Come/Follow/Guard, no combatant) paces steps on the think clock — the
wild-creature move table no longer slows obedience. Combat chases and
herding keep their own pacing.
- AITimer: track the pending wake and reschedule (Stop, Delay = remaining,
Start) when a speed-up or fresh order moves the earliest deadline up;
changes inside a tick still flow through ScheduleNext. New Prod() wakes the
AI immediately on player commands, including from a stopped timer (stable
claims no longer wait out the random construction stagger).
- DoOrderGuard: guard-following routes through WalkMobileRange so it registers
a move intent (between-think move wakes) and paths around obstacles instead
of bare greedy stepping quantized to the think grid.
Closes#2593
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>