public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil lordToil = stateGraph.StartingToil = stateGraph.AttachSubgraph(new LordJob_Travel(this.chillSpot).CreateGraph()).StartingToil; LordToil_DefendPoint lordToil_DefendPoint = new LordToil_DefendPoint(this.chillSpot, 28f); stateGraph.AddToil(lordToil_DefendPoint); LordToil_TakeWoundedGuest lordToil_TakeWoundedGuest = new LordToil_TakeWoundedGuest(); stateGraph.AddToil(lordToil_TakeWoundedGuest); StateGraph stateGraph2 = new LordJob_TravelAndExit(IntVec3.Invalid).CreateGraph(); LordToil startingToil2 = stateGraph.AttachSubgraph(stateGraph2).StartingToil; LordToil target = stateGraph2.lordToils[1]; LordToil_ExitMap lordToil_ExitMap = new LordToil_ExitMap(LocomotionUrgency.Walk, true); stateGraph.AddToil(lordToil_ExitMap); Transition transition = new Transition(lordToil, startingToil2); transition.AddSources(lordToil_DefendPoint); transition.AddTrigger(new Trigger_PawnExperiencingDangerousTemperatures()); transition.AddPreAction(new TransitionAction_Message("MessageVisitorsDangerousTemperature".Translate(this.faction.def.pawnsPlural.CapitalizeFirst(), this.faction.Name))); transition.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); transition.AddPostAction(new TransitionAction_WakeAll()); stateGraph.AddTransition(transition); Transition transition2 = new Transition(lordToil, lordToil_ExitMap); transition2.AddSources(lordToil_DefendPoint, lordToil_TakeWoundedGuest); transition2.AddSources(stateGraph2.lordToils); transition2.AddTrigger(new Trigger_PawnCannotReachMapEdge()); transition2.AddPreAction(new TransitionAction_Message("MessageVisitorsTrappedLeaving".Translate(this.faction.def.pawnsPlural.CapitalizeFirst(), this.faction.Name))); stateGraph.AddTransition(transition2); Transition transition3 = new Transition(lordToil_ExitMap, startingToil2); transition3.AddTrigger(new Trigger_PawnCanReachMapEdge()); transition3.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); transition3.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition3); Transition transition4 = new Transition(lordToil, lordToil_DefendPoint); transition4.AddTrigger(new Trigger_Memo("TravelArrived")); stateGraph.AddTransition(transition4); Transition transition5 = new Transition(lordToil_DefendPoint, lordToil_TakeWoundedGuest); transition5.AddTrigger(new Trigger_WoundedGuestPresent()); transition5.AddPreAction(new TransitionAction_Message("MessageVisitorsTakingWounded".Translate(this.faction.def.pawnsPlural.CapitalizeFirst(), this.faction.Name))); stateGraph.AddTransition(transition5); Transition transition6 = new Transition(lordToil_DefendPoint, target); transition6.AddSources(lordToil_TakeWoundedGuest, lordToil); transition6.AddTrigger(new Trigger_BecameColonyEnemy()); transition6.AddPreAction(new TransitionAction_SetDefendLocalGroup()); transition6.AddPostAction(new TransitionAction_WakeAll()); transition6.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition6); Transition transition7 = new Transition(lordToil_DefendPoint, startingToil2); transition7.AddTrigger(new Trigger_TicksPassed(Rand.Range(8000, 22000))); transition7.AddPreAction(new TransitionAction_Message("VisitorsLeaving".Translate(this.faction.Name))); transition7.AddPostAction(new TransitionAction_WakeAll()); transition7.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); stateGraph.AddTransition(transition7); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil lordToil = stateGraph.StartingToil = stateGraph.AttachSubgraph(new LordJob_Travel(chillSpot).CreateGraph()).StartingToil; LordToil_DefendPoint lordToil_DefendPoint = new LordToil_DefendPoint(chillSpot); stateGraph.AddToil(lordToil_DefendPoint); LordToil_TakeWoundedGuest lordToil_TakeWoundedGuest = new LordToil_TakeWoundedGuest(); stateGraph.AddToil(lordToil_TakeWoundedGuest); StateGraph stateGraph2 = new LordJob_TravelAndExit(IntVec3.Invalid).CreateGraph(); LordToil startingToil2 = stateGraph.AttachSubgraph(stateGraph2).StartingToil; LordToil target = stateGraph2.lordToils[1]; LordToil_ExitMap lordToil_ExitMap = new LordToil_ExitMap(LocomotionUrgency.Walk, canDig: true); stateGraph.AddToil(lordToil_ExitMap); // Transition transition = new Transition(lordToil, startingToil2); transition.AddSources(lordToil_DefendPoint); transition.AddTrigger(new Trigger_PawnExperiencingDangerousTemperatures()); transition.AddPreAction(new TransitionAction_Message("MessageVisitorsDangerousTemperature".Translate(faction.def.pawnsPlural.CapitalizeFirst(), faction.Name))); transition.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); transition.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition); // Transition transition2 = new Transition(lordToil, lordToil_ExitMap); transition2.AddSources(lordToil_DefendPoint, lordToil_TakeWoundedGuest); transition2.AddSources(stateGraph2.lordToils); transition2.AddTrigger(new Trigger_PawnCannotReachMapEdge()); transition2.AddPreAction(new TransitionAction_Message("MessageVisitorsTrappedLeaving".Translate(faction.def.pawnsPlural.CapitalizeFirst(), faction.Name))); stateGraph.AddTransition(transition2); // Transition transition3 = new Transition(lordToil_ExitMap, startingToil2); transition3.AddTrigger(new Trigger_PawnCanReachMapEdge()); transition3.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); transition3.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition3); // Transition transition4 = new Transition(lordToil, lordToil_DefendPoint); transition4.AddTrigger(new Trigger_Memo("TravelArrived")); stateGraph.AddTransition(transition4); // Transition transition5 = new Transition(lordToil_DefendPoint, lordToil_TakeWoundedGuest); transition5.AddTrigger(new Trigger_WoundedGuestPresent()); transition5.AddPreAction(new TransitionAction_Message("MessageVisitorsTakingWounded".Translate(faction.def.pawnsPlural.CapitalizeFirst(), faction.Name))); stateGraph.AddTransition(transition5); //? Transition transition6 = new Transition(lordToil_DefendPoint, target); transition6.AddSources(lordToil_TakeWoundedGuest, lordToil); transition6.AddTrigger(new Trigger_BecamePlayerEnemy()); transition6.AddPreAction(new TransitionAction_SetDefendLocalGroup()); transition6.AddPostAction(new TransitionAction_WakeAll()); transition6.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition6); //Leaving! Transition transition7 = new Transition(lordToil_DefendPoint, startingToil2); transition7.AddTrigger(new Trigger_TickCondition(() => Find.World.GetComponent <WorldComponent_FactionsTracker>().joinedFactionDef != null, 250)); //transition7.AddTrigger(new Trigger_Memo("GetOutOfDodge")); //Trigger_Custom((TriggerSignal x) => //)); //transition7.AddTrigger(new Trigger_TicksPassed((!DebugSettings.instantVisitorsGift) ? Rand.Range(8000, 22000) : 0)); transition7.AddPreAction(new TransitionAction_Message("VisitorsLeaving".Translate(faction.Name))); transition7.AddPreAction(new TransitionAction_CheckGiveGift()); transition7.AddPostAction(new TransitionAction_WakeAll()); transition7.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); stateGraph.AddTransition(transition7); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil startingToil = stateGraph.AttachSubgraph(new LordJob_Travel(this.fallbackLocation).CreateGraph()).StartingToil; LordToil_HuntEnemies lordToil_HuntEnemies = new LordToil_HuntEnemies(this.fallbackLocation); stateGraph.AddToil(lordToil_HuntEnemies); StateGraph stateGraph2 = new LordJob_Travel(IntVec3.Invalid).CreateGraph(); LordToil startingToil2 = stateGraph.AttachSubgraph(stateGraph2).StartingToil; LordToil_ExitMap lordToil_ExitMap = new LordToil_ExitMap(LocomotionUrgency.None, false); stateGraph.AddToil(lordToil_ExitMap); LordToil_ExitMap lordToil_ExitMap2 = new LordToil_ExitMap(LocomotionUrgency.Jog, true); stateGraph.AddToil(lordToil_ExitMap2); Transition transition = new Transition(startingToil, startingToil2); transition.AddSource(lordToil_HuntEnemies); transition.AddPreAction(new TransitionAction_Message("MessageVisitorsDangerousTemperature".Translate(new object[] { this.faction.def.pawnsPlural.CapitalizeFirst(), this.faction.Name }))); transition.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); transition.AddTrigger(new Trigger_PawnExperiencingDangerousTemperatures()); stateGraph.AddTransition(transition); Transition transition2 = new Transition(startingToil, lordToil_ExitMap2); transition2.AddSource(lordToil_HuntEnemies); transition2.AddSource(lordToil_ExitMap); transition2.AddSources(stateGraph2.lordToils); transition2.AddPreAction(new TransitionAction_Message("MessageVisitorsTrappedLeaving".Translate(new object[] { this.faction.def.pawnsPlural.CapitalizeFirst(), this.faction.Name }))); transition2.AddTrigger(new Trigger_PawnCannotReachMapEdge()); stateGraph.AddTransition(transition2); Transition transition3 = new Transition(lordToil_ExitMap2, startingToil2); transition3.AddTrigger(new Trigger_PawnCanReachMapEdge()); transition3.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); stateGraph.AddTransition(transition3); Transition transition4 = new Transition(startingToil, lordToil_HuntEnemies); transition4.AddTrigger(new Trigger_Memo("TravelArrived")); stateGraph.AddTransition(transition4); Transition transition5 = new Transition(lordToil_HuntEnemies, startingToil2); transition5.AddPreAction(new TransitionAction_Message("MessageFriendlyFightersLeaving".Translate(new object[] { this.faction.def.pawnsPlural.CapitalizeFirst(), this.faction.Name }))); transition5.AddTrigger(new Trigger_TicksPassed(25000)); transition5.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); stateGraph.AddTransition(transition5); Transition transition6 = new Transition(startingToil2, lordToil_ExitMap); transition6.AddTrigger(new Trigger_Memo("TravelArrived")); stateGraph.AddTransition(transition6); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); gatherItems = new LordToil_PrepareCaravan_GatherCargo(meetingPoint); stateGraph.AddToil(gatherItems); gatherItems_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(gatherItems_pause); gatherSlaves = new LordToil_PrepareCaravan_GatherSlavesVehicle(meetingPoint); stateGraph.AddToil(gatherSlaves); gatherSlaves_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(gatherSlaves_pause); gatherDownedPawns = new LordToil_PrepareCaravan_GatherDownedPawnsVehicle(meetingPoint, exitPoint); stateGraph.AddToil(gatherDownedPawns); gatherDownedPawns_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(gatherDownedPawns_pause); ResolveSeatingAssignments(); boardVehicle = new LordToil_PrepareCaravan_BoardVehicles(exitPoint); stateGraph.AddToil(boardVehicle); boardVehicle_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(boardVehicle_pause); //LordToil_PrepareCaravan_Wait lordToil_PrepareCaravan_Wait = new LordToil_PrepareCaravan_Wait(meetingPoint); //stateGraph.AddToil(lordToil_PrepareCaravan_Wait); //LordToil_PrepareCaravan_Pause lordToil_PrepareCaravan_Pause = new LordToil_PrepareCaravan_Pause(); //stateGraph.AddToil(lordToil_PrepareCaravan_Pause); leave = new LordToil_PrepareCaravan_LeaveWithVehicles(exitPoint); stateGraph.AddToil(leave); leave_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(leave_pause); LordToil_End lordToil_End = new LordToil_End(); stateGraph.AddToil(lordToil_End); Transition transition2 = new Transition(gatherItems, gatherSlaves, false, true); //gatherDownedPawns transition2.AddTrigger(new Trigger_Memo("AllItemsGathered")); transition2.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition2, false); Transition transition3 = new Transition(gatherDownedPawns, gatherSlaves, false, true); transition3.AddTrigger(new Trigger_Memo("AllDownedPawnsGathered")); stateGraph.AddTransition(transition3, false); Transition transition4 = new Transition(gatherSlaves, boardVehicle, false, true); //lordToil_PrepareCaravan_Wait transition4.AddTrigger(new Trigger_Memo("AllSlavesGathered")); transition4.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition4, false); //Transition transition5 = new Transition(lordToil_PrepareCaravan_Wait, boardVehicle, false, true); //transition5.AddTrigger(new Trigger_NoPawnsVeryTiredAndSleeping(0f)); //transition5.AddPostAction(new TransitionAction_WakeAll()); //stateGraph.AddTransition(transition5, false); Transition transitionB = new Transition(boardVehicle, leave, false, true); transitionB.AddTrigger(new Trigger_Memo("AllPawnsOnboard")); transitionB.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transitionB, false); Transition transition6 = new Transition(leave, lordToil_End, false, true); transition6.AddTrigger(new Trigger_Memo("ReadyToExitMap")); transition6.AddPreAction(new TransitionAction_Custom(new Action(SendCaravan))); stateGraph.AddTransition(transition6, false); Transition transition9 = PauseTransition(gatherItems, gatherItems_pause); stateGraph.AddTransition(transition9, false); Transition transition10 = UnpauseTransition(gatherItems_pause, gatherItems); stateGraph.AddTransition(transition10, false); Transition transition11 = PauseTransition(gatherDownedPawns, gatherDownedPawns_pause); stateGraph.AddTransition(transition11, false); Transition transition12 = UnpauseTransition(gatherDownedPawns_pause, gatherDownedPawns); stateGraph.AddTransition(transition12, false); Transition transition13 = PauseTransition(gatherSlaves, gatherSlaves_pause); stateGraph.AddTransition(transition13, false); Transition transition14 = UnpauseTransition(gatherSlaves_pause, gatherSlaves); stateGraph.AddTransition(transition14, false); Transition transition15 = PauseTransition(boardVehicle, boardVehicle_pause); stateGraph.AddTransition(transition15, false); Transition transition16 = UnpauseTransition(boardVehicle_pause, boardVehicle); stateGraph.AddTransition(transition16, false); Transition transition17 = PauseTransition(leave, leave_pause); stateGraph.AddTransition(transition17, false); Transition transition18 = UnpauseTransition(leave_pause, leave); stateGraph.AddTransition(transition18, false); //Transition transition19 = PauseTransition(lordToil_PrepareCaravan_Wait, lordToil_PrepareCaravan_Pause); //stateGraph.AddTransition(transition19, false); //Transition transition20 = UnpauseTransition(lordToil_PrepareCaravan_Pause, lordToil_PrepareCaravan_Wait); //stateGraph.AddTransition(transition20, false); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_Travel lordToil_Travel = (LordToil_Travel)(stateGraph.StartingToil = new LordToil_Travel(chillSpot)); LordToil_DefendTraderCaravan lordToil_DefendTraderCaravan = new LordToil_DefendTraderCaravan(); stateGraph.AddToil(lordToil_DefendTraderCaravan); LordToil_DefendTraderCaravan lordToil_DefendTraderCaravan2 = new LordToil_DefendTraderCaravan(chillSpot); stateGraph.AddToil(lordToil_DefendTraderCaravan2); LordToil_ExitMapAndEscortCarriers lordToil_ExitMapAndEscortCarriers = new LordToil_ExitMapAndEscortCarriers(); stateGraph.AddToil(lordToil_ExitMapAndEscortCarriers); LordToil_ExitMap lordToil_ExitMap = new LordToil_ExitMap(); stateGraph.AddToil(lordToil_ExitMap); LordToil_ExitMap lordToil_ExitMap2 = new LordToil_ExitMap(LocomotionUrgency.Walk, canDig: true); stateGraph.AddToil(lordToil_ExitMap2); LordToil_ExitMapTraderFighting lordToil_ExitMapTraderFighting = new LordToil_ExitMapTraderFighting(); stateGraph.AddToil(lordToil_ExitMapTraderFighting); Transition transition = new Transition(lordToil_Travel, lordToil_ExitMapAndEscortCarriers); transition.AddSources(lordToil_DefendTraderCaravan, lordToil_DefendTraderCaravan2); transition.AddPreAction(new TransitionAction_Message("MessageVisitorsDangerousTemperature".Translate(faction.def.pawnsPlural.CapitalizeFirst(), faction.Name))); transition.AddPostAction(new TransitionAction_EndAllJobs()); transition.AddTrigger(new Trigger_PawnExperiencingDangerousTemperatures()); stateGraph.AddTransition(transition); Transition transition2 = new Transition(lordToil_Travel, lordToil_ExitMap2); transition2.AddSources(lordToil_DefendTraderCaravan, lordToil_DefendTraderCaravan2, lordToil_ExitMapAndEscortCarriers, lordToil_ExitMap, lordToil_ExitMapTraderFighting); transition2.AddTrigger(new Trigger_PawnCannotReachMapEdge()); transition2.AddPostAction(new TransitionAction_Message("MessageVisitorsTrappedLeaving".Translate(faction.def.pawnsPlural.CapitalizeFirst(), faction.Name))); transition2.AddPostAction(new TransitionAction_WakeAll()); transition2.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition2); Transition transition3 = new Transition(lordToil_ExitMap2, lordToil_ExitMapTraderFighting); transition3.AddTrigger(new Trigger_PawnCanReachMapEdge()); transition3.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition3); Transition transition4 = new Transition(lordToil_Travel, lordToil_ExitMapTraderFighting); transition4.AddSources(lordToil_DefendTraderCaravan, lordToil_DefendTraderCaravan2, lordToil_ExitMapAndEscortCarriers, lordToil_ExitMap); transition4.AddTrigger(new Trigger_FractionPawnsLost(0.2f)); transition4.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition4); Transition transition5 = new Transition(lordToil_Travel, lordToil_DefendTraderCaravan); transition5.AddTrigger(new Trigger_PawnHarmed()); transition5.AddPreAction(new TransitionAction_SetDefendTrader()); transition5.AddPostAction(new TransitionAction_WakeAll()); transition5.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition5); Transition transition6 = new Transition(lordToil_DefendTraderCaravan, lordToil_Travel); transition6.AddTrigger(new Trigger_TicksPassedWithoutHarm(1200)); stateGraph.AddTransition(transition6); Transition transition7 = new Transition(lordToil_Travel, lordToil_DefendTraderCaravan2); transition7.AddTrigger(new Trigger_Memo("TravelArrived")); stateGraph.AddTransition(transition7); Transition transition8 = new Transition(lordToil_DefendTraderCaravan2, lordToil_ExitMapAndEscortCarriers); transition8.AddTrigger(new Trigger_TicksPassed((!DebugSettings.instantVisitorsGift) ? Rand.Range(27000, 45000) : 0)); transition8.AddPreAction(new TransitionAction_CheckGiveGift()); transition8.AddPreAction(new TransitionAction_Message("MessageTraderCaravanLeaving".Translate(faction.Name))); transition8.AddPostAction(new TransitionAction_WakeAll()); stateGraph.AddTransition(transition8); Transition transition9 = new Transition(lordToil_ExitMapAndEscortCarriers, lordToil_ExitMapAndEscortCarriers, canMoveToSameState: true); transition9.canMoveToSameState = true; transition9.AddTrigger(new Trigger_PawnLost()); transition9.AddTrigger(new Trigger_TickCondition(() => LordToil_ExitMapAndEscortCarriers.IsAnyDefendingPosition(lord.ownedPawns) && !GenHostility.AnyHostileActiveThreatTo(base.Map, faction, countDormantPawnsAsHostile: true), 60)); stateGraph.AddTransition(transition9); Transition transition10 = new Transition(lordToil_ExitMapAndEscortCarriers, lordToil_ExitMap); transition10.AddTrigger(new Trigger_TicksPassed(60000)); transition10.AddPostAction(new TransitionAction_WakeAll()); stateGraph.AddTransition(transition10); Transition transition11 = new Transition(lordToil_DefendTraderCaravan2, lordToil_ExitMapAndEscortCarriers); transition11.AddSources(lordToil_Travel, lordToil_DefendTraderCaravan); transition11.AddTrigger(new Trigger_ImportantTraderCaravanPeopleLost()); transition11.AddTrigger(new Trigger_BecamePlayerEnemy()); transition11.AddPostAction(new TransitionAction_WakeAll()); transition11.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition11); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); this.gatherAnimals = new LordToil_PrepareCaravan_GatherAnimals(this.meetingPoint); stateGraph.AddToil(this.gatherAnimals); this.gatherAnimals_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(this.gatherAnimals_pause); this.gatherItems = new LordToil_PrepareCaravan_GatherShip(this.meetingPoint); stateGraph.AddToil(this.gatherItems); this.gatherItems_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(this.gatherItems_pause); this.gatherSlaves = new LordToil_PrepareCaravan_GatherSlavesShip(this.meetingPoint); stateGraph.AddToil(this.gatherSlaves); this.gatherSlaves_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(this.gatherSlaves_pause); this.gatherDownedPawns = new LordToil_PrepareCaravan_GatherDownedPawnsShip(this.meetingPoint, this.exitPoint); stateGraph.AddToil(this.gatherDownedPawns); this.gatherDownedPawns_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(this.gatherDownedPawns_pause); this.AssignSeats(); this.boardShip = new LordToil_PrepareCaravan_BoardShip(this.exitPoint); stateGraph.AddToil(this.boardShip); this.boardShip_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(this.boardShip_pause); LordToil_PrepareCaravan_Wait lordToil_PrepareCaravan_Wait = new LordToil_PrepareCaravan_Wait(this.meetingPoint); stateGraph.AddToil(lordToil_PrepareCaravan_Wait); LordToil_PrepareCaravan_Pause lordToil_PrepareCaravan_Pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(lordToil_PrepareCaravan_Pause); this.leave = new LordToil_PrepareCaravan_LeaveShip(this.exitPoint); stateGraph.AddToil(this.leave); this.leave_pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(this.leave_pause); LordToil_End lordToil_End = new LordToil_End(); stateGraph.AddToil(lordToil_End); Transition transition = new Transition(this.gatherAnimals, this.gatherItems, false, true); transition.AddTrigger(new Trigger_Memo("AllAnimalsGathered")); stateGraph.AddTransition(transition, false); Transition transition2 = new Transition(this.gatherItems, this.gatherDownedPawns, false, true); transition2.AddTrigger(new Trigger_Memo("AllItemsGathered")); transition2.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition2, false); Transition transition3 = new Transition(this.gatherDownedPawns, this.gatherSlaves, false, true); transition3.AddTrigger(new Trigger_Memo("AllDownedPawnsGathered")); stateGraph.AddTransition(transition3, false); Transition transition4 = new Transition(this.gatherSlaves, lordToil_PrepareCaravan_Wait, false, true); transition4.AddTrigger(new Trigger_Memo("AllSlavesGathered")); transition4.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition4, false); Transition transition5 = new Transition(lordToil_PrepareCaravan_Wait, this.boardShip, false, true); transition5.AddTrigger(new Trigger_NoPawnsVeryTiredAndSleeping(0f)); transition5.AddPostAction(new TransitionAction_WakeAll()); stateGraph.AddTransition(transition5, false); Transition transitionB = new Transition(this.boardShip, this.leave, false, true); transitionB.AddTrigger(new Trigger_Memo("AllPawnsOnboard")); transitionB.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transitionB, false); Transition transition6 = new Transition(this.leave, lordToil_End, false, true); transition6.AddTrigger(new Trigger_Memo("ReadyToExitMap")); transition6.AddPreAction(new TransitionAction_Custom(new Action(this.SendCaravan))); stateGraph.AddTransition(transition6, false); Transition transition7 = this.PauseTransition(this.gatherAnimals, this.gatherAnimals_pause); stateGraph.AddTransition(transition7, false); Transition transition8 = this.UnpauseTransition(this.gatherAnimals_pause, this.gatherAnimals); stateGraph.AddTransition(transition8, false); Transition transition9 = this.PauseTransition(this.gatherItems, this.gatherItems_pause); stateGraph.AddTransition(transition9, false); Transition transition10 = this.UnpauseTransition(this.gatherItems_pause, this.gatherItems); stateGraph.AddTransition(transition10, false); Transition transition11 = this.PauseTransition(this.gatherDownedPawns, this.gatherDownedPawns_pause); stateGraph.AddTransition(transition11, false); Transition transition12 = this.UnpauseTransition(this.gatherDownedPawns_pause, this.gatherDownedPawns); stateGraph.AddTransition(transition12, false); Transition transition13 = this.PauseTransition(this.gatherSlaves, this.gatherSlaves_pause); stateGraph.AddTransition(transition13, false); Transition transition14 = this.UnpauseTransition(this.gatherSlaves_pause, this.gatherSlaves); stateGraph.AddTransition(transition14, false); Transition transition15 = this.PauseTransition(this.boardShip, this.boardShip_pause); stateGraph.AddTransition(transition15, false); Transition transition16 = this.UnpauseTransition(this.boardShip_pause, this.boardShip); stateGraph.AddTransition(transition16, false); Transition transition17 = this.PauseTransition(this.leave, this.leave_pause); stateGraph.AddTransition(transition17, false); Transition transition18 = this.UnpauseTransition(this.leave_pause, this.leave); stateGraph.AddTransition(transition18, false); Transition transition19 = this.PauseTransition(lordToil_PrepareCaravan_Wait, lordToil_PrepareCaravan_Pause); stateGraph.AddTransition(transition19, false); Transition transition20 = this.UnpauseTransition(lordToil_PrepareCaravan_Pause, lordToil_PrepareCaravan_Wait); stateGraph.AddTransition(transition20, false); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil lordToil = null; if (sappers) { lordToil = new LordToil_AssaultColonySappers(); if (useAvoidGridSmart) { lordToil.useAvoidGrid = true; } stateGraph.AddToil(lordToil); Transition transition = new Transition(lordToil, lordToil, canMoveToSameState: true); transition.AddTrigger(new Trigger_PawnLost()); stateGraph.AddTransition(transition); Transition transition2 = new Transition(lordToil, lordToil, canMoveToSameState: true, updateDutiesIfMovedToSameState: false); transition2.AddTrigger(new Trigger_PawnHarmed()); transition2.AddPostAction(new TransitionAction_CheckForJobOverride()); stateGraph.AddTransition(transition2); } LordToil lordToil2 = new LordToil_AssaultColony(); if (useAvoidGridSmart) { lordToil2.useAvoidGrid = true; } stateGraph.AddToil(lordToil2); LordToil_ExitMap lordToil_ExitMap = new LordToil_ExitMap(LocomotionUrgency.Jog); lordToil_ExitMap.useAvoidGrid = true; stateGraph.AddToil(lordToil_ExitMap); if (sappers) { Transition transition3 = new Transition(lordToil, lordToil2); transition3.AddTrigger(new Trigger_NoFightingSappers()); stateGraph.AddTransition(transition3); } if (assaulterFaction.def.humanlikeFaction) { if (canTimeoutOrFlee) { Transition transition4 = new Transition(lordToil2, lordToil_ExitMap); if (lordToil != null) { transition4.AddSource(lordToil); } transition4.AddTrigger(new Trigger_TicksPassed((!sappers) ? AssaultTimeBeforeGiveUp.RandomInRange : SapTimeBeforeGiveUp.RandomInRange)); transition4.AddPreAction(new TransitionAction_Message("MessageRaidersGivenUpLeaving".Translate(assaulterFaction.def.pawnsPlural.CapitalizeFirst(), assaulterFaction.Name))); stateGraph.AddTransition(transition4); Transition transition5 = new Transition(lordToil2, lordToil_ExitMap); if (lordToil != null) { transition5.AddSource(lordToil); } float randomInRange = new FloatRange(0.25f, 0.35f).RandomInRange; transition5.AddTrigger(new Trigger_FractionColonyDamageTaken(randomInRange, 900f)); transition5.AddPreAction(new TransitionAction_Message("MessageRaidersSatisfiedLeaving".Translate(assaulterFaction.def.pawnsPlural.CapitalizeFirst(), assaulterFaction.Name))); stateGraph.AddTransition(transition5); } if (canKidnap) { LordToil startingToil = stateGraph.AttachSubgraph(new LordJob_Kidnap().CreateGraph()).StartingToil; Transition transition6 = new Transition(lordToil2, startingToil); if (lordToil != null) { transition6.AddSource(lordToil); } transition6.AddPreAction(new TransitionAction_Message("MessageRaidersKidnapping".Translate(assaulterFaction.def.pawnsPlural.CapitalizeFirst(), assaulterFaction.Name))); transition6.AddTrigger(new Trigger_KidnapVictimPresent()); stateGraph.AddTransition(transition6); } if (canSteal) { LordToil startingToil2 = stateGraph.AttachSubgraph(new LordJob_Steal().CreateGraph()).StartingToil; Transition transition7 = new Transition(lordToil2, startingToil2); if (lordToil != null) { transition7.AddSource(lordToil); } transition7.AddPreAction(new TransitionAction_Message("MessageRaidersStealing".Translate(assaulterFaction.def.pawnsPlural.CapitalizeFirst(), assaulterFaction.Name))); transition7.AddTrigger(new Trigger_HighValueThingsAround()); stateGraph.AddTransition(transition7); } } Transition transition8 = new Transition(lordToil2, lordToil_ExitMap); if (lordToil != null) { transition8.AddSource(lordToil); } transition8.AddTrigger(new Trigger_BecameNonHostileToPlayer()); transition8.AddPreAction(new TransitionAction_Message("MessageRaidersLeaving".Translate(assaulterFaction.def.pawnsPlural.CapitalizeFirst(), assaulterFaction.Name))); stateGraph.AddTransition(transition8); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_Party lordToil_Party = new LordToil_Party(this.spot, 2200); stateGraph.AddToil(lordToil_Party); LordToil_MarriageCeremony lordToil_MarriageCeremony = new LordToil_MarriageCeremony(this.firstPawn, this.secondPawn, this.spot); stateGraph.AddToil(lordToil_MarriageCeremony); LordToil_Party lordToil_Party2 = new LordToil_Party(this.spot, 2200); stateGraph.AddToil(lordToil_Party2); LordToil_End lordToil_End = new LordToil_End(); stateGraph.AddToil(lordToil_End); Transition transition = new Transition(lordToil_Party, lordToil_MarriageCeremony, false, true); transition.AddTrigger(new Trigger_TickCondition(() => this.lord.ticksInToil >= 5000 && this.AreFiancesInPartyArea(), 1)); transition.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyStarts".Translate(new object[] { this.firstPawn.LabelShort, this.secondPawn.LabelShort }), MessageTypeDefOf.PositiveEvent, this.firstPawn, null, 1f)); stateGraph.AddTransition(transition, false); Transition transition2 = new Transition(lordToil_MarriageCeremony, lordToil_Party2, false, true); transition2.AddTrigger(new Trigger_TickCondition(() => this.firstPawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, this.secondPawn), 1)); transition2.AddPreAction(new TransitionAction_Message("MessageNewlyMarried".Translate(new object[] { this.firstPawn.LabelShort, this.secondPawn.LabelShort }), MessageTypeDefOf.PositiveEvent, new TargetInfo(this.spot, base.Map, false), null, 1f)); transition2.AddPreAction(new TransitionAction_Custom(delegate() { this.AddAttendedWeddingThoughts(); })); stateGraph.AddTransition(transition2, false); Transition transition3 = new Transition(lordToil_Party2, lordToil_End, false, true); transition3.AddTrigger(new Trigger_TickCondition(() => this.ShouldAfterPartyBeCalledOff(), 1)); transition3.AddTrigger(new Trigger_PawnKilled()); transition3.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyCalledOff".Translate(new object[] { this.firstPawn.LabelShort, this.secondPawn.LabelShort }), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false), null, 1f)); stateGraph.AddTransition(transition3, false); this.afterPartyTimeoutTrigger = new Trigger_TicksPassed(7500); Transition transition4 = new Transition(lordToil_Party2, lordToil_End, false, true); transition4.AddTrigger(this.afterPartyTimeoutTrigger); transition4.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyAfterPartyFinished".Translate(new object[] { this.firstPawn.LabelShort, this.secondPawn.LabelShort }), MessageTypeDefOf.PositiveEvent, this.firstPawn, null, 1f)); stateGraph.AddTransition(transition4, false); Transition transition5 = new Transition(lordToil_MarriageCeremony, lordToil_End, false, true); transition5.AddSource(lordToil_Party); transition5.AddTrigger(new Trigger_TickCondition(() => this.lord.ticksInToil >= 120000 && (this.firstPawn.Drafted || this.secondPawn.Drafted || !this.firstPawn.Position.InHorDistOf(this.spot, 4f) || !this.secondPawn.Position.InHorDistOf(this.spot, 4f)), 1)); transition5.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyCalledOff".Translate(new object[] { this.firstPawn.LabelShort, this.secondPawn.LabelShort }), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false), null, 1f)); stateGraph.AddTransition(transition5, false); Transition transition6 = new Transition(lordToil_MarriageCeremony, lordToil_End, false, true); transition6.AddSource(lordToil_Party); transition6.AddTrigger(new Trigger_TickCondition(() => this.ShouldCeremonyBeCalledOff(), 1)); transition6.AddTrigger(new Trigger_PawnKilled()); transition6.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyCalledOff".Translate(new object[] { this.firstPawn.LabelShort, this.secondPawn.LabelShort }), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false), null, 1f)); stateGraph.AddTransition(transition6, false); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_PrepareCaravan_GatherAnimals lordToil_PrepareCaravan_GatherAnimals = new LordToil_PrepareCaravan_GatherAnimals(this.meetingPoint); stateGraph.AddToil(lordToil_PrepareCaravan_GatherAnimals); LordToil_PrepareCaravan_Pause lordToil_PrepareCaravan_Pause = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(lordToil_PrepareCaravan_Pause); this.gatherItems = new LordToil_PrepareCaravan_GatherItems(this.meetingPoint); stateGraph.AddToil(this.gatherItems); LordToil_PrepareCaravan_Pause lordToil_PrepareCaravan_Pause2 = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(lordToil_PrepareCaravan_Pause2); LordToil_PrepareCaravan_GatherSlaves lordToil_PrepareCaravan_GatherSlaves = new LordToil_PrepareCaravan_GatherSlaves(this.meetingPoint); stateGraph.AddToil(lordToil_PrepareCaravan_GatherSlaves); LordToil_PrepareCaravan_Pause lordToil_PrepareCaravan_Pause3 = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(lordToil_PrepareCaravan_Pause3); LordToil_PrepareCaravan_Wait lordToil_PrepareCaravan_Wait = new LordToil_PrepareCaravan_Wait(this.meetingPoint); stateGraph.AddToil(lordToil_PrepareCaravan_Wait); LordToil_PrepareCaravan_Pause lordToil_PrepareCaravan_Pause4 = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(lordToil_PrepareCaravan_Pause4); LordToil_PrepareCaravan_Leave lordToil_PrepareCaravan_Leave = new LordToil_PrepareCaravan_Leave(this.exitSpot); stateGraph.AddToil(lordToil_PrepareCaravan_Leave); LordToil_PrepareCaravan_Pause lordToil_PrepareCaravan_Pause5 = new LordToil_PrepareCaravan_Pause(); stateGraph.AddToil(lordToil_PrepareCaravan_Pause5); LordToil_End lordToil_End = new LordToil_End(); stateGraph.AddToil(lordToil_End); Transition transition = new Transition(lordToil_PrepareCaravan_GatherAnimals, lordToil_End); transition.AddSource(this.gatherItems); transition.AddSource(lordToil_PrepareCaravan_GatherSlaves); transition.AddSource(lordToil_PrepareCaravan_Wait); transition.AddSource(lordToil_PrepareCaravan_Leave); transition.AddSource(lordToil_PrepareCaravan_Pause); transition.AddSource(lordToil_PrepareCaravan_Pause2); transition.AddSource(lordToil_PrepareCaravan_Pause3); transition.AddSource(lordToil_PrepareCaravan_Pause4); transition.AddSource(lordToil_PrepareCaravan_Pause5); transition.AddTrigger(new Trigger_Custom((TriggerSignal x) => x.type == TriggerSignalType.PawnLost && !this.caravanSent)); transition.AddPreAction(new TransitionAction_Message("MessageFailedToSendCaravanBecausePawnLost".Translate(), MessageTypeDefOf.NegativeEvent)); transition.AddPostAction(new TransitionAction_Custom((Action) delegate { CaravanFormingUtility.Notify_FormAndSendCaravanLordFailed(base.lord); })); stateGraph.AddTransition(transition); Transition transition2 = new Transition(lordToil_PrepareCaravan_GatherAnimals, this.gatherItems); transition2.AddTrigger(new Trigger_Memo("AllAnimalsGathered")); stateGraph.AddTransition(transition2); Transition transition3 = new Transition(this.gatherItems, lordToil_PrepareCaravan_GatherSlaves); transition3.AddTrigger(new Trigger_Memo("AllItemsGathered")); stateGraph.AddTransition(transition3); Transition transition4 = new Transition(lordToil_PrepareCaravan_GatherSlaves, lordToil_PrepareCaravan_Wait); transition4.AddTrigger(new Trigger_Memo("AllSlavesGathered")); stateGraph.AddTransition(transition4); Transition transition5 = new Transition(lordToil_PrepareCaravan_Wait, lordToil_PrepareCaravan_Leave); transition5.AddTrigger(new Trigger_NoPawnsVeryTiredAndSleeping(0f)); transition5.AddPostAction(new TransitionAction_WakeAll()); stateGraph.AddTransition(transition5); Transition transition6 = new Transition(lordToil_PrepareCaravan_Leave, lordToil_End); transition6.AddTrigger(new Trigger_Memo("ReadyToExitMap")); transition6.AddPreAction(new TransitionAction_Custom(this.SendCaravan)); stateGraph.AddTransition(transition6); Transition transition7 = this.PauseTransition(lordToil_PrepareCaravan_GatherAnimals, lordToil_PrepareCaravan_Pause); stateGraph.AddTransition(transition7); Transition transition8 = this.UnpauseTransition(lordToil_PrepareCaravan_Pause, lordToil_PrepareCaravan_GatherAnimals); stateGraph.AddTransition(transition8); Transition transition9 = this.PauseTransition(this.gatherItems, lordToil_PrepareCaravan_Pause2); stateGraph.AddTransition(transition9); Transition transition10 = this.UnpauseTransition(lordToil_PrepareCaravan_Pause2, this.gatherItems); stateGraph.AddTransition(transition10); Transition transition11 = this.PauseTransition(lordToil_PrepareCaravan_GatherSlaves, lordToil_PrepareCaravan_Pause3); stateGraph.AddTransition(transition11); Transition transition12 = this.UnpauseTransition(lordToil_PrepareCaravan_Pause3, lordToil_PrepareCaravan_GatherSlaves); stateGraph.AddTransition(transition12); Transition transition13 = this.PauseTransition(lordToil_PrepareCaravan_Leave, lordToil_PrepareCaravan_Pause5); stateGraph.AddTransition(transition13); Transition transition14 = this.UnpauseTransition(lordToil_PrepareCaravan_Pause5, lordToil_PrepareCaravan_Leave); stateGraph.AddTransition(transition14); Transition transition15 = this.PauseTransition(lordToil_PrepareCaravan_Wait, lordToil_PrepareCaravan_Pause4); stateGraph.AddTransition(transition15); Transition transition16 = this.UnpauseTransition(lordToil_PrepareCaravan_Pause4, lordToil_PrepareCaravan_Wait); stateGraph.AddTransition(transition16); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil lordToil = null; if (this.sappers) { lordToil = new LordToil_AssaultColonySappers(); if (this.useAvoidGridSmart) { lordToil.avoidGridMode = AvoidGridMode.Smart; } stateGraph.AddToil(lordToil); Transition transition = new Transition(lordToil, lordToil, true, true); transition.AddTrigger(new Trigger_PawnLost()); stateGraph.AddTransition(transition, false); Transition transition2 = new Transition(lordToil, lordToil, true, false); transition2.AddTrigger(new Trigger_PawnHarmed(1f, false, null)); transition2.AddPostAction(new TransitionAction_CheckForJobOverride()); stateGraph.AddTransition(transition2, false); } LordToil lordToil2 = new LordToil_AssaultColony(false); if (this.useAvoidGridSmart) { lordToil2.avoidGridMode = AvoidGridMode.Smart; } stateGraph.AddToil(lordToil2); LordToil_ExitMap lordToil_ExitMap = new LordToil_ExitMap(LocomotionUrgency.Jog, false); lordToil_ExitMap.avoidGridMode = AvoidGridMode.Smart; stateGraph.AddToil(lordToil_ExitMap); if (this.sappers) { Transition transition3 = new Transition(lordToil, lordToil2, false, true); transition3.AddTrigger(new Trigger_NoFightingSappers()); stateGraph.AddTransition(transition3, false); } if (this.assaulterFaction.def.humanlikeFaction) { if (this.canTimeoutOrFlee) { Transition transition4 = new Transition(lordToil2, lordToil_ExitMap, false, true); if (lordToil != null) { transition4.AddSource(lordToil); } transition4.AddTrigger(new Trigger_TicksPassed((!this.sappers) ? LordJob_AssaultColony.AssaultTimeBeforeGiveUp.RandomInRange : LordJob_AssaultColony.SapTimeBeforeGiveUp.RandomInRange)); transition4.AddPreAction(new TransitionAction_Message("MessageRaidersGivenUpLeaving".Translate(new object[] { this.assaulterFaction.def.pawnsPlural.CapitalizeFirst(), this.assaulterFaction.Name }), null, 1f)); stateGraph.AddTransition(transition4, false); Transition transition5 = new Transition(lordToil2, lordToil_ExitMap, false, true); if (lordToil != null) { transition5.AddSource(lordToil); } FloatRange floatRange = new FloatRange(0.25f, 0.35f); float randomInRange = floatRange.RandomInRange; transition5.AddTrigger(new Trigger_FractionColonyDamageTaken(randomInRange, 900f)); transition5.AddPreAction(new TransitionAction_Message("MessageRaidersSatisfiedLeaving".Translate(new object[] { this.assaulterFaction.def.pawnsPlural.CapitalizeFirst(), this.assaulterFaction.Name }), null, 1f)); stateGraph.AddTransition(transition5, false); } if (this.canKidnap) { LordToil startingToil = stateGraph.AttachSubgraph(new LordJob_Kidnap().CreateGraph()).StartingToil; Transition transition6 = new Transition(lordToil2, startingToil, false, true); if (lordToil != null) { transition6.AddSource(lordToil); } transition6.AddPreAction(new TransitionAction_Message("MessageRaidersKidnapping".Translate(new object[] { this.assaulterFaction.def.pawnsPlural.CapitalizeFirst(), this.assaulterFaction.Name }), null, 1f)); transition6.AddTrigger(new Trigger_KidnapVictimPresent()); stateGraph.AddTransition(transition6, false); } if (this.canSteal) { LordToil startingToil2 = stateGraph.AttachSubgraph(new LordJob_Steal().CreateGraph()).StartingToil; Transition transition7 = new Transition(lordToil2, startingToil2, false, true); if (lordToil != null) { transition7.AddSource(lordToil); } transition7.AddPreAction(new TransitionAction_Message("MessageRaidersStealing".Translate(new object[] { this.assaulterFaction.def.pawnsPlural.CapitalizeFirst(), this.assaulterFaction.Name }), null, 1f)); transition7.AddTrigger(new Trigger_HighValueThingsAround()); stateGraph.AddTransition(transition7, false); } } Transition transition8 = new Transition(lordToil2, lordToil_ExitMap, false, true); if (lordToil != null) { transition8.AddSource(lordToil); } transition8.AddTrigger(new Trigger_BecameNonHostileToPlayer()); transition8.AddPreAction(new TransitionAction_Message("MessageRaidersLeaving".Translate(new object[] { this.assaulterFaction.def.pawnsPlural.CapitalizeFirst(), this.assaulterFaction.Name }), null, 1f)); stateGraph.AddTransition(transition8, false); return(stateGraph); }