# PAC-MAN WORLD Re-PAC :: Ungodly Bugfix Suite **Author:** StixsworldHD (StixsmasterHD4k) **Version:** 1.0.0 **Target game:** PAC-MAN WORLD Re-PAC (launches via `PAC-MAN WORLD Re-PAC.exe`) **Mod loader:** BepInEx 6 (BleedingEdge), IL2CPP, x64 **Plugin GUID:** `com.stixsworldhd.pacmanworldrepac.ungodlybugfix` --- ## 1. What this is An ungodly madly vastly enhanced, advanced, and improved **bugfixing** plugin for PAC-MAN WORLD Re-PAC, built on a single, growing fix framework. This first release is laser-focused on the most-requested problem in the remake: > ### Fixing *all things rev-rolling up ramps.* The Rev-Roll (charge-and-release dash/roll) misbehaves the moment it meets an incline. Out of the box this plugin makes rolling **up ramps and slopes** behave the way the classic game taught you to expect, and then layers on an *enormous* configuration surface so you can tune literally every movement/slope/dash/roll/ bounce/gravity/ground parameter the controller exposes. Everything is controlled from **one config file** - there is no in-game GUI, no overlay, and no console commands, by design. Every option is documented in the `.cfg` with its allowed `min .. max` range and a plain-language explanation of what it does. --- ## 2. The rev-roll-up-ramp fix, in plain terms The vanilla bug isn't one thing - it's four overlapping failures. This plugin attacks all of them, each independently toggleable: 1. **Momentum bleed (you slow to a crawl going up).** The plugin scales your along-the-surface Rev-Roll speed up while you climb, by an amount that grows with how steep the ramp is (with a hard ceiling so steep faces never fling you). *Section 02.* 2. **Wall misdetection (the roll stops dead on the ramp).** The dash's wall check sometimes mistakes the ramp surface for a head-on wall and brakes against it. When you're genuinely climbing a ramp inside the allowed angle window, that false "wall" is cleared and your forward push is restored. *Section 04.* 3. **Bounce-back (you ping backwards down the slope).** The "Bound" reaction can fire on ramps as if you'd hit a wall. The plugin takes that bounce energy and **re-aims it up the ramp** instead of backwards. *Section 05.* 4. **Crest launch (you rocket off the top).** As you crest a ramp the retained speed can pop you airborne. A configurable "slope stick" gently keeps you hugging the surface over the top. *Section 06.* Two further **opt-in** helpers are included for stubborn, awkward geometry: - **Expanded roll-slope window** (*Section 07*) - lets the Rev-Roll engage on a wider band of slope angles than vanilla allows. - **Dynamic dash angle thresholds** (*Section 08*) - while you're on a ramp, the dash's internal bounce/continue/brake angle thresholds are temporarily relaxed, then restored the instant you're off it. With the default config, fixes 1-4 are **on** and the two opt-in helpers are **off**. Everything else (the raw parameter overrides) is **off**, so installing the plugin fixes ramps without otherwise changing how the game plays until you decide to tune something. --- ## 3. Installation 1. Install **BepInEx 6 (BleedingEdge, IL2CPP x64)** into your PAC-MAN WORLD Re-PAC folder (the folder containing `PAC-MAN WORLD Re-PAC.exe`) and run the game once so BepInEx generates its folders. 2. Copy the contents of this package's `BepInEx/` folder into the game's `BepInEx/` folder, so that you end up with: - `BepInEx/plugins/StixsworldHD.PacManWorldRePac.UngodlyBugfix.dll` - `BepInEx/config/com.stixsworldhd.pacmanworldrepac.ungodlybugfix.cfg` *(optional - the plugin will create this automatically on first launch if you don't copy it)* 3. Launch the game. You should see the plugin's banner in the BepInEx console/log. > **Tip:** the included `.cfg` is provided pre-generated so you can read and edit > every option *before* your first launch. It is byte-for-byte what the plugin > writes itself. --- ## 4. Reading the captured baseline (important for tuning) The numeric default in each `*_Value` override line is a sensible starting point, **not** necessarily the game's own value - the real values live in the game data, not the code. So on the first frame Pac-Man's controller loads, the plugin prints **the game's own original value for every field it can touch** to the BepInEx log (see `LogCapturedBaseline` in *Section 00*, on by default). Workflow: 1. Launch once, look in the BepInEx log for the `CAPTURED GAME BASELINE` block. 2. Note the real value of whatever you want to change. 3. Set that field's `Override_*` to `true` and put your desired number in the matching `*_Value` line. 4. Save the `.cfg`. Changes are re-applied automatically within about a second (see `WatchdogIntervalSeconds`), and on every level load. --- ## 5. How overrides and multipliers combine For every raw tuning field the rule is simply: ``` final value = (Override ? your_value : game_original) * category_multiplier ``` - While an `Override_*` toggle is **off**, the plugin keeps the game's own value (optionally scaled by a global multiplier from *Section 17*). - The global multipliers (`DashSpeedMultiplier`, `RollSpeedMultiplier`, `RunWalkSpeedMultiplier`, `GravityScale`) all default to `1.0` (no change) and apply on top of either the override or the original. So a fully default config writes the originals straight back - perfectly vanilla - and you opt in field by field. --- ## 6. Configuration sections at a glance | Section | What it controls | |--------:|------------------| | 00 | Master enable, logging, baseline dump, re-apply timing | | 01 | Rev-roll-up-ramp fix master switch + the "what counts as a ramp" window | | 02 | Up-ramp momentum (speed retention, per-degree boost, caps, horizontal compensation) | | 03 | Up-ramp minimum surface-speed floor (relative to your learned flat-ground speed) | | 04 | Anti wall-misdetection on ramps (clear false wall hits) | | 05 | Anti-bounce on ramps (redirect bounce energy up the slope) | | 06 | Slope stick / anti-launch over crests | | 07 | *(opt-in)* Expanded roll-slope angle window | | 08 | *(opt-in)* Dynamic dash angle thresholds while on a ramp | | 09 | Slope angle overrides (`scFootSlopeDeg`, `scSlopeDeg`, `scRollDeg`, `scRollDegPower`, `scCeilDeg`) | | 10 | Dash/Rev-Roll speed overrides (normal + Metal, fast + min) | | 11 | Dash timing & charge overrides (charge/hold/continue/brake angles & times) | | 12 | Roll overrides (speeds normal + Metal, rolling angle, margin/brake times) | | 13 | Bound (bounce) overrides (force, time, angle threshold) | | 14 | Gravity overrides (normal / Metal / water vertical gravity) | | 15 | Ground-detection overrides (ground ray distance/radius, slope-down & air-roll frame counts, ground-Y tolerance) | | 16 | Run & walk speed overrides (normal + Metal) | | 17 | Global multipliers (dash, roll, run/walk, gravity) | Every individual option carries its own full description and `min .. max` range inside the `.cfg` itself - open it in any text editor. --- ## 7. A few tuning recipes - **"Just make ramps feel right."** Do nothing - the defaults already fix it. - **"Rev-Roll should never lose any speed uphill."** *Section 03*: set `MinUphillSpeedFraction = 1.0`. - **"Make ramps feel as fast as flat ground."** *Section 02*: set `CompensateHorizontalProgress = true`. - **"Conquer steeper ramps than vanilla allows."** Raise `RampMaxAngle` (*Section 01*) and `AntiWallMaxAngle`/`AntiBounceMaxAngle`, and consider the *Section 07* expanded roll window. - **"Faster dashes everywhere."** *Section 17*: set `DashSpeedMultiplier = 1.5`. - **"Heavier, snappier landings."** *Section 17*: set `GravityScale = 1.3`. --- ## 8. Compatibility & safety notes - This plugin is built against the IL2CPP interop proxy assemblies that match PAC-MAN WORLD Re-PAC, so its field/method bindings line up with the game. It works on BepInEx 6 BleedingEdge IL2CPP builds (the same Il2CppInterop era the game's interop assemblies were generated with). - The plugin **never** writes anything until it has captured the original baseline, so it can always reason relative to the game's true values. - All patches are guarded and fail-safe: an unexpected error in any single patch is logged and swallowed rather than crashing the controller. - Setting `MasterEnable = false` makes the plugin completely dormant - identical to not having it installed. - No GUI, no overlay, no console hooks, no network access - it only reads/writes the player controller's own tuning fields and post-processes its movement. --- ## 9. Credits Made by **StixsworldHD (StixsmasterHD4k)**. Built on BepInEx 6 (IL2CPP) and HarmonyX. PAC-MAN WORLD Re-PAC is the property of its respective owners; this is an unofficial, fan-made modification.