mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-16 17:02:42 +00:00
Phase 3b (sweep): nick-floor + supply-burn sweep, T5 supply unlock
Wired SurpriseNickFloorOverride and SupplyBurnRatePctOverride into the
harness day-loop via two new parameterized helpers (surpriseRoundNickF,
applyDailyBurnP). Live callers go through the existing constants;
sweep test sits on top of the Phase 3-A best cell (e=23, d=1).
TestExpeditionBalance_Phase3B_NickSupplySweep walks 3×3 (floor ∈ {0, 1,
tier=live}) × (burn% ∈ {50, 75, 100=live}) × 10 zones × 200 trials.
Strong partial T5 positive; nick-floor lever inert.
- Supply burn is the T5 unlock: dragons_lair 0% → ~55% at burn=50.
Fighter survives elites; burn=75 isn't enough margin.
- T4 peaks at burn=75 (~12% underdark/feywild); burn=50 dips T4
slightly (more elites survived into).
- Nick-floor inert across tiers (≤3pp swing); wounded-clamp already
eats the chip-damage budget. Recommend dropping from live-tuning
candidates.
- T2-T3 wall persists: forest_shadows, manor_blackspire,
abyss_portal stuck at ~0% across every combo — outliers, not
addressable by global levers.
Global levers wrung out. Plan-doc Phase 3-B section + memory pointers
updated; next is Phase 4 (per-zone outlier pass). -short shows the
same two pre-existing failures (TestAdv2Scenario_ZoneRunGoblinWarrens,
TestMageSpellbookLineInRender).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -164,6 +164,15 @@ func makeSupplies(tier ZoneTier, p SupplyPurchase) ExpeditionSupplies {
|
||||
// where HarshMod is 1×) — the dungeon is actively starving you out.
|
||||
// - otherwise, harshActive applies HarshMod (zone-tier scaled).
|
||||
func applyDailyBurn(s ExpeditionSupplies, harshActive, siege bool) (ExpeditionSupplies, float32) {
|
||||
return applyDailyBurnP(s, harshActive, siege, 0)
|
||||
}
|
||||
|
||||
// applyDailyBurnP is the rate-parameterized form used by the Phase 3-B
|
||||
// sim harness lever sweep. burnRatePct == 0 means "use live" (100%);
|
||||
// any positive value scales the final per-day burn by that percent
|
||||
// (e.g. 50 = half burn). Live callers always go through applyDailyBurn.
|
||||
// See gogobee_expedition_difficulty.md Phase 3-B.
|
||||
func applyDailyBurnP(s ExpeditionSupplies, harshActive, siege bool, burnRatePct int) (ExpeditionSupplies, float32) {
|
||||
burn := s.DailyBurn
|
||||
switch {
|
||||
case siege:
|
||||
@@ -179,6 +188,9 @@ func applyDailyBurn(s ExpeditionSupplies, harshActive, siege bool) (ExpeditionSu
|
||||
}
|
||||
burn *= mult
|
||||
}
|
||||
if burnRatePct > 0 {
|
||||
burn = burn * float32(burnRatePct) / 100
|
||||
}
|
||||
s.Current -= burn
|
||||
if s.Current < 0 {
|
||||
s.Current = 0
|
||||
|
||||
Reference in New Issue
Block a user