public static bool ConversationTriggeredReplacement(RemoteDialogueTrigger __instance, out bool __result, out RemoteDialogueTrigger.RemoteDialogueCondition dialogue) { dialogue = default; var dialogueIndex = -1; for (var i = 0; i < __instance._listDialogues.Length; i++) { if (!__instance._activatedDialogues[i]) { var allConditionsMet = true; var anyConditionsMet = __instance._listDialogues[i].prereqConditions.Length == 0; foreach (var prereqCondition in __instance._listDialogues[i].prereqConditions) { if (DialogueConditionManager.SharedInstance.GetConditionState(prereqCondition)) { anyConditionsMet = true; } else { allConditionsMet = false; } } var conditionsMet = false; var prereqConditionType = __instance._listDialogues[i].prereqConditionType; if (prereqConditionType != RemoteDialogueTrigger.MultiConditionType.OR) { if (prereqConditionType == RemoteDialogueTrigger.MultiConditionType.AND && allConditionsMet) { conditionsMet = true; } } else if (anyConditionsMet) { conditionsMet = true; } if (conditionsMet && __instance._listDialogues[i].priority < int.MaxValue) { dialogue = __instance._listDialogues[i]; dialogueIndex = i; } } } if (dialogueIndex == -1) { __result = false; return(false); } __instance._activatedDialogues[dialogueIndex] = true; __result = true; __instance.GetWorldObject <QSBRemoteDialogueTrigger>() .SendMessage(new EnterRemoteDialogueMessage(dialogueIndex)); return(false); }
public RemoteDialogueInitialStateMessage(RemoteDialogueTrigger trigger) { _inRemoteDialogue = trigger._inRemoteDialogue; _activatedDialogues = trigger._activatedDialogues; _dialogueIndex = trigger._listDialogues .IndexOf(x => x.dialogue == trigger._activeRemoteDialogue); _colliderEnabled = trigger._collider.enabled; }