Skip to content

Deploy premade frames with their authored enhance skills - #30

Open
Hexaflare wants to merge 4 commits into
reiserFSs:masterfrom
Hexaflare:LeapTrial
Open

Hexaflare wants to merge 4 commits into
reiserFSs:masterfrom
Hexaflare:LeapTrial

Conversation

@Hexaflare

Copy link
Copy Markdown

Summary

Premade robot deployments ignored Robot.tsv.EnhanceSkillLevel, leaving
their Character.EnhanceSkillList empty. This prevented leap/enhance
mechanics from activating in Leap Trial stages.

Changes

  • Build robot enhance skills from authoritative character/enhance tables.
  • Apply the authored EnhanceSkillLevel.
  • Respect RemoveSkillId for base-form robot variants.
  • Reuse the shared deployment path used by story, Study, Theatre, and other
    robot-based fights.
  • Add compatibility coverage for base, level-1, and leap robot variants.

The runtime change is table-driven and contains no character- or stage-specific
special cases.

Verification

  • All runtime projects build with zero warnings/errors.
  • Study character compatibility passes.
  • Story robot deployment passes.
  • Fight, pre-fight, simulated-battlefield, simulate-train, boss-activity,
    and Bianca Theatre compatibility selectors pass.
  • In-game verification passed for:
    • Crimson Weave B-4 Leap Trial
    • Pyroath A-4 Leap Trial
    • B-3/A-3 control stages

Known unrelated compatibility failures remain in existing Pain Cage,
Theatre6/activity-version, and character-unlock tests.

@reiserFSs reiserFSs left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes requested: keep robot and enhance-skill data on the same client version.

P2 — Mixed-version premade deployment (AscNet.GameServer/Handlers/FightModule.cs:890–899). Study stage 30100081 resolves frozen 4.6 robot 2273, but the added lookup reads 4.7 enhance groups. The frozen removal list lacks 102628–102630, so the actual PreFightResponse grants all three at level 1 to base Pyroath. Version-matched original EN Lua generation produces an empty enhance list; the current robot row explicitly removes these skills. The legitimate leap control on stage 30100099 still produces its three level-18 skills.

Use version-matched robot/enhance/removal inputs throughout the legacy Study path and correct the Pyroath regression expectation to an empty list. Preserve legitimate leap deployments.

Evidence: registered-handler packets plus the unmodified original Lua generation method with authoritative table adapters. No rendered/native-combat claim.

@Hexaflare

Copy link
Copy Markdown
Author

In response to review

  • Version-matched robot/enhance inputs - enhance inputs now come from the frozen catalog's own
    pinned 4.6 revision (EnhanceSkill + EnhanceSkillGroup, projected for the catalog's robot rows
    exactly like Stage/Robot already were). Live deployments keep the live tables; one
    EnhanceSkillSource feeds a single resolution algorithm, and BuildRobotEnhanceSkills no longer
    touches TableReaderV2 directly. RemoveSkillId stays the frozen row's own list.
  • Pyroath regression expectation - corrected to an empty list; it fails pre-fix and passes
    post-fix.
  • Leap deployments preserved - 30100099 / robot 9239 still yields 102531/102529/102530 @18
    (harness, in-game, and the Lua oracle). 30100230 / robot 9246 keeps its authored leap kit.
  • Evidence - registered-handler packets, plus the unmodified original EN Lua generator you cited
    (XRobot:GenarateRobotEnhanceSkillList, executed verbatim under Lua 5.3 with adapters over the
    pinned 4.6 JSON). Re-running it with the pre-fix pairing (frozen rows + live 4.7 tables) reproduces
    the reported 102628/102629/102630 @1 grant for 2273/2274/172404, so the check discriminates
    rather than restating the fix. Raw output in the follow-up comment.

Additions

  • a4b8af7 materializes omitted arrays on version-frozen rows: 4fb7602's new NormalEventId
    dereference throws for every legacy Study stage, which blocked the regression from running at all.
    Reproduces on 4fb7602 alone and is kept as its own commit, so it can be upstreamed or dropped
    independently.

Changes

  • Scripts/generate_study_compatibility.py + study_compatibility_4.6.0.json: two new pinned
    sources and their closed projection (82 EnhanceSkill rows, 92 EnhanceSkillGroup rows).
  • FightModule.cs: EnhanceSkillSource; BuildRobotDeployment(robot) unchanged for all existing
    callers, the frozen source used only by the legacy Study branch; authored EnhanceSkillLevel
    applied, RemoveSkillId respected.
  • Tests: Pyroath expectation, catalog row counts, reflective lookup pinned after the overload gained
    a parameter.

Table-driven throughout - no character or stage-specific cases in runtime code.

Verification

  • Runtime projects build with zero warnings; host boots and accepts the game listener and SDK.
  • Selectors pass: study-character, study-progression, robot-deployment-fashion,
    character-skill-group, hidden-stage, story-deploy-version-gap, version-47-character,
    theatre/3/4/5, bianca-theatre, character-tower, bfrt, trial, team-prefab,
    segment-check-fight, fight-restart, fight-settle-retreat/achievement, guild/-core/-boss.
  • In-game PreFightResponse: 30100081 2273 → [] (was three @1); 30100971 9161 → [];
    30100099 9239 → three @18; 30100230 9246 → three @18.
  • Lua oracle: 170/170 frozen robots and 7/7 live robots agree with the served payloads.
  • Whole-payload before/after diff across the Study harness: the only differing field is that one
    EnhanceSkillList.

Known unrelated failures, also present on 4fb7602: --character-enhance-skill-compat-only, and the
full-harness run aborting at CharacterUnlockEnhanceSkillRequest (server pushes NotifyTask before
the response; the harness reads a single packet).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants