Skip to content

Love Menu Building

NNKtv28 edited this page Sep 28, 2026 · 1 revision

Requirements

  • .NET SDK (any recent version; the projects target .NET Framework 4.7.2)
  • Lovecraft installed, with BepInEx 5 set up. The plugin compiles against the game's own assemblies in Curio_Data\Managed and against BepInEx's core DLLs.

Build

The launcher embeds the plugin, so build the plugin first:

cd love_menu_mod
dotnet build FlyMod.csproj -c Release -p:GameDir="C:\path\to\LoveCraft\Application"
dotnet build Launcher/Launcher.csproj -c Release

GameDir is the folder that contains Curio.exe. It defaults to D:\SteamLibrary\steamapps\common\LoveCraft\Application.

Output:

  • bin/Release/FlyMod.dll: the plugin
  • Launcher/bin/Release/net472/LoveMenuLauncher.exe: the launcher, with the plugin embedded

Rename the launcher to LoveMenu-<version>.exe for a release.

Project layout

love_menu_mod/
  Plugin.cs      entry point: activation check, controllers, Unity lifecycle
  Core/          logging, reflection helpers, player context, crash dumps
  Features/      one controller (and Harmony patch, where needed) per feature
  Inputs/        rebindable keys
  Settings/      persisted settings (BepInEx config)
  UI/            IMGUI menu, styles, theme, graphs
  Launcher/      the launcher console app

Adding a feature

  1. Add a controller in Features/ with a Tick() method.
  2. Create it in LoveMenuPlugin.CreateControllers() and tick it from TickAllFeatures().
  3. Add a card for it in UI/MenuUI.cs.
  4. If it has settings, persist them in Settings/PluginSettings.cs.

To find the class and field names to hook, use lcmem: type, fields and object show the same names that Harmony patches against.

Clone this wiki locally