コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }