feat(combat): model monster intent and potion count in combat state types

This commit is contained in:
Bastian Wagner
2026-08-20 21:21:08 +02:00
parent 922c12f20f
commit fc1873e41f
2 changed files with 14 additions and 0 deletions

View File

@@ -3,10 +3,21 @@ import { CombatAction } from './combat-action.enum';
import { CombatEventType } from './combat-event-type.enum';
import { CombatStatus } from './combat-status.enum';
// Only HEAVY_ATTACK needs telegraphing today; NORMAL_ATTACK resolves
// immediately and is never held as a pending intent (Playable Slice 0.6
// spec §5). Add members here as future slices add more prepared actions.
export type CombatIntent = 'HEAVY_ATTACK';
export interface CombatEngineCombatantStats {
attack: number;
weaponDamage?: number;
armor: number;
// Player-only: seeded at combat start, decremented by POTION. Optional
// because the monster's stats never carry it.
potionsRemaining?: number;
// Monster-only: set when it telegraphs, cleared when the action resolves
// or is interrupted. Optional because the player's stats never carry it.
pendingAction?: CombatIntent;
}
export interface CombatEngineCombatant {

View File

@@ -11,15 +11,18 @@ import {
import { Character } from '../../characters/entities/character.entity';
import { HuntEncounter } from '../../hunting/entities/hunt-encounter.entity';
import { MonsterDefinition } from '../../monsters/entities/monster-definition.entity';
import { CombatIntent } from '../combat-engine.types';
import { CombatStatus } from '../combat-status.enum';
export interface CombatCombatantState {
attack: number;
armor: number;
pendingAction?: CombatIntent;
}
export interface CombatPlayerState extends CombatCombatantState {
weaponDamage: number;
potionsRemaining: number;
}
@Entity({ name: 'combats' })