mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-18 12:05:21 +02:00
Where two mods change one of the game's assets in ways that cannot both be in the game (a resource or chunk changed differently, an EBX whose changes cannot be combined, different assets added under one name), the one lower in the load order is left out whole, so neither loads half its changes. The merge used to keep the higher copy of each asset and lose the rest of the lower mod's change silently, which broke Skaterize beside deckorate. A check before the merge (find_conflicts) reads only the bundles two or more mods ship and applies the merge's rule: about 2 s for 296 mods, on several threads, each mod's copy of a bundle by itself. When it finds conflicts nothing is built, the catalog leaves the losing mods out and merges once. The merge keeps its own check behind it, tracking per asset the last change a mod made itself, so a change carried through other mods' copies is still caught. A conflict is remembered in .reskate-excluded.json with the mod it lost to, and stays out while both are unchanged and the winner still loads above it. The launcher says "Checking the mods" and "Checking the mods for conflicts" during those steps. Its mod problems screen says MOD CONFLICT when that is all there is, and the Mod Manager shows a CONFLICT badge, an N CONFLICTS banner, a Conflicts filter and, on the mod, which mod it lost to and how to load it instead.