dungeon-sdk-drikkx
Version:
Shared types and entities for the Dungeon game
104 lines (92 loc) • 3.65 kB
text/typescript
// 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;
}