mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-16 08:52:42 +00:00
Pets: fire 25% morning event from expedition briefing + fix defense-buff leak
Recovers the genuinely-missing half of ade0335 (orphaned on the unmerged phase-H-harvest-charges branch).3ed2e1dredid pet *arrival* via the emergence seam and explicitly deferred the morning event; this closes that gap. - deliverBriefing now rolls the 25% morning pet event (petMorningEvent, already present but only wired into the overworld DM that underground players never see) and prepends it to the briefing body, granting the one-day PetMorningDefense buff. - Add resetAllPetMorningDefense + wire it into midnightReset. The buff was leaking permanently even on HEAD's existing overworld path — it was set on the 25% roll but never cleared. Resets the pet_flags_json key in place. Deliberately omits ade0335's ArrivalPending machinery: arrival is now the emergence seam's job (3ed2e1d+978dc5e+513cf32), so queuing arrival from the briefing would double-roll it.
This commit is contained in:
@@ -300,6 +300,22 @@ func (p *AdventurePlugin) deliverBriefing(e *Expedition, now time.Time) error {
|
||||
}
|
||||
|
||||
if uid := id.UserID(e.UserID); uid != "" {
|
||||
// The legacy overworld morning DM is skipped while underground, so
|
||||
// its 25% morning pet event fires here instead, granting the one-day
|
||||
// defense buff (reset at midnight via resetAllPetMorningDefense).
|
||||
// Pet *arrival* is handled separately on the emergence seam below —
|
||||
// not queued here — so we only roll the morning event.
|
||||
if pet, perr := loadPetState(uid); perr == nil {
|
||||
if petEvent := petMorningEvent(pet); petEvent != "" {
|
||||
if char, cerr := loadAdvCharacter(uid); cerr == nil {
|
||||
char.PetMorningDefense = true
|
||||
if serr := saveAdvCharacter(char); serr != nil {
|
||||
slog.Warn("expedition: save pet morning defense", "user", uid, "err", serr)
|
||||
}
|
||||
}
|
||||
body = fmt.Sprintf("🐾 *%s*\n\n%s", petEvent, body)
|
||||
}
|
||||
}
|
||||
if err := p.SendDM(uid, body); err != nil {
|
||||
slog.Warn("expedition: send briefing DM", "user", uid, "err", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user