예제 #1
0
        public override void Run(RunPayload payload)
        {
            Main.LogDebug("[EndCombatTrigger] Setting up trigger");
            EncounterLayerData   encounterData = MissionControl.Instance.EncounterLayerData;
            SmartTriggerResponse trigger       = new SmartTriggerResponse();

            trigger.inputMessage   = onMessage;
            trigger.designName     = $"End combat on '{onMessage}'";
            trigger.conditionalbox = new EncounterConditionalBox(conditional);

            DesignResult result = null;

            if (type == EndCombatType.RETREAT)
            {
                result = ScriptableObject.CreateInstance <EndCombatRetreatResult>();
            }
            else
            {
                // Fallback to the only end combat we currently have - Retreat
                result = ScriptableObject.CreateInstance <EndCombatRetreatResult>();
            }

            trigger.resultList.contentsBox.Add(new EncounterResultBox(result));
            encounterData.responseGroup.triggerList.Add(trigger);
        }
예제 #2
0
        public override void Run(RunPayload payload)
        {
            Main.LogDebug("[ChunkTrigger] Setting up trigger");
            EncounterLayerData   encounterData = MissionControl.Instance.EncounterLayerData;
            SmartTriggerResponse trigger       = new SmartTriggerResponse();

            trigger.inputMessage   = onMessage;
            trigger.designName     = $"Initiate chunk on {(MessageTypes)onMessage}";
            trigger.conditionalbox = new EncounterConditionalBox(conditional);

            PositionRegionResult positionRegionResult = ScriptableObject.CreateInstance <PositionRegionResult>();

            positionRegionResult.RegionName = "Region_Withdraw";

            FailObjectivesResult failObjectivesResult = ScriptableObject.CreateInstance <FailObjectivesResult>();

            failObjectivesResult.ObjectiveNameWhiteList.Add("Objective_Withdraw");

            HACK_ActivateChunkResult activateChunkResult = ScriptableObject.CreateInstance <HACK_ActivateChunkResult>();
            EncounterChunkRef        encounterChunkRef   = new EncounterChunkRef();

            encounterChunkRef.EncounterObjectGuid = chunkGuid;
            activateChunkResult.encounterChunk    = encounterChunkRef;

            trigger.resultList.contentsBox.Add(new EncounterResultBox(positionRegionResult));
            trigger.resultList.contentsBox.Add(new EncounterResultBox(failObjectivesResult));
            trigger.resultList.contentsBox.Add(new EncounterResultBox(activateChunkResult));
            encounterData.responseGroup.triggerList.Add(trigger);
        }
 public static bool Prefix(SmartTriggerResponse __instance)
 {
     if (MissionControl.Instance.AllowMissionControl() && !MissionControl.Instance.IsMCLoadingFinished)
     {
         Main.LogDebug("[SmartTriggerResponse.Evaluate] MC is running so this is a pathfinder check. Ignoring so not to trigger regions.");
         return(false);
     }
     return(true);
 }
예제 #4
0
        public override void Run(RunPayload payload)
        {
            Main.LogDebug($"[GenericTrigger] Setting up trigger '{this.name}'");
            EncounterLayerData   encounterData = MissionControl.Instance.EncounterLayerData;
            SmartTriggerResponse trigger       = new SmartTriggerResponse();

            trigger.inputMessage   = onMessage;
            trigger.designName     = $"{description} on {onMessage}";
            trigger.conditionalbox = new EncounterConditionalBox(conditional);

            trigger.resultList.contentsBox = this.results;
            encounterData.responseGroup.triggerList.Add(trigger);
        }
예제 #5
0
        public override void Run(RunPayload payload)
        {
            Main.LogDebug("[DialogTrigger] Setting up trigger");
            EncounterLayerData   encounterData   = MissionControl.Instance.EncounterLayerData;
            SmartTriggerResponse triggerDialogue = new SmartTriggerResponse();

            triggerDialogue.inputMessage   = onMessage;
            triggerDialogue.designName     = $"Initiate dialogue on {triggerDialogue}";
            triggerDialogue.conditionalbox = new EncounterConditionalBox(conditional);

            DialogResult dialogueResult = ScriptableObject.CreateInstance <DialogResult>();

            dialogueResult.dialogueRef.EncounterObjectGuid = dialogueGuid;
            dialogueResult.isInterrupt = this.isInterrupt;

            triggerDialogue.resultList.contentsBox.Add(new EncounterResultBox(dialogueResult));
            encounterData.responseGroup.triggerList.Add(triggerDialogue);
        }
        public override void Run(RunPayload payload)
        {
            Main.LogDebug("[ShowObjectiveTrigger] Setting up trigger");
            EncounterLayerData   encounterData = MissionControl.Instance.EncounterLayerData;
            SmartTriggerResponse trigger       = new SmartTriggerResponse();

            trigger.inputMessage   = onMessage;
            trigger.designName     = $"Show objective on {onMessage}";
            trigger.conditionalbox = new EncounterConditionalBox(conditional);

            ShowObjectiveResult showObjectiveResult = ScriptableObject.CreateInstance <ShowObjectiveResult>();

            showObjectiveResult.ObjectiveGuid       = this.objectiveGuid;
            showObjectiveResult.IsContractObjective = this.isContractObjective;

            trigger.resultList.contentsBox.Add(new EncounterResultBox(showObjectiveResult));
            encounterData.responseGroup.triggerList.Add(trigger);
        }
예제 #7
0
        public override void Run(RunPayload payload)
        {
            Main.LogDebug("[IssueFollowLanceOrderTrigger] Setting up trigger");
            EncounterLayerData   encounterData             = MissionControl.Instance.EncounterLayerData;
            SmartTriggerResponse onEncounterLoadIssueOrder = new SmartTriggerResponse();

            onEncounterLoadIssueOrder.inputMessage   = MessageCenterMessageType.OnEncounterBegin;
            onEncounterLoadIssueOrder.designName     = "Issue Follow Lance AI order on Encounter Start";
            onEncounterLoadIssueOrder.conditionalbox = new EncounterConditionalBox(ScriptableObject.CreateInstance <AlwaysTrueConditional>());

            FollowLanceOrder followOrder = new FollowLanceOrder();

            followOrder.TargetEncounterTags.AddRange(this.targetTags);

            IssueCustomAIOrderResult issueOrder = ScriptableObject.CreateInstance <IssueCustomAIOrderResult>();

            issueOrder.issueAIOrderTo = this.receiverType;
            issueOrder.requiredReceiverTags.AddRange(this.receiverTags);
            issueOrder.aiOrder = followOrder;

            onEncounterLoadIssueOrder.resultList.contentsBox.Add(new EncounterResultBox(issueOrder));
            encounterData.responseGroup.triggerList.Add(onEncounterLoadIssueOrder);
        }