Modding:Harmony: Difference between revisions

339 bytes added ,  23:37, 28 July 2022
add note to encourage people to ask me for hooks rather than using harmony
m (Softened the language a bit. These are good points, but I think it's going too far to say that Harmony is buggy. A well-implemented Harmony patch will be efficient, resilient against game updates, and compatible with other mods.)
(add note to encourage people to ask me for hooks rather than using harmony)
Line 8: Line 8:
While Harmony Patches are powerful and are often the easiest and most direct way to modify behaviour, they are more prone to incompatibility with other mods and future updates, and they can be more difficult to debug or troubleshoot if something goes wrong. A Harmony patch should be considered a last resort only if the desired functionality cannot otherwise be achieved by using the existing part and event infrastructure available in the game, or another similar solution.
While Harmony Patches are powerful and are often the easiest and most direct way to modify behaviour, they are more prone to incompatibility with other mods and future updates, and they can be more difficult to debug or troubleshoot if something goes wrong. A Harmony patch should be considered a last resort only if the desired functionality cannot otherwise be achieved by using the existing part and event infrastructure available in the game, or another similar solution.


That said, there do remain some situations in which Harmony patches are required in order to affect certain functionality. In these cases, Postfix patches tend to be the most compatibility friendly, followed by non-blocking Prefix patches. Prefix patches that prevent the main function from running or Transpiler Patches that modify the IL Code of a function are often more likely to conflict with other mods and should be avoided unless they are the only option.  
That said, there do remain some situations in which Harmony patches are required in order to affect certain functionality. In these cases, Postfix patches tend to be the most compatibility friendly, followed by non-blocking Prefix patches. Prefix patches that prevent the main function from running or Transpiler Patches that modify the IL Code of a function are often more likely to conflict with other mods and should be avoided unless they are the only option.
 
In general, the Caves of Qud development team prefers data driven behavior, and would be likely to entertain adding a better hook for your mod to use than a Harmony patch.  Specifically, reach out to <code>@gnarf#1742</code> or <code>armithaig#5139</code> in <code>#modding> on the [https://discord.gg/cavesofqud Official Discord Server].


== Example: Chaotic-Colored Message Text ==
== Example: Chaotic-Colored Message Text ==