public override void Init()
 {
     ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
     if (settingsRef.riftChallenge > 0)
     {
         base.Init();
         this.disabled = false;
         this.FindGoodCenterLocation();
         this.thing = ThingMaker.MakeThing(ThingDef.Named("TM_ElementalRift"), ThingDefOf.BlocksGranite);
         GenSpawn.Spawn(thing, centerLocation.ToIntVec3, this.SingleMap, Rot4.North, WipeMode.Vanish, false);
         Faction faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("TM_ElementalFaction"));
         if (!faction.HostileTo(Faction.OfPlayer))
         {
             thing.SetFaction(Faction.OfMechanoids, null);
         }
         else
         {
             thing.SetFaction(faction, null);
         }
     }
     else
     {
         this.disabled = true;
         Log.Message("Rift spawning disabled.");
     }
 }
Exemplo n.º 2
0
 public void CalculateDifficultyModifiers()
 {
     wealthMultiplier = .7f;
     wealth           = this.SingleMap.PlayerWealthForStoryteller;
     if (wealth > 20000)
     {
         wealthMultiplier = .8f;
     }
     if (wealth > 50000)
     {
         wealthMultiplier = 1f;
     }
     if (wealth > 100000)
     {
         wealthMultiplier = 1.25f;
     }
     if (wealth > 250000)
     {
         wealthMultiplier = 1.5f;
     }
     if (wealth > 500000)
     {
         wealthMultiplier = 2.5f;
     }
     storytellerThreat = Find.Storyteller.difficulty.threatScale;
     ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
     eventDifficulty = Mathf.RoundToInt(settingsRef.demonAssaultChallenge);
     //Log.Message("wealth: " + wealth + " w_mult: " + wealthMultiplier + " threat scale: " + storytellerThreat + " event difficulty " + eventDifficulty);
 }
Exemplo n.º 3
0
 public override void Init()
 {
     ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
     if (settingsRef.wanderingLichChallenge > 0)
     {
         base.Init();
         this.disabled = false;
         this.FindGoodEdgeLocation();
         this.SpawnWanderingLich();
         this.SetEventParameters();
         if (settingsRef.wanderingLichChallenge >= 2)
         {
             InitializeDeathSkies();
         }
         if (settingsRef.wanderingLichChallenge >= 3)
         {
             InitializeSolarFlare();
         }
     }
     else
     {
         this.disabled = true;
         Log.Message("Wandering Lich spawning disabled.");
     }
 }
Exemplo n.º 4
0
        public void CalculateWealthModifier()
        {
            float wealthMultiplier = .7f;
            float wealth           = this.SingleMap.PlayerWealthForStoryteller;

            if (wealth > 20000)
            {
                wealthMultiplier = .8f;
            }
            if (wealth > 50000)
            {
                wealthMultiplier = 1f;
            }
            if (wealth > 100000)
            {
                wealthMultiplier = 1.25f;
            }
            if (wealth > 250000)
            {
                wealthMultiplier = 1.5f;
            }
            if (wealth > 500000)
            {
                wealthMultiplier = 2.5f;
            }
            ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
            geChance = 0.02f * wealthMultiplier * settingsRef.wanderingLichChallenge;
            leChance = 0.14f * settingsRef.wanderingLichChallenge * wealthMultiplier;
        }
Exemplo n.º 5
0
        public override void Init()
        {
            bool tempAllow        = false;
            Map  map              = this.SingleMap;
            MagicMapComponent mmc = map.GetComponent <MagicMapComponent>();

            if (mmc != null && mmc.allowAllIncidents)
            {
                tempAllow = true;
            }
            ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
            if (settingsRef.wanderingLichChallenge > 0 || tempAllow)
            {
                base.Init();
                this.disabled = false;
                this.FindGoodEdgeLocation();
                this.SpawnWanderingLich();
                this.SetEventParameters();
                if (settingsRef.wanderingLichChallenge >= 2)
                {
                    InitializeDeathSkies();
                }
                if (settingsRef.wanderingLichChallenge >= 3)
                {
                    InitializeSolarFlare();
                }
            }
            else
            {
                this.disabled = true;
                Log.Message("Wandering Lich spawning disabled.");
            }
        }
        private void SetEventParameters()
        {
            ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
            float mult = Rand.Range(2f, 4f) + settingsRef.wanderingLichChallenge + Find.Storyteller.difficulty.threatScale;

            this.nextEventTick      = Find.TickManager.TicksGame + 200;
            this.ticksBetweenEvents = Mathf.RoundToInt((float)this.Duration / mult);
        }
        public override void End()
        {
            IntVec3      thingLoc = centerLocation.ToIntVec3;
            List <Thing> thingList;
            Thing        destroyable = null;

            thingList = thingLoc.GetThingList(base.Map);
            int z = 0;

            while (z < thingList.Count)
            {
                destroyable = thingList[z];
                if (destroyable != null)
                {
                    bool validator = destroyable is Building;
                    if (validator)
                    {
                        if (destroyable.def == ThingDef.Named("TM_ElementalRift"))
                        {
                            destroyable.Destroy(DestroyMode.Vanish);
                        }
                    }
                }
                z++;
            }
            ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
            if (!this.disabled)
            {
                Thing thing = null;
                thing            = ThingMaker.MakeThing(ThingDef.Named("Jade"));
                thing.stackCount = Rand.Range(35 * (int)settingsRef.riftChallenge, 60 * (int)settingsRef.riftChallenge);
                if (thing != null)
                {
                    GenPlace.TryPlaceThing(thing, thingLoc, this.Map, ThingPlaceMode.Near, null);
                }
                ItemCollectionGeneratorParams parms = default(ItemCollectionGeneratorParams);
                parms.techLevel        = TechLevel.Neolithic;
                parms.totalMarketValue = 1000f * (settingsRef.riftChallenge * settingsRef.riftChallenge);
                List <Thing> list = new List <Thing>();
                ItemCollectionGenerator_Gemstones itc_g = new ItemCollectionGenerator_Gemstones();
                list = itc_g.Generate(parms, list);
                for (int i = 0; i < list.Count; i++)
                {
                    thing            = list[i];
                    thing.stackCount = list[i].stackCount;
                    GenPlace.TryPlaceThing(thing, thingLoc, this.Map, ThingPlaceMode.Near, null);
                }
            }
            base.End();
        }
Exemplo n.º 8
0
 protected override bool TryExecuteWorker(IncidentParms parms)
 {
     ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
     if (settingsRef.riftChallenge > 0)
     {
         Map map      = (Map)parms.target;
         int duration = Mathf.RoundToInt(this.def.durationDays.RandomInRange * 60000f);
         GameCondition_ElementalAssault gameCondition_ElementalAssault = (GameCondition_ElementalAssault)GameConditionMaker.MakeCondition(GameConditionDef.Named("ElementalAssault"), duration, 0);
         map.gameConditionManager.RegisterCondition(gameCondition_ElementalAssault);
         base.SendStandardLetter(new TargetInfo(gameCondition_ElementalAssault.centerLocation.ToIntVec3, map, false), null, new string[0]);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 9
0
        private void SetEventParameters()
        {
            ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
            int pts = (int)(Rand.Range(.9f, 1.1f) * wealth * wealthMultiplier * storytellerThreat);

            pts += 50000 * eventDifficulty;
            if (eventSpawnPoints <= pts)
            {
                eventSpawnPoints = pts;
            }
            if (eventDifficulty > 0)
            {
                this.doEventAction      = true;
                this.nextEventTick      = Find.TickManager.TicksGame + 200;
                this.ticksBetweenEvents = Mathf.RoundToInt((float)this.Duration / (110f * eventDifficulty));
            }
        }
Exemplo n.º 10
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            bool tempAllow        = false;
            Map  map              = (Map)parms.target;
            MagicMapComponent mmc = map.GetComponent <MagicMapComponent>();

            if (mmc != null && mmc.allowAllIncidents)
            {
                tempAllow = true;
            }
            ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
            if (settingsRef.demonAssaultChallenge > 0 || tempAllow)
            {
                string str = "";

                int            duration    = Mathf.RoundToInt(this.def.durationDays.RandomInRange * 60000f);
                List <Faction> lichFaction = Find.FactionManager.AllFactions.ToList();
                bool           factionFlag = false;
                for (int i = 0; i < lichFaction.Count; i++)
                {
                    if (lichFaction[i].def.defName == "TM_SkeletalFaction")
                    {
                        Faction.OfPlayer.TrySetRelationKind(lichFaction[i], FactionRelationKind.Hostile, false, null, null);
                        factionFlag = true;
                    }
                }
                if (!factionFlag)
                {
                    return(false);
                }
                TM_Action.ForceFactionDiscoveryAndRelation(TorannMagicDefOf.TM_SkeletalFaction);
                GameCondition_DemonAssault gameCondition_DemonAssault = (GameCondition_DemonAssault)GameConditionMaker.MakeCondition(GameConditionDef.Named("DemonAssault"), duration);
                map.gameConditionManager.RegisterCondition(gameCondition_DemonAssault);
                base.SendStandardLetter(parms, gameCondition_DemonAssault.lookTarget, str);
                //base.SendStandardLetter(new TargetInfo(gameCondition_ElementalAssault.centerLocation.ToIntVec3, map, false), null, new string[0]);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 11
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
            bool tempAllow        = false;
            Map  map              = (Map)parms.target;
            MagicMapComponent mmc = map.GetComponent <MagicMapComponent>();

            if (mmc != null && mmc.allowAllIncidents)
            {
                tempAllow = true;
            }
            if (settingsRef.wanderingLichChallenge > 0 || tempAllow)
            {
                int duration = Mathf.RoundToInt(this.def.durationDays.RandomInRange * 60000f);
                IEnumerable <Faction> lichFaction = Find.FactionManager.AllFactions;
                bool factionFlag = false;
                foreach (var faction in lichFaction)
                {
                    if (faction.def.defName == "TM_SkeletalFaction")
                    {
                        Faction.OfPlayer.TrySetRelationKind(faction, FactionRelationKind.Hostile, false, null, null);
                        factionFlag = true;
                    }
                }
                if (!factionFlag)
                {
                    return(false);
                }
                TM_Action.ForceFactionDiscoveryAndRelation(TorannMagicDefOf.TM_SkeletalFaction);
                GameCondition_WanderingLich gameCondition_WanderingLich = (GameCondition_WanderingLich)GameConditionMaker.MakeCondition(GameConditionDef.Named("WanderingLich"), duration);
                map.gameConditionManager.RegisterCondition(gameCondition_WanderingLich);
                base.SendStandardLetter(parms, gameCondition_WanderingLich.thing, "");
                //base.SendStandardLetter(new TargetInfo(gameCondition_WanderingLich.edgeLocation.ToIntVec3, map, false), null, new string[0]);
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public override void DoEffect(Pawn user)
        {
            ThingDef tempPod    = null;
            IntVec3  currentPos = parent.PositionHeld;
            Map      map        = parent.Map;

            if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.Gladiator))
            {
                tempPod = ThingDef.Named("BookOfGladiator");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.TM_Sniper))
            {
                tempPod = ThingDef.Named("BookOfSniper");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.Bladedancer))
            {
                tempPod = ThingDef.Named("BookOfBladedancer");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.Ranger))
            {
                tempPod = ThingDef.Named("BookOfRanger");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.Faceless))
            {
                tempPod = ThingDef.Named("BookOfFaceless");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.TM_Psionic))
            {
                tempPod = ThingDef.Named("BookOfPsionic");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.DeathKnight))
            {
                tempPod = ThingDef.Named("BookOfDeathKnight");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.PhysicalProdigy))
            {
                int attempt = 0;
                ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
                RetryWrite :;
                if (attempt < 20)
                {
                    float rnd = Rand.Range(0, 7);
                    if (rnd < 1)
                    {
                        if (settingsRef.Gladiator)
                        {
                            tempPod = ThingDef.Named("BookOfGladiator");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 2)
                    {
                        if (settingsRef.Sniper)
                        {
                            tempPod = ThingDef.Named("BookOfSniper");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 3)
                    {
                        if (settingsRef.Bladedancer)
                        {
                            tempPod = ThingDef.Named("BookOfBladedancer");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 4)
                    {
                        if (settingsRef.Ranger)
                        {
                            tempPod = ThingDef.Named("BookOfRanger");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 5)
                    {
                        if (settingsRef.Psionic)
                        {
                            tempPod = ThingDef.Named("BookOfPsionic");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 6)
                    {
                        if (settingsRef.DeathKnight)
                        {
                            tempPod = ThingDef.Named("BookOfDeathKnight");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else
                    {
                        if (settingsRef.Faceless)
                        {
                            tempPod = ThingDef.Named("BookOfFaceless");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
                }
                else
                {
                    Messages.Message("Unable to find a valid combat book type to write - ending attempt.", MessageTypeDefOf.RejectInput);
                }
            }
            else
            {
                Messages.Message("NotPhyAdeptPawn".Translate(), MessageTypeDefOf.RejectInput);
            }
            if (tempPod != null)
            {
                SihvSpawnThings.SpawnThingDefOfCountAt(tempPod, 1, new TargetInfo(currentPos, map));
            }
        }
Exemplo n.º 13
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]);
            }
        }
Exemplo n.º 14
0
        public override void DoEffect(Pawn user)
        {
            ThingDef tempPod    = null;
            IntVec3  currentPos = parent.PositionHeld;
            Map      map        = parent.Map;
            List <TMDefs.TM_CustomClass> cFighters = TM_ClassUtility.CustomFighterClasses;

            CompAbilityUserMight comp = user.TryGetComp <CompAbilityUserMight>();

            if (parent.def != null && comp != null && comp.customClass != null)
            {
                tempPod = comp.customClass.fullScript;
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.Gladiator))
            {
                tempPod = ThingDef.Named("BookOfGladiator");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.TM_Sniper))
            {
                tempPod = ThingDef.Named("BookOfSniper");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.Bladedancer))
            {
                tempPod = ThingDef.Named("BookOfBladedancer");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.Ranger))
            {
                tempPod = ThingDef.Named("BookOfRanger");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.Faceless))
            {
                tempPod = ThingDef.Named("BookOfFaceless");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.TM_Psionic))
            {
                tempPod = ThingDef.Named("BookOfPsionic");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.DeathKnight))
            {
                tempPod = ThingDef.Named("BookOfDeathKnight");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.TM_Monk))
            {
                tempPod = ThingDef.Named("BookOfMonk");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && user.story.traits.HasTrait(TorannMagicDefOf.TM_Commander))
            {
                tempPod = ThingDef.Named("BookOfCommander");
                this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
            }
            else if (parent.def != null && (user.story.traits.HasTrait(TorannMagicDefOf.PhysicalProdigy) || user.story.traits.HasTrait(TorannMagicDefOf.TM_Wayfarer) || user.story.traits.HasTrait(TorannMagicDefOf.TM_SuperSoldier)))
            {
                int attempt = 0;
                ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
                RetryWrite :;
                if (attempt < 20)
                {
                    float rnd = Rand.Range(0, 9 + cFighters.Count);
                    if (rnd < 1)
                    {
                        if (settingsRef.Gladiator)
                        {
                            tempPod = ThingDef.Named("BookOfGladiator");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 2)
                    {
                        if (settingsRef.Sniper)
                        {
                            tempPod = ThingDef.Named("BookOfSniper");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 3)
                    {
                        if (settingsRef.Bladedancer)
                        {
                            tempPod = ThingDef.Named("BookOfBladedancer");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 4)
                    {
                        if (settingsRef.Ranger)
                        {
                            tempPod = ThingDef.Named("BookOfRanger");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 5)
                    {
                        if (settingsRef.Psionic)
                        {
                            tempPod = ThingDef.Named("BookOfPsionic");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 6)
                    {
                        if (settingsRef.DeathKnight)
                        {
                            tempPod = ThingDef.Named("BookOfDeathKnight");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 7)
                    {
                        if (settingsRef.Monk)
                        {
                            tempPod = TorannMagicDefOf.BookOfMonk;
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 8)
                    {
                        if (settingsRef.Commander)
                        {
                            tempPod = TorannMagicDefOf.BookOfCommander;
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else if (rnd < 9)
                    {
                        if (settingsRef.Faceless)
                        {
                            tempPod = ThingDef.Named("BookOfFaceless");
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    else
                    {
                        if (cFighters.Count > 0)
                        {
                            tempPod = TM_ClassUtility.GetRandomCustomFighter().fullScript;
                        }
                        else
                        {
                            attempt++;
                            goto RetryWrite;
                        }
                    }
                    this.parent.SplitOff(1).Destroy(DestroyMode.Vanish);
                }
                else
                {
                    Messages.Message("Unable to find a valid combat book type to write - ending attempt.", MessageTypeDefOf.RejectInput);
                }
            }
            else
            {
                Messages.Message("NotPhyAdeptPawn".Translate(), MessageTypeDefOf.RejectInput);
            }
            if (tempPod != null)
            {
                SihvSpawnThings.SpawnThingDefOfCountAt(tempPod, 1, new TargetInfo(currentPos, map));
            }
        }
Exemplo n.º 15
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>();

            foreach (ThingDef current in enumerable)
            {
                if (!settingsRef.Sniper)
                {
                    if (current.defName == "BookOfSniper")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Ranger)
                {
                    if (current.defName == "BookOfRanger" || current.defName == "TM_PoisonTrap")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Gladiator)
                {
                    if (current.defName == "BookOfGladiator")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Bladedancer)
                {
                    if (current.defName == "BookOfBladedancer")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Faceless)
                {
                    if (current.defName == "BookOfFaceless")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Psionic)
                {
                    if (current.defName == "BookOfPsionic")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.DeathKnight)
                {
                    if (current.defName == "BookOfDeathKnight")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.DeathKnight)
                {
                    if (current.defName == "BookOfMonk")
                    {
                        removedThings.Add(current);
                    }
                }

                if (!settingsRef.Arcanist)
                {
                    if (current.defName == "Torn_BookOfArcanist" || current.defName == "BookOfArcanist" || current.defName == "SpellOf_FoldReality")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.FireMage)
                {
                    if (current.defName == "Torn_BookOfInnerFire" || current.defName == "BookOfInnerFire" || current.defName == "SpellOf_Firestorm" || current.defName == "SpellOf_DryGround")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.IceMage)
                {
                    if (current.defName == "Torn_BookOfHeartOfFrost" || current.defName == "BookOfHeartOfFrost" || current.defName == "SpellOf_Blizzard" || current.defName == "SpellOf_WetGround")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.LitMage)
                {
                    if (current.defName == "Torn_BookOfStormBorn" || current.defName == "BookOfStormBorn" || current.defName == "SpellOf_EyeOfTheStorm" || current.defName == "SpellOf_ChargeBattery")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Druid)
                {
                    if (current.defName == "Torn_BookOfNature" || current.defName == "BookOfNature" || current.defName == "SpellOf_RegrowLimb" || current.defName == "SeedofRegrowth" || current.defName == "SpellOf_FertileLands")
                    {
                        removedThings.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")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Paladin)
                {
                    if (current.defName == "Torn_BookOfValiant" || current.defName == "BookOfValiant" || current.defName == "SpellOf_HolyWrath")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Priest)
                {
                    if (current.defName == "Torn_BookOfPriest" || current.defName == "BookOfPriest" || current.defName == "SpellOf_Resurrection")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Bard)
                {
                    if (current.defName == "Torn_BookOfBard" || current.defName == "BookOfBard" || current.defName == "SpellOf_BattleHymn")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Necromancer)
                {
                    if (current.defName == "Torn_BookOfArcanist" || current.defName == "BookOfArcanist" || current.defName == "SpellOf_FoldReality")
                    {
                        removedThings.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")
                    {
                        removedThings.Add(current);
                    }
                }
                if (!settingsRef.Demonkin)
                {
                    if (current.defName == "Torn_BookOfDemons" || current.defName == "BookOfDemons" || current.defName == "SpellOf_Scorn" || current.defName == "SpellOf_PsychicShock")
                    {
                        removedThings.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)
                    {
                        removedThings.Add(current);
                    }
                }

                if (!settingsRef.BloodMage)
                {
                    if (current == TorannMagicDefOf.BookOfHemomancy || current == TorannMagicDefOf.Torn_BookOfHemomancy || current == TorannMagicDefOf.SpellOf_BloodMoon)
                    {
                        removedThings.Add(current);
                    }
                }

                if (!settingsRef.Enchanter)
                {
                    if (current == TorannMagicDefOf.BookOfEnchanter || current == TorannMagicDefOf.Torn_BookOfEnchanter || current == TorannMagicDefOf.SpellOf_Shapeshift ||
                        current == TorannMagicDefOf.TM_Artifact_Gold || current == TorannMagicDefOf.TM_Artifact_Silver || current == TorannMagicDefOf.TM_Artifact_Jade || current == TorannMagicDefOf.TM_Artifact_Wood ||
                        current == TorannMagicDefOf.TM_Artifact_Medicine || current == TorannMagicDefOf.TM_Artifact_Magicyte || current == TorannMagicDefOf.TM_Artifact_Iron || current == TorannMagicDefOf.TM_Artifact_Steel ||
                        current == TorannMagicDefOf.TM_Artifact_Slate || current == TorannMagicDefOf.TM_Artifact_Granite || current == TorannMagicDefOf.TM_Artifact_Marble || current == TorannMagicDefOf.TM_Artifact_Sandstone || current == TorannMagicDefOf.TM_Artifact_Limestone)
                    {
                        removedThings.Add(current);
                    }
                }

                if (!settingsRef.Chronomancer)
                {
                    if (current == TorannMagicDefOf.BookOfChronomancer || current == TorannMagicDefOf.Torn_BookOfChronomancer || current == TorannMagicDefOf.SpellOf_Recall)
                    {
                        removedThings.Add(current);
                    }
                }
            }

            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")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.FireMage)
                {
                    if (current.defName == "Make_SpellOf_Firestorm" || current.defName == "Make_SpellOf_DryGround")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.IceMage)
                {
                    if (current.defName == "Make_SpellOf_Blizzard" || current.defName == "Make_SpellOf_WetGround")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.LitMage)
                {
                    if (current.defName == "Make_SpellOf_EyeOfTheStorm" || current.defName == "Make_SpellOf_ChargeBattery")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Druid)
                {
                    if (current.defName == "Make_SpellOf_RegrowLimb" || current.defName == "Make_SpellOf_FertileLands")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Summoner)
                {
                    if (current.defName == "Make_SpellOf_SummonPoppi")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Paladin)
                {
                    if (current.defName == "Make_SpellOf_HolyWrath")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Priest)
                {
                    if (current.defName == "Make_SpellOf_Resurrection")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Bard)
                {
                    if (current.defName == "Make_SpellOf_BattleHymn")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Necromancer)
                {
                    if (current.defName == "Make_SpellOf_FoldReality")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Geomancer)
                {
                    if (current.defName == "Make_SpellOf_Meteor")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Demonkin)
                {
                    if (current.defName == "Make_SpellOf_Scorn" || current.defName == "Make_SpellOf_PsychicShock")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Technomancer)
                {
                    if (current.defName == "Make_SpellOf_TechnoShield" || current.defName == "Make_SpellOf_Sabotage" || current.defName == "Make_SpellOf_Overdrive" || current.defName == "Make_SpellOf_OrbitalStrike")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.BloodMage)
                {
                    if (current.defName == "Make_SpellOf_BloodMoon")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Enchanter)
                {
                    if (current.defName == "Make_SpellOf_Shapeshift")
                    {
                        removedRecipes.Add(current);
                    }
                }
                if (!settingsRef.Enchanter)
                {
                    if (current.defName == "Make_SpellOf_Recall")
                    {
                        removedRecipes.Add(current);
                    }
                }
            }

            for (int i = 0; i < removedRecipes.Count(); i++)
            {
                //Log.Message("removing " + removedRecipes[i].defName + " from def database");
                DefDatabase <RecipeDef> .AllDefsListForReading.Remove(removedRecipes[i]);
            }
        }