Quest Journal
by
MobiusXVI
Release Notesby
MobiusXVI
Code:
Oct 2013 - v. 1.0 Initial Release
Oct 2013 - v. 1.1 Added Quest Maker functionality
Mar 2014 - v. 1.15 Improved Quest Maker to be more user friendly
Jun 2014 - v. 1.2 Minor script compatibility improvement
Jul 2014 - v. 2.0 Added optional switch/variable usage, improved debugging
Apr 2019 - v. 2.1 Added additional debugging for file loading
Oct 2019 - v. 2.2 Minor script compatibility improvement
(shouldn't break if switches/variables are used in weird ways)
May 2020 - v. 2.3 Refactored external APIs, improved error messages
Oct 2024 - v. 3.0 Added support for control codes
Oct 2024 - V. 3.1 Fix bug with two byte UTF charactersIntroduction
I wanted to create a plain looking, but robust quest/journal system that was akin to the one found in Skyrim. I also wanted to make it as user friendly as possible while still giving you control over implementation. I hope you enjoy it!
Features
- Quests can have as many steps or phases as you'd like
- Each phase can have up to 20 lines of information displayed in the journal
- Can store virtually unlimited number of quests
- Sorts quests by current/completed; current quests show up in normal text while completed quests are grayed out
- Keeps completed quests around for player review
- Quest data created from .txt file; no need to put it all in the script window.
- Quest data can also be made using a custom windows program - Mobius's Quest Journal Maker!
- Quest data can be converted to .rxdata for security
- Journal is called using simple script. Access it from an event, item, or even a key press! (Custom menus can call it up as well!)
- Quests can be modified using standard switches/variables
- Can automatically update switch/variable names both in-game and in the editor
- Easily call the Quest Journal from the menu using my Menu Command Manager
- Use control codes to change the text dynamically. (see the guide here)
Screenshots
Spoiler
The journal in game


Spoiler
The Windows Quest Maker program


How to Use
Place the script below all the default scripts but above main. Create a file to hold your quests. There's an example in "Data/QuestData.txt". The quest data file will hold all your quests. There's a special format you need to follow. You starting by writing the quest's name, then a blank line, then the first phase info, then a blank line, then the next phase, and so on. When you're done with a quest, leave a blank line then write "mobius_quest_break" (without quotes). It should look like this:
Quest Name
Phase 0 info
Phase 1 info
mobius_quest_break
And that's all there is to it! You just repeat that pattern for each quest, and save it somewhere in the project folder. But if you don't feel like making in all in NotePad, then you can use my Quest Maker.
Download here: Mobius's Quest Journal Maker
If you're still not sure, then check out the video tutorial here: Video Tutorial
You can also check out a second video tutorial covering the v2.0 updates: Video Tutorial 2
Once you've got everything imported, you can use the following script calls from anywhere.
$scene = Scene_Quest.new
- Calls the quest journal scene
$game_quests.discover_quest("quest_name")
- Adds the named quest to the player's journal in the default state
- You can also use the quest's ID rather than its name if you prefer
$game_quests.dq("quest_name")
- Same as above - just a shorthand version
- Ditto about IDs
$game_quests.set_phase("quest_name", phase_number)
- Changes the named quest's phase to the specified phase number
- Again, you can also use the quest's ID rather than its name if you prefer
$game_quests.sp("quest_name", phase_number)
- Same as above - just a shorthand version
- Ditto about IDs
$game_quests.complete_quest("quest_name")
- Changes the named quest to completed status
- Once more, you can also use the quest's ID rather than its name if you prefer
$game_quests.cq("quest_name")
- Same as above - just a shorthand version
- Ditto about IDs
Demo
Download here: demo
Script
View on Github
FAQ
Q. Why don't the changes I made to my quests show up during playtesting?
A. Simply put, the script is not save game compatible. This is - unfortunately - the biggest current limitation of the script. If you start a playtest, save your game, and exit, and then make changes to the quests when you load up the save game it will not have any of your changes to the quests. But any changes you make should display correctly as long as you start a new game. My recommendation for getting around this problem is utilizing the debug (F9) menu to set quests to the desired state for testing, and always starting a new game.
Q. Why does the first quest always show in the journal even if it hasn't been discovered yet?
A. The journal needs at least one quest to function, so the first quest gets automatically discovered upon starting a new game. You can work around this limitation by adding a "starting" phase to it that doesn't give anything away like "You're on a new adventure!".
Q. Why is the text not arranged nicely?
A. Because it's really hard (lol). The script tries to do the best that it can, but it can struggle to account for everything, especially if you're using custom fonts, icons, etc. You can help it out by adding manual line breaks wherever they're necessary.
Credit and Thanks
- Mobius XVI, author
- Special thanks to Zeriab. I borrowed the name for two of my classes from the Quest Book script, and overall I'd say it influenced my design.
- KK20, for finding a fairly obscure bug in my code
- Supergenio, for suggesting the control codes and bug testing them
Author's Notes
This script is licensed using the MIT License. See the license file for more info.
In addition, this script is only authorized to be posted to the forums on RPGMakerWeb.com.
Further, if you do decide to use this script in a commercial product, I'd ask that you let me know via a post here or a PM. Thanks.