internal static void _ResolveTrade(this Tradeable_Pawn t) { if (t.ActionToDo == TradeAction.PlayerSells) { List <Pawn> list = t.thingsColony.Take <Thing>(-t.countToDrop).Cast <Pawn>().ToList <Pawn>(); for (int index = 0; index < list.Count; ++index) { Pawn pawn = list[index]; pawn.PreTraded(TradeAction.PlayerSells, TradeSession.playerNegotiator, TradeSession.trader); TradeSession.trader.AddToStock((Thing)pawn); if (pawn.RaceProps.Humanlike) { foreach (Pawn colonistsAndPrisoner in Find.MapPawns.FreeColonistsAndPrisoners) { colonistsAndPrisoner.needs.mood.thoughts.memories.TryGainMemoryThought(ThoughtDefOf.KnowPrisonerSold, (Pawn)null); colonistsAndPrisoner.needs.mood.thoughts.memories.TryGainMemoryThought(ThoughtDefOfPsychology.KnowPrisonerSoldBleedingHeart, (Pawn)null); } } } } else { if (t.ActionToDo != TradeAction.PlayerBuys) { return; } List <Pawn> list = t.thingsTrader.Take <Thing>(t.countToDrop).Cast <Pawn>().ToList <Pawn>(); for (int index = 0; index < list.Count; ++index) { Pawn pawn = list[index]; TradeSession.trader.GiveSoldThingToBuyer((Thing)pawn, (Thing)pawn); pawn.PreTraded(TradeAction.PlayerBuys, TradeSession.playerNegotiator, TradeSession.trader); } } }
internal static void _ResolveTrade(this Tradeable_Pawn t) { if (t.ActionToDo == TradeAction.PlayerSells) { List <Pawn> list = t.thingsColony.Take(-t.countToDrop).Cast <Pawn>().ToList <Pawn>(); for (int i = 0; i < list.Count; i++) { Pawn pawn = list[i]; pawn.PreTraded(TradeAction.PlayerSells, TradeSession.playerNegotiator, TradeSession.trader); TradeSession.trader.AddToStock(pawn, TradeSession.playerNegotiator); if (pawn.RaceProps.Humanlike) { foreach (Pawn current in from x in PawnsFinder.AllMapsCaravansAndTravelingTransportPods where x.IsColonist || x.IsPrisonerOfColony select x) { current.needs.mood.thoughts.memories.TryGainMemoryThought(ThoughtDefOf.KnowPrisonerSold, null); current.needs.mood.thoughts.memories.TryGainMemoryThought(ThoughtDefOfPsychology.KnowPrisonerSoldBleedingHeart, null); } } } } else if (t.ActionToDo == TradeAction.PlayerBuys) { List <Pawn> list2 = t.thingsTrader.Take(t.countToDrop).Cast <Pawn>().ToList <Pawn>(); for (int j = 0; j < list2.Count; j++) { Pawn pawn2 = list2[j]; TradeSession.trader.GiveSoldThingToPlayer(pawn2, pawn2, TradeSession.playerNegotiator); pawn2.PreTraded(TradeAction.PlayerBuys, TradeSession.playerNegotiator, TradeSession.trader); } } }
static void Postfix(ref String __result, Tradeable_Pawn __instance) { Pawn p = (Pawn)__instance.AnyThing; if (!p.RaceProps.Animal) { return; } String e = AnimalImportantInfoUtil.AnimalImportantInfo(p); if (e.Length > 0) { __result = "[" + e + "] " + __result; } }