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); }
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); } }
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); }
protected override bool CanFireNowSub(IncidentParms parms) { Map map = (Map)parms.target; return(!map.gameConditionManager.ConditionIsActive(GameConditionDef.Named("VomitRain"))); }
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); } }
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); } }
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); }
public static void WeatherFlashstorm(string quote, int ticks = 5 * 60 * 60) { GameCondition(quote, GameConditionDef.Named("Flashstorm"), ticks, LetterDefOf.NeutralEvent); }
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); }
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); } }
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); }