Airmed's herbs: a find-and-deliver Max HP quest - #20
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reworks Airmed the Herb-Wise from a gold shop into a foraging quest that fits the roguelike loop.
The quest
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).Removes the old gold-shop path entirely (
healerBaseCost/healerCostPerFloor/healerHpGain→herbSpawnChance+herbHpPctinbalance.json'srescuesblock).Changes
types.ts:Cell.HERBbalance.json+ schema +balance.ts:herbSpawnChance(1/365),herbHpPct(0.2)game.ts:herbTiles/herbsCarriedstate; spawn injection;lockBlocktile placement; walk-on gather; line-clear loss; per-floor reset (carried herbs persist)renderer.ts: draw herb tiles (green glow) + falling-piece previewvendorOffers.ts: healer branch → herb delivery (no gold)rescues.json: Airmed's service flavor is no longer a shopSave/resume carries
herbTiles/herbsCarriedautomatically via the generic scalar sweep.Verification
npm run verifygreen: 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