- StoryConfig.ClassXpPerClear retired; equivalent knob moves to BattleXpConfig.StoryXpPerClear (falls back to XpPerWin when null). - StoryService.FinishAsync now grants class XP via IBattleXpService with BattleXpMode.Story on the firstClear && isPlayShape branch. Persists post-grant Level/Exp to Viewer.Classes. - Wire fields (get_class_experience, class_level) stringified as before. - StoryConfig kept as an empty [ConfigSection] for future story-specific knobs. StoryServiceTests updated to reflect the new default path (XpPerWin=100 crosses classexp.csv L1=50 → L2 with 50 carry). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
480 B
480 B