Adv 2.0 L4e reader flip (read-only sites): house state via loadHouseState

dnd_rest long-rest eligibility, dnd_sheet housing display, and
petShouldArrive / mistyHousingHint now source house state from
player_meta via loadHouseState(userID) instead of *AdventureCharacter.
petShouldArrive, mistyHousingHint, and renderDnDSheet gained a
HouseState parameter; scheduler and Misty NPC callers load it.
Reader flip inside adventure_housing.go itself stays deferred — its
mutation paths bundle with cutting AdvCharacter writes post-soak.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-05-09 10:42:59 -07:00
parent c719b30fd7
commit 0004a2e35c
8 changed files with 42 additions and 32 deletions

View File

@@ -126,8 +126,11 @@ func (p *AdventurePlugin) handleDnDLongRest(ctx MessageContext) error {
}
}
// Eligibility: housing OR pay inn fee.
hasHousing := advChar.HouseTier > 0
// Eligibility: housing OR pay inn fee. Housing read flips to
// player_meta via loadHouseState (L4e reader flip); falls back to
// adventure_characters during the soak window.
house, _ := loadHouseState(ctx.Sender)
hasHousing := house.Tier > 0
innPaid := false
if !hasHousing {
if p.euro == nil || !p.euro.Debit(ctx.Sender, float64(dndInnCost), "dnd_inn_long_rest") {