Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
        public override StateGraph CreateGraph()
        {
            StateGraph graph = new StateGraph();
            LordToil_ControlMechanoid sdToil = new LordToil_ControlMechanoid();

            graph.AddToil(sdToil);
            LordToil_End endToil = new LordToil_End();

            Transition endTransition = new Transition(sdToil, endToil);

            endTransition.AddTrigger(new Trigger_Custom(delegate
            {
                Pawn pawn      = this.lord.ownedPawns[0];
                Pawn mech      = pawn.RemoteControlLink();
                bool shouldEnd = (mech == null || !mech.Spawned || mech.Dead || mech.Downed || pawn.UnableToControl());
                if (shouldEnd)
                {
                    if (mech != null)
                    {
                        ExtendedPawnData mechData  = Base.Instance.GetExtendedDataStorage().GetExtendedDataFor(mech);
                        mechData.remoteControlLink = null;
                    }
                    ExtendedPawnData pawnData  = Base.Instance.GetExtendedDataStorage().GetExtendedDataFor(pawn);
                    pawnData.remoteControlLink = null;
                }
                return(shouldEnd);
            }));
            graph.AddToil(endToil);
            graph.AddTransition(endTransition);

            return(graph);
        }
Exemplo n.º 3
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(), MessageTypeDefOf.NegativeEvent));
            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 {
                this.CancelLoadingProcess();
            })));
            stateGraph.AddTransition(endTransition);
            return(stateGraph);
        }
Exemplo n.º 4
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);
        }
        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);
        }
Exemplo n.º 6
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);
        }
        // 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);
        }
Exemplo n.º 8
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);
        }
        public override StateGraph CreateGraph()
        {
            var      stateGraph = new StateGraph();
            LordToil lordToil   = CreateGatheringToil(spot, organizer, gatheringDef);

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

            stateGraph.AddToil(lordToil_End);
            var speechDuration = 12500f;
            var 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(lord.ticksInToil / speechDuration);
            }));
            stateGraph.AddTransition(transition);
            timeoutTrigger = new Trigger_TicksPassedAfterConditionMet((int)speechDuration,
                                                                      () => GatheringsUtility.InGatheringArea(organizer.Position,
                                                                                                              spot,
                                                                                                              organizer.Map), 60);
            var transition2 = new Transition(lordToil, lordToil_End);

            transition2.AddTrigger(timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Custom((Action) delegate { ApplyOutcome(1f); }));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
Exemplo n.º 10
0
        public override StateGraph CreateGraph()
        {
            StateGraph     stateGraph = new StateGraph();
            LordToil_Arson fireToil   = new LordToil_Arson(FireSpot);

            stateGraph.StartingToil = fireToil;
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);

            LordToil   startingToil2 = stateGraph.AttachSubgraph(new LordJob_AssaultColony(Faction).CreateGraph()).StartingToil;
            Transition transition2   = new Transition(fireToil, startingToil2);

            transition2.AddTrigger(new Trigger_FractionPawnsLost(0.1f));
            stateGraph.AddTransition(transition2);

            timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(25000, 50000));
            Transition transition3 = new Transition(fireToil, lordToil_End);

            transition3.AddTrigger(timeoutTrigger);
            transition3.AddPreAction(new TransitionAction_Message("ArsonOut".Translate(), MessageTypeDefOf.SituationResolved));
            stateGraph.AddTransition(transition3);

            return(stateGraph);
        }
Exemplo n.º 11
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_PawnLostViolently());
            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);
        }
Exemplo n.º 12
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);
        }
Exemplo n.º 13
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_TickCondition(() => this.initiator.Map == null || this.recipient.Map == null));
            transition.AddTrigger(new Trigger_PawnLost());
            stateGraph.AddTransition(transition);
            this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(GenDate.TicksPerHour * 3, GenDate.TicksPerHour * 5));
            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);
        }
Exemplo n.º 14
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);
        }
Exemplo n.º 15
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil_LoadAndEnterTransporters lordToil_LoadAndEnterTransporters = (LordToil_LoadAndEnterTransporters)(stateGraph.StartingToil = new LordToil_LoadAndEnterTransporters(transportersGroup));
            LordToil_End toil = new LordToil_End();

            stateGraph.AddToil(toil);
            return(stateGraph);
        }
        public override StateGraph CreateGraph()
        {
            StateGraph     stateGraph     = new StateGraph();
            LordToil_Party lordToil_Party = new LordToil_Party(this.spot, 2200);

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

            stateGraph.AddToil(lordToil_MarriageCeremony);
            LordToil_Party lordToil_Party2 = new LordToil_Party(this.spot, 2200);

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

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

            transition.AddTrigger(new Trigger_TickCondition(() => this.lord.ticksInToil >= 5000 && this.AreFiancesInPartyArea(), 1));
            transition.AddPreAction(new TransitionAction_Message("MessageMarriageCeremonyStarts".Translate(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);
        }
Exemplo n.º 17
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);
        }
        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);
        }
Exemplo n.º 19
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil_LoadAndEnterPit startingToil = new LordToil_LoadAndEnterPit(this.transportersGroup);

            stateGraph.StartingToil = startingToil;
            LordToil_End toil = new LordToil_End();

            stateGraph.AddToil(toil);
            return(stateGraph);
        }
        // Token: 0x06000042 RID: 66 RVA: 0x0000338C File Offset: 0x0000158C
        public override StateGraph CreateGraph()
        {
            var stateGraph            = new StateGraph();
            var lordToilFightingMatch = new LordToil_FightingMatch(spot, bell);

            stateGraph.AddToil(lordToilFightingMatch);
            var lordToilEnd = new LordToil_End();

            stateGraph.AddToil(lordToilEnd);
            var transition = new Transition(lordToilFightingMatch, lordToilEnd);

            transition.AddTrigger(new Trigger_TickCondition(() => bell.currentState == Building_Bell.State.rest));
            stateGraph.AddTransition(transition);
            return(stateGraph);
        }
Exemplo n.º 21
0
        // Token: 0x06000042 RID: 66 RVA: 0x0000338C File Offset: 0x0000158C
        public override StateGraph CreateGraph()
        {
            StateGraph             stateGraph            = new StateGraph();
            LordToil_FightingMatch lordToilFightingMatch = new LordToil_FightingMatch(this.spot, this.bell);

            stateGraph.AddToil(lordToilFightingMatch);
            LordToil_End lordToilEnd = new LordToil_End();

            stateGraph.AddToil(lordToilEnd);
            Transition transition = new Transition(lordToilFightingMatch, lordToilEnd, false, true);

            transition.AddTrigger(new Trigger_TickCondition(() => this.bell.currentState == Building_Bell.State.rest, 1));
            stateGraph.AddTransition(transition, false);
            return(stateGraph);
        }
Exemplo n.º 22
0
        public override StateGraph CreateGraph()
        {
            StateGraph stateGraph = new StateGraph();
            LordToil_LoadAndEnterTransporters firstSource = (LordToil_LoadAndEnterTransporters)(stateGraph.StartingToil = new LordToil_LoadAndEnterTransporters(this.transportersGroup));
            LordToil_End lordToil_End = new LordToil_End();

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

            transition.AddTrigger(new Trigger_PawnLost());
            transition.AddPreAction(new TransitionAction_Message("MessageFailedToLoadTransportersBecauseColonistLost".Translate(), MessageTypeDefOf.NegativeEvent));
            transition.AddPreAction(new TransitionAction_Custom(this.CancelLoadingProcess));
            stateGraph.AddTransition(transition);
            return(stateGraph);
        }
Exemplo n.º 23
0
        public override StateGraph CreateGraph()
        {
            StateGraph          stateGraph        = new StateGraph();
            Lord_Toil_Execution lordToilExecution = new Lord_Toil_Execution(spot, SpotE);

            stateGraph.AddToil(lordToilExecution);
            LordToil_End lordToilEnd = new LordToil_End();

            stateGraph.AddToil(lordToilEnd);
            Transition transition = new Transition(lordToilExecution, lordToilEnd, false, true);

            transition.AddTrigger(new Trigger_TickCondition(() => this.SpotE.currentState == Building_SpotExecution.State.rest, 1));
            transition.AddTrigger(new Trigger_TickCondition(() => this.SpotE.currentState == Building_SpotExecution.State.preparation || this.SpotE.currentState == Building_SpotExecution.State.inMotion, 9000));
            stateGraph.AddTransition(transition, false);
            return(stateGraph);
        }
        public override StateGraph CreateGraph()
        {
            var stateGraph = new StateGraph();
            var lordToil_LoadAndEnterTransporters = new LordToil_LoadAndEnterTransportersPawn(transportersGroup);

            stateGraph.StartingToil = lordToil_LoadAndEnterTransporters;
            var lordToil_End = new LordToil_End();

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

            transition.AddTrigger(new Trigger_PawnLost());
            //transition.AddPreAction(new TransitionAction_Message("MessageFailedToLoadTransportersBecauseColonistLost".Translate(), MessageTypeDefOf.NegativeEvent));
            transition.AddPreAction(new TransitionAction_Custom(CancelLoadingProcess));
            stateGraph.AddTransition(transition);
            return(stateGraph);
        }
        public override StateGraph CreateGraph()
        {
            StateGraph graph = new StateGraph();
            LordToil_SearchAndDestroy sdToil = new LordToil_SearchAndDestroy();

            graph.AddToil(sdToil);
            LordToil_End endToil = new LordToil_End();

            graph.AddToil(endToil);
            Transition endTransition = new Transition(sdToil, endToil);

            //TODO: revise this
            endTransition.AddTrigger(new Trigger_TicksPassedWithoutHarm(900));
            endTransition.AddTrigger(new Trigger_Custom(delegate {
                return(!this.lord.ownedPawns[0].IsActivated());
            }));
            return(graph);
        }
        public override StateGraph CreateGraph()
        {
            StateGraph graph = new StateGraph();
            LordToil_SearchAndDestroy sdToil = new LordToil_SearchAndDestroy();

            graph.AddToil(sdToil);
            LordToil_End endToil = new LordToil_End();

            graph.AddToil(endToil);
            Transition endTransition = new Transition(sdToil, endToil);

            endTransition.AddTrigger(new Trigger_Custom(delegate {
                Pawn pawn   = this.lord.ownedPawns[0];
                bool result = !pawn.IsActivated();
                return(result);
            }));
            graph.AddTransition(endTransition);
            return(graph);
        }
Exemplo n.º 27
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.AddTrigger(new Trigger_TicksPassed(7500));
            transition.AddPreAction(new TransitionAction_Message("MessageFailedToLoadTransportersBecauseColonistLost".Translate(), MessageSound.Negative));
            transition.AddPreAction(new TransitionAction_Custom(new Action(this.CancelLoadingProcess)));
            stateGraph.AddTransition(transition);

            return(stateGraph);
        }
Exemplo n.º 28
0
        public override StateGraph CreateGraph()
        {
            string message = "StartedSermonMessage".Translate(new object[]
            {
                this.Preacher.Name,
                this.MorningPrayerString,
                this.altar.RoomName
            });

            Messages.Message(message, this.altar, MessageSound.Negative);
            StateGraph stateGraph   = new StateGraph();
            LordToil   startingToil = stateGraph.AttachSubgraph(new LordJob_Travel(this.initialPosition).CreateGraph()).StartingToil;

            stateGraph.StartingToil = startingToil;
            LordToil_StartSermom sermonToil = new LordToil_StartSermom(this.Preacher, this.altar);

            stateGraph.AddToil(sermonToil);
            Transition startSermonTransition = new Transition(startingToil, sermonToil);

            startSermonTransition.AddTrigger(new Trigger_Memo("TravelArrived"));
            stateGraph.AddTransition(startSermonTransition);
            LordToil_End lordToil_End = new LordToil_End();

            stateGraph.AddToil(lordToil_End);
            Transition failedTransition = new Transition(startingToil, lordToil_End);

            failedTransition.AddSource(sermonToil);
            failedTransition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff()));
            failedTransition.AddTrigger(new Trigger_PawnLostViolently());
            failedTransition.AddPreAction(new TransitionAction_Message("MessageSermonInterrupted".Translate(), MessageSound.Negative, new TargetInfo(this.altar.Position, base.Map, false)));
            stateGraph.AddTransition(failedTransition);
            Transition transition2 = new Transition(sermonToil, lordToil_End);

            transition2.AddTrigger(new Trigger_TickCondition(() => !this.altar.activeSermon));
            transition2.AddPreAction(new TransitionAction_Message("MessageSermonFinished".Translate(), MessageSound.Negative, new TargetInfo(this.altar.Position, base.Map, false)));

            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
        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;
        }
        public override StateGraph CreateGraph()
        {
            StateGraph     stateGraph     = new StateGraph();
            LordToil_Party lordToil_Party = new LordToil_Party(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, false, true);

            transition.AddTrigger(new Trigger_TickCondition(() => this.ShouldBeCalledOff(), 1));
            transition.AddTrigger(new Trigger_PawnKilled());
            transition.AddPreAction(new TransitionAction_Message("MessagePartyCalledOff".Translate(), MessageTypeDefOf.NegativeEvent, new TargetInfo(this.spot, base.Map, false), null, 1f));
            stateGraph.AddTransition(transition);
            this.timeoutTrigger = new Trigger_TicksPassed(Rand.RangeInclusive(5000, 15000));
            Transition transition2 = new Transition(lordToil_Party, lordToil_End, false, true);

            transition2.AddTrigger(this.timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Message("MessagePartyFinished".Translate(), MessageTypeDefOf.SituationResolved, new TargetInfo(this.spot, base.Map, false), null, 1f));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }
Exemplo n.º 31
0
        public override StateGraph CreateGraph()
        {
            StateGraph     stateGraph    = new StateGraph();
            LordToil_Party lordToilParty = new LordToil_Party(_spot);

            stateGraph.AddToil(lordToilParty);
            LordToil_End lordToilEnd = new LordToil_End();

            stateGraph.AddToil(lordToilEnd);
            Transition transition = new Transition(lordToilParty, lordToilEnd);

            transition.AddTrigger(new Trigger_TickCondition(ShouldBeCalledOff));
            transition.AddTrigger(new Trigger_PawnLostViolently());
            transition.AddPreAction(new TransitionAction_Message("MessagePartyCalledOff".Translate(), MessageTypeDefOf.NegativeEvent, new TargetInfo(_spot, Map)));
            stateGraph.AddTransition(transition);
            _timeoutTrigger = new Trigger_TicksPassed(GetRandomPartyLength());
            Transition transition2 = new Transition(lordToilParty, lordToilEnd);

            transition2.AddTrigger(_timeoutTrigger);
            transition2.AddPreAction(new TransitionAction_Message("MessagePartyFinished".Translate(), MessageTypeDefOf.NegativeEvent, new TargetInfo(_spot, Map)));
            stateGraph.AddTransition(transition2);
            return(stateGraph);
        }