Update 2.185
6/30/2026
v2.185.0.0BETAMINOR
SeymourJun 27, 2026
Overdrive: "LAB" tag removed + per-step target selector
- Removed "LAB" from all user-visible Overdrive block strings. Each finisher sequence step now has its own target ComboBox (Random frontline / Lowest HP).
AddOverdriveFinisherSequencelosttemplateandfallbackTargetparams — each command carries its own target.OverdriveFinisherStepVM class. Build 0 errors. RT0 gate 330/330 PASS
v2.184.1.0
v2.185.1.0BETAPATCH
WakkaJun 26, 2026
Arena+ cross-map deferred restore: don't corrupt random encounter bins
- Adds
ArenaPlus_ArmDeferredFileRestore+ArenaPlus_TickDeferredFileRestorein dllmain.cpp. After cross-map 781D60 launch succeeds, arms a ~30s timer (1800 frames). When expired, restores.spiraforge.bakover the composed bin. Root cause: cross-map deploy (e.g. Macalania Forest) wrote Dark Aeons intomcfr00_00.bin, which is also a random encounter formation — random encounters spawned Dark Aeons instead of normal fiends. DLL built + deployed
v2.185.0.0
v2.185.4.0BETAPATCH
SinJun 27, 2026
Sin Curse Lab v2: AiQueryProperty removed, SinScaleInject v2 CLI, docs
- AiQueryProperty hook (RVA 0x3B2DD0) removed — was FFX_Battle_AggregateActorProperty, detour crashed menu. F7 Zone submenu reverted. g_sinPreset[93] VAR kept. SinScaleInject v2 CLI: --area, --seed, --intensity, --save-clean, --restore, --dry-run, XorShift32 RNG, HP/stats scaling. ATEL injection disabled (pending AiInstruction rewrite). Docs: SIN_CURSE_LAB_SESSION_2026-06-27.md (13 sections), SIN_CURSE_V2_BIN_FIRST_PLAN_2026-06-27.md (.bin-first plan)
v2.185.3.0
v2.185.5.0BETAPATCH
SinJun 27, 2026
Sin Curse Lab v2: SinScaleInject working + hook simplified
- SinCurseHook.cpp: MonsterLoad, SetScaleAxis, AiQueryProperty, LaunchRestore removed. btlmap filter. CREATE_NO_WINDOW. SinScaleInject v2 uses Monster_StatSheet.ReadSingle/WriteSingle. Clean bins regenerated from repo. 62 managed DLLs deployed
v2.185.4.0
v2.185.6.0BETAPATCH
SinJun 27, 2026
Sin Lab v2.1: code review + bug fixes + threat sync
- SinScaleInject: kernel names now restore from clean before each
--area(ProcessArea, SaveClean, RestoreAll). SaveClean and RestoreAll now cover kernel/monster*.bin. RNG aligned with C++:seed = seed ^ (seed << 16). g_sinPreset[93] removed (dead code). time(nullptr) removed from seed (deterministic RNG). kAreaTable (C++) and AREA_T (C#) synced with CSV threat caps: 14 values corrected, tMin=0 always, regions added (zanarkand, postgame, thunder_plains_cross, macalania_bosses)
v2.185.5.0
v2.185.7.0BETAPATCH
RikkuJun 28, 2026
UI polish: softer palette + visible selection
- StudioTokens.axaml accent
#5DD0B4→#2A9D8F, calmer fills/borders, StudioTheme.axaml ListBox selection#15323B→#1A3040with a visible 1px border. Selection/tab/expander/status tokens updated. Release build 0 errors
v2.185.6.0
v2.185.8.0BETAPATCH
SinJun 28, 2026
SIN patch review follow-up: CLI hardening + hook-build sanity gate
SinScaleInject:--restore-areanow requires an id; invalid--seed,--t, and--intensityfail early with clear messages; negative--tis rejected;--intensityis limited to0..100;MonsterStatSheetStruct.StatSheetnow has a default init to remove the nullability warning.build_hooks.ps1: keepsversion.resembedded viacl.exeand now rejects PolyHook builds when the finalffx-hooks.dllcomes out suspiciously small, preventing silent artifact regressions. Review/follow-up documented indocs/ai/SIN_PATCH_REVIEW_2026-06-28.md
v2.185.7.0
v2.185.9.0BETAPATCH
SinJun 28, 2026
SinScaleInject clean deploy to `modules\\tools`
- New
RuntimeTools/SinScaleInject/deploy-sinscaleinject.ps1publishesSinScaleInjectinto a clean folder and replacesmodules\\tools\\SinScaleInject\\with a minimal standalone payload (SinScaleInject*,SinCoreLib.dll,Xe.BinaryMapper.dll), removing the accidentalFFXProjectEditor.exe/Avalonia drag from the game folder.Program.csnow derivesGameRootfromAppContext.BaseDirectorywhen running frommodules\\tools\\SinScaleInject, so it no longer depends on the hardcodedSteamLibrary\\...for in-game data paths. Locally validated: Release build0 errors / 0 warnings, clean publish, and real deploy to the game path. Status:Needs Testingin-game; repo paths (clean-base/roster-dir) remain machine-local by design
v2.185.8.0
v2.185.10.0BETAPATCH
LuluJun 28, 2026
Monster AI Phase Rotation: stable variable IDs + immediate battle-start opener
- The
Phase Rotation Managerno longer derivesvar[N]from a textualIndexLabelparse:AiPhaseVariableAuditRownow carries a stable numericVariableIndex, and the UI showsID###directly so aliases/text cannot be mistaken for the real variable id. Phases usingAs soon as the battle startsnow emitforcePerformCommand (0x705A)instead ofperformCommand (0x700B), so the opener does not depend on the regular action queue during startup.RuntimeTools/AiScriptLab --phase-rotation-rt0now includes a battle-start opener case and still PASSes319/319; the editor Release build closed with 0 errors. Status:Needs Testingin-game, especially opener order/animation and the realm020case
v2.185.9.0
v2.185.11.0BETAPATCH
LuluJun 28, 2026
Monster AI Phase Rotation: portable authoring IDs + non-destructive var materialization
- The
Phase Rotation Managernow separates each variable'sreal IDfrom itsauthoring/template ID: the UI shows both, stores the preferred ID in local metadata, and lets recipes request a highervar[N]without confusing aliases with the real operand. During apply, the editor materializes extra descriptors when needed by appending aliases for the same storage/slot, without overwriting existing vars; if the requestedIDis already occupied by another variable, the recipe moves to the next free index. Phase guards are remapped to the materialized index as well.RuntimeTools/AiScriptLab --var-growremains PASS185/185and--phase-rotation-rt0remains PASS319/319; the editor Release build closed with 0 errors. Status:Needs Testingin-game, especially recipe import/export across monsters with different var tables
v2.185.10.0
v2.185.12.0BETAPATCH
LuluJun 28, 2026
Monster AI Phase Rotation: real top-insert battle-start + `forcePerformCommand` round-trip
- The
Phase Rotation Managernow handlesAs soon as the battle startssteps as a physical top insertion at the entrypoint instead of only chaining a new block at the end of the code. That keeps the opener literally above the older handler body and reduces them020failure mode where an immediate action could consume the pass before the remaining openers. The draft reader now recognizesforcePerformCommand (0x705A)as well, so reopening/reapplying opener recipes no longer ignores those blocks.RuntimeTools/AiScriptLab --phase-rotation-rt0remains PASS319/319and the editor Release build closed with 0 errors. Status:Needs Testingin-game, especially the realm020 - Teste Não Funcional 2.binopening order
v2.185.11.0
v2.185.13.0BETAPATCH
LuluJun 28, 2026
Monster AI Phase Rotation: AI battle-start disabled; honest trigger moved to pending runtime/CTB edge work
- The
Phase Rotation Managerno longer pretends thatAs soon as the battle startsis a safe gameplay trigger inside theAiFile. The writer now rejectsBattleStartapply attempts, the UI relabels that path asCombatHandler init (disabled LAB), and warnings point to the correct route: a runtime hook on the CTB edge for the desired “after any valid turn passed” behavior.RuntimeTools/AiScriptLab --phase-rotation-rt0was brought back to a fullyonTurnrecipe and still PASSes; the localm020.bintest file was restored to the clean baseline outside the repo
v2.185.12.0
v2.185.14.0BETAPATCH
LuluJun 29, 2026
Monster AI Phase Rotation: real `AfterAnyValidTurn` dispatch on the CTB edge
PhaseTurnEdgeHookis no longer probe-only: the runtime callback now resolves the edge actor, derives the livem###, scans every matching sidecar entry for that monster, and queues the authored commands through the structural bridge (resolveTargetMask -> queue script command) in the same CTB-edge context. The runtime keepsonlyOncestate perentry x actorSlot, resets that state when the battle signature changes, and now logs real dispatch success/failure instead of only probe lines. In the editor,AfterAnyValidTurnsidecars are now exported to the game'smodules\\configwhen the project can resolveGameInstallRoot, and the UI/warnings were hardened to reflect the true scope: runtime v1 = immediate command dispatch, best used as one-shot;guardVaris still metadata, not an out-of-turn var mutation path.RuntimeTools/PhaseTurnEdgeLabwas synced to the realn6/a2log format. Status:Needs Testingin-game — offline builds are green, RT2 is still pending
v2.185.13.0
v2.185.15.0BETAPATCH
SeymourJun 29, 2026
Obsidian vault + docs frontmatter + tooling infra
- Obsidian vault configured at repo root: graph.json with 11 color groups by folder/tag, CSS snippets (colorful-graph, colorful-folders) with graph glow and vibrant colors. docs/obsidian-vault/ with 30+ interconnected notes (hubs, RE notes, Battle AI, Spira Reforge, sessions, references) + 4 Mermaid diagrams (SinScaleInject arch, Phase Rotation flow, ATEL VM, Monster Worker structure). DeepSeek organizer processed ~1900 .md files adding frontmatter (tags, aliases, date) to enrich the graph view. 5 FFX specialist skills created (monster-ai-specialist, runtime-hooks-engineer, wpf-module-architect, re-ida-analyst, data-diff-patch-engineer) with auto-routing in AGENTS.md. GitHub MCP configured with env var token + .bashrc update. .gitignore updated (.mcp.json included). Standardized frontmatter added to AGENTS.md
v2.185.14.0
v2.185.16.0BETAPATCH
SeymourJun 29, 2026
Monster stat/Gil/AP rebalance: Macalania, Bikanel, Calm Lands + 7 OD designs
- Iguion (m026) and Mafdet (m004) buffed per family patterns. Cactuar (m208) buffed (HP 800→1500, AGI 24→40, MDEF 255 kept). Calm Lands: AGI and secondary stats buffed for 10 monsters. Gil/AP increased across 3 areas (Macalania, Bikanel, Calm Lands) with OD bonus. APovk standardized to 2×. 7 ODs designed: Mushussu (Sand Breath), Zu (Sonic Storm), Cactuar (10,000 Needles), Coeurl (Blaster Cannon), Chimera Brain (Mighty Guard + Psychic Storm), Ogre (Ogre Smash×2). 4-target sync (repo/steam/extract/clean-bins) documented as project rule
v2.185.15.0
v2.185.17.0BETAPATCH
SeymourJun 30, 2026
Monster AI Phase Rotation P1+P2 + Seymour RE second layer + IDU editability proposal
- Branch-sensitive reader P1+P2:
AiDetectedBranchActionnow carriesTargetProvenance/CommandProvenancewith path-local provenance preserved by the walker (PUSHV/POPV, findMatchingChr).Monster AI EditorUI shows multi-line read-only blocks with cmd/target/label origins. 0 build errors, RT0 PASS. Seymour m124: second-layer RE complete — opcode 0x6051 (SetupWaitTimer) identified via CTB countdown, 0x604D (MenuAnimationKind) mapped, 0x604B (BattleEventString) structured as string table with internal machine code. CTB setup flow investigated: battle-start event 0x01→0x704A (QtMG/engine scripting layer), not pure ATEL. Indirect Dispatch Unit: research complete — 57 indirect tables, 147 dispatch operations, visual editor proposal. Home (Gundappo): azit03 formations committed. Knowledge Base + FastEntrypoints + Session Handoff synced
v2.185.16.0
v2.185.18.0BETAPATCH
SeymourJun 30, 2026
Seymour opener proof promoted into Bible/Atlas + in-app guardrail
- The
Shell/Protect before the party actsopening is now closed without external hooks:mcyt06_00 ?StartEndHooks2::HookStartsetsAllMonsters.FirstStrike = true,AllMonsters.CurrentTurnDelay = 0,Monster#01.CurrentTurnDelay = 1, and pushes party/reserves by+2; with the real formationslot0=m141,slot1=m124,slot2=m141,slot3=m125, this proves the opener is encounter-driven native setup, not a hidden local SeymourperformCommandtrick. The finding was promoted into the durable docs (ATEL Bible,Monster AI Corpus Atlas) and into the in-appBIBLE OF SPIRAviaAiBibleCatalog, with an honest product boundary:Battle Corpus Crosswalk/Auroramay surface this read-only, butHookStart/ initial CTB seed authoring is still not a public writer surface. Consolidated Seymour native proof docs were versioned with the package
v2.185.17.0