Mosswart Massacre for OpenAC (owner-only)
Find a file
Erik 162d242c06 Meta sync: pull the club's metas and navs into the shared profiles
The original kept VTank's profile folder in step with the club's metas
repository; the port does the same against host.VtankProfiles, dropping
.met files under mosstank/metas and .nav files under mosstank/navs where
MossTank reads dropped profiles, flattened to their bare names as the
original flattened them. The Gitea tree and raw endpoints are the
original's; the repository address is the metas_repository_url setting,
defaulting to the original repository. An overwritten file keeps its old
copy as .bak (MossTank's pickers skip .bak side files).

Storage is text-only, so the SHA-256 compare hashes the text a stored read
gives back (UTF-8, BOM dropped); for the plain-text files in the repo that
equals the original's byte compare. Network work runs on the thread pool,
one operation after another; chat lines and window updates are applied on
the tick. The four /mm verbs keep their chat lines, and the Metas tab is
its own markup window with IsVisible for the main window to open.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 12:26:14 +02:00
src/OpenAC.MosswartMassacre Meta sync: pull the club's metas and navs into the shared profiles 2026-09-25 12:26:14 +02:00
tests/OpenAC.MosswartMassacre.Tests Meta sync: pull the club's metas and navs into the shared profiles 2026-09-25 12:26:14 +02:00
.gitignore Skeleton: plugin root, backend socket, /mm router, settings, test harness 2026-09-25 12:03:00 +02:00
Directory.Build.props Skeleton: plugin root, backend socket, /mm router, settings, test harness 2026-09-25 12:03:00 +02:00
Directory.Packages.props Skeleton: plugin root, backend socket, /mm router, settings, test harness 2026-09-25 12:03:00 +02:00
global.json Skeleton: plugin root, backend socket, /mm router, settings, test harness 2026-09-25 12:03:00 +02:00
NuGet.Config Skeleton: plugin root, backend socket, /mm router, settings, test harness 2026-09-25 12:03:00 +02:00
OpenAC.MosswartMassacre.slnx Skeleton: plugin root, backend socket, /mm router, settings, test harness 2026-09-25 12:03:00 +02:00
README.md Skeleton: plugin root, backend socket, /mm router, settings, test harness 2026-09-25 12:03:00 +02:00

Mosswart Massacre for OpenAC

A private OpenAC port of the Mosswart Massacre DECAL plugin: it streams telemetry, vitals, chat, inventory, combat and character stats to the Mosswart Overlord backend, shares vitals and debuffs across machines, runs the commands typed into the Overlord chat box, keeps the flag tracker and syncs metas.

The backend contract is fixed. Every frame this plugin sends or accepts is byte-for-byte what the DECAL plugin sent and accepted; the golden tests under tests/ pin each one. Change a frame only together with the backend.

Building

The plugin contract comes from the OpenAC release of the version named in Directory.Build.props (PluginApiPackageVersion). Put that release's AcDream.Plugin.Abstractions.<version>.nupkg in packages-local/:

gh release download v0.1.18 -R eriknihlen/OpenAC -p "AcDream.Plugin.Abstractions.0.1.18.nupkg" -D packages-local
dotnet build OpenAC.MosswartMassacre.slnx
dotnet test OpenAC.MosswartMassacre.slnx

Installing

Copy src/OpenAC.MosswartMassacre/bin/<config>/net10.0/ (the dll, its .deps.json, Newtonsoft.Json.dll, plugin.json and the markup) into %LOCALAPPDATA%\acdream\plugins\openac.mosswartmassacre\.

First run

Streaming is off until you turn it on. The shared secret is never compiled in:

/mm ws secret <the backend's shared secret>
/mm ws enable

/mm help lists every command.