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)
{