UNPKG

dungeon-sdk-drikkx

Version:

Shared types and entities for the Dungeon game

94 lines 2.4 kB
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