public virtual IEnumerable <string> ConfigErrors(TraderKindDef parentDef) { yield break; }
public override void PostPostGeneratedForTrader(TraderKindDef trader, int forTile, Faction forFaction) { base.PostPostGeneratedForTrader(trader, forTile, forFaction); this.hatcheeFaction = forFaction; }
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); }
public virtual void ResolveReferences(TraderKindDef trader) { this.trader = trader; }
private IEnumerable <string> < ConfigErrors > __BaseCallProxy0(TraderKindDef parentDef) { return(base.ConfigErrors(parentDef)); }
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); }
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); }
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); }
public override void PostPostGeneratedForTrader(TraderKindDef trader, int forTile, Faction forFaction) { this.SetQuality(QualityUtility.GenerateQualityTraderItem(), ArtGenerationContext.Outsider); }
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); }
public static bool CanTradeWith(this Pawn p, Faction faction, TraderKindDef traderKind = null) { return(p.CanTradeWith_NewTemp(faction, traderKind).Accepted); }
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); }
private static float <TryExecuteWorker> m__1(TraderKindDef traderDef) { return(traderDef.CalculatedCommonality); }
private static bool <TryExecuteWorker> m__0(TraderKindDef x) { return(x.orbital); }