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);
         }
     }
 }
示例#2
0
 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;
            }
        }