From c10fe06fea07466768cb34a4670d674aa6357ead Mon Sep 17 00:00:00 2001 From: Kokomi <102026640+yoimiya-kokomi@users.noreply.github.com> Date: Sun, 19 Feb 2023 12:05:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96Mys=E5=A4=A9=E8=B5=8B?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E7=AD=96=E7=95=A5=EF=BC=8C=E9=87=91=E5=8D=A1?= =?UTF-8?q?=E6=95=B0=E5=B1=8F=E8=94=BD=E6=97=85=E8=A1=8C=E8=80=85=EF=BC=8C?= =?UTF-8?q?=E5=AF=B9=E9=B2=B8=E6=B3=BD=E4=BD=AC=E7=9A=84=E6=9E=81=E9=99=90?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=96=87=E4=BB=B6=E5=A2=9E=E5=8A=A0=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=B9=B6=E5=B1=8F=E8=94=BD=E6=8E=92=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/character/AvatarCard.js | 4 ++-- apps/profile.js | 2 +- apps/profile/ProfileRank.js | 22 ++++++++++++++++------ models/AvatarData.js | 6 +++++- models/Player.js | 3 +++ models/ProfileRank.js | 3 +++ models/player/MysAvatar.js | 16 ++++++++++++---- 7 files changed, 42 insertions(+), 14 deletions(-) diff --git a/apps/character/AvatarCard.js b/apps/character/AvatarCard.js index 40d013cc..122fedc6 100644 --- a/apps/character/AvatarCard.js +++ b/apps/character/AvatarCard.js @@ -25,8 +25,8 @@ let Avatar = { avatar = { id: char.id, name: char.name, detail: false } } else { let player = Player.create(e) - await player.refreshMysDetail() - await player.refreshTalent(char.id) + await player.refreshMysDetail(1) + await player.refreshTalent(char.id, 1) avatar = player.getAvatar(char.id) if (!avatar) { avatar = { id: char.id, name: char.name, detail: false } diff --git a/apps/profile.js b/apps/profile.js index a01c54fe..72fbd79b 100644 --- a/apps/profile.js +++ b/apps/profile.js @@ -29,7 +29,7 @@ app.reg({ groupProfile: { name: '群内最强', fn: groupRank, - rule: /^#(群|群内)?(排名|排行)?(最强|最高|最高分|最牛|第一)+.+/ + rule: /^#(群|群内)?(排名|排行)?(最强|最高|最高分|最牛|第一|极限)+.+/ }, resetRank: { diff --git a/apps/profile/ProfileRank.js b/apps/profile/ProfileRank.js index ef68338f..26ffcd53 100644 --- a/apps/profile/ProfileRank.js +++ b/apps/profile/ProfileRank.js @@ -4,10 +4,6 @@ import { Data, Common, Format } from '../../components/index.js' import lodash from 'lodash' export async function groupRank (e) { - let groupId = e.group_id - if (!groupId) { - return false - } const groupRank = Common.cfg('groupRank') let msg = e.original_msg || e.msg let type = '' @@ -15,12 +11,15 @@ export async function groupRank (e) { type = 'list' } else if (/(最强|最高|最高分|最牛|第一)/.test(msg)) { type = 'detail' + } else if (/极限/.test(msg)) { + type = 'super' } - if (!type) { + let groupId = e.group_id + if (!type || (!groupId && type !== 'super')) { return false } let mode = /(分|圣遗物|评分|ACE)/.test(msg) ? 'mark' : 'dmg' - let name = msg.replace(/(#|最强|最高分|第一|最高|最牛|圣遗物|评分|群内|群|排名|排行|面板|面版|详情|榜)/g, '') + let name = msg.replace(/(#|最强|最高分|第一|极限|最高|最牛|圣遗物|评分|群内|群|排名|排行|面板|面版|详情|榜)/g, '') let char = Character.get(name) if (!char) { // 名字不存在或不为列表模式,则返回false @@ -28,6 +27,17 @@ export async function groupRank (e) { return false } } + // 对鲸泽佬的极限角色文件增加支持 + if (type === 'super') { + let player = Player.create(100000000) + if (player.getProfile(char.id)) { + e.uid = 100000000 + return await renderProfile(e, char) + } else { + return true + } + } + // 正常群排名 let groupCfg = await ProfileRank.getGroupCfg(groupId) if (!groupRank) { e.reply('群面板排名功能已禁用,Bot主人可通过【#喵喵设置】启用...') diff --git a/models/AvatarData.js b/models/AvatarData.js index dab6b859..f468a270 100644 --- a/models/AvatarData.js +++ b/models/AvatarData.js @@ -196,7 +196,11 @@ export default class AvatarData extends Base { } getDetail (keys = '') { - return this.getData(keys || 'id,name,level,star,cons,fetter,elem,face,side,gacha,abbr,weapon,talent,artisSet') || {} + let imgs = this.char.getImgs(this.costume) + return { + ...(this.getData(keys || 'id,name,level,star,cons,fetter,elem,abbr,weapon,talent,artisSet') || {}), + ...Data.getData(imgs, 'face,qFace,side,gacha') + } } getArtisDetail () { diff --git a/models/Player.js b/models/Player.js index 0a785715..8f6097ec 100644 --- a/models/Player.js +++ b/models/Player.js @@ -78,6 +78,9 @@ export default class Player extends Base { this._chars = data.chars } this.setAvatars(data.avatars || []) + if (!data.avatars) { + this.save() + } } /** diff --git a/models/ProfileRank.js b/models/ProfileRank.js index 2208dcdd..2778eeec 100644 --- a/models/ProfileRank.js +++ b/models/ProfileRank.js @@ -201,6 +201,9 @@ export default class ProfileRank { if (!uid) { return false } + if (uid * 1 < 100000005) { + return false + } try { let rankLimit = Common.cfg('groupRankLimit') * 1 || 1 if (rankLimit === 1) { diff --git a/models/player/MysAvatar.js b/models/player/MysAvatar.js index d9d9383f..a8190328 100644 --- a/models/player/MysAvatar.js +++ b/models/player/MysAvatar.js @@ -1,5 +1,5 @@ import lodash from 'lodash' -import { Common, Data } from '../../components/index.js' +import { Data } from '../../components/index.js' import { chestInfo } from '../../resources/meta/info/index.js' import moment from 'moment' @@ -170,7 +170,8 @@ const MysAvatar = { if (!avatar) { return true } - if (!avatar.hasTalent || MysAvatar.needRefresh(avatar._talent, force, { 0: 60 * 24, 1: 60, 2: 0 })) { + let needMap = { 0: avatar.hasTalent ? 60 * 48 : 60 * 3, 1: 60, 2: 0 } + if (MysAvatar.needRefresh(avatar._talent, force, needMap)) { ret.push(avatar.id) } }) @@ -199,7 +200,11 @@ const MysAvatar = { // 并发5,请求天赋数据 await Data.asyncPool(5, needReqIds, async (id) => { let avatar = player.getAvatar(id) - if (!avatar || failCount > 5) { + if (!avatar) { + return false + } + if (failCount > 5) { + avatar.setTalent(false, 'original', true) return false } let ret = await MysAvatar.refreshAvatarTalent(avatar, mys) @@ -209,6 +214,7 @@ const MysAvatar = { }) } player.save() + return true }, async refreshAvatarTalent (avatar, mys) { @@ -286,7 +292,9 @@ const MysAvatar = { avatarCount++ if (avatar.star === 5) { avatar5Count++ - goldCount += (avatar.cons || 0) + 1 + if (!avatar.char?.isTraveler) { + goldCount += (avatar.cons || 0) + 1 + } } let w = avatar.weapon if (w && w.star === 5) {