QuizMenuTool Tutorial: Difference between revisions

Happylappy (talk | contribs)
Happylappy (talk | contribs)
I thiiiink I removed the unfinished part?
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
''{{SkyTempleIcon|icon=skytemple-dialog-error-symbolic}} This article is unfinished. You can help <span class="plainlinks">[{{fullurl:{{PAGENAME}}|veaction=edit}} expanding it]</span>.''<hr>This guide explains how to use QuizMenuTool to create a custom Personality Quiz. The bulk of this guide will explain the use of the google sheets portion of the tool. A rudimentary understanding of SkyTemple scripting will be assumed, namely adding new acting scenes, and adding scenes to unionall.ssb. These topics have/will be covered in other wiki articles.  
This guide explains how to use QuizMenuTool to create a custom Personality Quiz. The bulk of this guide will explain the use of the google sheets portion of the tool. A rudimentary understanding of SkyTemple scripting is helpful for this task, but not strictly required. These topics will be covered at the end for the sake of completion, but only to the extent that they are needed for QuizMenuTool.  


== About QuizMenuTool ==
== About QuizMenuTool ==


=== What Is QuizMenuTool? ===
=== What Is QuizMenuTool? ===
QuizMenuTool is a customizable ExplorerScript replica of the Explorers of Sky Personality Quiz and Starter Selection, with minimal hardcoded aspects. The original quiz was designed to consist mostly of message_Menu ASM, and this serves to  
QuizMenuTool is a customizable ExplorerScript replica of the Explorers of Sky Personality Quiz and Starter Selection, with minimal hardcoded aspects. The original quiz was designed to consist mostly of <code>message_Menu()</code> ASM, to make editing the personality quiz accessible without the need to learn ASM.


=== What can QuizMenuTool do? ===
=== What can QuizMenuTool do? ===
Line 51: Line 51:
There are two ways to paste values, either by right-clicking the paste location and selecting "Paste Special" then "Values Only", or by holding shift as you paste.  
There are two ways to paste values, either by right-clicking the paste location and selecting "Paste Special" then "Values Only", or by holding shift as you paste.  


== Quiz Preamble Generator: A Good First Impression! ==
== Quiz Preamble Generator ==
The Quiz Preamble Generator Tab as a whole exists to create the very beginning of the quiz.  
The Quiz Preamble Generator Tab as a whole exists to create the very beginning of the quiz.  


Line 66: Line 66:
The orange output cell on this sheet is largely unimportant, but is present for debug purposes. It compiles the portions of the script using the inputs on this tab of the sheet.
The orange output cell on this sheet is largely unimportant, but is present for debug purposes. It compiles the portions of the script using the inputs on this tab of the sheet.


== Starter Selection Generator: Actually Adding the Starters... ==
== Starter Selection Generator ==
This tab of the sheet is primarily for inputting data about the starters, or the personality pools they belong to.  
This tab of the sheet is primarily for inputting data about the starters, or the personality pools they belong to.  


Line 127: Line 127:


=== Fuwarante Blacklist ===
=== Fuwarante Blacklist ===
Finally, on the far end of the table, is the Fuwarante Blacklist inputs. These are perhaps the most complicated portion of this tab of the sheet.[[File:Fuwarante Blacklist.png|alt=Location of the Fuwarante Blacklist|center|thumb|300x300px|Location of the Fuwarante Blacklist]]Each column corresponds to a bit of the script variable $BIT_FUWARANTE_LOCAL. If the matching flag is on, the starter in that row '''cannot''' be chosen. This will be elaborated on further in the "Question Loop Generator", but this is a brief explanation of what the bits represent by default:
Finally, on the far end of the table, is the Fuwarante Blacklist inputs. These are perhaps the most complicated portion of this tab of the sheet.[[File:Fuwarante Blacklist.png|alt=Location of the Fuwarante Blacklist|center|thumb|300x300px|Location of the Fuwarante Blacklist]]Each column corresponds to a bit of the script variable <code>$BIT_FUWARANTE_LOCAL</code>. If the matching flag is on, the starter in that row '''cannot''' be chosen. This will be elaborated on further in the "Question Loop Generator", but this is a brief explanation of what the bits represent by default:
{| class="wikitable"
{| class="wikitable"
|+
|+
Line 134: Line 134:
|-
|-
|0
|0
|If enabled, $PLAY_OLD_GAME will be true, meaning the player answered that they have played Time/Darkness before.
|If enabled, <code>$PLAY_OLD_GAME</code> will be true, meaning the player answered that they have played Time/Darkness before.
|-
|-
|1
|1
Line 140: Line 140:
|-
|-
|2
|2
|If enabled, the player has participated in a Mystery Mail event before, according toa custom ending question.
|If enabled, the player has participated in a Mystery Mail event before, according to a custom ending question.
|-
|-
|3
|3
Line 152: Line 152:
Once again, the orange output cells on the far right of this sheet are largely unimportant, but are present for debug purposes. It compiles the portions of the script using the inputs on this tab of the sheet.
Once again, the orange output cells on the far right of this sheet are largely unimportant, but are present for debug purposes. It compiles the portions of the script using the inputs on this tab of the sheet.


== Question Loop Generator: Before, After, and For How Long? ==
== Question Loop Generator ==


=== Upper Panel ===
=== Upper Panel ===
Line 164: Line 164:
These are the primary use-cases for the Fuwarante Blacklist described above.  
These are the primary use-cases for the Fuwarante Blacklist described above.  


The "[S:0]" text tag will be explained in further detail below.  
The <code>[S:0]</code> text tag will be explained in further detail below.  


== Question Generator: Multiple Choice Monotony ==
== Question Generator ==
Note: The "Yes." and "No." options have the "[S:0]" text tag after them. This does functionally nothing, and exists primarily to aid in automatic string translation, as the localization teams translated the same English responses for questions differently based on context. This will be elaborated on further in "Full Script Translation". If there are no plans to use the sheet's translation features, it is safe to remove any variants of "[S:0]". (instructions to do so in SkyTemple directly are present below).
Note: The "Yes." and "No." options have the <code>[S:0]</code> text tag after them. This does functionally nothing, and exists primarily to aid in automatic string translation, as the localization teams translated the same English responses for questions differently based on context. This will be elaborated on further in "Full Script Translation". If there are no plans to use the sheet's translation features, it is safe to remove any variants of <code>[S:0]</code>. (instructions to do so in SkyTemple directly are present below).


=== About Question Templates ===
=== About Question Templates ===
This tab of the sheet is dedicated to the design and storage of the individual random questions in the quiz. The way this sheet works revolves  around "Question Templates" that store the question text, question number, answer text, pool ID, and points for that pool ID. Below is an example of a Question Template, and how it translates to question data:  
This tab of the sheet is dedicated to the design and storage of the individual random questions in the quiz. The way this sheet works revolves  around "Question Templates" that store the question text, question number, answer text, pool ID, and points for that pool ID. Below is an example of a Question Template, and how it translates to question data:  
{| class="wikitable"
{| class="wikitable"
|+ Do you prefer to be busy or have\na lot of free time?^35 |Being busy.^11^4^8^2|Free time!^9^4|In between.^12^4
|+ Do you prefer to be busy or have\na lot of free time?^35 |<code>Being busy.^11^4^8^2|Free time!^9^4|In between.^12^4</code>
!Question Text
!Question Text
! colspan="8" |Question #
! colspan="8" |Question #
Line 179: Line 179:
| colspan="8" |35
| colspan="8" |35
|-
|-
!Answer Text
! rowspan="2" |Answer Text
! colspan="2" |Pool 1 ID and Pts
! colspan="2" |Pool 1
! colspan="2" |Pool 1 ID and Pts
! colspan="2" |Pool 2
! colspan="2" |Pool 1 ID and Pts
! colspan="2" |Pool 3
! colspan="2" |Pool 1 ID and Pts
! colspan="2" |Pool 4
|-
!ID
!Points
!ID
!Points
!ID
!Points
!ID
!Points
|-
|-
|Being busy.
|Being busy.
Line 229: Line 238:
Before moving onto the next question, copy the template output, and '''Paste Values''' in the corresponding slot on the "Question Template List".  By default, templates for each vanilla question are already in the Question Template List, ready to be edited or modified by copying and pasting into the Question Template Input. The Script Output Column is again for debug purposes, and is read automatically by another tab of the sheet.  
Before moving onto the next question, copy the template output, and '''Paste Values''' in the corresponding slot on the "Question Template List".  By default, templates for each vanilla question are already in the Question Template List, ready to be edited or modified by copying and pasting into the Question Template Input. The Script Output Column is again for debug purposes, and is read automatically by another tab of the sheet.  


== Personality Pool Selection Generator: Gerrymandering and Tie-Breaking ==
== Personality Pool Selection Generator ==
Once the quiz itself is completed, the points need to be tallied, so that a winning pool can be selected. The exact way that this happens in vanilla is a tad complicated, especially when it comes to breaking ties. Here are the steps that occur in vanilla:
Once the quiz itself is completed, the points need to be tallied, so that a winning pool can be selected. The exact way that this happens in vanilla is a tad complicated, especially when it comes to breaking ties. Here are the steps that occur in vanilla:


Line 244: Line 253:


=== Pool Tinkering ===
=== Pool Tinkering ===
As stated above, the vanilla quiz favors pools with Sky-Exclusive Starters for the specified gender if they've played Time/Darkness. Through checking the BIT_FUWARANTE_LOCAL flags from the "Question Loop Generator", we can mimic this effect.
As stated above, the vanilla quiz favors pools with Sky-Exclusive Starters for the specified gender if they've played Time/Darkness. Through checking the <code>$BIT_FUWARANTE_LOCAL</code> flags from the "Question Loop Generator", we can mimic this effect.
[[File:Pool Tinkering.png|alt=Location of Pool Tinkering Portion.|center|thumb|600x600px|Location of Pool Tinkering Portion.]]
[[File:Pool Tinkering.png|alt=Location of Pool Tinkering Portion.|center|thumb|600x600px|Location of Pool Tinkering Portion.]]
On the far left, are the IDs of the two flags that should be checked (without modification, this could be 0 for "Time/Darkness", and 3/4 for "Male/Female"). Depending on if the 1st and 2nd flags are true (1), or false (0), the selected pools (as many as needed) will gain the specified number of points. In order to accommodate for the "Surprise Me!" gender option, 2 points are given for male, 2 for "not male", 2 for "female", and 2 for "not female", in order to influence every pool containing a sky-exclusive starter. (A similar process is done for the Time/Darkness exclusive starters I've added to my example quiz, if the player has NOT played time/darkness). Up to 10 slots are present for pool tinkering, though more could be added if there is a pressing need.  
On the far left, are the IDs of the two flags that should be checked (without modification, this could be 0 for "Time/Darkness", and 3/4 for "Male/Female"). Depending on if the 1st and 2nd flags are true (1), or false (0), the selected pools (as many as needed) will gain the specified number of points. In order to accommodate for the "Surprise Me!" gender option, 2 points are given for male, 2 for "not male", 2 for "female", and 2 for "not female", in order to influence every pool containing a sky-exclusive starter. (A similar process is done for the Time/Darkness exclusive starters I've added to my example quiz, if the player has NOT played time/darkness). Up to 10 slots are present for pool tinkering, though more could be added if there is a pressing need.  


== Aura Bow Generator: Fortune Telling and Color Theory ==
== Aura Bow Generator ==
The Aura Bow Generator serves to emulate the cinematics of the vanilla aura bow portion of the quiz. In addition to simply detecting when and for how long the player is touching the Aura Bow, the actual bow color needs to be determined! For the vanilla quiz, the process is as follows:
The Aura Bow Generator serves to emulate the cinematics of the vanilla aura bow portion of the quiz. In addition to simply detecting when and for how long the player is touching the Aura Bow, the actual bow color needs to be determined! For the vanilla quiz, the process is as follows:


* Use DS Favorite Color (75% Chance): If the DS Favorite Color is selected, the user's favorite color will match the color of the bow.
* Use DS Favorite Color (75% Chance): If the DS Favorite Color is selected, the user's favorite color will match the color of the bow.
* Use DS Mac Address (25% Chance): If the Mac Address is selected, then "mac_address & 0xF" determines the color of the bow.
* Use DS Mac Address (25% Chance): If the Mac Address is selected, then <code>mac_address & 0xF</code> determines the color of the bow.


This functionality can be replicated by QuizMenuTool, and the chances can even be altered!
This functionality can be replicated by QuizMenuTool, and the chances can even be altered!
Line 270: Line 279:
Finally, the Bow Selection Panel handles the actual selection and presentation of the Aura Bow. [[File:Bow Selection Panel.png|alt=Bow Selection Panel Location.|center|thumb|600x600px|Bow Selection Panel Location.]]The upper left of the panel is for assigning weights to the three methods for selecting a bow color: DS Favorite Color, DS MAC Address, or a custom block of code. Note that these weights '''must be integers''' or the sheet will generate invalid code. For convenience, the percent chance of each option is computed by the sheet, based on the weights and total weight. The ExplorerScript input for the custom bow selection is on the right of this panel, and on the bottom left is the flavor-text for each bow color.  
Finally, the Bow Selection Panel handles the actual selection and presentation of the Aura Bow. [[File:Bow Selection Panel.png|alt=Bow Selection Panel Location.|center|thumb|600x600px|Bow Selection Panel Location.]]The upper left of the panel is for assigning weights to the three methods for selecting a bow color: DS Favorite Color, DS MAC Address, or a custom block of code. Note that these weights '''must be integers''' or the sheet will generate invalid code. For convenience, the percent chance of each option is computed by the sheet, based on the weights and total weight. The ExplorerScript input for the custom bow selection is on the right of this panel, and on the bottom left is the flavor-text for each bow color.  


== Variable Cleanup & End-Cap Generator: Nearly Finished! ==
== Variable Cleanup & End-Cap Generator ==
This tab of the sheet aims to clean up the bevy of variables used by the quiz, and prep the game for actually running. Since QMT uses a majority of the script variables the game has to function, this tab resets them all back to what they should be at the beginning of a save file, now that the quiz no longer needs them. If some part of the quiz needs to be remembered, such as the color of the aura bow, whether the player has played Time/Darkness, or the winning Quiz personality pool, that needs to be preserved in this tab. In addition, this is the tab where the starters are officially initialized, which allows them to be nicknamed. Finally, the special process for actually assigning the starters, PROCESS_SPECIAL_INIT_MAIN_TEAM_AFTER_QUIZ, will wipe $CONFIG_COLOR_KIND clean, replacing it with what the real quiz determined your aura bow color to be. Because the real quiz never runs during QMT, this will always be zero. As a result, the aura bow color needs to be saved somewhere besides $CONFIG_COLOR_KIND, then returned afterwards.   
This tab of the sheet aims to clean up the bevy of variables used by the quiz, and prep the game for actually running. Since QMT uses a majority of the script variables the game has to function, this tab resets them all back to what they should be at the beginning of a save file, now that the quiz no longer needs them. If some part of the quiz needs to be remembered, such as the color of the aura bow, whether the player has played Time/Darkness, or the winning Quiz personality pool, that needs to be preserved in this tab. In addition, this is the tab where the starters are officially initialized, which allows them to be nicknamed. Finally, the special process for actually assigning the starters, <code>PROCESS_SPECIAL_INIT_MAIN_TEAM_AFTER_QUIZ</code>, will wipe <code>$CONFIG_COLOR_KIND</code> clean, replacing it with what the real quiz determined your aura bow color to be. Because the real quiz never runs during QMT, this will always be zero. As a result, the aura bow color needs to be saved somewhere besides <code>$CONFIG_COLOR_KIND</code>, then returned afterwards.   


=== Upper Panel ===
=== Upper Panel ===
This tab ALSO has an upper panel! The number of pools to clear should ideally match the number of pools in use. "White Space" does the same thing it has up to this point, and the far right output cell is read elsewhere, and only exists for debug purposes.
This tab ALSO has an upper panel! The number of pools to clear should ideally match the number of pools in use. "White Space" does the same thing it has up to this point, and the far right output cell is read elsewhere, and only exists for debug purposes.
[[File:Variable Cleanup & End-Cap Upper Panel.png|alt=Variable Cleanup & End-Cap Upper Panel Location.|center|thumb|600x600px|Variable Cleanup & End-Cap Upper Panel Location.]]
[[File:Variable Cleanup & End-Cap Upper Panel.png|alt=Variable Cleanup & End-Cap Upper Panel Location.|center|thumb|600x600px|Variable Cleanup & End-Cap Upper Panel Location.]]
In the center of the panel are three new checkboxes. "Name Partner?" and "Name Hero?" should be somewhat intuitive, they enable/disable the ExplorerScript inputs for naming the hero and partner respectively, which will be elaborated on below. Finally, "Set $VERSION to 1?" sets the "$VERSION" script variable to 1 at the very end of the script. Without ASM modification, saving the game with this variable as anything besides 1 results in a "corrupt" save file. In the absence of a strong reason otherwise, this box should remain checked.
In the center of the panel are three new checkboxes. "Name Partner?" and "Name Hero?" should be somewhat intuitive, they enable/disable the ExplorerScript inputs for naming the hero and partner respectively, which will be elaborated on below. Finally, "Set $VERSION to 1?" sets the <code>$VERSION</code> script variable to 1 at the very end of the script. Without ASM modification, saving the game with this variable as anything besides 1 results in a "corrupt" save file. In the absence of a strong reason otherwise, this box should remain checked.


=== Hero Name, Partner Name, & Closing Remarks ===
=== Hero Name, Partner Name, & Closing Remarks ===
These ExplorerScript Inputs are for... the code used for nicknaming the partner and hero respectively, as well as the last few lines of text before the quiz truly ends.[[File:Hero-Partner-Closing Remarks Input.png|alt=Location of ExplorerScript Code Inputs.|center|thumb|600x600px|Location of ExplorerScript Code Inputs.]]Note that MENU_PARTNER_NAME will not function without the dedicated SkyPatch, in the QMT github repo (linked at the top). Additionally, the menus themselves will close any active text-box the instant they are done printing, which is why the hero monologue ends with a [K]. A message_Close(); would also suffice. Finally, the closing remarks should actually fade out the bgm and screen as desired. Feel free to optimize the fades, there is probably a more efficient way to achieve the right effect.  
These ExplorerScript Inputs are for... the code used for nicknaming the partner and hero respectively, as well as the last few lines of text before the quiz truly ends.[[File:Hero-Partner-Closing Remarks Input.png|alt=Location of ExplorerScript Code Inputs.|center|thumb|600x600px|Location of ExplorerScript Code Inputs.]]Note that <code>MENU_PARTNER_NAME</code> will not function without the dedicated SkyPatch, in the QMT github repo (linked at the top). Additionally, the menus themselves will close any active text-box the instant they are done printing, which is why the hero monologue ends with a <code>[K]</code>. A <code>message_Close();</code> would also suffice. Finally, the closing remarks should actually fade out the BGM and screen as desired. Feel free to optimize the fades, there is probably a more efficient way to achieve the right effect.  


=== Script Variable Preservation Panel ===
=== Script Variable Preservation Panel ===
The Script Variable Preservation Panel serves to determine what information should be preserved after the quiz. By default, only the variables storing the personality pool counts are actually being erased, though certain configurations may require some variables to be kept, and others to be wiped in addition.[[File:Script Variable Preservation Panel.png|alt=Script Variable Preservation Panel Location.|center|thumb|600x600px|Script Variable Preservation Panel Location.]]Beginning at the top, is the "Variable Erasure Blacklist". Based on other interactions with the sheet, the "Automatic Variables" will fill up automatically, but any script variables specified in this row will be kept as they are at the end of the quiz, and not erased. An example of a manual blacklist example might be $VERSION, which doesn't need a dedicated line of code for erasure if it will ALSO be set to 1 at the end. The next row, "Additional Variables to Erase", will be added to the list of erased variables if they are not already present. The $BIT_FUWARANTE_LOCAL variables should be erased in addition, as the Driftblim Gondola will interpret these variables as valid station passes to enter. Below that, is the "Variable Transfer Table". Prior to erasing anything, variables in the "Old Variable Name" column will be moved to the "New Variable Name". The old variable will be slated for erasure, while the new one will be spared. For convenience, the "Variable Meaning" Tab on the left will autofill one or both of these columns depending on the option you select:
The Script Variable Preservation Panel serves to determine what information should be preserved after the quiz. By default, only the variables storing the personality pool counts are actually being erased, though certain configurations may require some variables to be kept, and others to be wiped in addition.[[File:Script Variable Preservation Panel.png|alt=Script Variable Preservation Panel Location.|center|thumb|600x600px|Script Variable Preservation Panel Location.]]Beginning at the top, is the "Variable Erasure Blacklist". Based on other interactions with the sheet, the "Automatic Variables" will fill up automatically, but any script variables specified in this row will be kept as they are at the end of the quiz, and not erased. An example of a manual blacklist example might be <code>$VERSION</code>, which doesn't need a dedicated line of code for erasure if it will ALSO be set to 1 at the end. The next row, "Additional Variables to Erase", will be added to the list of erased variables if they are not already present. The <code>$BIT_FUWARANTE_LOCAL</code> variables should be erased in addition, as the Driftblim Gondola will interpret these variables as valid station passes to enter. Below that, is the "Variable Transfer Table". Prior to erasing anything, variables in the "Old Variable Name" column will be moved to the "New Variable Name". The old variable will be slated for erasure, while the new one will be spared. For convenience, the "Variable Meaning" Tab on the left will autofill one or both of these columns depending on the option you select:
{| class="wikitable"
{| class="wikitable"
|+
|+
Line 291: Line 300:
|-
|-
|Aura Bow Preserve
|Aura Bow Preserve
|$CONFIG_COLOR_KIND
|<code>$CONFIG_COLOR_KIND</code>
|$LOCAL0
|<code>$LOCAL0</code>
|If this Variable Meaning is present, $CONFIG_COLOR_KIND will be restored in post. It's only purpose is to prevent the quiz from wiping the variable on running  "PROCESS_SPECIAL_INIT_MAIN_TEAM_AFTER_QUIZ".
|If this Variable Meaning is present, <code>$CONFIG_COLOR_KIND</code> will be restored in post. It's only purpose is to prevent the quiz from wiping the variable on running  <code>PROCESS_SPECIAL_INIT_MAIN_TEAM_AFTER_QUIZ</code>.
|-
|-
|Winning Pool
|Winning Pool
|$SCENARIO_SUB7
|<code>$SCENARIO_SUB7</code>
|Any
|Any
|This variable retains the winning Pool ID from the quiz itself. This could prove useful for dialogue, or perhaps some other purpose?
|This variable retains the winning Pool ID from the quiz itself. This could prove useful for dialogue, or perhaps some other purpose?
|-
|-
|Winning Points
|Winning Points
|$SCENARIO_SUB6
|<code>$SCENARIO_SUB6</code>
|Any
|Any
|This variable retains the number of points the winning Pool ID had after the tie-breaking process. This could prove useful for dialogue, or perhaps some other purpose?
|This variable retains the number of points the winning Pool ID had after the tie-breaking process. This could prove useful for dialogue, or perhaps some other purpose?
|-
|-
|Fuwarante Bit X
|Fuwarante Bit X
|$BIT_FUWARANTE_LOCAL[X]
|<code>$BIT_FUWARANTE_LOCAL[X]</code>
|Any
|Any
|These correspond directly to the FUWARANTE blacklist, and in this example is used to pass forward the Time/Darkness question to $PLAY_OLD_GAME, the variable responsible for the recruitment rate buff for playing Time/Darkness.
|These correspond directly to the FUWARANTE blacklist, and in this example is used to pass forward the Time/Darkness question to <code>$PLAY_OLD_GAME</code>, the variable responsible for the recruitment rate buff for playing Time/Darkness.
|-
|-
|Direct Script Variable
|Direct Script Variable
Line 317: Line 326:
A full list of script variables with their appropriate descriptions will be provided in "Other Resources", and might prove useful for more advanced tinkering in this panel.
A full list of script variables with their appropriate descriptions will be provided in "Other Resources", and might prove useful for more advanced tinkering in this panel.


== Full Script Translation: EU ROM Superiority ==
== Full Script Translation ==
This tab of the sheet is dedicated to translating all lines of dialogue into Spanish, French, German, and Italian, for an EU ROM. If the hack this is for doesn't need translation, this tab can be completely skipped. One of the most essential features of a translated quiz is the ability to pre-translate the vanilla text strings from the original quiz.  
This tab of the sheet is dedicated to translating all lines of dialogue into Spanish, French, German, and Italian, for an EU ROM. If the hack this is for doesn't need translation, this tab can be completely skipped. One of the most essential features of a translated quiz is the ability to pre-translate the vanilla text strings from the original quiz.  


=== Upper Panel ===
=== Upper Panel ===
By default, the left-most checkbox of the upper panel will "activate" this sheet for translation. This may cause lag, and will cause more lag every time a change is made on one of the prior sheets, while enabled. Only begin translating once finished with the quiz, at least in the short term. [[File:Full Script Translation Upper Panel.png|alt=Location of the Full Script Translation Upper Panel.|center|thumb|600x600px|Location of the Full Script Translation Upper Panel.]]The "Auto-Translate Vanilla Strings" check-box will automatically search for and translate exact matches to vanilla Quiz strings. Additional translations can be added in "Vanilla Translation Strings" as needed. If no exact match is found, the translation will be left blank for manual translation. "Auto-Translate Pokemon" similarly will attempt to translate exact matches for dialogue specific to the final species. For example, "[R][CN]Will be a [CS:K]Magnemite[CR]![W:60]" will be automatically translated to "[R][CN]wird ein [CS:K]Magnetilo[CR]![W:60]" (German), based on Magnemite's German name and the phrase "wird ein ___!". This will only occur if the checkbox is enabled, and only for Pokemon names present in "Vanilla Translation Strings". Finally, the "Trim [S:0] Before Translation" checkbox will remove all "[S:0]" text tags from the dialogue before searching for a match, ensuring that the various "Yes.", "No.". "Of Course!", and "Open it!" are not translated automatically, per their vanilla quiz questions. Regardless of whether this checkbox is enabled, the final script output will not contain the "[S:0]" tags.  
By default, the left-most checkbox of the upper panel will "activate" this sheet for translation. This may cause lag, and will cause more lag every time a change is made on one of the prior sheets, while enabled. Only begin translating once finished with the quiz, at least in the short term. [[File:Full Script Translation Upper Panel.png|alt=Location of the Full Script Translation Upper Panel.|center|thumb|600x600px|Location of the Full Script Translation Upper Panel.]]The "Auto-Translate Vanilla Strings" check-box will automatically search for and translate exact matches to vanilla Quiz strings. Additional translations can be added in "Vanilla Translation Strings" as needed. If no exact match is found, the translation will be left blank for manual translation. "Auto-Translate Pokemon" similarly will attempt to translate exact matches for dialogue specific to the final species. For example, the English string <code>[R][CN]Will be a [CS:K]Magnemite[CR]![W:60]</code> will be automatically translated to <code>[R][CN]wird ein [CS:K]Magnetilo[CR]![W:60</code>] (German), based on Magnemite's German name and the phrase "wird ein ___!". This will only occur if the checkbox is enabled, and only for Pokemon names present in "Vanilla Translation Strings". Finally, the "Trim [S:0] Before Translation" checkbox will remove all <code>[S:0]</code> text tags from the dialogue before searching for a match, ensuring that the various "Yes.", "No.". "Of Course!", and "Open it!" are not translated automatically, per their vanilla quiz questions. Regardless of whether this checkbox is enabled, the final script output will not contain the <code>[S:0]</code> tags.  


=== String Translation Panel ===
=== String Translation Panel ===
Line 328: Line 337:
On the left, are English lines of text extracted from other tabs of the sheet. each column corresponds to an EU language (Spanish, French, German, Italian). At the top of each column, is a count of how many untranslated lines of dialogue are left for that language, as well as a checkbox to enable/disable each language. In the above screenshot, French dialogue will not be added to the final script, because the checkbox is enabled. In the rows themselves, are pink cells (vanilla translated text), green cells (empty), and blue cells (manual translation). Simply review each pink cell, and manually translate the English for that row for green cells so they turn blue. If a pink cell needs editing, simply copy the cell, and '''Paste Values''' it on top of itself, and it will turn blue, which is safe to edit.  
On the left, are English lines of text extracted from other tabs of the sheet. each column corresponds to an EU language (Spanish, French, German, Italian). At the top of each column, is a count of how many untranslated lines of dialogue are left for that language, as well as a checkbox to enable/disable each language. In the above screenshot, French dialogue will not be added to the final script, because the checkbox is enabled. In the rows themselves, are pink cells (vanilla translated text), green cells (empty), and blue cells (manual translation). Simply review each pink cell, and manually translate the English for that row for green cells so they turn blue. If a pink cell needs editing, simply copy the cell, and '''Paste Values''' it on top of itself, and it will turn blue, which is safe to edit.  


== Vanilla Translation Strings: Future-Proofing The Sheet ==
== Vanilla Translation Strings ==
This tab of the sheet is used to store vanilla strings from the base game, and official Pokemon translations. These can be amended and edited as desired, to include custom strings for auto-translation, or new Pokemon name translations.  
This tab of the sheet is used to store vanilla strings from the base game, and official Pokemon translations. These can be amended and edited as desired, to include custom strings for auto-translation, or new Pokemon name translations.  
[[File:Vanilla Translation Strings Dialogue.png|alt=Vanilla Translation Strings Dialogue|center|thumb|600x600px|Vanilla Translation Strings Dialogue]]
[[File:Vanilla Translation Strings Dialogue.png|alt=Vanilla Translation Strings Dialogue|center|thumb|600x600px|Vanilla Translation Strings Dialogue]]
Line 335: Line 344:
On the far right of the tab, are a list of every Pokemon through Scarlet & Violet, and the French/German translations for each species (Spanish and Italian use English species names). These can also be amended or added to as desired.  
On the far right of the tab, are a list of every Pokemon through Scarlet & Violet, and the French/German translations for each species (Spanish and Italian use English species names). These can also be amended or added to as desired.  


== Full Script Compression: It's Finally Over? ==
== Full Script Compression ==
Last but not least, is the Full Script Compression Tab. This tab compiles all of the information from the other tabs, and compresses it into a copy/pastable batch of scripts for SkyTemple.  
Last but not least, is the Full Script Compression Tab. This tab compiles all of the information from the other tabs, and compresses it into a copy/pastable batch of scripts for SkyTemple.  


Line 341: Line 350:
There are a handful of settings in this upper panel. "White Space" is as it has been for every prior tab, but that's the only returning input.
There are a handful of settings in this upper panel. "White Space" is as it has been for every prior tab, but that's the only returning input.
[[File:Full Script Compression Upper Panel.png|alt=Full Script Compression Upper Panel Location.|center|thumb|600x600px|Full Script Compression Upper Panel Location.]]
[[File:Full Script Compression Upper Panel.png|alt=Full Script Compression Upper Panel Location.|center|thumb|600x600px|Full Script Compression Upper Panel Location.]]
"Use Full MegaScript" will compile the entire quiz into one script. This is only possible for English-only quizzes, and is only advised for quizzes with few questions and fewer starter choices. "Use Translated Scripts?" will use the outputs from Full Script Translation, which will be empty if the sheet is not active. Disable this checkbox for English-only quizzes. "Generate Unionall CORO" will create the unionall code needed to run the quiz, for a copy and paste replacement for the existing '''CORO EVENT_M00A_01''' coroutine. The "Script File LEVEL Name" should reflect the location of the map LEVEL "folder" that the script file will actually be under. The "Script File SCRIPT Name" should become the name of the acting script itself, and should be 8 alphanumerical characters or fewer (not case-sensitive). Finally, the "Sector Param." is the sector parameter of the supervision_ActingSub() Opcode. Generally this should be zero, though none of these scripts internally utilize the sector parameter, should it be of interest for customization.
"Use Full MegaScript" will compile the entire quiz into one script. This is only possible for English-only quizzes, and is only advised for quizzes with few questions and fewer starter choices. "Use Translated Scripts?" will use the outputs from Full Script Translation, which will be empty if the sheet is not active. Disable this checkbox for English-only quizzes. "Generate Unionall CORO" will create the unionall code needed to run the quiz, for a copy and paste replacement for the existing <code>CORO EVENT_M00A_01</code> coroutine. The "Script File LEVEL Name" should reflect the location of the map LEVEL "folder" that the script file will actually be under. The "Script File SCRIPT Name" should become the name of the acting script itself, and should be 8 alphanumerical characters or fewer (not case-sensitive). Finally, the "Sector Param." is the sector parameter of the <code>supervision_ExecuteActingSub();</code> [[List of Opcodes#0x12d - supervision ExecuteActingSub|Opcode]]. Generally this should be zero, though none of these scripts internally utilize the sector parameter, should it be of interest for customization.


=== SkyTemple Script Outputs ===
=== SkyTemple Script Outputs ===
Line 349: Line 358:


== Importing The Scripts To SkyTemple ==
== Importing The Scripts To SkyTemple ==
Now for the fun part! Actually applying everything to SkyTemple, and seeing the quiz actually play out. This section will briefly cover installation of SkyPatches and Special Processes, though more generalized guides for these things are or will be available. First though, prior installation of StarterMenuTool will change some of these steps.
=== Converting From StarterMenuTool ===
There are very few differences between starting fresh and converting from StarterMenuTool. The differences are as follows:
* FixPartnerNameMenu is Applied: Since the SkyPatch is already applied, it does not need to be applied again. It can be reapplied without issue, though it already exists in the ROM.
* Existing Special Processes: Older versions of <code>starter_setter</code> and <code>set_frame_color</code> were added via StarterMenuTool. These may function as intended for QMT, especially <code>set_frame_color</code> which has seen zero change between the two tools, but it is recommended to update them by replacing them, or to use new slots for the QMT SPs.
* Existing Acting Script: StarterMenuTool takes the same approach as QMT in creating a new acting scene for the quiz itself. This existing script can be repurposed into one of the QMT acting scripts, though with SkyTemple alone it cannot be renamed, meaning the script name it will be used for in the Full Script Compression Upper Panel must be renamed.
* Edit to Vanilla Quiz: StarterMenuTool modifies the original quiz script m00a01a.ssb. While these changes have no net impact on QMT, it would impact the debug mode, as the code to create a team from the default starters has been removed. If this functionality needs to be restored, simply add the following line after "if ( debug ) {" in m00a01a.ssb:
<code>switch ( ProcessSpecial(PROCESS_SPECIAL_INIT_MAIN_TEAM_AFTER_QUIZ, 0, 0) ) { }</code>
* Existing Unionall Edit: StarterMenuTool also requires the modification of <code>coro EVENT_M00A_01</code>. QuizMenuTool will require this coroutine to be edited to run m00a01a in debug mode, and the QMT scripts otherwise.
=== Installing the SkyPatches ===
In order for QuizMenuTool to function, the following SkyPatches must be applied.
* FixPartnerNameMenu: Gives <code>MENU_PARTNER_NAME</code> the ability to actually nickname the partner. Requires ExtraSpace as a pre-requisite.
* ExtractSPCode: Enables the use of custom Special Processes used heavily by QMT.
Installing FixPartnerNameMenu is relatively simple. After downloading the file from the github repo, navigate to <code>Patches -> ASM</code> in SkyTemple. Then, click the "Open Patch Directory" button.
[[File:InstallFixPartnerNamePatch.png|alt=The "Open Patch Folder" button is on the bottom left.|center|thumb|600x600px|The "Open Patch Directory" button is on the bottom left.]]
Finally, drag <code>FixPartnerName.skypatch</code> into the folder, and close it. The patch will now be in the "Others" Tab, ready for installation. If ExtraSpace is not installed, SkyTemple will prompt the installation of both patches sequentially. This is good, do that.
Next, is the installation of ExtractSPCode. Once again, navigate to <code>Patches->ASM</code>, and select the "Utility" tab. Install ExtractSPCode, and any necessary pre-requisites (there shouldn't be any, except maybe ExtraSpace).
[[File:ExtractSPCode.png|alt=ExtractSPCode Location|center|thumb|600x600px|ExtractSPCode Location]]
=== Applying The Special Processes ===
Now for installing the Special Processes themselves. If the hack already has custom Special Processes it wishes to keep, or the IDs of the special processes in the sheet have been changed, apply the SPs as desired, but ensure the sheet has accurate IDs (NOT Effects), so it can call them. For simplicity, these are the default locations of each SP:
{| class="wikitable"
|+
!Spreadsheet Tab
!Spreadsheet Input Name
!SP File Name
!ID
!Effect
|-
|Starter Selection Generator
|starter_setter SP ID
|starter_setter.asm
|64
|61
|-
|Starter Selection Generator
|set_frame_color SP ID
|set_frame_color.asm
|65
|62
|-
|Aura Bow Generator
|CheckTSPress SP ID
|CheckTSPress.asm
|66
|63
|-
|Aura Bow Generator
|ReturnTSPFrames SP ID
|ReturnTSPFrames.asm
|67
|64
|-
|Aura Bow Generator
|MoveText2TopScreen SP ID
|MoveText2TopScreen.asm
|68
|65
|-
|Starter Selection Generator
|Set_Demo_Character SP ID
|Set_Demo_Character.asm
|69
|66
|-
|Aura Bow Generator
|get_favorite_config_color SP ID
|get_favorite_config_color.asm
|70
|67
|}
Ensure that you download the correct set of special processes for your version of the ROM (US or EU). Next, navigate to                      <code>Patches->ASM->Special Processes</code>, and click the "Add Special Process" button until enough IDs are in the list for each new Special Process.
[[File:How2AddSpecialProcesses1.png|alt=The "Add Special Process" button is at the very bottom.|center|thumb|600x600px|The "Add Special Process" button is at the very bottom.]]
The list should look like it does in the image when done. With that completed, navigate to the "Effects Code" tab. Click the "+" Button to create a new effect. Then, click the "Import Code" button at the bottom to select the special process to be imported to this effect.
[[File:How2AddSpecialProcesses2.png|center|thumb|600x600px|Clicking the "+" Button adds a new effect. Each new effect must have the correct .asm file imported into it, as specified in the table.]]
In the above image, Special Process <code>starter_setter.asm</code> is being imported to Effect 61, which corresponds to ID 64. Similarly, <code>set_frame_color.asm</code> should be imported to Effect 62 (ID 65), <code>CheckTSPress.asm</code> should be imported to Effect 63, etc.
Once all the necessary Special Processes have been imported to their effects, the last thing that needs to be done is assigning the effects to their IDs. Navigating back to the "Special Process Effects" tab, assign each effect to the correct ID, as shown below:
[[File:How2AddSpecialProcesses3.png|alt=Simply clicking on the effect cell will allow it to be edited.|center|thumb|600x600px|Simply clicking on the effect cell will allow it to be edited.]]
With that, SP importing is complete, and all that remains is to save the ROM.
=== Creating QMT Script Files ===
Next, is the process of actually creating the QMT script files. For simplicity, this guide will demonstrate the process on LEVEL_S02P01A, the same location in the script files as the original quiz. If you plan on putting the QMT script files elsewhere, ensure this is properly accounted for in Full Script Compression. Navigate to Script Scenes->S02P01A. If you are using a MegaScript, create ONE new acting scene. Otherwise, create four of them, each with the name in FullScriptCompression.
[[File:ImportingQMTScriptFiles1.png|alt=Be sure you click "Create Acting Scene"! It is important that these scripts are acting scenes.|center|thumb|600x600px|Be sure you click "Create Acting Scene"! It is important that these scripts are acting scenes.]]
The newly created scenes should appear in the Acting (ssa) folder. Navigate to the first one created, and double-click on "[script-name].ssb".
[[File:ImportingQMTScriptFiles2.png|alt=In this case, "qmt01.ssb" on the right will open the script file's "ssb" code.|center|thumb|600x600px|In this case, "qmt01.ssb" on the right will open the script file's "ssb" code.]]
From there, simply paste from the respective part of the sheet, and attempt to save the script.
[[File:ImportingQMTScriptFiles3.png|center|thumb|600x600px|You can also navigate between script files with the search bar on the left!]]
Repeat the process of pasting in the remaining scripts. Finally, the script that contains the aura bow segment of the quiz (script #2 or the megascript) needs additional work done to the .ssa file. Navigate to S02P01A->M00A01A, and click the Export Button (square with an up arrow in it).
[[File:Export Quiz .ssa.png|alt=Visual for exporting the .ssa for M00A01A for QuizMenuTool|center|thumb|600x600px|The Export Button is up top!]]
Then just import this file into the script containing the Aura Bow segment, as shown below:
[[File:Aura Bow SSA import.png|center|thumb|600x600px|The Export Button is right next to the Import button!]]
After that, save the ROM. The quiz is nearly ready, all that's left is setting up unionall...


=== Converting From StarterMenuTool ===
=== Editing Unionall ===
Unionall is a big file, but there's only a very specific part that needs to be edited. Open Unionall by using the search bar in the Script Engine Debugger, then do CTRL + F (Command + F for Mac, you should know your equivalent if you use Linux) to find coroutine inside unionall.
[[File:Unionall coro EVENT M00A 01.png|center|thumb|600x600px|Be sure you search for EXACTLY "coro EVENT_M00A_01". This should be the only match!]]
Once you find it, select the entire coroutine, and replace it with the unionall final output. the result should look something like this:
[[File:QMT coro EVENT M00A 01.png|center|thumb|600x600px|Modified Unionall Coroutine, should look roughly like this after pasting.]]
With that, save unionall, and the quiz is ready for testing!
 
== Troubleshooting ==
if you run into any of these issues, or the fix doesn't work, reach out to happylappy for questions in the SkyTemple discord!
 
=== The Game Crashed before the first script loaded! ===
Do your script names and locations match between unionall (or the sheet if it's making the unionall coro), and your script file names? If not, that would cause a crash.
 
=== The Game Crashed When a SP tried to run! ===
Have you used the correct SP IDs and regions? Might be worth importing them again, just in case.
 
=== The Game Crashed/Glitched out between scripts! ===
That is... concerning. See, script files are capable of overwriting other things in RAM if they're too big (which is why QMT usually splits into 4 separate scripts). Quizzes with an obscene number of questions or starters may still overwrite something important in RAM anyway, which would need to be handled on a case-by-case basis.
 
=== One of my scripts won't save! ===
That's concerning, but could be the result of leaving a question or starter unfinished? Depends heavily on the error message.


== Other Resources ==
== Other Resources ==


=== QMT Script Variable Map ===
=== QMT Script Variable Map ===
[[Category:Tutorials]]
Below is a table of every script variable used by QuizMenuTool, and what their use-case is for each script. Any variable absent from the table is unused by QMT directly. Variable usage can perhaps be optimized somewhat, but this map functions properly.
{| class="wikitable"
!Script Variable Name
!Index
!Script #1
!Script #2
!Script #3
!Script #4
|-
|$SCENARIO_SUB1
|0
|Backup of Pre-Quiz $PLAYER_KIND
| colspan="3" rowspan="1" |Winning # of Points Backup
|-
|$SCENARIO_SUB2
|0
|Backup of 0th index of Pre-Quiz $PLAYER_KIND_BACKUP
| colspan="3" rowspan="1" |Winning Pool ID Backup
|-
|$SCENARIO_SUB3
|0
|Backup of Pre-Quiz $ATTENDANT1_KIND
| -
|# of times hero gen. failed
| -
|-
|$SCENARIO_SUB4
|0
|Backup of 0th index of Pre-Quiz $ATTENDANT1_KIND_BACKUP
| -
| -
| -
|-
|$BIT_FUWARANTE_LOCAL
|All
| colspan="4" rowspan="1" |FUWARANTE blacklist flags
|-
|$LOCAL0
| -
|Max # of points.
| colspan="3" rowspan="1" |Winning # of Points / (Aura Bow Color Backup)
|-
|$LOCAL1
| -
|# Questions Asked / Winning Pool ID
| colspan="3" rowspan="1" |Winning Pool ID
|-
|$SCENARIO_TALK_BIT_FLAG
|Varies
| colspan="4" rowspan="1" |Question Has Been Asked?
|-
|$SCENARIO_MAIN
|0
| colspan="4" rowspan="1" |# of tied pools (-1 if not checking ties)
|-
|$SCENARIO_SIDE
|0
| colspan="4" rowspan="1" |# of pts to add to tied pool
|-
|$RECYCLE_COUNT
| -
| colspan="4" rowspan="1" |Post-Tie Max # of Pts.
|-
|$CONFIG_COLOR_KIND
| -
| -
| colspan="3" rowspan="1" |Aura Bow Color
|-
|$HERO_TALK_KIND
| -
| -
| -
| colspan="2" rowspan="1" |Hero Talk Group
|-
|$PARTNER_TALK_KIND
| -
| -
| -
| -
|Partner Talk Group
|-
|$VERSION
| -
| colspan="3" rowspan="1" |Pool 0 Pts.
|Reset to 1
|-
|$CRYSTAL_COLOR_01
| -
| colspan="3" rowspan="1" |Pool 1 Pts.
|Reset to 0
|-
|$CRYSTAL_COLOR_02
| -
| colspan="3" rowspan="1" |Pool 2 Pts.
|Reset to 0
|-
|$CRYSTAL_COLOR_03
| -
| colspan="3" rowspan="1" |Pool 3 Pts.
|Reset to 0
|-
|$COMPULSORY_SAVE_POINT
| -
| colspan="3" rowspan="1" |Pool 4 Pts.
|Reset to 0
|-
|$COMPULSORY_SAVE_POINT_SIDE
| -
| colspan="3" rowspan="1" |Pool 5 Pts.
|Reset to 0
|-
|$SCENARIO_SELECT_BACKUP
|0
| colspan="3" rowspan="1" |Pool 6 Pts.
|Reset to 0
|-
|$GROUND_ENTER
| -
| colspan="3" rowspan="1" |Pool 7 Pts.
|Reset to 0
|-
|$GROUND_ENTER_LINK
| -
| colspan="3" rowspan="1" |Pool 8 Pts.
|Reset to 0
|-
|$GROUND_GETOUT
| -
| colspan="3" rowspan="1" |Pool 9 Pts.
|Reset to 0
|-
|$GROUND_MAP
| -
| colspan="3" rowspan="1" |Pool 10 Pts.
|Reset to 0
|-
|$GROUND_PLACE
| -
| colspan="3" rowspan="1" |Pool 11 Pts.
|Reset to 0
|-
|$GROUND_ENTER_BACKUP
|0
| colspan="3" rowspan="1" |Pool 12 Pts.
|Reset to 0
|-
|$GROUND_ENTER_LINK_BACKUP
|0
| colspan="3" rowspan="1" |Pool 13 Pts.
|Reset to 0
|-
|$GROUND_GETOUT_BACKUP
|0
| colspan="3" rowspan="1" |Pool 14 Pts.
|Reset to 0
|-
|$GROUND_MAP_BACKUP
|0
| colspan="3" rowspan="1" |Pool 15 Pts.
|Reset to 0
|-
|$GROUND_PLACE_BACKUP
|0
| colspan="3" rowspan="1" |Pool 16 Pts.
|Reset to 0
|-
|$DUNGEON_SELECT
| -
| colspan="3" rowspan="1" |Pool 17 Pts.
|Reset to 0
|-
|$DUNGEON_ENTER
| -
| colspan="3" rowspan="1" |Pool 18 Pts.
|Reset to 0
|-
|$DUNGEON_ENTER_MODE
| -
| colspan="3" rowspan="1" |Pool 19 Pts.
|Reset to 0
|-
|$DUNGEON_ENTER_INDEX
| -
| colspan="3" rowspan="1" |Pool 20 Pts.
|Reset to 0
|-
|$DUNGEON_RESULT
| -
| colspan="3" rowspan="1" |Pool 21 Pts.
|Reset to 0
|-
|$GROUND_START_MODE
| -
| colspan="3" rowspan="1" |Pool 22 Pts.
|Reset to 0
|-
|$DUNGEON_ENTER_BACKUP
|0
| colspan="3" rowspan="1" |Pool 23 Pts.
|Reset to 0
|-
|$DUNGEON_ENTER_MODE_BACKUP
|0
| colspan="3" rowspan="1" |Pool 24 Pts.
|Reset to 0
|-
|$DUNGEON_ENTER_INDEX_BACKUP
|0
| colspan="3" rowspan="1" |Pool 25 Pts.
|Reset to 0
|-
|$DUNGEON_RESULT_BACKUP
|0
| colspan="3" rowspan="1" |Pool 26 Pts.
|Reset to 0
|-
|$GROUND_START_MODE_BACKUP
|0
| colspan="3" rowspan="1" |Pool 27 Pts.
|Reset to 0
|-
|$REQUEST_CLEAR_COUNT
| -
| colspan="3" rowspan="1" |Pool 28 Pts.
|Reset to 0
|-
|$PLAYER_KIND
| -
|Pool 29 Pts.
| colspan="3" rowspan="1" |Reset to Pre-Quiz
|-
|$ATTENDANT1_KIND
| -
|Pool 30 Pts.
| colspan="3" rowspan="1" |Reset to Pre-Quiz
|-
|$ATTENDANT2_KIND
| -
| colspan="3" rowspan="1" |Pool 31 Pts.
|Reset to 0
|-
|$PLAYER_KIND_BACKUP
|0
|Pool 32 Pts.
| colspan="3" rowspan="1" |Reset to Pre-Quiz
|-
|$ATTENDANT1_KIND_BACKUP
|0
|Pool 33 Pts.
| colspan="3" rowspan="1" |Reset to Pre-Quiz
|-
|$ATTENDANT2_KIND_BACKUP
|0
| colspan="3" rowspan="1" |Pool 34 Pts.
|Reset to 0
|-
|$HERO_FIRST_KIND
| -
| colspan="3" rowspan="1" |Pool 35 Pts.
|Reset to 0
|-
|$PARTNER_FIRST_KIND
| -
| colspan="3" rowspan="1" |Pool 36 Pts.
|Reset to 0
|-
|$RANDOM_REQUEST_NPC03_KIND
| -
| colspan="3" rowspan="1" |Pool 37 Pts.
|Reset to 0
|-
|$WORLD_MAP_LEVEL
| -
| colspan="3" rowspan="1" |Pool 38 Pts.
|Reset to 0
|-
|$EVENT_LOCAL
| -
| colspan="3" rowspan="1" |Pool 39 Pts.
|Reset to 0
|-
|$DUNGEON_EVENT_LOCAL
| -
| colspan="3" rowspan="1" |Pool 40 Pts.
|Reset to 0
|-
|$LOTTERY_RESULT
| -
| colspan="3" rowspan="1" |Pool 41 Pts.
|Reset to 0
|-
|$ITEM_BACKUP
|0
| colspan="3" rowspan="1" |Pool 42 Pts.
|Reset to 0
|-
|$ITEM_BACKUP_KUREKURE
|0
| colspan="3" rowspan="1" |Pool 43 Pts.
|Reset to 0
|-
|$ITEM_BACKUP_TAKE
|0
| colspan="3" rowspan="1" |Pool 44 Pts.
|Reset to 0
|-
|$ITEM_BACKUP_GET
|0
| colspan="3" rowspan="1" |Pool 45 Pts.
|Reset to 0
|-
|$REQUEST_THANKS_RESULT_KIND
| -
| colspan="3" rowspan="1" |Pool 46 Pts.
|Reset to 0
|-
|$REQUEST_THANKS_RESULT_VARIATION
| -
| colspan="3" rowspan="1" |Pool 47 Pts.
|Reset to 0
|-
|$SUB30_SPOT_LEVEL
| -
| colspan="3" rowspan="1" |Pool 48 Pts.
|Reset to 0
|-
|$TEAM_RANK_EVENT_LEVEL
| -
| colspan="3" rowspan="1" |Pool 49 Pts.
|Reset to 0
|-
|$PLAY_OLD_GAME
| -
| colspan="3" rowspan="1" |Pool 50 Pts.
|Reset to 0
|}