Harmony v1.0
Source
Includes HarmonyLib v2.2 and expanded error reporting.
To install locally, download the "Harmony Mod" zip file below, and unzip it to %LOCALAPPDATA%\Colossal Order\Cities_Skylines\Addons\Mods
, such that the enclosed HarmonyMod.dll
has a path like %LOCALAPPDATA%\Colossal Order\Cities_Skylines\Addons\Mods\HarmonyMod-1.0\HarmonyMod.dll
This local installation will coexist with version 0.9 from the workshop. Using the built in Awareness interface, the two instances communicate and hand over patching responsibilities to the most updated instance which is enabled. The workshop version is required for some mods which misguidedly try to detect whether Harmony is present by checking if certain workshop items are subscribed. Most notably, @MacSergey's mods have this problem, as his faulty detection logic is built into all his mods.
Additional features
- Detects mods which use/abuse a vulnerability present in the game's Assembly Resolver (#18)
- Disables the adware on the main menu (workshop ad, DLC ad, "newsfeed", and the Paradox Login, which is used to associate the data uploaded by the game to Paradox with an individual user)
- Contains Harmony Library v2.2.0.0 plus bugfixes released at @paradeike/Harmony after that release
- Auto-update from this Release feed when new releases are posted. It checks for freshness once when the game application is started, and automatically downloads/updates with the available release.
I will push the source code to the repo after Colossal's API update is released, because I have found that their current draft API at (CitiesHarmony.API/2.1.0-rc)[https://www.nuget.org/packages/CitiesHarmony.API/2.1.0-rc] and CitiesHarmony.API/2.1.0-rc contain code to attack users of this Harmony, claiming it has become incompatible, and recommending they install Colossal's own Harmony as a solution.
Colossal's Harmony also plays some dirty tricks with versioning, where renames the 2.2.0.0
Library AssemblyVersion to be labelled as, and appear to be AssemblyVersion 2.0.4.0
, while overloading the FileVersionInfo field of the DLL file to contain the actual assembly version. This is one reason why it will have difficulty distinguishing the two distinct versions. Due to these dirty hacks, I am delay the source code push as to not make it easier for Colossal to attack this Harmony and the users.