Miao-Yunzai/model/roleBag.ts

114 lines
2.3 KiB
TypeScript

import base from './base.js'
import { MysInfo, gsCfg } from 'yunzai/mys'
import lodash from 'lodash'
export default class RoleBag extends base {
constructor(e) {
super(e)
this.model = 'roleBag'
}
static async get(e) {
let roleBag = new RoleBag(e)
return await roleBag.getData()
}
/** #武器 */
async getData(e) {
let res = await MysInfo.get(this.e, 'character')
if (!res || res.retcode !== 0) return false
let avatars = res.data.avatars
if (avatars.length <= 0) {
return true
}
/** 截图数据 */
let data = {
...this.screenData,
saveId: this.e.uid,
uid: this.e.uid,
...this.dealData(avatars)
}
return data
}
dealData(avatars) {
let type = 'all'
if (avatars.length > 8) {
if (/(.*)(四星|4星)(.*)/.test(this.e.msg)) {
type = 4
}
if (/(.*)(五星|5星)(.*)/.test(this.e.msg)) {
type = 5
}
}
let costumes = gsCfg.getdefSet('role', 'other').costumes
let sortName = gsCfg.getdefSet('role', 'other').sortName
let list = []
for (let val of avatars) {
let rarity = val.rarity
if (val.rarity > 5) {
rarity = 5
}
if (type != 'all' && rarity != type) {
continue
}
val.sort =
rarity * 100000 +
val.actived_constellation_num * 10000 +
val.level * 100 +
(val.id - 10000000)
// 增加神里排序
if (val.id == 10000002) {
val.sort += 50
}
if (val.rarity > 5) {
val.sort = val.sort - (val.id - 10000000)
}
val.sortLevel = val.level
val.weapon.showName = sortName[val.weapon.name] ?? val.weapon.name
val.name = gsCfg.roleIdToName(val.id)
if (val.id == 10000005 || val.id == 10000007) {
val.sort = 0
}
val.costumesLogo = ''
if (val.costumes && val.costumes.length >= 1) {
for (let v of val.costumes) {
if (costumes.includes(v.name)) {
val.costumesLogo = 2
break
}
}
}
list.push(val)
}
list = lodash
.chain(list)
.orderBy(['sortLevel'], ['desc'])
.orderBy(['sort'], ['desc'])
.value()
let num = list.length
return { list, num }
}
}