void SetClassStats(MercClass mercClass) { if (mercClass == MercClass.Soldier) { healthMax = 100; startArmor = 50; stamina = 3; ammo = 2; } if (mercClass == MercClass.Bandit) { healthMax = 100; startArmor = 40; stamina = 4; ammo = 1; } if (mercClass == MercClass.Gunman) { healthMax = 100; startArmor = 50; stamina = 2; ammo = 3; } if (mercClass == MercClass.Mercenary) { healthMax = 100; startArmor = 80; stamina = 2; ammo = 2; } }
static List<PrepCard> GenerateClassPrepCards(MercClass mercClass) { List<PrepCard> result = new List<PrepCard>(); if (mercClass == MercClass.Soldier) result = SoldierCards.GetClassPrepCards(); if (mercClass == MercClass.Bandit) result = BanditCards.GetClassPrepCards(); if (mercClass == MercClass.Gunman) result = GunmanCards.GetClassPrepCards(); if (mercClass == MercClass.Mercenary) result = MercenaryCards.GetClassPrepCards(); return result; }
void GeneratePartyMember(string memberName) { MapRegion startingRegion = MapManager.main.GetTown(); var classtypes=System.Enum.GetValues(typeof(MercClass)); myClass = (MercClass)classtypes.GetValue(Random.Range(0,classtypes.Length)); combatDeck = GenerateClassCombatDeck(myClass); classPrepCards = GenerateClassPrepCards(myClass); weaponPrepCards = GenerateDefaultWeaponPrepCards(); SetClassStats(myClass); //Pick color out of ones left //worldCoords=startingCoords; currentRegion=startingRegion; startingRegion.localPartyMembers.Add(this); color = GetPortraitColor(); //Randomly pick out a specialty List<Trait> possibleSpecialtyPerks=Trait.GenerateRandomSkillTree(5); //Pick out a starting specialty perk Skill startingLearnedSkill=possibleSpecialtyPerks[Random.Range(0,possibleSpecialtyPerks.Count)] as Skill; startingLearnedSkill.learned=true; traits.Add(startingLearnedSkill); //Fill out trait list List<Trait> possibleGenericPerks=Trait.GetTraitList(); //Deactivate the opposite traits of the starting perk foreach(Trait genericPerk in possibleGenericPerks) { if (genericPerk.GetType()==startingLearnedSkill.oppositePerk) { if (possibleGenericPerks.Contains(genericPerk)) possibleGenericPerks.Remove(genericPerk); break; } } //Randomly pick out generic perks int necessaryPerkCount=2; int addedPerksCount=0; while (addedPerksCount<necessaryPerkCount && possibleGenericPerks.Count>0) { Trait newPerk=possibleGenericPerks[Random.Range(0,possibleGenericPerks.Count)]; traits.Add(newPerk); addedPerksCount++; possibleGenericPerks.Remove(newPerk); if (newPerk.oppositePerk!=null) { foreach (Trait possibleGenericPerk in possibleGenericPerks) { if (possibleGenericPerk.GetType()==newPerk.oppositePerk) { if (possibleGenericPerks.Contains(possibleGenericPerk)) possibleGenericPerks.Remove(possibleGenericPerk); break; } } foreach (Trait possibleSpecialtyPerk in possibleSpecialtyPerks) { if (possibleSpecialtyPerk.GetType()==newPerk.oppositePerk) { if (possibleSpecialtyPerks.Contains(possibleSpecialtyPerk)) possibleSpecialtyPerks.Remove(possibleSpecialtyPerk); break; } } } } name=memberName; baseMaxStamina=10; armorValue=0; maxCarryCapacity=4;// hasLight=false; isCook=false; isMedic=false; isLockExpert=false; isScout=false; foreach (Trait myPerk in traits) { if (myPerk.GetType().BaseType==typeof(Trait)) myPerk.ActivateEffect(this); else { Skill mySkill=myPerk as Skill; if (mySkill.learned) mySkill.ActivateEffect(this); } } //make sure perks trigger before these to properly use modified values of maxHealth and maxStamina health = healthMax; currentMaxStamina=baseMaxStamina; UpdateCurrentCarryCapacity(); equippedRangedWeapon=null; }
static CombatDeck GenerateClassCombatDeck(MercClass mercClass) { CombatDeck result = new CombatDeck(); if (mercClass == MercClass.Soldier) result = SoldierCards.GetClassCards(); if (mercClass == MercClass.Bandit) result = BanditCards.GetClassCards(); if (mercClass == MercClass.Gunman) result = GunmanCards.GetClassCards(); if (mercClass==MercClass.Mercenary) result = MercenaryCards.GetClassCards(); //result = new CombatDeck(); //result.AddCards(typeof(Headshot),2); //result.AddCards(typeof(Hipfire), 2); return result; }