修正随机变身的进化树显示
This commit is contained in:
parent
bedacd5741
commit
b9fabf6048
|
@ -531,6 +531,20 @@ label[for="box-have"]::after
|
|||
{
|
||||
content: "Henshin";
|
||||
}
|
||||
.random-henshin .evo-type::before,
|
||||
.random-henshin .evo-type::after
|
||||
{
|
||||
content: "Random Henshin";
|
||||
}
|
||||
.random-henshin .evo-type-div
|
||||
{
|
||||
margin: 0 -10px;
|
||||
}
|
||||
.random-henshin .evo-type
|
||||
{
|
||||
transform: scaleX(0.50);
|
||||
margin: calc(-100px * (1 - 0.50) / 2);
|
||||
}
|
||||
.henshin-loop .evo-type::before,
|
||||
.henshin-loop .evo-type::after
|
||||
{
|
||||
|
|
|
@ -503,6 +503,16 @@ label[for="box-have"]::after
|
|||
{
|
||||
content: "変身";
|
||||
}
|
||||
.random-henshin .evo-type::before,
|
||||
.random-henshin .evo-type::after
|
||||
{
|
||||
content: "ランダムで変身";
|
||||
}
|
||||
.random-henshin .evo-type
|
||||
{
|
||||
transform: scaleX(0.70);
|
||||
margin: calc(-100px * (1 - 0.70) / 2);
|
||||
}
|
||||
.henshin-loop .evo-type::before,
|
||||
.henshin-loop .evo-type::after
|
||||
{
|
||||
|
|
|
@ -494,6 +494,11 @@ label[for="box-have"]::after
|
|||
{
|
||||
content: "변신";
|
||||
}
|
||||
.random-henshin .evo-type::before,
|
||||
.random-henshin .evo-type::after
|
||||
{
|
||||
content: "책상 변신";
|
||||
}
|
||||
.henshin-loop .evo-type::before,
|
||||
.henshin-loop .evo-type::after
|
||||
{
|
||||
|
|
|
@ -497,6 +497,11 @@ label[for="box-have"]::after
|
|||
{
|
||||
content: "變身";
|
||||
}
|
||||
.random-henshin .evo-type::before,
|
||||
.random-henshin .evo-type::after
|
||||
{
|
||||
content: "隨機変身";
|
||||
}
|
||||
.henshin-loop .evo-type::before,
|
||||
.henshin-loop .evo-type::after
|
||||
{
|
||||
|
|
|
@ -495,6 +495,11 @@ label[for="box-have"]::after
|
|||
{
|
||||
content: "変身";
|
||||
}
|
||||
.random-henshin .evo-type::before,
|
||||
.random-henshin .evo-type::after
|
||||
{
|
||||
content: "随机変身";
|
||||
}
|
||||
.henshin-loop .evo-type::before,
|
||||
.henshin-loop .evo-type::after
|
||||
{
|
||||
|
|
|
@ -1 +1 @@
|
|||
[{"code":"ja","ckey":{"card":"e10edde41bf6ce03ea1150b5abc713ee","skill":"950eb970d283b323e3df62c372c4aa36"},"updateTime":1648211508594},{"code":"en","ckey":{"card":"fb9f76f8f1111235ce493ff9d13ddc5f","skill":"3ee3df961af54f29b184e7a001ad7876"},"updateTime":1648211508594},{"code":"ko","ckey":{"card":"421f903c999f3a509a7a336020130934","skill":"e24d3f51c8f2e4d67a671e9cc22f0ebb"},"updateTime":1648211508594}]
|
||||
[{"code":"ja","ckey":{"card":"1941e154813354a04e6e36bb9fa9a169","skill":"950eb970d283b323e3df62c372c4aa36"},"updateTime":1648309791133},{"code":"en","ckey":{"card":"79e5797215fca2c7e4e7b765e06814c4","skill":"3ee3df961af54f29b184e7a001ad7876"},"updateTime":1648306741515},{"code":"ko","ckey":{"card":"5219a7f33f3e0ccf08fc4aef05b0ab4a","skill":"e24d3f51c8f2e4d67a671e9cc22f0ebb"},"updateTime":1648306741515}]
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -18,6 +18,11 @@ const officialAPI = [ //来源于官方API
|
|||
}
|
||||
];
|
||||
|
||||
//数组去重
|
||||
Array.prototype.distinct = function() {
|
||||
let _set = new Set(this);
|
||||
return Array.from(_set)
|
||||
}
|
||||
//比较两只怪物是否是同一只(在不同语言服务器)
|
||||
function sameCard(m1,m2)
|
||||
{
|
||||
|
@ -122,22 +127,24 @@ officialAPI.forEach(function(lang) {
|
|||
const oSkills = lang.skillOriginal = skillJsonObj.skill;//将字符串转换为json对象
|
||||
lang.skills = oSkills.map((oc,idx)=>new Skill(idx,oc)); //每一项生成分析对象
|
||||
|
||||
lang.cards.forEach((m,idx,arr)=>{
|
||||
lang.cards.forEach((m, idx, cardArr)=>{
|
||||
let henshinTo = null;
|
||||
const skills = getActuallySkills(lang.skills, m.activeSkillId, [202]);
|
||||
if (skills.length) {
|
||||
const skill = skills[0];
|
||||
henshinTo = skill.params[0];
|
||||
}
|
||||
if (henshinTo)
|
||||
{
|
||||
m.henshinTo = henshinTo;
|
||||
//变身来源可能有多个,因此将变身来源修改为数组
|
||||
let henshinFrom = arr[henshinTo].henshinFrom;
|
||||
if (Array.isArray(henshinFrom)) {
|
||||
henshinFrom.push(idx);
|
||||
} else {
|
||||
arr[henshinTo].henshinFrom = [idx];
|
||||
const henshinSkill = getActuallySkills(lang.skills, m.activeSkillId, [202, 236]);
|
||||
if (henshinSkill.length) {
|
||||
const skill = henshinSkill[0];
|
||||
henshinTo = skill.params.distinct();
|
||||
if (Array.isArray(henshinTo))
|
||||
{
|
||||
m.henshinTo = henshinTo;
|
||||
//变身来源可能有多个,因此将变身来源修改为数组
|
||||
for (let toId of henshinTo) {
|
||||
let henshinFrom = cardArr[toId].henshinFrom;
|
||||
if (Array.isArray(henshinFrom)) {
|
||||
henshinFrom.push(idx);
|
||||
} else {
|
||||
cardArr[toId].henshinFrom = [idx];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -3251,30 +3251,6 @@ const specialSearchFunctions = (function() {
|
|||
{name:"Super Ult Evo",otLangName:{chs:"超究极进化",cht:"超究極進化"},
|
||||
function:cards=>cards.filter(card=>card.is8Latent && card.isUltEvo && !card.awakenings.includes(49))
|
||||
},
|
||||
/*{name:"",otLangName:{chs:"变身前",cht:"變身前"},
|
||||
function:cards=>cards.filter(card=>{
|
||||
const searchType = 202;
|
||||
const skill = Skills[card.activeSkillId];
|
||||
if (skill.type == searchType)
|
||||
return true;
|
||||
else if (skill.type == 116 || skill.type == 118){
|
||||
const subskills = skill.params.map(id=>Skills[id]);
|
||||
return subskills.some(subskill=>subskill.type == searchType);
|
||||
}
|
||||
})
|
||||
},
|
||||
{name:"",otLangName:{chs:"变身前后队长技保持不变",cht:"變身前後隊長技保持不變"},
|
||||
function:cards=>cards.filter(card=>{
|
||||
const searchType = 202;
|
||||
const skill = Skills[card.activeSkillId];
|
||||
if (skill.type == searchType && card.leaderSkillId == Cards[skill.params[0]].leaderSkillId)
|
||||
return true;
|
||||
else if (skill.type == 116 || skill.type == 118){
|
||||
const subskills = skill.params.map(id=>Skills[id]);
|
||||
return subskills.some(subskill=>subskill.type == searchType && card.leaderSkillId == Cards[subskill.params[0]].leaderSkillId);
|
||||
}
|
||||
})
|
||||
},*/
|
||||
{name:"Evo from Weapon",otLangName:{chs:"由武器进化而来",cht:"由武器進化而來"},
|
||||
function:cards=>cards.filter(card=>card.isUltEvo && Cards[card.evoBaseId].awakenings.includes(49))
|
||||
},
|
||||
|
|
48
script.js
48
script.js
|
@ -663,7 +663,7 @@ class EvoTree
|
|||
mid = Cards[mid].evoRootId;
|
||||
const m = Cards[mid];
|
||||
if (Array.isArray(m.henshinFrom) && m.henshinFrom[0] < m.id)
|
||||
{ //只有变身来源小于目前id的,才继续找base,为了解决黑魔导女孩的问题
|
||||
{ //只有变身来源小于目前id的,才继续找base,为了解决黑魔导女孩的问题,将来如果需要要可以改成检测是否能110级
|
||||
mid = returnRootId(m.henshinFrom[0]);
|
||||
}
|
||||
return mid;
|
||||
|
@ -673,7 +673,7 @@ class EvoTree
|
|||
const card = Cards[mid];
|
||||
|
||||
this.id = mid;
|
||||
this.idArr = parent ? parent.idArr : [];
|
||||
this.idArr = parent ? parent.idArr.concat() : [];
|
||||
this.card = card;
|
||||
this.children = [];
|
||||
this.evoType = null;
|
||||
|
@ -682,9 +682,17 @@ class EvoTree
|
|||
{
|
||||
this.evoType = "Base";
|
||||
}
|
||||
else if (Array.isArray(card.henshinFrom) && card.henshinFrom[0] == parent.id)
|
||||
else if (Array.isArray(card.henshinFrom) && card.henshinFrom.includes(parent.id))
|
||||
{
|
||||
this.evoType = "Henshin";
|
||||
if (parent.card.henshinTo.length > 1) {
|
||||
this.evoType = "Random Henshin";
|
||||
//限定最多两层随机变身
|
||||
if (parent?.parent?.card?.henshinTo?.length > 1) {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
else
|
||||
this.evoType = "Henshin";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -729,8 +737,11 @@ class EvoTree
|
|||
{
|
||||
this.idArr.push(mid);
|
||||
}
|
||||
if (card.henshinTo)
|
||||
this.children.push(new EvoTree(card.henshinTo, _this));
|
||||
if (Array.isArray(card.henshinTo)) {
|
||||
for (let toId of card.henshinTo) {
|
||||
this.children.push(new EvoTree(toId, _this));
|
||||
}
|
||||
}
|
||||
if (this.evoType != "Henshin")
|
||||
this.children.push(...Cards.filter(scard=>scard.evoBaseId == mid && scard.id != mid).map(scard=>new EvoTree(scard.id,_this)));
|
||||
//this.children = (card.henshinTo && card.henshinTo != card.evoRootId ? [new EvoTree(card.henshinTo,_this)] : []).concat(Cards.filter(scard=>scard.evoBaseId == mid && scard.id != mid).map(scard=>new EvoTree(scard.id,_this)));
|
||||
|
@ -852,9 +863,10 @@ function henshinStep(step)
|
|||
|
||||
function gotoHenshin(card, nstep)
|
||||
{
|
||||
if (nstep > 0 && card.henshinTo)
|
||||
{ //是变身的则返回
|
||||
return gotoHenshin(Cards[card.henshinTo], --nstep);
|
||||
if (nstep > 0 && Array.isArray(card.henshinTo))
|
||||
{
|
||||
let max = Math.randomInteger(card.henshinTo.length - 1);
|
||||
return gotoHenshin(Cards[card.henshinTo[max]], --nstep);
|
||||
}
|
||||
else if (nstep < 0 && Array.isArray(card.henshinFrom))
|
||||
{
|
||||
|
@ -869,7 +881,7 @@ function henshinStep(step)
|
|||
team[0].forEach(member=>{
|
||||
const mid = member.id;
|
||||
const card = Cards[mid];
|
||||
if (step > 0 ? card.henshinTo : (Array.isArray(card.henshinFrom) && member.level <= 99))
|
||||
if (step > 0 ? Array.isArray(card.henshinTo) : (Array.isArray(card.henshinFrom) && member.level <= 99))
|
||||
{ //要变身前的才进行操作
|
||||
const _card = gotoHenshin(card, step);
|
||||
member.id = _card.id;
|
||||
|
@ -3649,16 +3661,18 @@ function initialize(event) {
|
|||
}
|
||||
}
|
||||
|
||||
//搜出一个卡片包含变身的的完整进化树
|
||||
//搜出一个卡片包含变身的的完整进化树,用于平铺显示
|
||||
function buildEvoTreeIdsArray(card, includeHenshin = true) {
|
||||
const evoLinkCardsIdArray = card.evoRootId ? Cards.filter(m=>m.evoRootId == card.evoRootId).map(m=>m.id) : []; //筛选出相同进化链的
|
||||
function loopAddHenshin(arr,card)
|
||||
{
|
||||
//从本卡片变身到的
|
||||
const cardIdTo = card.henshinTo;
|
||||
if (!arr.includes(cardIdTo) && Cards[cardIdTo]) {
|
||||
arr.push(cardIdTo);
|
||||
loopAddHenshin(arr, Cards[cardIdTo]);
|
||||
const cardIdTo = (card.henshinTo || []).filter(id=>Boolean(Cards[id]) && !arr.includes(id));
|
||||
if (cardIdTo.length) {
|
||||
arr.push(...cardIdTo);
|
||||
for (let id of cardIdTo) {
|
||||
loopAddHenshin(arr, Cards[id]);
|
||||
}
|
||||
}
|
||||
//变身到本卡片的(多个)
|
||||
const cardsIdFrom = (card.henshinFrom || []).filter(id=>Boolean(Cards[id]) && !arr.includes(id));
|
||||
|
@ -3674,7 +3688,7 @@ function buildEvoTreeIdsArray(card, includeHenshin = true) {
|
|||
{
|
||||
for (let card of evoCards) {
|
||||
arr.push(card.id);
|
||||
if (includeHenshin && (Array.isArray(card.henshinFrom) || card.henshinTo))
|
||||
if (includeHenshin && (Array.isArray(card.henshinFrom) || Array.isArray(card.henshinTo)))
|
||||
{ //添加这个的变身的
|
||||
loopAddHenshin(arr, card);
|
||||
}
|
||||
|
@ -3684,7 +3698,7 @@ function buildEvoTreeIdsArray(card, includeHenshin = true) {
|
|||
if (includeHenshin) {
|
||||
for (let id of evoLinkCardsIdArray) {
|
||||
const card = Cards[id];
|
||||
if (Array.isArray(card.henshinFrom) || card.henshinTo)
|
||||
if (Array.isArray(card.henshinFrom) || Array.isArray(card.henshinTo))
|
||||
{ //添加变身的
|
||||
loopAddHenshin(evoLinkCardsIdArray, card);
|
||||
}
|
||||
|
|
|
@ -3445,12 +3445,18 @@ table .orb-icon
|
|||
{ /*變身*/
|
||||
background-image: linear-gradient(#00FFFF 30%, #FF00FF);
|
||||
}
|
||||
.evo-panel.random-henshin .evo-type::after
|
||||
{ /*随机變身*/
|
||||
background-image: linear-gradient(#00FFFF 30%, #FFF 60%, #FF00FF);
|
||||
}
|
||||
.evo-panel.henshin,
|
||||
.evo-panel.random-henshin,
|
||||
.evo-panel.henshin-loop
|
||||
{
|
||||
background-image: linear-gradient(#BFFFCF,#FFFFBF,#FFBFBF);
|
||||
}
|
||||
.evo-panel.henshin .evo-panel-right,
|
||||
.evo-panel.random-henshin .evo-panel-right,
|
||||
.evo-panel.henshin-loop .evo-panel-right
|
||||
{
|
||||
border-color: #7F00FF;
|
||||
|
|
Loading…
Reference in New Issue