WIP: DM window tiers, expedition activity dedup, harvest gating

- Split advDMResponseWindow into a 12h low-priority tier for passive
  overnight-tolerant prompts (pet arrival/type/name); bump pet arrival
  chance 15% -> 30%.
- Skip zone_run activity lines for runs that belong to an active
  expedition — the expedition rollup is the source of truth.
- Loosen currentRoomCleared: Entry/Exploration/Trap allow harvest
  unconditionally (risk is the combat-interrupt roll); Elite/Boss stay
  gated on RoomsCleared.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-05-13 22:53:58 -07:00
parent 4af110cc20
commit 0ca17628d4
5 changed files with 79 additions and 16 deletions

View File

@@ -70,7 +70,13 @@ func (p *AdventurePlugin) advUserLock(userID id.UserID) *sync.Mutex {
return val.(*sync.Mutex)
}
// advDMResponseWindow is the default window for active state-holding
// prompts (shop/blacksmith/hospital/masterwork/treasure confirms).
// Passive overnight-tolerant prompts (pet arrival, flavor DMs) use
// advDMResponseWindowLow so a player who gets DM'd at 1am can still
// reply when they wake up.
const advDMResponseWindow = 3 * time.Hour
const advDMResponseWindowLow = 12 * time.Hour
const advTreasureUndoWindow = 10 * time.Minute
// advTreasureUndoToken tracks a recent auto-swap so the player can undo it