void NPCSetUp() { GearNPC(); int p = 0; for (int k = baseLevel; k < level;) { k += p += 5; AddStats(); } //for (int i = 0; i < abilities.Count; i++) // abilities[i] = Ability.Load(abilities[i].name); for (int i = 0; i < perks.Count; i++) { if (perks[i].name == "-Random") { perks[i] = PerkLoad.RandomPerk(perks[i].tier, "Character"); } else { perks[i] = PerkLoad.Load(perks[i].name); } } switch (race) { case "Human": perks.Add(PerkLoad.Load("Human Adaptation")); break; case "Tsiun": perks.Add(PerkLoad.Load("Tsiun Trickery")); break; case "Uskavian": perks.Add(PerkLoad.Load("Uskavian Learning")); break; case "Miganan": perks.Add(PerkLoad.Load("Migana Skin")); break; case "Ireskian": perks.Add(PerkLoad.Load("Ireskian Talent")); break; } health = Health(); stamina = Stamina(); if (level >= 20) { GetCombatRole(); } }
//Evolves public void Evolve(int intensity = 1, bool inventory = true, bool perkGain = true, string skaviCat = null) { for (int i = 0; i < intensity; i++) { AddStats(); } ScaleNPC(intensity / 100.0); if (inventory) { string[] icollection = MobDrops(Program.rng.Next(intensity, 5 + intensity)); if (icollection != null) { foreach (string i in icollection) { if (i != null) { AddItemToInv(SpawnItem(i), 1, false); } } } int dropType = -1; int x = Program.rng.Next(101) - intensity; if (x <= 10) { AddItemToInv(SkaviDrops.FromArea(skaviCat)); } else { if (x <= 30) { dropType = 5; } AddItemToInv(Item.RandomItem(level, dropType), 1); } if (Program.Chance(20)) { AddItemToInv(Item.CreateRepairKit(1), Program.rng.Next(1, 6)); } } if (perkGain && Program.rng.Next(101) <= 15) { perks.Add(PerkLoad.RandomPerk(0, "Character")); } }