示例#1
0
 private void SendCaravan()
 {
     caravanSent = true;
     CaravanFormingUtility.FormAndCreateCaravan(lord.ownedPawns.Concat(from x in downedPawns
                                                                       where JobGiver_PrepareCaravan_GatherDownedPawns.IsDownedPawnNearExitPoint(x, exitSpot)
                                                                       select x), lord.faction, base.Map.Tile, startingTile, destinationTile);
 }
示例#2
0
        private Pawn FindDownedPawn(Pawn pawn)
        {
            float       num         = 0f;
            Pawn        pawn2       = null;
            Lord        lord        = pawn.GetLord();
            List <Pawn> downedPawns = ((LordJob_FormAndSendCaravan)lord.LordJob).downedPawns;
            IntVec3     cell        = pawn.mindState.duty.focusSecond.Cell;

            for (int i = 0; i < downedPawns.Count; i++)
            {
                Pawn pawn3 = downedPawns[i];
                if (pawn3.Downed && pawn3 != pawn)
                {
                    if (!JobGiver_PrepareCaravan_GatherDownedPawns.IsDownedPawnNearExitPoint(pawn3, cell))
                    {
                        float num2 = (float)pawn.Position.DistanceToSquared(pawn3.Position);
                        if (pawn2 == null || num2 < num)
                        {
                            if (pawn.CanReserveAndReach(pawn3, PathEndMode.Touch, Danger.Deadly, 1, -1, null, false))
                            {
                                pawn2 = pawn3;
                                num   = num2;
                            }
                        }
                    }
                }
            }
            return(pawn2);
        }
 public override void LordToilTick()
 {
     if (Find.TickManager.TicksGame % 100 == 0)
     {
         bool        flag        = true;
         List <Pawn> downedPawns = ((LordJob_FormAndSendCaravan)lord.LordJob).downedPawns;
         for (int i = 0; i < downedPawns.Count; i++)
         {
             if (!JobGiver_PrepareCaravan_GatherDownedPawns.IsDownedPawnNearExitPoint(downedPawns[i], exitSpot))
             {
                 flag = false;
                 break;
             }
         }
         if (flag)
         {
             lord.ReceiveMemo("AllDownedPawnsGathered");
         }
     }
 }