public override void DoAction(Transition trans) { LordToil_DefendPoint lordToil_DefendPoint = (LordToil_DefendPoint)trans.target; Pawn pawn = TraderCaravanUtility.FindTrader(lordToil_DefendPoint.lord); if (pawn != null) { lordToil_DefendPoint.SetDefendPoint(pawn.Position); return; } IEnumerable <Pawn> source = lordToil_DefendPoint.lord.ownedPawns.Where((Pawn x) => x.GetTraderCaravanRole() == TraderCaravanRole.Carrier); if (source.Any()) { lordToil_DefendPoint.SetDefendPoint(source.RandomElement().Position); } else { lordToil_DefendPoint.SetDefendPoint(lordToil_DefendPoint.lord.ownedPawns.RandomElement().Position); } }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_Travel lordToil_Travel = new LordToil_Travel(this.travelDest); stateGraph.StartingToil = lordToil_Travel; LordToil_DefendPoint lordToil_DefendPoint = new LordToil_DefendPoint(false); stateGraph.AddToil(lordToil_DefendPoint); Transition transition = new Transition(lordToil_Travel, lordToil_DefendPoint, false, true); transition.AddTrigger(new Trigger_PawnHarmed(1f, false, null)); transition.AddPreAction(new TransitionAction_SetDefendLocalGroup()); transition.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition, false); Transition transition2 = new Transition(lordToil_DefendPoint, lordToil_Travel, false, true); transition2.AddTrigger(new Trigger_TicksPassedWithoutHarm(1200)); transition2.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); stateGraph.AddTransition(transition2, false); return(stateGraph); }
public override void DoAction(Transition trans) { LordToil_DefendPoint lordToil_DefendPoint = (LordToil_DefendPoint)trans.target; Pawn pawn = TraderCaravanUtility.FindTrader(lordToil_DefendPoint.lord); if (pawn != null) { lordToil_DefendPoint.SetDefendPoint(pawn.Position); } else { IEnumerable <Pawn> source = from x in lordToil_DefendPoint.lord.ownedPawns where x.GetTraderCaravanRole() == TraderCaravanRole.Carrier select x; if (source.Any <Pawn>()) { lordToil_DefendPoint.SetDefendPoint(source.RandomElement <Pawn>().Position); } else { lordToil_DefendPoint.SetDefendPoint(lordToil_DefendPoint.lord.ownedPawns.RandomElement <Pawn>().Position); } } }
public override void DoAction(Transition trans) { LordToil_DefendPoint lordToil_DefendPoint = (LordToil_DefendPoint)trans.target; lordToil_DefendPoint.SetDefendPoint(lordToil_DefendPoint.lord.ownedPawns.RandomElement <Pawn>().Position); }