CluelessFrog-AchievementPatch icon

AchievementPatch

Silently fixes the broken and finicky achievements in Sledding Game. Patches Sled Master, Barista, Training Arc, Fisherman, Drinking Game, Drive By, Just a Bump, Fireball, Do You Want To, and Professional Drinker.

Last updated a day ago
Total downloads 13
Total rating 0 
Categories Mods
Dependency string CluelessFrog-AchievementPatch-1.0.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

LavaGang-MelonLoader-0.7.2 icon
LavaGang-MelonLoader

The World's First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono

Preferred version: 0.7.2

README

AchievementPatch

A MelonLoader mod for Sledding Game that fixes the achievements which are bugged, fragile, or unintuitive in vanilla.

Install

  1. Install MelonLoader (0.7.2+ Open-Beta) into your Sledding Game folder.
  2. Launch the game once with MelonLoader so it generates the IL2CPP wrappers.
  3. Drop AchievementPatch.dll into <Sledding Game>\Mods\.
  4. Launch the game. You'll see AchievementPatch v1.0.0 loading... in the MelonLoader console.

The mod runs a sweep every 5 seconds that reads your persistent save state — so if you crossed any of the milestones before installing the mod, the corresponding achievements will fire within ~5 seconds of loading into a save.

Patches

Sled Master — Sled 1,000,000 metres (most-asked-about fix)

Vanilla problem: The achievement checks against a session/runtime counter that doesn't reliably catch save-loaded values, so players who legitimately cross 1M can find the achievement never fires.

Patch: Every 5-second sweep reads PlayerSavedStats.GetStatAsFloat(StatType.DistanceSled) and fires ACH_SLED_MASTER (id 17) once it's ≥ 1,000,000. Cross-session, no fragility — if your save shows the distance, you get the achievement.

Barista — Make 1,000 cups of hot cocoa

Vanilla problem: "Make" is misleading. The HotCocoaDispenser's pour-completion path (HotCocoaDispenser.CompleteDrinkPour) feeds into the VendingMachinesUsed stat (id 32), but the vanilla unlock check doesn't always pick it up reliably.

Patch: Sweep reads PlayerSavedStats.GetStatAsFloat(StatType.VendingMachinesUsed) and fires ACH_BARISTA (id 16) once it's ≥ 1,000. Counts every cup you've ever poured at a dispenser, across sessions.

Training Arc — Hit all the targets on the map

Vanilla problem: The description says "hit all the targets on the map" but the actual code is per-statue: each StatueSetup has its own target list with a hidden time limit (timeToHitAllTargets), then a second interact-window timer (timeToInteractAfterAllTargetsHit), and some statue puzzles in the map don't have physical targets placed at all — they're effectively uncompletable. Even completing one cleanly often doesn't trigger the achievement.

Patch: We hook StatueSetup.InteractableEvent_UnlockItem — the per-statue unlock event that fires when you genuinely complete and interact with a statue. Once you've cleared 5 distinct statue puzzles the mod fires ACH_TRAINING_ARC (id 12). This is the mod's chosen compromise: cleaner than the vanilla "do every uncompletable puzzle" requirement, still meaningful effort (you're solving 5 timed snowball puzzles), and entirely legitimate — every count comes from the dev's own completion event.

Drinking Game — Drink 1,000 cups of hot cocoa

Vanilla problem: Same loose stat-check fragility as Sled Master / Barista.

Patch: Sweep reads PlayerSavedStats.GetStatAsFloat(StatType.LiquidConsumed) (matches the in-game constant COCOA_DRINKS_CONSUMED_ACHIEVEMENT_THRESHOLD = 1000) and fires ACH_DRINKING_GAME (id 19) once you've drunk ≥ 1,000 cocoa cups. Drinking in this case = the Drink.Server_Drink consumption path

Fisherman — Catch all 20 unique fish

Vanilla problem: The vanilla achievement check uses the per-session _fishCaughtThisSession list rather than the persistent _fishTypesCaughtSet HashSet, so players who catch their 20 fish across multiple sessions (very common over hours of play) never get the achievement to fire.

Patch: Every sweep we read PlayerSavedStats._fishTypesCaughtSet.Count — the game's own permanent record of every fish type ever caught on this save — and fire ACH_FISHERMAN (id 27) once it hits 20. Loading any save where you've ever caught all 20 will trigger the unlock within 5 seconds.

The mod also prints a missing-fish console line every 60 seconds (e.g. "(8/20, 12 total catches) Still need: Catfish, Salmon, ...") so you can see what you still need to catch.

Drive By — Hit a player with a snowball while sledding

Vanilla problem: State check for "is the local player currently sledding" sometimes misfires when the snowball-hit event arrives.

Patch: We hook Snowball.LocalPlayerHitOtherPlayer, read PlayerControl.LocalPlayerInstance.GetPlayerState() immediately, and if the state name is Sled we fire ACH_DRIVE_BY (id 5). Uses the real static property LocalPlayerInstance (not the legacy LocalPlayer) so it actually resolves at runtime.