ModernUO/Projects/UOContent
Kamron Batman 7da4171bbe
fix: creatures track and chase targets reliably around corners
Fixes the long-standing "monster loses track of a player who runs
around a corner" reports. Root causes and fixes:

1. Movement contract: MoveTo/ApproachTarget returned false on every
   healthy mid-chase tick, so MeleeAI's inherited "move failed and
   >RangePerception+1 -> Guard" clause (RunUO only ran it on real
   blockage) fired every tick of every chase. They now report failure
   only on genuine movement failure (no step with no working path, or
   approach give-up). ArcherAI's equivalent clause moves to the hard
   leash.

2. Last-known-position pursuit: while a combatant is in LOS its
   position is recorded each think tick. When the target vanishes
   (corner, hiding, recall) the creature investigates the last-seen
   spot, stands guard there ~10s (restoring RunUO's guard grace that
   had decayed to a single tick), and re-engages instantly if the same
   target re-enters view - bypassing the 10s reacquire throttle.

3. ChaseLeashRange (virtual, default RangePerception * 2 = 32 tiles)
   replaces the inline RangePerception * 3; per-creature tunable.

4. Group movement is now a crowding refinement, not a movement mode:
   it only engages near the target when allies contest the ring, and
   blocked/wall-slid steps escalate to the pathfinder instead of
   reporting success - previously any creature with one ally on the
   same target greedy-stepped for the whole chase and never pathfound.

5. Mages close distance when geometry (not hiding) blocks line of
   sight instead of standing at a wall holding a spell until the 60s
   combatant expiry.

6. Move budget: one actual step per AI think tick (half-step NextMove
   charge). Code paths that attempted several moves in one tick could
   cross multiple tiles at once - visible as "warping" when crowded
   creatures jockey for position. Blocked attempts consume nothing, so
   retry ladders are unaffected. CanMoveNow is wraparound-safe now.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 01:07:39 -07:00
..
Accounting perf(login): run password hashing on a parked worker thread (#2566) 2026-08-09 00:13:34 -07:00
Assistants chore: Use var everywhere (#2294) 2025-12-27 16:47:28 -08:00
Commands perf: Sleep the event loop when idle. Fixes networking micro-stalls. Adds event loop instrumentation. (#2559) 2026-08-09 13:24:59 -07:00
Compression feat: Implements new robust/pluggable backup/archive system. (#2388) 2026-03-22 19:51:20 -07:00
Configuration fix: Streamlines insurance. Insurance only executes when enabled. (#2550) 2026-07-26 09:47:49 -07:00
Console feat: Adds console commands (#1714) 2024-03-30 09:40:43 -07:00
Context Menus fix: Moves ContextMenu out of core, streamlines code, fixes bugs (#1873) 2024-07-20 21:33:23 -07:00
Engines feat: convert all delta-time serialization to anchored time (#2589) 2026-08-22 19:34:43 -07:00
Gumps fix: harden idle-sleep scheduling against bad config and misattributed saves (#2567) 2026-08-09 22:05:18 -07:00
Holiday Stuff perf: Migrate Veteran Reward gumps to DynamicGump/StaticGump (#2415) 2026-04-25 20:09:27 -07:00
Items feat: convert all delta-time serialization to anchored time (#2589) 2026-08-22 19:34:43 -07:00
Migrations feat: convert all delta-time serialization to anchored time (#2589) 2026-08-22 19:34:43 -07:00
Misc refactor: fold hand-written serializable property setters into field hooks (#2587) 2026-08-22 18:20:39 -07:00
Mobiles fix: creatures track and chase targets reliably around corners 2026-08-23 01:07:39 -07:00
Multis feat: convert all delta-time serialization to anchored time (#2589) 2026-08-22 19:34:43 -07:00
Network feat: make the blocklist and manual allowlist opt-in; cut the ban subsystem's on-loop cost (#2577) 2026-08-13 23:22:35 -07:00
Regions fix: Fixes criminals having guards called on them (#2348) 2026-03-13 17:35:47 -07:00
Skills fix: Removes unnecessary dictionary removal guards (#2565) 2026-08-08 11:50:01 -07:00
Special Systems feat: Add zero-alloc interpolation handler to ValueStringBuilder, replace all StringBuilder usage (#2387) 2026-03-22 14:23:44 -07:00
Spells feat: convert all delta-time serialization to anchored time (#2589) 2026-08-22 19:34:43 -07:00
Systems/JailSystem fix: Bumps deps. Updates copyrights (#2353) 2026-03-05 19:36:54 -08:00
Targets chore: Use var everywhere (#2294) 2025-12-27 16:47:28 -08:00
Text fix: Bumps deps. Updates copyrights (#2353) 2026-03-05 19:36:54 -08:00
Utilities perf(login): run password hashing on a parked worker thread (#2566) 2026-08-09 00:13:34 -07:00
World Saves perf(messages): mechanical interpolation cleanups (#2436) 2026-05-03 18:26:49 -07:00
Module.cs fix: Fixes sending packets and sidesteps a major issue with stackalloc and PGO in .NET 8 (#1607) 2023-11-21 12:18:20 -08:00
UOContent.csproj feat: adopt serialization generator v4 (field-side linkage, anchored timers) (#2586) 2026-08-22 17:54:02 -07:00