Spaces:
Paused
Paused
Commit History
-
Make ice coolant an actual ongoing cost, not just a stockpile check
Claude +1: Claude Sonnet 5Unverified signatureiceCoolantMult was eligibility-only: any nonzero ice banked gave the 50% discount forever, for free. Add chargeIceUpkeep, which drains a flat rate of ice from the treasury for as long as a building actually realizes the discount this tick (a factory that ran a batch, a power station that burned fuel, a Rig that completed a dig) — nothing is charged when a building isn't benefiting (paused, starved, stalled). Once the treasury's ice hits zero the discount reverts automatically, clamped so it never goes negative. Updates the HUD's Ice Coolant row copy to reflect that it's draining banked ice, and adds tests covering the drain-per-benefit-tick behavior, the no-charge-when-idle behavior, and the revert-to-full- price behavior once ice runs out. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RSYr2P7939xnDqRbae5tCG3e3db8e -
Add ice coolant efficiency and a 5% paused-power trickle
Claude +1: Claude Sonnet 5Unverified signatureBanked ice now acts as a coolant for the whole industrial base: any owner with ice in the treasury runs recipe-based factories, the Plasma Rig, and the fuel-burning power stations (Reactor / Combustion Generator / Biomass Reactor) at half their normal appetite — half the recipe inputs, half the Rig's nuclear burn per dig, half a power station's fuel burn, and half the grid Power a factory or the Rig draws. It's a flat stockpile check (ice isn't spent), so it's a standing bonus for as long as any is banked. Separately, a paused factory or Plasma Rig no longer frees its whole reserved Power — it idles at a 5% standby trickle instead of 0. Also surfaces both changes in the HUD: a new Ice Coolant status row on the factory/Rig/power-station panels, a live-updating fuel-burn number, and pause tooltips that mention the trickle. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RSYr2P7939xnDqRbae5tCGeaccb6e
-
Economy: cache the per-tick power throttle, fix a false doc comment, dedup a survey
Claude +1: Claude Sonnet 5Unverified signature- powerThrottle is owner-wide, but updateProduction and updatePlasmaRig each called it once per BUILDING - every factory and rig redid the identical draw/cap scan (including the O(B) grid-distance search inside it) from scratch, every tick: an O(B^2) recompute. Added cachedPowerThrottle, which memoizes the result per owner per state.tick (modelled on supply.js's and sim.js's existing "freeze it once per tick" pattern) and self-invalidates the instant the tick advances. Byte-identical output to calling powerThrottle fresh; only callers that go through updateProduction/ updatePlasmaRig are affected. - powerCap/powerDraw dereferenced BUILDINGS[b.type] without the ?. guard a sibling function three lines above already uses - added for consistency. - A doc comment claimed electrify was "player-only in practice"; the Odyssey AI electrifies its own buildings too (engine/aiIndustry.js). Corrected. - rig.js's updatePlasmaRig/rigInfo each called rigVein() and locationRichnes…b22641b -
AI logistics: true symmetry — the AI hauls its own industry, no more free treasury
Claude +1: Claude Opus 4.8Unverified signatureResolves the AI-logistics asymmetry from the architecture review. The AI's factories/rigs used to run off an owner==="ai" abstraction — inputs drawn straight from the treasury, outputs banked straight back, no buffers, no workers, no stalls — so the finite-storage/ haulage system (the headline Odyssey reshape) was a labour tax only the human paid, and the two economies weren't comparable. Now the AI runs the SAME finite-buffer + worker-haulage model as the player: - Deleted the abstract branches in industry.js/rig.js. updateProduction/updatePlasmaRig are owner-agnostic again: a factory only produces once workers fill its input larder and keep its output buffer clear (else it stalls), and a rig's finite buffer must be hauled off. - engine/ai.js assignAiLogistics: dedicates a BOUNDED share of idle workers (<= half the pool, so gathering never starves) to service factories / haul the rig, reusing the exact owner-generic machinery the player's workers use (assignService/assignHaul…8cd6f2e
-
AI industry (1/N): abstracted AI logistics — factories & rigs run off the treasury
Claude +1: Claude Opus 4.8Unverified signatureThe finite-storage/haulage economy is player-only: sim.js auto-assigns haul/service work only to player workers, so an AI-built factory never gets inputs carried in or outputs carried off, and an AI rig's output buffer never drains — they'd produce nothing. This blocks the AI from ever using the new Odyssey industry. Enabling change: the player does logistics by hand (finite input/store buffers + worker haulage — a skill differentiator); the AI's logistics are ABSTRACTED. For an owner==="ai" building, updateProduction draws inputs straight from the treasury and banks output straight back, and the Plasma Rig banks its dig straight to the treasury — no haulage, no buffer to fill and stall on. The power throttle still applies, so Reactors stay a real constraint and the grid still matters. Gated on owner==="ai": the player path (buffers + haulage) is byte-for-byte unchanged, and a skirmish never instantiates a factory/rig so its replay is untouched. This is the one core change; later pha…50f1d44 -
Plasma Rig: surface deposits telegraph the seam below (educated-guess placement)
Claude +1: Claude Opus 4.8Unverified signatureThe rig's vein and richness were pure position hashes — blind. Now the SURFACE resource deposits near a spot bias what's underground, so late-game rig placement is an educated guess off the visible map rather than a gamble. - rigVein is a deterministic weighted-random pick biased by nearby deposits: a rig among ore fields usually strikes ore, but a small hashed floor on every vein keeps a surprise possible (and a barren spot a genuine gamble). - locationRichness blends surface DENSITY (proximity-weighted deposit size) with the old tile/planet hash — dense surface digs a richer seam. - Both read node.max (the original deposit size), so a rig's vein/richness never drift as the surface nodes are mined out — stable for the life of the rig. The "guess" gap is honest: the sim surveys ALL nodes (deterministic ground truth) while the new rigSurvey — used by the placement UI — reads only the VISIBLE/charted deposits, so an unscouted cache stays a surprise. - render.js: the Plasma Rig…6772f54 -
Logistics Phase A: finite rig output buffer + worker haulage
Claude +1: Claude Opus 4.8Unverified signatureStorage stops being an infinite sink and workers get a job that lasts to the end of the game. The Plasma Rig (a leaf producer of raw goods — the safest surface to prove the mechanic, since its output feeds no other factory) now banks each dig into a FINITE local buffer (building.store, capped at def.storeCap 120) and stalls the moment it's full. Those goods aren't spendable until hauled to a Command Center. New worker haulage (engine/haul.js): an idle PLAYER worker auto-assigns to the nearest own producer whose buffer is ≥34% full (≤2 haulers per producer, ties broken by id), walks there, loads a cargo, carries it to the nearest drop-off, and banks it into the treasury 1:1 — no gather multiplier, since the rig already extracted it. Run short on haulers and the buffer fills and the rig stalls: logistics is now a live demand on labour, exactly as intended. - entities.js: storeCapOf / storeTotal / storeRoom helpers; storeCap on the rig def. - rig.js: bank to store (top off the final dig…91ad84b
-
Plasma Rig: deep-core extraction — unlimited raws at a probabilistic yield tier
Claude +1: Claude Opus 4.8Unverified signatureA new Odyssey building (engine/rig.js) that mines a raw commodity forever instead of from a finite node. Each dig cycle strikes a probabilistic tier — low, medium, good, or overwhelming — whose odds rise with the rig's spot AND the planet, so placement matters. It's costed as an engine, not free money: - "plasma to dig" = a heavy Power draw routed through industry.js's grid, so it competes with factories/the Gate and its digs slow when power is short. - "nuclear to exploit" = radioactives burned per dig; out of them, it stalls. - "AI to pilot" + manufactured materials = an expensive build cost ({ ore: 500, machinery: 8, electronics: 5, ai: 3 }), gated behind aifoundry + reactor. Which raw a rig mines (its "vein") is fixed by where you build it. Determinism-safe: every roll is a hashStr of the rig id + its dig counter (no Math.random, no clock), so a same-seed galaxy strikes the same seams on replay; the engine-purity + determinism guards stay green. dig state persists on the bui…db667bc