// Token: 0x060008B4 RID: 2228 RVA: 0x00046A24 File Offset: 0x00044E24 public override ThinkNode DeepCopy(bool resolve = true) { ThinkNode_JoinVoluntarilyJoinableLord thinkNode_JoinVoluntarilyJoinableLord = (ThinkNode_JoinVoluntarilyJoinableLord)base.DeepCopy(resolve); thinkNode_JoinVoluntarilyJoinableLord.dutyHook = this.dutyHook; return(thinkNode_JoinVoluntarilyJoinableLord); }
public static bool JoinVoluntarilyJoinableLord(ThinkNode_JoinVoluntarilyJoinableLord __instance, Pawn pawn) { Lord lord1 = pawn.GetLord(); Lord lord2 = (Lord)null; float num1 = 0.0f; if (lord1 != null) { if (!(lord1.LordJob is LordJob_VoluntarilyJoinable lordJob2)) { return(false); } lord2 = lord1; num1 = lordJob2.VoluntaryJoinPriorityFor(pawn); } Map map = pawn.Map; //changed if (map != null) //changed { List <Lord> lords = map.lordManager.lords; //changed for (int index = 0; index < lords.Count; ++index) { if (lords[index].LordJob is LordJob_VoluntarilyJoinable lordJob4 && lords[index].CurLordToil.VoluntaryJoinDutyHookFor(pawn) == __instance.dutyHook) { float num2 = lordJob4.VoluntaryJoinPriorityFor(pawn); if ((double)num2 > 0.0 && (lord2 == null || (double)num2 > (double)num1)) { lord2 = lords[index]; num1 = num2; } } } } if (lord2 == null || lord1 == lord2) { return(false); } lord1?.Notify_PawnLost(pawn, PawnLostCondition.LeftVoluntarily); lord2.AddPawn(pawn); return(false); }