Update GaCy-GO
This commit is contained in:
1 parent
da8a32f60d
commit
0cbe460e49
345 files changed
+98202
-77559
No files matched your search
@@ -288,7 +288,7 @@ An isolated native administrative move to the next route node followed by RoundB
|
||||
|
||||
The user reports that this node presents the Protagonist button, not ordinary Battle. Requests include `GridFightSpotLightEnterCsReq` and `GridFightUpdateSpotLightTrackCsReq`, both previously unhandled. The old reference lacks this current Spotlight implementation. The reconstructed normal second-battle path above is not verified as the appropriate current route. Moreover, the imported old layer's camp must not be treated as a generated member of the current run's active camps. Selection, actual effects and the appropriate enemy layer remain unfinished.
|
||||
|
||||
Bounded current Client captures now contain 84 initialized Spotlight rows, exported by `tools/export_cw_spotlights.py` to `resources/CurrencyWarsSpotlights.json`. These are real configurations and suitable-role lists, not evidence of selection weights, offer count, costs or grant policy. Do not substitute arbitrary offers or a success-only response for those missing rules.
|
||||
Bounded current Client captures now contain 84 initialized Spotlight rows, exported by `tools/export_cw_spotlights.py` to `resources/CurrencyWarsSpotlights.json`. These are real configurations and suitable-role lists, not evidence of original-server selection weights, offer count, costs or grant policy. `CurrencyWarsSpotlightPolicy.json` explicitly defines the current server's uniform compatible selection policy (three options, no rerolls); it must not be described as captured original weighting. No success-only response replaces selection state.
|
||||
|
||||
Named MethodHandle +8 reads and bounded PE disassembly establish `GridFightSpotLightSelectAction._SyncFromProto` at RVA `0xdc00cd0`. Isolated protobuf setters encoded to bytes establish the field tags independently. Assembly SHA256 is `c5e02e6e984f7e5577c78b995a8efeee2d06ee22e67d484ad5e859c8bf21e144`. Evidence is retained in `battle_diagnostics/cw-spotlight-selection.asm`, `cw-getter-native.json`, `cw-spotlight-wire.log` and `cw-spotlight-getters.log` (ignored diagnostics).
|
||||
|
||||
@@ -305,6 +305,10 @@ Named MethodHandle +8 reads and bounded PE disassembly establish `GridFightSpotL
|
||||
|
||||
ActionID comes from the enclosing pending QueuePosition. The protobuf arm is EEKMIAMGHFL (1817), not the ordinary Battle arm. `SelectCandidate` dispatches role and selected Spotlight ID through `Select`; this still needs a server-owned offered-choice/role validation path. FMBACDOFCAL mappings independently encoded: IHHNLLAJAGB (1) SpotlightID, UniqueId (2), MDNAGANGNKK (9), ELBPNDIENDL (11), RoleId (13). Meanings of fields 9/11 and special effects are not inferred merely from their types.
|
||||
|
||||
Further named native inspection resolves fields 9/11: AddOrUpdate at RVA `0xdbfb3f0` shuffles the proto scalars into its ACNDKIFJLJC record. GetActiveSpotLightBindingByRoleId at `0xdbfb9a0` and binding constructor at `0xdbf6380` place that record into RoleUniqueID/RoleID/SpotLightID/UniqueID/IsLoss. Thus MDNAGANGNKK is RoleUniqueID and ELBPNDIENDL is IsLoss. New grants bind an owned role UID and use IsLoss=false; merges move the UID binding when the selected card is consumed. See `cw-spotlight-add.asm`, `cw-spotlight-binding-get.asm`, `cw-spotlight-binding-ctor.asm` in ignored diagnostics.
|
||||
|
||||
The implemented Enter handler validates preparation and the current node flag, persists an offered pending choice, then sends pending sync before the typed response. Selection validates the saved offer, suitability, ownership and duplicate binding; it saves a run-owned Spotlight, updates the route node, finishes the pending action and unlocks preparation. Start/entry transitions preserve an empty Spotlight component, and explicit Resume migrates old runs so Client Sync marks the manager valid. Snapshot reads remain read-only. The build compiles; UI selection/resume is still awaiting current Client proof. Battle projection/effect execution and subsequent route fidelity are unfinished; do not claim the complete mode works yet.
|
||||
|
||||
### Basic merges and equipment tracking
|
||||
|
||||
`CurrencyWarsCatalog.json` now contains 219 actual native star rows, identity checked against the requested role/star (no clamped rows accepted). `tools/import_cw_role_stars.py` preserves earlier configurations and imports only observed rows. Ordinary sale quotes use the current rarity table only when the captured default quote agrees with that table; unestablished special quotes are rejected.
|
||||
@@ -314,3 +318,53 @@ ActionID comes from the enclosing pending QueuePosition. The protobuf arm is EEK
|
||||
Current tracking handlers bind names from the current command table: GridFightUpdateEquipTrack and GridFightUpdateEquipTrackPriority. Tracks persist in the player component MIIDIMOCPEB; KFNCAIHIHCM.BMGFDIKDOBE carries the complete updated list. Native `CreateServerTrackUpdateInfo` at RVA `0xda5afa0`, `RemoveEquipTrack` at `0xda63a30` and `_AddTrackToLastAndSend` at `0xda628d0` prove BJDOINAHDLN is **enabled**: add passes true, removal false. It is not a deletion flag. Priority is NALMBOOCCIN; the source protocol comparison also names it priority, but old source tags/opcodes are not used. Equipment IDs are checked against the 142 current initialized handbook equipment rows. This implements tracking persistence/display, not equipping, crafting or combat item effects.
|
||||
|
||||
The merge/tracking build compiles; no automated tests were added or run. Client confirmation of these new changes remains pending. Finished research scripts have been removed from scripts/; their source remains under tools/.
|
||||
|
||||
### Protagonist selection confirmed; CW trial blocker found
|
||||
|
||||
The user confirms selection works. Current logs prove Enter offered three choices at queue 215/revision 215 and DKDFDGJGIHM selection finished at revision 216 with preparation restored. An initial validation error was our incorrect requirement that every native Spotlight row contain JsonPath; fifteen real rows have an empty path and must be retained, not replaced with guessed paths. The validator now accepts their native shape.
|
||||
|
||||
The subsequent EnterBattle failure is distinct: `CW role avatar 6042 not owned; trial resolver required`. The captured role row marks this as a fake CW avatar and supplies SpecialAvatarID. The current native flat SpecialAvatar table supplies its identity, world level, level, promotion, rank, enhancement and equipment values. `CurrencyWarsTrialAvatars.json` retains this complete native row and capture hash; `cwTrialBattleAvatar` builds an isolated trial battle avatar with the special ID and Trial enum. It never adds the fake avatar or trial gear to Adventure/persistent inventory. The native reference's ResolveBattleAvatar / SpecialAvatarInfo.ToBattleProto corroborate this special-ID serialization and do not create relics for this fake avatar. Only captured trial profiles/world levels are supported; others still fail explicitly.
|
||||
|
||||
Native `BattleGridFightAvatarData.get_SpotLightID` at RVA `0xefae920` reads BattleExtInfo +0x18 then that object's +0x18. Isolated ABJGLPCOMMK setters encode tag 2 as `10-01`, whose accessor at `0x1eea9f00` reads +0x18; tag 1 reads +0x1c. The old captured role envelope independently has tag 1 Mode=2. Runtime retains that mode and injects only the selected run binding's SpotlightID at tag 2. It does not inherit the reference avatar's Spotlight. Server-side economic/difficulty/trait-specific Spotlight effects remain unfinished; the presence of this projection is not proof of all effects.
|
||||
|
||||
Current trial/Spotlight projection build compiles and is deployed at root. Actual node-1-2 combat after the trial fix is awaiting Client confirmation. No automated tests were added or run. Research captures are outside scripts/ after completion. Future probes should wrap their whole body in a local function: a top-level return in one concatenated script can skip later scripts in the same heartbeat.
|
||||
|
||||
### Supply selection and second-node Client confirmation (2026-10-21)
|
||||
|
||||
The user now confirms node 1-2 Battle works after the fake-avatar resolver. The server records battle 247, a completed settlement with progress 100, followed by Supply queue 16 at revision 248. This supersedes earlier pending-verification statements for this particular fight only.
|
||||
|
||||
The Supply 6900 was a missing FIKAGBAEOAP request branch. The new handler validates the saved queue, exact selection count, one-based indices, offered role/star and item identities against current resources. It grants the selected equipment and role with fresh run-owned UIDs, merges eligible triplets, and saves once before sending equipment/role/merge groups and the pending acknowledgement. A rejected transaction sends no grants and writes no partial changes. Paid selections and rerolls remain unimplemented rather than inventing prices. The acquisition Source=9 discriminator is corroborated by the native Supply selection captures and the reference SupplyEquipmentSource definition.
|
||||
|
||||
The captured Standard Supply transition advances the existing party to section 1-4. It imports only the next level/pending recipe from march-cw-supply-next stage 17/18/19, never another account's balances or inventory. The later EliteBranch action and current-camp procedural encounter generation are unfinished; the captured branch layer is a reference recipe, not proof of correctly generated encounters for every selected camp. Do not claim a complete CW run or use it as proof of later Battle fidelity. Current Supply selection still awaits Client confirmation. Build only; no automated tests added or run.
|
||||
|
||||
### CW flow audit and staged Encounter work (2026-10-21)
|
||||
|
||||
The current Client/server trace confirms Supply queue 16 succeeds, advances to RoundBegin 20 and Encounter 21 (revision 250). The next 6900 is the unimplemented BAKAKODKECM arm, not a Supply failure. The user explicitly requests completing connected CW flows in batches instead of repeatedly requesting one-button Client checks.
|
||||
|
||||
`tools/inventory_cw.py --reference-root <source-checkout> --markdown <output>` now compares all current command names, Go registrations and reference source handlers, plus every pending-action arm. `docs/currency-wars-coverage.md` is the current static audit. Registration is deliberately not labeled gameplay success, and old reference names are not registered as aliases. Missing equipment, consumable, progression and pending actions remain visible.
|
||||
|
||||
A staged Encounter implementation validates the offered one-based branch, saves SelectedEliteBranchId, emits the mapped FGODNPLCECH selection sync, and queues ReturnPreparation; it also implements changing the selected branch during preparation. It compiles but has not replaced the root Supply build. It must not be presented as a complete Encounter combat/settlement implementation: wave recipes, difficulty, penalties, rewards and the following transition still require the connected work.
|
||||
|
||||
Native Create(UInt32,...) method handles identify RVA 0xdb7d780. Its bounded PE disassembly calls the monster row getter at 0x1dee0820 before constructing MonsterData; the capture invokes only that flat getter and the previously established serializer at 0x1d3efb60, on the initialized handbook getter thread, four rows per call. Current assembly hash matches the catalog. REA observations ev_6de4d1e2da5ceaf24244fb3effc43b0a9ed5122a6edc252a912fd7397b051311, ev_a5ea1ccc45442bcd8550983f294080ecb6cca0ea2d39f28828f17094433fe8ce and ev_2e7d90ac354eaf31406ddb077b68e18b2dccc0b1dbefb3d5f764136de324219d plus the retained getter disassembly establish 42 identity-checked monster rows covering this run's camps and the imported branch camp. No monster/scene/level-graph constructor executes. Finished probes are outside scripts/.
|
||||
|
||||
`CurrencyWarsMonsters.json` retains native tiers and all four star elite-group fields, with a complete plan/capture digest. Its coverage is partial, not the complete game table. The staged compatibility sampler selects a compatible active camp uniformly and replaces imported branch monsters with current native monsters of the same tier while preserving stars, wave layout, penalties and rewards. This is an explicit server compatibility policy, not a claim about original-server random weights. Explicit Resume reconciles an old pending Encounter once and saves before GetData; readers remain read-only. No Adventure inventory or party is changed. The root build is still cw-supply-gameserver; do not request another Client retry until the connected Encounter flow is ready.
|
||||
|
||||
### Quit/abandon active run request (2026-10-21)
|
||||
|
||||
The first handler only cleared the saved run and returned `GridFightQuitSettleScRsp`. The screenshot's “Currently unable to manually end and finalize” showed that was insufficient: the Client also expects `GridFightSyncKeepWinCntNotify` followed by `GridFightSettleNotify` before the success response. The handler now builds those notifications from the active run and current catalog, commits only the removal of `DHFOFLFCLAH`, sends the notifications in that order, then lets the dispatcher send the typed response. It does not award victory rewards or change Adventure inventory.
|
||||
|
||||
The packet names and wire layout come from the checked-in current protocol; the older reference is used only to confirm the required packet order and Quit reason, not its old CmdIDs or field tags. Settlement rank and completed-battle count are not present in the saved run/catalog mapping yet, so their protobuf defaults remain unset. The UI flow still needs confirmation in a connected Client after rebuilding/restarting the server.
|
||||
|
||||
### Encounter battle returns 6900 (2026-10-22)
|
||||
|
||||
`RET_GRID_FIGHT_CONF_MISS` is protocol retcode 6900. The current log attributes the Encounter failure to a missing enemy plan. The saved run is Standard, route 2801, chapter 1, section 4, stage 70000006. The Encounter layer offers two branches, with branch 1 selected; its saved enemy payload has one wave containing 12 monsters and penalty 91113. The second offer has penalty 91114. These live saved values do not include the battle's level, hard-level group, elite group, formation wave or complete difficulty modifiers.
|
||||
|
||||
`CurrencyWarsEnemyPlans.json` has a captured recipe only for stage 70000003 / penalty 92013, so it cannot construct either current Encounter branch. The builder previously also rejected every multi-branch layer and looked up a recipe using the node's penalty instead of the chosen branch's penalty. It now resolves the saved one-based selected branch, looks up that branch's penalty and logs the route/section/stage/selection when no recipe exists. Unit tests verify first/second branch selection and reject absent, empty or out-of-range choices. This avoids starting the wrong branch once its exact recipe is available.
|
||||
|
||||
The connected Client 4.6.53 capture confirms stage level 90, HardLevelGroup 1 and zero difficulty deltas. It records both one-wave branches, their 12 monster IDs and stars, and penalties 91113/91114. StageExcel's EliteGroup is 0; a separate monster row reports EliteGroup 1, but the current capture does not establish which value belongs in `SceneMonsterWaveParam.EliteGroup`. The saved branch message has no formation-wave ID, and the expected formation/elite table classes were not resolved through the direct Lua API. Do not fill these fields from the older reference or infer them from monster identities. The Encounter still fails closed until the current Client's exact formation and elite configuration values are captured. `tools/cw_active_encounter_capture.lua` is the bounded read-only probe; it uses reflected fields from this current Client, so it is not a general decoder. The full retcode audit is in `docs/currency-wars-6900-audit.md`.
|
||||
|
||||
Current 6900 paths elsewhere include missing gameplay catalog/snapshot, unsupported pending-action arms or failed action validation, missing EXP/Spotlight config, unavailable sale/role variants, mismatched party property scales on purchase, battle settlement validation, and save failure during quit. These are reported in their handlers; they do not justify returning success without state changes. CW equipment/forge, many pending-action arms, talents and later route recipes remain incomplete as listed in `docs/currency-wars-coverage.md`.
|
||||
|
||||
### Beta scan source correction (2026-10-22)
|
||||
|
||||
The user clarified that the target is the Beta 4.6.53 OS installation. The previous static lookup using the D: main-game assets was invalid and must not inform this Encounter. The retained runtime capture has the Beta `GameAssembly.dll` SHA-256 `c5e02e6e984f7e5577c78b995a8efeee2d06ee22e67d484ad5e859c8bf21e144` and records the current run as route 2801 / section 4 / stage 70000006. The live process path was independently verified with `QueryFullProcessImageName` and resolves to the user's Beta installation. `GridFightStageRouteConfigExcelTable.GetData` returned an empty row for the attempted key, while `GridFightEnemyDifficultyLvConfigExcelTable.GetData` failed to resolve that exact type; these are incomplete lookups, not proof that the data is missing. Continue only against this Beta runtime and its matching assets.
|
||||
Reference in new issue
Block a user