C2-52B: J: There is a glitch where Dereck cannot walk past column 18 in the Acid Rain Valley map. Ariel: I’ll inspect the Acid Rain Valley map/unit data and the movement/collision code around column 18, then patch the source and return a fixed backup zip. I found Acid Rain Valley as Dungeon map 015. Dereck starts on row 18, column 12, and there is a blocking rock tile at row 18, column 18 directly in his eastward path. Thought for 6m 24s Fixed in C2-52B. Cause: all player-cast NPCs were being treated as active unit members immediately, so Phillip/Poindexter’s offscreen collision was limiting Dereck’s movement in Acid Rain Valley. I changed player casts so they only join the active player unit after recruitment, while still allowing click-to-lead. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json Validated: node --check passes for Dungeon.js both patched condition JSON files parse cleanly reachability check now lets Dereck route beyond column 18 before recruiting other player casts Download the fixed C2-52B zip J: I meant as a delta. Ariel: Understood — I’ll repackage this as a delta containing only the changed files, not the full project backup. Thought for 42s Got it — here’s the delta-only package. Contains only: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json C2-52C: J: Player units erroneously keep formation. Ariel: I’ll patch the delta so recruited player casts behave as independent party members instead of maintaining guard-style formation offsets. I’ll keep this as the next serial delta rather than a full backup. J: no units of any kind are intended to keep formation. Ariel: Thanks — I’ll broaden the fix: formation-following should be removed for all unit movement, not just player-cast units. Each unit member should move only when its own action/pathing says to, with no preserved offsets. I found the concrete player-side formation bug: startMove() translates every recruited player NPC by the leader’s same dr/dc. I’m changing that so only the current leader moves under party input. Fixed as C2-52C delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js What changed: Removed player-unit formation movement from startMove(). canPlayerUnitMove() now validates only the current leader’s destination. Removed the unused player-unit formation helper. Disabled legacy cluster formation preservation paths so no unit type can fall back to offset/formation routing. Validated: node --check passes. Dungeon.js kept with CRLF line endings. Download the C2-52C unit-formation delta C2-52D: J: All party members should attempt their mutual destination up to 3 attempts each. Ariel: I’ll apply this on top of the C2-52C delta: party members should no longer hold formation, but each party member should independently try to reach the leader’s intended destination, with up to 3 candidate attempts. I’m treating “mutual destination” as a shared target tile, not a formation offset. The leader still gets the commanded move, and each recruited party NPC independently routes toward that same target with a 3-tile attempt budget. Thought for 4m 41s Fixed as C2-52D delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js What changed: Party members now share a mutual destination instead of formation offsets. Pointer/Auto-Walk routes preserve the clicked route target as the shared party destination. Each recruited party NPC independently routes toward that destination with a 3-attempt budget. Party members may move independently; no formation preservation was reintroduced. Leader movement is still blocked if another party member occupies the leader’s next tile and cannot vacate. Validated: node --check passes. Delta contains only the changed Dungeon file. CRLF line endings preserved. Download the C2-52D party mutual-destination delta C2-52E: J: Players in a unit should follow the leader, not use blind destination reaching, and if blocking the leader's path, they should intelligently get out of the leader's way. Ariel: Understood — I’ll replace the “blind mutual destination” behavior with leader-following: party members track the leader’s trail, and any member occupying the leader’s next step tries to sidestep/advance out of the way intelligently before blocking. J: Player units should intelligently step out of the leader's way as calculated in advance. Ariel: Got it — I’ll split the behavior by unit type: player parties use leader-follow trail behavior, while guard mobs use coordinated mob movement toward their shared objective, with blockers vacating instead of preserving formation. J: Player units should intelligently step out of the leader's way as calculated in advance. However, Guard units should do the same, except as a mob, not follow the leader. Ariel: I’m going to make the unit planner proactive rather than reactive: it will reserve the leader’s next tile first, move any blocker out before the leader commits, then move remaining members toward leader-vacated tiles. J: Remember, unit members should never step through each other. Ariel: Right — no member may step through another member. I’ll treat unit movement as a turn plan with reservations: vacate blockers first, reserve destinations, and reject any move that crosses or swaps through occupied member tiles. I’m narrowing the implementation so movement is still one-tile-per-turn for the visible unit step. “Up to 3 attempts” will be used as candidate-search depth/choices, not permission for members to phase through or sprint through each other. Thought for 13m 45s Fixed as C2-52E delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js What changed: Player units now use leader-following, not blind destination routing. Player members calculate movement in advance and step out of the leader’s next tile before the leader commits. Guard units now move as a coordinated mob, not a formation and not leader-following. Unit movement uses reservation/edge checks so members do not: keep formation step through each other swap through each other reserve the same destination tile Validated: node --check passes. Delta contains only the changed Dungeon file. CRLF line endings preserved. Download the C2-52E unit-pathing delta C2-52F: J: 1. You forgot to include the full player unit in battle mode. 2. Guard mobs stall out and fail to continue to track the player unit and don't reset back to their original positions either. 3. Guard mobs should tactically track the entire player unit, not just the leader. Ariel: I’ll patch this as the next delta on top of C2-52E. The targets are: battle mode includes every recruited player member, guard mobs keep tactical pursuit/reset behavior alive, and guard targeting considers the whole player unit. I’ve isolated the battle bug: battle entry was reusing stale playerActors, so newly recruited party members could be missing from the active battle roster. I’m changing battle entry to rebuild/merge the current full party every time. Thought for 4m 37s Fixed as C2-52F delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js What changed: Battle Mode now rebuilds/merges the current full player party when battle starts. Recruited player members are added to the Battle Mode roster immediately. Battle turns now advance through living player actors before the enemy turn. Guard mobs now target the entire living player unit, not just the leader. Guard mobs use tactical engagement cells around the player unit instead of blind leader chasing. Guard mob follow/return state is now shared across the cluster so members that could not move in one pass do not stall permanently. Guard return-clear checks now consider the whole player unit, not just Dereck. Unit movement reservations still prevent stepping through or swapping through each other. Validated: node --check passes. Delta contains only the changed Dungeon file. CRLF line endings preserved. Download the C2-52F party battle / guard tracking delta C2-52G: J: Player unit members need to recursively get out of each other's way when the leader is trying to get through. Ariel: I’ll fix this as the next serial delta. The core change is a recursive pre-plan: when the leader needs a tile, the blocker moves; if that blocker needs another member’s tile, that member moves first, without swaps or pass-through. //// Ariel: Understood — I’ll make the player-unit blocker clearing recursive: if member A needs to move out of the leader’s way but member B blocks A, B must be planned first, with no stepping-through or swaps. Thought for 52s Fixed as C2-52G delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js What changed: Player-unit blocker clearing is now recursive. If the leader’s next tile is blocked by party member A, and A’s escape tile is blocked by party member B, B is planned first. Recursive clearing respects: max 3 candidate attempts per member no stepping through each other no same-tile reservations no member-to-member swaps no formation behavior Validated: node --check passes. Delta contains only the changed Dungeon file. CRLF line endings preserved. Download the C2-52G recursive player-unit clear delta C2-52H: J: Guards are failing to properly recruit and mob to run down the player unit. Ariel: I’ll patch this as the next serial delta. The guard side needs two fixes: proper mob recruitment into an active cluster, and a persistent tactical chase target based on the whole player unit. J: The goal of the Guard mobs is to pin down the unit they are tracking from being able to escape. Ariel: Exactly — guard mobs should act like containment units: close lanes around the tracked player unit, coordinate blockers, and keep pressure until battle/pin/reset conditions resolve instead of wandering or stalling. I’m going to treat guard recruitment as “cluster wake-up”: once one guard is armed, the whole matching cluster gets a shared chase state. The mob will keep tactically converging on the whole player unit until it pins/engages or the return-clear condition allows reset. Thought for 6m 18s Fixed as C2-52H delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js What changed: Guard mobs now “wake up” as a whole cluster when one guard is armed. Guard mobs keep pursuing while the player unit is still inside the guarded/return area instead of stalling after the follow budget. Once the player unit clears the guarded area, the mob can switch back into return/reset behavior. Guard mob movement now uses recursive blocker clearing, so guards can move out of each other’s way without: keeping formation stepping through each other swapping through each other reserving the same destination Guard mobs continue targeting containment cells around the entire living player unit, not just Dereck/the leader. Validated: node --check passes. Delta contains only the changed Dungeon file. CRLF line endings preserved. Zip integrity test passes. Download the C2-52H guard mob containment delta C2-52I: J: Guards are supposed to recruit other Guards up to 6 tiles away. Ariel: I’ll apply this as the next serial delta on top of C2-52H. Guard recruitment should expand through nearby guards within a 6-tile search radius, then the resulting mob shares containment/chase state. J: Guards are supposed to recruit other Guards up to 6 tiles away as long as there is a navigable path between them. Ariel: Right — it should be path-gated, not just distance-gated. I’ll make guard recruitment flood through other guards within 6 navigable tiles, so walls/barriers prevent recruitment even when Euclidean/Manhattan distance is close. I’m patching recruitment as path-length connectivity, not proximity alone: a guard can recruit another guard if a cardinal terrain path of 6 tiles or fewer connects their tiles. Movement reservations will still prevent guards from stepping through each other. J: Guards should recruit via path even when a player blocks it. Ariel: Got it — guard recruitment pathfinding should ignore player bodies as blockers for recruitment connectivity, while still respecting terrain/walls and non-navigable tiles. Actual guard movement still must not step through players or other guards. Fixed as C2-52I delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard recruitment now expands through matching Guards up to 6 navigable cardinal tiles away. Recruitment pathfinding is terrain/path-gated, not raw distance-gated. Player unit members do not block Guard recruitment connectivity. Walls/barriers/non-navigable terrain still block recruitment paths. Actual Guard movement still does not step through players, Guards, or other occupied movement blockers. Validated: node --check passes. Both condition JSON files parse cleanly. Delta zip integrity test passes. Download the C2-52I guard path-recruitment delta C2-52J: J: Guard units still don't adequately hunt down the player unit. Ariel: I’ll strengthen the Guard AI rather than changing recruitment again: the mob should keep selecting tactical intercept/pin cells around the whole player unit and continue moving every turn until it closes, not stall on a single bad target. I found the likely stalling cause: Guard mob pathing was still mostly greedy Manhattan stepping. That means a mob could fail when the best local step was blocked, instead of pathfinding around the obstruction toward containment cells. Thought for 4m 52s Fixed as C2-52J delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js What changed: Guard mob hunting now uses path-distance routing toward containment cells, not greedy Manhattan stepping. Guards can route around obstacles toward the whole player unit instead of stalling on a locally blocked “best” step. Guard mobs keep pursuing while they can still track the player unit within their tactical hunt radius. Recursive guard blocker clearing still prevents: formation keeping stepping through each other swapping through each other duplicate destination reservations Validated: node --check passes. Delta contains only the changed Dungeon file. Zip integrity test passes. Download the C2-52J guard mob hunt delta C2-52K: J: 1. player unit movement irregularly hangs. 2. Mobs keep stalling. Ariel: I’ll patch both together as the next serial delta. The likely fix is to simplify the unit planner so it never waits on unresolved recursive chains, and make mob turns continue selecting a valid path target each tick instead of sticking to a failed plan. J: Remember to use GE conditions.json Ariel: I’ll make this C2-52K. I’m going to move the tuning knobs into GE/conditions.json and have Dungeon.js read them, so movement attempts, hunt radius, and containment behavior are condition-template driven instead of hardcoded. Thought for 7m 58s Fixed as C2-52K delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Player-unit movement now uses conditions.json via a new Player: Unit Movement template. Player blockers now recursively clear with rollback, so failed clear attempts no longer poison the movement plan and cause irregular hangs. Player follower movement can recursively clear party-member blockers too. Guard mob hunting now uses conditions.json tuning: Tactical Attempts Attempt Limit Hunt Search Tiles Tracking Radius Retarget Every Step Guard mobs now keep tracking through player-occupied tracking paths, while actual movement still blocks against players. Guard mob pathing now retries with tactical side-steps when direct reducing moves stall. Added GE conditions: Player: Unit Move Blocked NPC: Guard Hunt Active NPC: Guard Hunt Target Count NPC: Guard Hunt Stall Count Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52K unit-hunt unjam delta C2-52L: J: Mobs stall per 2-turn move. Ariel: I’ll patch this as the next serial delta. A “2-turn move” stall usually means mob members are retaining a half-step/in-progress state or waiting for the animation cycle instead of re-planning on each mob turn. I found the mismatch with conditions.json: Guard templates say Retarget Every Step, but the runtime was still letting mob routes animate through multi-tile paths before the next tactical replan. That creates the 2-step stall pattern. Thought for 4m 24s Fixed as C2-52L delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard mobs now honor Retarget Every Step / Continuous Retarget from conditions.json. After each completed Guard mob step, the mob immediately replans the next tactical step instead of waiting for another player step. This removes the “2-turn move” stall pattern. Player input/movement is no longer processed while NPC/mob motion is still active, preventing irregular movement hangs during mob turns. Added condition: NPC: Guard Hunt Retarget Every Step Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52L mob-retarget unstall delta C2-52M: J: 1. Player units are erroneously two steps behind each other instead of one step behind each other. 2. Guard mobs work ok tho. Ariel: I’ll keep Guard mob logic intact and patch only the player follower spacing. This should become the next serial delta, with the follower trail corrected from two-step lag to one-step lag. I’m keeping the C2-52L Guard fixes as-is. The player-side issue is the follower target trail: it can preserve a two-tile gap instead of making each follower close onto the immediately vacated party tile. Thought for 4m 59s Fixed as C2-52M delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Player followers now compact to a one-tile trail instead of preserving a two-tile gap. Followers target the immediately trailing path cell of the member ahead of them. Added GE condition tuning: Follow Spacing: 1 Catch-Up Tiles: 3 Compact Trail: true Use Trailing Path Cells: true Guard mob behavior from C2-52L was left intact. Validated: node --check passes. both conditions.json files parse cleanly. CRLF preserved. delta zip integrity test passes. Download the C2-52M player-unit trail-spacing delta C2-52N: J: When Mobs are active player units stall. Ariel: I’ll patch this as C2-52N and keep the Guard mob behavior intact. The likely issue is turn locking: player input is being suppressed whenever mob motion is active, but continuous mob retargeting can keep that flag alive too long. I found the actual turn-order problem: continuous Guard retargeting can immediately schedule another mob step before the player input phase runs, so player movement gets starved while mobs are active. Thought for 2m 57s Fixed as C2-52N delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard mobs still retarget continuously when the player is idle. When player movement input is ready, active Guard mob retargeting now yields the next turn instead of immediately scheduling another mob step. This prevents Guard mobs from starving/stalling player-unit movement. Added GE conditions: Player: Unit Move Pending NPC: Guard Hunt Yielded To Player Added condition-template tuning: Yield To Player Input Player Turn Priority Do Not Starve Player Turn Accept Input Between Mob Steps Mob Retarget Yield Priority Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52N mob-turn-yield delta C2-52O: J: "C:\Users\trkea\OneDrive\nenserver 0-050j2\Pictures\Screenshots\Screenshot 2026-06-29 211126.png" See how the player unit fails to move to the left? Add a button to GE HUD that captures a zip of all GE jsons as active in memory. (As a core dump based debug) Ariel: Thought for 8m 3s Implemented as C2-52O delta. Changed: public/Gamepad-Enforcer/js/GE-HUD.js public/Gamepad-Enforcer/GE/hitboxes.json public/Gamepad-Enforcer/GE/conditions.json What changed: Added a new GE HUD button: GE Dump Clicking it downloads a browser-generated zip of GE JSON as active in memory. Dump includes: GE/*.json from active merged window.ge.files Active/*.json from active top-level GE runtime JSON mirrors Gamepads/*.json from active gamepad configs Runtime/hitboxes.active.json Runtime/world-conditions.active.json Runtime/window-ge.snapshot.json manifest.json Added GE hitbox/action: GE Core Dump: Capture Added GE conditions: GE Core Dump: Pending GE Core Dump: Captured GE Core Dump: File Count GE Core Dump: Byte Count GE Core Dump: Last Filename Validated: node --check passes. both GE JSON files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52O GE JSON Core Dump HUD delta C2-52P: J: "C:\Users\trkea\OneDrive\nenserver 0-050j2\Pictures\Screenshots\Screenshot 2026-06-29 211126.png" See how the player unit fails to move to the left? Now that we have a way to dump GE, it should be easier to debug this. "C:\Users\trkea\Downloads\GE-JSON-Core-Dump-alpha-Dungeon-2D-20260629-212928.zip" Ariel: Thought for 5m 15s Patched as C2-52P delta. The screenshot points to the real cause: at X:32 Y:9, the tile immediately left is X:31 Y:9, which is map legend tile 5 / water03.csv. In Acid Rain Valley that green tile was still marked blocking, so the leader move was rejected before player-unit recursive clearing even mattered. Changed: public/alpha/Dungeon/assets/maps/015/legend.csv public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Acid Rain Valley water03.csv tile is now non-blocking. Added GE core-dump/debug conditions for player-unit move failure: Player: Unit Move Blocked Reason Player: Unit Move Blocked Row Player: Unit Move Blocked Col Player: Unit Move Blocked Tile ID Player: Unit Move Blocked Tile Behavior Player: Unit Move Blocked Tile Blocking Player: Unit Move Blocked Tile Sprite Validated: node --check passes. both patched conditions.json files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52P player-unit block debug delta C2-52Q: J: water is intentionally blocking. Ariel: Right — I’ll revert that map-data change. The fix needs to stay in unit pathing/debug logic, not make water03.csv walkable. J: Poindexter and Phillip fail to get out of Dereck's way in the mob case. Ariel: Thought for 7m 14s Patched as C2-52Q delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json public/alpha/Dungeon/assets/maps/015/legend.csv What changed: Reverted Acid Rain Valley water03.csv back to blocking. Player-unit blocker clearing now prefers perpendicular side-steps first during mob pressure. This lets Poindexter/Phillip recursively clear Dereck’s lane without making water walkable. Still preserves: no formation no stepping through each other no member swapping through each other max 3 legal clear attempts per member Added GE condition-template tuning: Vacate Perpendicular First Step Aside First Mob Pressure Side Clear Do Not Spend Attempts On Blocked Terrain Validated: node --check passes. both patched conditions.json files parse cleanly. delta zip integrity test passes. Download the C2-52Q player-unit mob-clear delta C2-52R: J: When a mob is active, player unit fails to move. I am testing using only a mouse. "C:\Users\trkea\OneDrive\nenserver 0-050j2\Pictures\Screenshots\Screenshot 2026-06-29 215414.png" "C:\Users\trkea\Downloads\GE-JSON-Core-Dump-alpha-Dungeon-2D-20260629-215415.zip" Ariel: Thought for 12m 15s Patched as C2-52R delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Mouse-queued player movement now stays pending while a Guard mob step is active. Guard mob retarget paths are trimmed to one visible step per pass when Retarget Every Step is enabled. After the current mob step finishes, pending player-unit mouse movement gets priority before the next Guard follow/return retarget can schedule. Added GE condition: NPC: Auto-Walk Yielded To Player Added/updated GE tuning: One Tile Per Retarget Step Player Turn Priority Do Not Starve Player Turn Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52R mob-input-yield delta C2-52S: J: When an entire mob returns to their start, the mob shall disband. Ariel: I’ll patch this as the next serial delta on top of C2-52R: once every recruited Guard in the active mob has returned to its own original/start tile, that mob state should clear so the Guards are no longer grouped/active until recruited again. Thought for 4m 54s Patched as C2-52S delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard mobs now retain mob membership during return until all members reach their own original/start tiles. Once the entire mob is back at start, the shared Guard mob state is cleared/disbanded. Returned Guards become idle again and must be recruited again by normal Guard path-recruitment. Added GE conditions: NPC: Guard Cluster Disbanded NPC: Guard Cluster Disband Count Added GE return tuning: Disband When Entire Mob Returned Disband On Full Return Disband Requires Entire Cluster At Origin Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. Download the C2-52S guard-mob disband delta C2-52T: J: Mob steps aren't depleting properly. Ariel: Thought for 4m 32s Patched as C2-52T delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard mob follow steps now preserve current depletion when recruiting/merging additional Guards. New recruits/merged Guards inherit the mob’s current Follow Steps Spent instead of resetting it to 0. Reset Follow Budget On Recruit and Reset Follow Budget On Merge are now condition-driven and set to false for Guard mobs. Added GE condition: NPC: Follow Steps Remaining Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. Download the C2-52T mob-step-depletion delta C2-52U: J: Guard steps should be out of 25. Ariel: Thought for 1m 32s Patched as C2-52U delta. Changed: public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard mob chase budget is now 25 steps. Updated: Maximum Follow Steps: 25 Max Chase Steps: 25 Return budget Maximum Follow Steps: 25 Updated the Guard mob condition description to reference the 25-step chase budget. Validated: both conditions.json files parse cleanly. delta zip integrity test passes. Download the C2-52U guard-step-budget delta C2-52V: J: Guards need to get out of each other's way when returning to their original posts with leader-most of the mob taking priority. Ariel: Thought for 6m 1s Patched as C2-52V delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard mob return planning now uses leader-most priority instead of farthest-first priority. Returning Guards recursively clear lower-priority Guards out of their way. Each Guard still returns to its own original post. Movement still blocks: stepping through each other swapping through each other duplicate destination reservations player-unit occupied tiles Added GE conditions: NPC: Guard Return Blocker Clear Count NPC: Guard Return Leader Priority Added GE return tuning: Recursive Clear Clear Blockers Recursively Get Out Of Each Other's Way Leader-Most Priority Return Priority: Leader-Most Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52V guard-return unjam delta C2-52W: J: Sometime a guard gets stuck not taking an obvious path back to its post after a mob disbands. Ariel: I’ll patch this as the next serial delta. The return logic needs a fallback pathfinder after disband/return, so a Guard does not rely only on its last mob-step plan when a clear path back to its post exists. Thought for 4m 0s Patched as C2-52W delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard return now has a full pathfinder fallback for return/disband cases. If a Guard cannot use the direct one-pass return plan, it searches a longer path back to its original post. If the post is temporarily occupied, the Guard can route to the closest legal approach tile instead of freezing. Added GE condition: NPC: Guard Return Fallback Path Count Added Guard return tuning: Path Search Tiles: 96 Return Search Tiles: 96 Fallback Path To Post Use Full Pathfinder Fallback Allow Approach When Post Occupied Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52W guard-return fallback delta C2-52X: J: "C:\Users\trkea\OneDrive\nenserver 0-050j2\Pictures\Screenshots\Screenshot 2026-06-30 094623.png" See how the guard middle-left is oscillating instead of returning to its post. Ariel: I’ll patch this as the next serial delta. The oscillation means return planning is accepting a step that does not monotonically improve the guard’s route-to-post, then the next tick undoes it. I’ll make return movement lock onto a stable path distance and reject backtrack/side-effect moves unless they are clearing a higher-priority blocker. Thought for 6m 51s Patched as C2-52X delta. Changed: public/alpha/Dungeon/2D/js/Dungeon.js public/alpha/Dungeon/2D/GE/conditions.json public/alpha/Dungeon/GE/conditions.json What changed: Guard return movement now replans one tile per return step. Return routing now rejects immediate non-progress backtracking, which is what causes the visible left/right oscillation. Return planning now requires path-distance progress toward each Guard’s own original post. Lower-priority Guards may still clear out of the way, but not by worsening their own return route. Added GE return tuning: One Tile Per Return Step Retarget Return Every Step Prevent Oscillation Reject Immediate Backtrack Stable Return Path Require Path Progress Monotonic Path Distance Added GE conditions: NPC: Guard Return Oscillation Prevented NPC: Guard Return Stable Path Validated: node --check passes. both conditions.json files parse cleanly. delta zip integrity test passes. CRLF preserved. Download the C2-52X guard-return stabilize delta