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

@@ -229,19 +229,40 @@ func TestPickAvailableNode_SkipsRequiresKill(t *testing.T) {
func TestCurrentRoomCleared_EntryAutoPasses(t *testing.T) {
run := &DungeonRun{
CurrentRoom: 0,
RoomSeq: []RoomType{RoomEntry, RoomExploration, RoomBoss},
RoomSeq: []RoomType{RoomEntry, RoomExploration, RoomTrap, RoomElite, RoomBoss},
RoomsCleared: []int{},
}
if !currentRoomCleared(run) {
t.Error("entry room should auto-clear")
}
// Exploration always allowed — interrupt roll handles risk.
run.CurrentRoom = 1
if currentRoomCleared(run) {
t.Error("non-cleared exploration room should not be cleared")
}
run.RoomsCleared = []int{1}
if !currentRoomCleared(run) {
t.Error("room in RoomsCleared should report cleared")
t.Error("exploration room should always allow harvest")
}
// Trap always allowed.
run.CurrentRoom = 2
if !currentRoomCleared(run) {
t.Error("trap room should always allow harvest")
}
// Elite gated until in RoomsCleared.
run.CurrentRoom = 3
if currentRoomCleared(run) {
t.Error("uncleared elite room should block harvest")
}
run.RoomsCleared = []int{3}
if !currentRoomCleared(run) {
t.Error("elite room in RoomsCleared should report cleared")
}
// Boss gated until in RoomsCleared.
run.CurrentRoom = 4
run.RoomsCleared = []int{3}
if currentRoomCleared(run) {
t.Error("uncleared boss room should block harvest")
}
run.RoomsCleared = []int{3, 4}
if !currentRoomCleared(run) {
t.Error("boss room in RoomsCleared should report cleared")
}
}