private static void InitializeCustomClassActions() { //Conflicting trait levelset List <TraitDef> customTraits = new List <TraitDef>(); customTraits.Clear(); for (int i = 0; i < TM_ClassUtility.CustomClasses().Count; i++) { TMDefs.TM_CustomClass customClass = TM_ClassUtility.CustomClasses()[i]; customTraits.AddDistinct(customClass.classTrait); customClass.classTrait.conflictingTraits.AddRange(TM_Data.AllClassTraits); } IEnumerable <TraitDef> enumerable = from def in DefDatabase <TraitDef> .AllDefs where (TM_Data.AllClassTraits.Contains(def)) select def; foreach (TraitDef current in enumerable) { current.conflictingTraits.AddRange(customTraits); } for (int i = 0; i < customTraits.Count; i++) { for (int j = 0; j < customTraits.Count; j++) { if (customTraits[i] != customTraits[j]) { customTraits[i].conflictingTraits.Add(customTraits[j]); } } } }
private static void InitializeCustomClassActions() { //Conflicting trait levelset HashSet <TraitDef> customTraits = new HashSet <TraitDef>(); for (int i = 0; i < TM_ClassUtility.CustomClasses().Count; i++) { TMDefs.TM_CustomClass customClass = TM_ClassUtility.CustomClasses()[i]; customTraits.Add(customClass.classTrait); customClass.classTrait.conflictingTraits.AddRange(TM_Data.AllClassTraits); } IEnumerable <TraitDef> enumerable = from def in DefDatabase <TraitDef> .AllDefs where TM_Data.AllClassTraits.Contains(def) select def; foreach (TraitDef current in enumerable) { current.conflictingTraits.AddRange(customTraits); } foreach (var customTraitA in customTraits) { foreach (var customTraitB in customTraits) { if (customTraitA != customTraitB) { customTraitA.conflictingTraits.Add(customTraitB); } } } }
private static void CheckForDisabledCustomClass() { if (Settings.Instance.CustomClass == null) { Settings.Instance.CustomClass = new Dictionary <string, bool>(); Settings.Instance.CustomClass.Clear(); } for (int i = 0; i < TM_ClassUtility.CustomClasses().Count; i++) { TMDefs.TM_CustomClass customClass = TM_ClassUtility.CustomClasses()[i]; if (!Settings.Instance.CustomClass.Keys.Contains(customClass.classTrait.ToString())) { Settings.Instance.CustomClass.Add(customClass.classTrait.ToString(), true); } } }
private static void RestrictClasses() { ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef(); IEnumerable <ThingDef> enumerable = (from def in DefDatabase <ThingDef> .AllDefs select def); List <ThingDef> removedThings = new List <ThingDef>(); List <ThingDef> customThings = new List <ThingDef>(); List <ThingDef> removedCustomThings = new List <ThingDef>(); List <ThingDef> classSpells = new List <ThingDef>(); List <ThingDef> removedSpells = new List <ThingDef>(); for (int i = 0; i < TM_CustomClassDef.Named("TM_CustomClasses").customClasses.Count; i++) { TMDefs.TM_CustomClass cc = TM_CustomClassDef.Named("TM_CustomClasses").customClasses[i]; if (Settings.Instance.CustomClass[cc.classTrait.ToString()]) { if (cc.tornScript != null) { customThings.AddDistinct(cc.tornScript); } if (cc.fullScript != null) { customThings.AddDistinct(cc.fullScript); } if (cc.learnableSkills != null && cc.learnableSkills.Count > 0) { for (int j = 0; j < cc.learnableSkills.Count; j++) { customThings.AddDistinct(cc.learnableSkills[j]); } } if (cc.learnableSpells != null && cc.learnableSpells.Count > 0) { for (int j = 0; j < cc.learnableSpells.Count; j++) { customThings.AddDistinct(cc.learnableSpells[j]); } } if (cc.classFighterAbilities != null && cc.classFighterAbilities.Count > 0) { if (cc.classFighterAbilities.Contains(TorannMagicDefOf.TM_PoisonTrap)) { customThings.AddDistinct(ThingDef.Named("TM_PoisonTrap")); } if (cc.classFighterAbilities.Contains(TorannMagicDefOf.TM_60mmMortar)) { customThings.AddDistinct(TorannMagicDefOf.TM_60mmMortar_Base); } if (cc.classFighterAbilities.Contains(TorannMagicDefOf.TM_PistolSpec)) { customThings.AddDistinct(ThingDef.Named("TM_PistolSpec_Base0")); } if (cc.classFighterAbilities.Contains(TorannMagicDefOf.TM_RifleSpec)) { customThings.AddDistinct(ThingDef.Named("TM_RifleSpec_Base0")); } if (cc.classFighterAbilities.Contains(TorannMagicDefOf.TM_ShotgunSpec)) { customThings.AddDistinct(ThingDef.Named("TM_ShotgunSpec_Base0")); } } if (cc.classMageAbilities != null && cc.classMageAbilities.Count > 0) { if (cc.classMageAbilities.Contains(TorannMagicDefOf.TM_RegrowLimb)) { customThings.AddDistinct(ThingDef.Named("SeedofRegrowth")); } if (cc.classMageAbilities.Contains(TorannMagicDefOf.TM_SummonExplosive)) { customThings.AddDistinct(ThingDef.Named("TM_ManaMine")); customThings.AddDistinct(ThingDef.Named("TM_ManaMine_I")); customThings.AddDistinct(ThingDef.Named("TM_ManaMine_II")); customThings.AddDistinct(ThingDef.Named("TM_ManaMine_III")); } if (cc.classMageAbilities.Contains(TorannMagicDefOf.TM_SummonPylon)) { customThings.AddDistinct(ThingDef.Named("DefensePylon")); customThings.AddDistinct(ThingDef.Named("DefensePylon_I")); customThings.AddDistinct(ThingDef.Named("DefensePylon_II")); customThings.AddDistinct(ThingDef.Named("DefensePylon_III")); customThings.AddDistinct(ThingDef.Named("Bullet_DefensePylon")); customThings.AddDistinct(ThingDef.Named("Launcher_DefensePylon")); customThings.AddDistinct(ThingDef.Named("Launcher_DefensePylon_I")); customThings.AddDistinct(ThingDef.Named("Launcher_DefensePylon_II")); customThings.AddDistinct(ThingDef.Named("Launcher_DefensePylon_III")); customThings.AddDistinct(ThingDef.Named("TM_Poppi")); } if (cc.classMageAbilities.Contains(TorannMagicDefOf.TM_SummonPoppi)) { customThings.AddDistinct(ThingDef.Named("TM_Poppi")); } if (cc.classMageAbilities.Contains(TorannMagicDefOf.TM_RaiseUndead)) { customThings.AddDistinct(TorannMagicDefOf.TM_Artifact_NecroticOrb); } } } else { if (cc.tornScript != null) { removedCustomThings.Add(cc.tornScript); } for (int k = 0; k < cc.learnableSpells.Count; k++) { removedSpells.Add(cc.learnableSpells[k]); } for (int k = 0; k < cc.learnableSkills.Count; k++) { removedSpells.Add(cc.learnableSkills[k]); } removedCustomThings.Add(cc.fullScript); } } foreach (ThingDef current in enumerable) { if (!settingsRef.Sniper) { if (current.defName == "BookOfSniper") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.Ranger) { if (current.defName == "BookOfRanger" || current.defName == "TM_PoisonTrap") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.Gladiator) { if (current.defName == "BookOfGladiator") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.Bladedancer) { if (current.defName == "BookOfBladedancer") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.Faceless) { if (current.defName == "BookOfFaceless") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.Psionic) { if (current.defName == "BookOfPsionic") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.DeathKnight) { if (current.defName == "BookOfDeathKnight") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.Monk) { if (current.defName == "BookOfMonk") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.Commander) { if (current == TorannMagicDefOf.BookOfCommander) { if (!customThings.Contains(current)) { removedThings.Add(current); } } } if (!settingsRef.SuperSoldier) { if (current == TorannMagicDefOf.BookOfSuperSoldier || current == TorannMagicDefOf.TM_60mmMortar_Base) { if (!customThings.Contains(current)) { removedThings.Add(current); } } if (current.defName.Contains("TM_PistolSpec_Base") && !customThings.Contains(ThingDef.Named("TM_PistolSpec_Base0"))) { removedThings.Add(current); } if (current.defName.Contains("TM_RifleSpec_Base") && !customThings.Contains(ThingDef.Named("TM_RifleSpec_Base0"))) { removedThings.Add(current); } if (current.defName.Contains("TM_ShotgunSpec_Base") && !customThings.Contains(ThingDef.Named("TM_ShotgunSpec_Base0"))) { removedThings.Add(current); } } if (!settingsRef.Arcanist) { if (current.defName == "Torn_BookOfArcanist" || current.defName == "BookOfArcanist" || current.defName == "SpellOf_FoldReality") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_FoldReality") { classSpells.Add(current); } } if (!settingsRef.FireMage) { if (current.defName == "Torn_BookOfInnerFire" || current.defName == "BookOfInnerFire" || current.defName == "SpellOf_Firestorm" || current.defName == "SpellOf_DryGround") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_Firestorm" || current.defName == "SpellOf_DryGround") { classSpells.Add(current); } } if (!settingsRef.IceMage) { if (current.defName == "Torn_BookOfHeartOfFrost" || current.defName == "BookOfHeartOfFrost" || current.defName == "SpellOf_Blizzard" || current.defName == "SpellOf_WetGround") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_Blizzard" || current.defName == "SpellOf_WetGround") { classSpells.Add(current); } } if (!settingsRef.LitMage) { if (current.defName == "Torn_BookOfStormBorn" || current.defName == "BookOfStormBorn" || current.defName == "SpellOf_EyeOfTheStorm" || current.defName == "SpellOf_ChargeBattery") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_EyeOfTheStorm" || current.defName == "SpellOf_ChargeBattery") { classSpells.Add(current); } } if (!settingsRef.Druid) { if (current.defName == "Torn_BookOfNature" || current.defName == "BookOfNature" || current.defName == "SpellOf_RegrowLimb" || current.defName == "SeedofRegrowth" || current.defName == "SpellOf_FertileLands") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_RegrowLimb" || current.defName == "SpellOf_FertileLands") { classSpells.Add(current); } } if (!settingsRef.Summoner) { if (current.defName == "Torn_BookOfSummoner" || current.defName == "BookOfSummoner" || current.defName == "SpellOf_SummonPoppi" || current.defName == "TM_ManaMine" || current.defName == "TM_ManaMine_I" || current.defName == "TM_ManaMine_II" || current.defName == "TM_ManaMine_III" || current.defName == "DefensePylon" || current.defName == "DefensePylon_I" || current.defName == "DefensePylon_II" || current.defName == "DefensePylon_III" || current.defName == "Bullet_DefensePylon" || current.defName == "Launcher_DefensePylon" || current.defName == "Launcher_DefensePylon_I" || current.defName == "Launcher_DefensePylon_II" || current.defName == "Launcher_DefensePylon_III" || current.defName == "TM_Poppi") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_SummonPoppi") { classSpells.Add(current); } } if (!settingsRef.Paladin) { if (current.defName == "Torn_BookOfValiant" || current.defName == "BookOfValiant" || current.defName == "SpellOf_HolyWrath") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_HolyWrath") { classSpells.Add(current); } } if (!settingsRef.Priest) { if (current.defName == "Torn_BookOfPriest" || current.defName == "BookOfPriest" || current.defName == "SpellOf_Resurrection") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_Resurrection") { classSpells.Add(current); } } if (!settingsRef.Bard) { if (current.defName == "Torn_BookOfBard" || current.defName == "BookOfBard" || current.defName == "SpellOf_BattleHymn") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_BattleHymn") { classSpells.Add(current); } } if (!settingsRef.Necromancer) { if (current == TorannMagicDefOf.BookOfNecromancer || current == TorannMagicDefOf.Torn_BookOfUndead || current == TorannMagicDefOf.SpellOf_LichForm || current == TorannMagicDefOf.TM_Artifact_NecroticOrb) { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current == TorannMagicDefOf.SpellOf_LichForm) { classSpells.Add(current); } } if (!settingsRef.Geomancer) { if (current.defName == "Torn_BookOfEarth" || current.defName == "BookOfEarth" || current.defName == "SpellOf_Meteor" || current.defName == "TM_Lesser_SentinelR" || current.defName == "TM_SentinelR" || current.defName == "TM_Greater_SentinelR") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_Meteor") { classSpells.Add(current); } } if (!settingsRef.Demonkin) { if (current.defName == "Torn_BookOfDemons" || current.defName == "BookOfDemons" || current.defName == "SpellOf_Scorn" || current.defName == "SpellOf_PsychicShock") { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current.defName == "SpellOf_Scorn" || current.defName == "SpellOf_PsychicShock") { classSpells.Add(current); } } if (!settingsRef.Technomancer) { if (current == TorannMagicDefOf.Torn_BookOfMagitech || current == TorannMagicDefOf.BookOfMagitech || current == TorannMagicDefOf.SpellOf_TechnoShield || current == TorannMagicDefOf.SpellOf_Sabotage || current == TorannMagicDefOf.SpellOf_Overdrive || current == TorannMagicDefOf.SpellOf_OrbitalStrike) { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current == TorannMagicDefOf.SpellOf_TechnoShield || current == TorannMagicDefOf.SpellOf_Sabotage || current == TorannMagicDefOf.SpellOf_Overdrive || current == TorannMagicDefOf.SpellOf_OrbitalStrike) { classSpells.Add(current); } } if (!settingsRef.BloodMage) { if (current == TorannMagicDefOf.BookOfHemomancy || current == TorannMagicDefOf.Torn_BookOfHemomancy || current == TorannMagicDefOf.SpellOf_BloodMoon) { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current == TorannMagicDefOf.SpellOf_BloodMoon) { classSpells.Add(current); } } if (!settingsRef.Enchanter) { if (current == TorannMagicDefOf.BookOfEnchanter || current == TorannMagicDefOf.Torn_BookOfEnchanter || current == TorannMagicDefOf.SpellOf_Shapeshift) { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current == TorannMagicDefOf.SpellOf_Shapeshift) { classSpells.Add(current); } } if (!settingsRef.Chronomancer) { if (current == TorannMagicDefOf.BookOfChronomancer || current == TorannMagicDefOf.Torn_BookOfChronomancer || current == TorannMagicDefOf.SpellOf_Recall) { if (!customThings.Contains(current)) { removedThings.Add(current); } } } else { if (current == TorannMagicDefOf.SpellOf_Recall) { classSpells.Add(current); } } if (!settingsRef.ChaosMage) { if (current == TorannMagicDefOf.BookOfChaos || current == TorannMagicDefOf.Torn_BookOfChaos) { if (!customThings.Contains(current)) { removedThings.Add(current); } } } } for (int i = 0; i < removedCustomThings.Count; i++) { if (!removedThings.Contains(removedCustomThings[i])) { removedThings.Add(removedCustomThings[i]); } } for (int i = 0; i < removedSpells.Count; i++) { if (!customThings.Contains(removedSpells[i]) && !classSpells.Contains(removedSpells[i])) { removedThings.Add(removedSpells[i]); removedCustomThings.Add(removedSpells[i]); } } for (int i = 0; i < removedThings.Count(); i++) { //Log.Message("removing " + removedThings[i].defName + " from def database"); DefDatabase <ThingDef> .AllDefsListForReading.Remove(removedThings[i]); } IEnumerable <RecipeDef> RecipeEnumerable = (from def in DefDatabase <RecipeDef> .AllDefs select def); List <RecipeDef> removedRecipes = new List <RecipeDef>(); foreach (RecipeDef current in RecipeEnumerable) { if (!settingsRef.Arcanist) { if (current.defName == "Make_SpellOf_FoldReality" && !customThings.Contains(TorannMagicDefOf.SpellOf_FoldReality)) { removedRecipes.Add(current); } } if (!settingsRef.FireMage) { if ((current.defName == "Make_SpellOf_Firestorm" && !customThings.Contains(TorannMagicDefOf.SpellOf_Firestorm)) || (current.defName == "Make_SpellOf_DryGround" && !customThings.Contains(TorannMagicDefOf.SpellOf_DryGround))) { removedRecipes.Add(current); } } if (!settingsRef.IceMage) { if ((current.defName == "Make_SpellOf_Overdrive" && !customThings.Contains(TorannMagicDefOf.SpellOf_Overdrive)) || (current.defName == "Make_SpellOf_WetGround" && !customThings.Contains(TorannMagicDefOf.SpellOf_WetGround))) { removedRecipes.Add(current); } } if (!settingsRef.LitMage) { if ((current.defName == "Make_SpellOf_EyeOfTheStorm" && !customThings.Contains(TorannMagicDefOf.SpellOf_EyeOfTheStorm)) || (current.defName == "Make_SpellOf_ChargeBattery" && !customThings.Contains(TorannMagicDefOf.SpellOf_ChargeBattery))) { removedRecipes.Add(current); } } if (!settingsRef.Druid) { if ((current.defName == "Make_SpellOf_RegrowLimb" && !customThings.Contains(TorannMagicDefOf.SpellOf_RegrowLimb)) || (current.defName == "Make_SpellOf_FertileLands" && !customThings.Contains(TorannMagicDefOf.SpellOf_FertileLands))) { removedRecipes.Add(current); } } if (!settingsRef.Summoner) { if ((current.defName == "Make_SpellOf_SummonPoppi" && !customThings.Contains(TorannMagicDefOf.SpellOf_SummonPoppi))) { removedRecipes.Add(current); } } if (!settingsRef.Paladin) { if ((current.defName == "Make_SpellOf_HolyWrath" && !customThings.Contains(TorannMagicDefOf.SpellOf_HolyWrath))) { removedRecipes.Add(current); } } if (!settingsRef.Priest) { if ((current.defName == "Make_SpellOf_Resurrection" && !customThings.Contains(TorannMagicDefOf.SpellOf_Resurrection))) { removedRecipes.Add(current); } } if (!settingsRef.Bard) { if ((current.defName == "Make_SpellOf_BattleHymn" && !customThings.Contains(TorannMagicDefOf.SpellOf_BattleHymn))) { removedRecipes.Add(current); } } if (!settingsRef.Necromancer) { if ((current.defName == "Make_SpellOf_FoldReality" && !customThings.Contains(TorannMagicDefOf.SpellOf_FoldReality))) { removedRecipes.Add(current); } } if (!settingsRef.Geomancer) { if ((current.defName == "Make_SpellOf_Meteor" && !customThings.Contains(TorannMagicDefOf.SpellOf_Meteor))) { removedRecipes.Add(current); } } if (!settingsRef.Demonkin) { if ((current.defName == "Make_SpellOf_Scorn" && !customThings.Contains(TorannMagicDefOf.SpellOf_Scorn)) || (current.defName == "Make_SpellOf_PsychicShock" && !customThings.Contains(TorannMagicDefOf.SpellOf_PsychicShock))) { removedRecipes.Add(current); } } if (!settingsRef.Technomancer) { if ((current.defName == "Make_SpellOf_TechnoShield" && !customThings.Contains(TorannMagicDefOf.SpellOf_TechnoShield)) || (current.defName == "Make_SpellOf_Sabotage" && !customThings.Contains(TorannMagicDefOf.SpellOf_Sabotage)) || (current.defName == "Make_SpellOf_Overdrive" && !customThings.Contains(TorannMagicDefOf.SpellOf_Overdrive)) || (current.defName == "Make_SpellOf_OrbitalStrike" && !customThings.Contains(TorannMagicDefOf.SpellOf_OrbitalStrike))) { removedRecipes.Add(current); } } if (!settingsRef.BloodMage) { if ((current.defName == "Make_SpellOf_BloodMoon" && !customThings.Contains(TorannMagicDefOf.SpellOf_BloodMoon))) { removedRecipes.Add(current); } } if (!settingsRef.Enchanter) { if ((current.defName == "Make_SpellOf_Shapeshift" && !customThings.Contains(TorannMagicDefOf.SpellOf_Shapeshift))) { removedRecipes.Add(current); } } if (!settingsRef.Chronomancer) { if ((current.defName == "Make_SpellOf_Recall" && !customThings.Contains(TorannMagicDefOf.SpellOf_Recall))) { removedRecipes.Add(current); } } if (!settingsRef.SuperSoldier) { if (!settingsRef.SuperSoldier) { if ((current.defName == "Make_BookOfSuperSoldier" && !customThings.Contains(TorannMagicDefOf.BookOfSuperSoldier))) { removedRecipes.Add(current); } } } } for (int i = 0; i < removedCustomThings.Count; i++) { if (RecipeEnumerable.Any((RecipeDef x) => x.defName == "Make_" + removedCustomThings[i].defName)) { removedRecipes.Add(RecipeEnumerable.FirstOrDefault <RecipeDef>((RecipeDef x) => x.defName == ("Make_" + removedCustomThings[i].ToString()))); } } for (int i = 0; i < removedRecipes.Count(); i++) { //Log.Message("removing " + removedRecipes[i].defName + " from def database"); DefDatabase <RecipeDef> .AllDefsListForReading.Remove(removedRecipes[i]); } }
public override void DoWindowContents(Rect inRect) { int num = 0; float rowHeight = 28f; Rect sRect = new Rect(inRect.x, inRect.y, inRect.width - 36f, inRect.height + 296f + (TM_ClassUtility.CustomClasses().Count * 40)); scrollPosition = GUI.BeginScrollView(inRect, scrollPosition, sRect, false, true); //GUI.BeginGroup(inRect); Text.Font = GameFont.Medium; float x = Text.CalcSize("TM_ClassOptions".Translate()).x; Rect headerRect = new Rect((inRect.width / 2f) - (x / 2), inRect.y, inRect.width, ClassOptionsWindow.HeaderSize); Widgets.Label(headerRect, "TM_ClassOptions".Translate()); Text.Font = GameFont.Small; GUI.color = Color.yellow; x = Text.CalcSize("TM_ClassWarning".Translate()).x; Rect warningRect = new Rect((inRect.width / 2f) - (x / 2), inRect.y + ClassOptionsWindow.HeaderSize + 4f, inRect.width, ClassOptionsWindow.TextSize); Widgets.Label(warningRect, "TM_ClassWarning".Translate()); x = Text.CalcSize("TM_RequiresRestart".Translate()).x; Rect restartRect = new Rect((inRect.width / 2f) - (x / 2), inRect.y + ClassOptionsWindow.HeaderSize + ClassOptionsWindow.TextSize + 4f, inRect.width, ClassOptionsWindow.TextSize); Widgets.Label(restartRect, "TM_RequiresRestart".Translate()); GUI.color = Color.white; Rect rect1 = new Rect(inRect); rect1.width /= 3f; num += 3; GUI.color = Color.magenta; Rect classRect = Controller.UIHelper.GetRowRect(rect1, rowHeight, num); Widgets.Label(classRect, "TM_EnabledMages".Translate()); Rect classRectShiftRight = Controller.UIHelper.GetRowRect(classRect, rowHeight, num); classRectShiftRight.x += classRect.width + 98f; GUI.color = Color.green; Widgets.Label(classRectShiftRight, "TM_EnabledFighters".Translate()); num++; GUI.color = Color.white; Rect slRect0 = Controller.UIHelper.GetRowRect(classRect, rowHeight, num); slRect0.width = inRect.width / 2.2f; Settings.Instance.baseMageChance = Widgets.HorizontalSlider(slRect0, Settings.Instance.baseMageChance, 0f, 5f, false, "baseMageChance".Translate() + " " + Rarity(Settings.Instance.baseMageChance) + " " + TM_Calc.GetMagePrecurserChance().ToString("P1"), "0", "5", .01f); Rect slRect0ShiftRight = Controller.UIHelper.GetRowRect(slRect0, rowHeight, num); slRect0ShiftRight.x += slRect0.width + 20f; Settings.Instance.baseFighterChance = Widgets.HorizontalSlider(slRect0ShiftRight, Settings.Instance.baseFighterChance, 0f, 5f, false, "baseFighterChance".Translate() + " " + Rarity(Settings.Instance.baseFighterChance) + " " + TM_Calc.GetFighterPrecurserChance().ToString("P1"), "0", "5", .01f); num++; Rect slRect1 = Controller.UIHelper.GetRowRect(slRect0, rowHeight, num); Settings.Instance.advMageChance = Widgets.HorizontalSlider(slRect1, Settings.Instance.advMageChance, 0f, 2f, false, "advMageChance".Translate() + " " + Rarity(Settings.Instance.advMageChance) + " " + TM_Calc.GetMageSpawnChance().ToString("P1"), "0", "2", .01f); Rect slRect1ShiftRight = Controller.UIHelper.GetRowRect(slRect1, rowHeight, num); slRect1ShiftRight.x += slRect0.width + 20f; Settings.Instance.advFighterChance = Widgets.HorizontalSlider(slRect1ShiftRight, Settings.Instance.advFighterChance, 0f, 2f, false, "advFighterChance".Translate() + " " + Rarity(Settings.Instance.advFighterChance) + " " + TM_Calc.GetFighterSpawnChance().ToString("P1"), "0", "2", .01f); num++; Widgets.DrawLineHorizontal(inRect.x - 10f, rowHeight * num, inRect.width - 15f); num++; Rect rowRect0 = Controller.UIHelper.GetRowRect(classRect, rowHeight, num); Widgets.CheckboxLabeled(rowRect0, "TM_Wanderer".Translate(), ref Settings.Instance.Wanderer, false); Rect rowRect0ShiftRight = Controller.UIHelper.GetRowRect(rowRect0, rowHeight, num); rowRect0ShiftRight.x += rowRect0.width + 98f; Widgets.CheckboxLabeled(rowRect0ShiftRight, "TM_Wayfarer".Translate(), ref Settings.Instance.Wayfayer, false); num++; Rect rowRect = Controller.UIHelper.GetRowRect(rowRect0, rowHeight, num); Widgets.CheckboxLabeled(rowRect, "TM_Arcanist".Translate(), ref Settings.Instance.Arcanist, false); Rect rowRectShiftRight = Controller.UIHelper.GetRowRect(rowRect, rowHeight, num); rowRectShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRectShiftRight, "TM_Gladiator".Translate(), ref Settings.Instance.Gladiator, false); num++; Rect rowRect1 = Controller.UIHelper.GetRowRect(rowRect, rowHeight, num); Widgets.CheckboxLabeled(rowRect1, "TM_FireMage".Translate(), ref Settings.Instance.FireMage, false); Rect rowRect1ShiftRight = Controller.UIHelper.GetRowRect(rowRect1, rowHeight, num); rowRect1ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect1ShiftRight, "TM_Bladedancer".Translate(), ref Settings.Instance.Bladedancer, false); num++; Rect rowRect2 = Controller.UIHelper.GetRowRect(rowRect1, rowHeight, num); Widgets.CheckboxLabeled(rowRect2, "TM_IceMage".Translate(), ref Settings.Instance.IceMage, false); Rect rowRect2ShiftRight = Controller.UIHelper.GetRowRect(rowRect2, rowHeight, num); rowRect2ShiftRight.x += rowRect1.width + 98f; Widgets.CheckboxLabeled(rowRect2ShiftRight, "TM_Sniper".Translate(), ref Settings.Instance.Sniper, false); num++; Rect rowRect3 = Controller.UIHelper.GetRowRect(rowRect2, rowHeight, num); Widgets.CheckboxLabeled(rowRect3, "TM_LitMage".Translate(), ref Settings.Instance.LitMage, false); Rect rowRect3ShiftRight = Controller.UIHelper.GetRowRect(rowRect3, rowHeight, num); rowRect3ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect3ShiftRight, "TM_Ranger".Translate(), ref Settings.Instance.Ranger, false); num++; Rect rowRect4 = Controller.UIHelper.GetRowRect(rowRect3, rowHeight, num); Widgets.CheckboxLabeled(rowRect4, "TM_Geomancer".Translate(), ref Settings.Instance.Geomancer, false); Rect rowRect4ShiftRight = Controller.UIHelper.GetRowRect(rowRect4, rowHeight, num); rowRect4ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect4ShiftRight, "TM_Faceless".Translate(), ref Settings.Instance.Faceless, false); num++; Rect rowRect5 = Controller.UIHelper.GetRowRect(rowRect4, rowHeight, num); Widgets.CheckboxLabeled(rowRect5, "TM_Druid".Translate(), ref Settings.Instance.Druid, false); Rect rowRect5ShiftRight = Controller.UIHelper.GetRowRect(rowRect5, rowHeight, num); rowRect5ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect5ShiftRight, "TM_Psionic".Translate(), ref Settings.Instance.Psionic, false); num++; Rect rowRect6 = Controller.UIHelper.GetRowRect(rowRect5, rowHeight, num); Widgets.CheckboxLabeled(rowRect6, "TM_Paladin".Translate(), ref Settings.Instance.Paladin, false); Rect rowRect6ShiftRight = Controller.UIHelper.GetRowRect(rowRect6, rowHeight, num); rowRect6ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect6ShiftRight, "TM_DeathKnight".Translate(), ref Settings.Instance.DeathKnight, false); num++; Rect rowRect7 = Controller.UIHelper.GetRowRect(rowRect6, rowHeight, num); Widgets.CheckboxLabeled(rowRect7, "TM_Priest".Translate(), ref Settings.Instance.Priest, false); Rect rowRect7ShiftRight = Controller.UIHelper.GetRowRect(rowRect7, rowHeight, num); rowRect7ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect7ShiftRight, "TM_Monk".Translate(), ref Settings.Instance.Monk, false); num++; Rect rowRect8 = Controller.UIHelper.GetRowRect(rowRect7, rowHeight, num); Widgets.CheckboxLabeled(rowRect8, "TM_Bard".Translate(), ref Settings.Instance.Bard, false); Rect rowRect8ShiftRight = Controller.UIHelper.GetRowRect(rowRect8, rowHeight, num); rowRect8ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect8ShiftRight, "TM_Commander".Translate(), ref Settings.Instance.Commander, false); num++; Rect rowRect9 = Controller.UIHelper.GetRowRect(rowRect8, rowHeight, num); Widgets.CheckboxLabeled(rowRect9, "TM_Summoner".Translate(), ref Settings.Instance.Summoner, false); Rect rowRect9ShiftRight = Controller.UIHelper.GetRowRect(rowRect9, rowHeight, num); rowRect9ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect9ShiftRight, "TM_SuperSoldier".Translate(), ref Settings.Instance.SuperSoldier, false); num++; Rect rowRect10 = Controller.UIHelper.GetRowRect(rowRect9, rowHeight, num); Widgets.CheckboxLabeled(rowRect10, "TM_Necromancer".Translate(), ref Settings.Instance.Necromancer, false); Rect rowRect10ShiftRight = Controller.UIHelper.GetRowRect(rowRect10, rowHeight, num); rowRect10ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect10ShiftRight, "TM_Shadow".Translate(), ref Settings.Instance.Shadow); num++; Rect rowRect11 = Controller.UIHelper.GetRowRect(rowRect10, rowHeight, num); Widgets.CheckboxLabeled(rowRect11, "TM_Demonkin".Translate(), ref Settings.Instance.Demonkin, false); num++; Rect rowRect12 = Controller.UIHelper.GetRowRect(rowRect11, rowHeight, num); Widgets.CheckboxLabeled(rowRect12, "TM_Technomancer".Translate(), ref Settings.Instance.Technomancer, false); num++; Rect rowRect13 = Controller.UIHelper.GetRowRect(rowRect12, rowHeight, num); Widgets.CheckboxLabeled(rowRect13, "TM_BloodMage".Translate(), ref Settings.Instance.BloodMage, false); num++; Rect rowRect14 = Controller.UIHelper.GetRowRect(rowRect13, rowHeight, num); Widgets.CheckboxLabeled(rowRect14, "TM_Enchanter".Translate(), ref Settings.Instance.Enchanter, false); num++; Rect rowRect15 = Controller.UIHelper.GetRowRect(rowRect14, rowHeight, num); Widgets.CheckboxLabeled(rowRect15, "TM_Chronomancer".Translate(), ref Settings.Instance.Chronomancer, false); num++; Rect rowRect16 = Controller.UIHelper.GetRowRect(rowRect15, rowHeight, num); Widgets.CheckboxLabeled(rowRect16, "TM_ChaosMage".Translate(), ref Settings.Instance.ChaosMage, false); num++; Rect rowRect17 = Controller.UIHelper.GetRowRect(rowRect16, rowHeight, num); Widgets.CheckboxLabeled(rowRect17, "TM_Brightmage".Translate(), ref Settings.Instance.Brightmage, false); num++; Rect rowRect18 = Controller.UIHelper.GetRowRect(rowRect17, rowHeight, num); Widgets.CheckboxLabeled(rowRect18, "TM_Shaman".Translate(), ref Settings.Instance.Shaman, false); num++; Widgets.DrawLineHorizontal(inRect.x - 10f, rowHeight * num, inRect.width - 15f); num++; Rect slRect2 = Controller.UIHelper.GetRowRect(slRect1, rowHeight, num); Settings.Instance.supportTraitChance = Widgets.HorizontalSlider(slRect2, Settings.Instance.supportTraitChance, 0f, 1f, false, "supportTraitChance".Translate() + " " + Settings.Instance.supportTraitChance.ToString("P1"), "0", "1", .01f); //Rect slRect2ShiftRight = Controller.UIHelper.GetRowRect(slRect1, rowHeight, num); num++; Rect rowRect19 = Controller.UIHelper.GetRowRect(rowRect18, rowHeight, num);; Widgets.CheckboxLabeled(rowRect19, "TM_ArcaneConduit".Translate(), ref Settings.Instance.ArcaneConduit, false); Rect rowRect19ShiftRight = Controller.UIHelper.GetRowRect(rowRect19, rowHeight, num); rowRect19ShiftRight.x += rowRect.width + 98f; Widgets.CheckboxLabeled(rowRect19ShiftRight, "TM_Boundless".Translate(), ref Settings.Instance.Boundless, false); num++; Rect rowRect20 = Controller.UIHelper.GetRowRect(rowRect19, rowHeight, num);; Widgets.CheckboxLabeled(rowRect20, "TM_ManaWell".Translate(), ref Settings.Instance.ManaWell, false); num++; Widgets.DrawLineHorizontal(inRect.x - 10f, rowHeight * num, inRect.width - 15f); num++; GUI.color = Color.cyan; Rect customRect = Controller.UIHelper.GetRowRect(rowRect20, rowHeight, num); Widgets.Label(customRect, "TM_CustomClasses".Translate()); GUI.color = Color.white; num++; for (int i = 0; i < TM_ClassUtility.CustomClasses().Count; i++) { TMDefs.TM_CustomClass cClass = TM_ClassUtility.CustomClasses()[i]; bool classEnabled = Settings.Instance.CustomClass[cClass.classTrait.ToString()]; if (cClass.classTrait == TorannMagicDefOf.TM_Brightmage) { classEnabled = Settings.Instance.Brightmage; } if (cClass.classTrait == TorannMagicDefOf.TM_Shaman) { classEnabled = Settings.Instance.Shaman; } if (cClass.classTrait == TorannMagicDefOf.TM_TheShadow) { classEnabled = Settings.Instance.Shadow; } if (cClass.shouldShow) { //if (cClass.isMage && cClass.isFighter) //{ // GUI.color = Color.yellow; //} //else if(cClass.isMage) //{ // GUI.color = Color.magenta; //} //else if(cClass.isFighter) //{ // GUI.color = Color.green; //} //else //{ // GUI.color = Color.gray; //} Rect customRect1 = Controller.UIHelper.GetRowRect(customRect, rowHeight, num); Widgets.CheckboxLabeled(customRect1, cClass.classTrait.degreeDatas.FirstOrDefault().label, ref classEnabled, false); num++; } if (classEnabled != Settings.Instance.CustomClass[cClass.classTrait.ToString()]) { Settings.Instance.CustomClass.Remove(cClass.classTrait.ToString()); Settings.Instance.CustomClass.Add(cClass.classTrait.ToString(), classEnabled); } //GUI.color = Color.white; } //GUI.EndGroup(); GUI.EndScrollView(); }