Using Events to Give a Random Quest

Help spread the word!Share on FacebookShare on TumblrTweet about this on TwitterShare on Google+Share on LinkedInShare on RedditFlattr the author

In this tutorial we look at how eventing can be used to create a quest giver that gives a random quest and doesn’t let you take another quest unless the previous quest has been completed (or abandoned).

randomEventQuest0

Goal

We want to create an NPC such that

  • The first time you talk to it, it will offer one of several quests, randomly
  • When you have accepted the quest, the next time you talk to the NPC, it will ask whether you have completed the task
  • When the task is complete, you may then go back and obtain another random quest

And the cycle repeats itself.

Deciding on some Quests

Let’s pick some quests to offer.

  1. Buy an Apple from the market in town.
  2. Clean up the yard (fight some slime in the yard)
  3. Find an item in the cave outside of town.

For simplicity, I have chosen to work with three quests.

Randomly Selecting a Quest

In order to randomly select a quest to offer, we will use the “Control Variables” command to store a random number between 1 and 3 into a variable. This variable will be used to control how other events will behave depending on which quest we are on.

randomEventQuest1

This takes care of the randomization part. The rest is a matter of filling out your event with conditional branches depending on which number was randomly chosen.

randomEventQuest2

Beginning a Quest

Once you have taken a quest, the game needs to know that you are on a quest. There are two easy ways to do this:

  1. Use a switch. If the switch is ON, then you are on a quest. If the switch is OFF, then you are not on a quest.
  2. Use the same variable that you used to store the random number. We can say that when the value is 0, then we are not on a quest.

It is up to you which one you prefer to use; some people find a switch easier to understand, while others understand that quest 0 means no quest or something like that. Of course, if you plan to use the number 0 to mean something else later, then it might be safer to use a switch.

I will go with the switch approach. Once you have received your quest, we turn on our “Quest In Progress” switch:

randomEventQuest3

Completing a Quest

Now that you have taken a quest, we want the NPC to interact with us differently. We can use the same NPC for this by creating a second event page and adding a “Switch” page condition that requires our “Quest In Progress” switch to be ON.

randomEventQuest4

Because we have three possible quests, and the objectives for each quest are different, we would need to use conditional branches again to handle each case separately.

randomEventQuest5

And finally, if the quest has been completed, we will turn off our “Quest In Progress” switch so that we can receive another random quest from the NPC.

And that’s it!

What’s Next?

The event I have shown is a very simple skeleton that simply shows messages to demonstrate there is something going on. You should be able to test the event a few times to verify that it gives you a random task most of the time.

Although I have only chosen three quests, you may have a very large quest bank to choose from. The principle remains the same: use a variable to keep track of which quest you are on for this NPC and perhaps use a switch to specify whether this NPC will offer any quests or not.

Spread the Word

If you liked the post and feel that others could benefit from it, consider tweeting it or sharing it on whichever social media channels that you use. You can also follow @HimeWorks on Twitter or like my Facebook page to get the latest updates or suggest topics that you would like to read about. I also create videos showcasing various RPG Maker techniques on my Youtube channel.

Help spread the word!Share on FacebookShare on TumblrTweet about this on TwitterShare on Google+Share on LinkedInShare on RedditFlattr the author

You may also like...

1 Response

  1. Halrawk says:

    Love these little tutorials, Hime!

Leave a Reply

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax