feat(server): persist story quest difficulty and configurable starting chapter

This commit is contained in:
2026-10-04 16:02:33 +08:00
parent 4e5c08a8c7
commit 78750f2e12
34 changed files with 1859 additions and 148 deletions
+26
View File
@@ -0,0 +1,26 @@
package deck
func (s *Store) CurrentFieldDeck() []FieldEntry {
s.mu.RLock()
defer s.mu.RUnlock()
return append([]FieldEntry(nil), s.state.FieldDeck...)
}
// SetStoryParty stores the authored active quest formation using the same
// character ownership checks as DeckSave. Empty formation keeps player choice.
func (s *Store) SetStoryParty(entries []DeckEntry) error {
if len(entries) == 0 {
return nil
}
if err := validDeck(entries); err != nil {
return err
}
s.mu.Lock()
defer s.mu.Unlock()
if err := s.validateOwnedDeckLocked(entries); err != nil {
return err
}
next := clone(s.state)
next.Deck = append([]DeckEntry(nil), entries...)
return s.commit(next)
}