Initial commit: rack, a homelab idle game

Core loop (hardware tiers, deployable services, upgrades, random events,
prestige), quirks, host nicknames, an ASCII rack view, in-app help/
changelog, and a Vitest suite covering engine logic and data balance.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Fredrik Johansson
2026-07-02 21:55:54 +02:00
commit f0314e7492
23 changed files with 4083 additions and 0 deletions

51
src/data/quirks.ts Normal file
View File

@@ -0,0 +1,51 @@
import type { QuirkDef } from '../types'
// Rolled once per deploy with QUIRK_CHANCE odds (see engine.ts). Purely a
// per-instance modifier on top of the service's own base numbers - the
// service definition itself never changes.
export const QUIRKS: QuirkDef[] = [
{
id: 'overclocked',
name: 'Overclocked',
flavour: 'Running hotter than recommended. Line goes up faster.',
rateMult: 1.35,
crashMult: 1.6,
},
{
id: 'chatty',
name: 'Chatty',
flavour: 'Logs everything, loudly, to a disk that will eventually fill.',
rateMult: 1.15,
crashMult: 1.3,
},
{
id: 'legacy',
name: 'Legacy',
flavour: "Older than the intern. Nobody wants to touch it, so nobody does.",
rateMult: 0.8,
crashMult: 0.6,
},
{
id: 'well-documented',
name: 'Well-documented',
flavour: 'Someone actually wrote a README. Unclear who.',
rateMult: 1.0,
crashMult: 0.55,
},
{
id: 'flaky',
name: 'Flaky',
flavour: 'Works on my machine. This is also your machine.',
rateMult: 1.2,
crashMult: 1.9,
},
{
id: 'artisanal',
name: 'Artisanal',
flavour: 'Hand-compiled from source. You are very proud of this.',
rateMult: 1.1,
crashMult: 1.0,
},
]
export const QUIRK_CHANCE = 0.3