Let A be GCO's actual effective Block Armor and P its incoming stagger pressure:
P = max(0, hit.damage.GetTotalStaggerDamage() * max(0, hit.staggerMultiplier))
Capacity = CapacityBase + CapacityPerBlockArmor * A
ratio = P / Capacity
efficiency = clamp(LowArmorPenalty / (1 + A / ReferenceArmor), Minimum, Maximum)
x = max(0, ratio - StartRatio) / (BreakRatio - StartRatio)
if x < 1:
multiplier = clamp(efficiency * (1 - x)^(-OverloadExponent), Minimum, Maximum)
else:
multiplier = Maximum
baseline = P * (1 - clamp01(B - 0.05)) / max(0.05, T)
newCost = baseline * multiplier
B is GCO's combined category base rate and global base-rate multiplier. T is its computed block-break threshold multiplier. The mod retains both. Damage multipliers already present in the hit are not applied twice.
The audited game's stagger-damage sum includes blunt, slash, pierce and lightning. It excludes fire, frost, poison, spirit, chop, pickaxe and generic damage. The UI's blocked-damage number is not a substitute for P.
The original GCO cost is:
oldCost = max(0, P * max(0, 1 - clamp01(B + A/1000 - 0.05)) / max(0.05, T))
The mod reconstructs the baseline so the original high-armor zero-cost plateau cannot neutralize its efficiency/overload multiplier. Explicit zero-cost tuning through GCO's combined base rate still produces a zero baseline. Capacity-based failure remains independent of that baseline.
With start/break ratios of 1 and 2.5, the following are raw overload factors before armor efficiency and the final multiplier cap:
| Pressure / Capacity | Exponent 1 | Exponent 2 | Exponent 3 |
|---|---|---|---|
| 1.00 | 1.00 | 1.00 | 1.00 |
| 1.25 | 1.20 | 1.44 | 1.73 |
| 1.50 | 1.50 | 2.25 | 3.38 |
| 1.75 | 2.00 | 4.00 | 8.00 |
| 2.00 | 3.00 | 9.00 | 27.00 |
| 2.50 | Forced failure | Forced failure | Forced failure |
Forced failure requires positive pressure, enabled guard capacity and GCO's Souls-break mode for the active category. Exhaustion can cause guard failure before the forced threshold.
Invalid start/break pairs temporarily use Start + 1.5, capped at 100. If the maximum multiplier is below the minimum, the effective maximum equals the minimum. Non-finite values fall back to defaults and supported numeric ranges are enforced. These repairs affect the cached model without rewriting synchronized config values.