public override bool TryExecute(IncidentParms parms) { if (!TryResolveParms(parms)) { return false; } var list = SpawnPawns(parms); if (list.Count == 0) { return false; } IntVec3 chillSpot; RCellFinder.TryFindRandomSpotJustOutsideColony(list[0], out chillSpot); var lordJob = new LordJob_VisitColony(parms.faction, chillSpot); LordMaker.MakeNewLord(parms.faction, lordJob, list); string label; string text2; if (list.Count == 1) { label = "LetterLabelSingleVisitorArrives".Translate(); text2 = "SingleVisitorArrives".Translate(list[0].story.adulthood.title.ToLower(), parms.faction.Name, list[0].Name, string.Empty); text2 = text2.AdjustedFor(list[0]); } else { var text3 = string.Empty; label = "LetterLabelGroupVisitorsArrive".Translate(); text2 = "GroupVisitorsArrive".Translate(parms.faction.Name, text3); } Find.LetterStack.ReceiveLetter(label, text2, LetterType.Good, list[0]); return true; }
public override bool TryExecute(IncidentParms parms) { if (!this.TryResolveParms(parms)) { return(false); } Pawn sora = TreasuresUtils.TryGetSoraGoodseller(); if (sora == null) { sora = TreasuresUtils.GenSoraGoodseller(parms.faction); } else if (sora.Dead || sora.Spawned) { return(false); } else { sora.SetFaction(parms.faction); } List <Pawn> list = base.SpawnPawns(parms); list.Add(sora); GenSpawn.Spawn(sora, CellFinder.RandomClosewalkCellNear(parms.spawnCenter, 5)); IntVec3 chillSpot; RCellFinder.TryFindRandomSpotJustOutsideColony(sora, out chillSpot); LordJob_VisitColony lordJob = new LordJob_VisitColony(parms.faction, chillSpot); LordMaker.MakeNewLord(parms.faction, lordJob, list); this.TryConvertOnePawnToSmallTrader(new List <Pawn> { sora }, parms.faction); Pawn factionLeader = list.Find((Pawn x) => parms.faction.leader == x); string label; string letterText; string text = "SingleVisitorArrivesTraderInfo".Translate(); string text2 = (factionLeader == null) ? string.Empty : "SingleVisitorArrivesLeaderInfo".Translate(); label = "LetterLabelSingleVisitorArrives".Translate(); letterText = "SingleVisitorArrives".Translate(new object[] { sora.story.adulthood.title.ToLower(), parms.faction.Name, sora.Name, text, text2 }); letterText = letterText.AdjustedFor(sora); Find.LetterStack.ReceiveLetter(label, letterText, LetterType.Good, sora); return(true); }
protected override bool TryExecuteWorker(IncidentParms parms) { Map map = (Map)parms.target; if (!base.TryResolveParms(parms)) { return(false); } List <Pawn> list = base.SpawnPawns(parms); if (list.Count == 0) { return(false); } IntVec3 chillSpot; RCellFinder.TryFindRandomSpotJustOutsideColony(list[0], out chillSpot); LordJob_VisitColony lordJob = new LordJob_VisitColony(parms.faction, chillSpot); LordMaker.MakeNewLord(parms.faction, lordJob, map, list); bool flag = false; if (Rand.Value < 0.75f) { flag = this.TryConvertOnePawnToSmallTrader(list, parms.faction, map); } Pawn pawn = list.Find((Pawn x) => parms.faction.leader == x); string label; string text; if (list.Count == 1) { string value = (!flag) ? string.Empty : ("\n\n" + "SingleVisitorArrivesTraderInfo".Translate(list[0].Named("PAWN")).AdjustedFor(list[0], "PAWN")); string value2 = (pawn == null) ? string.Empty : ("\n\n" + "SingleVisitorArrivesLeaderInfo".Translate(list[0].Named("PAWN")).AdjustedFor(list[0], "PAWN")); label = "LetterLabelSingleVisitorArrives".Translate(); text = "SingleVisitorArrives".Translate(list[0].story.Title, parms.faction.Name, list[0].Name.ToStringFull, value, value2, list[0].Named("PAWN")).AdjustedFor(list[0], "PAWN"); } else { string value3 = (!flag) ? string.Empty : ("\n\n" + "GroupVisitorsArriveTraderInfo".Translate()); string value4 = (pawn == null) ? string.Empty : ("\n\n" + "GroupVisitorsArriveLeaderInfo".Translate(pawn.LabelShort, pawn)); label = "LetterLabelGroupVisitorsArrive".Translate(); text = "GroupVisitorsArrive".Translate(parms.faction.Name, value3, value4); } PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter(list, ref label, ref text, "LetterRelatedPawnsNeutralGroup".Translate(Faction.OfPlayer.def.pawnsPlural), true, true); if (Quote != null) { text += "\n\n"; text += Quote; } Find.LetterStack.ReceiveLetter(label, text, LetterDefOf.NeutralEvent, list[0], parms.faction, null); return(true); }
private bool ArrivalMode(IncidentParms parms) { Map map = (Map)parms.target; List <Pawn> list = SpawnPawns(parms); if (list.Count == 0 || list.Count < 1) { return(false); } RCellFinder.TryFindRandomSpotJustOutsideColony(list[0], out IntVec3 result); LordJob_VisitColony lordJob = new LordJob_VisitColony(parms.faction, result); LordMaker.MakeNewLord(parms.faction, lordJob, map, list); Pawn pawn = list.RandomElement(); CommunicationDialog_Pocahontas dialog = new CommunicationDialog_Pocahontas(); dialog.id = QuestsManager.Communications.UniqueIdManager.GetNextDialogID(); dialog.CardLabel = "Pocahontas_CardLabel".Translate(); dialog.Faction = parms.faction; Pawn offerPawn = list.Where(p => p != pawn).RandomElement(); CommOption_PawnOfferYes commOption_PawnOfferYes = new CommOption_PawnOfferYes(); commOption_PawnOfferYes.OfferPawn = offerPawn; CommOption_DeclineDialog commOption_DeclineDialog = new CommOption_DeclineDialog(); commOption_DeclineDialog.ExecuteOption = new CommOption_ChangeGoodWill(-35); dialog.Options = new List <CommOption>(); dialog.Options.Add(commOption_PawnOfferYes); dialog.Options.Add(commOption_DeclineDialog); 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, "ActualOnlyThisMap".Translate()); dialog.Description = dialogDesc; dialog.ShowInConsole = false; QuestsManager.Communications.AddCommunication(dialog); QuestsManager.Communications.AddQuestPawn(pawn, dialog); Find.LetterStack.ReceiveLetter(def.letterLabel, dialogDesc, def.letterDef); return(true); }
public override bool TryExecute(IncidentParms parms) { if (!this.TryResolveParms(parms)) { return(false); } List <Pawn> list = base.SpawnPawns(parms); if (list.Count == 0) { return(false); } IntVec3 chillSpot; RCellFinder.TryFindRandomSpotJustOutsideColony(list[0], out chillSpot); LordJob_VisitColony lordJob = new LordJob_VisitColony(parms.faction, chillSpot); LordMaker.MakeNewLord(parms.faction, lordJob, list); bool flag = false; if (Rand.Value < TraderChance) { flag = this.TryConvertOnePawnToSmallTrader(list, parms.faction); } Pawn pawn = list.Find((Pawn x) => parms.faction.leader == x); string label; string text3; if (list.Count == 1) { string text = (!flag) ? string.Empty : "SingleVisitorArrivesTraderInfo".Translate(); string text2 = (pawn == null) ? string.Empty : "SingleVisitorArrivesLeaderInfo".Translate(); label = "LetterLabelSingleVisitorArrives".Translate(); text3 = "SingleVisitorArrives".Translate(new object[] { list[0].story.adulthood.title.ToLower(), parms.faction.Name, list[0].Name, text, text2 }); text3 = text3.AdjustedFor(list[0]); } else { string text4 = (!flag) ? string.Empty : "GroupVisitorsArriveTraderInfo".Translate(); string text5 = (pawn == null) ? string.Empty : "GroupVisitorsArriveLeaderInfo".Translate(new object[] { pawn.LabelShort }); label = "LetterLabelGroupVisitorsArrive".Translate(); text3 = "GroupVisitorsArrive".Translate(new object[] { parms.faction.Name, text4, text5 }); } Find.LetterStack.ReceiveLetter(label, text3, LetterType.Good, list[0]); return(true); }