From ccea395b0b46e749b5b01634fa77f6946305f215 Mon Sep 17 00:00:00 2001 From: GetParanoid Date: Fri, 18 Jul 2025 16:05:58 -0500 Subject: [PATCH] feat(increase climb height) --- .../config ReadMe.txt | 42 ++++++++++++ .../config.json | 26 +++++++ .../package.json | 32 +++++++++ .../src/mod.js | 58 ++++++++++++++++ .../src/mod.js.map | 10 +++ .../src/mod.ts | 68 +++++++++++++++++++ 6 files changed, 236 insertions(+) create mode 100644 user/mods/redlaser42-Increase Climb Height/config ReadMe.txt create mode 100644 user/mods/redlaser42-Increase Climb Height/config.json create mode 100644 user/mods/redlaser42-Increase Climb Height/package.json create mode 100644 user/mods/redlaser42-Increase Climb Height/src/mod.js create mode 100644 user/mods/redlaser42-Increase Climb Height/src/mod.js.map create mode 100644 user/mods/redlaser42-Increase Climb Height/src/mod.ts diff --git a/user/mods/redlaser42-Increase Climb Height/config ReadMe.txt b/user/mods/redlaser42-Increase Climb Height/config ReadMe.txt new file mode 100644 index 0000000..5983341 --- /dev/null +++ b/user/mods/redlaser42-Increase Climb Height/config ReadMe.txt @@ -0,0 +1,42 @@ +Here are the game's defaults with my experience tweaking them: + + "InteractMaxHeight": 1.31, + This one setting is 99% of the mod. It's the height a climb will be attempted. You could bump this up to make things feel more grippy, but how high your character moves up won't change. + + "InteractMaxLength": 10, + This is how close in front of you a wall needs to be to attempt a climb. I left this at default. It didn't help get to more ledges because where you climb up to does not go further out. + + "MinDistantToInteract": 0.5, + IDK what this does but was with the other two. Didn't notice any effect. + + + "BaseJumpPenalty": 0.3, + Inertia penalty for jumping. I set this to 0 for off. + + "MaxOneHandAnimationHeight": 2.3, + How high a the one handed climb animation transitions into a two handed climb. One hands are slightly faster, so this could be boosted, but wouldn't above 3.5. I left this at default. + + "MaxWithoutHandHeight": 0.65, + How high you can do a no-handed step up. I left this at default. Looks wonky past 2 + + + "VaultingInputTime": 0.5, + I didn't notice an effect lowering this to 0. I could still vault as quick as I could press a key. + + "AnimationVerticalSpeed": 1.1, + "AnimationForwardSpeed": 0.8, + How fast you climb. Left at default. Adjust .1 at a time. + + + "GridOffsetX": 0, + "GridOffsetY": 0, + "GridOffsetZ": 0, + "GridSizeX": 0, + "GridSizeY": 1.8, + "GridSizeZ": 2, + "OffsetFactor": 0.1, + "SteppingLengthX": 0.1, + "SteppingLengthY": 0.1, + "SteppingLengthZ": 0.1 + Everything above is under "Grid Settings". I tweaked these settings, but it was hard to tell what was happening. + I didn't notice any effect except making the grid too small or large prevents you from climbing. Left all at defaults. diff --git a/user/mods/redlaser42-Increase Climb Height/config.json b/user/mods/redlaser42-Increase Climb Height/config.json new file mode 100644 index 0000000..72b8328 --- /dev/null +++ b/user/mods/redlaser42-Increase Climb Height/config.json @@ -0,0 +1,26 @@ +{ + "InteractMaxHeight": 1.72, + "InteractMaxLength": 10, + "MinDistantToInteract": 0.5, + + "BaseJumpPenalty": 0, + + "MaxOneHandAnimationHeight": 2.3, + "MaxWithoutHandHeight": 0.65, + + "VaultingInputTime": 0.5, + + "AnimationVerticalSpeed": 1.1, + "AnimationForwardSpeed": 0.8, + + "GridOffsetX": 0, + "GridOffsetY": 0, + "GridOffsetZ": 0, + "GridSizeX": 0, + "GridSizeY": 1.8, + "GridSizeZ": 2, + "OffsetFactor": 0.1, + "SteppingLengthX": 0.1, + "SteppingLengthY": 0.1, + "SteppingLengthZ": 0.1 +} diff --git a/user/mods/redlaser42-Increase Climb Height/package.json b/user/mods/redlaser42-Increase Climb Height/package.json new file mode 100644 index 0000000..496e374 --- /dev/null +++ b/user/mods/redlaser42-Increase Climb Height/package.json @@ -0,0 +1,32 @@ +{ + "name": "Increase Climb Height", + "version": "1.2.0", + "sptVersion": "~3.11", + "loadBefore": [], + "loadAfter": [], + "incompatibilities": [], + "isBundleMod": false, + "main": "src/mod.js", + "scripts": { + "setup": "npm i", + "build": "node ./build.mjs", + "buildinfo": "node ./build.mjs --verbose" + }, + "devDependencies": { + "@types/node": "20.11", + "@typescript-eslint/eslint-plugin": "7.2", + "@typescript-eslint/parser": "7.2", + "archiver": "^6.0", + "eslint": "8.57", + "fs-extra": "11.2", + "ignore": "^5.2", + "tsyringe": "4.8.0", + "typescript": "5.4", + "winston": "3.12" + }, + "author": "redlaser42", + "contributors": [], + "license": "MIT", + "dependencies": { + } +} diff --git a/user/mods/redlaser42-Increase Climb Height/src/mod.js b/user/mods/redlaser42-Increase Climb Height/src/mod.js new file mode 100644 index 0000000..7265cc1 --- /dev/null +++ b/user/mods/redlaser42-Increase Climb Height/src/mod.js @@ -0,0 +1,58 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mod = void 0; +const config_json_1 = __importDefault(require("./../config.json")); +const cfMaxLength = config_json_1.default.InteractMaxLength; +const cfMaxHeight = config_json_1.default.InteractMaxHeight; +const cfMinDistantToInteract = config_json_1.default.MinDistantToInteract; +const cfMaxOneHandHeight = config_json_1.default.MaxOneHandAnimationHeight; +const cfMaxWithoutHandHeight = config_json_1.default.MaxWithoutHandHeight; +const cfBaseJumpPenalty = config_json_1.default.BaseJumpPenalty; +const cfVaultingInputTime = config_json_1.default.VaultingInputTime; +const cfSpeedRangeX = config_json_1.default.AnimationForwardSpeed; +const cfSpeedRangeY = config_json_1.default.AnimationVerticalSpeed; +const cfGridOffsetX = config_json_1.default.GridOffsetX; +const cfGridOffsetY = config_json_1.default.GridOffsetY; +const cfGridOffsetZ = config_json_1.default.GridOffsetZ; +const cfGridSizeX = config_json_1.default.GridSizeX; +const cfGridSizeY = config_json_1.default.GridSizeY; +const cfGridSizeZ = config_json_1.default.GridSizeZ; +const cfOffsetFactor = config_json_1.default.OffsetFactor; +const cfSteppingLengthX = config_json_1.default.SteppingLengthX; +const cfSteppingLengthY = config_json_1.default.SteppingLengthY; +const cfSteppingLengthZ = config_json_1.default.SteppingLengthZ; +class Mod { + postDBLoad(container) { + // get database from server + const databaseServer = container.resolve("DatabaseServer"); + // Get all the in-memory json found in /assets/database + const tables = databaseServer.getTables(); + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MoveRestrictions.MaxLength = cfMaxLength; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MoveRestrictions.MaxHeight = cfMaxHeight; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MoveRestrictions.MinDistantToInteract = cfMinDistantToInteract; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.AutoMoveRestrictions.MaxLength = cfMaxLength; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.AutoMoveRestrictions.MaxHeight = cfMaxHeight; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.AutoMoveRestrictions.MinDistantToInteract = cfMinDistantToInteract; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.SpeedRange.x = cfSpeedRangeX; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.SpeedRange.y = cfSpeedRangeY; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MaxOneHandHeight = cfMaxOneHandHeight; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MaxWithoutHandHeight = cfMaxWithoutHandHeight; + tables.globals.config.Inertia.BaseJumpPenalty = cfBaseJumpPenalty; + tables.globals.config.VaultingSettings.GridSettings.SteppingLengthY = cfSteppingLengthY; + tables.globals.config.VaultingSettings.GridSettings.SteppingLengthX = cfSteppingLengthX; + tables.globals.config.VaultingSettings.GridSettings.SteppingLengthZ = cfSteppingLengthZ; + tables.globals.config.VaultingSettings.GridSettings.GridOffsetY = cfGridOffsetY; + tables.globals.config.VaultingSettings.GridSettings.GridOffsetX = cfGridOffsetX; + tables.globals.config.VaultingSettings.GridSettings.GridOffsetZ = cfGridOffsetZ; + tables.globals.config.VaultingSettings.GridSettings.GridSizeY = cfGridSizeY; + tables.globals.config.VaultingSettings.GridSettings.GridSizeX = cfGridSizeX; + tables.globals.config.VaultingSettings.GridSettings.GridSizeZ = cfGridSizeZ; + tables.globals.config.VaultingSettings.GridSettings.OffsetFactor = cfOffsetFactor; + tables.globals.config.VaultingSettings.VaultingInputTime = cfVaultingInputTime; + } +} +exports.mod = new Mod(); +//# sourceMappingURL=mod.js.map \ No newline at end of file diff --git a/user/mods/redlaser42-Increase Climb Height/src/mod.js.map b/user/mods/redlaser42-Increase Climb Height/src/mod.js.map new file mode 100644 index 0000000..331640f --- /dev/null +++ b/user/mods/redlaser42-Increase Climb Height/src/mod.js.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "mod.js", + "sourceRoot": "", + "sources": [ + "mod.ts" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/user/mods/redlaser42-Increase Climb Height/src/mod.ts b/user/mods/redlaser42-Increase Climb Height/src/mod.ts new file mode 100644 index 0000000..813e3ed --- /dev/null +++ b/user/mods/redlaser42-Increase Climb Height/src/mod.ts @@ -0,0 +1,68 @@ +import { DependencyContainer } from "tsyringe"; + +import { IPostDBLoadMod } from "@spt/models/external/IPostDBLoadMod"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables"; + +import config from "./../config.json"; + +const cfMaxLength = config.InteractMaxLength; +const cfMaxHeight = config.InteractMaxHeight; +const cfMinDistantToInteract = config.MinDistantToInteract; +const cfMaxOneHandHeight = config.MaxOneHandAnimationHeight; +const cfMaxWithoutHandHeight = config.MaxWithoutHandHeight; +const cfBaseJumpPenalty = config.BaseJumpPenalty; +const cfVaultingInputTime = config.VaultingInputTime; +const cfSpeedRangeX = config.AnimationForwardSpeed; +const cfSpeedRangeY = config.AnimationVerticalSpeed; + +const cfGridOffsetX = config.GridOffsetX; +const cfGridOffsetY = config.GridOffsetY; +const cfGridOffsetZ = config.GridOffsetZ; +const cfGridSizeX = config.GridSizeX; +const cfGridSizeY = config.GridSizeY; +const cfGridSizeZ = config.GridSizeZ; +const cfOffsetFactor = config.OffsetFactor; +const cfSteppingLengthX = config.SteppingLengthX; +const cfSteppingLengthY = config.SteppingLengthY; +const cfSteppingLengthZ = config.SteppingLengthZ; + +class Mod implements IPostDBLoadMod { + public postDBLoad(container: DependencyContainer): void { + // get database from server + const databaseServer = container.resolve("DatabaseServer"); + + // Get all the in-memory json found in /assets/database + const tables: IDatabaseTables = databaseServer.getTables(); + + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MoveRestrictions.MaxLength = cfMaxLength; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MoveRestrictions.MaxHeight = cfMaxHeight; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MoveRestrictions.MinDistantToInteract = cfMinDistantToInteract; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.AutoMoveRestrictions.MaxLength = cfMaxLength; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.AutoMoveRestrictions.MaxHeight = cfMaxHeight; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.AutoMoveRestrictions.MinDistantToInteract = cfMinDistantToInteract; + + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.SpeedRange.x = cfSpeedRangeX; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.SpeedRange.y = cfSpeedRangeY; + + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MaxOneHandHeight = cfMaxOneHandHeight; + tables.globals.config.VaultingSettings.MovesSettings.ClimbSettings.MaxWithoutHandHeight = cfMaxWithoutHandHeight; + + tables.globals.config.Inertia.BaseJumpPenalty = cfBaseJumpPenalty; + + tables.globals.config.VaultingSettings.GridSettings.SteppingLengthY = cfSteppingLengthY; + tables.globals.config.VaultingSettings.GridSettings.SteppingLengthX = cfSteppingLengthX; + tables.globals.config.VaultingSettings.GridSettings.SteppingLengthZ = cfSteppingLengthZ; + tables.globals.config.VaultingSettings.GridSettings.GridOffsetY = cfGridOffsetY; + tables.globals.config.VaultingSettings.GridSettings.GridOffsetX = cfGridOffsetX; + tables.globals.config.VaultingSettings.GridSettings.GridOffsetZ = cfGridOffsetZ; + tables.globals.config.VaultingSettings.GridSettings.GridSizeY = cfGridSizeY; + tables.globals.config.VaultingSettings.GridSettings.GridSizeX = cfGridSizeX; + tables.globals.config.VaultingSettings.GridSettings.GridSizeZ = cfGridSizeZ; + tables.globals.config.VaultingSettings.GridSettings.OffsetFactor = cfOffsetFactor; + + tables.globals.config.VaultingSettings.VaultingInputTime = cfVaultingInputTime; + } +} + +export const mod = new Mod(); \ No newline at end of file