dungeon-sdk-drikkx
Version:
Shared types and entities for the Dungeon game
70 lines • 2.2 kB
TypeScript
import { ResourcesType } from "./character.types";
export interface Stats {
strength: number;
agility: number;
intelligence: number;
vitality: number;
spirit: number;
}
export interface DefenseStats {
maxHealth: number;
currentHealth: number;
healthRegen: number;
physicalReduction: number;
magicResistance: number;
statusResistance: number;
}
export interface ResourceStats {
type: ResourcesType;
maxResource: number;
currentResource: number;
resourceRegen: number;
gainOnDamageTaken?: number;
gainOnDamageDealt?: number;
decayRate?: number;
}
export declare enum DamageType {
PHYSICAL_MELEE = "physical_melee",
PHYSICAL_RANGED = "physical_ranged",
MAGICAL = "magical",
HEALING = "healing"
}
export interface PhysicalCombatStats {
accuracy: number;
dodge: number;
meleeAttackPower: number;
rangedAttackPower: number;
physicalCritChance: number;
critMultiplier: number;
}
export interface MagicalCombatStats {
magicPower: number;
magicCritChance: number;
magicCritMultiplier: number;
}
export interface HealingStats {
healingPower: number;
healingReceived: number;
}
export interface CombatStats extends PhysicalCombatStats, MagicalCombatStats, HealingStats {
}
export interface ExtendedStats extends Stats, DefenseStats, ResourceStats, CombatStats {
}
export interface ClassStatModifiers {
baseStats: Partial<Stats>;
defenseMultiplier: number;
resourceMultiplier: number;
combatMultipliers: {
physical?: number;
magical?: number;
healing?: number;
};
}
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;
}
//# sourceMappingURL=stats.types.d.ts.map