Skip to content

Airmed's herbs: a find-and-deliver Max HP quest - #20

Merged
FiddlyDigital merged 1 commit into
mainfrom
airmedquest
Jul 28, 2026
Merged

Airmed's herbs: a find-and-deliver Max HP quest#20
FiddlyDigital merged 1 commit into
mainfrom
airmedquest

Conversation

@FiddlyDigital

Copy link
Copy Markdown
Owner

Reworks Airmed the Herb-Wise from a gold shop into a foraging quest that fits the roguelike loop.

The quest

  • Rare spawns — once Airmed is freed, a herb of Miach's grave becomes a vanishingly rare rider on falling stone (~1/365 per piece — one for each herb of the myth). Gated on the rescue so it can't appear before she can use it, and never during the tutorial.
  • Gather by walking — the herb locks as a green floor tile with a soft pulse (sprite_salve); step onto it to gather it. Gathered herbs travel with you between floors; an ungathered herb can be crushed by a line clear (protect the row).
  • Deliver for HP — bring your gathered herbs to Airmed in the sídhe mound and she works each into a permanent +20% Max HP (compounding), then empties the satchel.

Removes the old gold-shop path entirely (healerBaseCost / healerCostPerFloor / healerHpGainherbSpawnChance + herbHpPct in balance.json's rescues block).

Changes

  • types.ts: Cell.HERB
  • balance.json + schema + balance.ts: herbSpawnChance (1/365), herbHpPct (0.2)
  • game.ts: herbTiles/herbsCarried state; spawn injection; lockBlock tile placement; walk-on gather; line-clear loss; per-floor reset (carried herbs persist)
  • renderer.ts: draw herb tiles (green glow) + falling-piece preview
  • vendorOffers.ts: healer branch → herb delivery (no gold)
  • rescues.json: Airmed's service flavor is no longer a shop
  • Tests: spawn gating, lock + gather, delivery (+20%/herb, satchel emptied), floor persistence
  • README: new "Airmed's herbs" system row

Save/resume carries herbTiles/herbsCarried automatically via the generic scalar sweep.

Verification

npm run verify green: 432/432 tests, coverage ~84.6% stmts / 76.2% branches / 84.4% funcs / 87.7% lines (above thresholds), lint clean, validate-data + build + smoke pass. Verified live in-browser: herbs render on the floor and gather on walk-on, no page errors.

🤖 Generated with Claude Code


Generated by Claude Code

Airmed the Herb-Wise used to run a gold shop (+5 Max HP per purchase).
Turn it into a foraging quest that fits the roguelike loop:

- Once Airmed is freed, a "herb of Miach's grave" becomes a vanishingly
  rare rider on falling stone: ~1/365 per piece (one for each herb of the
  myth), gated on the rescue so it can't appear before she can use it, and
  never during the tutorial.
- The herb locks as a green floor tile with a soft pulse; walk onto it to
  gather it. Gathered herbs are carried between floors; an ungathered herb
  can be crushed by a line clear (protect the row).
- Deliver carried herbs to Airmed in the sídhe mound and she works each
  into a permanent +20% Max HP (compounding), then empties the satchel.

Removes the gold-shop path entirely (healerBaseCost/CostPerFloor/HpGain →
herbSpawnChance + herbHpPct in balance.json's rescues block).

- types.ts: Cell.HERB
- balance.json + schema + balance.ts: herbSpawnChance (1/365), herbHpPct (0.2)
- game.ts: herbTiles/herbsCarried state; spawn injection; lockBlock tile;
  walk-on gather; line-clear loss; per-floor reset (carried persists)
- renderer.ts: draw herb tiles (sprite_salve + green glow) + falling preview
- vendorOffers.ts: healer branch → herb delivery (no gold)
- rescues.json: Airmed's service flavor no longer a shop
- tests: spawn gate, lock+gather, delivery (+20%/herb, emptied), persistence
- README: new "Airmed's herbs" system row

Save/resume carries herbTiles/herbsCarried automatically (generic scalar
sweep). Verified live: herbs render on the floor and gather on walk-on,
no page errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V6kP5vUAcNbxLK5EnPKAhv
@FiddlyDigital
FiddlyDigital merged commit ec5859c into main Jul 28, 2026
1 check passed
@FiddlyDigital
FiddlyDigital deleted the airmedquest branch July 28, 2026 15:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants