Basically I want the player to have to always click the button of an inactive, active or finished quest in the quest giver dialogue in order to get further info and options for that quest regardless of whether it is the only quest.
As of now, if there is only one quest, the dialogue will always open to the quest info and action options (accept/decline or abandon...), and if the quest objectives have been done, the dialogue will open and automatically finish the quest...
I don't want that.
Is there a way to always have the quest selection buttons show when the dialogue opens, no matter how many quests are available?
Is it possible to have the quest selection button show when turning in the only available quest, so the player has to select the quest by pressing it's button in order to actually complete the quest?
(Other questions)
And is there a way to show normal dialogue from the NPC (as in a conversation) even if there are quests available or active? ... Or is there a way to set up a "talk" or "conversation" button that would be listed along with active/available quest buttons, allowing the player to talk with NPC instead of interacting with quests...
I have Ork Framework... Is it possible to run the quest giver dialogue through the ork dialogue system?
Quest giver dialogue questions
Re: Quest giver dialogue questions
Yes. Make a subclass of the QuestGiver class. Its methods are virtual precisely so you can change behavior like this without having to touch the original scripts. Override the StartMostRelevantDialogue() method. Something like:Orochimaru wrote: ↑Sun Oct 20, 2024 1:00 amIs there a way to always have the quest selection buttons show when the dialogue opens, no matter how many quests are available?
...
Is it possible to have the quest selection button show when turning in the only available quest, so the player has to select the quest by pressing it's button in order to actually complete the quest?
Code: Select all
public class CustomQuestGiver : QuestGiver
{
protected virtual void StartMostRelevantDialogue()
{
RemoveCompletedQuestsWithNoDialogue();
var hasMultipleQuests = activeQuests.Count + offerableQuests.Count + nonOfferableQuests.Count + completedQuests.Count > 1;
var mustShowSpecificQuest = !string.IsNullOrEmpty(overrideQuestIDToShowInDialogue)
if (hasMultipleQuests || mustShowSpecificQuest)
{
base.StartMostRelevantDialogue();
}
else if (activeQuests.Count == 1)
{
ShowActiveQuest(activeQuests[0]);
}
else if (offerableQuests.Count == 1)
{
ShowOfferQuest(offerableQuests[0]);
}
else if (nonOfferableQuests.Count == 1)
{
ShowOfferConditionsUnmet();
}
else if (completedQuests.Count == 1)
{
ShowCompletedQuest();
}
else
{
ShowNoQuestsToDiscuss();
}
}
}
Yes. Very often when people are using Quest Machine with the Dialogue System for Unity integration, they always start a Dialogue System conversation. In the conversation, they check and set Quest Machine quests. So they don't use Quest Machine's UnityUIQuestDialogueUI at all in this case.Orochimaru wrote: ↑Sun Oct 20, 2024 1:00 amAnd is there a way to show normal dialogue from the NPC (as in a conversation) even if there are quests available or active? ... Or is there a way to set up a "talk" or "conversation" button that would be listed along with active/available quest buttons, allowing the player to talk with NPC instead of interacting with quests...
I'm not familiar with the ORK dialogue system. But I'm pretty sure you can do it. Quest Machine has Makinom actions, and you can probably call Makinom actions from the ORK dialogue system.Orochimaru wrote: ↑Sun Oct 20, 2024 1:00 amI have Ork Framework... Is it possible to run the quest giver dialogue through the ork dialogue system?
-
- Posts: 7
- Joined: Sun Oct 20, 2024 12:40 am
Re: Quest giver dialogue questions
Ok first thanks for the info. I'll see about adjusting the quest giver dialogue....
The ork framework dialogue system is actually quite good. I don't own your "Dialogue System asset and can't buy it rn. But the ork framework dialogue system can do nearly anything needed and has its built in global and local variables that work well with branching and conditional dialogue... I'm hoping you would consider looking deeper into that and possibly adding more integration options there... Lol but I would understand why you wouldn't since "Dialogue System" is one of your assets lol.
Anyway thanks for the info. I'll get to it.
The ork framework dialogue system is actually quite good. I don't own your "Dialogue System asset and can't buy it rn. But the ork framework dialogue system can do nearly anything needed and has its built in global and local variables that work well with branching and conditional dialogue... I'm hoping you would consider looking deeper into that and possibly adding more integration options there... Lol but I would understand why you wouldn't since "Dialogue System" is one of your assets lol.
Anyway thanks for the info. I'll get to it.
Re: Quest giver dialogue questions
I think Quest Machine's Makinom integration should suffice. Surely ORK's dialogue system integrates with it.
-
- Posts: 7
- Joined: Sun Oct 20, 2024 12:40 am
Re: Quest giver dialogue questions
It does integrate, but I'm not sure how to work with it. For example. Ork has a schematic node that says "start dialogue". I'm guessing that could open the preset quest giver dialogue from an ork dialogue, but it doesn't seem to go any deeper than that.
That's useful as is, but barely integrated at the level that other quest machine systems are with ork schematics.
Just saying it would have been nice to be able to have an ork schematic node that opened up individual quest dialogues, so I can have them directly as options in an ork dialogue allowing me to have more freedom on how to set up the player experience in this area.
But it's all good. I'm bout to look into what you said about augmenting the quest giver dialogue directly... And I'll just have a single option on the ork dialogue called "quests" that uses the quest machine's "start dialogue" node to open the official quest giver dialogue just for quests while using ork for all other dialogues
That's useful as is, but barely integrated at the level that other quest machine systems are with ork schematics.
Just saying it would have been nice to be able to have an ork schematic node that opened up individual quest dialogues, so I can have them directly as options in an ork dialogue allowing me to have more freedom on how to set up the player experience in this area.
But it's all good. I'm bout to look into what you said about augmenting the quest giver dialogue directly... And I'll just have a single option on the ork dialogue called "quests" that uses the quest machine's "start dialogue" node to open the official quest giver dialogue just for quests while using ork for all other dialogues
Re: Quest giver dialogue questions
Hi,
From Makinom, you can use Call Function or Send Message to call the quest giver's StartSpecifiedQuestDialogueWithPlayer(questID) method.
From Makinom, you can use Call Function or Send Message to call the quest giver's StartSpecifiedQuestDialogueWithPlayer(questID) method.
-
- Posts: 7
- Joined: Sun Oct 20, 2024 12:40 am
Re: Quest giver dialogue questions
I was able to get it to work with this-
public class CustomQuestGiver : QuestGiver
{
protected override void StartMostRelevantDialogue()
{
RemoveCompletedQuestsWithNoDialogue();
var hasMultipleQuests = activeQuests.Count + offerableQuests.Count + nonOfferableQuests.Count + completedQuests.Count > 1;
var mustShowSpecificQuest = !string.IsNullOrEmpty(overrideQuestIDToShowInDialogue);
if (hasMultipleQuests || mustShowSpecificQuest)
{
base.StartMostRelevantDialogue();
}
else if (activeQuests.Count == 1)
{
ShowQuestList();
//ShowActiveQuest(activeQuests[0]);
}
else if (offerableQuests.Count == 1)
{
ShowQuestList();
//ShowOfferQuest(offerableQuests[0]);
}
else if (nonOfferableQuests.Count == 1)
{
ShowOfferConditionsUnmet();
}
else if (completedQuests.Count == 1)
{
ShowCompletedQuest();
}
else
{
ShowNoQuestsToDiscuss();
}
}
}
Now I just really wish there was an ork node that checked if the (machine object) quest giver has active quests or not. There are nodes for checking specific info on specific questIDs which could be useful in the future, but nothing to check the quest giver's info. I'm not sure how to use ork's check function node that well, nor exactly what function it could check in the quest giver code to check if no quests are available...
public class CustomQuestGiver : QuestGiver
{
protected override void StartMostRelevantDialogue()
{
RemoveCompletedQuestsWithNoDialogue();
var hasMultipleQuests = activeQuests.Count + offerableQuests.Count + nonOfferableQuests.Count + completedQuests.Count > 1;
var mustShowSpecificQuest = !string.IsNullOrEmpty(overrideQuestIDToShowInDialogue);
if (hasMultipleQuests || mustShowSpecificQuest)
{
base.StartMostRelevantDialogue();
}
else if (activeQuests.Count == 1)
{
ShowQuestList();
//ShowActiveQuest(activeQuests[0]);
}
else if (offerableQuests.Count == 1)
{
ShowQuestList();
//ShowOfferQuest(offerableQuests[0]);
}
else if (nonOfferableQuests.Count == 1)
{
ShowOfferConditionsUnmet();
}
else if (completedQuests.Count == 1)
{
ShowCompletedQuest();
}
else
{
ShowNoQuestsToDiscuss();
}
}
}
Now I just really wish there was an ork node that checked if the (machine object) quest giver has active quests or not. There are nodes for checking specific info on specific questIDs which could be useful in the future, but nothing to check the quest giver's info. I'm not sure how to use ork's check function node that well, nor exactly what function it could check in the quest giver code to check if no quests are available...
-
- Posts: 7
- Joined: Sun Oct 20, 2024 12:40 am
Re: Quest giver dialogue questions
and yeah. I also saw a "give quest" node in the list as well, but I was under the impression that it was going to just give the player the quest without showing the premade quest givers dialogue. I actually wanted to use the preset quest box because it has all the quest info from the quest machine systems automatically on it. But i decided to just use the "start dialogue" node since you helped me get the quest list to show when I wanted.
lol and i also thought of a way to work without ork knowing if the quest giver has available quests or not... it's all good... lol
lol and i also thought of a way to work without ork knowing if the quest giver has available quests or not... it's all good... lol
Re: Quest giver dialogue questions
Alright, sounds good!