Migrate accessories to user data

- Add user_accessory as the per-user accessory inventory table.
- Migrate old accessory wear records to user-owned accessory ids, including legacy common_accessory_m lookups for old installs.
- Allocate default accessories for newly created users and update accessory reads to use user_accessory at runtime.
- Validate accessory ownership when wearing accessories and keep existing accessory-based responses working.

Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
2026-06-13 07:36:21 +08:00
parent 17336de1b7
commit cb0200ff29
11 changed files with 436 additions and 72 deletions
+4 -14
View File
@@ -325,17 +325,7 @@ func getAccessoryInfo(ss *session.Session, targetUserID, unitOwningUserID int) (
return nil, nil
}
accessoryData := struct {
AccessoryID int `xorm:"accessory_id"`
Exp int `xorm:"exp"`
}{}
has, err = ss.MainEng.Table("common_accessory_m").
Where("accessory_owning_user_id = ?", accessoryOwningID).
Cols("accessory_id,exp").
Get(&accessoryData)
if err != nil {
return nil, err
}
has, accessoryData := ss.GetAccessoryByAccessoryOwningUserID(accessoryOwningID)
if !has {
return nil, nil
}
@@ -345,9 +335,9 @@ func getAccessoryInfo(ss *session.Session, targetUserID, unitOwningUserID int) (
AccessoryID: accessoryData.AccessoryID,
Exp: accessoryData.Exp,
NextExp: 0,
Level: 8,
MaxLevel: 8,
RankUpCount: 4,
Level: accessoryData.MaxLevel,
MaxLevel: accessoryData.MaxLevel,
RankUpCount: accessoryData.MaxLevel - accessoryData.DefaultMaxLevel,
FavoriteFlag: true,
}, nil
}