public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_DefendBase lordToil_DefendBase = (LordToil_DefendBase)(stateGraph.StartingToil = new LordToil_DefendBase(baseCenter)); LordToil_DefendBase lordToil_DefendBase2 = new LordToil_DefendBase(baseCenter); stateGraph.AddToil(lordToil_DefendBase2); LordToil_AssaultColony lordToil_AssaultColony = new LordToil_AssaultColony(attackDownedIfStarving: true); lordToil_AssaultColony.useAvoidGrid = true; stateGraph.AddToil(lordToil_AssaultColony); Transition transition = new Transition(lordToil_DefendBase, lordToil_DefendBase2); transition.AddSource(lordToil_AssaultColony); transition.AddTrigger(new Trigger_BecameNonHostileToPlayer()); stateGraph.AddTransition(transition); Transition transition2 = new Transition(lordToil_DefendBase2, lordToil_DefendBase); transition2.AddTrigger(new Trigger_BecamePlayerEnemy()); stateGraph.AddTransition(transition2); //Transition transition3 = new Transition(lordToil_DefendBase, lordToil_AssaultColony); //transition3.AddTrigger(new Trigger_FractionPawnsLost(0.2f)); //transition3.AddTrigger(new Trigger_PawnHarmed(0.4f)); //transition3.AddTrigger(new Trigger_ChanceOnTickInteval(2500, 0.03f)); //transition3.AddTrigger(new Trigger_TicksPassed(251999)); //transition3.AddTrigger(new Trigger_UrgentlyHungry()); //transition3.AddTrigger(new Trigger_ChanceOnPlayerHarmNPCBuilding(0.4f)); //transition3.AddPostAction(new TransitionAction_WakeAll()); //string message = "MessageDefendersAttacking".Translate(faction.def.pawnsPlural, faction.Name, Faction.OfPlayer.def.pawnsPlural).CapitalizeFirst(); //transition3.AddPreAction(new TransitionAction_Message(message, MessageTypeDefOf.ThreatBig)); //stateGraph.AddTransition(transition3); return(stateGraph); }
// RimWorld.LordToil_AssaultColony public static void UpdateAllDuties_PostFix(LordToil_AssaultColony __instance) { for (int i = 0; i < __instance.lord.ownedPawns.Count; i++) { if (__instance.lord.ownedPawns[i] is Pawn p && p.GetComp <CompHulk>() is CompHulk w && w.IsHulk) { p.mindState.duty = new PawnDuty(DefDatabase <DutyDef> .GetNamed("HulkAssault")); } } }
// RimWorld.LordToil_AssaultColony public static void UpdateAllDuties_PostFix(LordToil_AssaultColony __instance) { for (int i = 0; i < __instance.lord.ownedPawns.Count; i++) { if (__instance.lord.ownedPawns[i] is CosmicHorrorPawn cPawn && cPawn.def.defName != "ROM_Shoggoth") { cPawn.mindState.duty = new PawnDuty(DefDatabase <DutyDef> .GetNamed("ROM_AssaultAndKidnap")); } } }
//NewRatkin.LordJob_BombPlanting:LordJob public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil startingToil = stateGraph.AttachSubgraph(new LordJob_Travel(defendingSpot).CreateGraph()).StartingToil; //거점 방어 상태 LordToil_DefendBomb lordToil_Siege = new LordToil_DefendBomb(defendingSpot, eventPoint); stateGraph.AddToil(lordToil_Siege); //목적지 이동 트랜지션 Transition moveToDest = new Transition(startingToil, lordToil_Siege, false, true); moveToDest.AddTrigger(new Trigger_Memo("TravelArrived")); moveToDest.AddTrigger(new Trigger_TicksPassed(5000)); stateGraph.AddTransition(moveToDest, false); //정착지 공격 상태 LordToil noFleeAssaultColony = new LordToil_AssaultColony(false); noFleeAssaultColony.useAvoidGrid = true; stateGraph.AddToil(noFleeAssaultColony); //정착지 공격 트랜잭션 Transition assultColony = new Transition(lordToil_Siege, noFleeAssaultColony, false, true); assultColony.AddTrigger(new Trigger_Memo("NoBuilders")); assultColony.AddTrigger(new Trigger_Memo("NoBomb")); assultColony.AddTrigger(new Trigger_TicksPassed(15000)); FloatRange floatRange = new FloatRange(0.25f, 0.35f); float randomInRange = floatRange.RandomInRange; assultColony.AddPreAction(new TransitionAction_Message("MessageCommandoAssaulting".Translate(faction.def.pawnsPlural, faction), MessageTypeDefOf.ThreatBig, null, 1f)); assultColony.AddPostAction(new TransitionAction_WakeAll()); //퇴각 상태 LordToil_ExitMap lordToil_ExitMap = new LordToil_ExitMap(LocomotionUrgency.Jog, false); lordToil_ExitMap.useAvoidGrid = true; stateGraph.AddToil(lordToil_ExitMap); //퇴각 트랜지션 Transition exitMap = new Transition(noFleeAssaultColony, lordToil_ExitMap, false, true); exitMap.AddTrigger(new Trigger_FractionColonyDamageTaken(randomInRange, 1200)); exitMap.AddPreAction(new TransitionAction_Message("MessageRaidersSatisfiedLeaving".Translate(faction.def.pawnsPlural.CapitalizeFirst(), faction.Name), null, 1f)); stateGraph.AddTransition(assultColony, false); stateGraph.AddTransition(exitMap, false); return(stateGraph); }
// Token: 0x060007C3 RID: 1987 RVA: 0x00043DC0 File Offset: 0x000421C0 public override StateGraph CreateGraph() { // Log.Message("LordJob_PawnsDefendShip CreateGraph "); StateGraph stateGraph = new StateGraph(); // Log.Message("LordJob_PawnsDefendShip CreateGraph 0"); if (!this.defSpot.IsValid) { Log.Warning("LordJob_PawnsDefendShip defSpot is invalid. Returning graph for LordJob_AssaultColony.", false); stateGraph.AttachSubgraph(new LordJob_AssaultColony(this.faction, true, true, false, false, true).CreateGraph()); return(stateGraph); } // Log.Message("LordJob_PawnsDefendShip CreateGraph 1"); // Log.Message("defspot "+ this.defSpot+" defradius "+ this.defendRadius); LordToil_DefendPoint lordToil_DefendPoint = new LordToil_DefendPoint(this.defSpot, this.defendRadius); stateGraph.StartingToil = lordToil_DefendPoint; LordToil_AssaultColony lordToil_AssaultColony = new LordToil_AssaultColony(false); stateGraph.AddToil(lordToil_AssaultColony); LordToil_AssaultColony lordToil_AssaultColony2 = new LordToil_AssaultColony(false); stateGraph.AddToil(lordToil_AssaultColony2); Transition transition = new Transition(lordToil_DefendPoint, lordToil_AssaultColony2, false, true); transition.AddSource(lordToil_AssaultColony); transition.AddTrigger(new Trigger_PawnCannotReachMapEdge()); stateGraph.AddTransition(transition, false); Transition transition2 = new Transition(lordToil_DefendPoint, lordToil_AssaultColony, false, true); transition2.AddTrigger(new Trigger_PawnHarmed(0.5f, true, null)); transition2.AddTrigger(new Trigger_PawnLostViolently(true)); transition2.AddTrigger(new Trigger_Memo(CompSpawnerOnDamaged.MemoDamaged)); transition2.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition2, false); Transition transition3 = new Transition(lordToil_AssaultColony, lordToil_DefendPoint, false, true); transition3.AddTrigger(new Trigger_TicksPassedWithoutHarmOrMemos(1380, new string[] { CompSpawnerOnDamaged.MemoDamaged })); transition3.AddPostAction(new TransitionAction_EndAttackBuildingJobs()); stateGraph.AddTransition(transition3, false); Transition transition4 = new Transition(lordToil_DefendPoint, lordToil_AssaultColony2, false, true); transition4.AddSource(lordToil_AssaultColony); transition4.AddTrigger(new Trigger_ThingDamageTaken(this.shipPart, 0.5f)); transition4.AddTrigger(new Trigger_Memo(HediffGiver_Heat.MemoPawnBurnedByAir)); stateGraph.AddTransition(transition4, false); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_DefendBase lordToilDefendBase1 = new LordToil_DefendBase(this.baseCenter); stateGraph.StartingToil = lordToilDefendBase1; LordToil_DefendBase lordToilDefendBase2 = new LordToil_DefendBase(this.baseCenter); stateGraph.AddToil(lordToilDefendBase2); LordToil_AssaultColony toilAssaultColony = new LordToil_AssaultColony(true) { useAvoidGrid = true }; stateGraph.AddToil(toilAssaultColony); Transition transition1 = new Transition(lordToilDefendBase1, lordToilDefendBase2); transition1.AddSource(toilAssaultColony); transition1.AddTrigger(new Trigger_BecameNonHostileToPlayer()); stateGraph.AddTransition(transition1); Transition transition3 = new Transition(lordToilDefendBase1, toilAssaultColony); transition3.AddTrigger(new Trigger_FractionPawnsLost(0.2f)); transition3.AddTrigger(new Trigger_PawnHarmed(0.4f)); transition3.AddTrigger(new Trigger_ChanceOnTickInterval(2500, 0.03f)); transition3.AddTrigger(new Trigger_TicksPassed(251999)); transition3.AddTrigger(new Trigger_ChanceOnPlayerHarmNPCBuilding(0.4f)); transition3.AddTrigger(new Trigger_OnClamor(ClamorDefOf.Ability)); transition3.AddPostAction(new TransitionAction_WakeAll()); TaggedString taggedString = "MessageDefendersAttacking".Translate(this.faction.def.pawnsPlural, this.faction.Name, Faction.OfPlayer.def.pawnsPlural).CapitalizeFirst(); transition3.AddPreAction(new TransitionAction_Message(taggedString, MessageTypeDefOf.ThreatBig)); stateGraph.AddTransition(transition3); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_DefendBase lordToil_DefendBase = (LordToil_DefendBase)(stateGraph.StartingToil = new LordToil_DefendBase(baseCenter)); LordToil_DefendBase lordToil_DefendBase2 = new LordToil_DefendBase(baseCenter); stateGraph.AddToil(lordToil_DefendBase2); LordToil_AssaultColony lordToil_AssaultColony = new LordToil_AssaultColony(attackDownedIfStarving: true); lordToil_AssaultColony.useAvoidGrid = true; stateGraph.AddToil(lordToil_AssaultColony); Transition transition = new Transition(lordToil_DefendBase, lordToil_DefendBase2); transition.AddSource(lordToil_AssaultColony); transition.AddTrigger(new Trigger_BecameNonHostileToPlayer()); stateGraph.AddTransition(transition); Transition transition2 = new Transition(lordToil_DefendBase2, lordToil_DefendBase); transition2.AddTrigger(new Trigger_BecamePlayerEnemy()); stateGraph.AddTransition(transition2); return(stateGraph); }
public override StateGraph CreateGraph() { //TODO: This might use some love to expand the Job a bit. Pawn harmed for example. There are some triggers and states that weren't copied. StateGraph stateGraph = new StateGraph(); LordToil_AmbroisaDefenseLGE lordToil_DefendAmbrosia = new LordToil_AmbroisaDefenseLGE(); lordToil_DefendAmbrosia.distToHiveToAttack = 20f; stateGraph.StartingToil = lordToil_DefendAmbrosia; LordToil_AssaultColony lordToil_AssaultColony = new LordToil_AssaultColony(); stateGraph.AddToil(lordToil_AssaultColony); Transition transition = new Transition(lordToil_DefendAmbrosia, lordToil_AssaultColony); transition.AddTrigger(new Trigger_PawnHarmed(0.5f, true)); transition.AddTrigger(new Trigger_PawnLostViolently()); transition.AddTrigger(new Trigger_Memo(Hive.MemoAttackedByEnemy)); transition.AddTrigger(new Trigger_Memo(HediffGiver_Heat.MemoPawnBurnedByAir)); transition.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition); Transition transition2 = new Transition(lordToil_DefendAmbrosia, lordToil_AssaultColony); transition2.canMoveToSameState = true; transition2.AddSource(lordToil_AssaultColony); transition2.AddTrigger(new Trigger_Memo(Hive.MemoDeSpawned)); stateGraph.AddTransition(transition2); Transition transition3 = new Transition(lordToil_AssaultColony, lordToil_DefendAmbrosia); transition3.AddTrigger(new Trigger_TicksPassedWithoutHarmOrMemos(1200, new string[] { Hive.MemoAttackedByEnemy, HediffGiver_Heat.MemoPawnBurnedByAir })); transition3.AddPostAction(new TransitionAction_EndAttackBuildingJobs()); stateGraph.AddTransition(transition3); return(stateGraph); }
// RimWorld.LordToil_AssaultColony public static void UpdateAllDuties_PostFix(LordToil_AssaultColony __instance) { foreach (var pawn in __instance.lord.ownedPawns) { if (pawn is { } p&& p.GetComp <CompWerewolf>() is { IsWerewolf: true })
// Token: 0x06000795 RID: 1941 RVA: 0x00042F44 File Offset: 0x00041344 public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil_DefendAndExpandHiveLike lordToil_DefendAndExpandHive = new LordToil_DefendAndExpandHiveLike(); lordToil_DefendAndExpandHive.distToHiveToAttack = 10f; stateGraph.StartingToil = lordToil_DefendAndExpandHive; LordToil_DefendHiveAggressively lordToil_DefendHiveAggressively = new LordToil_DefendHiveAggressively(); lordToil_DefendHiveAggressively.distToHiveToAttack = 40f; stateGraph.AddToil(lordToil_DefendHiveAggressively); LordToil_AssaultColony lordToil_AssaultColony = new LordToil_AssaultColony(false); stateGraph.AddToil(lordToil_AssaultColony); /* * Transition transition = new Transition(lordToil_DefendAndExpandHive, (!this.aggressive) ? lordToil_DefendHiveAggressively : lordToil_AssaultColony, false, true); * transition.AddTrigger(new Trigger_PawnHarmed(0.5f, true, null)); * transition.AddTrigger(new Trigger_PawnLostViolently(false)); * transition.AddTrigger(new Trigger_Memo(HiveLike.MemoAttackedByEnemy)); * transition.AddTrigger(new Trigger_Memo(HiveLike.MemoBurnedBadly)); * transition.AddTrigger(new Trigger_Memo(HiveLike.MemoDestroyedNonRoofCollapse)); * transition.AddTrigger(new Trigger_Memo(HediffGiver_Heat.MemoPawnBurnedByAir)); * transition.AddPostAction(new TransitionAction_EndAllJobs()); * stateGraph.AddTransition(transition, false); */ Transition transition2 = new Transition(lordToil_DefendAndExpandHive, lordToil_AssaultColony, false, true); Transition transition3 = transition2; float chance = 0.5f; Faction parentFaction = base.Map.ParentFaction; transition3.AddTrigger(new Trigger_PawnHarmed(chance, false, parentFaction)); transition2.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition2, false); Transition transition4 = new Transition(lordToil_DefendHiveAggressively, lordToil_AssaultColony, false, true); Transition transition5 = transition4; chance = 0.5f; parentFaction = base.Map.ParentFaction; transition5.AddTrigger(new Trigger_PawnHarmed(chance, false, parentFaction)); transition4.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition4, false); Transition transition6 = new Transition(lordToil_DefendAndExpandHive, lordToil_DefendAndExpandHive, true, true); transition6.AddTrigger(new Trigger_Memo(HiveLike.MemoDeSpawned)); stateGraph.AddTransition(transition6, false); Transition transition7 = new Transition(lordToil_DefendHiveAggressively, lordToil_DefendHiveAggressively, true, true); transition7.AddTrigger(new Trigger_Memo(HiveLike.MemoDeSpawned)); stateGraph.AddTransition(transition7, false); Transition transition8 = new Transition(lordToil_AssaultColony, lordToil_DefendAndExpandHive, false, true); transition8.AddSource(lordToil_DefendHiveAggressively); transition8.AddTrigger(new Trigger_TicksPassedWithoutHarmOrMemos(1200, new string[] { HiveLike.MemoAttackedByEnemy, HiveLike.MemoBurnedBadly, HiveLike.MemoDestroyedNonRoofCollapse, HiveLike.MemoDeSpawned, HediffGiver_Heat.MemoPawnBurnedByAir })); transition8.AddPostAction(new TransitionAction_EndAttackBuildingJobs()); stateGraph.AddTransition(transition8, false); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil startingToil = stateGraph.AttachSubgraph(new LordJob_Travel(this.chillSpot).CreateGraph()).StartingToil; stateGraph.StartingToil = startingToil; var lordToil_WanderAndChat = IoM_StoryUtilities.GetWandererChatToil(this.chatType); stateGraph.AddToil(lordToil_WanderAndChat); 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_ExitMapBest lordToil_ExitMapBest = new LordToil_ExitMapBest(LocomotionUrgency.Walk, true); stateGraph.AddToil(lordToil_ExitMapBest); Transition transition = new Transition(startingToil, lordToil_ExitMapBest); transition.AddSources(new LordToil[] { lordToil_WanderAndChat, lordToil_TakeWoundedGuest }); transition.AddSources(stateGraph2.lordToils); transition.AddTrigger(new Trigger_PawnCannotReachMapEdge()); string leavingMessage; if (this.isLonePawn) { leavingMessage = "MessageLoneWandererLeaving".Translate(new object[] { this.centralPawn.Name }); } else { leavingMessage = "MessageGroupWandererLeaving".Translate(); } transition.AddPreAction(new TransitionAction_Message(leavingMessage)); stateGraph.AddTransition(transition); Transition transition2 = new Transition(lordToil_ExitMapBest, startingToil2); transition2.AddTrigger(new Trigger_PawnCanReachMapEdge()); transition2.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); transition2.AddPostAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition2); Transition transition3 = new Transition(startingToil, lordToil_WanderAndChat); transition3.AddTrigger(new Trigger_Memo("TravelArrived")); stateGraph.AddTransition(transition3); Transition transition4 = new Transition(lordToil_WanderAndChat, lordToil_TakeWoundedGuest); transition4.AddTrigger(new Trigger_WoundedGuestPresent()); stateGraph.AddTransition(transition4); Transition transition5 = new Transition(lordToil_WanderAndChat, target); transition5.AddSources(new LordToil[] { lordToil_TakeWoundedGuest, startingToil }); transition5.AddTrigger(new Trigger_PawnLostViolently()); transition5.AddPreAction(new TransitionAction_Custom(new Action(delegate { this.SwitchToHostileFaction(); }))); transition5.AddPreAction(new TransitionAction_WakeAll()); transition5.AddPreAction(new TransitionAction_SetDefendLocalGroup()); transition5.AddPreAction(new TransitionAction_EndAllJobs()); stateGraph.AddTransition(transition5); Transition transition6 = new Transition(lordToil_WanderAndChat, startingToil2); transition6.AddTrigger(new Trigger_TicksPassed(Rand.Range(8000, 22000))); transition6.AddPreAction(new TransitionAction_Message(leavingMessage)); transition6.AddPreAction(new TransitionAction_WakeAll()); transition6.AddPreAction(new TransitionAction_EnsureHaveExitDestination()); stateGraph.AddTransition(transition6); LordToil_AssaultColony lordtoilAssault = new LordToil_AssaultColony(); stateGraph.AddToil(lordtoilAssault); lordtoilAssault.avoidGridMode = AvoidGridMode.Smart; Transition transition7 = new Transition(lordToil_WanderAndChat, lordtoilAssault); transition7.AddPreAction(new TransitionAction_Custom(new Action(delegate { this.factionInt.SetHostileTo(Faction.OfPlayer, true); }))); transition7.AddTrigger(new Trigger_Custom((TriggerSignal x) => this.InquisitorFoundHeretic && IoM_StoryUtilities.InquisitorShouldStartDirectAttack(this.Map, this.centralPawn.GetLord().ownedPawns))); stateGraph.AddTransition(transition7); LordToil_PanicFlee lordToilFlee = new LordToil_PanicFlee(); Transition transition8 = new Transition(lordToil_WanderAndChat, lordToilFlee); transition8.AddPreAction(new TransitionAction_Custom(new Action(delegate { this.factionInt.SetHostileTo(Faction.OfPlayer, true); }))); transition8.AddTrigger(new Trigger_Custom((TriggerSignal x) => this.InquisitorFoundHeretic && !IoM_StoryUtilities.InquisitorShouldStartDirectAttack(this.Map, this.centralPawn.GetLord().ownedPawns))); stateGraph.AddTransition(transition8); return(stateGraph); }
public override StateGraph CreateGraph() { StateGraph stateGraph = new StateGraph(); LordToil lordToil_wait = new LordToil_DefendPoint(baseCenter, 50f); lordToil_wait.AddFailCondition(() => CorruptionStoryTrackerUtilities.currentStoryTracker.PlanetaryGovernor.Dead); stateGraph.AddToil(lordToil_wait); LordToil lordToil_leaveInShip = new LordToil_LeaveInShip(); LordToil lordToil_leaveMap = new LordToil_ExitMapBest(LocomotionUrgency.Jog); Transition leaveMapEarly = new Transition(lordToil_leaveInShip, lordToil_leaveMap); leaveMapEarly.AddTrigger(new Trigger_Custom((TriggerSignal x) => ship.Destroyed || !ship.Spawned)); stateGraph.AddTransition(leaveMapEarly); LordToil lordToil_main = new LordToil_ArrestGovernor(); stateGraph.AddToil(lordToil_main); Transition governorDiedWaiting = new Transition(lordToil_wait, lordToil_leaveInShip); governorDiedWaiting.AddTrigger(new Trigger_Custom((TriggerSignal x) => CorruptionStoryTrackerUtilities.currentStoryTracker.PlanetaryGovernor.Dead)); stateGraph.AddTransition(governorDiedWaiting); Transition transition_fetchingGovernor = new Transition(lordToil_wait, lordToil_main); transition_fetchingGovernor.AddTrigger(new Trigger_TicksPassed(2500)); transition_fetchingGovernor.AddPreAction(new TransitionAction_Message("MessageGovernorIsBeingArrested".Translate(new object[] { CorruptionStoryTrackerUtilities.currentStoryTracker.PlanetaryGovernor.Name }))); stateGraph.AddTransition(transition_fetchingGovernor); LordToil lordToil_goAggressive = new LordToil_AssaultColony(); lordToil_goAggressive.avoidGridMode = AvoidGridMode.Smart; stateGraph.AddToil(lordToil_goAggressive); Transition transition_useForce = new Transition(lordToil_main, lordToil_goAggressive); transition_useForce.AddTrigger(new Trigger_BecameColonyEnemy()); transition_useForce.AddTrigger(new Trigger_PawnHarmed()); transition_useForce.AddPreAction(new TransitionAction_Message("MessageGovernorArrestGoneHostile".Translate())); transition_useForce.AddPreAction(new TransitionAction_Custom(new Action(delegate { this.lord.ownedPawns[0].Faction.SetHostileTo(Faction.OfPlayer, true); }))); stateGraph.AddTransition(transition_useForce); Transition downedGovernor = new Transition(lordToil_goAggressive, lordToil_main); downedGovernor.AddTrigger(new Trigger_Custom((TriggerSignal x) => CorruptionStoryTrackerUtilities.currentStoryTracker.PlanetaryGovernor.Downed)); stateGraph.AddTransition(downedGovernor); Transition killedGovernor = new Transition(lordToil_goAggressive, lordToil_leaveInShip); killedGovernor.AddTrigger(new Trigger_Custom((TriggerSignal x) => CorruptionStoryTrackerUtilities.currentStoryTracker.PlanetaryGovernor.Dead)); stateGraph.AddTransition(killedGovernor); Transition transition_leaveWithGovernor = new Transition(lordToil_main, lordToil_leaveInShip); transition_leaveWithGovernor.AddTrigger(new Trigger_Custom((TriggerSignal x) => this.ship.GetInnerContainer().Contains(CorruptionStoryTrackerUtilities.currentStoryTracker.PlanetaryGovernor))); stateGraph.AddToil(lordToil_leaveInShip); stateGraph.AddTransition(transition_leaveWithGovernor); Transition transition_leaveUnderFire = new Transition(lordToil_main, lordToil_leaveInShip); transition_leaveUnderFire.AddPreAction(new TransitionAction_Custom(new Action(delegate { this.lord.ownedPawns[0].Faction.SetHostileTo(Faction.OfPlayer, true); }))); stateGraph.AddToil(lordToil_leaveMap); LordToil_End lordToil_End = new LordToil_End(); stateGraph.AddToil(lordToil_End); Transition endTransition = new Transition(lordToil_leaveMap, lordToil_End); endTransition.AddTrigger(new Trigger_TicksPassed(60000)); stateGraph.AddTransition(endTransition); return(stateGraph); }