Example #1
0
        /// <summary>
        /// Randomize character's parts
        /// </summary>
        public void RandomizePart(List <SlotCategory> excludedCategory, List <string> excludedPacks)
        {
            List <SlotCategory> excludedcats = new List <SlotCategory>(excludedCategory);
            Dictionary <SlotCategory, List <Part> > availparts = getAvailableParts(excludedPacks);

            // Equip
            foreach (SlotCategory c in System.Enum.GetValues(typeof(SlotCategory)))
            {
                if (excludedcats.Contains(c) || availparts[c] == null || availparts[c].Count <= 0)
                {
                    continue;
                }

                switch (c)
                {
                case SlotCategory.OffHand:
                    Weapon w = character.GetAssignedPart(SlotCategory.MainHand) as Weapon;
                    if (w == null)
                    {
                        character.EquipPart(c, nullpart);
                    }
                    else if (w.weaponCategory != WeaponCategory.TwoHanded && RollDice() < _RANDSETTINGS[c])
                    {
                        character.EquipPart(c, availparts[c][Random.Range(0, availparts[c].Count)]);
                    }
                    break;

                case SlotCategory.Ear:
                    if (RollDice() < _RANDSETTINGS[c])
                    {
                        character.EquipPart(c, availparts[c][Random.Range(0, availparts[c].Count)]);
                    }
                    else
                    {
                        character.EquipPart(c, "00", "Base");
                    }
                    break;

                case SlotCategory.BodySkin:
                    if (RollDice() < _RANDSETTINGS[c])
                    {
                        character.EquipPart(c, availparts[c][Random.Range(0, availparts[c].Count)]);
                    }
                    else
                    {
                        character.EquipPart(c, "Base 00 Male");
                    }
                    break;

                case SlotCategory.Skirt:
                    int pskirt = character.bodyType == BodyType.Female ? 40 : 20;
                    if (RollDice() < pskirt)
                    {
                        character.EquipPart(c, availparts[c][Random.Range(0, availparts[c].Count)]);
                        if (RollDice() < 50)
                        {
                            character.EquipPart(SlotCategory.Pants, "Base 00 Male");
                        }
                    }
                    else
                    {
                        character.EquipPart(c, nullpart);
                    }
                    break;

                default:
                    character.EquipPart(c, RollDice() < _RANDSETTINGS[c] ? availparts[c][Random.Range(0, availparts[c].Count)] : nullpart);
                    break;
                }
            }
        }
Example #2
0
        /// <summary>
        /// Randomize character's parts
        /// </summary>
        /// <param name="excludedCategory">(optional)Excluded SlotCategory</param>
        public void RandomizePart(params SlotCategory[] excludedCategory)
        {
            List <SlotCategory> excludedcats = new List <SlotCategory>(excludedCategory);

            // Get all available parts if null
            if (_availparts == null || _availparts.Count <= 0)
            {
                _availparts = new Dictionary <SlotCategory, List <Part> >();
                foreach (SlotCategory c in System.Enum.GetValues(typeof(SlotCategory)))
                {
                    _availparts.Add(c, PartList.Static.FindParts(c));
                }
            }

            // Equip
            foreach (SlotCategory c in System.Enum.GetValues(typeof(SlotCategory)))
            {
                if (excludedcats.Contains(c))
                {
                    continue;
                }
                switch (c)
                {
                case SlotCategory.OffHand:
                    Weapon w = character.GetAssignedPart(SlotCategory.MainHand) as Weapon;
                    if (w == null)
                    {
                        character.EquipPart(c, nullpart);
                    }
                    else if (w.weaponCategory != WeaponCategory.TwoHanded && RollDice() < _RANDSETTINGS[c])
                    {
                        character.EquipPart(c, _availparts[c][Random.Range(0, _availparts[c].Count)]);
                    }
                    break;

                case SlotCategory.Ear:
                    if (RollDice() < _RANDSETTINGS[c])
                    {
                        character.EquipPart(c, _availparts[c][Random.Range(0, _availparts[c].Count)]);
                    }
                    else
                    {
                        character.EquipPart(c, "00", "Base");
                    }
                    break;

                case SlotCategory.Pants:
                    int ppants = character.GetAssignedPart(SlotCategory.Skirt) != null ? 50 : 100;
                    if (RollDice() < ppants)
                    {
                        character.EquipPart(c, _availparts[c][Random.Range(0, _availparts[c].Count)]);
                    }
                    else
                    {
                        character.EquipPart(c, "00", "Base");
                    }
                    break;

                case SlotCategory.Skirt:
                    int pskirt = character.bodyType == BodyType.Female ? 40 : 20;
                    if (RollDice() < pskirt)
                    {
                        character.EquipPart(c, _availparts[c][Random.Range(0, _availparts[c].Count)]);
                        character.EquipPart(SlotCategory.Pants, RollDice() < 50 ? _availparts[SlotCategory.Pants][Random.Range(0, _availparts[SlotCategory.Pants].Count)] : nullpart);
                    }
                    else
                    {
                        character.EquipPart(c, nullpart);
                        character.EquipPart(SlotCategory.Pants, _availparts[SlotCategory.Pants][Random.Range(0, _availparts[SlotCategory.Pants].Count)]);
                    }
                    break;

                default:
                    character.EquipPart(c, RollDice() < _RANDSETTINGS[c] ? _availparts[c][Random.Range(0, _availparts[c].Count)] : nullpart);
                    break;
                }
            }
        }
Example #3
0
 public void RandomizePart()
 {
     // Get all available parts if null
     if (armors == null)
     {
         armors = PartList.Static.FindParts(SlotCategory.Armor);
     }
     if (pants == null)
     {
         pants = PartList.Static.FindParts(SlotCategory.Pants);
     }
     if (helmets == null)
     {
         helmets = PartList.Static.FindParts(SlotCategory.Helmet);
     }
     if (gloves == null)
     {
         gloves = PartList.Static.FindParts(SlotCategory.Gloves);
     }
     if (boots == null)
     {
         boots = PartList.Static.FindParts(SlotCategory.Boots);
     }
     if (capes == null)
     {
         capes = PartList.Static.FindParts(SlotCategory.Cape);
     }
     if (mainhand == null)
     {
         mainhand = PartList.Static.FindParts(SlotCategory.MainHand);
     }
     if (offhand == null)
     {
         offhand = PartList.Static.FindParts(SlotCategory.OffHand);
     }
     if (hair == null)
     {
         hair = PartList.Static.FindParts(SlotCategory.Hair);
     }
     if (fhair == null)
     {
         fhair = PartList.Static.FindParts(SlotCategory.FacialHair);
     }
     if (brow == null)
     {
         brow = PartList.Static.FindParts(SlotCategory.Eyebrow);
     }
     if (eyes == null)
     {
         eyes = PartList.Static.FindParts(SlotCategory.Eyes);
     }
     if (lips == null)
     {
         lips = PartList.Static.FindParts(SlotCategory.Mouth);
     }
     if (nose == null)
     {
         nose = PartList.Static.FindParts(SlotCategory.Nose);
     }
     if (ears == null)
     {
         ears = PartList.Static.FindParts(SlotCategory.Ear);
     }
     if (tatt == null)
     {
         tatt = PartList.Static.FindParts(SlotCategory.SkinDetails);
     }
     // Set body type & skin color
     if (RollDice() > 50)
     {
         character.SetBodyType(BodyType.Male);
     }
     else
     {
         character.SetBodyType(BodyType.Female);
     }
     // Equip armors
     character.EquipPart(SlotCategory.Armor, armors[Random.Range(0, armors.Count)]);
     character.EquipPart(SlotCategory.Pants, pants[Random.Range(0, pants.Count)]);
     if (RollDice() > 20)
     {
         character.EquipPart(SlotCategory.Helmet, helmets[Random.Range(0, helmets.Count)]);
     }
     else
     {
         character.EquipPart(SlotCategory.Helmet, nullpart);
     }
     if (RollDice() > 40)
     {
         character.EquipPart(SlotCategory.Gloves, gloves[Random.Range(0, gloves.Count)]);
     }
     else
     {
         character.EquipPart(SlotCategory.Gloves, nullpart);
     }
     character.EquipPart(SlotCategory.Boots, boots[Random.Range(0, boots.Count)]);
     if (RollDice() > 60)
     {
         character.EquipPart(SlotCategory.Cape, capes[Random.Range(0, capes.Count)]);
     }
     else
     {
         character.EquipPart(SlotCategory.Cape, nullpart);
     }
     // Equip weapons
     if (RollDice() > 50)
     {
         character.EquipPart(SlotCategory.MainHand, mainhand[Random.Range(0, mainhand.Count)]);
         Weapon w = character.GetAssignedPart(SlotCategory.MainHand) as Weapon;
         if (RollDice() > 50 && w.weaponCategory != WeaponCategory.TwoHanded)
         {
             character.EquipPart(SlotCategory.OffHand, offhand[Random.Range(0, offhand.Count)]);
         }
     }
     else
     {
         character.EquipPart(SlotCategory.MainHand, nullpart);
         character.EquipPart(SlotCategory.OffHand, nullpart);
     }
     // Equip facial feature
     if (RollDice() > 10)
     {
         character.EquipPart(SlotCategory.Hair, hair[Random.Range(0, hair.Count)]);
     }
     else
     {
         character.EquipPart(SlotCategory.Hair, nullpart);
     }
     if (RollDice() > 50)
     {
         character.EquipPart(SlotCategory.FacialHair, fhair[Random.Range(0, fhair.Count)]);
     }
     else
     {
         character.EquipPart(SlotCategory.FacialHair, nullpart);
     }
     if (RollDice() > 2)
     {
         character.EquipPart(SlotCategory.Eyebrow, brow[Random.Range(0, brow.Count)]);
     }
     else
     {
         character.EquipPart(SlotCategory.Eyebrow, nullpart);
     }
     if (RollDice() > 60)
     {
         character.EquipPart(SlotCategory.Ear, ears[Random.Range(0, ears.Count)]);
     }
     else
     {
         character.EquipPart(SlotCategory.Ear, "00", "Base");
     }
     character.EquipPart(SlotCategory.Eyes, eyes[Random.Range(0, eyes.Count)]);
     character.EquipPart(SlotCategory.Mouth, lips[Random.Range(0, lips.Count)]);
     character.EquipPart(SlotCategory.Nose, nose[Random.Range(0, nose.Count)]);
     if (RollDice() > 60)
     {
         character.EquipPart(SlotCategory.SkinDetails, tatt[Random.Range(0, tatt.Count)]);
     }
     else
     {
         character.EquipPart(SlotCategory.SkinDetails, nullpart);
     }
 }