dungeon-sdk-drikkx
Version:
Shared types and entities for the Dungeon game
94 lines • 2.4 kB
TypeScript
import { CharacterInDungeon, ResourcesType } from './character.types';
import { Stats } from './stats.types';
export type ActionType = 'attack' | 'combo' | 'special' | 'item';
export interface CombatContext {
turnNumber: number;
roomIndex: number;
waveIndex: number;
dungeonId: string;
}
export interface Action {
type: ActionType;
actor: string;
targets: string[];
value: number;
effects?: StatusEffect[];
}
export interface StatusEffect {
type: 'buff' | 'debuff' | 'dot' | 'hot';
stat: keyof Stats;
value: number;
duration: number;
source: string;
}
export interface TurnInfo {
round: number;
activeEntity: string;
availableActions: ActionType[];
timeline: string[];
}
export interface TargetingCriteria {
healthThreshold?: number;
preferredTargets?: string[];
excludedTargets?: string[];
targetCount: number;
targetCondition?: (target: CharacterInDungeon) => boolean;
}
export interface ActionConditions {
resourceCost?: number;
resourceType?: ResourcesType;
cooldown?: boolean;
customCondition?: (character: CharacterInDungeon) => boolean;
}
export interface ActionStrategy {
type: CombatActionType;
conditions: ActionConditions;
targeting: TargetingCriteria;
priority: number;
}
export declare enum CombatActionType {
ATTACK = "attack",
HEAL = "heal",
ITEM = "item",
COMBO = "combo",
SPECIAL = "special",
DEATH = "death",
WAVE_COMPLETE = "wave_complete",
ROOM_COMPLETE = "room_complete",
DUNGEON_COMPLETE = "dungeon_complete",
DUNGEON_FAILED = "dungeon_failed"
}
export interface CombatResources {
health: number;
maxHealth: number;
mana: number;
maxMana: number;
}
export interface CombatRewards {
experience?: number;
gold?: number;
items?: string[];
}
export interface CombatAction {
type: CombatActionType;
sourceId: string;
targetId?: string;
damage?: number;
isCritical?: boolean;
timestamp?: Date;
resources?: CombatResources;
effects?: string[];
rewards?: CombatRewards;
turnNumber: number;
roomNumber: number;
waveNumber: number;
dungeonId: string;
}
export interface CombatTurn {
turnNumber: number;
roomNumber: number;
waveNumber: number;
actions: CombatAction[];
timestamp: Date;
}
//# sourceMappingURL=combat.types.d.ts.map