Backend environment for match hosting for lance.blue

feat(host): record who won, not just what is left master

result.json carries victoryTeam and victoryPlayerId now, and each player carries the id the second of those points at. A forced victory - one side declaring it and the rest using /defeat - leaves the loser's units standing, so a reader inferring the winner from the counts gets that case backwards. The accessors are on Game rather than IGame, so the read is behind a cast; a game that is not one records no winner and keeps the counts. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>


+40 -2
1 changed file