Step two of two
Installing the three Ungodly plugins
Each archive contains two files: the plugin itself and its README. Only the .dll needs to go into the game. This page covers all three, plus what each one writes on its first run and how to tell it actually loaded.
BepInEx must already be installed and must have run at least once. Do that first if BepInEx\plugins does not exist yet.
#What is inside each archive
All three are the same shape. There is no installer, no folder structure to preserve, and nothing that overwrites a game file.
- UngodlyLiquidationAI_v1_0_7.rar
- UngodlyLiquidationAI.dll216 KB — this is the plugin
- README.mdreference only, does not need to go anywhere
- UngodlyLiquidationGoreGFX_v1_2_0.rar
- UngodlyLiquidationGoreGFX.dll284 KB — this is the plugin
- README.mdreference only, does not need to go anywhere
- UngodlyLiquidationLeveling_v1_0_0.rar
- UngodlyLiquidationLeveling.dll214 KB — this is the plugin
- README.mdreference only, does not need to go anywhere
#Installing them
-
Extract each archive somewhere temporary
Your Downloads folder is fine. You only need the
.dllout of each one. Keep the READMEs if you like — they go into far more detail on individual settings than this page does. -
Copy the DLLs into BepInEx\plugins
Open your Liquidation folder, then
BepInEx, thenplugins. Drop all three DLLs straight in.You can install any one of them on its own. They do not depend on each other.
-
Launch the game
Start it from Steam as normal and wait for the main menu. Each plugin writes its own config file during this launch.
-
Check that all three loaded
Quit, then open
BepInEx\config. You should now have four files:BepInEx.cfgplus onecom.stixsworldhd.*.cfgfor each plugin you installed. A missing config file means that plugin did not load. -
Open each settings window
Back in the game, press F6, F7 and F8 in turn. Every setting shows its own minimum and maximum and explains in plain English what changing it does. If a key does nothing, try its alternate — Insert for the first two, Home for Leveling.
#Where the files end up
This is what a complete install looks like. The three DLLs sit flat in
plugins, which is how the screenshots in this manual were taken and is
the layout it documents throughout.
- Liquidation.exe
- winhttp.dllBepInEx loader
- BepInEx
- coreBepInEx itself, untouched
- plugins
- UngodlyLiquidationAI.dll216 KB
- UngodlyLiquidationGoreGFX.dll284 KB
- UngodlyLiquidationLeveling.dll214 KB
- config
- BepInEx.cfgwritten by BepInEx
- com.stixsworldhd.ungodlyliquidationai.cfgwritten by the plugin
- com.stixsworldhd.ungodlyliquidationgoregfx.cfgwritten by the plugin
- com.stixsworldhd.ungodlyliquidationleveling.cfgwritten by the plugin
- cache
- patchersstays empty — none of these use patchers
- LogOutput.logthe log to send if you report a problem
BepInEx\plugins. Explorer rounds the sizes to 216 KB, 284 KB and 214 KB, which matches the exact byte counts on the downloads page.
#Setting each one up
| Plugin | Opens with | Also opens with | Config file |
|---|---|---|---|
| Ungodly Liquidation AI v1.0.7 | F6 | Insert | com.stixsworldhd.ungodlyliquidationai.cfg |
| Ungodly Liquidation Gore & Graphics v1.2.0 | F7 | Insert | com.stixsworldhd.ungodlyliquidationgoregfx.cfg |
| Ungodly Liquidation Leveling v1.0.0 | F8 | Home | com.stixsworldhd.ungodlyliquidationleveling.cfg |
The windows all behave the same way. Opening one releases your mouse cursor and stops the game receiving clicks, hotkeys and screen-edge camera scrolling. Closing it hands all of that back and restores the cursor to exactly the state the game had it in, so unit selection and edge scrolling resume immediately. Esc also closes.
Ungodly Liquidation AI
The defaults are playable as they are. If you want to push it in a direction, these are the levers that matter most:
| You want | Change |
|---|---|
| Aggressive, bloody fights | Aggression 80, SelfPreservation 30, RetreatHealthPercent 10 |
| Armies that survive and trade well | SelfPreservation 75, RetreatHealthPercent 45, ReturnHealthPercent 85 |
| A heavy micro feel | Kiting 85, Flanking 75, ReplanIntervalTicks 4 |
| Disciplined block advances | SquadCohesion 85, Flanking 20, PositionCommitTicks 60 |
| Units to commit harder to a route | RepathIntervalTicks 30 or higher |
| Units to react faster to new threats | RepathIntervalTicks 6, DangerAvoidance 90 |
Every one of those is simulation-critical, so everyone in a multiplayer match needs the same values. The Diagnostics tab is worth a look on your first match — Cached routes and Cache hit rate climbing means the route cache is doing its job, and Searches run climbing steadily while units walk in a straight line means routes are being recalculated when they should not be.
Ungodly Liquidation Gore & Graphics
Nine tabs: General, Gore, Blood, Gibs & Spray, Graphics, Post FX, Visibility, Coroutines, Diagnostics. Two things are worth knowing before you start turning things up.
Render scale is the single biggest performance dial in the whole plugin, in both directions. Lower it if you need frames; raise it if you have headroom and want a sharper image. Nothing else in the Graphics tab comes close to it for impact.
Unlimited draw distance costs GPU time, most of all when you are zoomed right out, because
the game has to draw more of the world at once. If you turn it on and your frame rate drops when
zoomed out, use the plain DrawDistance slider with a smaller number instead. And if
turning it on appears to do nothing, the extra terrain is being hidden behind atmospheric haze —
switch on DisableDistanceFog in the same tab.
For more carnage: raise MaxCorpses and MaxSplats, raise
DeathPoolSize and Spread, raise GibForceMin and
GibForceMax. For fewer frames lost to it: set CorpseShadowDistance to 0
first, then lower ShadowDistance, then lower MaxCorpses.
Ungodly Liquidation Leveling
56 settings across 11 sections, 32 of them with an explicit minimum and maximum. The one that changes the feel of a campaign most is the curve, in section 02. These are the measured costs at the default cap of 10, base 200, multiplier 1100:
| Curve | L1→2 | L5→6 | L9→10 | Total to cap | |
|---|---|---|---|---|---|
| Stock | 200 | 1,200 | 2,000 | 9,000 | Reproduces the unmodded curve exactly. |
| Linear | 200 | 1,300 | 2,180 | 9,720 | Even, predictable climb. |
| Quadratic | 200 | 750 | 1,982 | 6,288 | The default. Fast early, steeper late. |
| Cubic | 200 | 1,116 | 5,546 | 11,301 | Punishing at the top end. |
| Exponential | 200 | 321 | 468 | 2,708 | Levels come very quickly. |
| Geometric | 200 | 931 | 1,825 | 7,285 | Close to stock, slightly cheaper. |
| Root | 209 | 513 | 663 | 4,045 | Front-loaded cost, cheap later. |
| Logarithmic | 222 | 260 | 274 | 2,268 | Nearly flat. Almost everything levels. |
| Fibonacci | 200 | 1,300 | 7,680 | 13,680 | The longest grind of the ten. |
| SineWave | 200 | 640 | 1,543 | 5,687 | Rises in waves rather than smoothly. |
| Custom | 200 | 1,575 | 3,575 | 12,300 | Your own polynomial, set in section 02. |
Section 07 holds three switches, one per bug in the game's own levelling code that the plugin repairs. They are on by default. Turn them off if you want exactly vanilla behaviour.
| # | Bug, and where it lives in the game | What you notice |
|---|---|---|
| 1 | The experience cap is one level too low
Experienced.AddExperiencePoints |
Level 10 cannot be reached, and progress toward it is discarded rather than capped. |
| 2 | Landing exactly on a threshold does not promote you
CheckOnLevelUp |
The promotion test is strictly greater than, so hitting the requirement precisely falls one point short. |
| 3 | PromotionService leaks observers into an empty handler
PromotionService |
Subscriptions accumulate and are never removed, and the handler they feed does nothing. |
Each one is set out in full on its own page — the line of code that causes it, what it does to a match, and what the plugin does instead.
#Running all three at once
They were built as a set, and everything that could have collided was separated deliberately rather than left to chance.
| AI | Gore & Graphics | Leveling | |
|---|---|---|---|
| Menu key | F6 / Insert | F7 / Insert | F8 / Home |
| Simulation service weight | 200 | — | 210 |
| Window id | 0x4C495141 | — | 0x4C494C56 |
The coroutine hook is negotiated at startup
Both Gore & Graphics and Leveling can move the game's coroutines onto More Effective Coroutines. If both did it at once, every adopted coroutine would run twice — timers at double rate, pooled objects released twice, visual effects behaving strangely.
So they arbitrate. On startup, Leveling checks Harmony for an existing patch owner on
MonoBehaviour.StartCoroutine and asks BepInEx's chainloader whether the Gore
& Graphics plugin id is loaded. If either says yes, it stands down and leaves the scheduler
alone. Running on its own, it installs the hook itself. Its Coroutines tab always shows which
plugin currently owns the scheduler.
MEC Pro is compiled into each plugin as source, so MEC.Timing inside Gore &
Graphics and MEC.Timing inside Leveling are different types with independent instances
and host objects. They cannot disturb each other even in principle.
#Updating and removing
Updating to a newer version
Delete the old DLL and the old .cfg before copying the new DLL in. Leaving a
stale config behind is the cause of most "I updated and it behaves oddly" reports: settings that no
longer exist stay in the file, and new settings never get their defaults written.
BepInEx\plugins\UngodlyLiquidationAI.dll <- delete, then copy the new one in
BepInEx\config\com.stixsworldhd.ungodlyliquidationai.cfg <- delete, it will be rewritten
Removing one plugin
Delete its DLL from BepInEx\plugins. That is all. You can leave the
config file behind if you might reinstall later — it will be picked up again — or delete it for a
clean slate.
Removing everything
Delete the BepInEx folder plus the four loose files
(winhttp.dll, doorstop_config.ini,
.doorstop_version, changelog.txt). The game is
then byte-for-byte what Steam installed. There is nothing to verify or repair, because none of the
game's own files were ever modified.
Turning a plugin off without deleting it
Every one of them has a MasterEnabled switch in section 01 of its config, and in the
General tab of its window. Set it to false and the game renders and behaves exactly as
it does with that plugin uninstalled. It is the fastest way to work out whether a plugin is
responsible for something you are seeing.