Waste rock pays: richer granite and basalt grinding, bulk rock orders (t3)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-24 17:39:30 -04:00
co-authored by Claude Opus 5.5
parent 9682cab6d4
commit 06f8f90f19
5 changed files with 25 additions and 5 deletions
+8
View File
@@ -91,6 +91,14 @@ const fed = 400, sand = count(run, run('SAND')), o = ore();
check('the Grinder grinds all the stone rubble it is fed', count(run, run('RSTONE')) === 0 && run('stats.refined') === fed, `${count(run, run('RSTONE'))} left, ${run('stats.refined')} of ${fed} ground`);
check('about half as much sand comes out', sand > fed * 0.35 && sand < fed * 0.6, `${sand} sand from ${fed} rubble`);
check('with the odd grain of common ore', o > 0 && o < fed * 0.15, `${o} ore grains`);
// Old chances are tried in turn, so later ores require every earlier roll to miss.
const oldGraniteChances = [0.02, 0.012, 0.01, 0.002];
const oldGraniteExpected = 2000 * (1 - oldGraniteChances.reduce((miss, chance) => miss * (1 - chance), 1));
grinderRig(); grind('RGRAN', 2000);
const graniteOre = run('stats.refinedOre');
check('all 2000 granite rubble grains are ground', run('stats.refined') === 2000, run('stats.refined'));
check('granite yields at least 1.5 times its old expected ore', graniteOre >= 1.5 * oldGraniteExpected,
`${graniteOre} ore; old expectation ${oldGraniteExpected.toFixed(1)}, minimum ${(1.5 * oldGraniteExpected).toFixed(1)}`);
// gravel, sand and dirt are refined too; ore drops straight through
grinderRig(); grind('LDIRT', 60);
check('dirt goes through the Grinder too', count(run, run('LDIRT')) === 0 && run('stats.refined') === 60);