Frequently Asked Questions: Difference between revisions

m Link to Debug Scene Selection Menu
Restructure new moves question to make it clearer
 
(22 intermediate revisions by 2 users not shown)
Line 16: Line 16:


=== SkyTemple set off my antivirus! Is it fine? ===
=== SkyTemple set off my antivirus! Is it fine? ===
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away.
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].
 
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple
 
==== Why does SkyTemple set off false positives? ====
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.


=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===
Line 26: Line 31:
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.


There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.
There’s also some community-made tutorials available [[:Category:Tutorials|on this wiki]] and on our Discord server, and more will be hopefully added in the future.


=== How can I find out which SkyTemple version I have? ===
=== How can I find out which SkyTemple version I have? ===
Line 77: Line 82:


=== How do I get [insert role here]? ===
=== How do I get [insert role here]? ===
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #roles channel (available under Server Guide). If you want to know how to get a role that isn’t listed there, ask the mods.


=== How can I contact the server staff? ===
=== How can I contact the server staff? ===
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.
=== I've been banned from the server, how can I contact the mods to request an appeal? ===
You can appeal strikes and bans by visiting https://appeal.gg/skytemple.


== ROM hacking ==
== ROM hacking ==
Line 110: Line 118:


=== Can new moves be added? ===
=== Can new moves be added? ===
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:
The move list cannot be expanded at the moment, but there's some unused move slots that can be replaced without any side effects. They are the following:


* 361: Excavate
* 362: Spin Slash
* 404: attack animation with no sound effect (safe to edit)
* 404: attack animation with no sound effect (safe to edit)
* 411: attack animation with no sound effect (safe to edit)
* 411: attack animation with no sound effect (safe to edit)
Line 124: Line 130:
* 419: walking animation with no sound effect (safe to edit)
* 419: walking animation with no sound effect (safe to edit)
* 420: walking animation with no sound effect (safe to edit)
* 420: walking animation with no sound effect (safe to edit)
* 557: generic move sound effect (likely safe to edit, not confirmed)
* 558: generic move sound effect (likely safe to edit, not confirmed)
There's also a set of moves used for special purposes, which you can replace if you're certain their effect will never be called in your hack (for example, if you remove the Secret Bazaar, you can replace moves 421-423). These moves are the following:
* 361: Excavate
* 362: Spin Slash
* 421: Secret Bazaar Escape
* 421: Secret Bazaar Escape
* 422: Secret Bazaar Cleanse
* 422: Secret Bazaar Cleanse
Line 133: Line 146:
* 428: All-Hit Orb
* 428: All-Hit Orb
* 429: Foe-Seal Orb
* 429: Foe-Seal Orb
* 467: Judgement
* 543: Weather Ball Sun
* 543: Weather Ball Sun
* 544: Weather Ball Hail
* 544: Weather Ball Hail
Line 148: Line 160:
* 555: Skull Bash second half
* 555: Skull Bash second half
* 556: Ghost-type Curse animation
* 556: Ghost-type Curse animation
* 557: generic move sound effect
If you need even more slots, you can also replace existing regular moves with entirely new ones. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn't touch those. Here's the list of moves with known hardcoded behavior:
* 558: generic move sound effect
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn't touch those. Here's the list of moves with known hardcoded behavior:


* 031: Weather Ball (has a special type check in <code>GetMoveTypeForMonster</code>)
* 031: Weather Ball (has a special type check in <code>GetMoveTypeForMonster</code>)
Line 159: Line 169:
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)
* 465: Me First (has a special check to use another move after, has move effect #325 by default)
* 465: Me First (has a special check to use another move after, has move effect #325 by default)
* 467: Judgment (copies the user's first type)
* 471: Natural Gift (has a special check in <code>GetMoveTypeForMonster</code>)
* 471: Natural Gift (has a special check in <code>GetMoveTypeForMonster</code>)
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)
Line 183: Line 194:
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.


The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace. Also, entries #31 and #84 are both Primal Dialgas with the same stats (The first one is use at the end of the main story, the second one is used at the end of special episode 5). This means you can change the entry used in fixed room #36 (SE5 final boss) to #31 to repurpose entry #84.


HP is capped at 999, other stats cap at 255.
HP is capped at 999, other stats cap at 255.
Line 191: Line 202:


=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the "Lists > [[Guest Pokémon List|Guest Pokémon]]" menu, available after applying the [[EditExtraPokemon]] patch.
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the "Lists > [[Guest Pokémon List|Guest Pokémon]]" menu, available after applying the [[EditGuestPokemon]] patch.


=== How do I test later dungeons in the game? Can I jump ahead in the story? ===
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===
Line 204: Line 215:


=== How do I edit the personality quiz? ===
=== How do I edit the personality quiz? ===
Unfortunately, this is not inside the script engine and is hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices, however, can be modified in “Lists” → “[[Starter List|Starters]]”.
The vanilla quiz is not part of the script engine, it's hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.
 
However, it's possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.


=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===
Line 220: Line 233:
<syntaxhighlight>$PERFORMANCE_PROGRESS_LIST[10] = 1;</syntaxhighlight>
<syntaxhighlight>$PERFORMANCE_PROGRESS_LIST[10] = 1;</syntaxhighlight>
These lines must be placed within <code>def 0 {</code>.
These lines must be placed within <code>def 0 {</code>.
'''Note''': Evolving any pokémon currently in your active team will disband it, which will cause your starters to be removed from the active team. You can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled. You can add two more lines similar to the one used above to enable flag 10 to enable these two as well, although bear in mind that enabling these two flags has other side effects (check the page linked earlier for details).
=== Is there a way to mass edit data? ===
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the "Import" and "Export" buttons available on most screens to copy the data from one entry to another.
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you'll have to manually edit each floor.
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].


=== How can I publish my hack so other people can play it? ===
=== How can I publish my hack so other people can play it? ===
Line 248: Line 270:


==== Skip the personality test ====
==== Skip the personality test ====
Go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be<syntaxhighlight>
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be<syntaxhighlight>
debug_Print('DIAGNOSIS_BLACK2');
debug_Print('DIAGNOSIS_BLACK2');
screen2_FadeOut(0, 0);
screen2_FadeOut(0, 0);
Line 256: Line 278:
screen2_FadeIn(0, 30);
screen2_FadeIn(0, 30);
screen_FadeInAll(1, 30);
screen_FadeInAll(1, 30);
</syntaxhighlight>Then go back up until you see <code>forever {</code>, which should be on line 36. Select everything from that line to the line <code>switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }</code>, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.
</syntaxhighlight>Then go back up until you see <code>forever {</code>, which should be on line 36. Select everything from that line (including the line itself) to the line <code>switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }</code> (also included, should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.


=== What language are scripts written in? ===
=== What language are scripts written in? ===
Line 266: Line 288:
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.


See section "[[FAQ#Problems ROM patching|ROM Hacking]]" under "Common problems and solutions" for some common issues that you might experience while trying to apply a patch.
See section "[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]" under "Common problems and solutions" for some common issues that you might experience while trying to apply a patch.


You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].
Line 331: Line 353:


If you're using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-<version>-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.
If you're using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-<version>-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.
=== Gameplay ===
==== The game softlocked/glitched while I was playing! What can I do? ====
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:
# '''Cutscene softlock on a randomized ROM''': During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn't work, keep reading.
# '''Crash during a cutscene''': Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.
# '''Glitched colors in a dungeon, sometimes accompanied by a crash''': This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn't crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.


== Other tools ==
== Other tools ==
Line 338: Line 369:


=== StatsUtil ===
=== StatsUtil ===
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.
StatsUtil is a tool created by PsyCommando as part of [https://github.com/PsyCommando/ppmdu_2 his ppmdu suite]. It can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no need to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.


Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. Under Windows, the easiest way to use it is to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.


After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.


Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.
If your operating system is not Windows, you will have to build the tool from source following the instructions in the repository. Once you do so, you'll need some other tool to unpack and repack the ROM, since StatsUtil can only work with the ROM data after it's unpacked.