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

@@ -63,11 +63,12 @@ func (p *AdventurePlugin) handleDnDSheetCmd(ctx MessageContext) error {
equip, _ := loadAdvEquipment(ctx.Sender)
treasures, _ := loadAdvTreasureBonuses(ctx.Sender)
meta, _ := loadPlayerMeta(ctx.Sender)
house, _ := loadHouseState(ctx.Sender)
return p.SendDM(ctx.Sender, renderDnDSheet(c, advChar, meta, equip, treasures))
return p.SendDM(ctx.Sender, renderDnDSheet(c, advChar, meta, house, equip, treasures))
}
func renderDnDSheet(c *DnDCharacter, adv *AdventureCharacter, meta *PlayerMeta, equip map[EquipmentSlot]*AdvEquipment, treasures []AdvTreasureBonus) string {
func renderDnDSheet(c *DnDCharacter, adv *AdventureCharacter, meta *PlayerMeta, house HouseState, equip map[EquipmentSlot]*AdvEquipment, treasures []AdvTreasureBonus) string {
ri, _ := raceInfo(c.Race)
ci, _ := classInfo(c.Class)
mods := c.Modifiers()
@@ -174,8 +175,8 @@ func renderDnDSheet(c *DnDCharacter, adv *AdventureCharacter, meta *PlayerMeta,
if adv.PetName != "" {
b.WriteString(fmt.Sprintf(" Pet: %s the %s (lv %d)\n", adv.PetName, adv.PetType, adv.PetLevel))
}
if adv.HouseTier > 0 {
b.WriteString(fmt.Sprintf(" Housing: tier %d\n", adv.HouseTier))
if house.Tier > 0 {
b.WriteString(fmt.Sprintf(" Housing: tier %d\n", house.Tier))
}
}