/// <summary> /// Returns random Armour Layer from material, excluding jewelry /// </summary> /// <returns></returns> public ArmourLayer GetArmourLayer() { armourLayers.Remove(ArmourLayer.jewelry); ArmourLayer layer = armourLayers[World.World.random.Next(armourLayers.Count)]; armourLayers.Add(ArmourLayer.jewelry); return(layer); }
private void CreateArmour_Click(object sender, EventArgs e) { string name = armourName.Text; if (name == "") { return; } List <BodyParts> affected = new List <BodyParts>(); foreach (CheckBox bodyTick in bodyPartAffected) { if (bodyTick.Checked) { Enum.TryParse(bodyTick.Text, out BodyParts part); affected.Add(part); } } if (affected.Count == 0) { return; } if ((string)armourMaterialList.SelectedItem == "") { return; } Material material = Material.Materials.First(m => m.name == (string)armourMaterialList.SelectedItem); if ((string)armourQualityList.SelectedItem == "") { return; } Quality quality = (Quality)Enum.Parse(typeof(Quality), (string)armourQualityList.SelectedItem); if ((string)armourLayerList.SelectedItem == "") { return; } ArmourLayer layer = (ArmourLayer)Enum.Parse(typeof(ArmourLayer), (string)armourLayerList.SelectedItem); Armour armour = new Armour(name, (int)baseArmourDurability.Value, affected, material, quality, layer); string affectedParts = "new List<BodyParts>{"; foreach (var item in affected) { affectedParts += "BodyParts." + item.ToString() + ","; } affectedParts = affectedParts.Substring(0, affectedParts.Length - 1); affectedParts += "}"; output.Text = $"Armour {name} = new Armour(\"{name}\", {(int)baseArmourDurability.Value}, {affectedParts}, Material.Materials.First(m => m.name == \"{material.name}\")," + $"Quality.{quality.ToString()}, ArmourLayer.{layer.ToString()});"; player.troop.armours.Add(armour); playerView.Render(); }
public Armour(string name, int baseDurability, List <BodyParts> Affected, Material material, Quality Quality, ArmourLayer layer) : base(name) { if (Affected.Count == 0) { throw new ArgumentException("Must affect at least on body part"); } quality = Quality; this.layer = layer; magicDefense = material.magicResistance; magicDefense += (int)(magicDefense * ((double)(int)magicDefense) / 100d); sharpDefense = material.hardness; sharpDefense += (int)(sharpDefense * ((double)(int)quality) / 100d) / 10; bluntDefense = material.density; bluntDefense += (int)(bluntDefense * ((double)(int)quality) / 100d); durability = (material.durability * Affected.Count + baseDurability) / 10; durability += (int)(durability * ((double)(int)quality * 2) / 100d); maxDurability = durability; affected = Affected; parts = new Body().bodyParts.Where(p => affected.Exists(a => a == p.part)).ToList(); weight = parts.Sum(p => p.size) * material.mass / 10; this.material = material; }