• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Modern Quest System + UI (v19)

124
Posts
3
Years
  • 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.

    Spoiler:


    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.

    Spoiler:


    Installation
    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.
    5. You MUST start a new save. Otherwise, your game will crash when you try to open the UI.

    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.

    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:
    Code:
    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.

    Credits
    Please make sure you credit the following people when using this resource:
    ThatWelshOne_
    mej71
    derFischae
    Marin

    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 comments below. Alternatively, you can reach me on Discord (ThatWelshOne_#3324).

    Thanks for reading!
     
    Last edited:
    137
    Posts
    3
    Years
    • Seen May 14, 2024
    When trying to open the quest menu in the menu screen, it closes the menu rather than opening the quest ui
     
    124
    Posts
    3
    Years
  • When trying to open the quest menu in the menu screen, it closes the menu rather than opening the quest ui

    If you're using the default Essentials pause menu, then you might not have set it up properly because it works fine for me.
    Here's my UI_PauseMenu script. I've indicated the new lines relating to the quest UI by # Edit

    Spoiler:
     
    137
    Posts
    3
    Years
    • Seen May 14, 2024
    If you're using the default Essentials pause menu, then you might not have set it up properly because it works fine for me.
    Here's my UI_PauseMenu script. I've indicated the new lines relating to the quest UI by # Edit

    Spoiler:

    I must've made a mistake while installing on my part, cause it worked perfectly when using your copied script, ty!
     
    6
    Posts
    4
    Years
    • Seen Feb 14, 2023
    I ´m kinda struggeling with setting up an event that activates the quest. Would you be so kind and make an example command for this quest?

    Quest1 = {
    :ID => "1",
    :Name => "Getting Started",
    :Stage1 => "Visit Professor Luca",
    :Stage2 => "Choose a Pokémon",
    :Stage3 => "Say goodbye to grandpa",
    :Location1 => "Wahala Bay",
    :Location2 => "Luca´s Laboratory",
    :Location3 => "Home",
    :QuestDescription => "Every story has a beginning.",
     
    124
    Posts
    3
    Years
  • I'm kinda struggling with setting up an event that activates the quest. Would you be so kind and make an example command for this quest?
    Code:
    Quest1 = {
      :ID => "1",
      :Name => "Getting Started",
      :Stage1 => "Visit Professor Luca",
      :Stage2 => "Choose a Pokémon",
      :Stage3 => "Say goodbye to grandpa",
      :Location1 => "Wahala Bay",
      :Location2 => "Luca´s Laboratory",
      :Location3 => "Home",
      :QuestDescription => "Every story has a beginning.",

    Hello!
    Your quest data should look like this:
    Code:
    Quest1 = {
      :ID => "1",
      :Name => "Getting Started",
      :Stage1 => "Visit Professor Luca",
      :Stage2 => "Choose a Pokémon",
      :Stage3 => "Say goodbye to grandpa",
      :Location1 => "Wahala Bay",
      :Location2 => "Luca´s Laboratory",
      :Location3 => "Home",
      :QuestDescription => "Every story has a beginning."
    }
    You had an extra comma on the last line and you were missing the closing parenthesis.
    Then, to activate the quest and add it to your quest log, you need activateQuest(:Quest1) as a script command in an event. If you want the quest name to be coloured on the UI, you can do activateQuest(:Quest1,colorQuest("orange")) to make it orange, for example. These are the colours available by default: blue, red, green, cyan, magenta, yellow, gray, white, purple, and orange. You can also make the quest name bold by doing activateQuest(:Quest1,colorQuest("orange"),true). I hope that helps!
     
    Back
    Top