Dungeon Entrance Potions

A potion shop sim where your pricing and dilution choices feed into a per-floor combat engine that decides who comes back alive.

Dungeon Entrance Potions preview
A few rounds in: customers show up with classes, budgets, and traits, you price or dilute each potion, and the dungeon-activity log narrates the result live. Looting, fighting, deaths, and the reputation hits when someone waits too long and walks off.
A few rounds in: customers show up with classes, budgets, and traits, you price or dilute each potion, and the dungeon-activity log narrates the result live. Looting, fighting, deaths, and the reputation hits when someone waits too long and walks off.

About this project

Game DevSimulationProcedural GenerationEconomy
I built this as a morally-tense shop sim on Angular 21, 12 component-scoped services, signal-native OnPush, and a combat engine that runs your customers through the dungeon after they leave. Your pricing and dilution decisions ripple into per-floor encounter rolls that determine who survives, who dies, 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 v6 with idempotent migrations and array backfill for legacy saves
  • Per-floor encounter weights typed as Record<DungeonFloor, ...> so out-of-range keys fail at compile time
  • 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
  • 8,700+ unit tests covering economy, dungeon simulation, save schema, and OnPush wiring contracts
Dungeon Entrance Potions screenshot 1