Browse Source

修正随机变身的进化树显示

tags/v21.8
枫谷剑仙 4 years ago
parent
commit
b9fabf6048
15 changed files with 104 additions and 62 deletions
  1. +14
    -0
      languages/en.css
  2. +10
    -0
      languages/ja.css
  3. +5
    -0
      languages/ko.css
  4. +5
    -0
      languages/zh-TW.css
  5. +5
    -0
      languages/zh.css
  6. +1
    -1
      monsters-info/ckey.json
  7. +1
    -1
      monsters-info/custom/chs.json
  8. +1
    -1
      monsters-info/custom/cht.json
  9. +22
    -15
      monsters-info/extractByNode.js
  10. +1
    -1
      monsters-info/mon_en.json
  11. +1
    -1
      monsters-info/mon_ja.json
  12. +1
    -1
      monsters-info/mon_ko.json
  13. +0
    -24
      script-json_data.js
  14. +31
    -17
      script.js
  15. +6
    -0
      style.css

+ 14
- 0
languages/en.css View File

@@ -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
{


+ 10
- 0
languages/ja.css View File

@@ -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
{


+ 5
- 0
languages/ko.css View File

@@ -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
{


+ 5
- 0
languages/zh-TW.css View File

@@ -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
{


+ 5
- 0
languages/zh.css View File

@@ -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
monsters-info/ckey.json View File

@@ -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}]

+ 1
- 1
monsters-info/custom/chs.json
File diff suppressed because it is too large
View File


+ 1
- 1
monsters-info/custom/cht.json
File diff suppressed because it is too large
View File


+ 22
- 15
monsters-info/extractByNode.js View File

@@ -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];
}
}
}
}
});


+ 1
- 1
monsters-info/mon_en.json
File diff suppressed because it is too large
View File


+ 1
- 1
monsters-info/mon_ja.json
File diff suppressed because it is too large
View File


+ 1
- 1
monsters-info/mon_ko.json
File diff suppressed because it is too large
View File


+ 0
- 24
script-json_data.js View File

@@ -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))
},


+ 31
- 17
script.js View File

@@ -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);
}


+ 6
- 0
style.css View File

@@ -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…
Cancel
Save