Files
GaCy-GO/docs/peak-cycle-investigation.md
T

3.3 KiB

AA cycle / star settlement investigation

The reported King in Check win displayed zero consumed cycles and no completed star conditions. This is not yet a verified complete fix.

Confirmed evidence

  • The original win report has 36 battle turns, RoundCnt=0 and stage 30501021. The cached native PVEGameStatistics had totalBattleRounds=0, challengeTurnCount=0, challengeTurnLeft=7. A battle turn is not a cycle; the meaning and wire mapping of the additional counters remain unverified.
  • finishChallengeBattle copies RoundCnt into Peak CyclesUsed and never supplies FinishedTargetList. This accounts for the displayed values, but does not prove that the battle used zero cycles or earned no stars.
  • The original start packet had RoundsLimit=40: Peak 104 was configured through the separate ChallengeMaze table with the same numeric ID.
  • Read-only captures from the running Client's ConstValueClientExcelTable contain ChallengePeak_Mob_Turn_Limit=6, ChallengePeak_Boss_Turn_Limit=6, and ChallengePeak_HardBoss_Turn_Limit=2.
  • Native BattleTargetConfigExcelTable rows referenced by the installed Peak tables are preserved in resources/PeakBattleConfig.json, together with Client version, GameAssembly SHA-256 and capture SHA-256. Boss targets 3003/3004/3005 have thresholds 6/4/2; 3000 is a death-count condition. These are BattleTargetConfig rows, not ChallengeTargetConfig rows.

The ignored evidence directory is battle_diagnostics/peak-cycle-20261019. Player.native-tables.log is the source for the new resource. Temporary probes inspect named types/tables with bounded work per heartbeat. A missing BattleTargetExcelTable was corrected to the observed BattleTargetConfigExcelTable; no assembly-wide reflection is used.

Changes made

  • Peak start and restart use an explicit AA battle type and the native normal/boss/hard limit, independent of the ChallengeMaze ID namespace.
  • Rules reject a mismatching Client version, missing provenance, unknown event or missing native limit. No guessed fallback is installed.
  • Full PVEBattleResult requests are archived under battle_diagnostics, including obfuscated and unknown protobuf fields that the aggregate damage report does not retain. JSON is for inspection; binary preserves unknowns.
  • tools/peak_result_snapshot.lua reads the six named native counters and target lists for comparison with the next server packet. Its temporary copy in scripts must be removed after reproduction.

Focused Peak configuration and battle capture tests pass; a game-server build passes. This does not verify Client battle loading, cycle display, stars, medals or persistence. The existing unconditional unlock/medal response in GetChallengePeakData has not been rewritten in this patch.

Pending Client reproduction

The user agreed to complete another AA battle and leave the result screen open. Compare its full result packet with native counters before assigning semantic names to obfuscated fields or calculating FinishedTargetList. Do not derive cycles from TotalBattleTurns, subtract from a guessed initial counter, or grant every target merely because EndStatus is WIN.

The Main chat is concurrently repairing login in the same workspace and restarting the shared servers. Stop additional restarts from this chat while that deployment is in progress; both builds included the Peak source changes.