Player ask about open quests to other NPCs!?!

Hello there,
The problem is:
because the player started a quest, he must be able to ask NPCs about that quest.

For example:
The player listens to a nursery rhyme from some children, the quest is automatically accepted, so it is assumed that the player may be able to interact with the other NPCs to ask questions about this nursery rhyme and the “fairy treasure” mentioned in it.

Any advice?
my GameMaster class at the moment is able to to set quest and dialogue into NPC before a dilogue starts, but checking which quest the player have and add more “Asking” options is another story.:exploding_head:

I was thinking about an option that is displayed al last interaction, something like “can I ask you about something else?”
Then we could loop on all opened quests and show the available interactions from the player to the NPC.
Once the player click on a certain question, the NPC would be updated with the corresponding dialogue.
It’s a real mess… :thinking:

Another example: there is a quest where you can enter in the service of a noble that everyone hates and people point it out to you if you talk to NPCs, they will insult you.

I’ve made this subclass in the GameMaster, which is used to associate the Quest to the Dialogue, so the when the player interact with an NPC the AIConversant class will check if a dialogue file is present, if not will call the GM for a new dialogue.

[System.Serializable]
        internal class DQLink
        {
            [SerializeField] internal string name;
            [SerializeField] internal Quest quest;
            [SerializeField] internal Dialogue dialgue;
        }
...
        [SerializeField] internal List<DQLink> dQLink = new List<DQLink>();

At this point the GM will spit-out at random one of the Dialogue-Quest-Link item and update all the classes inside the NPC to work correctly.

At this point I could extend the subclass DQLink by adding an array of NPCs that could implement also the corresponding dialogue file… OMG😱

The course method of handling these sorts of things is through the Conditions…
A Condition of HasQuest WorkingForTheNoble would be attached to each of the nodes… positive messages would be with the ! HasQuest WorkingForThe Noble… Same with the first one, something like HasQuest OneTwoFreddysComingForYou on kids interacting, and negating that for the kids not interacting messages.

Hello Brian :slight_smile:
This time I thought I’d be left alone in my rambling reasoning xD

I’m not sure if I get what you’ve said, I mean I know that we can rise event via dialogue, anyway, I’ve spent the night on it, and instead of having a subclass in the GameMaster, I’ve made a scriptableObject that store all needed assets

[CreateAssetMenu(fileName = "QuestAssets", menuName = "Gran Ducato/Quest/Quest Asset", order = 0)]
    public class QuestAssets : ScriptableObject
    {
        [Serializable]
        public class DialoguePerNPC
        {
            public AIConversant SecondaryNPCs;
            public Dialogue dialogue;
            public Quest quest;

        }

        [SerializeField] internal string name;
        [SerializeField] internal Quest quest;
        [SerializeField] internal Dialogue dialgue;
        [SerializeField] internal DialoguePerNPC[] SecondaryCharacters;

    }

image

So when the GM get called, not only will assign the quest and dialogue to the conversant, but also can spawn all needed NPC, and sets the dialogue inside, I’ve also thought about a sub-quest for each added NPCs in the scene.

I guess It’s more simple than what we’ve made in the course, but I haven’t full-tested it 'because I’ve finished it at 2am and at the 7 the alarm rings :sweat_smile:

I’ll be interested in hearing how that works for you! I think I have the gist of what you’re going for now.

Privacy & Terms