mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-16 00:52:40 +00:00
Adv 2.0 D&D Phase R R2: Harvest nodes & per-room registry
Per-zone resource registry (§3, all 10 zones) and full per-room harvest layer wired into expeditions: !forage / !mine / !scavenge / !essence / !commune / !resources. Auto-spawns a DungeonRun per region on !expedition start, swaps it on !region travel, retires on abandon/extract. Long rest at camp replenishes nodes across every room and region. Reuses existing flavor.Harvest* / RichYield / NodeDepleted / per-zone Harvest<Zone> pools. Also clears two pre-existing test failures introduced by the E6c flavor expansion (briefing substring list + combat-lift trial count). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -357,6 +357,24 @@ func abandonZoneRun(userID id.UserID) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// abandonZoneRunByID abandons a specific run regardless of its active
|
||||
// status. Idempotent — exits cleanly if the row is already terminal.
|
||||
// Used by the expedition layer to retire a region's run when the player
|
||||
// travels onward, since the user-keyed abandonZoneRun would refuse to
|
||||
// fire when the run is no longer "active" (e.g. boss defeated).
|
||||
func abandonZoneRunByID(runID string) error {
|
||||
if runID == "" {
|
||||
return nil
|
||||
}
|
||||
_, err := db.Get().Exec(`
|
||||
UPDATE dnd_zone_run
|
||||
SET abandoned = 1,
|
||||
completed_at = COALESCE(completed_at, CURRENT_TIMESTAMP),
|
||||
last_action_at = CURRENT_TIMESTAMP
|
||||
WHERE run_id = ?`, runID)
|
||||
return err
|
||||
}
|
||||
|
||||
// adjustGMMood clamps mood to [0, 100] and persists. Used by D1d when
|
||||
// nat-1/nat-20/zone-completion events fire. delta may be negative.
|
||||
func adjustGMMood(runID string, delta int) error {
|
||||
|
||||
Reference in New Issue
Block a user