public override IResponse ReceiveHit(DamageResponse hit)
        {
            IDefenseItem   defenseItem = PickDefenseItem();
            DamageResponse defended    = defenseItem.Defend(hit);
            int            damageRoundedUp;

            if (defended.SuccessValue)
            {
                damageRoundedUp = Convert.ToInt32(Math.Ceiling(defended.Damage));
            }
            else
            {
                return(new FailureResponse("A defense Item failed"));
            }

            if (damageRoundedUp > 0)
            {
                Hitpoints = Hitpoints - damageRoundedUp;
                if (Hitpoints == 0)
                {
                    return(Death());
                }
                return(new SuccessResponse($"{Name} of type {GetType().Name} took {damageRoundedUp} points of damage from {hit.Origin.Name}."));
            }

            return(new SuccessResponse($"{Name} blocked the damage from {hit.Origin.Name}'s attack."));
        }