Modern Quest System + UI

v21.1 Modern Quest System + UI 1.1.0

This resource pertains to version 21.1 of Pokémon Essentials.
Pokémon Essentials Version
v21.1 ✅
Also compatible with
  1. v21.1
  2. v21
  3. v20.1
  4. v20
  5. v19.1
  6. v19
This resource can be used to add a flexible quest system to your game, together with an HGSS-inspired UI for viewing quest information! This is a heavily edited version of mej71's original implementation for earlier versions of Pokémon Essentials. Other credits go to derFischae for upgrading and maintaining mej71's script for v17.2 and v18/18.1, Marin's Easy Questing Interface for inspiring some of the UI components, Phantombass for helping out with testing, and lots of people in various Discord servers for their valued feedback.

Features
  • Easy-to-use and flexible quest system.
  • No limit on the number of stages a particular quest can have.
  • Lots of colour options with the ability to add your own.
  • An indicator (exclamation mark) for when a quest is updated. No guessing involved!
  • Some customisation is possible with more to come in the future!
Here is an example of how the main quest selection page could look. The appearance of the quest names (colour and boldness) is set by you. You might like all main storyline quests to be a particular colour and side quests to be another colour, for example. There is one page each for active, completed and failed quests. You can remove failed quests from the UI by editing SHOW_FAILED_QUESTS in the config script.

main_page.png

The image below shows how the quest description pages look. This summarises what the player should know about the selected quest. The text colour here is not set in stone. I just picked different colours for fun. If you want to change these colours, you'll need to make some small edits in 003_Quest_UI.rb. Search for colorQuest and you should see what you need to change.

quest_desc.png

Installation (v21/21.1)
1. Download the .zip file from the MediaFire link by clicking on "Go to download" in the top right of this page.
2. Once downloaded, open the .zip file.
3. Drag the Audio, Graphics and Plugins folders you see into your project's main folder (where you have Game.exe), allowing them to merge with your existing folders.
4. Compile your game.

Installation (v20/20.1)
1. Download the .zip file from this MediaFire link.
2. Once downloaded, open the .zip file.
3. Drag the Graphics and Plugins folders you see into your project's main folder (where you have Game.exe), allowing them to merge with your existing folders.
4. Compile your game.

Installation (v19/19.1)
1. Download the .zip file from this MediaFire link.
2. Once downloaded, open the .zip file.
3. Drag the Audio, Graphics and Plugins folders you see into your project's main folder (where you have Game.exe), allowing them to merge with your existing folders.
4. Compile your game.

How to use
I have put detailed instructions on how to use this resource in the Plugins/MQS/meta.txt file that comes with the download of this resource. You should take the time to read those instructions.

For an overview, there are four key methods that you'll need to use:
1. activateQuest(quest) - for activating a quest and adding it to the quest log
2. advanceQuestToStage(quest, stageNumber) - for advancing a quest to the given stage (if applicable)
3. completeQuest(quest) - for marking a quest as complete
4. failQuest(quest) - for marking a quest as failed

The quest argument should be the symbolic name of the relevant quest defined in module QuestModule. You'll read more about this in the file I mentioned above. The stageNumber argument should be a number that represents progress towards completing a quest. This is only needed for the advanceQuestToStage method.

Accessing the UI
I suggest allowing the player to access the quest UI via the pause menu or Pokégear, as you prefer. I'll describe how to bring up the quest UI from the default pause menu. It's up to you to work out how to do the same if you're using a custom pause menu.

Put the following code at the bottom of the UI_PauseMenu script:
Ruby:
MenuHandlers.add(:pause_menu, :quests, {
  "name"      =>  _INTL("Quests"),
  "order"     => 50,
  "condition" => proc { next hasAnyQuests? },
  "effect"    => proc { |menu|
    pbPlayDecisionSE
    pbFadeOutIn {
      scene = QuestList_Scene.new
      screen = QuestList_Screen.new(scene)
      screen.pbStartScreen
      menu.pbRefresh
    }
    next false
  }
})
Feel free to rename "Quests" to whatever you like to suit your game, like "Mission Log" or similar. Edit the value defined by order to change where the UI element appears (a value of 50 puts it between the trainer card and Save).

For pre-v20 only!
Go to UI_PauseMenu and find this line:
cmdBag = -1
Paste this below it:
cmdQuest = -1

Next, find this line:
commands[cmdPokegear = commands.length] = _INTL("Pokégear") if $Trainer.has_pokegear
Paste this below it:
commands[cmdQuest = commands.length] = _INTL("Quests") if hasAnyQuests?

Finally, find this line:
elsif cmdPokegear>=0 && command==cmdPokegear
Paste this chunk of code above it:
Ruby:
elsif cmdQuest>=0 && command==cmdQuest
  pbPlayDecisionSE
  pbFadeOutIn {
    pbViewQuests
    @scene.pbRefresh
  }

Like this, "Quests" will only appear if you have any quests. You can put these new lines in different places to vary where "Quests" appears in the pause menu. You can also change "Quests" to whatever you want, like "Mission Log" or similar.

Controls
Press the left/right arrows to move between active/completed/failed quest lists and to swap quest description pages.
Press the up/down arrows to navigate the main quest list.
Press A/S to jump down/up when looking at the main quest list.
Press C/Space/Enter to view the highlighted quest's details.
Press X/Esc to close the UI.

If you're still with me, I want to say "thank you" for reading that wall of text. I really hope it made some sort of sense. Please report any crashes or bugs in the discussion section. Alternatively, you can reach me on Discord (ThatWelshOne_#3324).

Thanks for reading!
Credits
ThatWelshOne_
mej71
derFischae
Marin
Author
ThatWelshOne_
Downloads
3,328
Views
26,419
First release
Last update
Rating
4.83 star(s) 12 ratings

More resources from ThatWelshOne_

Latest updates

  1. Minor update for v21 compatibility

    Only quickly tested for major bugs. Please report any issues in the discussion thread!
  2. Updated for v20/20.1 compatibility

    Some minor tweaks for v20/20.1 compatibility.
  3. Small QoL change

    A small update to have the UI show quest completion/failure time rather than always using start...

Latest reviews

Really great plugin. It's very easy to install and use. Tested and working in v21.1.
Awesome and easy. Only question I have is, is there a way to remove the "New Quest" dialogue box for some or all quests? I dont want to constantly spam the player mid story
Probably the easiest to implement plugin I've used so far. I've decided to use the quests page to document everything you can do in postgame.
I tried to reach you on discord about this but I couldn't as you aren't accepting friend requests. The problem is you may have updated the plugin itself but probably not the instructions, as "cmdBag = -1" does not exist in v20.1, or at least not in UI_PauseMenu. Sorry to bother you with this, but could you please fix this? I was looking forward to using it and I don't have a strong grasp on RPGMaker Scripts. Again, apologies for the bother.
ThatWelshOne_
ThatWelshOne_
I'm aware I need to update the instructions, but please read the discussion section - I've already addressed how to do this.
Simple to learn and use and infinitely useful especially for people like me who have a long story or copious amounts of quests in their game.
Had it working! This is amazing! Very easy to install and use, too! :)
Back
Top