示例#1
0
        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);
                    }
                }
            }
        }
示例#3
0
 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);
         }
     }
 }
示例#4
0
        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]);
            }
        }
示例#5
0
        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();
        }