コード例 #1
0
        public override StateGraph CreateGraph()
        {
            StateGraph             stateGraph     = new StateGraph();
            LordToil_SetLeadership lordToil_Party = new LordToil_SetLeadership(this.spot);

            stateGraph.AddToil(lordToil_Party);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition transition = new Transition(lordToil_Party, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff()));
            transition.AddTrigger(new Trigger_PawnLostViolently());
            transition.AddPreAction(new TransitionAction_Message("ElectionFail_Disaster".Translate(), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false)));
            stateGraph.AddTransition(transition);
            this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(5000, 8000));
            Transition transition2 = new Transition(lordToil_Party, lordToil_End);

            transition2.AddTrigger(this.timeoutTrigger);

            transition2.AddPreAction(new TransitionAction_Message("ElectionFinished".Translate(), MessageTypeDefOf.PositiveEvent, new TargetInfo(this.spot, base.Map, false)));
            transition2.AddPreAction(new TransitionAction_Custom(new Action(delegate
            {
                this.Finished();
            })));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #2
0
        public override StateGraph CreateGraph()
        {
            StateGraph     stateGraph     = new StateGraph();
            LordToil       startingToil   = stateGraph.AttachSubgraph(new LordJob_Travel(this.siegeSpot).CreateGraph()).StartingToil;
            LordToil_Siege lordToil_Siege = new LordToil_Siege(this.siegeSpot, this.blueprintPoints);

            stateGraph.AddToil(lordToil_Siege);
            LordToil   startingToil2 = stateGraph.AttachSubgraph(new LordJob_AssaultColony(this.faction, true, true, false, false, true).CreateGraph()).StartingToil;
            Transition transition    = new Transition(startingToil, lordToil_Siege, false, true);

            transition.AddTrigger(new Trigger_Memo("TravelArrived"));
            transition.AddTrigger(new Trigger_TicksPassed(5000));
            stateGraph.AddTransition(transition);
            Transition transition2 = new Transition(lordToil_Siege, startingToil2, false, true);

            transition2.AddTrigger(new Trigger_Memo("NoBuilders"));
            transition2.AddTrigger(new Trigger_Memo("NoArtillery"));
            transition2.AddTrigger(new Trigger_PawnHarmed(0.08f, false, null));
            transition2.AddTrigger(new Trigger_FractionPawnsLost(0.3f));
            transition2.AddTrigger(new Trigger_TicksPassed((int)(60000f * Rand.Range(1.5f, 3f))));
            transition2.AddPreAction(new TransitionAction_Message("MessageSiegersAssaulting".Translate(new object[]
            {
                this.faction.def.pawnsPlural,
                this.faction
            }), MessageTypeDefOf.ThreatBig, null, 1f));
            transition2.AddPostAction(new TransitionAction_WakeAll());
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #3
0
        public override StateGraph CreateGraph()
        {
            var mainGraph = new StateGraph();

            var toil_Attend = new LordToil_AttendShow(audienceRect, entertainer, entertainerSpot);

            mainGraph.AddToil(toil_Attend);

            var toil_End = new LordToil_End();

            mainGraph.AddToil(toil_End);

            var trans_NormalEnd = new Transition(toil_Attend, toil_End);

            trans_NormalEnd.AddTrigger(new Trigger_Memo("StopEntertaining"));
            trans_NormalEnd.AddTrigger(new Trigger_TicksPassed(durationRange.RandomInRange));
            trans_NormalEnd.AddPreAction(new TransitionAction_Message("ShowEnded".Translate(entertainer.LabelShort)));
            mainGraph.AddTransition(trans_NormalEnd);

            var trans_BadEnd = new Transition(toil_Attend, toil_End);

            trans_BadEnd.AddTrigger(new Trigger_Memo("DangerPresent"));
            trans_BadEnd.AddTrigger(new Trigger_TickCondition(() => ShouldBeCalledOff()));
            trans_BadEnd.AddTrigger(new Trigger_PawnLostViolently());
            trans_BadEnd.AddPreAction(new TransitionAction_Message("ShowEndedBad".Translate(entertainer.LabelShort)));
            mainGraph.AddTransition(trans_BadEnd);

            return(mainGraph);
        }
コード例 #4
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil   party      = CreateGatheringToil(spot, organizer, gatheringDef);

            stateGraph.AddToil(party);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition transition = new Transition(party, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(() => ShouldBeCalledOff()));
            transition.AddTrigger(new Trigger_PawnKilled());
            transition.AddTrigger(new Trigger_PawnLost(PawnLostCondition.LeftVoluntarily, organizer));
            transition.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                ApplyOutcome((LordToil_Party)party);
            }));
            transition.AddPreAction(new TransitionAction_Message(gatheringDef.calledOffMessage, MessageTypeDefOf.NegativeEvent, new TargetInfo(spot, base.Map)));
            stateGraph.AddTransition(transition);
            timeoutTrigger = GetTimeoutTrigger();
            Transition transition2 = new Transition(party, lordToil_End);

            transition2.AddTrigger(timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                ApplyOutcome((LordToil_Party)party);
            }));
            transition2.AddPreAction(new TransitionAction_Message(gatheringDef.finishedMessage, MessageTypeDefOf.SituationResolved, new TargetInfo(spot, base.Map)));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #5
0
        public override StateGraph CreateGraph()
        {
            StateGraph       stateGraph       = new StateGraph();
            LordToil_Funeral lordToil_Funeral = new LordToil_Funeral(this.spot);

            stateGraph.AddToil(lordToil_Funeral);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition transition = new Transition(lordToil_Funeral, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(() => !PartyUtility.AcceptableGameConditionsToContinueParty(base.Map)));
            transition.AddTrigger(new Trigger_PawnLostViolently());
            transition.AddPreAction(new TransitionAction_Message("MessageFuneralCalledOff".Translate(), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, this.Map, false)));
            stateGraph.AddTransition(transition);
            int length = Rand.RangeInclusive(GenDate.TicksPerHour, Mathf.RoundToInt(GenDate.TicksPerHour * 2.5f));

            this.timeoutTrigger = new Trigger_TicksPassed(length);
            Transition transition2 = new Transition(lordToil_Funeral, lordToil_End);

            transition2.AddTrigger(this.timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                this.Finished();
            }));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #6
0
        public override StateGraph CreateGraph()
        {
            StateGraph             stateGraph = new StateGraph();
            LordToil_LoadShipCargo loadToil   = new LordToil_LoadShipCargo(ship);

            stateGraph.AddToil(loadToil);

            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);

            Transition transition = new Transition(loadToil, lordToil_End);

            transition.AddTrigger(new Trigger_PawnLost());

            transition.AddPreAction(new TransitionAction_Message("MessageFailedToLoadTransportersBecauseColonistLost".Translate(), MessageSound.Negative));
            transition.AddPreAction(new TransitionAction_Custom(new Action(this.CancelLoadingProcess)));
            stateGraph.AddTransition(transition);

            Transition endTransition = new Transition(loadToil, lordToil_End);

            endTransition.AddTrigger(new Trigger_TicksPassed(TimeOutTick));
            endTransition.AddTrigger(new Trigger_PawnsExhausted());
            endTransition.AddPreAction(new TransitionAction_Custom(new Action(delegate {
                Log.Message("Ending");
                this.CancelLoadingProcess();
            })));
            stateGraph.AddTransition(endTransition);
            return(stateGraph);
        }
コード例 #7
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil_DefendAndExpandWomb lordToil_DefendAndExpandWomb = new LordToil_DefendAndExpandWomb();

            lordToil_DefendAndExpandWomb.distToHiveToAttack = 10f;
            stateGraph.StartingToil = lordToil_DefendAndExpandWomb;
            LordToil_DefendAndExpandWomb lordToil_DefendAndExpandWomb2 = new LordToil_DefendAndExpandWomb();

            lordToil_DefendAndExpandWomb2.distToHiveToAttack = 32f;
            stateGraph.AddToil(lordToil_DefendAndExpandWomb2);
            Transition transition = new Transition(lordToil_DefendAndExpandWomb, lordToil_DefendAndExpandWomb2);

            transition.AddTrigger(new Trigger_PawnHarmed());
            transition.AddTrigger(new Trigger_Memo("HiveAttacked"));
            stateGraph.AddTransition(transition);
            Transition transition2 = new Transition(lordToil_DefendAndExpandWomb, lordToil_DefendAndExpandWomb2);

            transition2.canMoveToSameState = true;
            transition2.AddSource(lordToil_DefendAndExpandWomb2);
            transition2.AddTrigger(new Trigger_Memo("HiveDestroyed"));
            stateGraph.AddTransition(transition2);
            Transition transition3 = new Transition(lordToil_DefendAndExpandWomb2, lordToil_DefendAndExpandWomb);

            transition3.AddTrigger(new Trigger_TicksPassedWithoutHarm(500));
            stateGraph.AddTransition(transition3);
            return(stateGraph);
        }
コード例 #8
0
        public override StateGraph CreateGraph()
        {
            StateGraph            stateGraph      = new StateGraph();
            LordToil_AttendSermon lordToil_Sermon = new LordToil_AttendSermon(this.spot);

            stateGraph.AddToil(lordToil_Sermon);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition transition = new Transition(lordToil_Sermon, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff()));
            transition.AddTrigger(new Trigger_PawnLostViolently());
            transition.AddAction(new TransitionAction_Message("MessagePartyCalledOff".Translate(), MessageSound.Negative, this.spot));
            stateGraph.AddTransition(transition);
            this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(5000, 15000));
            Transition transition2 = new Transition(lordToil_Sermon, lordToil_End);

            transition2.AddTrigger(this.timeoutTrigger);
            transition2.AddAction(new TransitionAction_Message("MessagePartyFinished".Translate(), MessageSound.Negative, this.spot));

            transition2.AddAction(new TransitionAction_Cus(delegate
            {
                this.Finished();
            }));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #9
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();

            LordToil disco = CreateGatheringToil(spot, organizer, gatheringDef);

            stateGraph.AddToil(disco);

            LordToil_End lordToilEnd = new LordToil_End();

            stateGraph.AddToil(lordToilEnd);

            Transition callOffTransition = new Transition(disco, lordToilEnd);

            callOffTransition.AddTrigger(new Trigger_TickCondition(this.ShouldBeCalledOff));
            callOffTransition.AddTrigger(new Trigger_PawnKilled());
            callOffTransition.AddTrigger(new Trigger_PawnLost(PawnLostCondition.LeftVoluntarily, this.organizer));
            callOffTransition.AddPreAction(new TransitionAction_Custom(() => ApplyOutcome((LordToil_Disco)disco)));
            callOffTransition.AddPreAction(new TransitionAction_Message(this.gatheringDef.calledOffMessage, MessageTypeDefOf.NegativeEvent, new TargetInfo(spot, Map)));
            stateGraph.AddTransition(callOffTransition);

            timeoutTrigger = GetTimeoutTrigger();
            Transition naturalEndTransition = new Transition(disco, lordToilEnd);

            naturalEndTransition.AddTrigger(this.timeoutTrigger);
            naturalEndTransition.AddPreAction(new TransitionAction_Custom(() => ApplyOutcome((LordToil_Disco)disco)));
            naturalEndTransition.AddPreAction(new TransitionAction_Message(gatheringDef.finishedMessage, MessageTypeDefOf.SituationResolved, new TargetInfo(spot, Map)));
            stateGraph.AddTransition(naturalEndTransition);

            Core.Log("Created disco state graph.");

            return(stateGraph);
        }
コード例 #10
0
        public override StateGraph CreateGraph()
        {
            StateGraph       stateGraph       = new StateGraph();
            LordToil_HangOut lordToil_HangOut = new LordToil_HangOut(new Pawn[] { initiator, recipient });

            stateGraph.AddToil(lordToil_HangOut);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition transition = new Transition(lordToil_HangOut, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff()));
            transition.AddTrigger(new Trigger_TickCondition(() => this.initiator.health.summaryHealth.SummaryHealthPercent < 1f || this.recipient.health.summaryHealth.SummaryHealthPercent < 1f));
            transition.AddTrigger(new Trigger_TickCondition(() => this.initiator.Drafted || this.recipient.Drafted));
            transition.AddTrigger(new Trigger_PawnLost());
            stateGraph.AddTransition(transition);
            this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(GenDate.TicksPerHour * 4, GenDate.TicksPerHour * 6));
            Transition transition2 = new Transition(lordToil_HangOut, lordToil_End);

            transition2.AddTrigger(this.timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                this.Finished();
            }));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #11
0
        // Token: 0x06000005 RID: 5 RVA: 0x000020A0 File Offset: 0x000002A0
        public override StateGraph CreateGraph()
        {
            var stateGraph      = new StateGraph();
            var lordToil_CParty = new LordToil_CParty(spot);

            stateGraph.AddToil(lordToil_CParty);
            var lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            var transition = new Transition(lordToil_CParty, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(ShouldBeCalledOff));
            transition.AddTrigger(new Trigger_PawnKilled());
            transition.AddPreAction(new TransitionAction_Message("MessagePartyCalledOff".Translate(),
                                                                 MessageTypeDefOf.NegativeEvent, new TargetInfo(spot, Map)));
            stateGraph.AddTransition(transition);
            timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(5000, 15000));
            var transition2 = new Transition(lordToil_CParty, lordToil_End);

            transition2.AddTrigger(timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Message("MessagePartyFinished".Translate(),
                                                                  MessageTypeDefOf.SituationResolved, new TargetInfo(spot, Map)));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #12
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil   lordToil   = CreateGatheringToil(spot, organizer, gatheringDef);

            stateGraph.AddToil(lordToil);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            float      speechDuration = 12500f;
            Transition transition     = new Transition(lordToil, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(ShouldBeCalledOff));
            transition.AddTrigger(new Trigger_PawnKilled());
            transition.AddTrigger(new Trigger_PawnLost(PawnLostCondition.LeftVoluntarily, organizer));
            transition.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                ApplyOutcome((float)lord.ticksInToil / speechDuration);
            }));
            stateGraph.AddTransition(transition);
            timeoutTrigger = new Trigger_TicksPassedAfterConditionMet((int)speechDuration, () => GatheringsUtility.InGatheringArea(organizer.Position, spot, organizer.Map), 60);
            Transition transition2 = new Transition(lordToil, lordToil_End);

            transition2.AddTrigger(timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                ApplyOutcome(1f);
            }));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #13
0
        public override StateGraph CreateGraph()
        {
            StateGraph       stateGraph       = new StateGraph();
            LordToil_Meeting lordToil_Meeting = new LordToil_Meeting(this.spot);

            stateGraph.AddToil(lordToil_Meeting);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition transition = new Transition(lordToil_Meeting, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff()));
            transition.AddTrigger(new Trigger_TickCondition(() => this.mayor.health.summaryHealth.SummaryHealthPercent < 1f || this.constituent.health.summaryHealth.SummaryHealthPercent < 1f));
            transition.AddTrigger(new Trigger_TickCondition(() => this.mayor.Drafted || this.constituent.Drafted));
            transition.AddTrigger(new Trigger_PawnLost());
            stateGraph.AddTransition(transition);
            //Time of meeting is affected by the constituents' mood; meetings to complain can take longer than meetings to commend.
            this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(GenDate.TicksPerHour, Mathf.RoundToInt(GenDate.TicksPerHour / Mathf.Lerp(0.2f, 1f, constituent.needs.mood.CurLevel))));
            Transition transition2 = new Transition(lordToil_Meeting, lordToil_End);

            transition2.AddTrigger(this.timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                this.Finished();
            }));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #14
0
        public override StateGraph CreateGraph()
        {
            StateGraph        stateGraph        = new StateGraph();
            LordToil_Election lordToil_Election = new LordToil_Election(this.spot);

            stateGraph.AddToil(lordToil_Election);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition transition = new Transition(lordToil_Election, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff()));
            transition.AddTrigger(new Trigger_TickCondition(() => this.candidates.Count == 0));
            transition.AddTrigger(new Trigger_PawnLostViolently());
            transition.AddPreAction(new TransitionAction_Message("MessageElectionCalledOff".Translate(this.baseName), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, this.Map, false)));
            stateGraph.AddTransition(transition);
            this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(GenDate.TicksPerHour * 4, GenDate.TicksPerHour * 8));
            Transition transition2 = new Transition(lordToil_Election, lordToil_End);

            transition2.AddTrigger(this.timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                this.Finished();
            }));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #15
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph             = new StateGraph();
            LordToil_MillAboutCloseBy chillax = new LordToil_MillAboutCloseBy(locus);

            stateGraph.AddToil(chillax);
            LordToil_ExitMap leaveMap = new LordToil_ExitMap(LocomotionUrgency.Jog);

            Transition signalToLeave = new Transition(chillax, leaveMap);

            signalToLeave.AddTrigger(new Trigger_PawnRecruited());
            signalToLeave.AddTrigger(new Trigger_Custom((signal) => signal.type == TriggerSignalType.FactionRelationsChanged));
            signalToLeave.AddTrigger(new Trigger_FightWon());
            signalToLeave.AddTrigger(new Trigger_Memo("SetFree")); //triggered by ThingComp_RescueMe
            //signalToLeave.AddPostAction(new TransitionAction_Message("prisoners leaving.")); <- in case you want to use that one instead, for added clarity (more generic than PrisonersFreedLGE)
            signalToLeave.AddPostAction(new TransitionAction_WakeAll());
            signalToLeave.AddPostAction(new TransitionAction_Custom(() =>
            {
                Find.World.worldObjects.SiteAt(lord.Map.Tile)?.GetComponent <PrisonerRescueQuestComp>()?.GiveRewardsAndSendLetter();
            }));
            signalToLeave.AddPostAction(new TransitionAction_EndAllJobs());

            stateGraph.AddTransition(signalToLeave);
            stateGraph.AddToil(leaveMap);

            return(stateGraph);
        }
コード例 #16
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();

            #region LordToils
            LordToil_JoinPrayerService lordToil_JoinPrayerService = new LordToil_JoinPrayerService(organizer, spot);
            stateGraph.AddToil(lordToil_JoinPrayerService);

            LordToil_PrayerService lordToil_PrayerService = new LordToil_PrayerService(pulpit, organizer, spot, spectatorRect);
            stateGraph.AddToil(lordToil_PrayerService);

            LordToil_End lordToil_End = new LordToil_End();
            stateGraph.AddToil(lordToil_End);
            #endregion

            #region Transition JoinPrayerService => Others
            {
                // 주최자가 방에 들어온 다음 일정틱 대기 후 다음 단계로 진행하도록
                Transition transition_JoinPrayerService_to_PrayerService = new Transition(lordToil_JoinPrayerService, lordToil_PrayerService);
                transition_JoinPrayerService_to_PrayerService.AddTrigger(new Trigger_TicksPassedAfterConditionMet(ConstPriest.PrayerServicePreStageTicks, () =>
                {
                    if (organizer.GetRoom() == spot.GetRoom(organizer.Map))
                    {
                        return(true);
                    }

                    return(false);
                }, checkEveryTicks: 250));
                stateGraph.AddTransition(transition_JoinPrayerService_to_PrayerService);
            }

            {
                // 주최자가 피해를 입었거나, 취소될만한 상황이 될 경우 강제로 종료
                Transition transition_JoinPrayerService_to_End = new Transition(lordToil_JoinPrayerService, lordToil_End);
                transition_JoinPrayerService_to_End.AddTrigger(new Trigger_TickCondition(IsAborted));
                transition_JoinPrayerService_to_End.AddTrigger(new Trigger_PawnHarmed());
                transition_JoinPrayerService_to_End.AddPreAction(new TransitionAction_Message("MessagePrayerServiceAborted".Translate(), MessageTypeDefOf.NeutralEvent));
                stateGraph.AddTransition(transition_JoinPrayerService_to_End);
            }
            #endregion

            #region Transition_PrayerService => Others
            {
                // 일정틱 진행되었거나, 취소될만한 상황이 될 경우 강제로 종료
                triggerProgress = new Trigger_TicksPassed(Rand.Range(ConstPriest.PrayerServiceOnStageTicksMin, ConstPriest.PrayerServiceOnStageTicksMax));
                Transition transition_PrayerService_to_End = new Transition(lordToil_PrayerService, lordToil_End);
                transition_PrayerService_to_End.AddTrigger(triggerProgress);
                transition_PrayerService_to_End.AddTrigger(new Trigger_PawnHarmed());
                transition_PrayerService_to_End.AddTrigger(new Trigger_TickCondition(IsAborted));
                transition_PrayerService_to_End.AddPreAction(new TransitionAction_Message("MessagePrayerServiceEnded".Translate()));
                stateGraph.AddTransition(transition_PrayerService_to_End);
            }
            #endregion

            return(stateGraph);
        }
コード例 #17
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(this.firstPawn.LabelShort, this.secondPawn.LabelShort, this.firstPawn.Named("PAWN1"), this.secondPawn.Named("PAWN2")), 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(this.firstPawn.LabelShort, this.secondPawn.LabelShort, this.firstPawn.Named("PAWN1"), this.secondPawn.Named("PAWN2")), 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(this.firstPawn.LabelShort, this.secondPawn.LabelShort, this.firstPawn.Named("PAWN1"), this.secondPawn.Named("PAWN2")), 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(this.firstPawn.LabelShort, this.secondPawn.LabelShort, this.firstPawn.Named("PAWN1"), this.secondPawn.Named("PAWN2")), 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(this.firstPawn.LabelShort, this.secondPawn.LabelShort, this.firstPawn.Named("PAWN1"), this.secondPawn.Named("PAWN2")), 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(this.firstPawn.LabelShort, this.secondPawn.LabelShort, this.firstPawn.Named("PAWN1"), this.secondPawn.Named("PAWN2")), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false), null, 1f));
            stateGraph.AddTransition(transition6, false);
            return(stateGraph);
        }
コード例 #18
0
        public override StateGraph CreateGraph()
        {
            StateGraph     stateGraph     = new StateGraph();
            LordToil_Party lordToil_Party = new LordToil_Party(spot, GatheringDefOf.Party);

            stateGraph.AddToil(lordToil_Party);
            LordToil_MarriageCeremony lordToil_MarriageCeremony = new LordToil_MarriageCeremony(firstPawn, secondPawn, spot);

            stateGraph.AddToil(lordToil_MarriageCeremony);
            LordToil_Party lordToil_Party2 = new LordToil_Party(spot, GatheringDefOf.Party);

            stateGraph.AddToil(lordToil_Party2);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition transition = new Transition(lordToil_Party, lordToil_MarriageCeremony);

            transition.AddTrigger(new Trigger_TickCondition(() => lord.ticksInToil >= 5000 && AreFiancesInPartyArea()));
            transition.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyStarts".Translate(firstPawn.LabelShort, secondPawn.LabelShort, firstPawn.Named("PAWN1"), secondPawn.Named("PAWN2")), MessageTypeDefOf.PositiveEvent, firstPawn));
            stateGraph.AddTransition(transition);
            Transition transition2 = new Transition(lordToil_MarriageCeremony, lordToil_Party2);

            transition2.AddTrigger(new Trigger_TickCondition(() => firstPawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, secondPawn)));
            transition2.AddPreAction(new TransitionAction_Message("MessageNewlyMarried".Translate(firstPawn.LabelShort, secondPawn.LabelShort, firstPawn.Named("PAWN1"), secondPawn.Named("PAWN2")), MessageTypeDefOf.PositiveEvent, new TargetInfo(spot, base.Map)));
            transition2.AddPreAction(new TransitionAction_Custom((Action) delegate
            {
                AddAttendedWeddingThoughts();
            }));
            stateGraph.AddTransition(transition2);
            Transition transition3 = new Transition(lordToil_Party2, lordToil_End);

            transition3.AddTrigger(new Trigger_TickCondition(() => ShouldAfterPartyBeCalledOff()));
            transition3.AddTrigger(new Trigger_PawnKilled());
            stateGraph.AddTransition(transition3);
            afterPartyTimeoutTrigger = new Trigger_TicksPassed(7500);
            Transition transition4 = new Transition(lordToil_Party2, lordToil_End);

            transition4.AddTrigger(afterPartyTimeoutTrigger);
            transition4.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyAfterPartyFinished".Translate(firstPawn.LabelShort, secondPawn.LabelShort, firstPawn.Named("PAWN1"), secondPawn.Named("PAWN2")), MessageTypeDefOf.PositiveEvent, firstPawn));
            stateGraph.AddTransition(transition4);
            Transition transition5 = new Transition(lordToil_MarriageCeremony, lordToil_End);

            transition5.AddSource(lordToil_Party);
            transition5.AddTrigger(new Trigger_TickCondition(() => lord.ticksInToil >= 120000 && (firstPawn.Drafted || secondPawn.Drafted || !firstPawn.Position.InHorDistOf(spot, 4f) || !secondPawn.Position.InHorDistOf(spot, 4f))));
            transition5.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyCalledOff".Translate(firstPawn.LabelShort, secondPawn.LabelShort, firstPawn.Named("PAWN1"), secondPawn.Named("PAWN2")), MessageTypeDefOf.NegativeEvent, new TargetInfo(spot, base.Map)));
            stateGraph.AddTransition(transition5);
            Transition transition6 = new Transition(lordToil_MarriageCeremony, lordToil_End);

            transition6.AddSource(lordToil_Party);
            transition6.AddTrigger(new Trigger_TickCondition(() => ShouldCeremonyBeCalledOff()));
            transition6.AddTrigger(new Trigger_PawnKilled());
            transition6.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyCalledOff".Translate(firstPawn.LabelShort, secondPawn.LabelShort, firstPawn.Named("PAWN1"), secondPawn.Named("PAWN2")), MessageTypeDefOf.NegativeEvent, new TargetInfo(spot, base.Map)));
            stateGraph.AddTransition(transition6);
            return(stateGraph);
        }
コード例 #19
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil_DefendAndExpandHive lordToil_DefendAndExpandHive = new LordToil_DefendAndExpandHive();

            lordToil_DefendAndExpandHive.distToQueenToAttack = 16f;
            stateGraph.StartingToil = lordToil_DefendAndExpandHive;

            LordToil_AssaultColony lordToil_AssaultColony = new LordToil_AssaultColony();

            stateGraph.AddToil(lordToil_AssaultColony);
            Transition transition = new Transition(lordToil_DefendAndExpandHive, lordToil_AssaultColony, false, true);

            transition.AddTrigger(new Trigger_Memo(Queen.MemoAttackedByEnemy));
            transition.AddPostAction(new TransitionAction_EndAllJobs());
            stateGraph.AddTransition(transition, false);

            LordToil_QueenKilled lordToil_QueenKilled = new LordToil_QueenKilled();

            stateGraph.AddToil(lordToil_QueenKilled);
            Transition transition2 = new Transition(lordToil_DefendAndExpandHive, lordToil_QueenKilled);

            transition2.AddTrigger(new Trigger_Memo(Queen.MemoDestroyedNonRoofCollapse));
            transition2.AddTrigger(new Trigger_Memo(Queen.MemoDeSpawned));
            transition2.AddPostAction(new TransitionAction_EndAllJobs());
            stateGraph.AddTransition(transition2);

            LordToil_HiveDefense lordToil_HiveDefense = new LordToil_HiveDefense();

            stateGraph.AddToil(lordToil_HiveDefense);
            Transition transition3 = new Transition(lordToil_DefendAndExpandHive, lordToil_HiveDefense);

            transition3.AddTrigger(new Trigger_PawnHarmed(0.1f, false, Map.ParentFaction));
            transition3.AddPostAction(new TransitionAction_EndAllJobs());
            stateGraph.AddTransition(transition3);

            Transition transition4 = new Transition(lordToil_HiveDefense, lordToil_DefendAndExpandHive);

            transition4.AddTrigger(new Trigger_TicksPassedWithoutHarmOrMemos(1200, new string[]
            {
                Insect.MemoAttackedByEnemy
            }));
            transition4.AddPostAction(new TransitionAction_EndAllJobs());
            stateGraph.AddTransition(transition4);

            Transition transition5 = new Transition(lordToil_AssaultColony, lordToil_DefendAndExpandHive);

            transition5.AddTrigger(new Trigger_TicksPassedWithoutHarmOrMemos(7500, new string[]
            {
                Queen.MemoAttackedByEnemy
            }));
            transition5.AddPostAction(new TransitionAction_EndAttackBuildingJobs());
            stateGraph.AddTransition(transition5);
            return(stateGraph);
        }
コード例 #20
0
        public override StateGraph CreateGraph()
        {
            StateGraph      stateGraph      = new StateGraph();
            LordToil_Travel lordToil_Travel = new LordToil_Travel(this.groupUpLoc);

            lordToil_Travel.maxDanger     = Danger.Deadly;
            lordToil_Travel.avoidGridMode = AvoidGridMode.Smart;
            stateGraph.StartingToil       = lordToil_Travel;
            LordToil_PrisonerEscape lordToil_PrisonerEscape = new LordToil_PrisonerEscape(this.exitPoint, this.sapperThingID);

            lordToil_PrisonerEscape.avoidGridMode = AvoidGridMode.Smart;
            stateGraph.AddToil(lordToil_PrisonerEscape);
            LordToil_ExitMap lordToil_ExitMap = new LordToil_ExitMap(LocomotionUrgency.Jog, false);

            lordToil_ExitMap.avoidGridMode = AvoidGridMode.Smart;
            stateGraph.AddToil(lordToil_ExitMap);
            LordToil_ExitMap lordToil_ExitMap2 = new LordToil_ExitMap(LocomotionUrgency.Jog, true);

            stateGraph.AddToil(lordToil_ExitMap2);
            Transition transition = new Transition(lordToil_Travel, lordToil_ExitMap2);

            transition.AddSources(new LordToil[]
            {
                lordToil_PrisonerEscape,
                lordToil_ExitMap
            });
            transition.AddTrigger(new Trigger_PawnCannotReachMapEdge());
            stateGraph.AddTransition(transition);
            Transition transition2 = new Transition(lordToil_ExitMap2, lordToil_ExitMap);

            transition2.AddTrigger(new Trigger_PawnCanReachMapEdge());
            transition2.AddPostAction(new TransitionAction_EndAllJobs());
            stateGraph.AddTransition(transition2);
            Transition transition3 = new Transition(lordToil_Travel, lordToil_PrisonerEscape);

            transition3.AddTrigger(new Trigger_Memo("TravelArrived"));
            stateGraph.AddTransition(transition3);
            Transition transition4 = new Transition(lordToil_Travel, lordToil_PrisonerEscape);

            transition4.AddTrigger(new Trigger_PawnLost());
            stateGraph.AddTransition(transition4);
            Transition transition5 = new Transition(lordToil_PrisonerEscape, lordToil_PrisonerEscape);

            transition5.canMoveToSameState = true;
            transition5.AddTrigger(new Trigger_PawnLost());
            transition5.AddTrigger(new Trigger_PawnHarmed(1f, false));
            stateGraph.AddTransition(transition5);
            Transition transition6 = new Transition(lordToil_PrisonerEscape, lordToil_ExitMap);

            transition6.AddTrigger(new Trigger_Memo("TravelArrived"));
            stateGraph.AddTransition(transition6);
            return(stateGraph);
        }
コード例 #21
0
        // 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);
        }
コード例 #22
0
        // Token: 0x0600078D RID: 1933 RVA: 0x0003FC4C File Offset: 0x0003E04C
        public override StateGraph CreateGraph()
        {
            //StateGraph stateGraph = new StateGraph();
            //LordToil_Gathering lordToil_Party = new LordToil_Gathering(this.spot, 600);
            //stateGraph.AddToil(lordToil_Party);

            //LordToil_End lordToil_End = new LordToil_End();
            //stateGraph.AddToil(lordToil_End);

            //Transition transition = new Transition(lordToil_Party, lordToil_End);

            //transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff(), 1));
            //transition.AddTrigger(new Trigger_PawnLostViolently());
            //transition.AddPreAction(new TransitionAction_Message("Funeral called off.", MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false)));
            //stateGraph.AddTransition(transition);
            //this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(5000, 15000));
            //Transition transition2 = new Transition(lordToil_Party, lordToil_End);
            //transition2.AddTrigger(this.timeoutTrigger);
            //transition2.AddPreAction(new TransitionAction_Message("Funeral finished.", MessageTypeDefOf.SituationResolved, new TargetInfo(this.spot, base.Map, false)));
            //stateGraph.AddTransition(transition2);
            //return stateGraph;

            StateGraph stateGraph = new StateGraph();

            LordToil_Gathering lordToil_Party = new LordToil_Gathering(this.spot, 600);

            stateGraph.AddToil(lordToil_Party);

            //LordToil_MarriageCeremony lordToil_MarriageCeremony = new LordToil_MarriageCeremony(this.organizer, this.organizer, this.spot);
            //stateGraph.AddToil(lordToil_MarriageCeremony);

            LordToil_EndGathering lordToil_End = new LordToil_EndGathering();

            stateGraph.AddToil(lordToil_End);

            Transition transition = new Transition(lordToil_Party, lordToil_End);

            transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff(), 1));
            transition.AddTrigger(new Trigger_PawnLostViolently());
            //transition.AddPreAction(new TransitionAction_Message("Funeral called off.", MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false)));
            transition.AddPreAction(new TransitionAction_Message("FuneralCalledOff".Translate(), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false)));
            stateGraph.AddTransition(transition);
            this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(5000, 15000));
            Transition transition2 = new Transition(lordToil_Party, lordToil_End);

            transition2.AddTrigger(this.timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Message("FuneralFinished".Translate(), MessageTypeDefOf.SituationResolved, new TargetInfo(this.spot, base.Map, false)));
            //transition2.AddPreAction(new TransitionAction_Message("Funeral finished.", MessageTypeDefOf.SituationResolved, new TargetInfo(this.spot, base.Map, false)));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
コード例 #23
0
        //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);
        }
コード例 #24
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();

            if (!defSpot.IsValid)
            {
                Log.Warning("LordJob_MechanoidsDefendShip defSpot is invalid. Returning graph for LordJob_AssaultColony.");
                stateGraph.AttachSubgraph(new LordJob_AssaultColony(faction).CreateGraph());
                return(stateGraph);
            }
            LordToil_DefendPoint   lordToil_DefendPoint   = (LordToil_DefendPoint)(stateGraph.StartingToil = new LordToil_DefendPoint(defSpot, defendRadius));
            LordToil_AssaultColony lordToil_AssaultColony = new LordToil_AssaultColony();

            stateGraph.AddToil(lordToil_AssaultColony);
            if (canAssaultColony)
            {
                LordToil_AssaultColony lordToil_AssaultColony2 = new LordToil_AssaultColony();
                stateGraph.AddToil(lordToil_AssaultColony2);
                Transition transition = new Transition(lordToil_DefendPoint, lordToil_AssaultColony);
                transition.AddSource(lordToil_AssaultColony2);
                transition.AddTrigger(new Trigger_PawnCannotReachMapEdge());
                stateGraph.AddTransition(transition);
                Transition transition2 = new Transition(lordToil_DefendPoint, lordToil_AssaultColony2);
                transition2.AddTrigger(new Trigger_PawnHarmed(0.5f, requireInstigatorWithFaction: true));
                transition2.AddTrigger(new Trigger_PawnLostViolently());
                transition2.AddTrigger(new Trigger_Memo(MemoDamaged));
                transition2.AddPostAction(new TransitionAction_EndAllJobs());
                stateGraph.AddTransition(transition2);
                Transition transition3 = new Transition(lordToil_AssaultColony2, lordToil_DefendPoint);
                transition3.AddTrigger(new Trigger_TicksPassedWithoutHarmOrMemos(1380, MemoDamaged));
                transition3.AddPostAction(new TransitionAction_EndAttackBuildingJobs());
                stateGraph.AddTransition(transition3);
                Transition transition4 = new Transition(lordToil_DefendPoint, lordToil_AssaultColony);
                transition4.AddSource(lordToil_AssaultColony2);
                transition4.AddTrigger(new Trigger_AnyThingDamageTaken(things, 0.5f));
                transition4.AddTrigger(new Trigger_Memo(HediffGiver_Heat.MemoPawnBurnedByAir));
                stateGraph.AddTransition(transition4);
            }
            Transition transition5 = new Transition(lordToil_DefendPoint, lordToil_AssaultColony);

            transition5.AddTrigger(new Trigger_ChanceOnSignal(TriggerSignalType.MechClusterDefeated, 1f));
            stateGraph.AddTransition(transition5);
            if (!isMechCluster)
            {
                Transition transition6 = new Transition(lordToil_DefendPoint, lordToil_AssaultColony);
                transition6.AddTrigger(new Trigger_AnyThingDamageTaken(things, 1f));
                stateGraph.AddTransition(transition6);
            }
            return(stateGraph);
        }
コード例 #25
0
        public override StateGraph CreateGraph()
        {
            StateGraph     stateGraph   = new StateGraph();
            LordToil_Stage firstSource  = (LordToil_Stage)(stateGraph.StartingToil = new LordToil_Stage(this.stageLoc));
            LordToil       startingToil = stateGraph.AttachSubgraph(new LordJob_AssaultColony(this.faction, true, true, false, false, true).CreateGraph()).StartingToil;
            Transition     transition   = new Transition(firstSource, startingToil);

            transition.AddTrigger(new Trigger_TicksPassed(Rand.Range(5000, 15000)));
            transition.AddTrigger(new Trigger_FractionPawnsLost(0.3f));
            transition.AddPreAction(new TransitionAction_Message("MessageRaidersBeginningAssault".Translate(this.faction.def.pawnsPlural.CapitalizeFirst(), this.faction.Name), MessageTypeDefOf.ThreatBig));
            transition.AddPostAction(new TransitionAction_WakeAll());
            stateGraph.AddTransition(transition);
            return(stateGraph);
        }
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil_DefendTraderCaravan firstSource      = (LordToil_DefendTraderCaravan)(stateGraph.StartingToil = new LordToil_DefendTraderCaravan(this.defendSpot));
            LordToil_ExitMap             lordToil_ExitMap = new LordToil_ExitMap(LocomotionUrgency.None, false);

            stateGraph.AddToil(lordToil_ExitMap);
            Transition transition = new Transition(firstSource, lordToil_ExitMap);

            transition.AddTrigger(new Trigger_BecameColonyAlly());
            transition.AddTrigger(new Trigger_TraderAndAllTraderCaravanGuardsLost());
            stateGraph.AddTransition(transition);
            return(stateGraph);
        }
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil_DefendTraderCaravan firstSource      = (LordToil_DefendTraderCaravan)(stateGraph.StartingToil = new LordToil_DefendTraderCaravan(defendSpot));
            LordToil_ExitMap             lordToil_ExitMap = new LordToil_ExitMap();

            stateGraph.AddToil(lordToil_ExitMap);
            Transition transition = new Transition(firstSource, lordToil_ExitMap);

            transition.AddTrigger(new Trigger_BecameNonHostileToPlayer());
            transition.AddTrigger(new Trigger_TraderAndAllTraderCaravanGuardsLost());
            stateGraph.AddTransition(transition);
            return(stateGraph);
        }
コード例 #28
0
        public override StateGraph CreateGraph()
        {
            StateGraph     stateGraph     = new StateGraph();
            LordToil_Stage lordToil_Stage = new LordToil_Stage(this.stageLoc);

            stateGraph.StartingToil = lordToil_Stage;
            LordToil   startingToil = stateGraph.AttachSubgraph(new LordJob_AssaultColony(this.faction, true, true, false, false, true).CreateGraph()).StartingToil;
            Transition transition   = new Transition(lordToil_Stage, startingToil);

            transition.AddTrigger(new Trigger_TicksPassed(this.ticksUntilAssault));
            transition.AddTrigger(new Trigger_FractionPawnsLost(0.3f));
            transition.AddPreAction(new TransitionAction_WakeAll());
            stateGraph.AddTransition(transition);
            return(stateGraph);
        }
コード例 #29
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();

            LordToil_ActivityStage stageToil = new LordToil_ActivityStage(data);

            stateGraph.AddToil(stageToil);

            LordToil_End endToil = new LordToil_End();

            stateGraph.AddToil(endToil);

            Transition transition = new Transition(stageToil, stageToil, true, true);

            transition.AddTrigger((Trigger) new Trigger_TickCondition((Func <bool>)(() => AllSignalsReceived && ShouldMoveNext)));
            transition.AddPreAction((TransitionAction) new TransitionAction_Custom((Action)(() => MoveNext())));

            stateGraph.AddTransition(transition);

            Transition transition2 = new Transition(stageToil, endToil, false, true);

            transition2.AddTrigger((Trigger) new Trigger_TickCondition((Func <bool>)(() => AllSignalsReceived && ShouldEndActivity)));
            transition2.AddPreAction((TransitionAction) new TransitionAction_Custom((Action)(() => ActivityEnd())));
            stateGraph.AddTransition(transition2);

            Transition transition3 = new Transition(stageToil, endToil, false, true);

            transition3.AddTrigger((Trigger) new Trigger_TickCondition((Func <bool>)(() => ShouldActivityBeCalledOff)));
            stateGraph.AddTransition(transition3);

            return(stateGraph);
        }
コード例 #30
0
        public override StateGraph CreateGraph()
        {
            var stateGraph    = new StateGraph();
            var baseGraph     = base.CreateGraph();
            var locpickerToil = new LordToil_AssaultColonyLockpicker
            {
                useAvoidGrid = true,
            };

            if (lockpicker)
            {
                stateGraph.AddToil(locpickerToil);
                var assaultToil        = sappers ? baseGraph.lordToils[1] : baseGraph.lordToils[0];
                var lockpickToLockpick = new Transition(locpickerToil, locpickerToil, canMoveToSameState: true);
                lockpickToLockpick.AddTrigger(new Trigger_PawnLost());
                stateGraph.AddTransition(lockpickToLockpick);
                var lockpickToAssault = new Transition(locpickerToil, assaultToil);
                lockpickToAssault.AddTrigger(new Trigger_NoFightingLockpickers());
                stateGraph.AddTransition(lockpickToAssault);
                //foreach (var trans in baseGraph.transitions)
                //     trans.AddSource(locpickerToil);
            }
            stateGraph.AttachSubgraph(baseGraph);
            return(stateGraph);
        }
コード例 #31
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil_DefendOutpost lordToil_Defend = new LordToil_DefendOutpost(this.rallyPoint);
            stateGraph.AddToil(lordToil_Defend);
            LordToil_End lordToil_End = new LordToil_End();
            stateGraph.AddToil(lordToil_End);

            this.timeoutTrigger = new Trigger_TicksPassed(8000);
            Transition transition = new Transition(lordToil_Defend, lordToil_End);
            transition.AddTrigger(this.timeoutTrigger);
            //transition.AddPreAction(new TransitionAction_Message("Defend lord timeout.", MessageSound.Standard, this.rallyPoint));
            stateGraph.AddTransition(transition);

            Trigger_Memo memoTrigger = new Trigger_Memo("ThreatIsFinished");
            Transition transition2 = new Transition(lordToil_Defend, lordToil_End);
            transition2.AddTrigger(memoTrigger);
            //transition2.AddPreAction(new TransitionAction_Message("Defend lord threat is finished.", MessageSound.Standard, this.rallyPoint));
            stateGraph.AddTransition(transition2);

            return stateGraph;
        }