/// /// Assign a final AL value based upon tier /// Based upon http://acpedia.org/wiki/Loot/Tier_7_Pre2013#Max_Armor_Levels /// and http://acpedia.org/wiki/Loot/Tier_8#Maximum_Armor_Levels given the base AL values on the weenies /// Assumes that the Olthoi Armor pieces have been normalized to a smaller baseline value /// /// /// /// /// private static WorldObject AssignArmorLevel(WorldObject wo, int tier) { var baseArmorLevel = wo.GetProperty(PropertyInt.ArmorLevel) ?? 0; if (wo.ArmorType != null && wo.ClothingPriority != (CoverageMask)CoverageMaskHelper.Underwear) { int armorModValue = 0; switch (tier) { case 1: if (wo.ArmorType == (int)ArmorType.Leather || wo.ArmorType == (int)ArmorType.Cloth) armorModValue = ThreadSafeRandom.Next(20, 50); if (wo.ArmorType == (int)ArmorType.StuddedLeather) armorModValue = ThreadSafeRandom.Next(50, 70); if (wo.ArmorType == (int)ArmorType.Metal || wo.ArmorType == (int)ArmorType.Chainmail || wo.ArmorType == (int)ArmorType.Scalemail) armorModValue = ThreadSafeRandom.Next(0, 10); // Covenant and Olthoi Armor (not Amuli, Celdon, Koujia, or Alduressa types of Olthoi Armor) if (wo.ResistMagic != null && wo.ResistMagic == 9999) armorModValue = 0; break; case 2: if (wo.ArmorType == (int)ArmorType.Leather || wo.ArmorType == (int)ArmorType.Cloth) armorModValue = ThreadSafeRandom.Next(50, 80); if (wo.ArmorType == (int)ArmorType.StuddedLeather) armorModValue = ThreadSafeRandom.Next(70, 100); if (wo.ArmorType == (int)ArmorType.Metal || wo.ArmorType == (int)ArmorType.Chainmail || wo.ArmorType == (int)ArmorType.Scalemail) armorModValue = ThreadSafeRandom.Next(10, 30); // Covenant and Olthoi Armor (not Amuli, Celdon, Koujia, or Alduressa types of Olthoi Armor) if (wo.ResistMagic != null && wo.ResistMagic == 9999) armorModValue = 0; break; case 3: if (wo.ArmorType == (int)ArmorType.Leather || wo.ArmorType == (int)ArmorType.Cloth) armorModValue = ThreadSafeRandom.Next(80, 110); if (wo.ArmorType == (int)ArmorType.StuddedLeather) armorModValue = ThreadSafeRandom.Next(100, 130); if (wo.ArmorType == (int)ArmorType.Metal || wo.ArmorType == (int)ArmorType.Chainmail || wo.ArmorType == (int)ArmorType.Scalemail) armorModValue = ThreadSafeRandom.Next(30, 60); // Covenant and Olthoi Armor (not Amuli, Celdon, Koujia, or Alduressa types of Olthoi Armor) if (wo.ResistMagic != null && wo.ResistMagic == 9999) armorModValue = ThreadSafeRandom.Next(190, 210); break; case 4: if (wo.ArmorType == (int)ArmorType.Leather || wo.ArmorType == (int)ArmorType.Cloth) armorModValue = ThreadSafeRandom.Next(110, 140); if (wo.ArmorType == (int)ArmorType.StuddedLeather) armorModValue = ThreadSafeRandom.Next(120, 150); if (wo.ArmorType == (int)ArmorType.Metal || wo.ArmorType == (int)ArmorType.Chainmail || wo.ArmorType == (int)ArmorType.Scalemail) armorModValue = ThreadSafeRandom.Next(60, 90); // Covenant and Olthoi Armor (not Amuli, Celdon, Koujia, or Alduressa types of Olthoi Armor) if (wo.ResistMagic != null && wo.ResistMagic == 9999) armorModValue = ThreadSafeRandom.Next(210, 230); break; case 5: if (wo.ArmorType == (int)ArmorType.Leather || wo.ArmorType == (int)ArmorType.Cloth) armorModValue = ThreadSafeRandom.Next(140, 170); if (wo.ArmorType == (int)ArmorType.StuddedLeather) armorModValue = ThreadSafeRandom.Next(150, 180); if (wo.ArmorType == (int)ArmorType.Metal || wo.ArmorType == (int)ArmorType.Chainmail || wo.ArmorType == (int)ArmorType.Scalemail) armorModValue = ThreadSafeRandom.Next(90, 120); // Covenant and Olthoi Armor (not Amuli, Celdon, Koujia, or Alduressa types of Olthoi Armor) if (wo.ResistMagic != null && wo.ResistMagic == 9999) armorModValue = ThreadSafeRandom.Next(230, 250); break; case 6: if (wo.ArmorType == (int)ArmorType.Leather || wo.ArmorType == (int)ArmorType.Cloth) armorModValue = ThreadSafeRandom.Next(170, 200); if (wo.ArmorType == (int)ArmorType.StuddedLeather) armorModValue = ThreadSafeRandom.Next(180, 210); if (wo.ArmorType == (int)ArmorType.Metal || wo.ArmorType == (int)ArmorType.Chainmail || wo.ArmorType == (int)ArmorType.Scalemail) armorModValue = ThreadSafeRandom.Next(120, 150); // Covenant and Olthoi Armor (not Amuli, Celdon, Koujia, or Alduressa types of Olthoi Armor) if (wo.ResistMagic != null && wo.ResistMagic == 9999) armorModValue = ThreadSafeRandom.Next(250, 270); break; case 7: if (wo.ArmorType == (int)ArmorType.Leather || wo.ArmorType == (int)ArmorType.Cloth) armorModValue = ThreadSafeRandom.Next(200, 230); if (wo.ArmorType == (int)ArmorType.StuddedLeather) armorModValue = ThreadSafeRandom.Next(210, 240); if (wo.ArmorType == (int)ArmorType.Metal || wo.ArmorType == (int)ArmorType.Chainmail || wo.ArmorType == (int)ArmorType.Scalemail) armorModValue = ThreadSafeRandom.Next(150, 180); // Covenant and Olthoi Armor (not Amuli, Celdon, Koujia, or Alduressa types of Olthoi Armor) if (wo.ResistMagic != null && wo.ResistMagic == 9999) armorModValue = ThreadSafeRandom.Next(270, 290); break; case 8: if (wo.ArmorType == (int)ArmorType.Leather || wo.ArmorType == (int)ArmorType.Cloth) armorModValue = ThreadSafeRandom.Next(230, 260); if (wo.ArmorType == (int)ArmorType.StuddedLeather) armorModValue = ThreadSafeRandom.Next(240, 270); if (wo.ArmorType == (int)ArmorType.Metal || wo.ArmorType == (int)ArmorType.Chainmail || wo.ArmorType == (int)ArmorType.Scalemail) armorModValue = ThreadSafeRandom.Next(180, 210); // Covenant and Olthoi Armor (not Amuli, Celdon, Koujia, or Alduressa types of Olthoi Armor) if (wo.ResistMagic != null && wo.ResistMagic == 9999) armorModValue = ThreadSafeRandom.Next(290, 310); break; } int adjustedArmorLevel = baseArmorLevel + armorModValue; wo.SetProperty(PropertyInt.ArmorLevel, adjustedArmorLevel); } return wo; }