====== Maniac Patch ====== The Maniac Patch, also known as Maniacs (マニアクス) or manipa (まにぱ) is a patch for the English version of RPG Maker 2003 made by BingShan1024. The patch adds a lot of new commands and expands the existing ones with new features such as access to variables and variable redirection without modifying much existing features, being relatively stable while being provided in both English and Japanese, which has made it quite popular for use in games. The EasyRPG Player partially supports the patch (see [[https://github.com/EasyRPG/Player/issues/1818|EasyRPG Player issue #1818]] for more info on each element). The pages on this wiki will mention the support status when relevant. The EasyRPG Player recognises a game as a Maniac Patch game if: * The RPG_RT.exe of the game is recognised as a 64-bit executable of the runtime (only Maniac 241028+ fits that criteria) * The file accord.dll is present (file used for ogg support in versions before 241028; as this file was not needed if this feature was not used, it was not always present in distributed games) * The RPG_RT.exe of the game has ''CODE'', ''CHERRY'' and ''GEEP'' segments of a big enough size (fields edited by the patch in older versions) * If the Maniac flag is set through the [[https://easyrpg.org/player/manual/#_easyrpg_ini|EasyRPG.ini]] file (method to use when making an EasyRPG game with Maniac functions support). ====== Installation ====== The installation of the patch requires to use the [[https://store.steampowered.com/app/362870/RPG_Maker_2003/|Steam version of RPG Maker 2003]]. The latest public version (241029) is available on [[https://bingshan1024.github.io/steam2003_maniacs/|BingShan1024's website]], in the Downloads (ダウンロード) section. Once the archive of the patch has been extracted, the utility program must be used. The source folder of RPG Maker 2003 must be selected, as well as a folder where the patched version of the editor will be exported. The language of the program can also be switched between English and Japanese depending on your needs. Once ''Apply Patch'' has been selected, if the folders were correctly set, the output folder should contain the patched editor. Development versions of the patch are also distributed through the Discord server of the patch, with the latest to date being version 250921. Development versions include new features, but some aspects can be unstable due to not fully being ready for use. Features added in those versions will also be documented here, and be labelled as coming from development versions when appropriate. While installing the patch can be enough on its own to start, it is highly recommended to install the linked program TPC to be able to write some commands. Plugins can also be installed to enhance the user interface and experience when using the editor. ===== TPC ===== TPC is an external program that can be installed alongside the patched editor to write and edit commands in a text format. Some commands and functions of commands cannot be written directly through the patched editor, and require using TPC. Additionally, TPC can be used to write raw commands. To install TPC, its latest version (241028) must be downloaded from [[https://bingshan1024.github.io/steam2003_maniacs/|BingShan1024's website]], at the bottom of the Downloads (ダウンロード) section. Once extracted, the content of the archive must be moved inside the folder of the patched editor. If properly done, while editing the code of an event, pressing F2 or F3 should open a new window allowing you to type a command (where F2 allows to edit a written command and F3 write a command). On the command pages, the syntax of the commands will be listed as to allow you to type them. Some commands or functions of commands can lack a proper TPC writing, in which case you will need to either use the patched editor to write them or write those commands in the raw format. ===== Editor plugins ===== Since the version 241028, the editor supports the use of plugins, which can be used to alter the behaviour of the engine by providing new functions as well as updating the command list. To install a patch, a ''Plugin'' folder must be created in the folder of the patched editor if it does not exist yet, and the plugins must be placed in it. Once a plugin is installed, its features can be individually disabled if wanted by going in the editor, doing a right click while editing the code of an event, and then clicking on ''Plugin Settings''. From there, individual features from a plugin can be disabled by unticking them, in case you do not want to alter some functions. ==== ExtraCommands ==== **ExtraCommands** is a plugin made by jade_hpy which improves the user experience by adjusting the the interface of some commands. The interface of the plugin is provided in both English and Japanese, with the plugin adapting to the language of the editor. The plugin adds an user interface for the Control String Variables command, and changes the interface of the Show Picture, Open Save Menu (Call System Functions), Change Save Access (Control System Functions), Conditional Branch, Loop, Get Save Info, Get Picture Info, Control Variable Array and Call Command commands to either improve the user experience, or expose new parameters not present in the default interface and otherwise requiring the use of TPC. The download of the plugin is provided on the [[https://wikiwiki.jp/viprpg-dev/2003/%E6%8B%A1%E5%BC%B5%E3%83%91%E3%83%83%E3%83%81/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3#k49db50b|VIPRPG website]], as well as installation instructions in Japanese. Features that cannot be set through the normal editor but can be set through the plugin will be mentioned on the command pages. ==== EasyRPGCommands ==== **EasyRPGCommands** is a plugin made by Ghabry which adds some EasyRPG commands to the user interface. The interface of the plugin is only provided in English. The plugin adds the commands Trigger Event At, Pathfinder, Wait Single Movement, Process JSON, Clone Map Event and Destroy Map Event to the interface, and provides a proper user interface to use them. Those commands are not present in the Maniac patch, and are instead commands exclusive to the EasyRPG Player which can be used if the EasyRPG flag is set through the [[https://easyrpg.org/player/manual/#_easyrpg_ini|EasyRPG.ini]] file. The plugin can be downloaded from the [[https://github.com/Ghabry/EasyRpgCommands/releases|GitHub page of the plugin]], with installation instructions provided there. If you are using this plugin with a development version of the editor, instead of replacing the file commands_list.txt as instructed on the page, copy over the EasyRPG commands from the commands_list.txt of the plugin (all commands starting from Trigger Event At) to the existing commands_list.txt to be able to directly use those new commands without losing direct access to the commands Control Self Variable and Control Media Option. ==== GomezSearch ==== **GomezSearch** is a plugin made jade_hpy which lets the user search information throughout the game data such as variables or string variables use. The interface of the plugin is only provided in Japanese. The plugin can be downloaded from the [[https://jade-hpy.itch.io/gomez-search|itch.io page of the plugin]]. ====== Changes ====== The patch does the following changes to the engine. ===== New commands ===== FIXME //Add link to the page once created.// ===== Modified commands ===== FIXME //Add link to the page once created.// ===== Database properties ===== FIXME //Ensure all database, changed and new properties are listed and properly documented.// ==== Common event triggers ==== ==== Name Input Processing definition ==== ===== Changed and new properties ===== ==== String variables ==== //Player status: Supported// Since the version 210519 of the patch, a new type of variable exists called **string variable**, which can be used to store text. String variables can be altered with the dedicated **Control String Variables** command and some other commands to retrieve info, and they can be used in some commands to replace filenames. ==== Self switches, variables and string variables ==== //Player status: Unsupported// Since the development version 250714 of the patch, three new types of variables exist, **self switches**, **self variables** and **self string variables**. When editing a switch, variable or string variable as part of a map event or common event through regular commands, it is possible to specify a negative value to point to a self value. For instance, if the event of ID 1 on the map of ID 2 uses the command Control Switches to set the switch -1 to ON, it will have its self switch 1 set to ON. Regular commands editing switches, variables, and self variables can be used to alter self values of the current event, and the dedicated **Control Self Variable** command exists to edit self values throughout the game. Due to this feature being a wip in the Maniac patch, the following commands will not alter self values as expected: * ''Set Move Route'' fails to edit self switches * ''Input Number'' will throw an error if a self variable is attempted to be edited Attempting to edit a self value outside of a map event or common event code (e.g. battle code, use of item or skill) will also throw an error. ==== Variable range ==== //Player status: Supported// The patch expands the possible range of values that can be used by variables to the full range of values possible on Int32. As such, whereas the RPG Maker 2000 variable range was [-999 999;999 999] and the RPG Maker 2003 variable range was [-9 999 999;9 999 999], the Maniac patch variable range is [-2 147 483 648;2 147 483 647]. ==== Text markers ==== //Player status: Partial support; only string variable, ExFont syntax, variable and variable redirections implemented // New text markers can be used in text messages: * ''\t[X]'' to display the content of the string variable X. * ''\SelfV[X]'' to display the content of the self variable X. * ''\SelfT[X]'' to display the content of the self string variable X. * ''\W[X]'' to wait X frames before displaying the next character. * ''\E[X]'' to use with the Control Message command. * ''\f["Facefile",10,1]'' to change the face attached to a text box. ''Facefile'' corresponds to the name of the FaceSet, and can be left blank to reuse the current FaceSet, ''10'' corresponds to the face ID, and the ''1'' value indicates if the face should be flipped if present. If no face is displayed on the current message and a character has already started to be drawn, it will not do anything. * ''\f["*"]'' to remove any face attached to a text box. If a face is displayed on the current message and a character has already started to be drawn, it will not do anything. Different methods were added to display characters from the ExFont, which can be used to write new characters that can be added to the ExFont file: * ''$[X]'' to display the ExFont character of value X (with the first character of the ExFont using the value 0) * ''$[X,Y]'' to display the ExFont character of value X,Y on the file (with the first character of the ExFont using the value 0,0) Additionally, it is possible to replace the values by variables or variable redirections. The marker syntax was also expanded: * ''\V:1'', ''\V1'' ''\V 1'' are valid syntaxs for markers with a simple argument, with the possibility to add '';'' to indicate the end of the argument ('';'' will not be displayed) * ''\v[\v[1]]'', ''\v[v[1]]'', ''\v:v:1'', ''\vv1'' can all be used to write a variable redirection, as the second backlash is not needed. * '':'' can be used to separate arguments, e.g. ''\f:"Facefile":10''. ==== Dungeon generation removal ==== //Player status: N/A; The Player currently does not support dungeon generation in the first place // Since the version 210519 of the patch, the dungeon generation feature added in RPG Maker 2003 no longer works during games, and only works to generate a map in the editor. ==== PicPointerPatch removal ==== //Player status: Not disabled, which can lead to issues: see [[https://github.com/EasyRPG/Player/issues/3584|EasyRPG Player issue #3584]] // Since the version 191103 of the patch, compatibility support for the [[..:known-patches#picpointerpatch|PicPointerPatch]] added in English versions of RPG Maker 2003 was removed. This was likely done as to avoid conflicts with the command Set Game Option, which allows increasing the maximum number of pictures that can be displayed on screen. ==== im and pf modes ==== //Player status: Unsupported, games always considered to be in im mode // The Maniac patch comes in two different modes, im and pf. Those modes dictate how event pages are updated. * im stands for **im**mediately, and corresponds to the behaviour of RPG Maker 2003. It is the default mode in modern Maniac versions. Each time a switch or variable is altered, each event on the map has its pages checked to know if it should change page. * pf stands for **p**er **f**rame. When a switch or variable is altered, the pages of the events are checked only once per frame instead of being checked each time a change is done. Before version 241028, each version of the patch was distributed with two different executables, one in im mode and one in pf mode. Since version 241028, the mode is dictated by the content of the RPG_RT.ini file of the game: if ''pf=1'' is added to the ''[RPG_RT]'', the game will run in pf mode. Otherwise, it will run in im mode. ==== Resolution ==== //Player status: Supported; Lowest value not capped// It is possible to change the size of the screen through the patch. The fields ''WinW='' and ''WinH='' can be specified in the ''[RPG_RT]'' section of the RPG_RT.ini file, with WinW defining the window width and WinH defining the window height. * The default window width is 320, with the lowest value capped at 64. * The dfault window height is 240, with the lowest value capped at 32. ==== Debug features ==== FIXME //Complete this section and the next ones.// ==== Ogg support ==== ==== Picture format ==== ==== Screen colour depth ==== ==== Font ==== ==== Exfont ==== ==== JS ==== ====== References and further reading ====== * [[https://bingshan1024.github.io/steam2003_maniacs/|Maniac Patch website]] (Japanese) * [[https://jetrotal.github.io/CSA/|Jetrotal's Cold Spaghetti Analyser]] tool for TPC syntax * [[https://www.rmteka.pl/maniacs-patch-wont-bite-you-1-basic-feature-changes/|Maniacs Patch Won't Bite You # 1 - Basic Feature Changes on RMteka]] ([[https://www.rmteka.pl/maniacs-patch-nie-gryzie-1-zmiany-podstawowych-funkcji/|Original Polish version]], [[https://www.rpg-maker.fr/tutoriels-724-le-patch-maniacs-ne-mord-pas-partie-1.html|French version on Oniromancie]]) * [[https://www.rmteka.pl/maniacs-patch-wont-bite-you-2-new-control-variables/|Maniacs Patch Won't Bite You # 2 - New Control Variables on RMteka]] ([[https://www.rmteka.pl/maniacs-patch-nie-gryzie-2-nowe-control-variables/|Original Polish version]], [[https://www.rpg-maker.fr/tutoriels-725-le-patch-maniacs-ne-mord-pas-partie-2.html|French version on Oniromancie]]) * [[https://www.rmteka.pl/maniacs-patch-wont-bite-you-3-new-features/|Maniacs Patch Won't Bite You # 3 - New Features on RMteka]] ([[https://www.rmteka.pl/maniacs-patch-nie-gryzie-3-nowe-funkcje-programu/|Original Polish version]], [[https://www.rpg-maker.fr/tutoriels-726-le-patch-maniacs-ne-mord-pas-partie-3.html|French version on Oniromancie]]) * [[https://www.rmteka.pl/maniacs-patch-wont-bite-you-4-update-19-05-2021/|Maniacs Patch Won't Bite You # 4 - Update 19.05.2021 on RMteka]] ([[https://www.rmteka.pl/maniacs-patch-nie-gryzie-4-aktualizacja-19-05-2021/|Original Polish version]]) * [[https://wikiwiki.jp/viprpg-dev/2003/%E6%8B%A1%E5%BC%B5%E3%83%91%E3%83%83%E3%83%81|Maniac Patch on VIPRPG]] * [[https://www.makerpendium.de/wiki/Maniac_Patch|Maniac Patch on Makerpendium]] (German)