StixsworldHD Songs of Conquest mods

SoC Ultra Difficulty Director v3.0.0

An ungodly madly vastly enhanced, fair, real-time difficulty director. Instead of one static lobby slider chosen before you know how the map plays out, the director watches your match every round — the game's own five score pillars, live army value, liquid treasury — and leans on twelve independent levers to hold the match at exactly the tension level you configure. 99 settings, four one-click presets, and a telemetry tab that shows you its mind.

BepInEx 5 · x64 Hotkey F9 100% MP sync-safe · host-authoritative Guests don't need the mod Base game + all DLC + campaigns
Prerequisite

BepInEx 5 (x64) installed and initialized — Part I. The Graphics Suite is not required; the two mods are designed side-by-side (different GUIDs, different hotkeys, zero shared patch targets) and run perfectly together or alone.

Download StixsworldHD_SoCDifficultyDirector_v3_0_0.rar and open it with 7-Zip / WinRAR / NanaZip. Inside:

FileSizeWhat it is
StixsworldHD.SoCDifficultyDirector.dll138 KB The entire mod — one BepInEx 5 plugin.
README.md17 KB Deep documentation: every lever, the multiplayer architecture, the full configuration tour, changelog. Worth the read.
  1. Copy the DLL into plugins

    With the game closed, drag StixsworldHD.SoCDifficultyDirector.dll from the archive into BepInEx\plugins:

    SongsOfConquest\BepInEx\plugins\
    ├── StixsworldHD.SoCUltraGraphics.dll        ← from Part II (if installed)
    └── StixsworldHD.SoCDifficultyDirector.dll   ← new
    BepInEx plugins folder containing both StixsworldHD DLLs
    Checkpoint — the complete plugins folder with both mods installed: the Difficulty Director (138 KB) beside the Graphics Suite (88 KB).
    Upgrading from v1.x / v2.x?

    Just replace the DLL. Your existing config is kept and the plugin appends the new v3 settings with their defaults on first launch. Every setting hot-applies — the only exceptions are the two match-creation bakes noted below.

  2. Launch the game config + state folder generate themselves

    Start Songs of Conquest. The director registers, logs itself in BepInEx\LogOutput.log, and writes its fully documented config to:

    BepInEx\config\stixsworldhd.songsofconquest.difficultydirector.cfg

    A small sidecar folder, BepInEx\config\StixsworldHD.DirectorState\, appears once you play: it holds the director's cross-save memory (a few hundred bytes per match, keyed to the match seed, newest 24 kept, auto-cleaned when a match ends). Your actual save files are never touched.

    BepInEx config folder with BepInEx.cfg and both StixsworldHD mod configs
    Checkpoint — config folder. stixsworldhd.songsofconquest.difficultydirector.cfg — 37 KB of settings, every one documented with its min/max and how it feels in play.
  3. Press F9 meet the director

    Works in any scene — menus, adventure map, battles. You get a solid-background menu with 10 setting tabs, a search box (type “tax”, “revive”, “coalition” — matching settings from every tab render inline, fully editable), the preset row, and the Telemetry tab.

    The SoC Ultra Difficulty Director F9 menu, General tab, with the preset row and dormant status badge
    The F9 menu. Note the top-right badge: “dormant — waiting for a match” is the correct state on the main menu. The director only attaches when an actual match is being simulated on your machine.
    Sensible from second one

    The Balanced preset — “the intended always-a-good-fight experience” — is active out of the box. Start a match and play; the HUD chip and action toasts will narrate every intervention as it happens.

PresetFeel
StoryGentle, forgiving, strong comeback help. For campaigns and relaxed maps.
BalancedThe intended “always a good fight” experience. The default.
VeteranThe AI gets real muscle and mercy is thin.
NightmareThe director actively conspires against you.
CustomHand-tune all 99 settings. Selecting any other preset instantly rewrites the whole configuration (your file is updated too); switch back to Custom to hand-tune.

Full mechanics live in the shipped README.md and inside the config file itself — every lever acts through the game's own synced commands and server-side hooks, never through client-side hacks.

LeverWhat it does
AI Tier ShiftsPromotes/demotes each AI through the game's own difficulty tiers (Simple → Deadly) mid-match.
AI EconomyIncome-proportional stipends for struggling AIs, taxes for runaway AIs.
AI Last StandA collapsing AI gets one dramatic war chest and goes down swinging instead of becoming a free-XP farm.
Coalition Instinct new in v3Every AI's grudge toward the runaway leader rises — the table quietly turns on whoever is winning, human or AI. Raise-only and self-relaxing.
AI BrainBravery/caution, bonus movement & vision, troop discounts, XP/production/income tier rescales.
Auto-resolve tuningSeparate casualty scales for AI camp-clearing and your Quick Battles, plus a dynamic pressure-scaled AI layer.
Skill-Adaptive DifficultyGrades every manual battle you fight into a rolling skill rating and bends the difficulty target around your actual battle craft.
Player AssistResource care packages + wielder XP tutoring for trailing humans only.
Revive AssistanceGrants a share of a fallen wielder's actual revive price, read resource-by-resource from the game.
Mercy WindowsA wielder dies or a battle turns into a bloodbath? Guaranteed grace rounds of amplified aid.
Battle AftermathPyrrhic-win relief for humans; one-time rebuild grants for beaten AIs.
Neutral WorldGlobal camp growth rescale + targeted growth pulses, including NearLeader targeting that raises the threat exactly where the winner lives.

Everything is smoothed, deadbanded, rate-limited, budget-capped and cooldown-guarded, so the director feels like pacing, not puppetry. New in v3.0.0, the whole system breathes through a three-act dramatic arc — configurable act boundaries with per-act intensity (default 60% / 100% / 130%): openings breathe, mid-game plays at designed strength, finales escalate.

Songs of Conquest runs a server-authoritative command pipeline: one simulation is authoritative (locally in single-player, the host in multiplayer); clients send requests, the server validates and broadcasts results. The director speaks only that language:

“Dormant — waiting for a match” won't go away?
That badge is normal anywhere outside an actual running match. Also remember GraceRounds (default 3): the director deliberately takes zero actions before that round so early scouting plays exactly vanilla.
Two settings bake at match creation
AiProductionScalePercent and AiIncomeTierScalePercent apply when a match is created, exactly like lobby settings. Everything else hot-applies mid-match.
Want to watch before you trust it?
Turn on DryRun (General tab): the director logs every decision it would make without touching anything. The Telemetry tab shows per-AI pressure bars with 48-round sparklines (ember above the midline = boosted, steel below = reined in), the rolling action log, and the real cost of the last evaluation in milliseconds. A pause hotkey freezes the whole director mid-match.
Campaigns & scenarios
Fully supported — use GraceRounds, ExcludedTeamNames / PerTeamBias for scripted allies, the act intensities, or simply the Story preset for gentler narrative pacing.
Saves
Load and save freely. With PersistStateAcrossSaves ON (default), the director's full memory resumes exactly where it left off; with it OFF, pressure state rebuilds from live game state within one evaluation.
Performance
Zero per-frame work and zero polling — the director wakes on the round-change event, runs one pass, issues at most its action budget, and sleeps. The menu/HUD only cost anything while visible.
Uninstall
Delete StixsworldHD.SoCDifficultyDirector.dll from BepInEx\plugins (and, if you like, the BepInEx\config\StixsworldHD.DirectorState folder). Saves are untouched — everything the director did flowed through normal game commands.