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); }
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"); } } }