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>
29 KiB
GogoBee — Expedition Resource & Combat Integration
Companion to:
gogobee_expedition_system.md,gogobee_dungeon_zones.mdVersion: 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:
- Roll for drop tier (based on enemy CR)
- Roll on zone loot table for that tier
- 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
!fishuses 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
// 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
DungeonRunrecords - Remove
!adventure,!harvest,!dungeoncommand 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,HarvestAttemptstructs and DB schema- Harvest action handlers (
!forage,!mine,!scavenge,!essence,!commune) - Node depletion and long-rest replenishment
!resourcescommand (list active nodes in room)
Phase R3 — Combat Event Integration
CombatEventstruct 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
ZoneLootEntrytables 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)
!craftcommand 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.gofull 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.