protected override bool TryExecuteWorker(IncidentParms parms) { if (!settings.Active) { return(false); } List <int> tiles = new List <int>(); for (int i = 0; i < Find.WorldGrid.TilesCount; i++) { Tile tile = Find.WorldGrid[i]; if (tile.biome != BiomeDefOf.Ocean && tile.biome != BiomeDefOf.Lake && tile.hilliness != Hilliness.Impassable) { tiles.Add(i); } } if (tiles.Count == 0) { return(false); } int partsCount = Rand.Range(minParts, maxParts); for (int i = 0; i < partsCount; i++) { int tileID = tiles.RandomElement(); if (Find.WorldObjects.AnyMapParentAt(tileID)) { continue; } Faction f = RandomEnemyFaction(); if (f == null) { return(false); } ShipMapGenerator generator = GetGenerator(); ShipCrash_Controller.MakeShipPart(generator, tileID, f); } SendStandardLetter(parms, null); CommunicationDialog dialog = QuestsManager.Communications.AddCommunication(QuestsManager.Communications.UniqueIdManager.GetNextDialogID(), "Comm_ShipCrashTitle".Translate(), "Comm_ShipCrashDesc".Translate(), incident: def); TimeComp timeComp = new TimeComp(dialog, 7000); timeComp.id = QuestsManager.Communications.UniqueIdManager.GetNextComponentID(); QuestsManager.Communications.RegisterComponent(timeComp); ShipCrash_Controller.ShipCount++; return(true); }
private bool ConsoleMode(IncidentParms parms) { Map map = (Map)parms.target; // PawnKindDef spaceRefugee = PawnKindDefOf.SpaceRefugee; // Pawn pawn = PawnGenerator.GeneratePawn(spaceRefugee); Pawn offerPawn = PawnGenerator.GeneratePawn(PawnKindDefOf.Colonist); int timeOut = 2 * 60000; Settlement settlement = Find.WorldObjects.Settlements.Where(s => s.Faction == parms.faction).RandomElement(); string text = "PawnInfo".Translate().Formatted(offerPawn.Named("PAWN")).AdjustedFor(offerPawn); string dialogDesc = string.Format(def.letterText, settlement.Name, parms.faction.Name, offerPawn.Name.ToStringFull, text, "TimerInfo".Translate(timeOut.TicksToDays().ToString("f2"))); EmailMessage message = QuestsManager.Communications.PlayerBox.FormMessageFrom(parms.faction, dialogDesc, def.letterLabel); message.Answers = new List <EmailMessageOption>(); EmailOption_PawnOfferYes emailOption_PawnOfferYes = new EmailOption_PawnOfferYes(offerPawn); Letter letter = LetterMaker.MakeLetter("CommunicationDialog_PocahontasTitle".Translate(), "CommunicationDialog_Pocahontas".Translate(parms.faction.Name), LetterDefOf.NegativeEvent); TimeComp timeComp = new TimeComp(message.Subject, Faction.OfPlayer, timeOut); timeComp.id = QuestsManager.Communications.UniqueIdManager.GetNextComponentID(); timeComp.Action = new CommOption_ChangeGoodWill(-20); timeComp.EndLetter = letter; timeComp.Speaker = map.mapPawns.FreeColonists.RandomElement(); timeComp.Defendant = parms.faction.leader; EmailOption_ChangeGoodWill emailOption_ChangeGoodWill = new EmailOption_ChangeGoodWill(-20); EmailOption_DeclineDialog emailOption_DeclineDialog = new EmailOption_DeclineDialog(emailOption_ChangeGoodWill); message.Answers.Add(emailOption_PawnOfferYes); message.Answers.Add(emailOption_DeclineDialog); QuestsManager.Communications.PlayerBox.SendMessage(message); QuestsManager.Communications.RegisterComponent(timeComp); return(true); }