Files
SVSimServer/SVSim.Database/Models
gamer147 8199a95356 feat(battle-xp): wire story first-clear /finish through IBattleXpService
- 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>
2026-07-04 09:06:47 -04:00
..
2026-05-23 16:25:49 -04:00
2026-05-23 16:25:49 -04:00
2026-05-23 16:25:49 -04:00
2026-05-23 14:18:01 -04:00
2026-05-24 17:07:05 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 14:18:18 -04:00
2026-05-23 16:25:49 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 16:25:49 -04:00
2026-05-24 21:13:15 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 16:25:49 -04:00
2026-05-23 16:25:49 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 16:25:49 -04:00
2026-05-23 16:25:49 -04:00
2025-05-18 02:27:17 -04:00
2026-05-24 02:03:13 -04:00
2026-05-24 02:03:13 -04:00
2026-05-23 19:57:34 -04:00
2026-05-23 16:25:49 -04:00
2026-05-25 12:03:47 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 16:25:49 -04:00
2026-05-23 16:25:49 -04:00
2026-05-24 09:27:10 -04:00
2026-05-23 14:18:01 -04:00
2026-05-25 12:03:47 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 14:18:01 -04:00
2026-05-23 19:57:34 -04:00
2026-05-23 16:25:49 -04:00
2026-05-23 16:25:49 -04:00
2026-05-24 02:03:13 -04:00
2026-05-25 12:03:47 -04:00