private static void ReportOnVulnerabilitiesAndResistance(DndGame game, Creature creature, string name, DamageType damageType) { if (creature.IsVulnerableTo(damageType, AttackKind.Magical)) { game?.TellDungeonMaster($"{name} is vulnerable to {damageType} damage."); } else if (creature.IsResistantTo(damageType, AttackKind.Magical)) { game?.TellDungeonMaster($"{name} is resistant to {damageType} damage."); } }
public void TakeSomeDamage(DndGame game, DamageType damageType, AttackKind attackKind, int amount) { if (amount <= 0) { return; } double previousHP = TotalHp; Creature.TakeDamage(damageType, attackKind, amount); if (game == null) { return; } double hpLost = previousHP - TotalHp; if (hpLost == 0) { return; } string tempHpDetails = string.Empty; if (Creature.tempHitPoints > 0) { tempHpDetails = $" (tempHp: {Creature.tempHitPoints})"; } string message; if (hpLost == 1) { message = $"{Name} just took 1 point of {damageType} damage. HP is now: {Creature.HitPoints}/{Creature.maxHitPoints}{tempHpDetails}"; } else { message = $"{Name} just took {hpLost} points of {damageType} damage. HP is now: {Creature.HitPoints}/{Creature.maxHitPoints}{tempHpDetails}"; } game.TellDungeonMaster(message); }