mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2024-11-16 04:35:42 +00:00
* #更新角色面板
功能恢复
* 调整部分角色的评分词条权重值 * 修复小攻击、小防御、小生命有效词条未被正确高亮的问题
This commit is contained in:
parent
ac8e368d9b
commit
3267a68a3b
@ -1,3 +1,12 @@
|
||||
# 1.7.4
|
||||
|
||||
* `#角色面板` 圣遗物评分功能调整
|
||||
* 调整部分角色的评分词条权重值
|
||||
* 修复小攻击、小防御、小生命有效词条未被正确高亮的问题
|
||||
* `#更新角色面板` 功能恢复
|
||||
* 可对已有面板数据的角色手工输入面板属性,用于伤害测算
|
||||
* 暂不支持设置武器、圣遗物、命座、天赋。后续会增加支持
|
||||
|
||||
# 1.7.3
|
||||
|
||||
* `#角色面板`、`#圣遗物列表` 使用新的圣遗物评分逻辑计算评分
|
||||
|
@ -288,6 +288,7 @@ export async function wife(e, { render, User }) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 接管戳一戳面板,尚未完成 */
|
||||
async function pokeCharacter(e, { render }) {
|
||||
let MysApi = await e.getMysApi({
|
||||
auth: "all",
|
||||
@ -401,8 +402,6 @@ async function renderCard(e, avatar, render, renderType = "card") {
|
||||
ds: char.getData("name,id,title,desc"),
|
||||
}, { e, render, scale: 1.6 });
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -458,7 +457,9 @@ async function getTalent(e, avatars) {
|
||||
return skill;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 自动更新面板数据
|
||||
* */
|
||||
async function autoRefresh(e) {
|
||||
|
||||
let uid = await getTargetUid(e);
|
||||
@ -514,17 +515,21 @@ export async function getProfile(e, mode = "refresh") {
|
||||
if (mode === "input") {
|
||||
if (e.inputData.trim().length < 5) {
|
||||
e.reply(`【输入示例】\n#录入夜兰面板 生命14450+25469, 攻击652+444, 防御548+144, 元素精通84, 暴击76.3, 爆伤194.2, 治疗0,充能112.3,元素伤害61.6,物伤0`)
|
||||
return await profileHelp(e);
|
||||
return true;
|
||||
//await profileHelp(e);
|
||||
}
|
||||
|
||||
let ret = Profile.inputProfile(e.selfUser.uid, e);
|
||||
|
||||
let ret = Profile.inputProfile(uid, e);
|
||||
let char = Character.get(e.avatar);
|
||||
if (ret) {
|
||||
if (lodash.isString(ret)) {
|
||||
e.reply(ret);
|
||||
return true;
|
||||
} else if (ret) {
|
||||
e.reply(`${char.name}信息手工录入完成,你可以使用 #角色名+面板 / #角色名+伤害 来查看详细角色面板属性了`)
|
||||
} else {
|
||||
e.reply(`${char.name}信息手工录入失败,请检查录入格式。回复 #角色面板帮助 可查看录入提示`);
|
||||
e.reply(`【输入示例】\n#录入夜兰面板 生命14450+25469, 攻击652+444, 防御548+144, 元素精通84, 暴击76.3, 爆伤194.2, 治疗0,充能112.3,元素伤害61.6,物伤0
|
||||
`)
|
||||
e.reply(`【输入示例】\n#录入夜兰面板 生命14450+25469, 攻击652+444, 防御548+144, 元素精通84, 暴击76.3, 爆伤194.2, 治疗0,充能112.3,元素伤害61.6,物伤0`)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -554,7 +559,9 @@ export async function getProfile(e, mode = "refresh") {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 获取角色数据
|
||||
/*
|
||||
* 获取角色数据
|
||||
* */
|
||||
function getCharacterData(avatars) {
|
||||
let list = [];
|
||||
let set = {};
|
||||
@ -719,7 +726,7 @@ export async function renderProfile(e, char, render, mode = "profile", params =
|
||||
}
|
||||
await profileHelp(e);
|
||||
return true;
|
||||
} else if (profile.dataSource !== "enka") {
|
||||
} else if (!['enka', 'input2'].includes(profile.dataSource)) {
|
||||
if (!await refresh()) {
|
||||
e.reply(`由于数据格式升级,请重新获取面板信息后查看`);
|
||||
}
|
||||
@ -855,6 +862,9 @@ export async function enemyLv(e) {
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* 圣遗物列表
|
||||
* */
|
||||
export async function getArtis(e, { render }) {
|
||||
let MysApi = await e.getMysApi({
|
||||
auth: "all",
|
||||
@ -927,6 +937,9 @@ export async function getArtis(e, { render }) {
|
||||
}, { e, render, scale: 1.4 });
|
||||
}
|
||||
|
||||
/*
|
||||
* 获取面板列表
|
||||
* */
|
||||
export async function getProfileAll(e) {
|
||||
|
||||
let uid = await getTargetUid(e);
|
||||
|
@ -144,7 +144,7 @@ let Calc = {
|
||||
talent(profile, char) {
|
||||
let ret = {};
|
||||
|
||||
let talentData = profile.talent;
|
||||
let talentData = profile.talent || {};
|
||||
|
||||
lodash.forEach(['a', 'e', 'q'], (key) => {
|
||||
let lv = talentData[key].level_current * 1 || 1,
|
||||
|
@ -166,9 +166,14 @@ let Profile = {
|
||||
|
||||
inputProfile(uid, e) {
|
||||
let { avatar, inputData } = e;
|
||||
let char = Character.get(avatar);
|
||||
let originalData = Profile.get(uid, char.id);
|
||||
if (!originalData || originalData.dataSource !== "enka") {
|
||||
return `请先获取${char.name}的面板数据后,再进行面板数据更新`;
|
||||
}
|
||||
inputData = inputData.replace("#", "");
|
||||
inputData = inputData.replace(/,|;|、|\n|\t/g, ",");
|
||||
let attr = {};
|
||||
let attr = originalData.attr || {};
|
||||
let attrMap = {
|
||||
hp: /生命/,
|
||||
def: /防御/,
|
||||
@ -233,20 +238,16 @@ let Profile = {
|
||||
return false;
|
||||
}
|
||||
|
||||
let char = Character.get(avatar);
|
||||
let data = {
|
||||
id: char.id,
|
||||
name: char.name,
|
||||
dataSource: "input",
|
||||
attr
|
||||
}
|
||||
originalData.dataSource = "input2";
|
||||
originalData.attr = attr;
|
||||
|
||||
let userData = {};
|
||||
const userFile = `${userPath}/${uid}.json`;
|
||||
if (fs.existsSync(userFile)) {
|
||||
userData = JSON.parse(fs.readFileSync(userFile, "utf8")) || {};
|
||||
}
|
||||
userData.chars = userData.chars || {};
|
||||
userData.chars[avatar] = data;
|
||||
userData.chars[avatar] = originalData;
|
||||
fs.writeFileSync(userFile, JSON.stringify(userData), "", " ");
|
||||
return true;
|
||||
}
|
||||
|
@ -1,11 +1,5 @@
|
||||
import {
|
||||
attrValue,
|
||||
attrNameMap,
|
||||
attrMap,
|
||||
mainAttr,
|
||||
subAttr,
|
||||
usefulAttr
|
||||
} from "../../resources/meta/reliquaries/reliquaries-mark-new.js";
|
||||
import { attrValue, attrNameMap, attrMap, mainAttr, subAttr, usefulAttr }
|
||||
from "../../resources/meta/reliquaries/reliquaries-mark-new.js";
|
||||
import { Character } from "../models.js";
|
||||
import lodash from "lodash";
|
||||
|
||||
@ -37,14 +31,19 @@ let Reliquaries = {
|
||||
let maxMark = Reliquaries.getMaxMark(attrWeight);
|
||||
let titleMark = {}, titleWeight = {};
|
||||
lodash.forEach(attrMark, (mark, attr) => {
|
||||
titleMark[attrMap[attr]] = mark;
|
||||
titleWeight[attrMap[attr]] = attrWeight[attr] || 0;
|
||||
if (/大/.test(attrMap[attr])) {
|
||||
let newAttr = attrMap[attr];
|
||||
let newArr = newAttr.replace("大", "小");
|
||||
titleWeight[newArr] = attrWeight[attr] || 0;
|
||||
let aTitle = attrMap[attr];
|
||||
if (/小/.test(aTitle)) {
|
||||
return;
|
||||
}
|
||||
titleMark[aTitle] = mark;
|
||||
titleWeight[aTitle] = attrWeight[attr] || 0;
|
||||
if (/大/.test(aTitle)) {
|
||||
let sTitle = aTitle.replace("大", "小");
|
||||
console.log(sTitle, aTitle, attrWeight[attr])
|
||||
titleWeight[sTitle] = titleWeight[aTitle];
|
||||
}
|
||||
})
|
||||
console.log(titleWeight);
|
||||
charCfg[name] = {
|
||||
weight: attrWeight,
|
||||
mark: attrMark,
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
{{set weapon = data.weapon}}
|
||||
{{set talent = data.talent}}
|
||||
{{set dataSrouce = data.dataSource}}
|
||||
{{set dataSource = data.dataSource}}
|
||||
|
||||
|
||||
{{block 'main'}}
|
||||
@ -52,7 +52,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{if mode === "profile" && dataSource !== "input"}}
|
||||
{{if mode === "profile" && dataSource !== "input2"}}
|
||||
<div class="artis">
|
||||
<div>
|
||||
<div class="item weapon">
|
||||
@ -84,7 +84,8 @@
|
||||
<li class="arti-main"><span class="title">{{ds.main[0]}}</span><span class="val">+{{ds.main[1]}}</span></li>
|
||||
{{each ds.attrs attr}}
|
||||
{{if attr[0]}}
|
||||
<li class="{{usefulMark[attr[0]]*1 > 79.9 ?`great`:(usefulMark[attr[0]]*1>0 ? `useful`:`nouse`)}}"><span class="title">{{attr[0]}} </span><span
|
||||
<li class="{{usefulMark[attr[0]]*1 > 79.9 ?`great`:(usefulMark[attr[0]]*1>0 ? `useful`:`nouse`)}}"><span
|
||||
class="title">{{attr[0]}} </span><span
|
||||
class="val">+{{attr[1]}}</span></li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
@ -95,21 +96,24 @@
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{if mode === "profile" && dataSource === "input"}}
|
||||
{{if dataSource === "input2"}}
|
||||
<div class="cont">
|
||||
<div class="cont-footer dmg-desc">
|
||||
面板信息来源于手工输入,面板信息及伤害计算可能不准确。通过<strong>#录入{{name}}面板</strong>可录入面板数据
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{if mode === "profile" && dataSource === "input2"}}
|
||||
<div class="artis input-mode">
|
||||
|
||||
<div class="item weapon">
|
||||
<img src="{{_sys_res_path}}/genshin/logo/weapon/{{weapon.name}}.png"/>
|
||||
<div class="head">
|
||||
<strong>{{weapon.name}}</strong>
|
||||
<div class="star star-{{weapon.rarity}}"></div>
|
||||
<span>Lv.{{weapon.level}} <span
|
||||
class="affix affix-{{weapon.affix_level}}">精{{weapon.affix_level}}</span></span>
|
||||
<div class="star star-{{weapon.star}}"></div>
|
||||
<span>Lv.{{weapon.leve || weapon.level}} <span
|
||||
class="affix affix-{{weapon.affix}}">精{{weapon.affix}}</span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 234 KiB After Width: | Height: | Size: 233 KiB |
@ -31,14 +31,7 @@ for (let attr in attrMap) {
|
||||
}
|
||||
|
||||
export const attrNameMap = anMap;
|
||||
/* 当前位置主词条不可能出现词缀*/
|
||||
export const banAttr = {
|
||||
1: "hpPlus,dmg,phy,heal".split(","),
|
||||
2: "atkPlus,dmg,phy,heal".split(","),
|
||||
3: "dmg,phy,heal".split(","),
|
||||
4: "heal".split(","),
|
||||
5: "dmg,phy".split(",")
|
||||
};
|
||||
|
||||
|
||||
export const mainAttr = {
|
||||
3: "atk,def,hp,mastery,recharge".split(","),
|
||||
@ -60,10 +53,12 @@ export const usefulAttr = {
|
||||
'雷电将军': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 20, dmg: 75, phy: 0, recharge: 90, heal: 0 },
|
||||
'行秋': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 20, dmg: 100, phy: 0, recharge: 65, heal: 0 },
|
||||
'钟离': { hp: 80, atk: 70, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 50, recharge: 55, heal: 0 },
|
||||
'钟离-血牛': { hp: 100, atk: 50, def: 0, cp: 75, cd: 75, mastery: 0, dmg: 75, phy: 0, recharge: 55, heal: 0 },
|
||||
'神里绫华': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 30, dmg: 100, phy: 0, recharge: 20, heal: 0 },
|
||||
'香菱': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 75, heal: 0 },
|
||||
'胡桃': { hp: 80, atk: 30, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 35, heal: 0 },
|
||||
'甘雨': { hp: 0, atk: 90, def: 0, cp: 100, cd: 100, mastery: 50, dmg: 100, phy: 0, recharge: 40, heal: 0 },
|
||||
'甘雨': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 40, 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: 60, dmg: 100, phy: 0, recharge: 80, heal: 0 },
|
||||
'珊瑚宫心海': { hp: 100, atk: 50, def: 0, cp: 0, cd: 0, mastery: 0, dmg: 100, phy: 0, recharge: 65, heal: 100 },
|
||||
'莫娜': { hp: 0, atk: 50, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 80, heal: 0 },
|
||||
@ -72,7 +67,7 @@ export const usefulAttr = {
|
||||
'优菈': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 40, phy: 100, recharge: 45, heal: 0 },
|
||||
'达达利亚': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 50, dmg: 100, phy: 0, recharge: 45, heal: 0 },
|
||||
'魈': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 20, 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: 60, 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: 90, 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: 30, dmg: 100, phy: 60, recharge: 30, heal: 0 },
|
||||
@ -84,6 +79,7 @@ export const usefulAttr = {
|
||||
'托马': { hp: 75, atk: 50, def: 0, cp: 50, cd: 50, mastery: 0, dmg: 75, phy: 0, recharge: 55, heal: 40 },
|
||||
'迪卢克': { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 50, dmg: 100, phy: 0, recharge: 40, heal: 0 },
|
||||
'芭芭拉': { hp: 80, atk: 50, def: 0, cp: 50, cd: 50, mastery: 15, 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: 0, atk: 75, def: 100, 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: 70, heal: 0 },
|
||||
|
@ -29,7 +29,7 @@ let polearm = {
|
||||
},
|
||||
"匣里灭辰": {
|
||||
check: ({ element }) => ['水', '火'].includes(element),
|
||||
title: "对于水或或元素影响的敌人造成伤害提高[dmg]%",
|
||||
title: "对于水或火元素影响的敌人造成伤害提高[dmg]%",
|
||||
refine: {
|
||||
dmg: step(20, 4),
|
||||
phy: step(20, 4),
|
||||
|
Loading…
Reference in New Issue
Block a user