UNPKG

dungeon-sdk-drikkx

Version:

Shared types and entities for the Dungeon game

104 lines (92 loc) 3.65 kB
// Stats de base import { ResourcesType } from "./character.types"; // ==================================== // Base Stats Types // ==================================== export interface Stats { strength: number; // Physical power and health agility: number; // Speed and precision intelligence: number;// Magic power and mana vitality: number; // Health and defense spirit: number; // Healing and resistance } // ==================================== // Defense Types // ==================================== export interface DefenseStats { maxHealth: number; currentHealth: number; healthRegen: number; physicalReduction: number; // Physical damage reduction magicResistance: number; // Magic damage resistance statusResistance: number; // Status effect resistance } // ==================================== // Resource Types // ==================================== export interface ResourceStats { type: ResourcesType; maxResource: number; currentResource: number; resourceRegen: number; gainOnDamageTaken?: number; // Rage generation from damage taken gainOnDamageDealt?: number; // Rage generation from damage dealt decayRate?: number; // Resource loss per second out of combat } // ==================================== // Damage Types // ==================================== export enum DamageType { PHYSICAL_MELEE = 'physical_melee', PHYSICAL_RANGED = 'physical_ranged', MAGICAL = 'magical', HEALING = 'healing' } // ==================================== // Combat Stats Types // ==================================== export interface PhysicalCombatStats { accuracy: number; // Hit chance dodge: number; // Dodge chance meleeAttackPower: number; // Melee attack power rangedAttackPower: number; // Ranged attack power physicalCritChance: number;// Physical critical hit chance critMultiplier: number; // Critical hit multiplier } export interface MagicalCombatStats { magicPower: number; // Magic damage power magicCritChance: number; // Magic critical hit chance magicCritMultiplier: number;// Magic critical hit multiplier } export interface HealingStats { healingPower: number; // Healing output power healingReceived: number; // Healing received effectiveness } export interface CombatStats extends PhysicalCombatStats, MagicalCombatStats, HealingStats {} // ==================================== // Full Stats // ==================================== export interface ExtendedStats extends Stats, DefenseStats, ResourceStats, CombatStats {} // ==================================== // Stat Modifiers // ==================================== export interface ClassStatModifiers { baseStats: Partial<Stats>; defenseMultiplier: number; resourceMultiplier: number; combatMultipliers: { physical?: number; magical?: number; healing?: number; }; } // ==================================== // Stat Calculation Interface // ==================================== export interface StatCalculator { calculateDefenseStats(base: Stats, modifiers: ClassStatModifiers): DefenseStats; calculateResourceStats(base: Stats, modifiers: ClassStatModifiers, type: ResourcesType): ResourceStats; calculateCombatStats(base: Stats, modifiers: ClassStatModifiers): CombatStats; calculateDamage(attacker: ExtendedStats, defender: ExtendedStats, damageType: DamageType, multiplier: number): number; calculateHealing(healer: ExtendedStats, target: ExtendedStats, multiplier: number): number; }