mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2024-11-22 06:58:24 +00:00
Merge branch 'master' of gitee.com:yoimiya-kokomi/miao-plugin
This commit is contained in:
commit
cf4451c50a
104
README.md
104
README.md
@ -2,25 +2,15 @@
|
|||||||
|
|
||||||
Miao-Plugin是一个Yunzai-Bot的升级插件,提供包括角色查询等升级功能。
|
Miao-Plugin是一个Yunzai-Bot的升级插件,提供包括角色查询等升级功能。
|
||||||
|
|
||||||
一些实验性的新功能因功能可能不稳定,或者Yunzai-Bot存在类似功能,会在Miao-Plugin以插件形式提供,可按需选用。
|
|
||||||
|
|
||||||
部分非重复功能会在逐步稳定之后会合并入Yunzai-Bot。
|
|
||||||
|
|
||||||
具体功能可在安装插件后 通过 #喵喵帮助 进行查看。如需进行设置可通过 #喵喵设置 命令进行管理。
|
具体功能可在安装插件后 通过 #喵喵帮助 进行查看。如需进行设置可通过 #喵喵设置 命令进行管理。
|
||||||
|
|
||||||
## 使用说明
|
---
|
||||||
|
|
||||||
Miao-Plugin需要最新版本的Yunzai-Bot,请确认Yunzai-Bot已升级至最新版
|
# 安装与更新
|
||||||
|
|
||||||
## 关于面板查询
|
请将miao-plugin放置在Yunzai-Bot的plugins目录下,重启Yunzai-Bot后即可使用。
|
||||||
|
|
||||||
`#面板查询` 及附带的伤害计算、圣遗物列表等功能依赖于面板查询API,此API接口目前为内部小范围使用,需具备token才可调用。
|
推荐使用git进行安装,以方便后续升级。在Yunzai根目录夹打开终端,运行
|
||||||
|
|
||||||
## 安装与更新
|
|
||||||
|
|
||||||
直接将miao-plugin放置在Yunzai-Bot的plugins目录下,重启Yunzai-Bot后即可使用。
|
|
||||||
|
|
||||||
推荐使用git进行安装,以方便后续升级。在BOT根目录夹打开终端,运行
|
|
||||||
|
|
||||||
```
|
```
|
||||||
// 使用gitee
|
// 使用gitee
|
||||||
@ -34,20 +24,88 @@ git clone https://github.com/yoimiya-kokomi/miao-plugin.git ./plugins/miao-plugi
|
|||||||
|
|
||||||
如果是手工下载的zip压缩包,请将解压后的miao-plugin文件夹(请删除压缩自带的-master后缀)放置在Yunzai目录下的plugins文件夹内。
|
如果是手工下载的zip压缩包,请将解压后的miao-plugin文件夹(请删除压缩自带的-master后缀)放置在Yunzai目录下的plugins文件夹内。
|
||||||
|
|
||||||
|
## Yunzai版本与支持
|
||||||
|
|
||||||
|
### V2-Yunzai
|
||||||
|
|
||||||
|
在V3整体稳定前,推荐使用V2版Yunzai安装miao-plugin。 由于官方Yunzai已经停止更新,可使用喵喵版V2-Yunzai
|
||||||
|
|
||||||
|
在Yunzai根目录夹打开终端,运行
|
||||||
|
|
||||||
|
```
|
||||||
|
// 使用gitee
|
||||||
|
git remote set-url origin https://gitee.com/yoimiya-kokomi/Yunzai-Bot
|
||||||
|
|
||||||
|
// 使用github
|
||||||
|
git remote set-url origin https://github.com/yoimiya-kokomi/Yunzai-Bot
|
||||||
|
```
|
||||||
|
|
||||||
|
即可切换Yunzai远程仓库地址,运行git pull拉取更新即可使用喵喵版V2-Yunzai(版本>2.2.0)
|
||||||
|
|
||||||
|
V2-Yunzai在较长一段时间内会维持更新,进行一些Bugfix及更新卡池等信息
|
||||||
|
|
||||||
|
### V3-Yunzai
|
||||||
|
|
||||||
|
目前V3-Yunzai正在重构中,具体可参见 [Yunzai-V3](https://github.com/Le-niao/Yunzai-Bot) ,miao-plugin已经初步支持V3版本Yunzai,可直接使用。
|
||||||
|
|
||||||
|
由于miao-plugin对V3-Yunzai正在适配中,部分功能可能尚未适配或工作不正常,如遇问题可通过issue提报
|
||||||
|
|
||||||
|
[issue#13](https://github.com/yoimiya-kokomi/miao-plugin/issues/74) : 如启动时报 Cannot find package 'image-size'
|
||||||
|
的错误,直接在yunzai根目录下`npm install image-size --save`即可
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 功能说明
|
||||||
|
|
||||||
|
## #雷神面板
|
||||||
|
|
||||||
|
### #更新面板
|
||||||
|
|
||||||
|
`#更新面板` 依赖于面板查询API,面板服务由 http://enka.shinshin.moe/ 提供
|
||||||
|
|
||||||
|
查询功能经Enka官方授权([issue#63](https://github.com/yoimiya-kokomi/miao-plugin/issues/63#issuecomment-1199348789)),感谢Enka提供的面板查询服务
|
||||||
|
|
||||||
|
如果可以的话,也请在Patreon上支持Enka,或提供闲置的原神账户,具体可在[Enka官网](http://enka.shinshin.moe/) Discord联系
|
||||||
|
|
||||||
|
[issue#63](https://github.com/yoimiya-kokomi/miao-plugin/issues/63#issuecomment-1199734496) :
|
||||||
|
国内网络如Enka服务访问不稳定,可尝试更换 [@MiniGrayGay](https://github.com/MiniGrayGay) 大佬提供的中转服务 复制`config/profile_default.js`
|
||||||
|
为`config/profile.js`,修改其中enkaApi的url配置,配置完成后重启Bot即可生效
|
||||||
|
|
||||||
|
* 【链接1】:https://enka.microgg.cn/
|
||||||
|
* 【链接2】:https://enka.minigg.cn/
|
||||||
|
|
||||||
|
### #雷神伤害
|
||||||
|
|
||||||
|
喵喵面板附带的伤害计算功能由喵喵本地计算。如计算有偏差 #雷神伤害 查看伤害加成信息,如确认伤害计算有误可提供伤害录屏截图及uid进行反馈
|
||||||
|
|
||||||
|
### #雷神圣遗物
|
||||||
|
|
||||||
|
圣遗物评分为喵喵版评分规则
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
其余文档咕咕咕中
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# 免责声明
|
# 免责声明
|
||||||
|
|
||||||
1. 功能仅限内部交流与小范围使用,请勿将Yunzai-Bot及Miao-Plugin用于任何以盈利为目的的场景
|
1. 功能仅限内部交流与小范围使用,请勿将Yunzai-Bot及Miao-Plugin用于以盈利为目的的场景
|
||||||
3. 图片与其他素材均来自于网络,仅供交流学习使用,如有侵权请联系,会立即删除
|
3. 图片与其他素材均来自于网络,仅供交流学习使用,如有侵权请联系,会立即删除
|
||||||
|
|
||||||
# 其他
|
# 其他
|
||||||
|
|
||||||
* [Yunzai-Bot](https://github.com/Le-niao/Yunzai-Bot)
|
* [官方Yunzai-Bot-V3](https://github.com/Le-niao/Yunzai-Bot) : [Gitee](https://gitee.com/Le-niao/Yunzai-Bot)
|
||||||
* [Miao-Plugin](https://github.com/yoimiya-kokomi/miao-plugin) ( [gitee](https://github.com/yoimiya-kokomi/miao-plugin)
|
/ [Github](https://github.com/Le-niao/Yunzai-Bot)
|
||||||
/ [github](https://github.com/yoimiya-kokomi/miao-plugin))
|
* [喵喵Yunzai-Bot-V2](https://github.com/Le-niao/Yunzai-Bot) : [Gitee](https://gitee.com/yoimiya-kokomi/Yunzai-Bot)
|
||||||
* [Snap.Genshin](https://www.snapgenshin.com/home/) : 感谢 DGP Studio 开发的 [胡桃API](https://github.com/DGP-Studio/Snap.HutaoAPI)
|
/ [Github](https://github.com/yoimiya-kokomi/Yunzai-Bot)
|
||||||
|
* [喵喵插件 Miao-Plugin](https://github.com/yoimiya-kokomi/miao-plugin) : [Gitee](https://gitee.com/yoimiya-kokomi/miao-plugin)
|
||||||
|
/ [Github](https://github.com/yoimiya-kokomi/miao-plugin)
|
||||||
* Yunzai-Bot 官方QQ群:213938015
|
* [Enka](https://enka.network/): 感谢Enka提供的面板服务
|
||||||
* 喵喵Miao-Plugin QQ群:607710456 (暂时停止新加入)
|
* [Snap.Genshin](https://www.snapgenshin.com/home/) : 感谢 DGP Studio
|
||||||
|
开发的 [胡桃API](https://github.com/DGP-Studio/Snap.HutaoAPI)
|
||||||
|
* QQ群(暂时停止新加入,请见谅)
|
||||||
|
* Yunzai-Bot 官方QQ群:213938015
|
||||||
|
* 喵喵Miao-Plugin QQ群:607710456
|
||||||
* [爱发电](https://afdian.net/@kokomi) 欢迎老板打赏,喵~
|
* [爱发电](https://afdian.net/@kokomi) 欢迎老板打赏,喵~
|
||||||
|
|
||||||
|
@ -17,8 +17,12 @@ export class miao extends plugin {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
accept () {
|
||||||
|
this.e.original_msg = this.e.msg
|
||||||
|
}
|
||||||
|
|
||||||
async dispatch (e) {
|
async dispatch (e) {
|
||||||
let msg = e.raw_message
|
let msg = e.original_msg
|
||||||
e.checkAuth = async function (cfg) {
|
e.checkAuth = async function (cfg) {
|
||||||
return await checkAuth(e, cfg)
|
return await checkAuth(e, cfg)
|
||||||
}
|
}
|
||||||
@ -33,7 +37,6 @@ export class miao extends plugin {
|
|||||||
render
|
render
|
||||||
})
|
})
|
||||||
if (ret === true) {
|
if (ret === true) {
|
||||||
console.log('ret true')
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ export { wife, pokeWife, wifeReg } from './character/avatar-wife.js'
|
|||||||
|
|
||||||
// 查看当前角色
|
// 查看当前角色
|
||||||
export async function character (e, { render }) {
|
export async function character (e, { render }) {
|
||||||
let msg = isV3 ? e.raw_message : e.msg
|
let msg = e.original_msg || e.msg
|
||||||
if (!msg) {
|
if (!msg) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ async function renderCard (e, avatar, render, renderType = 'card') {
|
|||||||
custom: char.isCustom,
|
custom: char.isCustom,
|
||||||
...getCharacterData(avatar),
|
...getCharacterData(avatar),
|
||||||
ds: char.getData('name,id,title,desc')
|
ds: char.getData('name,id,title,desc')
|
||||||
}, { e, render, scale: 1.6 })
|
}, { e, render, scale: 1.6, retMsgId: true })
|
||||||
if (msgRes && msgRes.message_id) {
|
if (msgRes && msgRes.message_id) {
|
||||||
// 如果消息发送成功,就将message_id和图片路径存起来,1小时过期
|
// 如果消息发送成功,就将message_id和图片路径存起来,1小时过期
|
||||||
await redis.set(`miao:original-picture:${msgRes.message_id}`, bg.img, { EX: 3600 })
|
await redis.set(`miao:original-picture:${msgRes.message_id}`, bg.img, { EX: 3600 })
|
||||||
|
@ -66,8 +66,8 @@ export async function wife (e, { render, User }) {
|
|||||||
})
|
})
|
||||||
if (!targetCfg && !e.isPoke) return true
|
if (!targetCfg && !e.isPoke) return true
|
||||||
|
|
||||||
let avatarList = [];
|
let avatarList = []
|
||||||
let avatar = {};
|
let avatar = {}
|
||||||
let wifeList = []
|
let wifeList = []
|
||||||
|
|
||||||
let MysApi = await e.getMysApi({
|
let MysApi = await e.getMysApi({
|
||||||
@ -165,7 +165,6 @@ export async function wife (e, { render, User }) {
|
|||||||
await selfUser.setCfg(`wife.${targetCfg.key}`, addRet)
|
await selfUser.setCfg(`wife.${targetCfg.key}`, addRet)
|
||||||
e.reply(`${targetCfg.keyword[0]}已经设置:${addRet.join(',')}`)
|
e.reply(`${targetCfg.keyword[0]}已经设置:${addRet.join(',')}`)
|
||||||
return true
|
return true
|
||||||
break
|
|
||||||
case '列表':
|
case '列表':
|
||||||
case '是':
|
case '是':
|
||||||
case '是谁':
|
case '是谁':
|
||||||
|
@ -1,142 +1,140 @@
|
|||||||
import fs from "fs";
|
import fs from 'fs'
|
||||||
import { promisify } from "util";
|
import { promisify } from 'util'
|
||||||
import { pipeline } from "stream";
|
import { pipeline } from 'stream'
|
||||||
import { segment } from "oicq";
|
import { segment } from 'oicq'
|
||||||
import MD5 from "md5";
|
import MD5 from 'md5'
|
||||||
import fetch from "node-fetch";
|
import fetch from 'node-fetch'
|
||||||
import lodash from "lodash";
|
import lodash from 'lodash'
|
||||||
import Data from "../../components/Data.js";
|
import Data from '../../components/Data.js'
|
||||||
import { Character } from "../../components/models.js";
|
import { Character } from '../../components/models.js'
|
||||||
|
|
||||||
|
const resPath = process.cwd() + '/plugins/miao-plugin/resources/'
|
||||||
const _res_path = process.cwd() + "/plugins/miao-plugin/resources/";
|
let regex = /^#?\s*(?:喵喵)?(?:上传|添加)(.+)(?:照片|写真|图片|图像)\s*$/
|
||||||
let regex = /^#?\s*(?:喵喵)?(?:上传|添加)(.+)(?:照片|写真|图片|图像)\s*$/;
|
|
||||||
|
|
||||||
export const rule = {
|
export const rule = {
|
||||||
uploadCharacterImage: {
|
uploadCharacterImage: {
|
||||||
hashMark: true,
|
hashMark: true,
|
||||||
reg: "^#*喵喵(上传|添加)(.+)写真.*$",
|
reg: '^#*喵喵(上传|添加)(.+)写真.*$',
|
||||||
describe: "喵喵上传角色写真",
|
describe: '喵喵上传角色写真'
|
||||||
},
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
export async function uploadCharacterImg(e) {
|
export async function uploadCharacterImg (e) {
|
||||||
let promise = await isAllowedToUploadCharacterImage(e);
|
let promise = await isAllowedToUploadCharacterImage(e)
|
||||||
if (!promise) {
|
if (!promise) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let imageMessages = [];
|
let imageMessages = []
|
||||||
let msg = e.msg;
|
let msg = e.msg
|
||||||
let regRet = regex.exec(msg);
|
let regRet = regex.exec(msg)
|
||||||
//通过解析正则获取消息中的角色名
|
// 通过解析正则获取消息中的角色名
|
||||||
if (!regRet || !regRet[1]) {
|
if (!regRet || !regRet[1]) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
let char = Character.get(regRet[1]);
|
let char = Character.get(regRet[1])
|
||||||
if (!char || !char.name) {
|
if (!char || !char.name) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
let name = char.name;
|
let name = char.name
|
||||||
for (let val of e.message) {
|
for (let val of e.message) {
|
||||||
if ("image" === val.type) {
|
if (val.type === 'image') {
|
||||||
imageMessages.push(val);
|
imageMessages.push(val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (imageMessages.length <= 0) {
|
if (imageMessages.length <= 0) {
|
||||||
// TODO 支持at图片添加,以及支持后发送
|
// TODO 支持at图片添加,以及支持后发送
|
||||||
e.reply("消息中未找到图片,请将要发送的图片与消息一同发送..");
|
e.reply('消息中未找到图片,请将要发送的图片与消息一同发送..')
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
await saveImages(e, name, imageMessages);
|
await saveImages(e, name, imageMessages)
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
async function saveImages(e, name, imageMessages) {
|
async function saveImages (e, name, imageMessages) {
|
||||||
let imgMaxSize = e.groupConfig.imgMaxSize || 1;
|
let imgMaxSize = e.groupConfig.imgMaxSize || 1
|
||||||
let pathSuffix = `character-img/${name}/upload`;
|
let pathSuffix = `character-img/${name}/upload`
|
||||||
let path = _res_path + pathSuffix;
|
let path = resPath + pathSuffix
|
||||||
|
|
||||||
if (!fs.existsSync(path)) {
|
if (!fs.existsSync(path)) {
|
||||||
Data.createDir(_res_path, pathSuffix);
|
Data.createDir(resPath, pathSuffix)
|
||||||
}
|
}
|
||||||
let senderName = lodash.truncate(e.sender.card, { length: 8 });
|
let senderName = lodash.truncate(e.sender.card, { length: 8 })
|
||||||
let imgCount = 0;
|
let imgCount = 0
|
||||||
for (let val of imageMessages) {
|
for (let val of imageMessages) {
|
||||||
const response = await fetch(val.url);
|
const response = await fetch(val.url)
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
e.reply("图片下载失败。");
|
e.reply('图片下载失败。')
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
if (response.headers.get("size") > 1024 * 1024 * imgMaxSize) {
|
if (response.headers.get('size') > 1024 * 1024 * imgMaxSize) {
|
||||||
e.reply([segment.at(e.user_id, senderName), "添加失败:图片太大了。"]);
|
e.reply([segment.at(e.user_id, senderName), '添加失败:图片太大了。'])
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
let fileName = val.file.substring(0, val.file.lastIndexOf("."));
|
let fileName = val.file.substring(0, val.file.lastIndexOf('.'))
|
||||||
let fileType = val.file.substring(val.file.lastIndexOf(".") + 1);
|
let fileType = val.file.substring(val.file.lastIndexOf('.') + 1)
|
||||||
if (response.headers.get("content-type") === "image/gif") {
|
if (response.headers.get('content-type') === 'image/gif') {
|
||||||
fileType = "gif";
|
fileType = 'gif'
|
||||||
}
|
}
|
||||||
let imgPath = `${path}/${fileName}.${fileType}`;
|
let imgPath = `${path}/${fileName}.${fileType}`
|
||||||
const streamPipeline = promisify(pipeline);
|
const streamPipeline = promisify(pipeline)
|
||||||
await streamPipeline(response.body, fs.createWriteStream(imgPath));
|
await streamPipeline(response.body, fs.createWriteStream(imgPath))
|
||||||
|
|
||||||
// 使用md5作为文件名
|
// 使用md5作为文件名
|
||||||
let buffers = fs.readFileSync(imgPath);
|
let buffers = fs.readFileSync(imgPath)
|
||||||
let base64 = new Buffer.from(buffers, 'base64').toString();
|
let base64 = Buffer.from(buffers, 'base64').toString()
|
||||||
let md5 = MD5(base64);
|
let md5 = MD5(base64)
|
||||||
let newImgPath = `${path}/${md5}.${fileType}`
|
let newImgPath = `${path}/${md5}.${fileType}`
|
||||||
if (fs.existsSync(newImgPath)) {
|
if (fs.existsSync(newImgPath)) {
|
||||||
fs.unlink(newImgPath, (err) => {
|
fs.unlink(newImgPath, (err) => {
|
||||||
console.log('unlink', err);
|
console.log('unlink', err)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
fs.rename(imgPath, newImgPath, (err) => {
|
fs.rename(imgPath, newImgPath, (err) => {
|
||||||
console.log('rename', err);
|
console.log('rename', err)
|
||||||
})
|
})
|
||||||
imgCount++;
|
imgCount++
|
||||||
Bot.logger.mark(`添加成功: ${path}/${fileName}`);
|
Bot.logger.mark(`添加成功: ${path}/${fileName}`)
|
||||||
}
|
}
|
||||||
e.reply([segment.at(e.user_id, senderName), `\n成功添加${imgCount}张${name}图片。`]);
|
e.reply([segment.at(e.user_id, senderName), `\n成功添加${imgCount}张${name}图片。`])
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
async function isAllowedToUploadCharacterImage(e) {
|
async function isAllowedToUploadCharacterImage (e) {
|
||||||
if (!e.message) {
|
if (!e.message) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
if (!e.msg) {
|
if (!e.msg) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
if (!e.isMaster) {
|
if (!e.isMaster) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 由于添加角色图是全局,暂时屏蔽非管理员的添加
|
// 由于添加角色图是全局,暂时屏蔽非管理员的添加
|
||||||
if (e.isPrivate) {
|
if (e.isPrivate) {
|
||||||
if (!e.isMaster) {
|
if (!e.isMaster) {
|
||||||
e.reply(`只有主人才能添加。`);
|
e.reply('只有主人才能添加。')
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
let group_id = e.group_id;
|
let groupId = e.group_id
|
||||||
if (!group_id) {
|
if (!groupId) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
if (e.groupConfig.imgAddLimit === 2) {
|
if (e.groupConfig.imgAddLimit === 2) {
|
||||||
if (!e.isMaster) {
|
if (!e.isMaster) {
|
||||||
e.reply(`只有主人才能添加。`);
|
e.reply('只有主人才能添加。')
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (e.groupConfig.imgAddLimit === 1 && !e.isMaster) {
|
if (e.groupConfig.imgAddLimit === 1 && !e.isMaster) {
|
||||||
if (!(e.sender.role === "owner" || e.sender.role === "admin")) {
|
if (!(e.sender.role === 'owner' || e.sender.role === 'admin')) {
|
||||||
e.reply(`只有管理员才能添加。`);
|
e.reply('只有管理员才能添加。')
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,37 +2,37 @@
|
|||||||
* 角色圣遗物评分详情
|
* 角色圣遗物评分详情
|
||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
import lodash from "lodash";
|
import lodash from 'lodash'
|
||||||
import { Profile, Common, Models, Format } from "../../components/index.js";
|
import { Profile, Common, Format } from '../../components/index.js'
|
||||||
import { autoRefresh, getTargetUid, profileHelp, autoGetProfile } from "./profile-common.js";
|
import { getTargetUid, profileHelp, autoGetProfile } from './profile-common.js'
|
||||||
import { Character, Artifact } from "../../components/models.js";
|
import { Artifact } from '../../components/models.js'
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 角色圣遗物面板
|
* 角色圣遗物面板
|
||||||
* */
|
* */
|
||||||
export async function profileArtis(e, { render }) {
|
export async function profileArtis (e, { render }) {
|
||||||
let { uid, avatar } = e;
|
let { uid, avatar } = e
|
||||||
|
|
||||||
let { profile, char, err } = await autoGetProfile(e, uid, avatar, async () => {
|
let { profile, char, err } = await autoGetProfile(e, uid, avatar, async () => {
|
||||||
await profileArtis(e, { render });
|
await profileArtis(e, { render })
|
||||||
});
|
})
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let charCfg = Artifact.getCharCfg(profile.name);
|
let charCfg = Artifact.getCharCfg(profile.name)
|
||||||
let { artis, totalMark, totalMarkClass, usefulMark } = getArtis(profile.name, profile.artis);
|
let { artis, totalMark, totalMarkClass, usefulMark } = getArtis(profile.name, profile.artis)
|
||||||
|
|
||||||
if (!profile.artis || profile.artis.length === 0) {
|
if (!profile.artis || profile.artis.length === 0) {
|
||||||
e.reply("未能获得圣遗物详情,请重新获取面板信息后查看")
|
e.reply('未能获得圣遗物详情,请重新获取面板信息后查看')
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
let { attrMap } = Artifact.getMeta();
|
let { attrMap } = Artifact.getMeta()
|
||||||
|
|
||||||
//渲染图像
|
// 渲染图像
|
||||||
return await Common.render("character/artis-mark", {
|
return await Common.render('character/artis-mark', {
|
||||||
uid,
|
uid,
|
||||||
elem: char.elem,
|
elem: char.elem,
|
||||||
data: profile,
|
data: profile,
|
||||||
@ -42,99 +42,96 @@ export async function profileArtis(e, { render }) {
|
|||||||
usefulMark,
|
usefulMark,
|
||||||
attrMap,
|
attrMap,
|
||||||
charCfg
|
charCfg
|
||||||
}, { e, render, scale: 1.3 });
|
}, { e, render, scale: 1.3 })
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 圣遗物列表
|
* 圣遗物列表
|
||||||
* */
|
* */
|
||||||
export async function profileArtisList(e, { render }) {
|
export async function profileArtisList (e, { render }) {
|
||||||
|
let uid = await getTargetUid(e)
|
||||||
let uid = await getTargetUid(e);
|
|
||||||
if (!uid) {
|
if (!uid) {
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
let artis = [],
|
let artis = []
|
||||||
profiles = Profile.getAll(uid) || {};
|
let profiles = Profile.getAll(uid) || {}
|
||||||
|
|
||||||
if (!profiles || profiles.length === 0) {
|
if (!profiles || profiles.length === 0) {
|
||||||
e.reply("暂无角色圣遗物详情");
|
e.reply('暂无角色圣遗物详情')
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
lodash.forEach(profiles || [], (ds) => {
|
lodash.forEach(profiles || [], (ds) => {
|
||||||
let name = ds.name;
|
let name = ds.name
|
||||||
if (!name || name === "空" || name === "荧") {
|
if (!name || name === '空' || name === '荧') {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let usefulMark;
|
let usefulMark
|
||||||
|
|
||||||
let charCfg = Artifact.getCharCfg(name);
|
let charCfg = Artifact.getCharCfg(name)
|
||||||
usefulMark = charCfg.titleWeight;
|
usefulMark = charCfg.titleWeight
|
||||||
|
|
||||||
/* 处理圣遗物 */
|
/* 处理圣遗物 */
|
||||||
if (ds.artis) {
|
if (ds.artis) {
|
||||||
let newScore = Artifact.getArtisMark(name, ds.artis);
|
let newScore = Artifact.getArtisMark(name, ds.artis)
|
||||||
|
|
||||||
lodash.forEach(ds.artis, (arti, idx) => {
|
lodash.forEach(ds.artis, (arti, idx) => {
|
||||||
if (!arti.name) {
|
if (!arti.name) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
idx = idx.replace("arti", "");
|
idx = idx.replace('arti', '')
|
||||||
let mark = newScore[idx];
|
let mark = newScore[idx]
|
||||||
let maxMark = Artifact.getMaxMark(name, arti.main[0] || "");
|
arti.mark = Format.comma(mark, 1)
|
||||||
arti.mark = Format.comma(mark, 1);
|
arti._mark = mark
|
||||||
arti._mark = mark;
|
arti.markClass = Artifact.getMarkClass(mark)
|
||||||
arti.markClass = Artifact.getMarkClass(mark);
|
arti.main = Artifact.formatArti(arti.main)
|
||||||
arti.main = Artifact.formatArti(arti.main);
|
arti.attrs = Artifact.formatArti(arti.attrs)
|
||||||
arti.attrs = Artifact.formatArti(arti.attrs);
|
arti.usefulMark = usefulMark
|
||||||
arti.usefulMark = usefulMark;
|
arti.avatar = name
|
||||||
arti.avatar = name;
|
artis.push(arti)
|
||||||
artis.push(arti);
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
|
||||||
if (artis.length === 0) {
|
if (artis.length === 0) {
|
||||||
e.reply("请先获取角色面板数据后再查看圣遗物列表...");
|
e.reply('请先获取角色面板数据后再查看圣遗物列表...')
|
||||||
await profileHelp(e);
|
await profileHelp(e)
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
artis = lodash.sortBy(artis, "_mark");
|
artis = lodash.sortBy(artis, '_mark')
|
||||||
artis = artis.reverse();
|
artis = artis.reverse()
|
||||||
artis = artis.slice(0, 28);
|
artis = artis.slice(0, 28)
|
||||||
|
|
||||||
//渲染图像
|
// 渲染图像
|
||||||
return await Common.render("character/artis", {
|
return await Common.render('character/artis', {
|
||||||
save_id: uid,
|
save_id: uid,
|
||||||
uid: uid,
|
uid,
|
||||||
artis,
|
artis
|
||||||
}, { e, render, scale: 1.4 });
|
}, { e, render, scale: 1.4 })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 获取圣遗物评分及详情
|
* 获取圣遗物评分及详情
|
||||||
* */
|
* */
|
||||||
export function getArtis(char, artisData) {
|
export function getArtis (char, artisData) {
|
||||||
let charCfg = Artifact.getCharCfg(char);
|
let charCfg = Artifact.getCharCfg(char)
|
||||||
let newScore = Artifact.getArtisMark(char, artisData);
|
let newScore = Artifact.getArtisMark(char, artisData)
|
||||||
let totalMark = 0;
|
let totalMark = 0
|
||||||
let artis = [];
|
let artis = []
|
||||||
|
|
||||||
lodash.forEach(artisData, (arti, idx) => {
|
lodash.forEach(artisData, (arti, idx) => {
|
||||||
idx = idx.replace("arti", "");
|
idx = idx.replace('arti', '')
|
||||||
let ds = arti;
|
let ds = arti
|
||||||
let mark = newScore[idx];
|
let mark = newScore[idx]
|
||||||
totalMark += mark;
|
totalMark += mark
|
||||||
ds.mark = Format.comma(mark, 1);
|
ds.mark = Format.comma(mark, 1)
|
||||||
ds.markClass = Artifact.getMarkClass(mark);
|
ds.markClass = Artifact.getMarkClass(mark)
|
||||||
ds.main = Artifact.formatArti(arti.main, charCfg.mark, true);
|
ds.main = Artifact.formatArti(arti.main, charCfg.mark, true)
|
||||||
ds.attrs = Artifact.formatArti(arti.attrs, charCfg.mark, false);
|
ds.attrs = Artifact.formatArti(arti.attrs, charCfg.mark, false)
|
||||||
artis[idx * 1 - 1] = ds;
|
artis[idx * 1 - 1] = ds
|
||||||
});
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
artis,
|
artis,
|
||||||
@ -143,7 +140,3 @@ export function getArtis(char, artisData) {
|
|||||||
usefulMark: charCfg.titleWeight
|
usefulMark: charCfg.titleWeight
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatArti(ds) {
|
|
||||||
let ret = Profile.formatArti(ds);
|
|
||||||
}
|
|
||||||
|
@ -116,7 +116,6 @@ export async function autoRefresh (e) {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function autoGetProfile (e, uid, avatar, callback) {
|
export async function autoGetProfile (e, uid, avatar, callback) {
|
||||||
|
@ -1,59 +1,59 @@
|
|||||||
import { segment } from "oicq";
|
import { segment } from 'oicq'
|
||||||
|
|
||||||
/** 获取角色卡片的原图 */
|
/** 获取角色卡片的原图 */
|
||||||
export async function getOriginalPicture(e) {
|
export async function getOriginalPicture (e) {
|
||||||
if (!e.hasReply) {
|
if (!e.hasReply) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
// 引用的消息不是自己的消息
|
// 引用的消息不是自己的消息
|
||||||
if (e.source.user_id !== e.self_id) {
|
if (e.source.user_id !== e.self_id) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
// 引用的消息不是纯图片
|
// 引用的消息不是纯图片
|
||||||
if (!/^\[图片]$/.test(e.source.message)) {
|
if (!/^\[图片]$/.test(e.source.message)) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
// 获取原消息
|
// 获取原消息
|
||||||
let source;
|
let source
|
||||||
if (e.isGroup) {
|
if (e.isGroup) {
|
||||||
source = (await e.group.getChatHistory(e.source.seq, 1)).pop();
|
source = (await e.group.getChatHistory(e.source.seq, 1)).pop()
|
||||||
} else {
|
} else {
|
||||||
source = (await e.friend.getChatHistory(e.source.time, 1)).pop();
|
source = (await e.friend.getChatHistory(e.source.time, 1)).pop()
|
||||||
}
|
}
|
||||||
if (source) {
|
if (source) {
|
||||||
let imgPath = await redis.get(`miao:original-picture:${source.message_id}`);
|
let imgPath = await redis.get(`miao:original-picture:${source.message_id}`)
|
||||||
if (imgPath) {
|
if (imgPath) {
|
||||||
e.reply([segment.image(process.cwd() + "/plugins/miao-plugin/resources/" + imgPath)]);
|
e.reply([segment.image(process.cwd() + '/plugins/miao-plugin/resources/' + imgPath)])
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
if (source.time) {
|
if (source.time) {
|
||||||
let time = new Date();
|
let time = new Date()
|
||||||
// 对at错图像的增加嘲讽...
|
// 对at错图像的增加嘲讽...
|
||||||
if (time / 1000 - source.time < 3600) {
|
if (time / 1000 - source.time < 3600) {
|
||||||
e.reply([segment.image(process.cwd() + "/plugins/miao-plugin/resources/common/face/what.jpg")]);
|
e.reply([segment.image(process.cwd() + '/plugins/miao-plugin/resources/common/face/what.jpg')])
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e.reply("消息太过久远了,俺也忘了原图是啥了,下次早点来吧~");
|
e.reply('消息太过久远了,俺也忘了原图是啥了,下次早点来吧~')
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
/* #敌人等级 */
|
/* #敌人等级 */
|
||||||
export async function enemyLv(e) {
|
export async function enemyLv (e) {
|
||||||
let selfUser = await e.checkAuth({
|
let selfUser = await e.checkAuth({
|
||||||
auth: "self"
|
auth: 'self'
|
||||||
})
|
})
|
||||||
if (!selfUser || !e.msg) {
|
if (!selfUser || !e.msg) {
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
let ret = /(敌人|怪物)等级\s*(\d{1,3})\s*$/.exec(e.msg);
|
let ret = /(敌人|怪物)等级\s*(\d{1,3})\s*$/.exec(e.msg)
|
||||||
if (ret && ret[2]) {
|
if (ret && ret[2]) {
|
||||||
let lv = ret[2] * 1;
|
let lv = ret[2] * 1
|
||||||
await selfUser.setCfg("char.enemyLv", lv);
|
await selfUser.setCfg('char.enemyLv', lv)
|
||||||
lv = await selfUser.getCfg("char.enemyLv", 91);
|
lv = await selfUser.getCfg('char.enemyLv', 91)
|
||||||
e.reply(`敌人等级已经设置为${lv}`);
|
e.reply(`敌人等级已经设置为${lv}`)
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
@ -17,11 +17,11 @@ export const render = async function (path, params, cfg) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
let ret = true
|
||||||
if (base64) {
|
if (base64) {
|
||||||
return isV3 ? await e.reply(base64) : await e.reply(segment.image(`base64://${base64}`))
|
ret = isV3 ? await e.reply(base64) : await e.reply(segment.image(`base64://${base64}`))
|
||||||
}
|
}
|
||||||
|
return cfg.retMsgId ? ret : true
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const todoV3 = function (e) {
|
export const todoV3 = function (e) {
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
export const details = [{
|
export const details = [{
|
||||||
title: "E每跳治疗",
|
title: 'E每跳治疗',
|
||||||
dmg: ({
|
dmg: ({
|
||||||
talent,
|
talent,
|
||||||
attr,
|
attr,
|
||||||
calc
|
calc
|
||||||
}, { heal }) => heal(talent.e['持续治疗量2'][0] * calc(attr.atk) / 100 + talent.e['持续治疗量2'][1] * 1)
|
}, { heal }) => heal(talent.e['持续治疗量2'][0] * calc(attr.atk) / 100 + talent.e['持续治疗量2'][1] * 1)
|
||||||
}, {
|
}, {
|
||||||
title: "度厄真符每次治疗",
|
title: '度厄真符每次治疗',
|
||||||
dmg: ({ talent, attr, calc }, { heal }) => heal(talent.q['治疗量2'][0] * calc(attr.atk) / 100 + talent.q['治疗量2'][1] * 1)
|
dmg: ({ talent, attr, calc }, { heal }) => heal(talent.q['治疗量2'][0] * calc(attr.atk) / 100 + talent.q['治疗量2'][1] * 1)
|
||||||
}];
|
}]
|
||||||
|
|
||||||
export const mainAttr = "atk,cpct,cdmg";
|
export const mainAttr = 'atk,cpct,cdmg'
|
||||||
|
|
||||||
export const buffs = []
|
export const buffs = []
|
||||||
|
@ -1,29 +1,29 @@
|
|||||||
export const details = [{
|
export const details = [{
|
||||||
title: "E释放伤害",
|
title: 'E释放伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e')
|
dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e')
|
||||||
}, {
|
}, {
|
||||||
title: "E每跳治疗",
|
title: 'E每跳治疗',
|
||||||
showDetail: true,
|
showDetail: true,
|
||||||
dmg: ({ talent, calc, attr }, { heal }) => {
|
dmg: ({ talent, calc, attr }, { heal }) => {
|
||||||
let ec = talent.e['越祓草轮治疗量2'];
|
let ec = talent.e['越祓草轮治疗量2']
|
||||||
return heal(calc(attr.hp) * ec[0] / 100 + ec[1] * 1 + calc(attr.mastery) * 0.75)
|
return heal(calc(attr.hp) * ec[0] / 100 + ec[1] * 1 + calc(attr.mastery) * 0.75)
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
title: "Q每跳伤害",
|
title: 'Q每跳伤害',
|
||||||
dmg: ({ talent, calc, attr }, { basic }) => basic(talent.q['单次伤害'] * calc(attr.hp) / 100, 'q')
|
dmg: ({ talent, calc, attr }, { basic }) => basic(talent.q['单次伤害'] * calc(attr.hp) / 100, 'q')
|
||||||
}];
|
}]
|
||||||
|
|
||||||
export const mainAttr = "hp,atk,cpct,cdmg,mastery";
|
export const mainAttr = 'hp,atk,cpct,cdmg,mastery'
|
||||||
|
|
||||||
export const buffs = [{
|
export const buffs = [{
|
||||||
title: "久岐忍被动:生命低于50%时提高治疗加成15%",
|
title: '久岐忍被动:生命低于50%时提高治疗加成15%',
|
||||||
data: {
|
data: {
|
||||||
heal: 15
|
heal: 15
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
title: "久岐忍被动:基于元素精通提高治疗量[healNum],伤害[ePlus]",
|
title: '久岐忍被动:基于元素精通提高治疗量[healNum],伤害[ePlus]',
|
||||||
data: {
|
data: {
|
||||||
healNum: ({ attr, calc }) => calc(attr.mastery) * 0.75,
|
healNum: ({ attr, calc }) => calc(attr.mastery) * 0.75,
|
||||||
ePlus: ({ attr, calc }) => calc(attr.mastery) * 0.25
|
ePlus: ({ attr, calc }) => calc(attr.mastery) * 0.25
|
||||||
}
|
}
|
||||||
}];
|
}]
|
||||||
|
@ -1,28 +1,28 @@
|
|||||||
export const details = [{
|
export const details = [{
|
||||||
title: "E提升攻击力",
|
title: 'E提升攻击力',
|
||||||
dmg: ({ talent, attr }) => {
|
dmg: ({ talent, attr }) => {
|
||||||
return {
|
return {
|
||||||
avg: talent.e['攻击力加成比例'] * attr.atk.base / 100
|
avg: talent.e['攻击力加成比例'] * attr.atk.base / 100
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
title: "E后Q首段伤害",
|
title: 'E后Q首段伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['天狗咒雷·金刚坏 伤害'], 'q')
|
dmg: ({ talent }, dmg) => dmg(talent.q['天狗咒雷·金刚坏 伤害'], 'q')
|
||||||
}, {
|
}, {
|
||||||
title: "E后Q每段",
|
title: 'E后Q每段',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['天狗咒雷·雷砾 伤害'], 'q')
|
dmg: ({ talent }, dmg) => dmg(talent.q['天狗咒雷·雷砾 伤害'], 'q')
|
||||||
}];
|
}]
|
||||||
|
|
||||||
export const defDmgIdx = 1;
|
export const defDmgIdx = 1
|
||||||
export const mainAttr = "atk,cpct,cdmg";
|
export const mainAttr = 'atk,cpct,cdmg'
|
||||||
|
|
||||||
export const buffs = [{
|
export const buffs = [{
|
||||||
title: "九条E技能:提升攻击力[atkPlus]",
|
title: '九条E技能:提升攻击力[atkPlus]',
|
||||||
data: {
|
data: {
|
||||||
atkPlus: ({ attr, talent }) => talent.e['攻击力加成比例'] * attr.atk.base / 100
|
atkPlus: ({ attr, talent }) => talent.e['攻击力加成比例'] * attr.atk.base / 100
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
title: "九条6命:提升60%雷元素爆伤",
|
title: '九条6命:提升60%雷元素爆伤',
|
||||||
cons: 6,
|
cons: 6,
|
||||||
data: {
|
data: {
|
||||||
cdmg: 60
|
cdmg: 60
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
let tmpDmg = false;
|
let tmpDmg = false
|
||||||
|
|
||||||
export const details = [{
|
export const details = [{
|
||||||
title: "普攻尾段2次伤害",
|
title: '普攻尾段2次伤害',
|
||||||
params: { e: false },
|
params: { e: false },
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.a['五段伤害'], 'a', 'phy')
|
dmg: ({ talent }, dmg) => dmg(talent.a['五段伤害'], 'a', 'phy')
|
||||||
}, {
|
}, {
|
||||||
title: "E0层长按伤害",
|
title: 'E0层长按伤害',
|
||||||
params: { gj: false },
|
params: { gj: false },
|
||||||
dmg: ({ talent }, dmg) => {
|
dmg: ({ talent }, dmg) => {
|
||||||
tmpDmg = dmg(talent.e['长按伤害'], 'e')
|
tmpDmg = dmg(talent.e['长按伤害'], 'e')
|
||||||
return tmpDmg;
|
return tmpDmg
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
title: "E2层长按伤害",
|
title: 'E2层长按伤害',
|
||||||
params: { gj: true },
|
params: { gj: true },
|
||||||
dmg: ({ talent }, dmg) => {
|
dmg: ({ talent }, dmg) => {
|
||||||
let e = tmpDmg;
|
let e = tmpDmg
|
||||||
let g = dmg(talent.e['冰涡之剑伤害'], 'e')
|
let g = dmg(talent.e['冰涡之剑伤害'], 'e')
|
||||||
let j = dmg(talent.q['光降之剑基础伤害'], 'e', 'phy')
|
let j = dmg(talent.q['光降之剑基础伤害'], 'e', 'phy')
|
||||||
return {
|
return {
|
||||||
@ -24,45 +24,45 @@ export const details = [{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, ({ cons, weapon }) => {
|
}, ({ cons, weapon }) => {
|
||||||
let buffCount = 12;
|
let buffCount = 12
|
||||||
if (weapon.name === "松籁响起之时") {
|
if (weapon.name === '松籁响起之时') {
|
||||||
buffCount = 13;
|
buffCount = 13
|
||||||
if (weapon.affix_level >= 4) {
|
if (weapon.affix_level >= 4) {
|
||||||
buffCount = 14;
|
buffCount = 14
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cons === 6) {
|
if (cons === 6) {
|
||||||
buffCount = buffCount + 11;
|
buffCount = buffCount + 11
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
title: `光降之剑${buffCount}层伤害`,
|
title: `光降之剑${buffCount}层伤害`,
|
||||||
params: { gj: true },
|
params: { gj: true },
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['光降之剑基础伤害'] + talent.q['每层能量伤害'] * buffCount, 'q', 'phy')
|
dmg: ({ talent }, dmg) => dmg(talent.q['光降之剑基础伤害'] + talent.q['每层能量伤害'] * buffCount, 'q', 'phy')
|
||||||
}
|
}
|
||||||
}];
|
}]
|
||||||
|
|
||||||
export const mainAttr = "atk,cpct,cdmg";
|
export const mainAttr = 'atk,cpct,cdmg'
|
||||||
export const enemyName = "魔偶/女士/雷神";
|
export const enemyName = '魔偶/女士/雷神'
|
||||||
|
|
||||||
export const buffs = [{
|
export const buffs = [{
|
||||||
title: "优菈天赋:E消耗冰涡之剑后降低抗性[kx]%",
|
title: '优菈天赋:E消耗冰涡之剑后降低抗性[kx]%',
|
||||||
check: ({ params }) => params.gj !== false,
|
check: ({ params }) => params.gj !== false,
|
||||||
data: {
|
data: {
|
||||||
kx: ({ talent }) => talent.e['冰元素抗性降低']
|
kx: ({ talent }) => talent.e['冰元素抗性降低']
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
title: "优菈一命:消耗冷酷之心后物理伤害提高30%",
|
title: '优菈一命:消耗冷酷之心后物理伤害提高30%',
|
||||||
cons: 1,
|
cons: 1,
|
||||||
data: {
|
data: {
|
||||||
phy: ({ params }) => params.gj ? 30 : 0
|
phy: ({ params }) => params.gj ? 30 : 0
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
title: "优菈四命:对生命值低于50%的敌人,光降之剑造成的伤害提高25%",
|
title: '优菈四命:对生命值低于50%的敌人,光降之剑造成的伤害提高25%',
|
||||||
cons: 4,
|
cons: 4,
|
||||||
data: {
|
data: {
|
||||||
qDmg: 25
|
qDmg: 25
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
title: "优菈6命:光降之剑额外获得5层Buff,普攻/E有50%概率额外获得1层",
|
title: '优菈6命:光降之剑额外获得5层Buff,普攻/E有50%概率额外获得1层',
|
||||||
cons: 6
|
cons: 6
|
||||||
}]
|
}]
|
||||||
|
@ -1,36 +1,36 @@
|
|||||||
export const details = [{
|
export const details = [{
|
||||||
check: ({ cons }) => cons < 2,
|
check: ({ cons }) => cons < 2,
|
||||||
title: "叄阶杀生樱伤害",
|
title: '叄阶杀生樱伤害',
|
||||||
dmg: ({ talent, attr }, dmg) => dmg(talent.e["杀生樱伤害·叁阶"], "e")
|
dmg: ({ talent, attr }, dmg) => dmg(talent.e['杀生樱伤害·叁阶'], 'e')
|
||||||
}, {
|
}, {
|
||||||
check: ({ cons }) => cons >= 2,
|
check: ({ cons }) => cons >= 2,
|
||||||
title: "肆阶杀生樱伤害",
|
title: '肆阶杀生樱伤害',
|
||||||
dmg: ({ talent, attr }, dmg) => dmg(talent.e["杀生樱伤害·肆阶"], "e")
|
dmg: ({ talent, attr }, dmg) => dmg(talent.e['杀生樱伤害·肆阶'], 'e')
|
||||||
}, {
|
}, {
|
||||||
title: "Q天狐霆雷伤害",
|
title: 'Q天狐霆雷伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['天狐霆雷伤害'], "q")
|
dmg: ({ talent }, dmg) => dmg(talent.q['天狐霆雷伤害'], 'q')
|
||||||
}, {
|
}, {
|
||||||
title: "四段Q总伤害",
|
title: '四段Q总伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['技能伤害'] + talent.q['天狐霆雷伤害'] * 3, 'q')
|
dmg: ({ talent }, dmg) => dmg(talent.q['技能伤害'] + talent.q['天狐霆雷伤害'] * 3, 'q')
|
||||||
}];
|
}]
|
||||||
|
|
||||||
export const mainAttr = "atk,cpct,cdmg,mastery";
|
export const mainAttr = 'atk,cpct,cdmg,mastery'
|
||||||
|
|
||||||
export const buffs = [{
|
export const buffs = [{
|
||||||
title: `被动天赋:基于元素精通提高杀生樱伤害[eDmg]%`,
|
title: '被动天赋:基于元素精通提高杀生樱伤害[eDmg]%',
|
||||||
data: {
|
data: {
|
||||||
"eDmg": ({ attr, calc }) => calc(attr.mastery) * 0.15
|
eDmg: ({ attr, calc }) => calc(attr.mastery) * 0.15
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
check: ({ cons }) => cons >= 4,
|
check: ({ cons }) => cons >= 4,
|
||||||
title: "4命效果:杀生樱命中敌人后提高雷伤[dmg]%",
|
title: '4命效果:杀生樱命中敌人后提高雷伤[dmg]%',
|
||||||
data: {
|
data: {
|
||||||
dmg: 20
|
dmg: 20
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
cons: 6,
|
cons: 6,
|
||||||
title: "6命效果:杀生樱无视敌人[eDef]%防御",
|
title: '6命效果:杀生樱无视敌人[eDef]%防御',
|
||||||
data: {
|
data: {
|
||||||
eDef: 60
|
eDef: 60
|
||||||
}
|
}
|
||||||
}];
|
}]
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
export const details = [{
|
export const details = [{
|
||||||
title: "重击伤害",
|
title: '重击伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2')
|
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2')
|
||||||
}, {
|
}, {
|
||||||
title: "璇玑屏伤害",
|
title: '璇玑屏伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e')
|
dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e')
|
||||||
}, {
|
}, {
|
||||||
title: "Q单颗宝石伤害",
|
title: 'Q单颗宝石伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['宝石伤害'], 'q')
|
dmg: ({ talent }, dmg) => dmg(talent.q['宝石伤害'], 'q')
|
||||||
}];
|
}]
|
||||||
|
|
||||||
export const mainAttr = "atk,cpct,cdmg";
|
export const mainAttr = 'atk,cpct,cdmg'
|
||||||
|
|
||||||
export const buffs = [{
|
export const buffs = [{
|
||||||
title: "凝光被动:穿过璇玑屏获得12%岩伤加成",
|
title: '凝光被动:穿过璇玑屏获得12%岩伤加成',
|
||||||
data: {
|
data: {
|
||||||
dmg: 12
|
dmg: 12
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
export const details = [{
|
export const details = [{
|
||||||
title: "霜袭E伤害",
|
title: '霜袭E伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e')
|
dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e')
|
||||||
}, {
|
}, {
|
||||||
title: "Q单段伤害",
|
title: 'Q单段伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['技能伤害'], 'q')
|
dmg: ({ talent }, dmg) => dmg(talent.q['技能伤害'], 'q')
|
||||||
}];
|
}]
|
||||||
|
|
||||||
export const mainAttr = "atk,cpct,cdmg";
|
export const mainAttr = 'atk,cpct,cdmg'
|
||||||
|
|
||||||
export const buffs = [];
|
export const buffs = []
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
export const details = [{
|
export const details = [{
|
||||||
title: "E后重击伤害",
|
title: 'E后重击伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2')
|
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2')
|
||||||
}, {
|
}, {
|
||||||
title: "Q单段伤害",
|
title: 'Q单段伤害',
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['连斩伤害2'][0], 'q')
|
dmg: ({ talent }, dmg) => dmg(talent.q['连斩伤害2'][0], 'q')
|
||||||
}, {
|
}, {
|
||||||
title: "Q总伤害",
|
title: 'Q总伤害',
|
||||||
params: { q: 1 },
|
params: { q: 1 },
|
||||||
dmg: ({ talent }, dmg) => dmg(talent.q['技能伤害'] + talent.q['连斩伤害'] + talent.q['最后一击伤害'], 'q')
|
dmg: ({ talent }, dmg) => dmg(talent.q['技能伤害'] + talent.q['连斩伤害'] + talent.q['最后一击伤害'], 'q')
|
||||||
}];
|
}]
|
||||||
|
|
||||||
export const mainAttr = "atk,cpct,cdmg";
|
export const mainAttr = 'atk,cpct,cdmg'
|
||||||
|
|
||||||
export const buffs = [{
|
export const buffs = [{
|
||||||
title: "刻晴6命:4层获得24%雷伤加成",
|
title: '刻晴6命:4层获得24%雷伤加成',
|
||||||
cons: 6,
|
cons: 6,
|
||||||
data: {
|
data: {
|
||||||
dmg: 24
|
dmg: 24
|
||||||
|
@ -1,78 +1,78 @@
|
|||||||
export const buffs = {
|
export const buffs = {
|
||||||
"行者之心4": {
|
行者之心4: {
|
||||||
title: "行者4:重击的暴击率提高30%",
|
title: '行者4:重击的暴击率提高30%',
|
||||||
data: {
|
data: {
|
||||||
a2Cpct: 30
|
a2Cpct: 30
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"勇士之心4": {
|
勇士之心4: {
|
||||||
title: "勇士4:对生命值高于50%的敌人,造成的伤害增加30%",
|
title: '勇士4:对生命值高于50%的敌人,造成的伤害增加30%',
|
||||||
data: {
|
data: {
|
||||||
dmg: 30
|
dmg: 30
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"武人2": {
|
武人2: {
|
||||||
title: "武人2: 普攻与重击造成的伤害提高15%",
|
title: '武人2: 普攻与重击造成的伤害提高15%',
|
||||||
data: {
|
data: {
|
||||||
aDmg: 15,
|
aDmg: 15,
|
||||||
a2Dmg: 15
|
a2Dmg: 15
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"武人4": {
|
武人4: {
|
||||||
title: "武人4:施放元素战技后的8秒内,普攻和重击伤害提升25%",
|
title: '武人4:施放元素战技后的8秒内,普攻和重击伤害提升25%',
|
||||||
data: {
|
data: {
|
||||||
aDmg: 25,
|
aDmg: 25,
|
||||||
a2Dmg: 25
|
a2Dmg: 25
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"战狂4": {
|
战狂4: {
|
||||||
title: "战狂4:生命值低于70%时,暴击率提升24%",
|
title: '战狂4:生命值低于70%时,暴击率提升24%',
|
||||||
data: {
|
data: {
|
||||||
cpct: 24
|
cpct: 24
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"染血的骑士道4": {
|
染血的骑士道4: {
|
||||||
title: "染血4:击败敌人后的10秒内,重击造成的伤害提升50%",
|
title: '染血4:击败敌人后的10秒内,重击造成的伤害提升50%',
|
||||||
data: {
|
data: {
|
||||||
a2Dmg: 50
|
a2Dmg: 50
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"角斗士的终幕礼4": {
|
角斗士的终幕礼4: {
|
||||||
check: ({ weaponType }) => ['单手剑', '双手剑', '长柄武器'].includes(weaponType),
|
check: ({ weaponType }) => ['单手剑', '双手剑', '长柄武器'].includes(weaponType),
|
||||||
title: "角斗4:角色普通攻击造成的伤害提高35%",
|
title: '角斗4:角色普通攻击造成的伤害提高35%',
|
||||||
data: {
|
data: {
|
||||||
aDmg: 35
|
aDmg: 35
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"流浪大地的乐团4": {
|
流浪大地的乐团4: {
|
||||||
check: ({ weaponType }) => ['法器', '弓'].includes(weaponType),
|
check: ({ weaponType }) => ['法器', '弓'].includes(weaponType),
|
||||||
title: "乐团4:角色重击造成的伤害提高35%",
|
title: '乐团4:角色重击造成的伤害提高35%',
|
||||||
data: {
|
data: {
|
||||||
a2Dmg: 35
|
a2Dmg: 35
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"苍白之火4": {
|
苍白之火4: {
|
||||||
title: "苍白4:2层提高18%攻击力,物理伤害额外提高25%",
|
title: '苍白4:2层提高18%攻击力,物理伤害额外提高25%',
|
||||||
data: {
|
data: {
|
||||||
atkPct: 18,
|
atkPct: 18,
|
||||||
phy: 25
|
phy: 25
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"赌徒2": {
|
赌徒2: {
|
||||||
title: "赌徒2:元素战技造成的伤害提升20%",
|
title: '赌徒2:元素战技造成的伤害提升20%',
|
||||||
data: {
|
data: {
|
||||||
eDmg: 20
|
eDmg: 20
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"悠古的磐岩4": {
|
悠古的磐岩4: {
|
||||||
title: "磐岩4:获得元素反应晶片,对应元素伤害提高35%",
|
title: '磐岩4:获得元素反应晶片,对应元素伤害提高35%',
|
||||||
data: {
|
data: {
|
||||||
dmg: 35
|
dmg: 35
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"炽烈的炎之魔女4": {
|
炽烈的炎之魔女4: {
|
||||||
check: ({ element }) => element === "火",
|
check: ({ element }) => element === '火',
|
||||||
title: "魔女4:蒸发、融化伤害提高15%,[buffCount]层额外提高[dmg]%火元素伤害加成",
|
title: '魔女4:蒸发、融化伤害提高15%,[buffCount]层额外提高[dmg]%火元素伤害加成',
|
||||||
data: {
|
data: {
|
||||||
zf: 15,
|
zf: 15,
|
||||||
rh: 15,
|
rh: 15,
|
||||||
@ -80,124 +80,124 @@ export const buffs = {
|
|||||||
buffCount: ({ params }) => params.monv || 1
|
buffCount: ({ params }) => params.monv || 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"昔日宗室之仪2": {
|
昔日宗室之仪2: {
|
||||||
title: "宗室2:元素爆发造成的伤害提升20%",
|
title: '宗室2:元素爆发造成的伤害提升20%',
|
||||||
data: {
|
data: {
|
||||||
qDmg: 20
|
qDmg: 20
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"昔日宗室之仪4": {
|
昔日宗室之仪4: {
|
||||||
title: "宗室4:施放元素爆发后,攻击力提升20%",
|
title: '宗室4:施放元素爆发后,攻击力提升20%',
|
||||||
check: ({ currentTalent }) => !currentTalent || currentTalent === "q",
|
check: ({ currentTalent }) => !currentTalent || currentTalent === 'q',
|
||||||
data: {
|
data: {
|
||||||
atkPct: 20
|
atkPct: 20
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"冰风迷途的勇士4": {
|
冰风迷途的勇士4: {
|
||||||
check: ({ element }) => element === "冰",
|
check: ({ element }) => element === '冰',
|
||||||
title: "冰套4:攻击处于冰元素影响下的敌人时,暴击率提高20%",
|
title: '冰套4:攻击处于冰元素影响下的敌人时,暴击率提高20%',
|
||||||
data: {
|
data: {
|
||||||
cpct: 20
|
cpct: 20
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"沉沦之心4": {
|
沉沦之心4: {
|
||||||
title: "水套4:施放元素战技后,普攻与重击伤害提高30%",
|
title: '水套4:施放元素战技后,普攻与重击伤害提高30%',
|
||||||
data: {
|
data: {
|
||||||
aDmg: 30,
|
aDmg: 30,
|
||||||
a2Dmg: 30
|
a2Dmg: 30
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"冰之川与雪之砂4": {
|
冰之川与雪之砂4: {
|
||||||
title: "冰雪4:融化加成提高15%,释放元素爆发后,冰伤提高30%",
|
title: '冰雪4:融化加成提高15%,释放元素爆发后,冰伤提高30%',
|
||||||
data: {
|
data: {
|
||||||
rh: 15,
|
rh: 15,
|
||||||
dmg: 30
|
dmg: 30
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"追忆之注连4": {
|
追忆之注连4: {
|
||||||
title: "追忆4:施放元素战技后,普通攻击、重击、下落攻击造成的伤害提高50%",
|
title: '追忆4:施放元素战技后,普通攻击、重击、下落攻击造成的伤害提高50%',
|
||||||
data: {
|
data: {
|
||||||
aDmg: 50,
|
aDmg: 50,
|
||||||
a2Dmg: 50,
|
a2Dmg: 50,
|
||||||
a3Dmg: 50
|
a3Dmg: 50
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"逆飞的流星4": {
|
逆飞的流星4: {
|
||||||
title: "逆飞4:处于护盾庇护下时,获得40%普攻和重击伤害加成",
|
title: '逆飞4:处于护盾庇护下时,获得40%普攻和重击伤害加成',
|
||||||
data: {
|
data: {
|
||||||
aDmg: 40,
|
aDmg: 40,
|
||||||
a2Dmg: 40
|
a2Dmg: 40
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"平息鸣雷的尊者4": {
|
平息鸣雷的尊者4: {
|
||||||
check: ({ element }) => element === "雷",
|
check: ({ element }) => element === '雷',
|
||||||
title: "平雷4:对处于雷元素影响下的敌人造成的伤害提升35%",
|
title: '平雷4:对处于雷元素影响下的敌人造成的伤害提升35%',
|
||||||
data: {
|
data: {
|
||||||
dmg: 35
|
dmg: 35
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"渡过烈火的贤人4": {
|
渡过烈火的贤人4: {
|
||||||
check: ({ element }) => element === "火",
|
check: ({ element }) => element === '火',
|
||||||
title: "渡火4:对处于火元素影响下的敌人造成的伤害提升35%",
|
title: '渡火4:对处于火元素影响下的敌人造成的伤害提升35%',
|
||||||
data: {
|
data: {
|
||||||
dmg: 35
|
dmg: 35
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"教官4": {
|
教官4: {
|
||||||
title: "教官4:触发元素反应后,队伍中所有角色的元素精通提高120点",
|
title: '教官4:触发元素反应后,队伍中所有角色的元素精通提高120点',
|
||||||
data: {
|
data: {
|
||||||
mastery: 120
|
mastery: 120
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"千岩牢固4": {
|
千岩牢固4: {
|
||||||
title: "千岩4:元素战技命中敌人后,攻击力提升20%",
|
title: '千岩4:元素战技命中敌人后,攻击力提升20%',
|
||||||
data: {
|
data: {
|
||||||
atkPct: 20
|
atkPct: 20
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"绝缘之旗印4": {
|
绝缘之旗印4: {
|
||||||
title: "绝缘4:基于元素充能效率提高元素爆发[qDmg]%伤害",
|
title: '绝缘4:基于元素充能效率提高元素爆发[qDmg]%伤害',
|
||||||
data: {
|
data: {
|
||||||
qDmg: ({ attr }) => Math.min(75, (attr.recharge.base + attr.recharge.plus) * 0.25)
|
qDmg: ({ attr }) => Math.min(75, (attr.recharge.base + attr.recharge.plus) * 0.25)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"华馆梦醒形骸记4": {
|
华馆梦醒形骸记4: {
|
||||||
title: "华馆4:满层获得24%防御及24%岩伤加成",
|
title: '华馆4:满层获得24%防御及24%岩伤加成',
|
||||||
sort: 0,
|
sort: 0,
|
||||||
data: {
|
data: {
|
||||||
defPct: 24,
|
defPct: 24,
|
||||||
dmg: 24
|
dmg: 24
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"辰砂往生录4": {
|
辰砂往生录4: {
|
||||||
title: "辰砂4:满层提高48%攻击力",
|
title: '辰砂4:满层提高48%攻击力',
|
||||||
|
|
||||||
data: {
|
data: {
|
||||||
atkPct: 48
|
atkPct: 48
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"来歆余响4": {
|
来歆余响4: {
|
||||||
title: "余响4:触发提高普攻[aPlus]伤害",
|
title: '余响4:触发提高普攻[aPlus]伤害',
|
||||||
data: {
|
data: {
|
||||||
aPlus: ({ attr }) => (attr.atk.base + attr.atk.plus + attr.atk.pct * attr.atk.base / 100) * 0.7
|
aPlus: ({ attr }) => (attr.atk.base + attr.atk.plus + attr.atk.pct * attr.atk.base / 100) * 0.7
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"被怜爱的少女4": {
|
被怜爱的少女4: {
|
||||||
title: "少女4:施放元素战技或元素爆发后,受治疗效果加成提高20%",
|
title: '少女4:施放元素战技或元素爆发后,受治疗效果加成提高20%',
|
||||||
data: {
|
data: {
|
||||||
healInc: 20
|
healInc: 20
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"翠绿之影4": {
|
翠绿之影4: {
|
||||||
title: "翠绿4:扩散反应造成的伤害提升60%,降低对应元素抗性40%",
|
title: '翠绿4:扩散反应造成的伤害提升60%,降低对应元素抗性40%',
|
||||||
sort: 5,
|
sort: 5,
|
||||||
data: {
|
data: {
|
||||||
ks: 60,
|
ks: 60,
|
||||||
fykx: 40
|
fykx: 40
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"如雷的盛怒4": {
|
如雷的盛怒4: {
|
||||||
title: "如雷4:超载、感电、超导反应造成的伤害提升40%",
|
title: '如雷4:超载、感电、超导反应造成的伤害提升40%',
|
||||||
data: {
|
data: {
|
||||||
cz: 40,
|
cz: 40,
|
||||||
gd: 40,
|
gd: 40,
|
||||||
|
@ -9,93 +9,91 @@ export const attrValue = {
|
|||||||
dmg: 5.825,
|
dmg: 5.825,
|
||||||
phy: 7.288,
|
phy: 7.288,
|
||||||
heal: 4.487
|
heal: 4.487
|
||||||
};
|
}
|
||||||
export const attrMap = {
|
export const attrMap = {
|
||||||
atk: { title: "大攻击", format: "pct", type: "normal", value: 5.83, text: "5.83%" },
|
atk: { title: '大攻击', format: 'pct', type: 'normal', value: 5.83, text: '5.83%' },
|
||||||
atkPlus: { title: "小攻击", format: "comma", type: "plus", },
|
atkPlus: { title: '小攻击', format: 'comma', type: 'plus' },
|
||||||
def: { title: "大防御", format: "pct", type: "normal", value: 7.29, text: "7.29%" },
|
def: { title: '大防御', format: 'pct', type: 'normal', value: 7.29, text: '7.29%' },
|
||||||
defPlus: { title: "小防御", format: "comma", type: "plus" },
|
defPlus: { title: '小防御', format: 'comma', type: 'plus' },
|
||||||
hp: { title: "大生命", format: "pct", type: "normal", value: 5.83, text: "5.83%" },
|
hp: { title: '大生命', format: 'pct', type: 'normal', value: 5.83, text: '5.83%' },
|
||||||
hpPlus: { title: "小生命", format: "comma", type: "plus" },
|
hpPlus: { title: '小生命', format: 'comma', type: 'plus' },
|
||||||
cp: { title: "暴击率", format: "pct", type: "normal", value: 3.89, text: "3.89%" },
|
cp: { title: '暴击率', format: 'pct', type: 'normal', value: 3.89, text: '3.89%' },
|
||||||
cd: { title: "暴击伤害", format: "pct", type: "normal", value: 7.77, text: "7.77%" },
|
cd: { title: '暴击伤害', format: 'pct', type: 'normal', value: 7.77, text: '7.77%' },
|
||||||
mastery: { title: "元素精通", format: "comma", type: "normal", value: 23.31, text: "23.31" },
|
mastery: { title: '元素精通', format: 'comma', type: 'normal', value: 23.31, text: '23.31' },
|
||||||
recharge: { title: "充能效率", format: "pct", type: "normal", value: 23.31, text: "23.31" },
|
recharge: { title: '充能效率', format: 'pct', type: 'normal', value: 23.31, text: '23.31' },
|
||||||
dmg: { title: "元素伤害", format: "pct", type: "normal", value: 5.825, text: "5.83%" },
|
dmg: { title: '元素伤害', format: 'pct', type: 'normal', value: 5.825, text: '5.83%' },
|
||||||
phy: { title: "物伤加成", format: "pct", type: "normal", value: 7.288, text: "7.29%" },
|
phy: { title: '物伤加成', format: 'pct', type: 'normal', value: 7.288, text: '7.29%' },
|
||||||
heal: { title: "治疗加成", format: "pct", type: "normal", value: 4.487, text: "4.49%" },
|
heal: { title: '治疗加成', format: 'pct', type: 'normal', value: 4.487, text: '4.49%' }
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
let anMap = {};
|
|
||||||
for (let attr in attrMap) {
|
|
||||||
anMap[attrMap[attr].title] = attr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const attrNameMap = anMap;
|
let anMap = {}
|
||||||
|
for (let attr in attrMap) {
|
||||||
|
anMap[attrMap[attr].title] = attr
|
||||||
|
}
|
||||||
|
|
||||||
|
export const attrNameMap = anMap
|
||||||
|
|
||||||
export const mainAttr = {
|
export const mainAttr = {
|
||||||
3: "atk,def,hp,mastery,recharge".split(","),
|
3: 'atk,def,hp,mastery,recharge'.split(','),
|
||||||
4: "atk,def,hp,mastery,dmg,phy".split(","),
|
4: 'atk,def,hp,mastery,dmg,phy'.split(','),
|
||||||
5: "atk,def,hp,mastery,recharge,heal,cp,cd".split(",")
|
5: 'atk,def,hp,mastery,recharge,heal,cp,cd'.split(',')
|
||||||
};
|
}
|
||||||
|
|
||||||
export const subAttr = "atk,def,hp,mastery,recharge,cp,cd".split(",")
|
export const subAttr = 'atk,def,hp,mastery,recharge,cp,cd'.split(',')
|
||||||
|
|
||||||
export const usefulAttr = {
|
export const usefulAttr = {
|
||||||
'神里绫人': { hp: 50, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
神里绫人: { hp: 50, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'八重神子': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
八重神子: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'申鹤': { hp: 0, atk: 100, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
申鹤: { hp: 0, atk: 100, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'云堇': { hp: 0, atk: 0, def: 100, cp: 50, cd: 50, mastery: 0, dmg: 25, phy: 0, recharge: 90, heal: 0 },
|
云堇: { hp: 0, atk: 0, def: 100, cp: 50, cd: 50, mastery: 0, dmg: 25, phy: 0, recharge: 90, heal: 0 },
|
||||||
'荒泷一斗': { hp: 0, atk: 50, def: 100, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 30, heal: 0 },
|
荒泷一斗: { hp: 0, atk: 50, def: 100, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 30, heal: 0 },
|
||||||
'五郎': { hp: 0, atk: 50, def: 100, cp: 50, cd: 50, mastery: 0, dmg: 25, phy: 0, recharge: 90, heal: 0 },
|
五郎: { hp: 0, atk: 50, def: 100, cp: 50, cd: 50, mastery: 0, dmg: 25, phy: 0, recharge: 90, heal: 0 },
|
||||||
'班尼特': { hp: 100, atk: 50, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 70, phy: 0, recharge: 55, heal: 100 },
|
班尼特: { hp: 100, atk: 50, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 70, phy: 0, recharge: 55, heal: 100 },
|
||||||
'枫原万叶': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 100, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
枫原万叶: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 100, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'雷电将军': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 75, phy: 0, recharge: 90, heal: 0 },
|
雷电将军: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 75, phy: 0, recharge: 90, heal: 0 },
|
||||||
'行秋': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 75, heal: 0 },
|
行秋: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 75, heal: 0 },
|
||||||
'钟离': { hp: 80, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 50, recharge: 55, heal: 0 },
|
钟离: { hp: 80, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 50, recharge: 55, heal: 0 },
|
||||||
'钟离-血牛': { hp: 100, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 75, phy: 0, recharge: 55, heal: 0 },
|
'钟离-血牛': { hp: 100, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 75, phy: 0, recharge: 55, heal: 0 },
|
||||||
'神里绫华': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
神里绫华: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'香菱': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
香菱: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'胡桃': { hp: 80, atk: 50, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
胡桃: { hp: 80, atk: 50, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'甘雨': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
甘雨: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'甘雨-永冻': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
'甘雨-永冻': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'温迪': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
温迪: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'珊瑚宫心海': { hp: 100, atk: 50, def: 0, cp: 0, cd: 0, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 100 },
|
珊瑚宫心海: { hp: 100, atk: 50, def: 0, cp: 0, cd: 0, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 100 },
|
||||||
'莫娜': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 75, heal: 0 },
|
莫娜: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 75, heal: 0 },
|
||||||
'阿贝多': { hp: 0, atk: 0, def: 100, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
阿贝多: { hp: 0, atk: 0, def: 100, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'迪奥娜': { hp: 100, atk: 50, def: 0, cp: 50, cd: 50, mastery: 0, dmg: 100, phy: 0, recharge: 90, heal: 100 },
|
迪奥娜: { hp: 100, atk: 50, def: 0, cp: 50, cd: 50, mastery: 0, dmg: 100, phy: 0, recharge: 90, heal: 100 },
|
||||||
'优菈': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 40, phy: 100, recharge: 55, heal: 0 },
|
优菈: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 40, phy: 100, recharge: 55, heal: 0 },
|
||||||
'达达利亚': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
达达利亚: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'魈': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
魈: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'宵宫': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
宵宫: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'九条裟罗': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
九条裟罗: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'琴': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 55, heal: 100 },
|
琴: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 55, heal: 100 },
|
||||||
'菲谢尔': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 60, recharge: 0, heal: 0 },
|
菲谢尔: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 60, recharge: 0, heal: 0 },
|
||||||
'罗莎莉亚': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 70, phy: 80, recharge: 0, heal: 0 },
|
罗莎莉亚: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 70, phy: 80, recharge: 0, heal: 0 },
|
||||||
'可莉': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
可莉: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'凝光': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
凝光: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'北斗': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
北斗: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'刻晴': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 0, heal: 0 },
|
刻晴: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 0, heal: 0 },
|
||||||
'托马': { hp: 100, atk: 50, def: 0, cp: 50, cd: 50, mastery: 0, dmg: 75, phy: 0, recharge: 90, heal: 0 },
|
托马: { hp: 100, atk: 50, def: 0, cp: 50, cd: 50, mastery: 0, dmg: 75, phy: 0, recharge: 90, heal: 0 },
|
||||||
'迪卢克': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
迪卢克: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'芭芭拉': { hp: 100, atk: 50, def: 0, cp: 50, cd: 50, mastery: 0, dmg: 80, phy: 0, recharge: 55, heal: 100 },
|
芭芭拉: { hp: 100, atk: 50, def: 0, cp: 50, cd: 50, mastery: 0, dmg: 80, phy: 0, recharge: 55, heal: 100 },
|
||||||
'芭芭拉-暴力': { hp: 50, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 50 },
|
'芭芭拉-暴力': { hp: 50, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 50 },
|
||||||
'诺艾尔': { hp: 0, atk: 50, def: 90, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 70, heal: 0 },
|
诺艾尔: { hp: 0, atk: 50, def: 90, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 70, heal: 0 },
|
||||||
'旅行者': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
旅行者: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'重云': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
重云: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'七七': { hp: 0, atk: 100, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 60, phy: 70, recharge: 55, heal: 100 },
|
七七: { hp: 0, atk: 100, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 60, phy: 70, recharge: 55, heal: 100 },
|
||||||
'凯亚': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 0, heal: 0 },
|
凯亚: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 0, heal: 0 },
|
||||||
'烟绯': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
烟绯: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'早柚': { hp: 0, atk: 50, def: 0, cp: 50, cd: 50, mastery: 100, dmg: 80, phy: 0, recharge: 55, heal: 100 },
|
早柚: { hp: 0, atk: 50, def: 0, cp: 50, cd: 50, mastery: 100, dmg: 80, phy: 0, recharge: 55, heal: 100 },
|
||||||
'安柏': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 100, recharge: 0, heal: 0 },
|
安柏: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 100, recharge: 0, heal: 0 },
|
||||||
'丽莎': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
丽莎: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'埃洛伊': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
埃洛伊: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
||||||
'辛焱': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 50, phy: 100, recharge: 0, heal: 0 },
|
辛焱: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 50, phy: 100, recharge: 0, heal: 0 },
|
||||||
'砂糖': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 100, dmg: 40, phy: 0, recharge: 55, heal: 0 },
|
砂糖: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 100, dmg: 40, phy: 0, recharge: 55, heal: 0 },
|
||||||
'雷泽': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 50, phy: 100, recharge: 0, heal: 0 },
|
雷泽: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 50, phy: 100, recharge: 0, heal: 0 },
|
||||||
'夜兰': { hp: 80, atk: 0, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
夜兰: { hp: 80, atk: 0, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
|
||||||
'久岐忍': { hp: 100, atk: 50, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 100 },
|
久岐忍: { hp: 100, atk: 50, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 100 },
|
||||||
'鹿野院平藏': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
|
鹿野院平藏: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 }
|
||||||
};
|
}
|
||||||
|
@ -1,109 +1,108 @@
|
|||||||
export const attrMark = {
|
export const attrMark = {
|
||||||
"暴击率": 2,
|
暴击率: 2,
|
||||||
"暴击伤害": 1,
|
暴击伤害: 1,
|
||||||
"元素精通": 0.25,
|
元素精通: 0.25,
|
||||||
"大攻击": 1,
|
大攻击: 1,
|
||||||
"大生命": 0.86,
|
大生命: 0.86,
|
||||||
"大防御": 0.7,
|
大防御: 0.7,
|
||||||
"小攻击": 0.12,
|
小攻击: 0.12,
|
||||||
"小生命": 0.014,
|
小生命: 0.014,
|
||||||
"小防御": 0.18,
|
小防御: 0.18,
|
||||||
"充能效率": 0.65
|
充能效率: 0.65
|
||||||
}
|
}
|
||||||
|
|
||||||
export const maxMark = {
|
export const maxMark = {
|
||||||
"暴击率": 46.6,
|
暴击率: 46.6,
|
||||||
"暴击伤害": 46.6,
|
暴击伤害: 46.6,
|
||||||
"元素精通": 35,
|
元素精通: 35,
|
||||||
"大攻击": 35,
|
大攻击: 35,
|
||||||
"大生命": 30.1,
|
大生命: 30.1,
|
||||||
"大防御": 30.59,
|
大防御: 30.59,
|
||||||
"小攻击": 14.04,
|
小攻击: 14.04,
|
||||||
"小生命": 25.1,
|
小生命: 25.1,
|
||||||
"小防御": 25.02,
|
小防御: 25.02,
|
||||||
"充能效率": 25.2
|
充能效率: 25.2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const attrMap = {
|
export const attrMap = {
|
||||||
atk: {
|
atk: {
|
||||||
title: "攻击力",
|
title: '攻击力',
|
||||||
attr: "小攻击,大攻击"
|
attr: '小攻击,大攻击'
|
||||||
},
|
},
|
||||||
def: {
|
def: {
|
||||||
title: "防御力",
|
title: '防御力',
|
||||||
attr: "小防御,大防御"
|
attr: '小防御,大防御'
|
||||||
},
|
},
|
||||||
hp: {
|
hp: {
|
||||||
title: "生命值",
|
title: '生命值',
|
||||||
attr: "小生命,大生命"
|
attr: '小生命,大生命'
|
||||||
},
|
},
|
||||||
cRate: {
|
cRate: {
|
||||||
title: "暴击率",
|
title: '暴击率',
|
||||||
attr: "暴击率"
|
attr: '暴击率'
|
||||||
},
|
},
|
||||||
cDmg: {
|
cDmg: {
|
||||||
title: "暴击伤害",
|
title: '暴击伤害',
|
||||||
attr: "暴击伤害"
|
attr: '暴击伤害'
|
||||||
},
|
},
|
||||||
mastery: {
|
mastery: {
|
||||||
title: "元素精通",
|
title: '元素精通',
|
||||||
attr: "元素精通"
|
attr: '元素精通'
|
||||||
},
|
},
|
||||||
recharge: {
|
recharge: {
|
||||||
title: "充能效率",
|
title: '充能效率',
|
||||||
attr: "充能效率"
|
attr: '充能效率'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const usefulAttr = {
|
export const usefulAttr = {
|
||||||
"神里绫人": "hp,atk,cRate,cDmg,mastery",
|
神里绫人: 'hp,atk,cRate,cDmg,mastery',
|
||||||
"八重神子": "atk,cRate,cDmg,mastery,",
|
八重神子: 'atk,cRate,cDmg,mastery,',
|
||||||
"申鹤": "atk,recharge",
|
申鹤: 'atk,recharge',
|
||||||
"云堇": "def,recharge",
|
云堇: 'def,recharge',
|
||||||
"荒泷一斗": "def,cRate,cDmg",
|
荒泷一斗: 'def,cRate,cDmg',
|
||||||
"五郎": "def,recharge",
|
五郎: 'def,recharge',
|
||||||
"班尼特": "hp,atk,cRate,cDmg,recharge",
|
班尼特: 'hp,atk,cRate,cDmg,recharge',
|
||||||
"枫原万叶": "mastery,cRate,cDmg,recharge",
|
枫原万叶: 'mastery,cRate,cDmg,recharge',
|
||||||
"雷电将军": "atk,cRate,cDmg,recharge",
|
雷电将军: 'atk,cRate,cDmg,recharge',
|
||||||
"行秋": "atk,cRate,cDmg,recharge",
|
行秋: 'atk,cRate,cDmg,recharge',
|
||||||
"钟离": "hp,atk,cRate,cDmg,recharge",
|
钟离: 'hp,atk,cRate,cDmg,recharge',
|
||||||
"神里绫华": "atk,cRate,cDmg",
|
神里绫华: 'atk,cRate,cDmg',
|
||||||
"香菱": "atk,cRate,cDmg,recharge,mastery",
|
香菱: 'atk,cRate,cDmg,recharge,mastery',
|
||||||
"胡桃": "hp,cRate,cDmg,mastery",
|
胡桃: 'hp,cRate,cDmg,mastery',
|
||||||
"甘雨": "atk,cRate,cDmg,mastery",
|
甘雨: 'atk,cRate,cDmg,mastery',
|
||||||
"温迪": "mastery,cRate,cDmg,recharge",
|
温迪: 'mastery,cRate,cDmg,recharge',
|
||||||
"珊瑚宫心海": "hp,recharge",
|
珊瑚宫心海: 'hp,recharge',
|
||||||
"莫娜": "mastery,cRate,cDmg,recharge",
|
莫娜: 'mastery,cRate,cDmg,recharge',
|
||||||
"阿贝多": "def,cRate,cDmg",
|
阿贝多: 'def,cRate,cDmg',
|
||||||
"迪奥娜": "hp,recharge",
|
迪奥娜: 'hp,recharge',
|
||||||
"优菈": "atk,cRate,cDmg",
|
优菈: 'atk,cRate,cDmg',
|
||||||
"达达利亚": "atk,cRate,cDmg,mastery",
|
达达利亚: 'atk,cRate,cDmg,mastery',
|
||||||
"魈": "atk,cRate,cDmg",
|
魈: 'atk,cRate,cDmg',
|
||||||
"宵宫": "atk,cRate,cDmg,mastery",
|
宵宫: 'atk,cRate,cDmg,mastery',
|
||||||
"九条裟罗": "atk,cRate,cDmg,recharge",
|
九条裟罗: 'atk,cRate,cDmg,recharge',
|
||||||
"琴": "atk,cRate,cDmg,recharge",
|
琴: 'atk,cRate,cDmg,recharge',
|
||||||
"菲谢尔": "atk,cRate,cDmg",
|
菲谢尔: 'atk,cRate,cDmg',
|
||||||
"罗莎莉亚": "atk,cRate,cDmg",
|
罗莎莉亚: 'atk,cRate,cDmg',
|
||||||
"可莉": "atk,cRate,cDmg",
|
可莉: 'atk,cRate,cDmg',
|
||||||
"凝光": "atk,cRate,cDmg",
|
凝光: 'atk,cRate,cDmg',
|
||||||
"北斗": "atk,cRate,cDmg",
|
北斗: 'atk,cRate,cDmg',
|
||||||
"刻晴": "atk,cRate,cDmg",
|
刻晴: 'atk,cRate,cDmg',
|
||||||
"托马": "hp,recharge",
|
托马: 'hp,recharge',
|
||||||
"迪卢克": "atk,cRate,cDmg,mastery",
|
迪卢克: 'atk,cRate,cDmg,mastery',
|
||||||
"芭芭拉": "hp,recharge",
|
芭芭拉: 'hp,recharge',
|
||||||
"诺艾尔": "def,cRate,cDmg",
|
诺艾尔: 'def,cRate,cDmg',
|
||||||
"旅行者": "atk,cRate,cDmg",
|
旅行者: 'atk,cRate,cDmg',
|
||||||
"重云": "atk,cRate,cDmg",
|
重云: 'atk,cRate,cDmg',
|
||||||
"七七": "atk,cRate,cDmg,recharge",
|
七七: 'atk,cRate,cDmg,recharge',
|
||||||
"凯亚": "atk,cRate,cDmg",
|
凯亚: 'atk,cRate,cDmg',
|
||||||
"烟绯": "atk,cRate,cDmg,mastery",
|
烟绯: 'atk,cRate,cDmg,mastery',
|
||||||
"早柚": "mastery,recharge",
|
早柚: 'mastery,recharge',
|
||||||
"安柏": "atk,cRate,cDmg,mastery",
|
安柏: 'atk,cRate,cDmg,mastery',
|
||||||
"丽莎": "atk,cRate,cDmg",
|
丽莎: 'atk,cRate,cDmg',
|
||||||
"埃洛伊": "atk,cRate,cDmg",
|
埃洛伊: 'atk,cRate,cDmg',
|
||||||
"辛焱": "atk,cRate,cDmg",
|
辛焱: 'atk,cRate,cDmg',
|
||||||
"砂糖": "mastery,recharge",
|
砂糖: 'mastery,recharge',
|
||||||
"雷泽": "atk,cRate,cDmg",
|
雷泽: 'atk,cRate,cDmg',
|
||||||
"夜兰": "hp,cRate,cDmg,recharge",
|
夜兰: 'hp,cRate,cDmg,recharge'
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user