export enum DangerRating { WEAK = 'WEAK', MATCH = 'MATCH', STRONG = 'STRONG', VERY_DANGEROUS = 'VERY_DANGEROUS', DEADLY = 'DEADLY', } export interface CombatantStats { attack: number; armor: number; hp: number; } // power(entity) = attack*4 + armor*2 + floor(hp/5) — a deliberately small, // provisional server-side stand-in for a future CombatPower system (none // exists yet in this codebase). ratio = monsterPower / characterPower. export function calculateDangerRating( character: CombatantStats, monster: CombatantStats, ): DangerRating { const power = (stats: CombatantStats) => stats.attack * 4 + stats.armor * 2 + Math.floor(stats.hp / 5); const ratio = power(monster) / power(character); if (ratio < 0.65) return DangerRating.WEAK; if (ratio < 1.0) return DangerRating.MATCH; if (ratio < 1.7) return DangerRating.STRONG; if (ratio < 2.3) return DangerRating.VERY_DANGEROUS; return DangerRating.DEADLY; }