The hunt screen kept whatever roll was last in memory, so a player coming back from a fight saw every encounter as fresh. Encounters now carry their own status, which the combat module advances as fights start and end. - hunt_encounters.status replaces consumed_at, which only recorded that a fight had begun and could not distinguish a win from a loss - a lost fight hands the encounter back as AVAILABLE, so it can be retried; the unique index tying one combat to one encounter goes with it - GET /hunts/active serves the resumable hunt, which the hunt page adopts on entry rather than trusting its in-memory roll - defeated encounters are crossed out and lose their hover and attack action - a fresh page load rejoins a combat the server still holds open Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
19 lines
570 B
TypeScript
19 lines
570 B
TypeScript
import { Controller, Get, Post } from '@nestjs/common';
|
|
import { DEMO_CHARACTER_ID } from '../demo/demo-character.constants';
|
|
import { HuntResultDto, HuntingService } from './hunting.service';
|
|
|
|
@Controller('hunts')
|
|
export class HuntingController {
|
|
constructor(private readonly huntingService: HuntingService) {}
|
|
|
|
@Post()
|
|
startHunt(): Promise<HuntResultDto> {
|
|
return this.huntingService.startHunt(DEMO_CHARACTER_ID);
|
|
}
|
|
|
|
@Get('active')
|
|
getActiveHunt(): Promise<HuntResultDto | null> {
|
|
return this.huntingService.getActiveHunt(DEMO_CHARACTER_ID);
|
|
}
|
|
}
|