Aura.Channel.Skills.Magic.Enchant.GetDurabilityLoss C# (CSharp) Метод

GetDurabilityLoss() приватный Метод

Returns random durability loss for rank. Returns -1 if item should be destroyed.
Reference: http://wiki.mabinogiworld.com/view/Enchant#Enchanting
private GetDurabilityLoss ( Random rnd, SkillRank enchantRank, EnchantResult result ) : int
rnd System.Random
enchantRank SkillRank
result EnchantResult
Результат int
		private int GetDurabilityLoss(Random rnd, SkillRank enchantRank, EnchantResult result)
		{
			var points = 0;

			// Destroy item if safe enchanting is disabled and rank is over 6.
			if (!ChannelServer.Instance.Conf.World.SafeEnchanting && enchantRank >= SkillRank.R6)
				return -1;

			switch (enchantRank)
			{
				// A huge fail results in a bigger durability loss.
				case SkillRank.RF: points = (result == EnchantResult.Fail ? rnd.Next(0, 1) : rnd.Next(0, 2)); break;
				case SkillRank.RE: points = (result == EnchantResult.Fail ? rnd.Next(0, 2) : rnd.Next(0, 4)); break;
				case SkillRank.RD: points = (result == EnchantResult.Fail ? rnd.Next(0, 2) : rnd.Next(0, 4)); break;
				case SkillRank.RC: points = (result == EnchantResult.Fail ? rnd.Next(0, 3) : rnd.Next(0, 6)); break;
				case SkillRank.RB: points = (result == EnchantResult.Fail ? rnd.Next(0, 3) : rnd.Next(0, 7)); break;
				case SkillRank.RA: points = (result == EnchantResult.Fail ? rnd.Next(0, 4) : rnd.Next(0, 8)); break;
				case SkillRank.R9: points = (result == EnchantResult.Fail ? rnd.Next(1, 6) : rnd.Next(1, 10)); break;
				case SkillRank.R8: points = (result == EnchantResult.Fail ? rnd.Next(2, 7) : rnd.Next(2, 12)); break;
				case SkillRank.R7: points = (result == EnchantResult.Fail ? rnd.Next(2, 8) : rnd.Next(2, 14)); break;

				// Custom durability loss for R6+, for safe enchanting option.
				case SkillRank.R6: points = (result == EnchantResult.Fail ? rnd.Next(3, 9) : rnd.Next(3, 16)); break;
				case SkillRank.R5: points = (result == EnchantResult.Fail ? rnd.Next(3, 9) : rnd.Next(3, 16)); break;
				case SkillRank.R4: points = (result == EnchantResult.Fail ? rnd.Next(4, 10) : rnd.Next(4, 18)); break;
				case SkillRank.R3: points = (result == EnchantResult.Fail ? rnd.Next(4, 10) : rnd.Next(4, 18)); break;
				case SkillRank.R2: points = (result == EnchantResult.Fail ? rnd.Next(5, 11) : rnd.Next(5, 20)); break;
				case SkillRank.R1: points = (result == EnchantResult.Fail ? rnd.Next(5, 11) : rnd.Next(5, 20)); break;
			}

			return points * 1000;
		}