public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(Caravan caravan,
                                                                 FactionWarPeaceTalks factionWarPeaceTalks)
 {
     return(CaravanArrivalActionUtility.GetFloatMenuOptions(() => CanVisit(factionWarPeaceTalks),
                                                            () => new CaravanArrivalAction_VisitFactionWarPeaceTalks(factionWarPeaceTalks),
                                                            "VisitPeaceTalks".Translate(factionWarPeaceTalks.Label),
                                                            caravan, factionWarPeaceTalks.Tile,
                                                            factionWarPeaceTalks));
 }
Пример #2
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!FoundTwoFactions())
            {
                return(false);
            }

            if (!TryFindTile(tile: out int tile))
            {
                return(false);
            }

            Faction faction = TryFindFactions(instigatingFaction: out Faction instigatingFaction);

            if (faction == null)
            {
                return(false);
            }

            FactionWarPeaceTalks factionWarPeaceTalks = (FactionWarPeaceTalks)WorldObjectMaker.MakeWorldObject(def: MFI_DefOf.MFI_FactionWarPeaceTalks);

            factionWarPeaceTalks.Tile = tile;
            factionWarPeaceTalks.SetFaction(newFaction: faction);
            factionWarPeaceTalks.SetWarringFactions(factionOne: faction, factionInstigator: instigatingFaction);
            int randomInRange = TimeoutDaysRange.RandomInRange;

            factionWarPeaceTalks.GetComponent <TimeoutComp>().StartTimeout(ticks: randomInRange * GenDate.TicksPerDay);
            Find.WorldObjects.Add(o: factionWarPeaceTalks);

            string text = string.Format(format: this.def.letterText.AdjustedFor(p: faction.leader), faction.def.leaderTitle, faction.Name, instigatingFaction.Name, randomInRange).CapitalizeFirst();

            Find.LetterStack.ReceiveLetter(label: this.def.letterLabel, text: text, textLetterDef: this.def.letterDef, lookTargets: factionWarPeaceTalks, relatedFaction: faction);
            Find.World.GetComponent <WorldComponent_MFI_FactionWar>().StartUnrest(factionOne: faction, factionTwo: instigatingFaction);

            return(true);
        }
Пример #3
0
 public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(Caravan caravan, FactionWarPeaceTalks factionWarPeaceTalks)
 {
     return(CaravanArrivalActionUtility.GetFloatMenuOptions(acceptanceReportGetter:
                                                            () => CanVisit(caravan: caravan, factionWarPeaceTalks: factionWarPeaceTalks), arrivalActionGetter:
                                                            () => new CaravanArrivalAction_VisitFactionWarPeaceTalks(factionWarPeaceTalks: factionWarPeaceTalks),
                                                            label: "VisitPeaceTalks".Translate(factionWarPeaceTalks.Label),
                                                            caravan: caravan, pathDestination: factionWarPeaceTalks.Tile,
                                                            revalidateWorldClickTarget: factionWarPeaceTalks));
 }
Пример #4
0
 public static FloatMenuAcceptanceReport CanVisit(Caravan caravan, FactionWarPeaceTalks factionWarPeaceTalks)
 {
     return(factionWarPeaceTalks != null && factionWarPeaceTalks.Spawned);
 }
Пример #5
0
 public CaravanArrivalAction_VisitFactionWarPeaceTalks(FactionWarPeaceTalks factionWarPeaceTalks)
 {
     this.factionWarPeaceTalks = factionWarPeaceTalks;
 }
 public static FloatMenuAcceptanceReport CanVisit(FactionWarPeaceTalks factionWarPeaceTalks)
 {
     return(factionWarPeaceTalks is { Spawned : true });