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);
        }