fix(server): keep chest claims independent of quest difficulty

This commit is contained in:
2026-10-04 18:09:23 +08:00
parent aa5f0afaf7
commit 64454e71a3
4 changed files with 23 additions and 18 deletions
@@ -79,7 +79,7 @@ func TestFieldChestAtomicAwardRollback(t *testing.T) {
if err != nil {
t.Fatal(err)
}
opened, err := s.state.FieldRewardOpened(21, 0, 1001, "once")
opened, err := s.state.FieldRewardOpened(21, 1001, "once")
if err != nil || opened || s.wallet.Snapshot().FreeJewelry != 100 || len(s.inventory.All()) != 0 {
t.Fatalf("partial state after rollback opened=%v wallet=%+v err=%v", opened, s.wallet.Snapshot(), err)
}
@@ -129,7 +129,7 @@ func TestFieldChestAtomicAwardRollback(t *testing.T) {
if err != nil {
t.Fatal(err)
}
opened, err = s.state.FieldRewardOpened(21, 0, 1002, "once")
opened, err = s.state.FieldRewardOpened(21, 1002, "once")
if err != nil || opened || len(s.inventory.All()) != 0 {
t.Fatalf("inventory partially committed after rollback opened=%v items=%v err=%v", opened, s.inventory.All(), err)
}
@@ -170,6 +170,11 @@ func TestFieldChestDeltaAndPersistentRepeat(t *testing.T) {
if err != nil {
t.Fatal(err)
}
// Quest selection difficulty is independent of the pack's opened chests.
// Switching it must neither hide the chest nor create a second grant.
if err = s.state.SelectQuest(21, progress.QuestSelection{QuestID: 1, Difficulty: 2}); err != nil {
t.Fatal(err)
}
req = wire.AppendVarint(req, 1, 999)
_, res, _, err = s.handleFieldObjectReward(req)
if err != nil {