Ore Liquefaction

by Terrah

Dissolve ore into Aqua Regia to ship it in bulk via fluid wagons/pipes/rockets, then reconstitute it back into ore later. Optionally crystallize the dissolved ore further into a dense, barrel-free solid for maximum rocket/space platform cargo density. Works in vanilla; automatically extends to Space Exploration's special ores if SE is present, and to Space Age's new ores (tungsten-ore, calcite, holmium-ore) if the official expansion is present.

Content
10 hours ago
2.0
3
Logistics Fluids Storage

Changelog

Version: 0.1.4
Date: 2026-09-07
  Changes:
    - "Efficient" reconstitution (Advanced Ore Liquefaction) no longer trades Aqua Regia attrition for time. It now runs at the normal reconstitution speed, returns all 100 Aqua Regia, and instead loses the same per-ore attrition percentage as material (iron: 2% of the 90-ore batch). Fractional losses are realised the way the crystal stage does it: the recipe yields the batch minus the rounded-up loss plus a chance of one extra ore, so the long-run average matches the percentage exactly. Denser transport now always costs either Aqua Regia or ore, never nothing.
    - Renamed the recipes from "(Efficient)" to "(Acid recovery)" and replaced the efficiency-module badge on their icons with a small Aqua Regia mark (internal recipe names unchanged). Removed the "Efficient reconstitution time scale" startup setting (no longer meaningful).
Version: 0.1.3
Date: 2026-09-04
  Changes:
    - Replaced the wagon-capacity-derived fluid-per-ore ratio with a fixed, direct "Fluid per ore" setting (default 20): 90 ore + 100 Aqua Regia now always produces exactly 1800 fluid, calibrated against vanilla's real 50,000-capacity fluid wagon (a flat +25% over a standard cargo wagon of raw ore) and a stack of 10 fluid barrels (a clean 25 ore). Renamed "Effective stack size" to "Attrition-free stack size" now that it's used only for the Aqua Regia attrition formula, unrelated to the fluid ratio.
    - Added a third "crystal" shipping stage: crystallize dissolved ore into a barrel-free solid item, and decrystallize it back into fluid at the destination. Its purpose is making the fluid stage usable for rocket/space platform cargo at all (Space Age rockets move items, not fluids, and barreling the fluid for that trip is inefficient). 1 crystal represents a flat 1.5 ore for every ore; with the default 50 stack size, a full 2000-item cargo wagon of crystals represents 3000 ore - a flat +50% over a standard cargo wagon of raw ore.
    - Crystallizing is Aqua-Regia-neutral (crystallize produces exactly the 100 Aqua Regia decrystallize will need again later, matching dissolve's own Aqua Regia cost - zero net loss there). Crystal-stage attrition is instead a single FLAT percentage (default 2%, same for every ore, unlike the fluid stage's per-ore attrition) realized via a probabilistic byproduct on decrystallize: it asks for a couple of spare crystals beyond the clean batch amount, with a random chance of getting one back, tuned so the long-run average loss converges exactly to the target percentage - valid at any percentage without needing exact integer ratios.
    - Every crystal-stage recipe amount is now a fixed global constant (not computed per-ore), and crystallize/decrystallize deliberately reuse dissolve/reconstitute's own already-clean fluid/Aqua Regia amounts verbatim rather than an independently-rounded fraction of them - guaranteeing zero decimals in every recipe, in any environment. This pins the crystal batch size to ORE_BATCH_SIZE / ore-per-item (90/1.5 = 60 by default) rather than being freely tunable.
    - Added a new dedicated technology, "Ore Crystallization" (prerequisite: Ore Liquefaction + Utility Science Pack), that unlocks the crystallize/decrystallize recipes for every ore, following the same auto-discovery tech-gating as the existing techs.
    - Crystal items now carry their own explicit Space Age `weight` (grams), instead of silently falling back to the engine's generic 100g default. Space Age rockets and space platforms budget cargo by weight, not just inventory slots, so an unweighted crystal wasn't actually any better to ship than the raw ore it replaced - it just fixed fluids-can't-fly, without improving on ore's own poor weight efficiency. Each ore's crystal weight is now derived from that specific ore's own real weight (read live from its item prototype, so this is correct for every ore's actual mass, not a guess), scaled so shipping crystals is a flat "Crystal weight efficiency" multiplier (see setting below) better per gram than shipping the raw ore directly. At the defaults (1.5 ore-per-crystal, 1.5x weight efficiency) this works out to each crystal weighing exactly the same as one unit of its own raw ore - e.g. a crystallized iron ore crystal weighs the same 2kg as one Iron Ore, but represents 1.5 Iron Ore worth of material, so a rocket/platform load of crystals moves 50% more ore-equivalent per unit of lift weight than the same load of raw ore would.
    - Crystallize/decrystallize craft times are now deliberately tuned instead of sharing an arbitrary flat 6 seconds: at base crafting speed (no modules/beacons), 6 chemical plants decrystallizing now hit a clean 90 items/sec, and crystallize is twice as slow per machine, needing 12 machines to match that same 90 items/sec. Both are still flat global constants, identical for every ore.
    - The crystal stage's "Enable crystal stage recipes" setting now defaults to OFF unless Space Age is active (it still defaults ON when Space Age is present). The crystal stage exists purely to make dissolved ore shippable by Space Age rocket/space platform cargo, so without Space Age there's no reason for it to be there by default - it just clutters the recipe list with an unused tier. Can still be manually forced on/off regardless of Space Age's presence.
  Gameplay:
    - Added startup settings: "Fluid per ore" (default 20, fixed - see above), "Crystal ore-per-item ratio" (default 1.5, flat for every ore), "Crystal item stack size" (default 50, flat for every ore), "Crystal attrition percent" (default 2%, flat for every ore), "Crystal weight efficiency" (default 1.5x, how much better crystals ship by weight than the raw ore they represent - ores with no explicit weight of their own fall back to the engine's own default item weight, matching vanilla behavior), "Decrystallize items per second" (default 15, decrystallize's per-machine throughput at base crafting speed), "Crystallize speed multiplier" (default 2x, how much slower crystallize is than decrystallize per machine), and "Enable crystal stage recipes" (defaults to on with Space Age active, off without it - see above).
  Interface:
    - Crystal items/recipes use dedicated crystal art (`graphics/icons/crystal-ore.png`), tinted per-ore the same way pipe/tank fluid colors already are. The crystal item itself is pure crystal art with no badge (this is what actually renders on belts/in cargo); decrystallize-<ore> keeps a small ore-icon badge on the crystal art; crystallize-<ore> is inverted (ore icon leads, small crystal badge) so the two recipes read as distinct directions instead of looking identical.
  Locale:
    - Added the missing setting name/description locale entries for "Crystal weight efficiency", "Decrystallize items per second", and "Crystallize speed multiplier" (previously present in settings.lua but absent from locale, so they'd have shown up with raw internal setting names in the mod settings GUI). Updated "Enable crystal stage recipes"'s description to reflect its new Space-Age-dependent default instead of an unconditional "default on".
Version: 0.1.2
Date: 2026-09-03
  Changes:
    - Per-ore attrition now scales with how far below the effective stack size (see the new settings below) an ore's real stack size sits, instead of a flat 1% for every ore. Ores with a low native stack size (e.g. Iridite/Naquium) now cost noticeably more Aqua Regia to dissolve/reconstitute than high-stack ores like Iron Ore, reflecting the bigger capacity bonus they get from liquefaction.
    - Reworked the Aqua Regia recipe: removed the Coal ingredient entirely, reduced the batch size (60 seconds/60 fluid -> 10 seconds/10 fluid) for finer-grained crafting, and substantially increased the Steam cost while reducing Sulfuric Acid to a flat 1:1 ratio with output. Producing Aqua Regia is now primarily a power/steam-infrastructure investment rather than a Coal-and-Acid cost.
    - Added a new "Efficient" reconstitution recipe for every ore with nonzero attrition: fully recovers all Aqua Regia used, at the cost of a much slower craft time that scales with how much attrition it's avoiding (harsher for low-stack ores like Iridite, mild for common ores like Iron). Can be disabled entirely via a mod setting.
    - Replaced the "piggyback on vanilla mining-productivity-2/3" tech gating with two dedicated technologies: "Ore Liquefaction" (unlocks the core dissolve/reconstitute loop) and "Advanced Ore Liquefaction" (unlocks the new Efficient recipes).
    - Fixed production-statistics accounting for the Efficient recipe: it now nets to exactly zero visible Aqua Regia loss (matching its actual zero-attrition behavior), instead of incorrectly appearing to lose the same amount as the fast recipe.
  Gameplay:
    - Added startup settings: "Attrition per 10 stack-size gap" (default 2%), "Attrition flat-floor stack threshold" (default 50), "Attrition flat floor" (default 1%), "Efficient reconstitution time scale" (default 15), and "Enable Efficient reconstitution recipes" (default on) — the full attrition/efficiency formula is now tunable without editing code.
  Interface:
    - Recipe/fluid tooltips now state the actual computed Aqua Regia recovery percentage per ore instead of vague "most of it" language.
    - Tooltip text trimmed of "how to use it" flavor (transport method suggestions, etc.) that didn't need repeating in every description.
    - The dissolved-ore fluid now has its own icon (ore badge bottom-centered, so it reads as sitting inside the Aqua Regia droplet) separate from the recipe icons (which keep the original corner-badge layout).
    - Efficient recipes get an efficiency-module icon badge, mirroring Space Exploration's convention for marking "efficient" recipe variants.
  Compatibility:
    - Fluid-wagon capacity and cargo-wagon slot count are now read live from their actual prototypes (with vanilla-default fallbacks) instead of a hardcoded assumption that Space Exploration's boosted fluid wagon is always present, so the balance is correct even without SE installed.
    - Added collision guards: if another mod already defines a fluid/recipe/technology with one of this mod's names, this mod logs a warning and skips its own definition instead of crashing.
  Locale:
    - Ore display names (used in generated recipe/fluid names and descriptions) are now looked up live from each item's actual in-game name instead of being hand-typed per ore, so e.g. Space Exploration's se-iridium-ore correctly shows up as "Iridite" and stays correct across translations.
Version: 0.1.1
Date: 2026-09-02
  Changes:
    - No functional changes; version bump only.
Version: 0.1.0
Date: 2026-09-02
  Changes:
    - Initial release: dissolve ore into Aqua Regia for bulk fluid transport via pipe, fluid wagon, or rocket, then reconstitute it back into ore at the destination.