Mechanics wiki / Mars General Balance / Resource Parity

Resource Parity

Makes the total amount of each map resource the same on every map, regardless of the Colony Site's resource level. In vanilla a low-resource site gives fewer and leaner deposits and a high-resource site more and richer ones (the per-level numbers are on the Colony Sites page); this pins every map's totals to a fixed target while leaving the number of spots exactly as vanilla rolled them - only the amount each spot holds changes. Status: Tested v2.9 - in StS as Code/StS_ResourceParity.lua.

Targets

Every map is normalized to these totals (the numbers a deposit's tooltip shows). "Surface and shallow" is the tier workable with no deep tech (surface piles plus depth-1 scanned deposits); "deep" is the depth-2 tier behind Deep Water Extraction / Deep Metal Extraction. Metals surface splits into the loose piles you pick up directly and the depth-1 scanned metal. These are the rough baseline; Metals and Rare Metals are then shifted by map Topography (see below), Water and Concrete are not.

ResourceSurface and shallowDeep
Water50k150k
Concrete20knone
Metals7.6k = 1200 loose piles + 6.4k shallow scanned13k
Rare Metals3k5k

So at the rough baseline total Metals on a map is 20.6k (1.2k + 6.4k + 13k), total Water 200k, total Rare Metals 8k, total Concrete 20k. The spot counts stay whatever the generator rolled, and the deposit grade (the 60-140% roll) is left vanilla: grade is a mining-speed modifier, not stored amount, so it changes nothing here.

Topography shifts Metal and Rare Metal

The hillier the map, the more Metal and Rare Metal it carries. Every Metals and Rare Metals target above (loose, shallow, deep) is scaled by (100 + pct)/100, where the percent comes from map Topography (StS_TopographyMetalPercent in Code/StS_ConditionTopography.lua). Water and Concrete are untouched.

TopographyShiftLooseShallowDeepMetal totalRare total
Relatively Flat-20%96051201040016,4806,400
Rough0%120064001300020,6008,000
Steep or Mountainous+20%144076801560024,7209,600

Two mechanisms

Concrete has to be handled differently from the other three, so the feature has two parts.

Concrete - scaled before generation (exact on average)

Terrain concrete is a painted terrain patch, and the extractor physically digs that patch. Its minable amount is Min(painted-terrain yield, max_amount) (TerrainDeposit.lua:551), so raising max_amount after the map is built cannot conjure more concrete - the terrain area caps it. Concrete therefore has to be scaled at the ResourcePreset before the map builds, which scales the painted terrain and the amount together.

On ClassesBuilt the mod scales the three per-patch volume ranges (TerrSizeVol1/2/3) on Concrete_VeryLow .. Concrete_VeryHigh so each level's expected total is 20k, leaving the patch counts (TerrSizeCount1/2/3) untouched. Because concrete is many small-to-large patches, the per-map roll around 20k is modest - concrete is exact on average, not identical every map. (This is the same preset edit the ConcreteTriple probe proved.)

Water, Metals, Rare Metals - normalized after generation (exact)

These three are scaled from the actual deposits the generator placed, so the total is exact on every single map - not just on average, and not dependent on the site level. That matters most for the deep tiers, which spawn few spots with a wide count roll (deep water 2-6 spots, deep metal 4-10): a preset-only scale would leave a big per-map wobble there, and reading the real map removes it.

Scope

Affects new colonies only - deposits on an existing save were already rolled at generation time and are not touched. Spot counts are never changed; only per-spot amounts. Amounts are stored internally as the on-screen number × const.ResourceScale (1000), the same convention the other rebalances use.

Sources

Base game and DLC, decompiled (method: docs/reading-surviving-mars-code.md). The per-level vanilla resource totals this normalizes are derived on the Colony Sites page.