Ejemplo n.º 1
0
 public virtual IEnumerable <string> ConfigErrors(TraderKindDef parentDef)
 {
     yield break;
 }
Ejemplo n.º 2
0
 public override void PostPostGeneratedForTrader(TraderKindDef trader, int forTile, Faction forFaction)
 {
     base.PostPostGeneratedForTrader(trader, forTile, forFaction);
     this.hatcheeFaction = forFaction;
 }
Ejemplo n.º 3
0
        private static DiaOption RequestTraderOption(Map map, Faction faction, Pawn negotiator)
        {
            string text = "RequestTrader".Translate(15);

            if (faction.PlayerRelationKind != FactionRelationKind.Ally)
            {
                DiaOption diaOption = new DiaOption(text);
                diaOption.Disable("MustBeAlly".Translate());
                return(diaOption);
            }
            if (!faction.def.allowedArrivalTemperatureRange.ExpandedBy(-4f).Includes(map.mapTemperature.SeasonalTemp))
            {
                DiaOption diaOption2 = new DiaOption(text);
                diaOption2.Disable("BadTemperature".Translate());
                return(diaOption2);
            }
            int num = faction.lastTraderRequestTick + 240000 - Find.TickManager.TicksGame;

            if (num > 0)
            {
                DiaOption diaOption3 = new DiaOption(text);
                diaOption3.Disable("WaitTime".Translate(num.ToStringTicksToPeriod()));
                return(diaOption3);
            }
            DiaOption diaOption4 = new DiaOption(text);
            DiaNode   diaNode    = new DiaNode("TraderSent".Translate(faction.leader).CapitalizeFirst());

            diaNode.options.Add(OKToRoot(faction, negotiator));
            DiaNode diaNode2 = new DiaNode("ChooseTraderKind".Translate(faction.leader));

            foreach (TraderKindDef item in from x in faction.def.caravanTraderKinds
                     where x.requestable
                     select x)
            {
                TraderKindDef localTk    = item;
                DiaOption     diaOption5 = new DiaOption(localTk.LabelCap);
                diaOption5.action = delegate
                {
                    IncidentParms parms = new IncidentParms
                    {
                        target     = map,
                        faction    = faction,
                        traderKind = localTk,
                        forced     = true
                    };
                    Find.Storyteller.incidentQueue.Add(IncidentDefOf.TraderCaravanArrival, Find.TickManager.TicksGame + 120000, parms, 240000);
                    faction.lastTraderRequestTick = Find.TickManager.TicksGame;
                    Faction faction2       = faction;
                    Faction ofPlayer       = Faction.OfPlayer;
                    int     goodwillChange = -15;
                    bool    canSendMessage = false;
                    string  reason         = "GoodwillChangedReason_RequestedTrader".Translate();
                    faction2.TryAffectGoodwillWith(ofPlayer, goodwillChange, canSendMessage, canSendHostilityLetter: true, reason);
                };
                diaOption5.link = diaNode;
                diaNode2.options.Add(diaOption5);
            }
            DiaOption diaOption6 = new DiaOption("GoBack".Translate());

            diaOption6.linkLateBind = ResetToRoot(faction, negotiator);
            diaNode2.options.Add(diaOption6);
            diaOption4.link = diaNode2;
            return(diaOption4);
        }
Ejemplo n.º 4
0
 public virtual void ResolveReferences(TraderKindDef trader)
 {
     this.trader = trader;
 }
Ejemplo n.º 5
0
 private IEnumerable <string> < ConfigErrors > __BaseCallProxy0(TraderKindDef parentDef)
 {
     return(base.ConfigErrors(parentDef));
 }
Ejemplo n.º 6
0
        private static DiaOption RequestTraderOption(Map map, Faction faction, Pawn negotiator)
        {
            TaggedString taggedString = "RequestTrader".Translate(15);

            if (faction.PlayerRelationKind != FactionRelationKind.Ally)
            {
                DiaOption diaOption = new DiaOption(taggedString);
                diaOption.Disable("MustBeAlly".Translate());
                return(diaOption);
            }
            if (!faction.def.allowedArrivalTemperatureRange.ExpandedBy(-4f).Includes(map.mapTemperature.SeasonalTemp))
            {
                DiaOption diaOption2 = new DiaOption(taggedString);
                diaOption2.Disable("BadTemperature".Translate());
                return(diaOption2);
            }
            int num = faction.lastTraderRequestTick + 240000 - Find.TickManager.TicksGame;

            if (num > 0)
            {
                DiaOption diaOption3 = new DiaOption(taggedString);
                diaOption3.Disable("WaitTime".Translate(num.ToStringTicksToPeriod()));
                return(diaOption3);
            }
            DiaOption diaOption4 = new DiaOption(taggedString);
            DiaNode   diaNode    = new DiaNode("TraderSent".Translate(faction.leader).CapitalizeFirst());

            diaNode.options.Add(OKToRoot(faction, negotiator));
            DiaNode diaNode2 = new DiaNode("ChooseTraderKind".Translate(faction.leader));

            foreach (TraderKindDef item in faction.def.caravanTraderKinds.Where((TraderKindDef x) => x.requestable))
            {
                TraderKindDef localTk    = item;
                DiaOption     diaOption5 = new DiaOption(localTk.LabelCap);
                if (localTk.TitleRequiredToTrade != null && (negotiator.royalty == null || localTk.TitleRequiredToTrade.seniority > negotiator.GetCurrentTitleSeniorityIn(faction)))
                {
                    DiaNode   diaNode3   = new DiaNode("TradeCaravanRequestDeniedDueTitle".Translate(negotiator.Named("NEGOTIATOR"), localTk.TitleRequiredToTrade.GetLabelCapFor(negotiator).Named("TITLE"), faction.Named("FACTION")));
                    DiaOption diaOption6 = new DiaOption("GoBack".Translate());
                    diaNode3.options.Add(diaOption6);
                    diaOption5.link = diaNode3;
                    diaOption6.link = diaNode2;
                }
                else
                {
                    diaOption5.action = delegate
                    {
                        IncidentParms parms = new IncidentParms
                        {
                            target     = map,
                            faction    = faction,
                            traderKind = localTk,
                            forced     = true
                        };
                        Find.Storyteller.incidentQueue.Add(IncidentDefOf.TraderCaravanArrival, Find.TickManager.TicksGame + 120000, parms, 240000);
                        faction.lastTraderRequestTick = Find.TickManager.TicksGame;
                        faction.TryAffectGoodwillWith(Faction.OfPlayer, -15, canSendMessage: false, canSendHostilityLetter: true, "GoodwillChangedReason_RequestedTrader".Translate());
                    };
                    diaOption5.link = diaNode;
                }
                diaNode2.options.Add(diaOption5);
            }
            DiaOption diaOption7 = new DiaOption("GoBack".Translate());

            diaOption7.linkLateBind = ResetToRoot(faction, negotiator);
            diaNode2.options.Add(diaOption7);
            diaOption4.link = diaNode2;
            return(diaOption4);
        }
Ejemplo n.º 7
0
        private Pawn GenerateTrader(PawnGroupMakerParms parms, PawnGroupMaker groupMaker, TraderKindDef traderKind)
        {
            Pawn pawn = PawnGenerator.GeneratePawn(new PawnGenerationRequest(groupMaker.traders.RandomElementByWeight((PawnGenOption x) => x.selectionWeight).kind, parms.faction, PawnGenerationContext.NonPlayer, parms.tile, forceGenerateNewPawn: false, newborn: false, allowDead: false, allowDowned: false, canGeneratePawnRelations: true, mustBeCapableOfViolence: false, 1f, forceAddFreeWarmLayerIfNeeded: false, allowGay: true, allowFood: true, allowAddictions: true, parms.inhabitants));

            pawn.mindState.wantsToTradeWithColony = true;
            PawnComponentsUtility.AddAndRemoveDynamicComponents(pawn, actAsIfSpawned: true);
            pawn.trader.traderKind = traderKind;
            parms.points          -= pawn.kindDef.combatPower;
            return(pawn);
        }
 private static bool <RequestTraderOption> m__3(TraderKindDef x)
 {
     return(x.requestable);
 }
Ejemplo n.º 9
0
        private Pawn GenerateTrader(PawnGroupMakerParms parms, PawnGroupMaker groupMaker, TraderKindDef traderKind)
        {
            PawnKindDef           kind    = groupMaker.traders.RandomElementByWeight((PawnGenOption x) => x.selectionWeight).kind;
            Faction               faction = parms.faction;
            int                   tile    = parms.tile;
            PawnGenerationRequest request = new PawnGenerationRequest(kind, faction, PawnGenerationContext.NonPlayer, tile, false, false, false, false, true, false, 1f, false, true, true, parms.inhabitants, false, false, false, null, null, null, null, null, null, null);
            Pawn                  pawn    = PawnGenerator.GeneratePawn(request);

            pawn.mindState.wantsToTradeWithColony = true;
            PawnComponentsUtility.AddAndRemoveDynamicComponents(pawn, true);
            pawn.trader.traderKind = traderKind;
            parms.points          -= pawn.kindDef.combatPower;
            return(pawn);
        }
Ejemplo n.º 10
0
 public override void PostPostGeneratedForTrader(TraderKindDef trader, int forTile, Faction forFaction)
 {
     this.SetQuality(QualityUtility.GenerateQualityTraderItem(), ArtGenerationContext.Outsider);
 }
Ejemplo n.º 11
0
        protected override void GeneratePawns(PawnGroupMakerParms parms, PawnGroupMaker groupMaker, List <Pawn> outPawns, bool errorOnZeroResults = true)
        {
            if (!this.CanGenerateFrom(parms, groupMaker))
            {
                if (errorOnZeroResults)
                {
                    Log.Error("Cannot generate trader caravan for " + parms.faction + ".");
                }
                return;
            }
            if (!parms.faction.def.caravanTraderKinds.Any <TraderKindDef>())
            {
                Log.Error("Cannot generate trader caravan for " + parms.faction + " because it has no trader kinds.");
                return;
            }
            PawnGenOption pawnGenOption = groupMaker.traders.FirstOrDefault((PawnGenOption x) => !x.kind.trader);

            if (pawnGenOption != null)
            {
                Log.Error(string.Concat(new object[]
                {
                    "Cannot generate arriving trader caravan for ",
                    parms.faction,
                    " because there is a pawn kind (",
                    pawnGenOption.kind.LabelCap,
                    ") who is not a trader but is in a traders list."
                }));
                return;
            }
            PawnGenOption pawnGenOption2 = groupMaker.carriers.FirstOrDefault((PawnGenOption x) => !x.kind.RaceProps.packAnimal);

            if (pawnGenOption2 != null)
            {
                Log.Error(string.Concat(new object[]
                {
                    "Cannot generate arriving trader caravan for ",
                    parms.faction,
                    " because there is a pawn kind (",
                    pawnGenOption2.kind.LabelCap,
                    ") who is not a carrier but is in a carriers list."
                }));
                return;
            }
            TraderKindDef arg_18A_0;

            if (parms.traderKind != null)
            {
                arg_18A_0 = parms.traderKind;
            }
            else
            {
                arg_18A_0 = parms.faction.def.caravanTraderKinds.RandomElementByWeight((TraderKindDef traderDef) => traderDef.commonality);
            }
            TraderKindDef traderKindDef = arg_18A_0;
            Pawn          pawn          = this.GenerateTrader(parms, groupMaker, traderKindDef);

            outPawns.Add(pawn);
            ItemCollectionGeneratorParams parms2 = default(ItemCollectionGeneratorParams);

            parms2.traderDef     = traderKindDef;
            parms2.tile          = new int?(parms.tile);
            parms2.traderFaction = parms.faction;
            List <Thing> wares = ItemCollectionGeneratorDefOf.TraderStock.Worker.Generate(parms2).InRandomOrder(null).ToList <Thing>();

            foreach (Pawn current in this.GetSlavesAndAnimalsFromWares(parms, pawn, wares))
            {
                outPawns.Add(current);
            }
            this.GenerateCarriers(parms, groupMaker, pawn, wares, outPawns);
            this.GenerateGuards(parms, groupMaker, pawn, wares, outPawns);
        }
Ejemplo n.º 12
0
 public static bool CanTradeWith(this Pawn p, Faction faction, TraderKindDef traderKind = null)
 {
     return(p.CanTradeWith_NewTemp(faction, traderKind).Accepted);
 }
Ejemplo n.º 13
0
 public static AcceptanceReport CanTradeWith_NewTemp(this Pawn p, Faction faction, TraderKindDef traderKind = null)
 {
     if (p.skills.GetSkill(SkillDefOf.Social).TotallyDisabled)
     {
         return(AcceptanceReport.WasRejected);
     }
     if (faction != null)
     {
         if (faction.HostileTo(p.Faction))
         {
             return(AcceptanceReport.WasRejected);
         }
         if (traderKind == null || traderKind.permitRequiredForTrading == null)
         {
             return(AcceptanceReport.WasAccepted);
         }
         if (p.royalty == null || !p.royalty.HasPermit(traderKind.permitRequiredForTrading, faction))
         {
             return(new AcceptanceReport("MessageNeedRoyalTitleToCallWithShip".Translate(traderKind.TitleRequiredToTrade)));
         }
     }
     return(AcceptanceReport.WasAccepted);
 }
Ejemplo n.º 14
0
 private static float <TryExecuteWorker> m__1(TraderKindDef traderDef)
 {
     return(traderDef.CalculatedCommonality);
 }
Ejemplo n.º 15
0
 private static bool <TryExecuteWorker> m__0(TraderKindDef x)
 {
     return(x.orbital);
 }