public static GameCondition MakeConditionPermanent(GameConditionDef def) { GameCondition gameCondition = GameConditionMaker.MakeCondition(def, -1, -180000); gameCondition.Permanent = true; return(gameCondition); }
private static void SupernovaUltra(IncidentParms parms) { GameConditionDef[] conditions = new GameConditionDef[5] { GameConditionDefOfLocal.BoulderMassHit, GameConditionDefOfLocal.SuperHeatWave, GameConditionDefOfLocal.Endlessday, GameConditionDefOfLocal.LeanAtmosphere, GameConditionDefOfLocal.IonizedAtmosphere }; int[] durations = new int[5] { Rand.Range(250000, 350000), Rand.Range(250000, 350000), Rand.Range(250000, 350000), -1, Rand.Range(250000, 350000) }; for (int i = 0; i < conditions.Length; i++) { parms.target.GameConditionManager.RegisterCondition(GameConditionMaker.MakeCondition(conditions[i], durations[i])); } Find.LetterStack.ReceiveLetter(Translator.Translate("Supernova_label"), Translator.Translate("SupernovaExp_ultra"), LetterDefOf.NegativeEvent); }
public Option(GameConditionDef gameCondition, FloatRange durationDaysRange, float difficulty, int challengeRating) { this.gameCondition = gameCondition; this.durationDaysRange = durationDaysRange; this.difficulty = difficulty; this.challengeRating = challengeRating; }
public override bool TryExecuteEvent() { Map map = Find.CurrentMap; //int duration = Mathf.RoundToInt(1 * 60000f); // 1 день грозы int duration = Mathf.RoundToInt(1000f); // время шторма в тиках GameConditionDef def = new GameConditionDef { conditionClass = typeof(OC_GameCondition_Storm), canBePermanent = false, preventRain = false, temperatureOffset = 0, }; OC_GameCondition_Storm storm = (OC_GameCondition_Storm)GameConditionMaker.MakeCondition(def, duration); // единственный способ вставить своё время storm.cooldown = 25; // кд в тиках между ударами string label = "Гнев зевса"; string text = ""; Find.LetterStack.ReceiveLetter(label, text, LetterDefOf.NegativeEvent); map.gameConditionManager.RegisterCondition(storm); if (map.weatherManager.curWeather.rainRate > 0.1f) { map.weatherDecider.StartNextWeather(); } return(true); }
private Action <DoEditInterface> m__1(GameConditionDef d) { return(delegate() { this.gameCondition = d; }); }
public static GameCondition MakeConditionPermanent(GameConditionDef def) { GameCondition gameCondition = MakeCondition(def); gameCondition.Permanent = true; gameCondition.startTick -= 180000; return(gameCondition); }
private void ChangeIncident() { GameConditionDef def = incidents.RandomElement(); foreach (var map in AffectedMaps) { map.gameConditionManager.RegisterCondition(GameConditionMaker.MakeCondition(def, Rand.Range(4000, 18000))); } }
public static GameCondition MakeCondition(GameConditionDef def, int duration = -1, int startTickOffset = 0) { GameCondition gameCondition = (GameCondition)Activator.CreateInstance(def.conditionClass); gameCondition.startTick = Find.TickManager.TicksGame + startTickOffset; gameCondition.def = def; gameCondition.Duration = duration; return(gameCondition); }
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 GameCondition MakeCondition(GameConditionDef def, int duration = -1) { GameCondition obj = (GameCondition)Activator.CreateInstance(def.conditionClass); obj.startTick = Find.TickManager.TicksGame; obj.def = def; obj.Duration = duration; obj.uniqueID = Find.UniqueIDsManager.GetNextGameConditionID(); obj.PostMake(); return(obj); }
public override void DoEditInterface(Listing_ScenEdit listing) { if (!Widgets.ButtonText(listing.GetScenPartRect(this, ScenPart.RowHeight), gameCondition.LabelCap)) { return; } FloatMenuUtility.MakeMenu(AllowedGameConditions(), (GameConditionDef d) => d.LabelCap, (GameConditionDef d) => delegate { gameCondition = d; }); }
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 } }
public override void DoEditInterface(Listing_ScenEdit listing) { Rect scenPartRect = listing.GetScenPartRect(this, ScenPart.RowHeight); if (Widgets.ButtonText(scenPartRect, this.gameCondition.LabelCap, true, false, true)) { FloatMenuUtility.MakeMenu <GameConditionDef>(this.AllowedGameConditions(), (GameConditionDef d) => d.LabelCap, (GameConditionDef d) => delegate() { this.gameCondition = d; }); } }
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); }
public override bool CanAffectCondition(GameConditionDef cond) { if (!Armor.Active) { return(true); } if (cond == GameConditionDefOfLocal.HeavyAir) { return(false); } return(true); }
internal bool AllowEnjoyableOutsideNow(out GameConditionDef reason) { for (int i = 0; i < this.activeConditions.Count; i++) { GameCondition gameCondition = this.activeConditions[i]; if (!gameCondition.AllowEnjoyableOutsideNow()) { reason = gameCondition.def; return(false); } } reason = null; return(this.Parent == null || this.Parent.AllowEnjoyableOutsideNow(out reason)); }
public override bool CanAffectCondition(GameConditionDef cond) { if (!Armor.Active) { return(true); } if (cond == GameConditionDefOf.ToxicFallout) { return(true); } return(false); }
public GameCondition GetActiveCondition(GameConditionDef def) { for (int i = 0; i < this.activeConditions.Count; i++) { if (def == this.activeConditions[i].def) { return(this.activeConditions[i]); } } if (this.Parent != null) { return(this.Parent.GetActiveCondition(def)); } return(null); }
public GameConditionAction(GameConditionDef ConditionDef, string category = "Game Condition") { defName = ConditionDef.defName; defLabel = ConditionDef.label; Name = defLabel; Description = ConditionDef.description; ShouldShowAmount = true; Prefix = "Trigger"; Category = category; thingDef = ConditionDef; LocalCooldownMs = 30000; GlobalCooldownMs = 15000; CostSilverStore = 0; BitStoreSKU = ""; }
private bool PossibleNow(GameConditionDef def, Slate slate) { if (def == null) { return(false); } Map map = slate.Get <Map>("map"); if (map.gameConditionManager.ConditionIsActive(def)) { return(false); } IncidentDef incidentDef = null; List <IncidentDef> allDefsListForReading = DefDatabase <IncidentDef> .AllDefsListForReading; for (int i = 0; i < allDefsListForReading.Count; i++) { if (allDefsListForReading[i].Worker is IncidentWorker_MakeGameCondition && allDefsListForReading[i].gameCondition == def) { incidentDef = allDefsListForReading[i]; break; } } if (incidentDef != null) { if (Find.Storyteller.difficulty.difficulty < incidentDef.minDifficulty) { return(false); } if (GenDate.DaysPassed < incidentDef.earliestDay) { return(false); } if (incidentDef.Worker.FiredTooRecently(map)) { return(false); } } if (def == GameConditionDefOf.ColdSnap && !IncidentWorker_ColdSnap.IsTemperatureAppropriate(map)) { return(false); } if (def == GameConditionDefOf.HeatWave && !IncidentWorker_HeatWave.IsTemperatureAppropriate(map)) { return(false); } return(true); }
internal bool AllowEnjoyableOutsideNow(Map map, out GameConditionDef reason) { for (int i = 0; i < activeConditions.Count; i++) { GameCondition gameCondition = activeConditions[i]; if (!gameCondition.AllowEnjoyableOutsideNow(map)) { reason = gameCondition.def; return(false); } } reason = null; if (Parent != null) { return(Parent.AllowEnjoyableOutsideNow(map, out reason)); } return(true); }
private static void SupernovaMedium(IncidentParms parms) { GameConditionDef[] conditions = new GameConditionDef[2] { GameConditionDefOf.HeatWave, GameConditionDefOfLocal.BoulderMassHit }; int[] durations = new int[2] { Rand.Range(10000, 50000), Rand.Range(15000, 50000) }; for (int i = 0; i < conditions.Length; i++) { parms.target.GameConditionManager.RegisterCondition(GameConditionMaker.MakeCondition(conditions[i], durations[i])); } Find.LetterStack.ReceiveLetter(Translator.Translate("Supernova_label"), Translator.Translate("SupernovaExp_medium"), LetterDefOf.NeutralEvent); }
public static bool EnjoyableOutsideNow(Map map, StringBuilder outFailReason = null) { if (map.weatherManager.RainRate >= 0.25) { if (outFailReason != null) { outFailReason.Append(map.weatherManager.curWeather.label); } return(false); } GameConditionDef gameConditionDef = default(GameConditionDef); if (!map.gameConditionManager.AllowEnjoyableOutsideNow(out gameConditionDef)) { if (outFailReason != null) { outFailReason.Append(gameConditionDef.label); } return(false); } return(true); }
public override void Execute(int amount, string boughtBy) { GameConditionDef conditionDef = DefDatabase <GameConditionDef> .GetNamed(defName); String notificationMessage; // I hope no viewer uses RC with the name "Poll" if (boughtBy == "Poll") { notificationMessage = $"<color=#9147ff>By popular opinion</color>, your channel has triggered {defLabel} for a whole day! Let's hope you get out the other side"; } else { notificationMessage = $"<color=#9147ff>{boughtBy}</color> purchased {defLabel} for a whole day! Let's hope you get out the other side"; } Map map = Find.CurrentMap; GameCondition gameCondition = GameConditionMaker.MakeCondition(conditionDef, 60000); map.gameConditionManager.RegisterCondition(gameCondition); AlertManager.BadEventNotification(notificationMessage); }
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"))); }
public bool ConditionIsActive(GameConditionDef def) { return(this.GetActiveCondition(def) != null); }
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); } }