public static bool CanDoRole(this Pawn pawn, CombatRole role) { CompInventory comp = pawn.TryGetComp <CompInventory>(); if (comp == null) { return(false); } switch (role) { default: return(false); case CombatRole.Melee: return(CanBeMelee(pawn, comp)); case CombatRole.Assault: return(CanBeAssault(pawn, comp)); case CombatRole.Sniper: return(CanBeSniper(pawn, comp)); case CombatRole.Suppressor: return(CanBeSuppressor(pawn, comp)); case CombatRole.Grenadier: return(CanBeGrenadier(pawn, comp)); case CombatRole.Rocketeer: return(CanBeRocketeer(pawn, comp)); } }
private void GetCombatRole() { int[] rolls = new int[Enum.GetValues(typeof(CombatRole)).Length]; for (int i = 1; i < rolls.Length; i++) { rolls[i] = Program.rng.Next(1, 101); } //Stat var rolls[1] += stats.GetINT(); rolls[2] += stats.GetSTR(); //Get Highest roll int c = 0; for (int j = 0; j < rolls.Length; j++) { if (rolls[j] > rolls[c]) { c = j; } } //Apply new role role = (CombatRole)c; string[] avPerks = null; switch (role) { case CombatRole.Healer: abilities.Add(Ability.Load("Healing Spore", Math.Min(level, 40))); avPerks = new[] { "Adrenaline", "Energizing Touch", "Adaptation", }; stats.intelligence += 3; break; case CombatRole.Fighter: abilities.Add(Ability.Load("Execute", Math.Min(level / 2, 25))); avPerks = new[] { "Unstoppable Force", "Precision Enhancement", "Fighting Spirit" }; stats.strength += 3; break; } if (avPerks != null) { perks.Add(PerkLoad.Load(Utils.RandomElement(avPerks))); } }