mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-15 08:32:41 +00:00
Combines all uncommitted D&D work into one checkpoint: Phases 1-8 (per gogobee_dnd_session_summary.md): - Race/class/stats system, !setup flow, !sheet, !respec - d20-vs-AC combat with race/class passives, auto-migration - XP/level-up, skill checks, NPC refund hooks - Equipment slot mapping, rarity, !rest short/long - Pre-arm active abilities, resource pools - Bestiary, !roll/!stats/!level, onboarding DM - Audit fixes A-I, flavor wiring under internal/flavor/ - Phase 8 weapon dice + armor AC tables (gogobee_equipment_appendix) Phase 9 SP1 — spell system foundations: - 79 SpellDefinitions (76 in-scope + 3 reaction-deferred) - dnd_known_spells, dnd_spell_slots tables - pending_cast / concentration_* columns on dnd_character - Slot tables for Mage/Cleric/Ranger, DC + attack-bonus math - Long-rest refreshes slots; respec wipes spell state - Auto-grant default known list on !setup confirm and auto-migration Phase 9 SP2 — !cast / !spells / !prepare commands: - Out-of-combat HEAL and UTILITY resolve immediately - Damage/control/buff queue as pending_cast for next combat - Audit-style save-then-debit, slot refund on save failure - !cast --drop, concentration supersession, prep-cap enforcement - Reaction spells refused with Phase 11 note SP3 (combat-time resolution of pending_cast) and SP4 (full prep/learn tests) are next. Build clean, full test suite green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
617 lines
29 KiB
Markdown
617 lines
29 KiB
Markdown
# GogoBee — Expedition Resource & Combat Integration
|
||
> **Companion to:** `gogobee_expedition_system.md`, `gogobee_dungeon_zones.md`
|
||
> **Version:** 1.0
|
||
> **Status:** Draft
|
||
> **Impact:** REPLACES standalone harvesting system and standalone dungeon run system
|
||
|
||
---
|
||
|
||
## ⚠️ Protected Files — DO NOT MODIFY
|
||
|
||
All existing `*_flavor.go` / `*_flavor.txt` files are off-limits.
|
||
New resource and combat flavor text goes in `twinbee_resource_flavor.go` — new file only.
|
||
|
||
---
|
||
|
||
## 1. System Consolidation
|
||
|
||
### What Is Being Replaced
|
||
|
||
The following standalone systems are **deprecated** and removed from the command surface:
|
||
|
||
| Deprecated System | Replaced By |
|
||
|---|---|
|
||
| Standalone `!adventure` command | Expedition exploration (`!advance`) |
|
||
| Standalone `!harvest` command | Zone harvesting within active expedition |
|
||
| Standalone dungeon runs (`DungeonRun`) | `Expedition` system entirely |
|
||
| Generic loot tables (zone-agnostic) | Zone-specific resource tables (this doc) |
|
||
| Generic combat events | Zone-contextual combat events (this doc) |
|
||
|
||
### What Is Preserved
|
||
|
||
| Existing System | Status | Notes |
|
||
|---|---|---|
|
||
| Fishing | Preserved + integrated | Fishing happens in water-bearing zones only; Ranger bonuses apply |
|
||
| Pet system | Preserved + integrated | Pet bonuses apply inside expeditions unchanged |
|
||
| Arena / streak system | Preserved, standalone | Arena remains a separate PvP-adjacent system |
|
||
| Economy / Thom Krooke | Preserved | Supply procurement, loot selling, all unchanged |
|
||
| NPC interactions | Preserved + expanded | NPCs can now appear as expedition events |
|
||
|
||
### Migration for Existing Players
|
||
|
||
Players with resources gathered under the old system retain those resources in their inventory. Old `DungeonRun` records are archived (not deleted). No player loses progress. The new expedition system becomes the only path to generate new resources from Day 1 of launch.
|
||
|
||
---
|
||
|
||
## 2. How Resources Work Inside Expeditions
|
||
|
||
Resources are gathered through **Harvest Actions** — a category of expedition action that occurs in cleared rooms. A harvest action:
|
||
|
||
- Costs one action slot per attempt (not a full day — multiple harvests possible per day)
|
||
- Requires an appropriate skill check (skill and DC vary by resource and zone)
|
||
- Can trigger a **Combat Interrupt** (Section 4)
|
||
- Yields zone-specific materials, not generic drops
|
||
- Has a daily attempt cap per resource node (nodes replenish on long rest)
|
||
|
||
### 2.1 Harvest Action Types
|
||
|
||
| Action | Command | Primary Skill | Who Benefits |
|
||
|---|---|---|---|
|
||
| Forage | `!forage` | WIS (Survival) | Ranger +2 bonus |
|
||
| Mine / Salvage | `!mine` | STR (Athletics) | Fighter +2 bonus |
|
||
| Fish | `!fish` | DEX (Sleight of Hand) | Ranger +bonus; existing fishing rank applies |
|
||
| Scavenge | `!scavenge` | INT (Investigation) | Rogue +2 bonus |
|
||
| Harvest Essence | `!essence` | INT (Arcana) | Mage +2 bonus |
|
||
| Commune | `!commune` | WIS (Insight) | Cleric +2 bonus; unlocks unique Cleric-only drops |
|
||
|
||
### 2.2 Harvest Yield Structure
|
||
|
||
Each harvest attempt produces one of four outcomes:
|
||
|
||
| Outcome | Roll Result | Yield |
|
||
|---|---|---|
|
||
| **Nothing** | Fail DC by 5+ | No yield; node not depleted |
|
||
| **Common yield** | Fail DC by 1–4 | 1 unit of base zone material |
|
||
| **Standard yield** | Meet DC | 1d3 units of base zone material |
|
||
| **Rich yield** | Beat DC by 5+ | 1d3 units base material + 1 bonus/rare material |
|
||
|
||
### 2.3 Node Depletion
|
||
|
||
Each room has a fixed number of harvest nodes per type (defined per zone, Section 3). Once a node is depleted it does not regenerate until long rest. TwinBee narrates node depletion:
|
||
|
||
> *"The patch is stripped. You've taken what it had. TwinBee notes the location for the return trip — if there is one."*
|
||
|
||
---
|
||
|
||
## 3. Zone Resource Tables
|
||
|
||
### Zone 01 — Goblin Warrens
|
||
|
||
**Biome:** Underground tunnels, crude construction, scavenged materials
|
||
**Primary Gathering Actions:** `!scavenge`, `!mine`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Scrap Iron | Common material | `!mine` | 10 | Used in basic weapon repairs |
|
||
| Goblin Alchemy Pouch | Uncommon material | `!scavenge` | 13 | Random minor potion component |
|
||
| Worg Pelt | Uncommon material | `!scavenge` (post-Worg kill) | 11 | Requires Worg defeated in room |
|
||
| Crude Weapon Cache | Uncommon item | `!scavenge` | 15 | Random Common weapon drop |
|
||
| Hobgoblin War Standard | Rare material | `!scavenge` | 18 | High sell value; Thom Krooke special interest |
|
||
| Goblin Shaman's Reagents | Rare material | `!essence` | 17 | Mage only; spell component batch |
|
||
|
||
**Zone Fishing:** None.
|
||
**Node Count Per Room:** Scrap Iron ×2, Alchemy Pouch ×1, Worg Pelt ×1 (conditional), Cache ×1.
|
||
|
||
---
|
||
|
||
### Zone 02 — Crypt of Valdris
|
||
|
||
**Biome:** Stone crypts, necrotic energy, ancient burial goods
|
||
**Primary Gathering Actions:** `!scavenge`, `!essence`, `!commune`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Grave Soil | Common material | `!scavenge` | 9 | Alchemy base; Cleric crafting component |
|
||
| Bone Dust | Common material | `!scavenge` | 9 | Spell component; sell value low |
|
||
| Ancient Coin (pre-Empire) | Uncommon material | `!scavenge` | 14 | Thom Krooke pays premium |
|
||
| Necrotic Essence | Uncommon material | `!essence` | 15 | Magic item crafting; volatile |
|
||
| Silver Grave Dust | Rare material | `!commune` | 17 | Cleric only; enhances undead-specific abilities |
|
||
| Valdris's Seal Fragment | Rare quest material | `!scavenge` | 20 | Lore item; possible future quest chain |
|
||
|
||
**Zone Fishing:** None.
|
||
**Node Count Per Room:** Grave Soil ×2, Bone Dust ×2, Ancient Coin ×1, Necrotic Essence ×1.
|
||
|
||
---
|
||
|
||
### Zone 03 — Forest of Shadows
|
||
|
||
**Biome:** Ancient corrupted woodland, streams, fauna, fey-adjacent
|
||
**Primary Gathering Actions:** `!forage`, `!essence`, `!fish`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Shadow Herb | Common material | `!forage` | 10 | Potion base; anti-fear properties |
|
||
| Beast Pelt | Common material | `!forage` (post-kill) | 11 | Requires beast kill in room; Ranger bonus |
|
||
| Darkwood | Uncommon material | `!mine` | 13 | Weapon crafting; bows, staves |
|
||
| Corrupted Fey Bloom | Uncommon material | `!forage` | 16 | Rare; potion of resistance component |
|
||
| Owlbear Feather | Uncommon material | `!scavenge` (post-kill) | 12 | Requires Owlbear kill; fletching, rare item component |
|
||
| Dryad's Tears | Rare material | `!essence` | 18 | Mage/Ranger only; regeneration potion component |
|
||
| Bioluminescent Fungi | Rare material | `!forage` | 17 | Light source crafting; high sell value |
|
||
|
||
**Zone Fishing:** Forest streams, outdoor exploration rooms only.
|
||
|
||
| Fish | Rarity | DC | Notes |
|
||
|---|---|---|---|
|
||
| Shadow Trout | Common | 11 | Edible; 0.5 SU value |
|
||
| Gloomfin | Uncommon | 15 | Sell value; potion component |
|
||
| Phantom Carp | Rare | 20 | Cleric material; high sell value |
|
||
|
||
**Node Count Per Room:** Shadow Herb ×2, Beast Pelt ×1 (conditional), Darkwood ×1, Fungi ×1.
|
||
|
||
---
|
||
|
||
### Zone 04 — Sunken Temple of Dar'eth
|
||
|
||
**Biome:** Flooded stone, tidal, aquatic, aboleth-touched
|
||
**Primary Gathering Actions:** `!fish`, `!scavenge`, `!essence`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Sea Glass Shard | Common material | `!scavenge` | 9 | Crafting filler; low value |
|
||
| Deep Coral | Common material | `!mine` | 11 | Jewelry component; Thom Krooke moderate value |
|
||
| Kuo-toa Scale | Uncommon material | `!scavenge` (post-kill) | 12 | Armor crafting component |
|
||
| Black Pearl | Uncommon material | `!fish` | 16 | High sell value; accessory component |
|
||
| Aboleth Mucus (refined) | Rare material | `!essence` | 18 | Mage only; psychic spell amplifier |
|
||
| Ancient Temple Relic | Rare item | `!scavenge` | 20 | Random Uncommon item; lore value |
|
||
| Tidal Crystal | Rare material | `!mine` (Tidal Event only) | 17 | Only available during Day 6 Tidal Event; spell focus component |
|
||
|
||
**Zone Fishing:** All flooded rooms. Bonus fish nodes during Tidal Event.
|
||
|
||
| Fish | Rarity | DC | Notes |
|
||
|---|---|---|---|
|
||
| Blind Cave Fish | Common | 10 | Edible; 0.5 SU |
|
||
| Merrow Eel | Uncommon | 14 | Potion component; slight poison property |
|
||
| Dar'eth Lanternfish | Rare | 19 | Bioluminescent; crafting and sell value |
|
||
| Aboleth Spawn (juvenile) | Very Rare | 23 | Requires Ranger + DC 23; unique Ranger trophy |
|
||
|
||
**Node Count Per Room:** Sea Glass ×2, Deep Coral ×1, Kuo-toa Scale ×1 (conditional), Pearl ×1.
|
||
|
||
---
|
||
|
||
### Zone 05 — Haunted Manor of Blackspire
|
||
|
||
**Biome:** Victorian decay, cursed objects, spectral residue
|
||
**Primary Gathering Actions:** `!scavenge`, `!essence`, `!commune`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Grave Dust (spectral) | Common material | `!scavenge` | 10 | Upgraded version of Crypt variant; more potent |
|
||
| Cursed Trinket | Common item | `!scavenge` | 12 | Random debuff item; sell only; do not equip |
|
||
| Ghost Silk | Uncommon material | `!essence` | 15 | Armor crafting; +DEX light armor component |
|
||
| Vampire Ash | Uncommon material | `!scavenge` (post-Vampire kill) | 14 | Requires Vampire Spawn kill; holy weapon component |
|
||
| Shadow Essence | Rare material | `!essence` | 18 | Rogue item component; stealth enhancement |
|
||
| Blackspire Library Volume | Rare lore item | `!scavenge` | 19 | Increases INT by 1 for one dungeon run (consumable); lore value |
|
||
| Wraith Core | Rare material | `!commune` | 20 | Cleric only; requires Wraith kill; undead ward component |
|
||
|
||
**Zone Fishing:** None.
|
||
**Special:** Every `!scavenge` in the Manor has a 10% chance of yielding a **Cursed Trinket** as a secondary drop regardless of node. TwinBee warns about this once, clearly, and then does not warn again.
|
||
|
||
---
|
||
|
||
### Zone 06 — The Underforge
|
||
|
||
**Biome:** Volcanic caverns, ancient dwarven metalwork, fire elementals
|
||
**Primary Gathering Actions:** `!mine`, `!essence`, `!scavenge`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Iron Ore | Common material | `!mine` | 10 | Weapon/armor base material |
|
||
| Volcanic Glass | Common material | `!mine` | 11 | Blade component; slightly fragile |
|
||
| Azer Metal Ingot | Uncommon material | `!mine` (post-Azer kill) | 14 | Requires Azer kill; always-hot; unique properties |
|
||
| Fire Essence | Uncommon material | `!essence` | 15 | Mage crafting; fire spell amplifier |
|
||
| Mithral Trace | Rare material | `!mine` | 20 | Very rare; mithral armor component |
|
||
| Forge Core Fragment | Rare material | `!scavenge` (post-Construct kill) | 17 | Construct parts; golem-crafting future use |
|
||
| Salamander Oil | Rare material | `!essence` (post-Salamander kill) | 16 | Fire resistance potion component; high value |
|
||
|
||
**Zone Fishing:** None.
|
||
**Heat Interaction:** At Heat Stack 7+, all `!mine` DCs increase by 3. At Heat Stack 10, harvesting is impossible until stacks reduce.
|
||
|
||
---
|
||
|
||
### Zone 07 — The Underdark
|
||
|
||
**Biome:** Vast underground, drow civilization, alien ecology, cave rivers
|
||
**Primary Gathering Actions:** `!forage`, `!mine`, `!fish`, `!essence`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Underdark Mushroom | Common material | `!forage` | 10 | Edible (+1 SU); also potion base |
|
||
| Cave Spider Silk | Common material | `!forage` | 12 | Armor component; light and strong |
|
||
| Drow Poison (diluted) | Uncommon material | `!scavenge` (post-Drow kill) | 14 | Weapon coating; Unconscious condition on hit (save) |
|
||
| Faerzress Crystal | Uncommon material | `!mine` | 16 | Magic-disruptive; Mage spell component |
|
||
| Mind Flayer Brain Matter | Rare material | `!essence` (post-Illithid kill) | 19 | Mage only; INT buff component; deeply unpleasant to handle |
|
||
| Drow Adamantine | Rare material | `!mine` | 21 | Drow-forged; superior armor component |
|
||
| Deep Dragon Scale Chip | Very Rare material | `!scavenge` | 23 | World drop; legendary item component |
|
||
|
||
**Zone Fishing:** Underground rivers (specific Exploration rooms only — TwinBee marks them).
|
||
|
||
| Fish | Rarity | DC | Notes |
|
||
|---|---|---|---|
|
||
| Blind Albino Bass | Common | 11 | Edible; 0.5 SU |
|
||
| Glowing Cave Eel | Uncommon | 15 | Light source (temporary); sell value |
|
||
| Underdark Shark | Rare | 20 | Trophy fish; Ranger achievement |
|
||
| The Eyeless King | Legendary | 26 | Unique named fish; Ranger lv10+ only; Thom Krooke pays extraordinary amount |
|
||
|
||
---
|
||
|
||
### Zone 08 — Feywild Crossing
|
||
|
||
**Biome:** Impossible forest, fey magic, unstable time, dangerous beauty
|
||
**Primary Gathering Actions:** `!forage`, `!essence`, `!commune`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Fey Dust | Common material | `!forage` | 11 | Spell component; mild time-distortion effect |
|
||
| Enchanted Petal | Common material | `!forage` | 12 | Potion of Charm component |
|
||
| Pixie Wing Fragments | Uncommon material | `!essence` | 16 | Very delicate; magic item component |
|
||
| Will-o-Wisp Essence | Uncommon material | `!essence` (post-kill) | 17 | Light magic; Mage light spell enhancement |
|
||
| Hag Hair | Rare material | `!commune` (post-Hag kill) | 18 | Cleric ward component; warding against fey charm |
|
||
| Timelock Amber | Rare material | `!forage` | 21 | Preserves items; rare crafting anchor |
|
||
| Thornmother's Thorn | Very Rare material | `!scavenge` (post-boss) | — | Boss drop only; legendary item component |
|
||
|
||
**Zone Fishing:** Fey streams only (time-distorted; fishing roll has chance of Time Distortion event).
|
||
**Time Interaction:** On a Double-Day roll (Section 7.4 of expedition doc), all `!forage` DCs decrease by 3. On Time Loop, previous harvest results in that room are nullified — resources return to nodes.
|
||
|
||
---
|
||
|
||
### Zone 09 — Dragon's Lair
|
||
|
||
**Biome:** Volcanic mountain, kobold warrens, draconic power, ancient wealth
|
||
**Primary Gathering Actions:** `!mine`, `!scavenge`, `!essence`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Ancient Gold Coin | Common material | `!scavenge` | 10 | Direct coin value; also historical item |
|
||
| Volcanic Gem | Common material | `!mine` | 12 | Jewelry; spell component |
|
||
| Drake Blood | Uncommon material | `!essence` (post-Drake kill) | 14 | Fire resistance potion component |
|
||
| Dragon Scale Fragment | Uncommon material | `!scavenge` (post-Drake kill) | 16 | Armor component; not boss-quality |
|
||
| Dragonfire Coal | Rare material | `!mine` | 19 | Burns indefinitely; heating, forging |
|
||
| Kobold Trap Mechanism | Rare item | `!scavenge` | 18 | Deployable trap (one-use combat item) |
|
||
| Infernax Scale | Legendary material | `!scavenge` (post-boss) | — | Boss drop only; legendary fire weapon component |
|
||
|
||
**Zone Fishing:** None.
|
||
**Awareness Interaction:** At Awareness Pulse 3+, all harvest DCs increase by 4. After Infernax wakes (Day 14), harvesting is disabled — survival only.
|
||
|
||
---
|
||
|
||
### Zone 10 — The Abyss Portal
|
||
|
||
**Biome:** Fractured reality, demonic incursion, planar debris
|
||
**Primary Gathering Actions:** `!essence`, `!scavenge`, `!mine`
|
||
|
||
| Resource | Type | Harvest Action | DC | Notes |
|
||
|---|---|---|---|---|
|
||
| Brimstone Shard | Common material | `!mine` | 11 | Fire damage component; unstable |
|
||
| Demon Ichor | Common material | `!scavenge` (post-kill) | 12 | Poison/acid component; corrosive |
|
||
| Planar Shard | Uncommon material | `!mine` | 15 | Reality fragment; Mage crafting anchor |
|
||
| Corrupted Metal | Uncommon material | `!scavenge` | 16 | Weapon component; chaotic properties |
|
||
| Void Essence | Rare material | `!essence` | 20 | Pure planar energy; legendary crafting only |
|
||
| Abyssal Ichor (concentrated) | Rare material | `!essence` (post-Balor region) | 22 | Mage only; most powerful spell amplifier in game |
|
||
| Portal Fragment | Legendary material | `!scavenge` (post-boss) | — | Boss drop; portal-closing quest item |
|
||
|
||
**Instability Interaction:** At Instability 61+, all harvest DCs increase by 5. At Instability 81+, harvesting is disabled. At Collapse, all unharvested nodes are lost.
|
||
|
||
---
|
||
|
||
## 4. Combat Events During Expeditions
|
||
|
||
Combat no longer occurs as a standalone triggered event. All combat happens **within the expedition context** as one of four event types.
|
||
|
||
### 4.1 Combat Event Types
|
||
|
||
**Room Combat**
|
||
The standard encounter — enemies present in a new or reset room. Triggered by `!advance`. Uses full D&D combat resolution. Room is flagged Cleared on enemy defeat. Cleared rooms are safe for harvesting.
|
||
|
||
**Harvest Interrupt**
|
||
A combat encounter triggered mid-harvest. The player was focused on gathering; enemies took advantage.
|
||
|
||
- Trigger: `!forage`/`!mine`/etc. with Combat Interrupt roll (see Section 4.2)
|
||
- Enemy is from zone roster at current room's tier
|
||
- Player does NOT get to roll initiative — enemy acts first (surprise round)
|
||
- Ranger passive: -3 to Combat Interrupt roll in wilderness zones
|
||
- Rogue passive: if Stealth was active, no surprise round
|
||
|
||
**Night Ambush**
|
||
Wandering monster encounter during Night Phase. Player wakes to combat.
|
||
- Player HP is at current value (not full unless long rest was taken)
|
||
- First round: DEX save DC 12 or lose first turn (groggy)
|
||
|
||
**Patrol Encounter**
|
||
At Threat Clock Alert+, patrols move through cleared rooms. Triggered on `!advance` between rooms, not inside rooms.
|
||
- Patrol is 1–2 enemies, weaker than room combat
|
||
- Defeating a patrol does not clear a room
|
||
- Fleeing a patrol costs Threat Clock +5
|
||
|
||
### 4.2 Combat Interrupt Roll
|
||
|
||
When a Harvest Action is attempted, roll 1d20 + zone tier:
|
||
|
||
| Roll | Outcome |
|
||
|---|---|
|
||
| 1–8 | No interrupt. Harvest proceeds. |
|
||
| 9–14 | Noise noticed. Threat Clock +2. No combat. |
|
||
| 15–18 | Harvest Interrupt: 1 standard enemy from zone roster. |
|
||
| 19–21 | Harvest Interrupt: elite enemy. Harvest node not depleted (you dropped it). |
|
||
| 22+ | Patrol Interrupt: 1d3 enemies. Harvest fails entirely. |
|
||
|
||
**Threat Clock modifier:** +1 per 20 Threat Clock points above 40.
|
||
|
||
### 4.3 Combat Outcomes Within Expeditions
|
||
|
||
**Victory:**
|
||
- Loot drops from zone loot table
|
||
- XP awarded
|
||
- Harvest can resume (node still active unless Patrol Interrupt)
|
||
- TwinBee delivers zone-contextual combat victory line
|
||
|
||
**Defeat (0 HP):**
|
||
- Forced extraction triggers (Section 10.2 of expedition doc)
|
||
- Any unbanked loot from current room is lost
|
||
- Carried loot is preserved
|
||
|
||
**Flee:**
|
||
- DEX check DC 13 to escape
|
||
- On success: leave room; Threat Clock +5; harvest abandoned
|
||
- On fail: enemy gets one free attack; then escape succeeds
|
||
|
||
---
|
||
|
||
## 5. Zone-Contextual Loot Tables
|
||
|
||
Zone loot drops from combat are separate from harvest nodes. These drop on enemy defeat and are zone-specific.
|
||
|
||
### Loot Drop Logic
|
||
|
||
Every combat victory generates a loot roll:
|
||
1. Roll for **drop tier** (based on enemy CR)
|
||
2. Roll on **zone loot table** for that tier
|
||
3. Apply **rarity roll** — base rates modified by Ranger pet bonus and class
|
||
|
||
| Enemy CR Range | Drop Tier | Guaranteed Drop? |
|
||
|---|---|---|
|
||
| 0–1 | Common only | No (70% chance) |
|
||
| 2–4 | Common or Uncommon | Yes (Common always; Uncommon 30%) |
|
||
| 5–8 | Uncommon or Rare | Yes (Uncommon always; Rare 15%) |
|
||
| 9–12 | Rare or Epic | Yes (Rare always; Epic 10%) |
|
||
| 13+ | Epic or Legendary | Yes (Epic always; Legendary 5%) |
|
||
| Boss | Rare minimum | Yes (see individual boss tables) |
|
||
|
||
### Zone Loot Flavor by Biome
|
||
|
||
Every item drop has a zone-contextual description. The same `Potion of Healing` found in the Goblin Warrens is described differently than one found in the Haunted Manor:
|
||
|
||
| Zone | Potion of Healing flavor |
|
||
|---|---|
|
||
| Goblin Warrens | A stolen vial, still stoppered with a rag. It smells like goblin and better days. |
|
||
| Crypt of Valdris | A glass vial embedded in a burial offering. Whoever left it didn't need it. |
|
||
| Forest of Shadows | Bark-sealed, filled with something deep red. It tastes like the forest before it went wrong. |
|
||
| Sunken Temple | Salt-rimed and pressure-sealed. A temple offering, preserved by the deep cold. |
|
||
| Haunted Manor | Found in the medicine cabinet, dated forty years ago. Remarkably, still effective. |
|
||
| Underforge | Hot to the touch even now. The dwarves made things to last. |
|
||
| Underdark | Drow-made. The formula is different. The effect is the same. The ingredients are not discussed. |
|
||
| Feywild Crossing | It shifts color when you look at it sideways. The fey make medicine the way they make everything: beautifully and with caveats. |
|
||
| Dragon's Lair | A kobold medic's field kit, looted from a belt pouch. The kobolds take care of their own. |
|
||
| Abyss Portal | Glows faintly red. Still works. TwinBee recommends not asking what's in it. |
|
||
|
||
---
|
||
|
||
## 6. Fishing System Integration
|
||
|
||
Fishing is preserved entirely but now occurs only within active expeditions, in zones and rooms that support it.
|
||
|
||
### 6.1 Fishing Zones
|
||
|
||
| Zone | Fishing Rooms | Fishing Window |
|
||
|---|---|---|
|
||
| Forest of Shadows | Outdoor exploration rooms with stream markers | Day phase only |
|
||
| Sunken Temple | All flooded rooms | Any time; bonus during Tidal Event |
|
||
| Underdark | Underground river rooms (TwinBee marks these) | Any time |
|
||
| Feywild Crossing | Fey stream rooms | Day phase; subject to Time Distortion |
|
||
|
||
All other zones: no fishing.
|
||
|
||
### 6.2 Fishing Mechanics Within Expeditions
|
||
|
||
- `!fish` uses the existing fishing rank system with no mechanical changes
|
||
- Fishing counts as a Harvest Action (costs an action slot)
|
||
- Fishing Interrupt roll uses the same Combat Interrupt table (Section 4.2)
|
||
- Ranger fishing bonuses (+20% rare catch rate) apply
|
||
- Fish caught in expeditions are added to inventory, not auto-converted to coins
|
||
- Fish can be eaten for SU value (see zone tables) or sold to Thom Krooke post-expedition
|
||
|
||
### 6.3 Expedition-Exclusive Fish
|
||
|
||
Certain fish only exist within expedition zones and cannot be caught via any other mechanic. These are marked in zone tables as "Expedition-only." They have unique sell values, crafting uses, or both.
|
||
|
||
---
|
||
|
||
## 7. Go Data Structures — Resource System
|
||
|
||
```go
|
||
// HarvestNode represents a gatherable resource point in a room.
|
||
type HarvestNode struct {
|
||
ID string `json:"id"`
|
||
ZoneID string `json:"zone_id"`
|
||
RoomID string `json:"room_id"`
|
||
ResourceID string `json:"resource_id"`
|
||
Action string `json:"action"` // forage, mine, scavenge, essence, commune, fish
|
||
DC int `json:"dc"`
|
||
MaxCharges int `json:"max_charges"` // uses before depletion
|
||
CurrentCharges int `json:"current_charges"`
|
||
RequiresKill string `json:"requires_kill"` // monster ID, empty if no kill required
|
||
Conditional string `json:"conditional"` // zone event ID that enables/disables node
|
||
}
|
||
|
||
// ZoneResource defines a harvestable material or item for a zone.
|
||
type ZoneResource struct {
|
||
ID string `json:"id"`
|
||
Name string `json:"name"`
|
||
ZoneID string `json:"zone_id"`
|
||
Rarity string `json:"rarity"` // common, uncommon, rare, very_rare, legendary
|
||
Type string `json:"type"` // material, item, fish, quest
|
||
SellValue int `json:"sell_value"` // coins at Thom Krooke base price
|
||
CraftingTags []string `json:"crafting_tags"` // what this can be used to make
|
||
FlavorRef string `json:"flavor_ref"` // key into zone resource flavor text
|
||
}
|
||
|
||
// HarvestAttempt is the result of a single harvest action.
|
||
type HarvestAttempt struct {
|
||
PlayerID string `json:"player_id"`
|
||
ExpeditionID string `json:"expedition_id"`
|
||
NodeID string `json:"node_id"`
|
||
Action string `json:"action"`
|
||
RollResult int `json:"roll_result"`
|
||
DC int `json:"dc"`
|
||
Outcome string `json:"outcome"` // nothing, common, standard, rich
|
||
Yield []string `json:"yield"` // resource IDs yielded
|
||
Interrupted bool `json:"interrupted"` // combat interrupt triggered
|
||
Timestamp time.Time `json:"timestamp"`
|
||
}
|
||
|
||
// CombatEvent is a combat occurrence within an expedition.
|
||
type CombatEvent struct {
|
||
ID string `json:"id"`
|
||
ExpeditionID string `json:"expedition_id"`
|
||
Type string `json:"type"` // room, harvest_interrupt, night_ambush, patrol
|
||
EnemyIDs []string `json:"enemy_ids"`
|
||
SurpriseRound bool `json:"surprise_round"`
|
||
Outcome string `json:"outcome"` // victory, defeat, flee
|
||
LootDrops []string `json:"loot_drops"` // item IDs
|
||
XPAwarded int `json:"xp_awarded"`
|
||
ThreatDelta int `json:"threat_delta"`
|
||
FlavorLine string `json:"flavor_line"`
|
||
Timestamp time.Time `json:"timestamp"`
|
||
}
|
||
|
||
// ZoneLootEntry defines a loot drop entry tied to a zone and CR range.
|
||
type ZoneLootEntry struct {
|
||
ZoneID string `json:"zone_id"`
|
||
CRMin float32 `json:"cr_min"`
|
||
CRMax float32 `json:"cr_max"`
|
||
ItemID string `json:"item_id"`
|
||
Weight float32 `json:"weight"`
|
||
FlavorKey string `json:"flavor_key"` // zone-specific item description key
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Thom Krooke — Resource Economy
|
||
|
||
Resources harvested during expeditions feed directly into Thom Krooke's economy. New shop mechanics:
|
||
|
||
### 8.1 Selling Resources
|
||
|
||
Post-expedition, all harvested materials can be sold via `!sell` at Thom Krooke's shop. Base prices:
|
||
|
||
| Rarity | Base Sell Price |
|
||
|---|---|
|
||
| Common | 5–15 coins |
|
||
| Uncommon | 25–60 coins |
|
||
| Rare | 100–300 coins |
|
||
| Very Rare | 500–1,200 coins |
|
||
| Legendary | 3,000–10,000 coins |
|
||
|
||
CHA Persuasion check (DC 15) applies the 10% discount from the main design doc to **purchases**, not sales. A separate CHA check (DC 17) can increase sell price by 15%.
|
||
|
||
### 8.2 Crafting at Thom Krooke
|
||
|
||
Certain resource combinations can be brought to Thom Krooke for crafting. Recipes are discovered via `!lore` checks or NPC interactions. Examples:
|
||
|
||
| Recipe | Materials | Output |
|
||
|---|---|---|
|
||
| Potion of Fire Resistance | Salamander Oil + Fire Essence × 2 | Potion (resist fire 1 combat) |
|
||
| Mithral Dagger | Mithral Trace + Scrap Iron × 3 | Mithral Dagger (light armor prof bypass) |
|
||
| Undead Ward Charm | Silver Grave Dust + Wraith Core | Amulet: +2 to saves vs. undead |
|
||
| Shadow Step Cloak | Ghost Silk × 3 + Shadow Essence | Light armor: Stealth advantage 1/day |
|
||
| Drow Poison Blade | Drow Poison + any blade weapon | Weapon: sleep-on-crit for 3 combats |
|
||
|
||
Full crafting recipe list is a separate document (deferred to Phase E6).
|
||
|
||
---
|
||
|
||
## 9. Command Surface Changes
|
||
|
||
### Deprecated Commands (removed)
|
||
|
||
| Command | Reason |
|
||
|---|---|
|
||
| `!adventure` | Replaced by `!expedition start` + `!advance` |
|
||
| `!harvest` | Replaced by `!forage`, `!mine`, `!scavenge`, `!essence`, `!commune` |
|
||
| `!dungeon` | Replaced by `!expedition start` |
|
||
|
||
### New Commands
|
||
|
||
| Command | Description |
|
||
|---|---|
|
||
| `!forage` | Forage in current cleared room |
|
||
| `!mine` | Mine/salvage in current cleared room |
|
||
| `!scavenge` | Scavenge in current cleared room |
|
||
| `!essence` | Harvest magical essence in current cleared room |
|
||
| `!commune` | Commune with spiritual energy (Cleric primary) |
|
||
| `!fish` | Fish in current room (water zones only) |
|
||
| `!inventory` | Full inventory including harvested materials |
|
||
| `!sell [item]` | Sell item or material to Thom Krooke (post-expedition) |
|
||
| `!craft` | Open crafting menu at Thom Krooke |
|
||
| `!resources` | List harvestable nodes in current room |
|
||
|
||
### Unchanged Commands
|
||
|
||
All expedition navigation commands (`!advance`, `!retreat`, `!search`, `!camp`, `!rest`, `!extract`) are unchanged. All combat commands unchanged. `!fish` syntax unchanged.
|
||
|
||
---
|
||
|
||
## 10. Implementation Phases — Resource & Combat Integration
|
||
|
||
### Phase R1 — System Deprecation & Migration
|
||
- [ ] Archive existing `DungeonRun` records
|
||
- [ ] Remove `!adventure`, `!harvest`, `!dungeon` command handlers
|
||
- [ ] Migrate existing player resource inventories to new schema
|
||
- [ ] Update Thom Krooke shop to accept new resource types
|
||
|
||
### Phase R2 — Harvest Node System
|
||
- [ ] `HarvestNode`, `ZoneResource`, `HarvestAttempt` structs and DB schema
|
||
- [ ] Harvest action handlers (`!forage`, `!mine`, `!scavenge`, `!essence`, `!commune`)
|
||
- [ ] Node depletion and long-rest replenishment
|
||
- [ ] `!resources` command (list active nodes in room)
|
||
|
||
### Phase R3 — Combat Event Integration
|
||
- [ ] `CombatEvent` struct and DB schema
|
||
- [ ] Harvest Interrupt roll system
|
||
- [ ] Patrol Encounter system (Threat Clock gated)
|
||
- [ ] Night Ambush integration with wandering monster system
|
||
- [ ] Zone-contextual combat victory/defeat flavor
|
||
|
||
### Phase R4 — Zone Loot & Resource Tables
|
||
- [ ] `ZoneLootEntry` tables for all 10 zones
|
||
- [ ] Zone-contextual item flavor text (all items × all zones — see `twinbee_resource_flavor.go`)
|
||
- [ ] Fishing integration (zone-specific fish tables, expedition-only fish)
|
||
|
||
### Phase R5 — Economy Integration
|
||
- [ ] Resource sell system at Thom Krooke
|
||
- [ ] CHA sell-price check
|
||
- [ ] Crafting recipe system (basic recipes from Section 8.2)
|
||
- [ ] `!craft` command and recipe discovery via `!lore`
|
||
|
||
### Phase R6 — Polish & Balance
|
||
- [ ] Node count tuning per zone (balance supply vs. reward)
|
||
- [ ] Combat Interrupt roll tuning (not too frequent, not too rare)
|
||
- [ ] `twinbee_resource_flavor.go` full population
|
||
- [ ] Zone condition interactions (Heat Stack DC increase, Instability lockout, etc.)
|
||
|
||
---
|
||
|
||
*End of Resource & Combat Integration Document.*
|
||
*Deprecates standalone harvesting and dungeon run systems entirely.*
|
||
*Reference alongside all companion docs in Claude Code sessions.*
|