Quest Journal
Authors: modern algebra
Version: 1.1
Type: Quest Log/Mission System
Key Term: Misc System
IntroductionThis script provides a graphical interface for viewing quest progress. It is an objective based quest log, meaning you can choose to reveal, conceal, complete, or fail any objective at any time. You can also specify which objectives need to be completed for the quest to be complete. It requires a fair amount of customization and designing the quests is entirely left up to you.
Version History
- <Version 1.1> A minor bug fix involving quests with ID 4. A few added functions for tracking quests, including the ability to conceal given quests as well as uncompleting and unfailing objectives. Released April 10, 2008.
- <Version 1.0> Original script released March 25, 2008. Includes functioning Quest tracking
Planned Future Versions
- <Version 2.0> Add in a fully functional journal option with Keyboard input, allowing the player to write notes on each quest if he/she chooses to.
Features
- Customizable and every quest can be specified uniquely
- Accepts a large amount of quests, though I would suggest removing some periodically if you have more than 200 quests
- Relies on Script calls to set and advance objectives
- Built in access to the menu or you can set a key and call it from the map
Screenshots
DemoDownload Link. To retrieve the script, take it directly from the demo. It is located below the (materials) slot and is titled Quest Journal. If you do not already have the Paragraph Formatter, you will also need that.
ScriptThis script also
REQUIRES the Paragraph Formatter. Get it here:
http://forum.chaos-project.com/index.php?topic=838.0This script is too long to post here. Please retrieve it from the demo.
InstructionsBasically, set up all of your quests in the module below. The Constants section is annotated, so read the comments near them to determine what you should set these constants to. As you can see, they are filled in with default values currently, and so that should give you an idea of what to do.
Setting up quests can be a little bit harder. You will have to set one these up for every quest that you want represented in the scene. Refer to the editable region inside the class Quest for further instructions
Once they are setup, you can activate them at any time in the game by this code:
$game_party.quests[quest_id]
There are several methods you can call that are of relevance. Namely:
$game_party.quests[quest_id].reveal_objective (objective_id)
$game_party.quests[quest_id].conceal_objective (objective_id)
$game_party.quests[quest_id].complete_objective (objective_id)
$game_party.quests[quest_id].fail_objective (objective_id)
$game_party.quests[quest_id].complete?
$game_party.quests[quest_id].failed?
$game_party.quests[quest_id].reward_given
There are other methods that you can access, but they are irrelevant for the purposes of controlling quest progress. These are fairly self-explanatory methods, but in case they aren't, reveal_objective naturally allows the specified objective to appear in the Quest Journal for browsing by the user. complete_objective notes when an objective is complete, and fail_objective notes when the player has done something that fails this objective. complete? returns true if all primary objectives have been completed and failed? returns true if any primary objective has been failed. reward_given serves the function of a switch. You should essentially make the reward event look like this:
@> Conditional Branch: Script: $game_party.quests[quest_id].complete?
@> Conditional Branch: Script: $game_party.quests[quest_id].reward_given
@> ...Thank you or whatever you want the event to say once the reward has been given
@> Else
@> ...Give Reward
@> Script: $game_party.quests[quest_id].reward_given = true
@> Branch End
@> Branch End
Later versions of this script will have an auto-reward system and also a Journal to which the player can write notes.
You can also disable access to the Quest Log at any time with the code:
$game_system.quest_disabled = true
And you can change how it is accessed with the codes:
$game_system.quest_keyaccess = true / false # ON MAP
$game_system.quest_menuaccess = true / false # IN MENU
Also, in a message, \nq[quest_id] will retrieve the name of a quest and print it in a message
CompatibilityThere may be problems with other scripts that add features to the menu.
Credits and Thanks
Author's NotesJust post here if you are having problems. Please include any error messages and describe your problem in detail.
Nothing too much to say, though I did try a couple of new things. Namely, I wrote some methods for drawing ellipses and stuff - thus we get the rounded rectangle - a lot of code for a small, poorly done graphical effect, but whatever. I also tried making the Quests option slide into the menu flawlessly, but it was not as simple as I thought it would be. It appears to work now, but problems still might arise. I hope they don't. The other thing I did that was kind of fun was that I made the scene fit no matter what you have the resolution as. So, if you resize your screen, my scene still ought to look like it belongs. With all of that, my script became obscenely long, but it's worth it, I promise