Aura.Channel.Skills.Base.CreationSkill.GetBonusesFor C# (CSharp) Method

GetBonusesFor() private method

Returns a list of bonuses that the given item would get with the given quality.
Reference: http://mabination.com/threads/85245-Player-made-Item-Quality
private GetBonusesFor ( Item item, int quality ) : int>.Dictionary
item Item
quality int
return int>.Dictionary
		private Dictionary<Bonus, int> GetBonusesFor(Item item, int quality)
		{
			var bonuses = new Dictionary<Bonus, int>();

			// Weapons (except bows)
			if (item.HasTag("/weapon/") && !item.HasTag("/bow/|/bow01|/crossbow/"))
			{
				// Balance
				if (quality >= 98)
					bonuses[Bonus.Balance] = 10;
				else if (quality >= 95)
					bonuses[Bonus.Balance] = 9;
				else if (quality >= 92)
					bonuses[Bonus.Balance] = 8;
				else if (quality >= 90)
					bonuses[Bonus.Balance] = 7;
				else if (quality >= 85)
					bonuses[Bonus.Balance] = 6;
				else if (quality >= 80)
					bonuses[Bonus.Balance] = 5;
				else if (quality >= 70)
					bonuses[Bonus.Balance] = 4;
				else if (quality >= 60)
					bonuses[Bonus.Balance] = 3;
				else if (quality >= 50)
					bonuses[Bonus.Balance] = 2;
				else if (quality >= 30)
					bonuses[Bonus.Balance] = 1;

				// Critical
				if (quality >= 95)
					bonuses[Bonus.Critical] = 5;
				else if (quality >= 90)
					bonuses[Bonus.Critical] = 4;
				else if (quality >= 80)
					bonuses[Bonus.Critical] = 3;
				else if (quality >= 70)
					bonuses[Bonus.Critical] = 2;
				else if (quality >= 50)
					bonuses[Bonus.Critical] = 1;

				// Max Attack
				if (quality >= 75)
					bonuses[Bonus.AttackMax] = 2;
				else if (quality >= 20)
					bonuses[Bonus.AttackMax] = 1;
				else if (quality < -80)
					bonuses[Bonus.AttackMax] = -1;

				// Min Attack
				if (quality >= 75)
					bonuses[Bonus.AttackMin] = 2;
				else if (quality >= 20)
					bonuses[Bonus.AttackMin] = 1;
				else if (quality < -80)
					bonuses[Bonus.AttackMin] = -1;

				// Durability
				if (quality >= 80)
				{
					bonuses[Bonus.Durability] = 5;
					bonuses[Bonus.DurabilityMax] = 5;
				}
				else if (quality >= 60)
				{
					bonuses[Bonus.Durability] = 4;
					bonuses[Bonus.DurabilityMax] = 4;
				}
				else if (quality >= 50)
				{
					bonuses[Bonus.Durability] = 3;
					bonuses[Bonus.DurabilityMax] = 3;
				}
				else if (quality >= 45)
				{
					bonuses[Bonus.Durability] = 2;
					bonuses[Bonus.DurabilityMax] = 2;
				}
				else if (quality >= 40)
				{
					bonuses[Bonus.Durability] = 1;
					bonuses[Bonus.DurabilityMax] = 1;
				}
				else if (quality >= -20)
				{
				}
				else if (quality >= -60)
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = 0;
				}
				else if (quality >= -80)
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = -1;
				}
				else
				{
					bonuses[Bonus.Durability] = -3;
					bonuses[Bonus.DurabilityMax] = -2;
				}
			}

			// Bows
			else if (item.HasTag("/bow/|/bow01/|/crossbow/"))
			{
				// Balance
				if (quality >= 98)
					bonuses[Bonus.Balance] = 5;
				else if (quality >= 80)
					bonuses[Bonus.Balance] = 4;
				else if (quality >= 70)
					bonuses[Bonus.Balance] = 3;
				else if (quality >= 50)
					bonuses[Bonus.Balance] = 2;
				else if (quality >= 30)
					bonuses[Bonus.Balance] = 1;

				// Critical
				if (quality >= 98)
					bonuses[Bonus.Critical] = 5;
				else if (quality >= 95)
					bonuses[Bonus.Critical] = 4;
				else if (quality >= 80)
					bonuses[Bonus.Critical] = 3;
				else if (quality >= 70)
					bonuses[Bonus.Critical] = 2;
				else if (quality >= 10)
					bonuses[Bonus.Critical] = 1;

				// Max Attack
				if (quality >= 90)
					bonuses[Bonus.AttackMax] = 2;
				else if (quality >= 10)
					bonuses[Bonus.AttackMax] = 1;
				else
					bonuses[Bonus.AttackMax] = -1;

				// Min Attack
				if (quality >= 95)
					bonuses[Bonus.AttackMin] = 2;
				else if (quality >= 30)
					bonuses[Bonus.AttackMin] = 1;
				else if (quality < -10)
					bonuses[Bonus.AttackMin] = -1;

				// Durability
				if (quality >= 98)
				{
					bonuses[Bonus.Durability] = 3;
					bonuses[Bonus.DurabilityMax] = 3;
				}
				else if (quality >= 90)
				{
					bonuses[Bonus.Durability] = 2;
					bonuses[Bonus.DurabilityMax] = 2;
				}
				else if (quality >= 50)
				{
					bonuses[Bonus.Durability] = 1;
					bonuses[Bonus.DurabilityMax] = 1;
				}
				else if (quality >= -10)
				{
				}
				else if (quality >= -30)
				{
					bonuses[Bonus.Durability] = -1;
					bonuses[Bonus.DurabilityMax] = -1;
				}
				else
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = -2;
				}
			}

			// Armors and clothes
			else if (item.HasTag("/armor/cloth/|/armor/lightarmor/|/armor/heavyarmor/"))
			{
				// Defense
				if (quality >= 90)
					bonuses[Bonus.Defense] = 1;

				// Protection
				if (quality >= 95)
					bonuses[Bonus.Protection] = 3;
				else if (quality >= 75)
					bonuses[Bonus.Protection] = 2;
				else if (quality >= 50)
					bonuses[Bonus.Protection] = 1;

				// Durability
				if (quality >= 80)
				{
					bonuses[Bonus.Durability] = 5;
					bonuses[Bonus.DurabilityMax] = 5;
				}
				else if (quality >= 70)
				{
					bonuses[Bonus.Durability] = 4;
					bonuses[Bonus.DurabilityMax] = 4;
				}
				else if (quality >= 55)
				{
					bonuses[Bonus.Durability] = 3;
					bonuses[Bonus.DurabilityMax] = 3;
				}
				else if (quality >= 35)
				{
					bonuses[Bonus.Durability] = 2;
					bonuses[Bonus.DurabilityMax] = 2;
				}
				else if (quality >= -20)
				{
				}
				else if (quality >= -60)
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = 0;
				}
				else if (quality >= -80)
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = -1;
				}
				else
				{
					bonuses[Bonus.Durability] = -3;
					bonuses[Bonus.DurabilityMax] = -2;
				}
			}

			// Gloves and Gauntles
			else if (item.HasTag("/hand/glove/|/hand/gauntlet/"))
			{
				// Protection
				if (quality >= 80)
					bonuses[Bonus.Protection] = 1;
			}

			// Boots, Shoes, and Greaves
			else if (item.HasTag("/foot/shoes/|/foot/armorboots/"))
			{
				// Durability
				if (quality >= 95)
				{
					bonuses[Bonus.Durability] = 5;
					bonuses[Bonus.DurabilityMax] = 5;
				}
				else if (quality >= 85)
				{
					bonuses[Bonus.Durability] = 4;
					bonuses[Bonus.DurabilityMax] = 4;
				}
				else if (quality >= 60)
				{
					bonuses[Bonus.Durability] = 3;
					bonuses[Bonus.DurabilityMax] = 3;
				}
				else if (quality >= 40)
				{
					bonuses[Bonus.Durability] = 2;
					bonuses[Bonus.DurabilityMax] = 2;
				}
				else if (quality >= 20)
				{
					bonuses[Bonus.Durability] = 1;
					bonuses[Bonus.DurabilityMax] = 1;
				}
				else if (quality >= -20)
				{
				}
				else if (quality >= -60)
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = 0;
				}
				else if (quality >= -80)
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = -1;
				}
				else
				{
					bonuses[Bonus.Durability] = -3;
					bonuses[Bonus.DurabilityMax] = -2;
				}
			}

			// Shields
			else if (item.HasTag("/lefthand/shield/"))
			{
				// Defense
				if (quality >= 90)
					bonuses[Bonus.Defense] = 1;

				// Durability
				if (quality >= 95)
				{
					bonuses[Bonus.Durability] = 5;
					bonuses[Bonus.DurabilityMax] = 5;
				}
				else if (quality >= 90)
				{
					bonuses[Bonus.Durability] = 4;
					bonuses[Bonus.DurabilityMax] = 4;
				}
				else if (quality >= 85)
				{
					bonuses[Bonus.Durability] = 3;
					bonuses[Bonus.DurabilityMax] = 3;
				}
				else if (quality >= 80)
				{
					bonuses[Bonus.Durability] = 2;
					bonuses[Bonus.DurabilityMax] = 2;
				}
				else if (quality >= 40)
				{
					bonuses[Bonus.Durability] = 1;
					bonuses[Bonus.DurabilityMax] = 1;
				}
				else if (quality >= -20)
				{
				}
				else if (quality >= -60)
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = 0;
				}
				else if (quality >= -80)
				{
					bonuses[Bonus.Durability] = -2;
					bonuses[Bonus.DurabilityMax] = -1;
				}
				else
				{
					bonuses[Bonus.Durability] = -3;
					bonuses[Bonus.DurabilityMax] = -2;
				}
			}

			// Hats
			else if (item.HasTag("/headgear/"))
			{
				// Durability
				if (quality >= 90)
				{
					bonuses[Bonus.Durability] = 1;
					bonuses[Bonus.DurabilityMax] = 1;
				}
			}

			// Helmets
			else if (item.HasTag("/helmet/"))
			{
				// Durability
				if (quality >= 80)
				{
					bonuses[Bonus.Durability] = 1;
					bonuses[Bonus.DurabilityMax] = 1;
				}
			}

			// Robes
			else if (item.HasTag("/robe/"))
			{
				if (quality >= 80)
				{
					bonuses[Bonus.Durability] = 1;
					bonuses[Bonus.DurabilityMax] = 1;
				}
			}

			return bonuses;
		}