示例#1
0
        /// <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);
        }
示例#2
0
        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();
        }
示例#3
0
 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;
 }