package model import "time" // TownPausePersisted mirrors HeroMovement fields needed to resume resting, an in-town NPC tour, // or a mid-adventure excursion after reconnect or during offline catch-up. // Stored in heroes.town_pause (JSONB). type TownPausePersisted struct { RestUntil *time.Time `json:"restUntil,omitempty"` RestKind RestKind `json:"restKind,omitempty"` TownRestHealRemainder float64 `json:"townRestHealRemainder,omitempty"` RestHealRemainder float64 `json:"restHealRemainder,omitempty"` NPCQueue []int64 `json:"npcQueue,omitempty"` NextTownNPCRollAt *time.Time `json:"nextTownNPCRollAt,omitempty"` TownLeaveAt *time.Time `json:"townLeaveAt,omitempty"` TownVisitNPCName string `json:"townVisitNPCName,omitempty"` TownVisitNPCType string `json:"townVisitNPCType,omitempty"` TownVisitStartedAt *time.Time `json:"townVisitStartedAt,omitempty"` TownVisitLogsEmitted int `json:"townVisitLogsEmitted,omitempty"` // Walk-to-NPC: hero is mid-walk toward an NPC inside the town. NPCWalkTargetID int64 `json:"npcWalkTargetId,omitempty"` NPCWalkFromX float64 `json:"npcWalkFromX,omitempty"` NPCWalkFromY float64 `json:"npcWalkFromY,omitempty"` NPCWalkToX float64 `json:"npcWalkToX,omitempty"` NPCWalkToY float64 `json:"npcWalkToY,omitempty"` NPCWalkStart *time.Time `json:"npcWalkStart,omitempty"` NPCWalkArrive *time.Time `json:"npcWalkArrive,omitempty"` // Plaza: walk to town center after NPC tour, then wait/rest before leaving. TownPlazaHealActive bool `json:"townPlazaHealActive,omitempty"` CenterWalkFromX float64 `json:"centerWalkFromX,omitempty"` CenterWalkFromY float64 `json:"centerWalkFromY,omitempty"` CenterWalkToX float64 `json:"centerWalkToX,omitempty"` CenterWalkToY float64 `json:"centerWalkToY,omitempty"` CenterWalkStart *time.Time `json:"centerWalkStart,omitempty"` CenterWalkArrive *time.Time `json:"centerWalkArrive,omitempty"` // Excursion (mini-adventure) session persisted for reconnect / offline resume. Excursion *ExcursionPersisted `json:"excursion,omitempty"` }