Yes, almost all of that is possible. The section you are looking for starts at line 363 and looks like this:
# CATEGORIES - This array allows you to set which categories are available
# in the Quest scene. The default categories are :all, :active, :complete,
# and :failed, and their names are self-explanatory. You can add custom
# categories as well, but note that you will need to make sure that each new
# category has an icon set in the ICONS hash, as well as a label set in the
# CATEGORY_VOCAB hash (if you are using SHOW_CATEGORY_LABEL). It is also
# advisable to give it a sort type, unless you are fine with it being sorted
# by ID, as is default.
CATEGORIES = [:all, :active, :complete, :failed]
That array determines both which categories are present and the order they are in. So, if you changed it to:
[:active, :complete, :failed, :all]
Then that would make it so active quests was at the left and the all quests category is at the far right.
The :all category will always show all quests, including active, complete, and failed ones. That is its purpose, so there is no way to remove completed quests from it. What you want to do is dispose of the :all category and have it replaced with Main and Side quests, so you could make the array look like this (adjusted for order):
[:active, :complete, :failed, :main, :side]
Now you are adding custom categories, so you need to do two additional things. First, go up to line 318, where you will see this:
# ICONS - This is where you setup many of the icons used in the script. The
# purpose of each is listed next to it. Also, if you make any custom
# categories, you NEED to give them an icon by placing a line like the
# others. So, if the new custom category is :romance then you would need to
# set it like this:
# romance: 107,
ICONS = {
all: 226, # The icon for the All Quests category
active: 236, # The icon for the Active Quests category
complete: 238, # The icon for the Complete Quests category
failed: 227, # The icon for the Failed Quests category
client: 121, # The icon for client data. If none wanted, set to 0
location: 231, # The icon for location data. If none wanted, set to 0
reward_gold: 262, # The icon for gold rewards. If none wanted, set to 0
reward_exp: 117, # The icon for exp rewards. If none wanted, set to 0
} # <= Do not touch.
You need to give an icon to your new :main and :side categories. So, right between :failed and client, make it look like this:
failed: 227, # The icon for the Failed Quests category
main: 0,
side: 0,
client: 121, # The icon for client data. If none wanted, set to 0
And replace the 0s with the Icon index you want to show up. Secondly, go to line 380, where you will see:
# CATEGORY_VOCAB - If SHOW_CATEGORY_LABEL is true, this hash lets you set the
# label for each category. For any custom categories you create, you will
# need to add a line for each below and in the same format:
# :category => "Label",
# Don't forget to add the comma at the end of each line.
CATEGORY_VOCAB = {
:all => "All Quests", # The label for the :all category
:active => "Active Quests", # The label for the :active category
:complete => "Complete Quests", # The label for the :complete category
:failed => "Failed Quests", # The label for the :failed category
} # <= Do not touch.
Do the same thing and add entries for your main and side categories, like so:
CATEGORY_VOCAB = {
:all => "All Quests", # The label for the :all category
:active => "Active Quests", # The label for the :active category
:complete => "Complete Quests", # The label for the :complete category
:failed => "Failed Quests", # The label for the :failed category
:main => "Main Quests",
:side => "Side Quests",
} # <= Do not touch.
That's only strictly necessary if you are showing the category label, but you should do it now even if you aren't in case you change your mind.
Finally, this is optional, but you can change the way in which the quests in each category are sorted. At line 391, you'll see:
# SORT_TYPE - This hash allows you to choose how each category is sorted.
# For each category, default or custom, you can set a different sort method
# There are seven options to choose from:
# :id - The quests are sorted from lowest to highest ID
# :alphabet - The quests are sorted in alphabetical order
# :level - The quests are sorted from the lowest to highest level
# :reveal - The quests are sorted from most recently revealed on.
# Every time a new quest is revealed, it will be at the top.
# :change - The quests are sorted from the one whose status most recently
# changed on. So, every time an objective is modified, that quest
# will be thrown to the top.
# :complete - The quests are sorted from the most recently completed on.
# Every time a quest is completed, it will be thrown to the top.
# :failed - The quests are sorted from the most recently failed on.
# Every time a quest is failed, it will be thrown to the top.
#
# Additionally, you can put _r at the end of any of the sort options and it
# will reverse the order. So, for instance, if the sort method for a category
# is :alphabet_r, then the quests will show up from Z-A
SORT_TYPE = {
:all => :id, # Sort type for the All Quests category
:active => :change, # Sort type for the Active Quests category
:complete => :complete, # Sort type for the Complete Quests category
:failed => :failed, # Sort type for the Failed Quests category
} # <= Do not touch.
The instructions are pretty clear I think, but basically it's the same idea as the others. Change it to:
SORT_TYPE = {
:all => :id, # Sort type for the All Quests category
:active => :change, # Sort type for the Active Quests category
:complete => :complete, # Sort type for the Complete Quests category
:failed => :failed, # Sort type for the Failed Quests category
:main => :change,
:side => :change,
} # <= Do not touch.
Naturally, you can use whatever sort type you want, not just :change. They are all listed in the Instructions above.
Now those categories are set up, but there are no quests in them. To add those, you have to configure each quest individually. For each quest, you need to modify the custom categories array. To make a quest go into the :main category, add this line to the setup for it:
q[:custom_categories] = [:main]
To make it so that a quest goes into the :side category, just put:
q[:custom_categories] = [:side]
There, now your quests will be categorized according to main and side quests.
As for moving complete quests out of there, that won't be done automatically. However, if, when you complete the quest, you also add the following line in a script call:
quest(4).custom_categories.delete(:main)
Then you will remove Quest with ID 4 from the "Main Quests" category. Just replace the 4 with whatever quest it is, and replace :main with :side where appropriate.
If you ever want them to return to those categories, you need to do it manually.
Also, you can repeat this process for as many custom categories as you want, and quests can belong to as many of those custom categories as you want.