Ejemplo n.º 1
0
        public override void PostMapGenerate(Map map)
        {
            base.PostMapGenerate(map);
            List <Thing> list = map.listerThings.ThingsInGroup(ThingRequestGroup.Plant).ToList <Thing>();

            foreach (Thing thing in list)
            {
                thing.Destroy(DestroyMode.Vanish);
            }
            GameCondition gameCondition = GameConditionMaker.MakeCondition(GameConditionDef.Named("RD_Radiation"), 3000000);

            map.gameConditionManager.RegisterCondition(gameCondition);
        }
Ejemplo n.º 2
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);
            }
        }
Ejemplo n.º 3
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            map.weatherManager.TransitionTo(WeatherDef.Named("VomitRain"));
            int duration = Mathf.RoundToInt(this.def.durationDays.RandomInRange * 60000f);
            GameCondition_VomitRain gameCondition_VomitRain = (GameCondition_VomitRain)GameConditionMaker.MakeCondition(GameConditionDef.Named("VomitRain"), duration);

            map.gameConditionManager.RegisterCondition(gameCondition_VomitRain);
            base.SendStandardLetter(parms, new TargetInfo(gameCondition_VomitRain.centerLocation.ToIntVec3, map, false));
            if (map.weatherManager.curWeather.rainRate > 0.1f)
            {
                map.weatherDecider.StartNextWeather();
            }
            return(true);
        }
Ejemplo n.º 4
0
        protected override bool CanFireNowSub(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            return(!map.gameConditionManager.ConditionIsActive(GameConditionDef.Named("VomitRain")));
        }
Ejemplo n.º 5
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);
     }
 }
Ejemplo n.º 6
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);
            }
        }
Ejemplo n.º 7
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map  map = parms.target as Map;
            bool result;

            if (map == null)
            {
                result = false;
            }

            else if ((from wo in Find.WorldObjects.Sites
                      where wo is Site && wo.parts.Select(x => x.def) == SiteDefOfReconAndDiscovery.RD_QuakesQuest
                      select wo).Count <WorldObject>() > 0)
            {
                result = false;
            }
            else
            {
                int tile;
                if (TileFinder.TryFindNewSiteTile(out tile))
                {
                    Site site = (Site)WorldObjectMaker.MakeWorldObject(SiteDefOfReconAndDiscovery.RD_AdventureDestroyThing);
                    site.Tile = tile;
                    site.AddPart(new SitePart(site, SiteDefOfReconAndDiscovery.RD_QuakesQuest,
                                              SiteDefOfReconAndDiscovery.RD_QuakesQuest.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null)));
                    SitePart faultyGenerator = new SitePart(site, SiteDefOfReconAndDiscovery.RD_SitePart_FaultyGenerator,
                                                            SiteDefOfReconAndDiscovery.RD_SitePart_FaultyGenerator.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                    faultyGenerator.hidden = true;
                    site.parts.Add(faultyGenerator);
                    site.GetComponent <QuestComp_DestroyThing>().StartQuest(ThingDefOf.GeothermalGenerator);
                    site.GetComponent <QuestComp_DestroyThing>().gameConditionCaused = GameConditionDef.Named("RD_Tremors");
                    site.GetComponent <QuestComp_DestroyThing>().worldTileAffected   = map.Tile;
                    if (Rand.Value < 0.05f)
                    {
                        SitePart scatteredTreasure = new SitePart(site, SiteDefOfReconAndDiscovery.RD_ScatteredTreasure, SiteDefOfReconAndDiscovery.RD_ScatteredTreasure.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                        scatteredTreasure.hidden = true;
                        site.parts.Add(scatteredTreasure);
                    }
                    if (Rand.Value < 0.1f)
                    {
                        SitePart scatteredManhunters = new SitePart(site, SiteDefOfReconAndDiscovery.RD_ScatteredManhunters, SiteDefOfReconAndDiscovery.RD_ScatteredManhunters.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                        scatteredManhunters.hidden = true;
                        site.parts.Add(scatteredManhunters);
                    }
                    if (Rand.Value < 0.1f)
                    {
                        SitePart mechanoidForces = new SitePart(site, SiteDefOfReconAndDiscovery.RD_MechanoidForces, SiteDefOfReconAndDiscovery.RD_MechanoidForces.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                        mechanoidForces.hidden = true;
                        site.parts.Add(mechanoidForces);
                    }
                    if (Rand.Value < 0.05f)
                    {
                        SitePart enemyRaidOnArrival = new SitePart(site, SiteDefOfReconAndDiscovery.RD_EnemyRaidOnArrival, SiteDefOfReconAndDiscovery.RD_EnemyRaidOnArrival.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                        enemyRaidOnArrival.hidden = true;
                        site.parts.Add(enemyRaidOnArrival);
                    }
                    int           num           = 30;
                    GameCondition gameCondition = GameConditionMaker.MakeCondition(GameConditionDef.Named("RD_Tremors"), 60000 * num);
                    map.gameConditionManager.RegisterCondition(gameCondition);
                    site.GetComponent <TimeoutComp>().StartTimeout(num * 60000);
                    base.SendStandardLetter(parms, site);
                    Find.WorldObjects.Add(site);
                    result = true;
                }
                else
                {
                    result = false;
                }
            }
            return(result);
        }
Ejemplo n.º 8
0
 public static void WeatherFlashstorm(string quote, int ticks = 5 * 60 * 60)
 {
     GameCondition(quote, GameConditionDef.Named("Flashstorm"), ticks, LetterDefOf.NeutralEvent);
 }
Ejemplo n.º 9
0
 protected override bool TryExecuteWorker(IncidentParms parms)
 {
     ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
     if (settingsRef.wanderingLichChallenge > 0)
     {
         Map map      = (Map)parms.target;
         int duration = Mathf.RoundToInt(this.def.durationDays.RandomInRange * 60000f);
         GameCondition_WanderingLich gameCondition_WanderingLich = (GameCondition_WanderingLich)GameConditionMaker.MakeCondition(GameConditionDef.Named("WanderingLich"), duration, 0);
         map.gameConditionManager.RegisterCondition(gameCondition_WanderingLich);
         base.SendStandardLetter(new TargetInfo(gameCondition_WanderingLich.edgeLocation.ToIntVec3, map, false), null, new string[0]);
         List <Faction> lichFaction = Find.FactionManager.AllFactions.ToList();
         bool           factionFlag = false;
         for (int i = 0; i < lichFaction.Count; i++)
         {
             if (lichFaction[i].def == TorannMagicDefOf.TM_SkeletalFaction)
             {
                 Faction.OfPlayer.TrySetRelationKind(lichFaction[i], FactionRelationKind.Hostile, false, null, null);
                 factionFlag = true;
             }
         }
         if (!factionFlag)
         {
             return(false);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map  map = parms.target as Map;
            bool result;

            if (map == null)
            {
                result = false;
            }
            else if ((from wo in Find.WorldObjects.AllWorldObjects
                      where wo is Site && (wo as Site).parts.Select(x => x.def) == SiteDefOfReconAndDiscovery.RD_QuakesQuest
                      select wo).Count <WorldObject>() > 0)
            {
                result = false;
            }
            else
            {
                int tile;
                if (TileFinder.TryFindNewSiteTile(out tile))
                {
                    Site site = (Site)WorldObjectMaker.MakeWorldObject(SiteDefOfReconAndDiscovery.RD_AdventureThingCounter);
                    site.Tile = tile;
                    site.AddPart(new SitePart(site, SiteDefOfReconAndDiscovery.RD_SiteRadiationQuest,
                                              SiteDefOfReconAndDiscovery.RD_SiteRadiationQuest.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null)));
                    SitePart radioactiveDust = new SitePart(site, SiteDefOfReconAndDiscovery.RD_SitePart_RadioactiveDust, SiteDefOfReconAndDiscovery.RD_SitePart_RadioactiveDust.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                    radioactiveDust.hidden = true;
                    site.parts.Add(radioactiveDust);
                    QuestComp_CountThings component = site.GetComponent <QuestComp_CountThings>();
                    component.targetNumber        = 200;
                    component.ticksTarget         = 60000;
                    component.ticksHeld           = 0;
                    component.worldTileAffected   = map.Tile;
                    component.gameConditionCaused = GameConditionDef.Named("RD_Radiation");
                    component.StartQuest(ThingDef.Named("Plant_Psychoid"));
                    if (Rand.Value < 0.1f)
                    {
                        SitePart scatteredTreasure = new SitePart(site, SiteDefOfReconAndDiscovery.RD_ScatteredTreasure, SiteDefOfReconAndDiscovery.RD_ScatteredTreasure.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                        scatteredTreasure.hidden = true;
                        site.parts.Add(scatteredTreasure);
                    }
                    if (Rand.Value < 0.05f)
                    {
                        SitePart scatteredManhunters = new SitePart(site, SiteDefOfReconAndDiscovery.RD_ScatteredManhunters, SiteDefOfReconAndDiscovery.RD_ScatteredManhunters.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                        scatteredManhunters.hidden = true;
                        site.parts.Add(scatteredManhunters);
                    }
                    if (Rand.Value < 0.05f)
                    {
                        SitePart mechanoidForces = new SitePart(site, SiteDefOfReconAndDiscovery.RD_MechanoidForces, SiteDefOfReconAndDiscovery.RD_MechanoidForces.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                        mechanoidForces.hidden = true;
                        site.parts.Add(mechanoidForces);
                    }
                    if (Rand.Value < 0.05f)
                    {
                        SitePart enemyRaidOnArrival = new SitePart(site, SiteDefOfReconAndDiscovery.RD_EnemyRaidOnArrival, SiteDefOfReconAndDiscovery.RD_EnemyRaidOnArrival.Worker.GenerateDefaultParams(StorytellerUtility.DefaultSiteThreatPointsNow(), tile, null));
                        enemyRaidOnArrival.hidden = true;
                        site.parts.Add(enemyRaidOnArrival);
                    }

                    if (Find.World.tileTemperatures.GetSeasonalTemp(site.Tile) < 10f || Find.World.tileTemperatures.GetSeasonalTemp(site.Tile) > 40f)
                    {
                        result = false;
                    }
                    else
                    {
                        int           num           = 30;
                        GameCondition gameCondition = GameConditionMaker.MakeCondition(GameConditionDef.Named("RD_Radiation"), 60000 * num);
                        map.gameConditionManager.RegisterCondition(gameCondition);
                        site.GetComponent <TimeoutComp>().StartTimeout(num * 60000);
                        base.SendStandardLetter(parms, site);
                        Find.WorldObjects.Add(site);
                        result = true;
                    }
                }
                else
                {
                    result = false;
                }
            }
            return(result);
        }
        public static void DisableEclipseAndAcidRain(ref bool __result, ref IncidentWorker_MakeGameCondition __instance, IncidentParms parms)

        {
            Map map = Find.AnyPlayerHomeMap;

            if (map.Biome.defName == "AB_RockyCrags")
            {
                __result = false;
            }

            if (map.Biome.defName != "AB_PyroclasticConflagration" && __instance.def.gameCondition == GameConditionDef.Named("AB_AcidRainCondition"))
            {
                __result = false;
            }
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            int duration = Mathf.RoundToInt(this.def.durationDays.RandomInRange * 60000f);
            GameCondition_OrassanBombardment mapCondition_OrassanBombardment = (GameCondition_OrassanBombardment)GameConditionMaker.MakeCondition(GameConditionDef.Named("OrassanBombardmentCondition"), duration);

            Find.LetterStack.ReceiveLetter(this.def.letterLabel, this.def.letterText, LetterDefOf.ThreatBig, null);
            ((Map)parms.target).gameConditionManager.RegisterCondition(mapCondition_OrassanBombardment);
            return(true);
        }
Ejemplo n.º 13
0
 protected override bool TryExecuteWorker(IncidentParms parms)
 {
     ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef();
     if (settingsRef.riftChallenge > 0)
     {
         string         str         = "";
         Map            map         = (Map)parms.target;
         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_ElementalFaction")
             {
                 Faction.OfPlayer.TryAffectGoodwillWith(lichFaction[i], -200, false, false, null, null);
                 factionFlag = true;
             }
         }
         if (!factionFlag)
         {
             return(false);
         }
         TM_Action.ForceFactionDiscoveryAndRelation(TorannMagicDefOf.TM_ElementalFaction);
         GameCondition_ElementalAssault gameCondition_ElementalAssault = (GameCondition_ElementalAssault)GameConditionMaker.MakeCondition(GameConditionDef.Named("ElementalAssault"), duration);
         map.gameConditionManager.RegisterCondition(gameCondition_ElementalAssault);
         base.SendStandardLetter(parms, gameCondition_ElementalAssault.thing, str);
         //base.SendStandardLetter(new TargetInfo(gameCondition_ElementalAssault.centerLocation.ToIntVec3, map, false), null, new string[0]);
         return(true);
     }
     else
     {
         return(false);
     }
 }
 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]);
         List <Faction> elementalFaction = Find.FactionManager.AllFactions.ToList();
         bool           factionFlag      = false;
         for (int i = 0; i < elementalFaction.Count; i++)
         {
             if (elementalFaction[i].def.defName == "TM_ElementalFaction")
             {
                 Faction.OfPlayer.TrySetRelationKind(elementalFaction[i], FactionRelationKind.Hostile, false, null, null);
                 factionFlag = true;
             }
         }
         if (!factionFlag)
         {
             return(false);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 15
0
        public override IEnumerable <FloatMenuOption> CompFloatMenuOptions(Pawn selPawn)
        {
            List <FloatMenuOption> list = new List <FloatMenuOption>();
            Map map = this.parent.Map;
            GameConditionManager manager = map.gameConditionManager;

            if (this.mana > 10f)
            {
                list.Add(new FloatMenuOption("RD_EndExtremeWeather".Translate(),                 // End Extreme Weather (10 mana)
                                             delegate()
                {
                    this.mana -= 10f;
                    map.weatherManager.TransitionTo(WeatherDefOf.Clear);
                    if (manager.ConditionIsActive(GameConditionDefOf.ColdSnap))
                    {
                        manager.ActiveConditions.Remove(manager.GetActiveCondition(GameConditionDefOf.ColdSnap));
                    }
                    if (manager.ConditionIsActive(GameConditionDefOf.Flashstorm))
                    {
                        manager.ActiveConditions.Remove(manager.GetActiveCondition(GameConditionDefOf.Flashstorm));
                    }
                    if (manager.ConditionIsActive(GameConditionDefOf.HeatWave))
                    {
                        manager.ActiveConditions.Remove(manager.GetActiveCondition(GameConditionDefOf.HeatWave));
                    }
                }
                                             ));
            }
            if (this.mana > 15f)
            {
                list.Add(new FloatMenuOption("RD_BringRain".Translate(), delegate()                 //(15mana)
                {
                    this.mana -= 15f;
                    map.weatherManager.TransitionTo(WeatherDef.Named("Rain"));
                }
                                             ));
            }
            if (this.mana > 18f)
            {
                list.Add(new FloatMenuOption("RD_BringFog".Translate(),                 //Bring Fog (18 mana)
                                             delegate()
                {
                    this.mana -= 18f;
                    map.weatherManager.TransitionTo(WeatherDef.Named("Fog"));
                }
                                             ));
            }
            if (this.mana > 40f)
            {
                list.Add(new FloatMenuOption("RD_StrikeOurEnemies".Translate(), delegate()                 //(40mana)
                {
                    IEnumerable <Pawn> source = from p in map.mapPawns.AllPawnsSpawned
                                                where p.HostileTo(Faction.OfPlayer)
                                                select p;
                    this.mana -= 40f;
                    if (source.Count <Pawn>() > 0)
                    {
                        GameCondition_TargetedStorm gameCondition_TargetedStorm = (GameCondition_TargetedStorm)GameConditionMaker.MakeCondition(GameConditionDef.Named("RD_TargetedStorm"), 12000);
                        map.gameConditionManager.RegisterCondition(gameCondition_TargetedStorm);
                    }
                }
                                             ));
            }
            return(list);
        }