public override void CompTick() { base.CompTick(); if (!waitingForNight && this.parent.IsHashIntervalTick(Props.checkingInterval) && this.parent.Map != null && (!Props.requiresTamed || (Props.requiresTamed && this.parent.Faction != null && this.parent.Faction.IsPlayer))) { IncidentDef incidentDef = IncidentDef.Named(Props.incidentToCause); if (incidentDef.defName == "Aurora") { waitingForNight = true; } else { IncidentParms parms = StorytellerUtility.DefaultParmsNow(incidentDef.category, this.parent.Map); incidentDef.Worker.TryExecute(parms); } } if (waitingForNight && this.parent.IsHashIntervalTick(this.checkingForNightInterval) && this.parent.Map != null && GenCelestial.CurCelestialSunGlow(this.parent.Map) <= 0.4f && (!Props.requiresTamed || (Props.requiresTamed && this.parent.Faction != null && this.parent.Faction.IsPlayer))) { IncidentDef incidentDef = IncidentDef.Named(Props.incidentToCause); IncidentParms parms = StorytellerUtility.DefaultParmsNow(incidentDef.category, this.parent.Map); incidentDef.Worker.TryExecute(parms); waitingForNight = false; } }
public override bool IsPossible() { base.IsPossible(); worker.def = IncidentDef.Named("Disease_Flu"); parms.points = parms.points / 3; return(worker.CanFireNow(parms)); }
public override bool IsPossible() { List <string> animals = new List <string>() { "Bear_Grizzly", "Bear_Polar", "Rhinoceros", "Elephant", "Megasloth", "Thrumbo" }; animals.Shuffle(); ThingDef def = ThingDef.Named(animals[0]); float averagePower = 0; if (def != null && def.race != null) { foreach (Tool t in def.tools) { averagePower += t.power; } averagePower = averagePower / def.tools.Count; } float animalCount = 2.5f; if (averagePower > 18) { animalCount = 2.0f; } worker = new IncidentWorker_SpecificAnimalsWanderIn("TwitchStoriesLetterLabelPredators", PawnKindDef.Named(animals[0]), false, (int)animalCount, true, true); worker.def = IncidentDef.Named("HerdMigration"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.ThreatBig, target); return(worker.CanFireNow(parms)); }
public override void PostMapGenerate(Map map) { base.PostMapGenerate(map); this.MakeMuffalo(map); this.QueueArrivals(map); if (Rand.Chance(0.05f)) { IEnumerable <Pawn> source = from p in map.mapPawns.FreeColonistsSpawned where p.story.traits.HasTrait(TraitDef.Named("PsychicSensitivity")) select p; if (source.Count <Pawn>() > 0) { Pawn pawn = source.RandomElement <Pawn>(); Find.LetterStack.ReceiveLetter("RD_ManhunterDanger".Translate(), "RD_MalevolentPsychicDesc".Translate(pawn.Named("PAWN")) //"{0} believes that a malevolent psychic energy is massing, and that this peaceful herd of muffalo are on the brink of a mass insanity." , LetterDefOf.ThreatSmall, null); } //TODO: check if it works IncidentParms incidentParms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.FactionArrival, map); incidentParms.forced = true; incidentParms.points = 100f; QueuedIncident qi = new QueuedIncident(new FiringIncident(IncidentDef.Named("RD_MuffaloMassInsanity"), null, incidentParms), Find.TickManager.TicksGame + Rand.RangeInclusive(10000, 45000)); Find.Storyteller.incidentQueue.Add(qi); } }
public void DoExtraSetup(IncidentWorker worker, IncidentParms @params, StoreIncident incident) { if (!(worker is AnimalSpawnWorker spawnWorker)) { return; } if (!_predators.TryRandomElement(out string predator)) { predator = "Thrumbo"; } ThingDef thing = ThingDef.Named(predator); var power = 0.0f; if (thing?.race != null) { power += thing.tools.Sum(t => t.power); power /= thing.tools.Count; } spawnWorker.Quantity = power > 18f ? 2 : 3; spawnWorker.SpawnManhunter = true; spawnWorker.AnimalDef = PawnKindDef.Named(predator); spawnWorker.def = IncidentDef.Named("HerdMigration"); spawnWorker.Label = "TwitchStoriesLetterLabelPredators".Localize(); spawnWorker.Text = "ManhunterPackArrived".LocalizeKeyed(spawnWorker.AnimalDef.GetLabelPlural()); }
public static void ResetInterval(Map map) { FiringIncident fi = new FiringIncident(); fi = new FiringIncident(IncidentDef.Named("ZTrib_TribbleArrival"), null, null); map.StoryState.Notify_IncidentFired(fi); }
private static DiaOption PeaceTalksOption(Faction faction, Map map) { var def = IncidentDef.Named("QuestPeaceTalks"); if (PeaceTalksExist(faction)) { var diaOption = new DiaOption(def.letterLabel); diaOption.Disable("InProgress".Translate()); return(diaOption); } var diaOption2 = new DiaOption(def.letterLabel) { action = delegate { PlaySoundFor(faction); if (!TryStartPeaceTalks(faction)) { Log.Error("Peace talks event failed to start. This should never happen."); } } }; var text = string.Format(def.letterText.AdjustedFor(faction.leader), faction.def.leaderTitle, faction.Name, 15) .CapitalizeFirst(); diaOption2.link = new DiaNode(text) { options = { OKToRoot() } }; return(diaOption2); }
public override void Execute(int amount, string boughtBy) { var currentMap = Find.CurrentMap; var parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, currentMap); parms.forced = true; for (int i = 0; i < amount; i++) { var beaverWorker = new IncidentWorker_MeteoriteImpact(); beaverWorker.def = IncidentDef.Named("MeteoriteImpact"); beaverWorker.TryExecute(parms); } string notification; if (boughtBy == "Poll") { notification = $"<color=#9147ff>Your viewers</color> have dislodged a chunk of asteroid from orbit"; } else { notification = $"<color=#9147ff>{boughtBy}</color> has dislodged a chunk of asteroid from orbit"; } AlertManager.NormalEventNotification(notification); }
private FiringIncident GenerateQueuedThreatBig(IIncidentTarget target, bool isCosmicHorrorEvent = false) { IncidentParms parms = this.GenerateParms(IncidentCategory.ThreatBig, target); IncidentDef omenIncident = IncidentDef.Named("HPLovecraft_OmenIncident"); if (isCosmicHorrorEvent) { omenIncident = IncidentDef.Named("HPLovecraft_OmenIncidentCosmicHorror"); } //Vanilla code if (GenDate.DaysPassed < 20) { if (!IncidentDefOf.RaidEnemy.Worker.CanFireNow(target)) { return(null); } } //Throw an omen instead of a big incident return(new FiringIncident(omenIncident, this, null) { parms = parms }); }
public static List <IncidentDef> CosmicHorrorIncidents() { return(new List <IncidentDef> { IncidentDef.Named("ROM_RaidCosmicHorrors"), IncidentDef.Named("ROM_StarVampireAttack"), IncidentDef.Named("ROM_ChthonianPit") }); }
public override bool IsPossible() { worker = new EarthQuake(); worker.def = IncidentDef.Named("VEE_Earthquake"); parms = new IncidentParms(); parms.target = Current.Game.RandomPlayerHomeMap; return(worker.CanFireNow(parms)); }
public override bool IsPossible() { worker = new IncidentWorker_MakeGameConditionVEE(); worker.def = IncidentDef.Named("VEE_HailStorm"); parms = new IncidentParms(); parms.target = Current.Game.RandomPlayerHomeMap; return(worker.CanFireNow(parms)); }
public override bool IsPossible() { worker = new IncidentWorker_ShipChunkDrop(); worker.def = IncidentDef.Named("PsychicEmanatorShipPartCrash"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.ThreatBig, target); return(worker.CanFireNow(parms)); }
public override bool IsPossible() { worker = new IncidentWorker_PsychicDrone();; worker.def = IncidentDef.Named("PsychicDrone"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, target); return(worker.CanFireNow(parms)); }
public override bool IsPossible() { worker = new IncidentWorker_AnimalInsanityMass(); worker.def = IncidentDef.Named("AnimalInsanityMass"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.ThreatBig, target); return(worker.CanFireNow(parms)); }
public override bool IsPossible() { worker = new IncidentWorker_DrunkMuffalos(); worker.def = IncidentDef.Named("DrunkMuffalos"); parms = new IncidentParms(); parms.target = Current.Game.RandomPlayerHomeMap; parms.points = StorytellerUtility.DefaultThreatPointsNow(parms.target); return(worker.CanFireNow(parms)); }
public override bool IsPossible() { worker = new IncidentWorker_MeteoriteImpact(); worker.def = IncidentDef.Named("MeteoriteImpact"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, target); return(worker.CanFireNow(parms)); }
public override bool IsPossible() { worker = new IncidentWorker_MakeGameCondition(); worker.def = IncidentDef.Named(incidentDefName); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, target); return worker.CanFireNow(parms); }
// // (( B18 )) // private FiringIncident GenerateQueuedThreatSmall(IIncidentTarget target) // { // IncidentDef incidentDef; // if (!this.UsableIncidentsInCategory(IncidentCategoryDefOf.ThreatSmall, target) // .TryRandomElementByWeight(new Func<IncidentDef, float>(base.IncidentChanceFinal), out incidentDef)) // { // return null; // } // return new FiringIncident(incidentDef, this, null) // { // parms = this.GenerateParms(incidentDef.category, target) // }; // } private FiringIncident GenerateIncident(IIncidentTarget target) { var parms = GenerateParms(Props.IncidentCategory, target); return(new FiringIncident(IncidentDef.Named("HPLovecraft_OmenIncident"), this) { parms = parms }); }
public override bool IsPossible() { worker = new IncidentWorker_WildManWandersIn(); worker.def = IncidentDef.Named("WildManWandersIn"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, target); return(worker.CanFireNow(parms)); }
public override void PawnDied(Corpse corpse) { if (corpse.Map != null) { IncidentDef localDef = IncidentDef.Named("Flashstorm"); IncidentParms parms = StorytellerUtility.DefaultParmsNow(localDef.category, corpse.Map); localDef.Worker.TryExecute(parms); } }
public override bool IsPossible(string message, Viewer viewer, bool separateChannel = false) { this.separateChannel = separateChannel; this.viewer = viewer; string[] command = message.Split(' '); if (command.Length < 4) { Toolkit.client.SendMessage($"@{viewer.username} syntax is {this.storeIncident.syntax}", separateChannel); return(false); } if (!VariablesHelpers.PointsWagerIsValid( command[3], viewer, ref pointsWager, ref storeIncident, separateChannel )) { return(false); } string animalKind = command[2].ToLower(); List <PawnKindDef> allAnimals = DefDatabase <PawnKindDef> .AllDefs.Where( s => s.RaceProps.Animal && string.Join("", s.defName.Split(' ')).ToLower() == animalKind ).ToList(); if (allAnimals.Count < 1) { Toolkit.client.SendMessage($"@{viewer.username} no animal {animalKind} found.", separateChannel); return(false); } target = Current.Game.AnyPlayerHomeMap; if (target == null) { return(false); } float points = IncidentHelper_PointsHelper.RollProportionalGamePoints(storeIncident, pointsWager, StorytellerUtility.DefaultThreatPointsNow(target)); pawnKind = allAnimals[0]; int num = ManhunterPackIncidentUtility.GetAnimalsCount(pawnKind, points); worker = new IncidentWorker_SpecificAnimalsWanderIn(null, pawnKind, true, num, false, true); worker.def = IncidentDef.Named("FarmAnimalsWanderIn"); float defaultThreatPoints = StorytellerUtility.DefaultSiteThreatPointsNow(); parms = StorytellerUtility.DefaultParmsNow(worker.def.category, target); parms.points = points; return(worker.CanFireNow(parms)); }
public override bool IsPossible() { worker = new IncidentWorker_Infestation(); worker.def = IncidentDef.Named("Infestation"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.ThreatBig, target); parms.forced = true; points = parms.points; return(worker.CanFireNow(parms)); }
private void TryExecuteAnimal(ThingDef animal, int count) { string letter = Helper.ReplacePlaceholder("TwitchStoriesDescription80".Translate(), from: Viewer.username, amount: quantity.ToString(), item: item.abr.CapitalizeFirst()); IncidentWorker worker = new IncidentWorker_SpecificAnimalsWanderIn(animal.LabelCap + "'s join", PawnKindDef.Named(animal.defName), true, count, false, true); worker.def = IncidentDef.Named("FarmAnimalsWanderIn"); worker.TryExecute(StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, Helper.AnyPlayerMap)); EndCarePackage(); }
private static IncidentDef ReplaceIncidentWorker(String name, Type newWorker) { IncidentDef incident = IncidentDef.Named(name); if (incident != null && incident.workerClass != null) { incident.workerClass = newWorker; } return(incident); }
public override bool IsPossible(string message, Viewer viewer, bool separateChannel = false) { this.separateChannel = separateChannel; this.Viewer = viewer; string[] command = message.Split(' '); if (command.Length < 3) { VariablesHelpers.ViewerDidWrongSyntax(viewer.username, storeIncident.syntax, separateChannel); return(false); } if (!VariablesHelpers.PointsWagerIsValid( command[2], viewer, ref pointsWager, ref storeIncident, separateChannel )) { ToolkitPatchLogger.Log(LOGGER_NAME, "Cannot fire custom manhunter. No valid points wagered"); return(false); } target = Current.Game.AnyPlayerHomeMap; if (target == null) { ToolkitPatchLogger.Log(LOGGER_NAME, "Cannot fire custom manhunter. No valid tile"); return(false); } parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.RaidBeacon, target); parms.points = IncidentHelper_PointsHelper.RollProportionalGamePoints(storeIncident, pointsWager, parms.points); IEnumerable <string> animals = Settings.AnimalMap.Where(x => x.Value).Select(x => x.Key); ToolkitPatchLogger.Log(LOGGER_NAME, $"{animals.Count()}/{Settings.AnimalMap.Count} animals for selection."); string animal = animals.RandomElement(); ToolkitPatchLogger.Log(LOGGER_NAME, $"Chose animal {animal} for the attack beast"); ThingDef def = ThingDef.Named(animal); worker = new CustomManhunterIncidentWorker(PawnKindDef.Named(animal)); worker.def = IncidentDef.Named("BeastAttack"); bool success = worker.CanFireNow(parms); if (!success) { WorkerCanFireCheck.CheckDefaultFireNowConditions(worker, parms, worker.def); } return(success); }
public void ApplySettings() { IncidentDef tornado = IncidentDef.Named("Tornado"); tornado.baseChance = baseChanceHandler; tornado.minRefireDays = minRefireDaysHandler; Logger.Message(String.Format( "Settings loaded:\n\tbaseChange: {0}\n\tminRefireDays: {1}", tornado.baseChance, tornado.minRefireDays)); }
public override void TryExecute() { IncidentWorker worker = new IncidentWorker_VomitRain { def = IncidentDef.Named("VomitRain") }; IncidentParms parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, map); worker.TryExecute(parms); }
public static bool CanSpawnNow(IncidentParms parms) { //IncidentWorker.CanFireNow(parms) IncidentDef def = IncidentDef.Named("ZTrib_TribbleArrival"); if (def.Worker.CanFireNow(parms)) { return(true); } return(false); }
public override bool IsPossible() { PawnKindDef animalKind = PawnKindDef.Named("YorkshireTerrier"); int num = AnimalsCount.RandomInRange; worker = new IncidentWorker_SpecificAnimalsWanderIn(null, animalKind, true, num, false, true); worker.def = IncidentDef.Named("SelfTame"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, target); return(worker.CanFireNow(parms)); }