优化代码
This commit is contained in:
parent
3be8389acf
commit
0780756b11
17
json_data.js
17
json_data.js
|
@ -1,4 +1,19 @@
|
|||
//类型允许的潜觉杀,前面的数字是官方数据的类型编号,后面的杀是自己做的图片中的潜觉序号
|
||||
const dataSourceList = [ //几个不同的游戏服务区
|
||||
{
|
||||
code:"ja",
|
||||
source:"パズル&ドラゴンズ"
|
||||
},
|
||||
{
|
||||
code:"en",
|
||||
source:"Puzzle & Dragons"
|
||||
},
|
||||
{
|
||||
code:"ko",
|
||||
source:"퍼즐앤드래곤"
|
||||
},
|
||||
];
|
||||
|
||||
//类型允许的潜觉杀,前面的数字是官方数据的类型编号,后面的杀是自己做的图片中的潜觉序号
|
||||
const type_allowable_latent = {
|
||||
"0":[], //0进化
|
||||
"12":[], //12觉醒
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
guideURL:"http://www.puzzledragonx.com/en/monster.asp?n=$1"
|
||||
},
|
||||
{
|
||||
name:"中文(简体)原版技能",i18n:"zh",searchlist:["chs","ja"],
|
||||
name:"中文(繁體)",i18n:"zh-TW",searchlist:["cht","ja"],
|
||||
guideURL:"http://pad.skyozora.com/pets/$1"
|
||||
},
|
||||
{
|
||||
|
@ -12,7 +12,7 @@
|
|||
guideURL:"http://pad.skyozora.com/pets/$1"
|
||||
},
|
||||
{
|
||||
name:"中文(繁體)",i18n:"zh-TW",searchlist:["cht","ja"],
|
||||
name:"中文(简体)原版技能",i18n:"zh",searchlist:["chs","ja"],
|
||||
guideURL:"http://pad.skyozora.com/pets/$1"
|
||||
},
|
||||
{
|
||||
|
|
156
script.js
156
script.js
|
@ -1,24 +1,9 @@
|
|||
const dataSourceList = [ //几个不同的游戏服务区
|
||||
{
|
||||
code:"ja",
|
||||
source:"パズル&ドラゴンズ"
|
||||
},
|
||||
{
|
||||
code:"en",
|
||||
source:"Puzzle & Dragons"
|
||||
},
|
||||
{
|
||||
code:"ko",
|
||||
source:"퍼즐앤드래곤"
|
||||
},
|
||||
];
|
||||
|
||||
var Cards; //怪物数据
|
||||
var Skills; //技能数据
|
||||
var currentLanguage; //当前语言
|
||||
var currentDataSource; //当前数据
|
||||
|
||||
var interchangeSvg; //储存划线的SVG
|
||||
var changeSwapToCopy; //储存交换“复制”和“替换”
|
||||
var controlBox; //储存整个controlBox
|
||||
var statusLine; //储存状态栏
|
||||
var formationBox; //储存整个formationBox
|
||||
|
@ -27,6 +12,25 @@ var allMembers = []; //储存所有成员,包含辅助
|
|||
var editBox; //储存整个editBox
|
||||
var showSearch; //整个程序都可以用的显示搜索函数
|
||||
|
||||
//数组去重
|
||||
/* https://www.cnblogs.com/baiyangyuanzi/p/6726258.html
|
||||
* 实现思路:获取没重复的最右一值放入新数组。
|
||||
* (检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)*/
|
||||
Array.prototype.uniq = function()
|
||||
{
|
||||
let temp = [];
|
||||
const l = this.length;
|
||||
for(let i = 0; i < l; i++) {
|
||||
for(let j = i + 1; j < l; j++){
|
||||
if (this[i] === this[j]){
|
||||
i++;
|
||||
j = i;
|
||||
}
|
||||
}
|
||||
temp.push(this[i]);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
//队员基本的留空
|
||||
var Member = function(){
|
||||
this.id=0;
|
||||
|
@ -294,7 +298,6 @@ window.onload = function()
|
|||
controlBox = document.body.querySelector(".control-box");
|
||||
statusLine = controlBox.querySelector(".status"); //显示当前状态的
|
||||
const helpLink = controlBox.querySelector(".help-link");
|
||||
changeSwapToCopy = controlBox.querySelector("#change-swap-to-copy");
|
||||
interchangeSVG = document.body.querySelector("#interchange-line");
|
||||
interchangeSVG.line = interchangeSVG.querySelector("g line");
|
||||
interchangeSVG.changePoint = function(p1,p2){
|
||||
|
@ -312,62 +315,45 @@ window.onload = function()
|
|||
toggleShowMonSkillCd();
|
||||
|
||||
formationBox = document.body.querySelector(".formation-box");
|
||||
|
||||
editBox = document.body.querySelector(".edit-box");
|
||||
|
||||
|
||||
if (location.hostname.indexOf("gitee")>=0)
|
||||
{
|
||||
helpLink.hostname = "gitee.com";
|
||||
}
|
||||
if (location.hostname.includes("gitee")) { helpLink.hostname = "gitee.com"; }
|
||||
|
||||
//▼添加语言列表开始
|
||||
const langSelectDom = controlBox.querySelector(".languages");
|
||||
languageList.forEach(function(l){
|
||||
langSelectDom.options.add(new Option(l.name,l.i18n));
|
||||
});
|
||||
languageList.forEach(lang=>
|
||||
langSelectDom.options.add(new Option(lang.name,lang.i18n))
|
||||
);
|
||||
|
||||
const parameter_i18n = getQueryString("l") || getQueryString("lang"); //获取参数指定的语言
|
||||
const browser_i18n = (navigator.language || navigator.userLanguage); //获取浏览器语言
|
||||
let havingLanguage = languageList.filter(function(l){ //筛选出符合的语言
|
||||
if (parameter_i18n) //如果已指定就用指定的语言
|
||||
return parameter_i18n.indexOf(l.i18n)>=0;
|
||||
else //否则筛选浏览器默认语言
|
||||
return browser_i18n.indexOf(l.i18n)>=0;
|
||||
});
|
||||
currentLanguage = havingLanguage.length ?
|
||||
havingLanguage.pop() : //有语言使用最后一个
|
||||
languageList[0]; //没有找到指定语言的情况下,自动用第一个语言(英语)
|
||||
currentLanguage = languageList.find(lang=>{ //筛选出符合的语言
|
||||
if (parameter_i18n) //如果已指定就用指定的语言
|
||||
return parameter_i18n.includes(lang.i18n);
|
||||
else //否则筛选浏览器默认语言
|
||||
return browser_i18n.includes(lang.i18n);
|
||||
}) ||
|
||||
languageList[0]; //没有找到指定语言的情况下,自动用第一个语言(英语)
|
||||
document.head.querySelector("#language-css").href = "languages/"+currentLanguage.i18n+".css";
|
||||
|
||||
const langOptionArray = Array.prototype.slice.call(langSelectDom.options);
|
||||
langOptionArray.some(function(langOpt){
|
||||
if (langOpt.value == currentLanguage.i18n)
|
||||
{
|
||||
langOpt.selected = true;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
const langOptionArray = Array.from(langSelectDom.options);
|
||||
langOptionArray.find(langOpt=>langOpt.value == currentLanguage.i18n).selected = true;
|
||||
|
||||
//▲添加语言列表结束
|
||||
//▼添加数据来源列表开始
|
||||
const dataSelectDom = controlBox.querySelector(".datasource");
|
||||
dataSourceList.forEach(function(ds){
|
||||
dataSelectDom.options.add(new Option(ds.source,ds.code));
|
||||
});
|
||||
dataSourceList.forEach(ds=>
|
||||
dataSelectDom.options.add(new Option(ds.source,ds.code))
|
||||
);
|
||||
const parameter_dsCode = getQueryString("s"); //获取参数指定的数据来源
|
||||
let havingDataSource = dataSourceList.filter(function(ds){ //筛选出符合的数据源
|
||||
return ds.code == parameter_dsCode;
|
||||
});
|
||||
currentDataSource = havingDataSource.length ? havingDataSource[0]: dataSourceList[0];
|
||||
currentDataSource = parameter_dsCode?
|
||||
(dataSourceList.find(ds => ds.code == parameter_dsCode) || dataSourceList[0]) ://筛选出符合的数据源
|
||||
dataSourceList[0]; //没有指定,直接使用日服
|
||||
|
||||
document.body.classList.add("ds-"+currentDataSource.code);
|
||||
let dataSourceOptionArray = Array.prototype.slice.call(dataSelectDom.options);
|
||||
dataSourceOptionArray.some(function(dataOpt){
|
||||
if (dataOpt.value == currentDataSource.code)
|
||||
{
|
||||
dataOpt.selected = true;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
const dataSourceOptionArray = Array.from(dataSelectDom.options);
|
||||
dataSourceOptionArray.find(dataOpt=>dataOpt.value == currentDataSource.code).selected = true;
|
||||
|
||||
const sourceDataFolder = "monsters-info";
|
||||
|
||||
var newCkeys; //当前的Ckey
|
||||
|
@ -380,7 +366,7 @@ window.onload = function()
|
|||
dealCkeyData(response.response);
|
||||
},
|
||||
onerror: function(response) {
|
||||
let isChrome = navigator.userAgent.indexOf("Chrome") >=0;
|
||||
const isChrome = navigator.userAgent.includes("Chrome");
|
||||
if (isChrome && location.host.length==0 && response.response.length>0)
|
||||
{
|
||||
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
||||
|
@ -458,7 +444,7 @@ window.onload = function()
|
|||
});
|
||||
},
|
||||
onerror: function(response) {
|
||||
let isChrome = navigator.userAgent.indexOf("Chrome") >=0;
|
||||
const isChrome = navigator.userAgent.includes("Chrome");
|
||||
if (isChrome && location.host.length==0 && response.response.length>0)
|
||||
{
|
||||
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
||||
|
@ -520,7 +506,7 @@ window.onload = function()
|
|||
});
|
||||
},
|
||||
onerror: function(response) {
|
||||
let isChrome = navigator.userAgent.indexOf("Chrome") >=0;
|
||||
let isChrome = navigator.userAgent.includes("Chrome");
|
||||
if (isChrome && location.host.length==0 && response.response.length>0)
|
||||
{
|
||||
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
||||
|
@ -704,8 +690,8 @@ function initialize()
|
|||
//将所有怪物头像添加到全局数组
|
||||
teamBigBoxs.forEach(teamBigBox=>{
|
||||
const teamBox = teamBigBox.querySelector(".team-box");
|
||||
const menbers = Array.prototype.slice.call(teamBox.querySelectorAll(".team-members .monster"));
|
||||
const assist = Array.prototype.slice.call(teamBox.querySelectorAll(".team-assist .monster"));
|
||||
const menbers = Array.from(teamBox.querySelectorAll(".team-members .monster"));
|
||||
const assist = Array.from(teamBox.querySelectorAll(".team-assist .monster"));
|
||||
menbers.forEach(m=>{
|
||||
allMembers.push(m);
|
||||
});
|
||||
|
@ -735,7 +721,7 @@ function initialize()
|
|||
//徽章
|
||||
const teamBadge = tb.querySelector(".team-badge");
|
||||
if (!teamBadge) return;
|
||||
const badges = Array.prototype.slice.call(teamBadge.querySelectorAll(".badge-bg"));
|
||||
const badges = Array.from(teamBadge.querySelectorAll(".badge-bg"));
|
||||
badges.forEach((badge,bidx) => {
|
||||
badge.onclick = function(){
|
||||
if (teamBadge.classList.contains(className_ChoseBadges))
|
||||
|
@ -796,7 +782,7 @@ function initialize()
|
|||
{
|
||||
showSearch(Cards.filter(card=>{
|
||||
return splitAltName.some(alt=>{
|
||||
return alt.length > 0 && (card.altName.indexOf(alt)>=0 || card.name.indexOf(alt)>=0);
|
||||
return alt.length > 0 && (card.altName.includes(alt) || card.name.includes(alt));
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
@ -828,11 +814,11 @@ function initialize()
|
|||
searchBox.classList.toggle("display-none");
|
||||
};
|
||||
|
||||
const s_attr1s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-1 .attr-radio"));
|
||||
const s_attr2s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-2 .attr-radio"));
|
||||
const s_attr1s = Array.from(searchBox.querySelectorAll(".attrs .attr-list-1 .attr-radio"));
|
||||
const s_attr2s = Array.from(searchBox.querySelectorAll(".attrs .attr-list-2 .attr-radio"));
|
||||
const s_fixMainColor = searchBox.querySelector("#fix-main-color");
|
||||
const s_types = Array.prototype.slice.call(searchBox.querySelectorAll(".types-div .type-check"));
|
||||
const s_awokensItems = Array.prototype.slice.call(searchBox.querySelectorAll(".awoken-div .awoken-count"));
|
||||
const s_types = Array.from(searchBox.querySelectorAll(".types-div .type-check"));
|
||||
const s_awokensItems = Array.from(searchBox.querySelectorAll(".awoken-div .awoken-count"));
|
||||
const s_awokensIcons = s_awokensItems.map(it=>{
|
||||
return it.querySelector(".awoken-icon");
|
||||
});
|
||||
|
@ -853,7 +839,7 @@ function initialize()
|
|||
|
||||
const s_sawokenDiv = searchBox.querySelector(".sawoken-div");
|
||||
|
||||
const s_sawokens = Array.prototype.slice.call(s_sawokenDiv.querySelectorAll(".sawoken-check"));
|
||||
const s_sawokens = Array.from(s_sawokenDiv.querySelectorAll(".sawoken-check"));
|
||||
const s_includeSuperAwoken = searchBox.querySelector("#include-super-awoken"); //搜索超觉醒
|
||||
s_includeSuperAwoken.onclick = function(){
|
||||
if (this.checked)
|
||||
|
@ -1042,7 +1028,7 @@ function initialize()
|
|||
|
||||
searchMonList.classList.add("display-none");
|
||||
let fragment = document.createDocumentFragment(); //创建节点用的临时空间
|
||||
let headsArray = Array.prototype.slice.call(searchMonList.children);
|
||||
let headsArray = Array.from(searchMonList.children);
|
||||
headsArray.sort((head_a,head_b)=>{
|
||||
let sortNumber = sort_function_list[sortIndex].function(head_a.card,head_b.card);
|
||||
if (reverse) sortNumber *= -1;
|
||||
|
@ -1075,7 +1061,7 @@ function initialize()
|
|||
};
|
||||
monstersID.oninput = monstersID.onchange;
|
||||
//觉醒
|
||||
const monEditAwokens = Array.prototype.slice.call(settingBox.querySelectorAll(".row-mon-awoken .awoken-ul .awoken-icon"));
|
||||
const monEditAwokens = Array.from(settingBox.querySelectorAll(".row-mon-awoken .awoken-ul .awoken-icon"));
|
||||
monEditAwokens.forEach((akDom,idx)=>{
|
||||
akDom.onclick = function(){
|
||||
editBox.awokenCount = idx;
|
||||
|
@ -1104,7 +1090,7 @@ function initialize()
|
|||
};
|
||||
|
||||
//超觉醒
|
||||
let monEditSAwokens = Array.prototype.slice.call(settingBox.querySelectorAll(".row-mon-super-awoken .awoken-ul .awoken-icon"));
|
||||
let monEditSAwokens = Array.from(settingBox.querySelectorAll(".row-mon-super-awoken .awoken-ul .awoken-icon"));
|
||||
monEditSAwokens.forEach((akDom,idx,domArr)=>{
|
||||
akDom.onclick = function(){
|
||||
for(var ai=0;ai<domArr.length;ai++)
|
||||
|
@ -1195,9 +1181,9 @@ function initialize()
|
|||
|
||||
//潜觉
|
||||
const monEditLatentUl = settingBox.querySelector(".m-latent-ul");
|
||||
const monEditLatents = Array.prototype.slice.call(monEditLatentUl.querySelectorAll("li"));
|
||||
const monEditLatents = Array.from(monEditLatentUl.querySelectorAll("li"));
|
||||
const monEditLatentAllowableUl = settingBox.querySelector(".m-latent-allowable-ul");
|
||||
const monEditLatentsAllowable = Array.prototype.slice.call(monEditLatentAllowableUl.querySelectorAll("li"));
|
||||
const monEditLatentsAllowable = Array.from(monEditLatentAllowableUl.querySelectorAll("li"));
|
||||
editBox.refreshLatent = function(latent,monid) //刷新潜觉
|
||||
{
|
||||
const maxLatentCount = getMaxLatentCount(monid); //最大潜觉数量
|
||||
|
@ -1586,6 +1572,7 @@ function interchangeCard(formArr,toArr)
|
|||
return newMember;
|
||||
}
|
||||
}
|
||||
const changeSwapToCopy = controlBox.querySelector("#change-swap-to-copy");//储存交换“复制”和“替换”
|
||||
const isCopy = changeSwapToCopy.checked;
|
||||
let from = formation.teams[formArr[0]][formArr[1]][formArr[2]];
|
||||
let to = formation.teams[toArr[0]][toArr[1]][toArr[2]];
|
||||
|
@ -1645,7 +1632,7 @@ function changeid(mon,monDom,latentDom)
|
|||
monDom.classList.add("allowable-assist");
|
||||
else
|
||||
monDom.classList.remove("allowable-assist");
|
||||
if (card.awakenings.indexOf(49)>=0)//武器
|
||||
if (card.awakenings.includes(49))//武器
|
||||
monDom.classList.add("wepon");
|
||||
else
|
||||
monDom.classList.remove("wepon");
|
||||
|
@ -1732,7 +1719,7 @@ function changeid(mon,monDom,latentDom)
|
|||
}
|
||||
if (latentDom)
|
||||
{
|
||||
let latentDoms = Array.prototype.slice.call(latentDom.querySelectorAll("li"));
|
||||
let latentDoms = Array.from(latentDom.querySelectorAll("li"));
|
||||
if (mon.latent) //如果提供了潜觉
|
||||
{
|
||||
let latent = mon.latent.sort(function(a,b){
|
||||
|
@ -1908,10 +1895,7 @@ function editBoxChangeMonId(id)
|
|||
const mAltName = monInfoBox.querySelector(".monster-altName");
|
||||
mAltName.innerHTML = card.altName;
|
||||
mAltName.setAttribute("data-altName",card.altName);
|
||||
/*const splitAltName = card.altName.split("|"); //取出分段的那种的第一段
|
||||
const hasGroup = splitAltName.some(alt=>{ //自己的名称是否只有一个
|
||||
return Cards.some(c=>{return c.id != card.id && c.altName.indexOf(alt)>=0;});
|
||||
});*/
|
||||
|
||||
if (card.altName.length == 0)
|
||||
{ //当没有合作名
|
||||
mAltName.classList.add("display-none");
|
||||
|
@ -2010,13 +1994,13 @@ function editBoxChangeMonId(id)
|
|||
const rowLatent = settingBox.querySelector(".row-mon-latent");
|
||||
const monLatentAllowUl = rowLatent.querySelector(".m-latent-allowable-ul");
|
||||
//该宠Type允许的杀,uniq是去重的自定义函数
|
||||
const allowLatent = uniq(card.types.reduce(function (previous, t, index, array) {
|
||||
const allowLatent = card.types.reduce(function (previous, t, index, array) {
|
||||
return previous.concat(type_allowable_latent[t]);
|
||||
},[]));
|
||||
},[]).uniq();
|
||||
for(let li=17;li<=24;li++) //显示允许的杀,隐藏不允许的杀
|
||||
{
|
||||
const latentDom = monLatentAllowUl.querySelector(".latent-icon-" + li);
|
||||
if (allowLatent.indexOf(li)>=0)
|
||||
if (allowLatent.includes(li))
|
||||
{
|
||||
if(latentDom.classList.contains("unselected-latent"))
|
||||
latentDom.classList.remove("unselected-latent");
|
||||
|
@ -2042,7 +2026,7 @@ function editBoxChangeMonId(id)
|
|||
skillTitle.innerHTML = descriptionToHTML(skill.name);
|
||||
skillTitle.setAttribute("data-skillid", skill.id);
|
||||
skillDetail.innerHTML = parseSkillDescription(skill);
|
||||
const t_maxLevel = card.overlay || card.types.indexOf(15)>=0 ? 1 : skill.maxLevel; //遇到不能升技的,最大等级强制为1
|
||||
const t_maxLevel = card.overlay || card.types.includes(15) ? 1 : skill.maxLevel; //遇到不能升技的,最大等级强制为1
|
||||
skillLevel.max = t_maxLevel;
|
||||
skillLevel.value = t_maxLevel;
|
||||
skillLevel_Max.value = t_maxLevel;
|
||||
|
@ -2419,7 +2403,7 @@ function localisation($tra)
|
|||
formationBox.querySelector(".detail-box .detail").placeholder = $tra.detail_blank;
|
||||
|
||||
const s_sortList = editBox.querySelector(".search-box .sort-div .sort-list");
|
||||
const sortOptions = Array.prototype.slice.call(s_sortList.options);
|
||||
const sortOptions = Array.from(s_sortList.options);
|
||||
sortOptions.forEach(opt=>{
|
||||
const tag = opt.getAttribute("data-tag");
|
||||
const trans = $tra.sort_name[tag];
|
||||
|
|
|
@ -85,24 +85,6 @@ function getQueryString(name,url) {
|
|||
}
|
||||
}
|
||||
|
||||
//数组去重
|
||||
/* https://www.cnblogs.com/baiyangyuanzi/p/6726258.html
|
||||
* 实现思路:获取没重复的最右一值放入新数组。
|
||||
* (检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)*/
|
||||
function uniq(array){
|
||||
let temp = [];
|
||||
const l = array.length;
|
||||
for(let i = 0; i < l; i++) {
|
||||
for(let j = i + 1; j < l; j++){
|
||||
if (array[i] === array[j]){
|
||||
i++;
|
||||
j = i;
|
||||
}
|
||||
}
|
||||
temp.push(array[i]);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
//计算用了多少潜觉格子
|
||||
function usedHole(latent)
|
||||
{
|
||||
|
@ -143,7 +125,7 @@ function awokenCountInTeam(team,awokenIndex,solo)
|
|||
{
|
||||
enableAwoken = enableAwoken.concat(card.superAwakenings[mon.sawoken]);
|
||||
}
|
||||
if (assistCard && assistCard.enabled && assistCard.awakenings.indexOf(49)>=0)
|
||||
if (assistCard && assistCard.enabled && assistCard.awakenings.includes(49))
|
||||
{ //如果卡片未启用
|
||||
enableAwoken = enableAwoken.concat(assistCard.awakenings);
|
||||
}
|
||||
|
@ -163,7 +145,7 @@ function returnMonsterNameArr(card, lsList, defaultCode)
|
|||
else if(card.otLangName)
|
||||
{return card.otLangName[lc];}
|
||||
}).filter(function(ln){ //去掉空值和问号
|
||||
return (ln?(ln.length>0):false) && !/^(?:초월\s*)?\?+/.test(ln);
|
||||
return typeof(ln) == "string" && ln.length>0 && !new RegExp("^(?:초월\\s*)?[\\?\\*]+","i").test(ln);
|
||||
});
|
||||
|
||||
if (monNameArr.length < 1) //如果本来的列表里没有名字
|
||||
|
@ -261,7 +243,7 @@ function calculateAbility(member = null, assist = null, solo = true)
|
|||
if (assistCard && assistCard.id > 0 && assistCard.enabled)
|
||||
{
|
||||
const assistAwokenList = assistCard.awakenings.slice(0, assist.awoken); //储存武器点亮的觉醒
|
||||
if (assistAwokenList.indexOf(49)>=0) //49是武器觉醒,确认已经点亮了武器觉醒
|
||||
if (assistAwokenList.includes(49)) //49是武器觉醒,确认已经点亮了武器觉醒
|
||||
{
|
||||
awokenList = awokenList.concat(assistAwokenList);
|
||||
}
|
||||
|
@ -274,7 +256,7 @@ function calculateAbility(member = null, assist = null, solo = true)
|
|||
//觉醒增加的数值
|
||||
const n_awoken = awokenList.length>0 ?
|
||||
Math.round(awokenAdd[idx].reduce(function(previous,aw){
|
||||
const awokenCount = awokenList.filter(function(a){return a==aw.index;}).length; //每个觉醒的数量
|
||||
const awokenCount = awokenList.filter(ak=>ak==aw.index).length; //每个觉醒的数量
|
||||
if (awokenCount>0)
|
||||
return previous + aw.value * awokenCount;
|
||||
else
|
||||
|
@ -284,7 +266,7 @@ function calculateAbility(member = null, assist = null, solo = true)
|
|||
//潜觉增加的倍率
|
||||
const n_latent = (member.latent && member.latent.length>0) ?
|
||||
Math.round(latentScale[idx].reduce(function(previous,la){
|
||||
const latentCount = member.latent.filter(function(l){return l==la.index;}).length; //每个潜觉的数量
|
||||
const latentCount = member.latent.filter(l=>l==la.index).length; //每个潜觉的数量
|
||||
return previous + n_base * la.scale * latentCount; //无加值与觉醒的基础值,乘以那么多个潜觉的增加倍数
|
||||
},0)) :
|
||||
0;
|
||||
|
@ -293,7 +275,7 @@ function calculateAbility(member = null, assist = null, solo = true)
|
|||
|
||||
//协力觉醒的倍率
|
||||
reValue = Math.round(awokenScale[idx].reduce(function(previous,aw){
|
||||
const awokenCount = awokenList.filter(function(a){return a==aw.index;}).length; //每个协力觉醒的数量
|
||||
const awokenCount = awokenList.filter(ak=>ak==aw.index).length; //每个协力觉醒的数量
|
||||
if (awokenCount>0)
|
||||
{
|
||||
return previous * Math.pow(aw.scale,awokenCount);
|
||||
|
@ -331,17 +313,17 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equal
|
|||
{
|
||||
if (attr1 != null)
|
||||
{
|
||||
cardsRange = cardsRange.filter(c=>c.attrs.indexOf(attr1)>=0);
|
||||
cardsRange = cardsRange.filter(c=>c.attrs.includes(attr1));
|
||||
}
|
||||
if (attr2 != null)
|
||||
{
|
||||
cardsRange = cardsRange.filter(c=>c.attrs.indexOf(attr2)>=0);
|
||||
cardsRange = cardsRange.filter(c=>c.attrs.includes(attr2));
|
||||
}
|
||||
}
|
||||
//类型
|
||||
if (types.length>0)
|
||||
{
|
||||
cardsRange = cardsRange.filter(c=>types.some(t=>c.types.indexOf(t)>=0));
|
||||
cardsRange = cardsRange.filter(c=>types.some(t=>c.types.includes(t)));
|
||||
}
|
||||
//觉醒
|
||||
//等效觉醒时,事先去除大觉醒
|
||||
|
@ -373,8 +355,8 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equal
|
|||
cardAwakeningsArray.push(card.awakenings);
|
||||
}
|
||||
|
||||
return cardAwakeningsArray.some(cardAwakening=>{ //重复每种包含超觉醒的觉醒数组,只要有一组符合要求就行
|
||||
return awokens.every(ak=>{ //判断需要搜索的觉醒是不是全都在觉醒数组里
|
||||
return cardAwakeningsArray.some(cardAwakening=> //重复每种包含超觉醒的觉醒数组,只要有一组符合要求就行
|
||||
awokens.every(ak=>{ //判断需要搜索的觉醒是不是全都在觉醒数组里
|
||||
if (equalAk) //如果开启等效觉醒
|
||||
{
|
||||
//搜索等效觉醒
|
||||
|
@ -387,19 +369,19 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equal
|
|||
}
|
||||
}
|
||||
return cardAwakening.filter(cak=>cak == ak.id).length >= ak.num;
|
||||
});
|
||||
});
|
||||
})
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
//超觉醒
|
||||
if (sawokens.length>0 && !incSawoken)
|
||||
{
|
||||
cardsRange = cardsRange.filter(card=>{return sawokens.some(sak=>{
|
||||
cardsRange = cardsRange.filter(card=> sawokens.some(sak=>{
|
||||
const equivalentAwoken = equivalent_awoken.find(eak => eak.small === sak);
|
||||
return card.superAwakenings.indexOf(sak)>=0 ||
|
||||
equalAk && equivalentAwoken && card.superAwakenings.indexOf(equivalentAwoken.big)>=0; //如果开启等效觉醒
|
||||
});});
|
||||
return card.superAwakenings.includes(sak) ||
|
||||
equalAk && equivalentAwoken && card.superAwakenings.includes(equivalentAwoken.big); //如果开启等效觉醒
|
||||
}) );
|
||||
}
|
||||
return cardsRange;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue