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