Dungeon Entrance Potions

Every bottle leaves the counter with an adventurer. Your price, quality, and shortcuts decide whether that customer makes it home.

Dungeon Entrance Potions preview
The torchlit dungeon-mouth counter keeps the whole promise in view: weigh Mercy, Fair, or Gouge pricing, compare all five bottles without losing names or forecasts, play Stock Rescue for targeted inventory, or turn the hanging sign to CLOSED when the day's risk is no longer worth it.
The torchlit dungeon-mouth counter keeps the whole promise in view: weigh Mercy, Fair, or Gouge pricing, compare all five bottles without losing names or forecasts, play Stock Rescue for targeted inventory, or turn the hanging sign to CLOSED when the day's risk is no longer worth it.

About this project

Game DevSimulationProcedural GenerationEconomy
I built this as a morally-tense shop sim on Angular 21, with 12 component-scoped services and a combat engine that runs customers through the dungeon after they leave. At the dungeon-mouth counter, every quote, loadout, and watered batch makes its survival, budget, and moral cost legible before you commit; those choices ripple into who survives and what your reputation looks like at the end of 30 days.
  • Component-scoped DI: 12 services injected into the parent's providers[] for isolated state and clean teardown
  • Signal-native OnPush via stateTick + bumpState, so orchestrator emissions drive re-renders without ChangeDetectorRef
  • Save schema versioning v1 through v7 with idempotent migrations and array backfill for legacy saves
  • Deterministic seeded combat with per-floor encounter tables typed as Record<DungeonFloor>, tuned against a seeded Monte-Carlo balance harness so a potion's quality measurably decides who survives
  • Pre-sale loadout forecasts keep survival odds, combo synergies, affordability, and the Mercy/Fair/Gouge tradeoff visible before every commitment
  • The hidden Stillroom turns dilution into a deliberate stock-rescue ritual, previewing quarter-strength effects, total resale value, guilt, and survival danger before confirmation
  • Customer-linked Stock Rescue turns downtime into a brisk skill challenge that awards needed inventory, with every third consecutive win paying double
  • A hanging CLOSED sign lets the player end any live day deliberately, previewing waiting customers, exposed dungeon runners, reputation, guilt, and overhead before the shop goes dark
  • WCAG 2.5.5 touch targets, focus-trap directive on every modal, prefers-reduced-motion guards across child components
  • Cross-tab save conflict detection with assertive-live banner and reload action
  • 1,400+ focused unit tests covering economy, dungeon simulation, pricing, recommendations, save schema, and OnPush wiring contracts
Dungeon Entrance Potions screenshot 1