public void StopQuest() { this.active = false; MapParent mapParent = this.parent as MapParent; if (mapParent != null && mapParent.Map != null) { int num = mapParent.Map.listerThings.ThingsOfDef(this.targetDef).Count <Thing>(); if (num > this.targetNumber && this.ticksHeld > this.ticksTarget) { if (mapParent.Map.gameConditionManager.ConditionIsActive(this.gameConditionCaused)) { mapParent.Map.gameConditionManager.ActiveConditions.Remove(mapParent.Map.gameConditionManager.GetActiveCondition(this.gameConditionCaused)); } Settlement settlement = Find.World.worldObjects.SettlementAt(this.worldTileAffected); if (settlement != null && settlement.HasMap) { GameConditionManager gameConditionManager = settlement.Map.gameConditionManager; if (gameConditionManager.ConditionIsActive(this.gameConditionCaused)) { gameConditionManager.ActiveConditions.Remove(gameConditionManager.GetActiveCondition(this.gameConditionCaused)); } } } } }
protected override bool CanFireNowSub(IncidentParms parms) { if (!settings.Active) { return(false); } GameConditionManager gameConditionManager = parms.target.GameConditionManager; if (gameConditionManager == null) { Log.ErrorOnce($"Couldn't find condition manager for incident target {parms.target}", 70849667); return(false); } if (gameConditionManager.ConditionIsActive(def.gameCondition)) { return(false); } List <GameCondition> activeConditions = gameConditionManager.ActiveConditions; for (int i = 0; i < activeConditions.Count; i++) { if (!def.gameCondition.CanCoexistWith(activeConditions[i].def)) { return(false); } } return(true); }
static void Prefix(GameConditionManager __instance, Rect rect) { if (__instance != Find.CurrentMap?.gameConditionManager) { return; } var comp = Find.CurrentMap.CarouselComp(); var center = new Vector2(UI.screenWidth - 10f - 32f, rect.yMax - 10f - 32f); Widgets.DrawTextureRotated(center, CompassWidget.CompassTex, -comp.current - 90f, 1f); Rect btnRect = new Rect(center.x - 32f, center.y - 32f, 64f, 64f); TooltipHandler.TipRegion( btnRect, () => $"{"CompassTip".Translate()}\n\n{Carousel.RotateKey.LabelCap}: {Carousel.RotateKey.MainKeyLabel}", 5799998 ); if (Widgets.ButtonInvisible(btnRect, true)) { comp.RotateBy(-comp.current); } }
private static bool Prefix(GameConditionManager __instance, GameCondition cond) { var ind = ZUtils.ZTracker.GetZIndexFor(__instance.ownerMap); if (ind == 0 && !(__instance.ownerMap.Parent is MapParent_ZLevel)) { AddCondition = true; foreach (var map in ZUtils.ZTracker.GetAllMaps(__instance.ownerMap.Tile)) { if (map != __instance.ownerMap && (ZUtils.ZTracker.GetZIndexFor(map) < 0 && !blackList.Contains(cond.def) || ZUtils.ZTracker.GetZIndexFor(map) > 0)) { var newCond = GameConditionMaker.MakeCondition(cond.def, cond.Duration); newCond.conditionCauser = cond.conditionCauser; newCond.Permanent = cond.Permanent; newCond.startTick = cond.startTick; newCond.quest = cond.quest; ZLogger.Message("Register: " + newCond + " in the " + ZUtils.ZTracker.GetMapInfo(map), true); map.gameConditionManager.RegisterCondition(newCond); } } AddCondition = false; } else if (ind < 0 && (!AddCondition || blackList.Contains(cond.def))) { return(false); } else if (ind > 0 && !AddCondition) { return(false); } return(true); }
static void Postfix(GameConditionManager __instance, ref float __result) { if (__instance != Find.CurrentMap?.gameConditionManager || CarouselMod.settings.disableCompass) { return; } __result += 84f; }
private void InitializeSolarFlare() { GameConditionManager gameConditionManager = this.gameConditionManager; int duration = Mathf.RoundToInt(this.Duration); GameCondition cond = GameConditionMaker.MakeCondition(GameConditionDefOf.SolarFlare, duration); gameConditionManager.RegisterCondition(cond); }
static void Postfix(GameConditionManager __instance, ref float __result) { if (__instance != Find.CurrentMap?.gameConditionManager) { return; } __result += 84f; }
private void InitializeVolcanicWinter() { GameConditionManager gameConditionManager = this.gameConditionManager; int duration = Mathf.RoundToInt(this.Duration); GameCondition cond = GameConditionMaker.MakeCondition(GameConditionDefOf.VolcanicWinter, duration); gameConditionManager.RegisterCondition(cond); }
private void InitializeDeathSkies() { GameConditionManager gameConditionManager = this.gameConditionManager; int duration = Mathf.RoundToInt(this.Duration); GameCondition cond2 = GameConditionMaker.MakeCondition(TorannMagicDefOf.DarkClouds, duration); gameConditionManager.RegisterCondition(cond2); }
protected override bool TryExecuteWorker(IncidentParms parms) { GameConditionManager gameConditionManager = parms.target.GameConditionManager; GameCondition cond = GameConditionMaker.MakeCondition(this.def.gameCondition, Ticks, 0); gameConditionManager.RegisterCondition(cond); base.SendStandardLetter(); return(true); }
protected override bool TryExecuteWorker(IncidentParms parms) { GameConditionManager gameConditionManager = parms.target.GameConditionManager; int duration = Mathf.RoundToInt(base.def.durationDays.RandomInRange * 60000f); GameCondition cond = GameConditionMaker.MakeCondition(base.def.gameCondition, duration, 0); gameConditionManager.RegisterCondition(cond); //base.SendStandardLetter(); //it's that easy! return(true); }
// Use this for initialization void Start() { isTalking = false; playerColliding = false; NPCstate = 1; Parser = new XmlParser(xml); dialogueGraph = (DialogueGraph)Parser.GetGraph(); currentNode = GetStartNode(NPCstate); m = new GameConditionManager(); }
public static bool ConditionIsActive(this GameConditionManager instance, GameConditionDef def) { bool result = instance.ConditionIsActive(def); if (result && def == GameConditionDefOf.SolarFlare) { return(!instance.ownerMap.GetShieldCoordinator().HasActiveShield()); } return(result); }
public static void Postfix(GameConditionManager __instance, ref GameConditionDef def, ref bool __result) { if (def == GameConditionDefOf.SolarFlare) { // Log.Message(string.Format("GameConditionManager_ConditionIsActive_Patch SolarFlare: {0}", __result)); __result = __result || __instance.ConditionIsActive(XenomorphDefOf.RRY_Xenomorph_PowerCut); #if DEBUG // Log.Message(string.Format("GameConditionManager_ConditionIsActive_Patch Xenomorph_PowerCut: {0}", __result)); #endif } }
/// <summary> /// Gets the offset for the given condition manager, recursively checking any parent managers we have /// </summary> /// <param name="manager">The condition manager to check</param> /// <param name="data">The <see cref="BiomeData"/> to use</param> /// <returns>The aggregated offset</returns> private static float GetOffset(GameConditionManager manager, BiomeData data) { // Add up all the various offsets we have: var num = manager.ActiveConditions.Sum(condition => data.GetBiomeConditionTemperatureOffset(condition)); if (manager.Parent != null) { num += GetOffset(manager.Parent, data); } return(num); }
public static bool Prefix(GameConditionManager __instance, ref float __result) { try { __result = GetOffset(__instance, Main.BiomeSettings[__instance.map.Biome]); return(false); } catch (Exception) { Log.Error("Unable to override game condition temperature offsets; falling back to vanilla."); return(true); } }
public static float AggregatePlantDensityFactor(this GameConditionManager gcm) { float num = 1f; for (int i = 0; i < gcm.ActiveConditions.Count; i++) { num *= gcm.ActiveConditions[i].PlantDensityFactor(); } if (gcm.Parent != null) { num += AggregatePlantDensityFactor(gcm.Parent); } return(num); }
private void InitializeDarkStorms() { GameConditionManager gameConditionManager = base.CasterPawn.Map.gameConditionManager; int duration = 45000; GameCondition cond = GameConditionMaker.MakeCondition(TorannMagicDefOf.DarkThunderstorm, duration); gameConditionManager.RegisterCondition(cond); GameCondition_DarkThunderstorm gcdt = cond as GameCondition_DarkThunderstorm; if (gcdt != null) { gcdt.faction = base.CasterPawn.Faction; } }
public void StopInfection() { this.active = false; MapParent infectedSite = Find.World.worldObjects.ObjectsAt(this.infectedTile) as MapParent; if (infectedSite != null && infectedSite.Map != null) { GameConditionManager gameConditionManager = infectedSite.Map.gameConditionManager; if (gameConditionManager.ConditionIsActive(this.gameConditionCaused)) { gameConditionManager.ActiveConditions.Remove(gameConditionManager.GetActiveCondition(this.gameConditionCaused)); } } this.fillRadius(); }
protected override bool TryExecuteWorker(IncidentParms parms) { if (!settings.Active) { return(false); } GameConditionManager gameConditionManager = parms.target.GameConditionManager; int duration = Mathf.RoundToInt(def.durationDays.RandomInRange * 60000f); GameCondition cond = GameConditionMaker.MakeCondition(def.gameCondition, duration); gameConditionManager.RegisterCondition(cond); SendStandardLetter(parms, null); return(true); }
private float AggregateTemperatureOffset(GameConditionManager gameConditionManager) { float num = 0f; for (int i = 0; i < gameConditionManager.ActiveConditions.Count; i++) { num += gameConditionManager.ActiveConditions[i].TemperatureOffset(); } if (gameConditionManager.Parent != null) { num += AggregateTemperatureOffset(gameConditionManager.Parent); } return(num); }
public void StopQuest() { this.active = false; if (this.ThingToDestroy.Destroyed) { Settlement settlement = Find.World.worldObjects.SettlementAt(this.worldTileAffected); if (settlement != null && settlement.HasMap) { Log.Message(string.Format("Found player base named {0}", settlement.TraderName)); GameConditionManager gameConditionManager = settlement.Map.gameConditionManager; if (gameConditionManager.ConditionIsActive(this.gameConditionCaused)) { gameConditionManager.ActiveConditions.Remove(gameConditionManager.GetActiveCondition(this.gameConditionCaused)); } } } }
public void ConstructComponents() { worldObjects = new WorldObjectsHolder(); factionManager = new FactionManager(); worldPawns = new WorldPawns(); gameConditionManager = new GameConditionManager(this); storyState = new StoryState(this); renderer = new WorldRenderer(); UI = new WorldInterface(); debugDrawer = new WorldDebugDrawer(); dynamicDrawManager = new WorldDynamicDrawManager(); pathFinder = new WorldPathFinder(); pathPool = new WorldPathPool(); reachability = new WorldReachability(); floodFiller = new WorldFloodFiller(); ticksAbsCache = new ConfiguredTicksAbsAtGameStartCache(); components.Clear(); FillComponents(); }
public void ConstructComponents() { this.worldObjects = new WorldObjectsHolder(); this.factionManager = new FactionManager(); this.uniqueIDsManager = new UniqueIDsManager(); this.worldPawns = new WorldPawns(); this.settings = new WorldSettings(); this.gameConditionManager = new GameConditionManager(null); this.storyState = new StoryState(this); this.renderer = new WorldRenderer(); this.UI = new WorldInterface(); this.debugDrawer = new WorldDebugDrawer(); this.dynamicDrawManager = new WorldDynamicDrawManager(); this.pathFinder = new WorldPathFinder(); this.pathPool = new WorldPathPool(); this.reachability = new WorldReachability(); this.floodFiller = new WorldFloodFiller(); this.ticksAbsCache = new ConfiguredTicksAbsAtGameStartCache(); this.components.Clear(); this.FillComponents(); }
public override void CompTickRare() { base.CompTickRare(); if (!LoadedModManager.GetMod <MonsterHunterRimworldMod>().GetSettings <MonsterHunterRimworldModSettings>().elderDragonWeatherEffects) { return; } if (!(parent is Pawn elderDragon)) { return; } if (!WyvernUtility.IsElderDragon(elderDragon)) { return; } if (elderDragon.Dead) { return; } Map map = elderDragon.Map; if (map == null) { return; } GameConditionManager gameConditionManager = map.GameConditionManager; if (gameConditionManager.ConditionIsActive(GameConditionDefOf.ToxicFallout)) { return; } int duration = Mathf.RoundToInt(0.5f * 60000f); // lasts half a day after elder dragon dies GameCondition cond = GameConditionMaker.MakeCondition(GameConditionDefOf.ToxicFallout, duration); gameConditionManager.RegisterCondition(cond); }
public void ConstructComponents() { this.spawnedThings = new ThingOwner <Thing>(this); this.cellIndices = new CellIndices(this); this.listerThings = new ListerThings(ListerThingsUse.Global); this.listerBuildings = new ListerBuildings(); this.mapPawns = new MapPawns(this); this.dynamicDrawManager = new DynamicDrawManager(this); this.mapDrawer = new MapDrawer(this); this.tooltipGiverList = new TooltipGiverList(); this.pawnDestinationReservationManager = new PawnDestinationReservationManager(); this.reservationManager = new ReservationManager(this); this.physicalInteractionReservationManager = new PhysicalInteractionReservationManager(); this.designationManager = new DesignationManager(this); this.lordManager = new LordManager(this); this.debugDrawer = new DebugCellDrawer(); this.passingShipManager = new PassingShipManager(this); this.haulDestinationManager = new HaulDestinationManager(this); this.gameConditionManager = new GameConditionManager(this); this.weatherManager = new WeatherManager(this); this.zoneManager = new ZoneManager(this); this.resourceCounter = new ResourceCounter(this); this.mapTemperature = new MapTemperature(this); this.temperatureCache = new TemperatureCache(this); this.areaManager = new AreaManager(this); this.attackTargetsCache = new AttackTargetsCache(this); this.attackTargetReservationManager = new AttackTargetReservationManager(this); this.lordsStarter = new VoluntarilyJoinableLordsStarter(this); this.thingGrid = new ThingGrid(this); this.coverGrid = new CoverGrid(this); this.edificeGrid = new EdificeGrid(this); this.blueprintGrid = new BlueprintGrid(this); this.fogGrid = new FogGrid(this); this.glowGrid = new GlowGrid(this); this.regionGrid = new RegionGrid(this); this.terrainGrid = new TerrainGrid(this); this.pathGrid = new PathGrid(this); this.roofGrid = new RoofGrid(this); this.fertilityGrid = new FertilityGrid(this); this.snowGrid = new SnowGrid(this); this.deepResourceGrid = new DeepResourceGrid(this); this.exitMapGrid = new ExitMapGrid(this); this.linkGrid = new LinkGrid(this); this.glowFlooder = new GlowFlooder(this); this.powerNetManager = new PowerNetManager(this); this.powerNetGrid = new PowerNetGrid(this); this.regionMaker = new RegionMaker(this); this.pathFinder = new PathFinder(this); this.pawnPathPool = new PawnPathPool(this); this.regionAndRoomUpdater = new RegionAndRoomUpdater(this); this.regionLinkDatabase = new RegionLinkDatabase(); this.moteCounter = new MoteCounter(); this.gatherSpotLister = new GatherSpotLister(); this.windManager = new WindManager(this); this.listerBuildingsRepairable = new ListerBuildingsRepairable(); this.listerHaulables = new ListerHaulables(this); this.listerMergeables = new ListerMergeables(this); this.listerFilthInHomeArea = new ListerFilthInHomeArea(this); this.reachability = new Reachability(this); this.itemAvailability = new ItemAvailability(this); this.autoBuildRoofAreaSetter = new AutoBuildRoofAreaSetter(this); this.roofCollapseBufferResolver = new RoofCollapseBufferResolver(this); this.roofCollapseBuffer = new RoofCollapseBuffer(); this.wildAnimalSpawner = new WildAnimalSpawner(this); this.wildPlantSpawner = new WildPlantSpawner(this); this.steadyEnvironmentEffects = new SteadyEnvironmentEffects(this); this.skyManager = new SkyManager(this); this.overlayDrawer = new OverlayDrawer(); this.floodFiller = new FloodFiller(this); this.weatherDecider = new WeatherDecider(this); this.fireWatcher = new FireWatcher(this); this.dangerWatcher = new DangerWatcher(this); this.damageWatcher = new DamageWatcher(); this.strengthWatcher = new StrengthWatcher(this); this.wealthWatcher = new WealthWatcher(this); this.regionDirtyer = new RegionDirtyer(this); this.cellsInRandomOrder = new MapCellsInRandomOrder(this); this.rememberedCameraPos = new RememberedCameraPos(this); this.mineStrikeManager = new MineStrikeManager(); this.storyState = new StoryState(this); this.retainedCaravanData = new RetainedCaravanData(this); this.components.Clear(); this.FillComponents(); }
public static bool ElectricityDisabled(this GameConditionManager instance) { return(instance.ElectricityDisabled && !instance.ownerMap.GetShieldCoordinator().HasActiveShield()); }
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); }