diff --git a/.gitignore b/.gitignore index f9b7792..ec697f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ # Ignore release output release/output -*.xdelta \ No newline at end of file +*.xdelta +*.win \ No newline at end of file diff --git a/README.md b/README.md index 456ce21..cbfe90c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Difficulty options for DELTARUNE. Make the game easy, hard, or nightmare! ( or n ## Download -**[Latest release](https://github.com/Emmehehe/CustomDifficultyModForDeltarune/releases/tag/1.6.1)** +**[Latest release](https://github.com/Emmehehe/CustomDifficultyModForDeltarune/releases/tag/1.7.0)** ## What you can change - **Presets** — Select from various difficulty presets @@ -220,48 +220,54 @@ Example: 1. Download [UndertaleModTool CLI](https://github.com/UnderminersTeam/UndertaleModTool/releases) for your platform 2. Extract it next to the game files -3. Apply scripts in this order: `modmenu_ch1to4.csx` then `customdifficulty_ch1to4.csx` +3. Apply scripts in this order: `modmenu_ch1to5.csx` then `customdifficulty_ch1to5.csx` **Windows** ```bat -UndertaleModCli.exe load "chapter1_windows\data.win" --scripts "src\modmenu_ch1to4.csx" --verbose false --output "chapter1_windows\data.win" -UndertaleModCli.exe load "chapter2_windows\data.win" --scripts "src\modmenu_ch1to4.csx" --verbose false --output "chapter2_windows\data.win" -UndertaleModCli.exe load "chapter3_windows\data.win" --scripts "src\modmenu_ch1to4.csx" --verbose false --output "chapter3_windows\data.win" -UndertaleModCli.exe load "chapter4_windows\data.win" --scripts "src\modmenu_ch1to4.csx" --verbose false --output "chapter4_windows\data.win" - -UndertaleModCli.exe load "chapter1_windows\data.win" --scripts "src\customdifficulty_ch1to4.csx" --verbose false --output "chapter1_windows\data.win" -UndertaleModCli.exe load "chapter2_windows\data.win" --scripts "src\customdifficulty_ch1to4.csx" --verbose false --output "chapter2_windows\data.win" -UndertaleModCli.exe load "chapter3_windows\data.win" --scripts "src\customdifficulty_ch1to4.csx" --verbose false --output "chapter3_windows\data.win" -UndertaleModCli.exe load "chapter4_windows\data.win" --scripts "src\customdifficulty_ch1to4.csx" --verbose false --output "chapter4_windows\data.win" +UndertaleModCli.exe load "chapter1_windows\data.win" --scripts "src\modmenu_ch1to5.csx" --verbose false --output "chapter1_windows\data.win" +UndertaleModCli.exe load "chapter2_windows\data.win" --scripts "src\modmenu_ch1to5.csx" --verbose false --output "chapter2_windows\data.win" +UndertaleModCli.exe load "chapter3_windows\data.win" --scripts "src\modmenu_ch1to5.csx" --verbose false --output "chapter3_windows\data.win" +UndertaleModCli.exe load "chapter4_windows\data.win" --scripts "src\modmenu_ch1to5.csx" --verbose false --output "chapter4_windows\data.win" +UndertaleModCli.exe load "chapter5_windows\data.win" --scripts "src\modmenu_ch1to5.csx" --verbose false --output "chapter5_windows\data.win" + +UndertaleModCli.exe load "chapter1_windows\data.win" --scripts "src\customdifficulty_ch1to5.csx" --verbose false --output "chapter1_windows\data.win" +UndertaleModCli.exe load "chapter2_windows\data.win" --scripts "src\customdifficulty_ch1to5.csx" --verbose false --output "chapter2_windows\data.win" +UndertaleModCli.exe load "chapter3_windows\data.win" --scripts "src\customdifficulty_ch1to5.csx" --verbose false --output "chapter3_windows\data.win" +UndertaleModCli.exe load "chapter4_windows\data.win" --scripts "src\customdifficulty_ch1to5.csx" --verbose false --output "chapter4_windows\data.win" +UndertaleModCli.exe load "chapter5_windows\data.win" --scripts "src\customdifficulty_ch1to5.csx" --verbose false --output "chapter5_windows\data.win" ``` **macOS** ```bash -./UndertaleModCli load chapter1_mac/game.ios --scripts src/modmenu_ch1to4.csx --verbose false --output chapter1_mac/game.ios -./UndertaleModCli load chapter2_mac/game.ios --scripts src/modmenu_ch1to4.csx --verbose false --output chapter2_mac/game.ios -./UndertaleModCli load chapter3_mac/game.ios --scripts src/modmenu_ch1to4.csx --verbose false --output chapter3_mac/game.ios -./UndertaleModCli load chapter4_mac/game.ios --scripts src/modmenu_ch1to4.csx --verbose false --output chapter4_mac/game.ios - -./UndertaleModCli load chapter1_mac/game.ios --scripts src/customdifficulty_ch1to4.csx --verbose false --output chapter1_mac/game.ios -./UndertaleModCli load chapter2_mac/game.ios --scripts src/customdifficulty_ch1to4.csx --verbose false --output chapter2_mac/game.ios -./UndertaleModCli load chapter3_mac/game.ios --scripts src/customdifficulty_ch1to4.csx --verbose false --output chapter3_mac/game.ios -./UndertaleModCli load chapter4_mac/game.ios --scripts src/customdifficulty_ch1to4.csx --verbose false --output chapter4_mac/game.ios +./UndertaleModCli load chapter1_mac/game.ios --scripts src/modmenu_ch1to5.csx --verbose false --output chapter1_mac/game.ios +./UndertaleModCli load chapter2_mac/game.ios --scripts src/modmenu_ch1to5.csx --verbose false --output chapter2_mac/game.ios +./UndertaleModCli load chapter3_mac/game.ios --scripts src/modmenu_ch1to5.csx --verbose false --output chapter3_mac/game.ios +./UndertaleModCli load chapter4_mac/game.ios --scripts src/modmenu_ch1to5.csx --verbose false --output chapter4_mac/game.ios +./UndertaleModCli load chapter5_mac/game.ios --scripts src/modmenu_ch1to5.csx --verbose false --output chapter5_mac/game.ios + +./UndertaleModCli load chapter1_mac/game.ios --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter1_mac/game.ios +./UndertaleModCli load chapter2_mac/game.ios --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter2_mac/game.ios +./UndertaleModCli load chapter3_mac/game.ios --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter3_mac/game.ios +./UndertaleModCli load chapter4_mac/game.ios --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter4_mac/game.ios +./UndertaleModCli load chapter5_mac/game.ios --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter5_mac/game.ios ``` **Linux w\ Proton** ```bash -./UndertaleModCli load chapter1_windows/data.win --scripts src/modmenu_ch1to4.csx --verbose false --output chapter1_windows/data.win -./UndertaleModCli load chapter2_windows/data.win --scripts src/modmenu_ch1to4.csx --verbose false --output chapter2_windows/data.win -./UndertaleModCli load chapter3_windows/data.win --scripts src/modmenu_ch1to4.csx --verbose false --output chapter3_windows/data.win -./UndertaleModCli load chapter4_windows/data.win --scripts src/modmenu_ch1to4.csx --verbose false --output chapter4_windows/data.win - -./UndertaleModCli load chapter1_windows/data.win --scripts src/customdifficulty_ch1to4.csx --verbose false --output chapter1_windows/data.win -./UndertaleModCli load chapter2_windows/data.win --scripts src/customdifficulty_ch1to4.csx --verbose false --output chapter2_windows/data.win -./UndertaleModCli load chapter3_windows/data.win --scripts src/customdifficulty_ch1to4.csx --verbose false --output chapter3_windows/data.win -./UndertaleModCli load chapter4_windows/data.win --scripts src/customdifficulty_ch1to4.csx --verbose false --output chapter4_windows/data.win +./UndertaleModCli load chapter1_windows/data.win --scripts src/modmenu_ch1to5.csx --verbose false --output chapter1_windows/data.win +./UndertaleModCli load chapter2_windows/data.win --scripts src/modmenu_ch1to5.csx --verbose false --output chapter2_windows/data.win +./UndertaleModCli load chapter3_windows/data.win --scripts src/modmenu_ch1to5.csx --verbose false --output chapter3_windows/data.win +./UndertaleModCli load chapter4_windows/data.win --scripts src/modmenu_ch1to5.csx --verbose false --output chapter4_windows/data.win +./UndertaleModCli load chapter5_windows/data.win --scripts src/modmenu_ch1to5.csx --verbose false --output chapter5_windows/data.win + +./UndertaleModCli load chapter1_windows/data.win --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter1_windows/data.win +./UndertaleModCli load chapter2_windows/data.win --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter2_windows/data.win +./UndertaleModCli load chapter3_windows/data.win --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter3_windows/data.win +./UndertaleModCli load chapter4_windows/data.win --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter4_windows/data.win +./UndertaleModCli load chapter5_windows/data.win --scripts src/customdifficulty_ch1to5.csx --verbose false --output chapter5_windows/data.win ``` **Notes** diff --git a/install-linux-proton.sh b/install-linux-proton.sh index 4541b1d..ca5ccb6 100755 --- a/install-linux-proton.sh +++ b/install-linux-proton.sh @@ -11,7 +11,7 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SCRIPTS_DIR="$SCRIPT_DIR/src" -MOD_SCRIPTS=("$SCRIPTS_DIR/modmenu_ch1to4.csx" "$SCRIPTS_DIR/customdifficulty_ch1to4.csx") +MOD_SCRIPTS=("$SCRIPTS_DIR/modmenu_ch1to5.csx" "$SCRIPTS_DIR/customdifficulty_ch1to5.csx") CACHE_DIR="$HOME/.cache/diffmod-utmt" mkdir -p "$CACHE_DIR" @@ -118,7 +118,7 @@ detect_game_dir_if_needed() { find_chapter_files() { local RES="$1" local files=() - for ch in 1 2 3 4; do + for ch in 1 2 3 4 5; do local f="$RES/chapter${ch}_windows/data.win" [[ -f "$f" ]] && files+=("$f") done diff --git a/install-macos.command b/install-macos.command index 75c7dc9..b6f2cb8 100755 --- a/install-macos.command +++ b/install-macos.command @@ -11,7 +11,7 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SCRIPTS_DIR="$SCRIPT_DIR/src" -MOD_SCRIPTS=("$SCRIPTS_DIR/modmenu_ch1to4.csx" "$SCRIPTS_DIR/customdifficulty_ch1to4.csx") +MOD_SCRIPTS=("$SCRIPTS_DIR/modmenu_ch1to5.csx" "$SCRIPTS_DIR/customdifficulty_ch1to5.csx") CACHE_DIR="$HOME/.cache/diffmod-utmt" mkdir -p "$CACHE_DIR" @@ -131,7 +131,7 @@ APP find_chapter_files() { local RES="$1" local files=() - for ch in 1 2 3 4; do + for ch in 1 2 3 4 5; do local f="$RES/chapter${ch}_mac/game.ios" [[ -f "$f" ]] && files+=("$f") done diff --git a/install-windows.ps1 b/install-windows.ps1 index 305ce05..6e624de 100644 --- a/install-windows.ps1 +++ b/install-windows.ps1 @@ -27,8 +27,8 @@ function Die($m){ Write-Host "`n[ERROR] $m" -ForegroundColor Red; exit 1 } # Resolve script & mod script paths $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path $ScriptsDir = Join-Path $ScriptDir 'src' -$ModMenuScript = (Join-Path $ScriptsDir 'modmenu_ch1to4.csx') -$CustDiffScript = (Join-Path $ScriptsDir 'customdifficulty_ch1to4.csx') +$ModMenuScript = (Join-Path $ScriptsDir 'modmenu_ch1to5.csx') +$CustDiffScript = (Join-Path $ScriptsDir 'customdifficulty_ch1to5.csx') # Verify scripts exist if (-not $NoModMenu) { @@ -187,7 +187,7 @@ function Detect-GameDir { function Find-ChapterFiles { param([string]$GamePath) $files = @() - for ($ch = 1; $ch -le 4; $ch++) { + for ($ch = 1; $ch -le 5; $ch++) { # Windows uses chapterX_windows\data.win pattern $f = Join-Path $GamePath "chapter${ch}_windows\data.win" if (Test-Path $f) { diff --git a/release/custom-difficulty-drmod-demo/_deltamodInfo.json b/release/custom-difficulty-drmod-demo/_deltamodInfo.json index 514856c..8d511ed 100644 --- a/release/custom-difficulty-drmod-demo/_deltamodInfo.json +++ b/release/custom-difficulty-drmod-demo/_deltamodInfo.json @@ -1,7 +1,7 @@ { "metadata": { "name": "Custom Difficulty", - "version": "1.6.1", + "version": "1.7.0", "description": "Difficulty options for DELTARUNE. Make the game Easy, Hard, or Nightmare. No-hit options included.", "author": ["Emmahaha"], "packageID": "com.emmahaha.customdiffdemo", diff --git a/release/custom-difficulty-drmod-demo/_icon.png b/release/custom-difficulty-drmod-demo/_icon.png index 6e406eb..4b58a9d 100644 Binary files a/release/custom-difficulty-drmod-demo/_icon.png and b/release/custom-difficulty-drmod-demo/_icon.png differ diff --git a/release/custom-difficulty-drmod-fullgame/_deltamodInfo.json b/release/custom-difficulty-drmod-fullgame/_deltamodInfo.json index 8a793a5..671c880 100644 --- a/release/custom-difficulty-drmod-fullgame/_deltamodInfo.json +++ b/release/custom-difficulty-drmod-fullgame/_deltamodInfo.json @@ -1,7 +1,7 @@ { "metadata": { "name": "Custom Difficulty", - "version": "1.6.1", + "version": "1.7.0", "description": "Difficulty options for DELTARUNE. Make the game Easy, Hard, or Nightmare. No-hit options included.", "author": ["Emmahaha"], "packageID": "com.emmahaha.customdiff", @@ -9,7 +9,7 @@ "url": "https://gamebanana.com/mods/613308", "tags": ["customization", "gameplay"] }, - "deltaruneTargetVersion": "1.04", + "deltaruneTargetVersion": "TODO", "neededFiles": [ { "file": "chapter1_windows/data.win", @@ -30,5 +30,10 @@ "file": "chapter4_windows/data.win", "checksum": "07e2df1088e56532b992fc9c59f88a4d66420ada4da9ff49ba6823a7f2cc3d47" } + + { + "file": "chapter5_windows/data.win", + "checksum": "TODO" + } ] } diff --git a/release/custom-difficulty-drmod-fullgame/_icon.png b/release/custom-difficulty-drmod-fullgame/_icon.png index 64d7671..f68c28f 100644 Binary files a/release/custom-difficulty-drmod-fullgame/_icon.png and b/release/custom-difficulty-drmod-fullgame/_icon.png differ diff --git a/release/custom-difficulty-drmod-fullgame/modding.xml b/release/custom-difficulty-drmod-fullgame/modding.xml index bc7976a..d9f6962 100644 --- a/release/custom-difficulty-drmod-fullgame/modding.xml +++ b/release/custom-difficulty-drmod-fullgame/modding.xml @@ -2,3 +2,4 @@ + diff --git a/release/modmenu-drmod-demo/_deltamodInfo.json b/release/modmenu-drmod-demo/_deltamodInfo.json index fff8655..eb42ea5 100644 --- a/release/modmenu-drmod-demo/_deltamodInfo.json +++ b/release/modmenu-drmod-demo/_deltamodInfo.json @@ -1,7 +1,7 @@ { "metadata": { "name": "Mod Menu", - "version": "1.6.0", + "version": "1.7.0", "description": "Mod menu for DELTARUNE. Framework for mods to add option menus.", "author": ["Emmahaha"], "packageID": "com.emmahaha.modmenudemo", diff --git a/release/modmenu-drmod-demo/_icon.png b/release/modmenu-drmod-demo/_icon.png index 75d8aa0..c296156 100644 Binary files a/release/modmenu-drmod-demo/_icon.png and b/release/modmenu-drmod-demo/_icon.png differ diff --git a/release/modmenu-drmod-fullgame/_deltamodInfo.json b/release/modmenu-drmod-fullgame/_deltamodInfo.json index 0ec35b5..8d7d8a7 100644 --- a/release/modmenu-drmod-fullgame/_deltamodInfo.json +++ b/release/modmenu-drmod-fullgame/_deltamodInfo.json @@ -1,7 +1,7 @@ { "metadata": { "name": "Mod Menu", - "version": "1.6.0", + "version": "1.7.0", "description": "Mod menu for DELTARUNE. Framework for mods to add option menus.", "author": ["Emmahaha"], "packageID": "com.emmahaha.modmenu", @@ -9,7 +9,7 @@ "url": "https://gamebanana.com/mods/615910", "tags": ["other"] }, - "deltaruneTargetVersion": "1.04", + "deltaruneTargetVersion": "TODO", "neededFiles": [ { "file": "chapter1_windows/data.win", @@ -30,5 +30,10 @@ "file": "chapter4_windows/data.win", "checksum": "07e2df1088e56532b992fc9c59f88a4d66420ada4da9ff49ba6823a7f2cc3d47" } + + { + "file": "chapter5_windows/data.win", + "checksum": "TODO" + } ] } diff --git a/release/modmenu-drmod-fullgame/_icon.png b/release/modmenu-drmod-fullgame/_icon.png index 3af929b..9b4e1da 100644 Binary files a/release/modmenu-drmod-fullgame/_icon.png and b/release/modmenu-drmod-fullgame/_icon.png differ diff --git a/release/modmenu-drmod-fullgame/modding.xml b/release/modmenu-drmod-fullgame/modding.xml index bc7976a..d9f6962 100644 --- a/release/modmenu-drmod-fullgame/modding.xml +++ b/release/modmenu-drmod-fullgame/modding.xml @@ -2,3 +2,4 @@ + diff --git a/src/customdifficulty_ch1to4.csx b/src/customdifficulty_ch1to5.csx similarity index 98% rename from src/customdifficulty_ch1to4.csx rename to src/customdifficulty_ch1to5.csx index c7f6d3b..d385eab 100644 --- a/src/customdifficulty_ch1to4.csx +++ b/src/customdifficulty_ch1to5.csx @@ -18,7 +18,7 @@ if (alreadyInstalled != null) { } // Prefire checks -const string expectedDisplayName = "DELTARUNE \\S+ ([1-4](?:&2)?)"; +const string expectedDisplayName = "DELTARUNE \\S+ ([1-5](?:&2)?)"; if (!Regex.IsMatch(displayName, expectedDisplayName, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(500))) { ScriptError($"Error 0: data file display name does not match expected: '{expectedDisplayName}', actual display name: '{displayName}'."); @@ -240,6 +240,21 @@ if (ch_no > 3) string[] loadCh3 = {"gml_GlobalScript_scr_load_chapter3"}; loadLikes = loadLikes.Concat(loadCh3).ToArray(); } +if (ch_no > 4) +{ + string[] loadCh4 = {"gml_GlobalScript_scr_load_chapter4"}; + loadLikes = loadLikes.Concat(loadCh3).ToArray(); +} +// if (ch_no > 5) +// { +// string[] loadCh5 = {"gml_GlobalScript_scr_load_chapter5"}; +// loadLikes = loadLikes.Concat(loadCh3).ToArray(); +// } +// if (ch_no > 6) +// { +// string[] loadCh6 = {"gml_GlobalScript_scr_load_chapter6"}; +// loadLikes = loadLikes.Concat(loadCh3).ToArray(); +// } foreach (string scrName in loadLikes) { importGroup.QueueTrimmedLinesFindReplace(scrName, $"ossafe_file_text_close{(scrName.EndsWith("_ch1") ? "_ch1" : "")}(myfileid);", @$" @@ -1091,6 +1106,15 @@ if (ch_no == 2 || ch_no == 0) { importGroup.QueueFindReplace("gml_Object_obj_sneo_wireheart_Draw_0", "global.monsterhp[0] -= ceil(global.monstermaxhp[0] * 0.03);", "global.monsterhp[0] -= ceil(global.diff_plrdmg * global.monstermaxhp[0] * 0.03);"); } +// fix susie vs. lancer softlock +if (ch_no == 1 || ch_no == 0) { + importGroup.QueueFindReplace("gml_GlobalScript_scr_monstersetup", "global.monstermaxhp[myself] = 2400;", "global.monstermaxhp[myself] = ceil(global.diff_plrdmg * 2400);"); + importGroup.QueueFindReplace("gml_GlobalScript_scr_monstersetup", "global.monsterhp[myself] = 2400;", "global.monsterhp[myself] = ceil(global.diff_plrdmg * 2400);"); + if (ch_no == 0) { + importGroup.QueueFindReplace("gml_GlobalScript_scr_monstersetup_ch1", "global.monstermaxhp[myself] = 2400;", "global.monstermaxhp[myself] = ceil(global.diff_plrdmg * 2400);"); + importGroup.QueueFindReplace("gml_GlobalScript_scr_monstersetup_ch1", "global.monsterhp[myself] = 2400;", "global.monsterhp[myself] = ceil(global.diff_plrdmg * 2400);"); + } +} // Apply Game Board Player Damage if (ch_no == 3) diff --git a/src/modmenu_ch1to4.csx b/src/modmenu_ch1to5.csx similarity index 99% rename from src/modmenu_ch1to4.csx rename to src/modmenu_ch1to5.csx index e7cb9d1..3cbd62a 100644 --- a/src/modmenu_ch1to4.csx +++ b/src/modmenu_ch1to5.csx @@ -19,7 +19,7 @@ if (alreadyInstalled != null) { } // Prefire checks -const string expectedDisplayName = "DELTARUNE \\S+ ([1-4](?:&2)?)"; +const string expectedDisplayName = "DELTARUNE \\S+ ([1-5](?:&2)?)"; if (!Regex.IsMatch(displayName, expectedDisplayName, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(500))) { ScriptError($"Error 0: data file display name does not match expected: '{expectedDisplayName}', actual display name: '{displayName}'."); @@ -136,7 +136,7 @@ UndertaleModLib.Compiler.CodeImportGroup importGroup = new(Data){ ThrowOnNoOpFindReplace = true }; -// The demo is on an old version of game maker that doesn't have the string_split, string_ends_with, or string_trim functions so add implementations +// The demo is on an old version of game maker that doesn't have the string_split, string_ends_with, or string_trim functions so add (very) basic implementations string[] darkcons = {"gml_Object_obj_darkcontroller"}; if (ch_no == 0) { @@ -253,6 +253,7 @@ string global_lang = @"(global.modmenu_langoverride != """" ? global.modmenu_lan Func ds_map_find_value_lang = (id, key) => @$"(ds_map_exists({id}, {key} + ""_"" + {global_lang}) ? ds_map_find_value({id}, {key} + ""_"" + {global_lang}) : ds_map_find_value({id}, {key} + ""_en""))"; + // Add menu draw code foreach (string darkcon in darkcons) {