/// <summary>
/// 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
/// </summary>
/// <param name="wo"></param>
/// <param name="tier"></param>
/// <param name="armorType"></param>
/// <returns></returns>
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;
}
Comments