Last active
December 26, 2022 22:08
-
-
Save Dobby233Liu/0e8a9358118a0b76117b3d414521e14e to your computer and use it in GitHub Desktop.
Concept for a recipe file for a kinda customizable Undertale mod patcher
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Show hidden characters
{ | |
// Behaviour of the auto-patcher is defined here | |
// EVERYTHING HERE is subject to change | |
// Always 1 | |
"APILevel": 1, | |
"FriendlyName": "My Crappy Mod 2000" | |
"BasedOn": { | |
// 1 - Undertale, 2 - Deltarune SURVEY_PROGRAM (unsupported), 3 - Deltarune CH1&2 | |
// always 1 ATM | |
"Game": 1, | |
// The patcher has builtin patches to change the version to match the target | |
// (limited to Mac/Linux DRM -> Windows DRM or Windows DRM-free -> Windows DRM ATM) | |
"Variant": "Undertale.WindowsSteamDRM", | |
// Only 1.08 and up are supported | |
// 1 - 1.08; 2 - 1.09~1.11, upgrade to GMS2 only; 3 - 1.11, full upgrade (unsupported) | |
"GameVersion": 2 | |
}, | |
"Patches": [ | |
{ | |
"Name": "Core", | |
// inherits default friendly name and description from the patcher defaults | |
/*"Required": true, | |
"CopyFiles": { | |
// file : dest | |
}, | |
"CopyFilesBranchOnTarget": { | |
// target : { file : dest } | |
// "All": {}, | |
}, | |
"PatchFiles": { | |
// src : patch | |
// src supports wildcards | |
// start path with $ to grab a string from Assets | |
"game.data": "$Binaries.Mod.Patch" | |
}*/ | |
}, | |
{ | |
"Name": "BetterMegalovania", | |
"FriendlyName": "Better MEGALOVANIA", | |
"Description": "Replaces the song of the funny bone man's fight.", | |
"CopyFiles": { | |
"Better ost/mus_zz_megalovania.ogg": "mus_zz_megalovania.ogg" | |
}, | |
"DeleteFiles": [ | |
"mus_churchbell.ogg" | |
] | |
} | |
], | |
// Customize stuff in the patcher and localize strings defined in other parts of this recipe here | |
// This is the language that this recipe is designed for | |
"TextLanguage": "en", | |
"Strings": { | |
// language : { string key : string value } | |
// Having a language in this list will cause it to appear during initialization, even if there is no strings for the language | |
"zh_Hans": { | |
"Mod.FriendlyName": "垃圾模组2000", | |
"Mod.Patches.BetterMegalovania.FriendlyName": "改进 MEGALOVANIA", | |
"Mod.Patches.BetterMegalovania.Description": "更改骷髅男战斗的音乐。" | |
} | |
}, | |
"Assets": { | |
// type : { "resource key" : replacement } | |
// Use paths relative to location of recipe unless specified otherwise | |
"Graphics": { | |
// Use png files (ideally) | |
"Wizard.SidebarImage": "Setup wizard images/sidebar.png", | |
"Wizard.StepTitleBarImage": "Setup wizard images/title bar.png" | |
}, | |
"Binaries": { | |
// Use this to rename built-in patch filenames | |
// Tip: you can remove files that are not used in your recipe | |
"Mod.Patch": "mod.xdelta", | |
"VersionUpdating.Undertale.GMS2Runner.Windows": "PLEASE_RUN_PATCHER.exe", | |
// Require the user to download SP | |
"VersionUpdating.Undertale.GMS2Runner.MacOS": null, | |
"VersionUpdating.Undertale.GMS2Runner.Linux.DownloadURL": "h", | |
"VersionUpdating.Undertale.GMS2Runner.Linux.Icon": "mod icon.png" | |
} | |
}, | |
// Stuff that has defaults not included here | |
"TargetDeterminationConditions": [ | |
// Attempt to conclude what is the kind of the game we are patching with a few conditions | |
// Every dictionary in this array contains such conditions and is called a set, if one of the conditions in a set hits, the patcher proceeds to the next set | |
// In every set one of the conditions with ShouldMatch should hit, otherwise the patching operation will be terminated | |
// The patcher already has presets for all builtin targets: | |
// "All", "Windows", "Linux", "MacOS", "Undertale.LinuxSteamDRM", "Undertale.MacOSSteamDRM", "Undertale.WindowsSteamDRM" and "Undertale.WindowsDRMFree" | |
// You can add extra conditions for those keys if needed | |
// { target name : { conditions } } | |
], | |
"BaseDirectory": { | |
// One for each target, you can use .. until the true root directory of the game is reached | |
// The patcher already has presets for all builtin targets | |
// You can replace the defaults by using those keys if needed | |
// target : directory | |
}, | |
"DestinationFilenameAliases": { | |
// We pretend that a file exists, and when the patch operation require one of these files, operate on the first existing file in the value array instead | |
// The spoof filename would ideally be a nonexisting file | |
// The patcher has a default "game.data" that for example leads to data.win for the Windows target | |
// spoof file name : [ redirect file names ] | |
}, | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment