mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2025-02-02 00:15:41 +00:00
优化Mys天赋请求策略,金卡数屏蔽旅行者,对鲸泽佬的极限角色文件增加支持并屏蔽排名
This commit is contained in:
parent
ce47f9d8e7
commit
c10fe06fea
@ -25,8 +25,8 @@ let Avatar = {
|
|||||||
avatar = { id: char.id, name: char.name, detail: false }
|
avatar = { id: char.id, name: char.name, detail: false }
|
||||||
} else {
|
} else {
|
||||||
let player = Player.create(e)
|
let player = Player.create(e)
|
||||||
await player.refreshMysDetail()
|
await player.refreshMysDetail(1)
|
||||||
await player.refreshTalent(char.id)
|
await player.refreshTalent(char.id, 1)
|
||||||
avatar = player.getAvatar(char.id)
|
avatar = player.getAvatar(char.id)
|
||||||
if (!avatar) {
|
if (!avatar) {
|
||||||
avatar = { id: char.id, name: char.name, detail: false }
|
avatar = { id: char.id, name: char.name, detail: false }
|
||||||
|
@ -29,7 +29,7 @@ app.reg({
|
|||||||
groupProfile: {
|
groupProfile: {
|
||||||
name: '群内最强',
|
name: '群内最强',
|
||||||
fn: groupRank,
|
fn: groupRank,
|
||||||
rule: /^#(群|群内)?(排名|排行)?(最强|最高|最高分|最牛|第一)+.+/
|
rule: /^#(群|群内)?(排名|排行)?(最强|最高|最高分|最牛|第一|极限)+.+/
|
||||||
},
|
},
|
||||||
|
|
||||||
resetRank: {
|
resetRank: {
|
||||||
|
@ -4,10 +4,6 @@ import { Data, Common, Format } from '../../components/index.js'
|
|||||||
import lodash from 'lodash'
|
import lodash from 'lodash'
|
||||||
|
|
||||||
export async function groupRank (e) {
|
export async function groupRank (e) {
|
||||||
let groupId = e.group_id
|
|
||||||
if (!groupId) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
const groupRank = Common.cfg('groupRank')
|
const groupRank = Common.cfg('groupRank')
|
||||||
let msg = e.original_msg || e.msg
|
let msg = e.original_msg || e.msg
|
||||||
let type = ''
|
let type = ''
|
||||||
@ -15,12 +11,15 @@ export async function groupRank (e) {
|
|||||||
type = 'list'
|
type = 'list'
|
||||||
} else if (/(最强|最高|最高分|最牛|第一)/.test(msg)) {
|
} else if (/(最强|最高|最高分|最牛|第一)/.test(msg)) {
|
||||||
type = 'detail'
|
type = 'detail'
|
||||||
|
} else if (/极限/.test(msg)) {
|
||||||
|
type = 'super'
|
||||||
}
|
}
|
||||||
if (!type) {
|
let groupId = e.group_id
|
||||||
|
if (!type || (!groupId && type !== 'super')) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
let mode = /(分|圣遗物|评分|ACE)/.test(msg) ? 'mark' : 'dmg'
|
let mode = /(分|圣遗物|评分|ACE)/.test(msg) ? 'mark' : 'dmg'
|
||||||
let name = msg.replace(/(#|最强|最高分|第一|最高|最牛|圣遗物|评分|群内|群|排名|排行|面板|面版|详情|榜)/g, '')
|
let name = msg.replace(/(#|最强|最高分|第一|极限|最高|最牛|圣遗物|评分|群内|群|排名|排行|面板|面版|详情|榜)/g, '')
|
||||||
let char = Character.get(name)
|
let char = Character.get(name)
|
||||||
if (!char) {
|
if (!char) {
|
||||||
// 名字不存在或不为列表模式,则返回false
|
// 名字不存在或不为列表模式,则返回false
|
||||||
@ -28,6 +27,17 @@ export async function groupRank (e) {
|
|||||||
return false
|
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)
|
let groupCfg = await ProfileRank.getGroupCfg(groupId)
|
||||||
if (!groupRank) {
|
if (!groupRank) {
|
||||||
e.reply('群面板排名功能已禁用,Bot主人可通过【#喵喵设置】启用...')
|
e.reply('群面板排名功能已禁用,Bot主人可通过【#喵喵设置】启用...')
|
||||||
|
@ -196,7 +196,11 @@ export default class AvatarData extends Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getDetail (keys = '') {
|
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 () {
|
getArtisDetail () {
|
||||||
|
@ -78,6 +78,9 @@ export default class Player extends Base {
|
|||||||
this._chars = data.chars
|
this._chars = data.chars
|
||||||
}
|
}
|
||||||
this.setAvatars(data.avatars || [])
|
this.setAvatars(data.avatars || [])
|
||||||
|
if (!data.avatars) {
|
||||||
|
this.save()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -201,6 +201,9 @@ export default class ProfileRank {
|
|||||||
if (!uid) {
|
if (!uid) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if (uid * 1 < 100000005) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
let rankLimit = Common.cfg('groupRankLimit') * 1 || 1
|
let rankLimit = Common.cfg('groupRankLimit') * 1 || 1
|
||||||
if (rankLimit === 1) {
|
if (rankLimit === 1) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import lodash from 'lodash'
|
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 { chestInfo } from '../../resources/meta/info/index.js'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
|
||||||
@ -170,7 +170,8 @@ const MysAvatar = {
|
|||||||
if (!avatar) {
|
if (!avatar) {
|
||||||
return true
|
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)
|
ret.push(avatar.id)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -199,7 +200,11 @@ const MysAvatar = {
|
|||||||
// 并发5,请求天赋数据
|
// 并发5,请求天赋数据
|
||||||
await Data.asyncPool(5, needReqIds, async (id) => {
|
await Data.asyncPool(5, needReqIds, async (id) => {
|
||||||
let avatar = player.getAvatar(id)
|
let avatar = player.getAvatar(id)
|
||||||
if (!avatar || failCount > 5) {
|
if (!avatar) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (failCount > 5) {
|
||||||
|
avatar.setTalent(false, 'original', true)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
let ret = await MysAvatar.refreshAvatarTalent(avatar, mys)
|
let ret = await MysAvatar.refreshAvatarTalent(avatar, mys)
|
||||||
@ -209,6 +214,7 @@ const MysAvatar = {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
player.save()
|
player.save()
|
||||||
|
return true
|
||||||
},
|
},
|
||||||
|
|
||||||
async refreshAvatarTalent (avatar, mys) {
|
async refreshAvatarTalent (avatar, mys) {
|
||||||
@ -286,8 +292,10 @@ const MysAvatar = {
|
|||||||
avatarCount++
|
avatarCount++
|
||||||
if (avatar.star === 5) {
|
if (avatar.star === 5) {
|
||||||
avatar5Count++
|
avatar5Count++
|
||||||
|
if (!avatar.char?.isTraveler) {
|
||||||
goldCount += (avatar.cons || 0) + 1
|
goldCount += (avatar.cons || 0) + 1
|
||||||
}
|
}
|
||||||
|
}
|
||||||
let w = avatar.weapon
|
let w = avatar.weapon
|
||||||
if (w && w.star === 5) {
|
if (w && w.star === 5) {
|
||||||
goldCount += w.affix * 1
|
goldCount += w.affix * 1
|
||||||
|
Loading…
Reference in New Issue
Block a user