Merge branch 'master' into skillParser

This commit is contained in:
枫谷剑仙 2021-04-09 18:45:08 +08:00
commit 4df810fba4
36 changed files with 173 additions and 68 deletions

View File

@ -87,15 +87,16 @@ Please refer to existing files.
> 本软件灵感来源于[PDC 智龙迷城伤害计算器](//play.google.com/store/apps/details?id=com.corombo13.paddamagecal)
> This software is inspired by [PDC パズドラダメージ計算](//play.google.com/store/apps/details?id=com.corombo13.paddamagecal)
© GungHo Online Entertainment Inc. All Right Reserved.
所有图片素材版权与怪物信息归属于GungHo在线娱乐有限公司。
パズル&ドラゴンズに関する画像及び情報等の権利はGungHo Online Entertainment Inc.に帰属します。
> © GungHo Online Entertainment Inc. All Right Reserved.
> 所有图片素材版权与怪物信息归属于GungHo在线娱乐有限公司。
> パズル&ドラゴンズに関する画像及び情報等の権利はGungHo Online Entertainment Inc.に帰属します。
> ### 智龙迷城官网 | Puzzle & Dragons Official Website
> * [パズル&ドラゴンズ](http://pad.gungho.jp)
> * [龍族拼圖](https://pad.gungho.jp/hktw/pad/)
> * [Puzzle & Dragons](https://www.puzzleanddragons.us/)
> * [퍼즐앤드래곤](https://pad.neocyon.com/W/)
## 智龙迷城官网 | Puzzle & Dragons Official Website
* [パズル&ドラゴンズ](http://pad.gungho.jp)
* [龍族拼圖](https://pad.gungho.jp/hktw/pad/)
* [Puzzle & Dragons](https://www.puzzleanddragons.us/)
* [퍼즐앤드래곤](https://pad.neocyon.com/W/)
> 卡片中文名、中文分类来自于[Puzzle & Dragons 戰友系統及資訊網](https://pad.skyozora.com/)
# 使用开源软件 | Open source software used
* [Puzzle-and-Dragons-Texture-Tool](//github.com/codywatts/Puzzle-and-Dragons-Texture-Tool) //Extract Images

Binary file not shown.

Before

Width:  |  Height:  |  Size: 516 KiB

After

Width:  |  Height:  |  Size: 817 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 599 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 516 KiB

After

Width:  |  Height:  |  Size: 817 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@ -415,6 +415,10 @@
{
content: "⛓Evo Search";
}
.real-time-change-card-label::after
{
content: "Real-Time change card";
}
.base .evo-type::before,
.base .evo-type::after
{

View File

@ -407,6 +407,10 @@
{
content: "⛓️進化サーチ";
}
.real-time-change-card-label::after
{
content: "カードを即座に更新します";
}
.base .evo-type::before,
.base .evo-type::after
{

View File

@ -404,6 +404,10 @@
{
content: "⛓️진화 계통";
}
.real-time-change-card-label::after
{
content: "카드를 즉시 업데이트합니다";
}
.base .evo-type::before,
.base .evo-type::after
{

View File

@ -873,7 +873,7 @@ function parseSkillDescription(skill) {
str = `回复队伍总回复力×${sk[0]/100}倍的 HP`;
break;
case 146:
str = `自身以外的宠物技能冷却减少${sk[0]}${sk[0]!=sk[1]?`~${sk[1]}`:""}回合`;
str = `自身以外的宠物技能冷却减少${sk[0]}${sk[0]!=sk[1]?`~${sk[1]}`:""}回合`;
break;
case 148:
str = `进入地下城时为队长的话,获得的等级经验值×${sk[0]/100}`;
@ -1481,6 +1481,9 @@ function parseSkillDescription(skill) {
case 214: //封自己的技能
str = `${sk[0]}回合内,玩家自身队伍无法使用主动技能`;
break;
case 218: //坐自己
str = `自身以外的宠物技能坐下↓${sk[0]}${sk[0]!=sk[1]?`~${sk[1]}`:""}回合`;
break;
default:
str = `未知的技能类型${type}(No.${id})`;
//开发部分
@ -3379,6 +3382,32 @@ function parseSkillDescription(skill) {
const sk = skill.params;
return document.createTextNode(`${sk[0]}${sk[0]!=sk[1]?`~${sk[1]}`:""}`);
}},
{name:"增加CD按坐数排序有范围的取小",function:cards=>cards.filter(card=>{
const searchType = 218;
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);
}
}).sort((a,b)=>{
const searchType = 218;
const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId];
let a_pC = 0,b_pC = 0;
a_pC = (a_s.type == searchType) ?
a_s.params[0] :
a_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0];
b_pC = (b_s.type == searchType) ?
b_s.params[0] :
b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0];
return a_pC - b_pC;
}),addition:card=>{
const searchTypeArray = [218];
const skill = getCardSkill(card, searchTypeArray);
const sk = skill.params;
return document.createTextNode(`坐下${sk[0]}${sk[0]!=sk[1]?`~${sk[1]}`:""}`);
}},
{name:"将自身换为队长",function:cards=>cards.filter(card=>{
const searchType = 93;
const skill = Skills[card.activeSkillId];

View File

@ -410,6 +410,10 @@
{
content: "⛓️進化鏈";
}
.real-time-change-card-label::after
{
content: "即時更新卡片";
}
.base .evo-type::before,
.base .evo-type::after
{

View File

@ -409,6 +409,10 @@
{
content: "⛓️进化链";
}
.real-time-change-card-label::after
{
content: "即时更新卡片";
}
.base .evo-type::before,
.base .evo-type::after
{

View File

@ -1,7 +1,7 @@
如何获取怪物数据 | How to acquire monster data
===
* 目前的获取API为
* 目前的获取 API
The current acquisition API is
| 语言 | API |
@ -13,13 +13,13 @@ The current acquisition API is
* 但是有加密的参数,我不知道如何生成,所以我只能从游戏的下载过程截获。
But there are encrypted parameters that I don't know how to generate. So I intercepted from the game's download process.
* 使用[Fidder](https://www.telerik.com/download/fiddler),执行*HTTPS中间人攻击*从游戏内抓包获得怪物信息。
* 使用 [Fidder](https://www.telerik.com/download/fiddler),执行 *HTTPS 中间人攻击*从游戏内抓包获得怪物信息。
Use [Fidder](https://www.telerik.com/download/fiddler), do *HTTPS man-in-the-middle attack* to capture monster information from in-game capture.
* 安卓5可以直接在安卓系统里安装 *CER* 证书但安卓7开始系统不再信任用户证书。
Android 5 can install *CER* certificates directly in Android. Starting with Android 7, the system no longer trusts user certificates.
* 如果你的模拟器需要安卓7才能玩智龙迷城。以[夜神模拟器](https://www.bignox.com/)为例在安卓7里安装智龙迷城。
* 如果你的模拟器需要安卓 7 才能玩智龙迷城。以[夜神模拟器](https://www.bignox.com/)为例,在安卓 7 里安装智龙迷城。
If your simulator needs Android 7 to play PAD. Take the [Nox Player](https://www.bignox.com/) for example. Install PAD in Android 7.
1. 将 Fidder 根证书导出到桌面
@ -49,8 +49,8 @@ If your simulator needs Android 7 to play PAD. Take the [Nox Player](https://www
* 将安卓模拟器内的 WiFi 代理设置到 Fidder 上
Set up the WiFi proxy in the Android emulator to Fidder
* 打开 Fidder 的 HTTPS 解密,和 GZIP 解码
Turn on Fidder's HTTPS decrypt and GZIP decode
* 打开 Fidder 的 允许远程计算机连接、HTTPS 解密、流式传输,和 GZIP 解码
Turn on Fidder's "Allow remote computers to connet", "HTTPS decrypt", "Stream" and "Decode"
* 现在你运行模拟器内的游戏Fidder 就能够截获和解密智龙迷城的数据了。将返回的 JSON 数据保存为文件。
Now that you're running the game inside the simulator, Fidder will be able to intercept and decrypt the data from the PAD. Save the response JSON data as a file.
@ -120,5 +120,5 @@ Each language's information is extracted into a file, and monster names and tag
`CHT.json`与`CHS.json`的中文信息来源于战友网,见子项目 https://github.com/Mapaler/Download-pad.skyozora.com
运行`提取中文数据.bat`,将战友网页面内容抽出,再使用Win64版 [OpenCC](https://github.com/BYVoid/OpenCC) 来繁转简。
运行`提取中文数据.bat`,将战友网页面内容抽出,抽出过程使用 [OpenCC](https://github.com/BYVoid/OpenCC) 的 NodeJs 模块来繁转简。
然后再运行一遍 `提取整合怪物信息.bat` 把中文插进去。

View File

@ -1 +1 @@
[{"code":"ja","ckey":{"card":"bb6f3e6c6a3d16b4803cde98d69942c3","skill":"f1a5fcfc55bd450ddac0ebab81e00830"},"updateTime":1616595572486},{"code":"en","ckey":{"card":"4bf8ff961d602073d8997362c6b97de8","skill":"3b0f8ca7a9c84d0c71a84a9da71a9ee7"},"updateTime":1616581350642},{"code":"ko","ckey":{"card":"5cd2809bf948e3f809c0148fbba35148","skill":"1f35542f1c5ecc31436b044a13681ddd"},"updateTime":1616581350642}]
[{"code":"ja","ckey":{"card":"a442ae9a64910478cb9ab1951a1626c4","skill":"0430113377aa1261574116935ad402dd"},"updateTime":1617964794910},{"code":"en","ckey":{"card":"8838dee4c0e07f12b8d6cd55fdd0f959","skill":"6c1a77e57ad68aa12347a0ec798c68e9"},"updateTime":1617883383834},{"code":"ko","ckey":{"card":"3898af2e88068048513d4d8f865853f1","skill":"0670e1555e1e5a332f9d41dd0bf5db16"},"updateTime":1617883383834}]

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

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

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

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -673,7 +673,7 @@ var formation = new Formation(teamsCount,5);
</div>
<div class="awoken-option">
<input type="checkbox" class="config-checkbox-ipt" name="consider-equivalent-awoken" id="consider-equivalent-awoken" checked><label class="config-checkbox-lbl consider-equivalent-awoken-label" for="consider-equivalent-awoken"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" class="config-checkbox-ipt" name="include-super-awoken" id="include-super-awoken"><label class="config-checkbox-lbl include-super-awoken-label" for="include-super-awoken"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" class="config-checkbox-ipt" name="include-super-awoken" id="include-super-awoken"><label class="config-checkbox-lbl include-super-awoken-label" for="include-super-awoken"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" class="config-checkbox-ipt" name="show-official-awoken-sorting" id="show-official-awoken-sorting"><label class="config-checkbox-lbl show-official-awoken-sorting-label" for="show-official-awoken-sorting"><div class="config-checkbox-lbl-cicle"></div></label>
<ul class="awoken-ul selected-awokens">
</ul>
@ -893,6 +893,7 @@ var formation = new Formation(teamsCount,5);
</div>
<div class="setting-box">
<div class="setting-row row-mon-id">
<input type="checkbox" class="config-checkbox-ipt" name="real-time-change-card" id="real-time-change-card"><label class="config-checkbox-lbl real-time-change-card-label" for="real-time-change-card"><div class="config-checkbox-lbl-cicle"></div></label>
<button class="open-evolutionary-tree"></button>
<button class="open-search"></button><!--搜索怪物按钮-->
<input type="search" class="m-id" list="monsters-name-list"/><button class="search-by-string"></button>
@ -927,7 +928,8 @@ var formation = new Formation(teamsCount,5);
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="5" id="sawoken-choice-5" /><label for="sawoken-choice-5" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="6" id="sawoken-choice-6" /><label for="sawoken-choice-6" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="7" id="sawoken-choice-7" /><label for="sawoken-choice-7" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label>
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="9" id="sawoken-choice-9" /><label for="sawoken-choice-9" class="awoken-icon"></label>
</div>
</div>
</div>

View File

@ -483,6 +483,41 @@ function searchCards(cards, attr1, attr2, fixMainColor, types, typeAndOr, rares,
cardsRange = cardsRange.filter(card => card.id); //去除Cards[0]
return cardsRange;
}
function searchByString(str)
{ // 考虑了一下onlyInTag被废弃了因为和游戏内搜索不符
str = str.trim();
if (str.length>0)
{
return Cards.filter(card =>
{
const names = [card.name];
if (card.otLangName)
{
names.push(...Object.values(card.otLangName));
}
const tags = card.altName.concat();
if (card.otTags)
{
tags.push(...card.otTags);
}
return tags.some(astr=>astr.toLowerCase().includes(str.toLowerCase())) ||
names.some(astr=>astr.toLowerCase().includes(str.toLowerCase()));
}
);
}else
{
return [];
}
}
function copyString(input)
{
input.focus(); //设input为焦点
input.select(); //选择全部
if (document.execCommand('copy')) {
document.execCommand('copy');
}
//input.blur(); //取消焦点
}
//产生一个怪物头像
function createCardA() {
const cdom = document.createElement("a");
@ -622,12 +657,12 @@ function countTeamHp(memberArr, leader1id, leader2id, solo, noAwoken = false) {
scale = needMonIdArr.every(mid => memberIdArr.includes(mid)) ? sk[5] / 100 : 1;
break;
case 136:
scale = hpMul({ attrs: flags(sk[0]) }, sk[1]) *
sk[4] ? hpMul({ attrs: flags(sk[4]) }, sk[5]) : 1;
scale = hpMul({ attrs: flags(sk[0]) }, sk[1]);
if (sk[4]) scale *= hpMul({ attrs: flags(sk[4]) }, sk[5]);
break;
case 137:
scale = hpMul({ types: flags(sk[0]) }, sk[1]) *
sk[4] ? hpMul({ types: flags(sk[4]) }, sk[5]) : 1;
scale = hpMul({ types: flags(sk[0]) }, sk[1]);
if (sk[4]) scale *= hpMul({ types: flags(sk[4]) }, sk[5]);
break;
case 155:
scale = solo ? 1 : hpMul({ attrs: flags(sk[0]), types: flags(sk[1]) }, sk[2]);

View File

@ -16,7 +16,7 @@ let showSearch; //整个程序都可以用的显示搜索函数
const dataStructure = 3; //阵型输出数据的结构版本
const className_displayNone = "display-none";
const dataAttrName = "data-value"; //用于储存默认数据的属性名
const isGuideMod = Boolean(parseInt(getQueryString("guide"))); //是否以图鉴模式启动
const isGuideMod = Boolean(Number(getQueryString("guide"))); //是否以图鉴模式启动
if (location.search.includes('&amp;')) {
location.search = location.search.replace(/&amp;/ig, '&');
@ -422,7 +422,6 @@ class EvoTree
const monName = evotPanel_R.appendChild(document.createElement("div"));
monName.className = "monster-name";
monName.textContent = returnMonsterNameArr(this.card, currentLanguage.searchlist, currentDataSource.code)[0];
console.log(monName.offsetWidth);
const evotMaterials = evotPanel_R.appendChild(document.createElement("ul"));
evotMaterials.className = "evo-materials";
@ -606,20 +605,20 @@ window.onload = function(event) {
//记录显示CD开关的状态
const showMonSkillCd_id = "show-mon-skill-cd";
const btnShowMonSkillCd = controlBox.querySelector(`#btn-${showMonSkillCd_id}`);
btnShowMonSkillCd.checked = Boolean(parseInt(localStorage.getItem("PADDF-" + showMonSkillCd_id)));
btnShowMonSkillCd.checked = Boolean(Number(localStorage.getItem("PADDF-" + showMonSkillCd_id)));
btnShowMonSkillCd.onclick = function(){
toggleDomClassName(this, showMonSkillCd_id);
localStorage.setItem("PADDF-" + showMonSkillCd_id, this.checked ? 1 : 0);
localStorage.setItem("PADDF-" + showMonSkillCd_id, Number(this.checked));
};
btnShowMonSkillCd.onclick();
//记录显示觉醒开关的状态
const showMonAwoken_id = "show-mon-awoken";
const btnShowMonAwoken = controlBox.querySelector(`#btn-${showMonAwoken_id}`);
btnShowMonAwoken.checked = Boolean(parseInt(localStorage.getItem("PADDF-" + showMonAwoken_id)));
btnShowMonAwoken.checked = Boolean(Number(localStorage.getItem("PADDF-" + showMonAwoken_id)));
btnShowMonAwoken.onclick = function(){
toggleDomClassName(this, showMonAwoken_id);
localStorage.setItem("PADDF-" + showMonAwoken_id, this.checked ? 1 : 0);
localStorage.setItem("PADDF-" + showMonAwoken_id, Number(this.checked));
};
btnShowMonAwoken.onclick();
@ -1218,7 +1217,7 @@ function initialize() {
str = str.trim();
if (str.length>0)
{
showSearch(Cards.filter(card =>
return Cards.filter(card =>
{
const names = [card.name];
if (card.otLangName)
@ -1233,7 +1232,10 @@ function initialize() {
return tags.some(astr=>astr.toLowerCase().includes(str.toLowerCase())) ||
names.some(astr=>astr.toLowerCase().includes(str.toLowerCase()));
}
));
);
}else
{
return [];
}
}
function copyString(input)
@ -1264,7 +1266,7 @@ function initialize() {
copyBtn.onclick = function(){copyString(ipt)};
const searchBtn = li.appendChild(document.createElement("button"));
searchBtn.className = "string-search";
searchBtn.onclick = function(){searchByString(ipt.value)};
searchBtn.onclick = function(){showSearch(searchByString(ipt.value))};
});
fragment.appendChild(ul_original);
}
@ -1280,7 +1282,7 @@ function initialize() {
ipt.readOnly = true;
const searchBtn = li.appendChild(document.createElement("button"));
searchBtn.className = "string-search";
searchBtn.onclick = function(){searchByString(ipt.value)};
searchBtn.onclick = function(){showSearch(searchByString(ipt.value))};
});
fragment.appendChild(ul_additional);
}
@ -1556,7 +1558,7 @@ function initialize() {
const officialSortingClassName = 'show-official-awoken-sorting';
const s_showOfficialAwokenSorting = searchBox.querySelector(`#${officialSortingClassName}`); //显示官方排序的觉醒
s_showOfficialAwokenSorting.onchange = function(){
localStorage.setItem("PADDF-" + officialSortingClassName, this.checked ? 1 : 0);
localStorage.setItem("PADDF-" + officialSortingClassName, Number(this.checked));
let fragmentAwoken = document.createDocumentFragment();
let fragmentSawoken = document.createDocumentFragment();
const awokenSorting = this.checked ? official_awoken_sorting : s_awokensUl.originalSorting;
@ -1581,7 +1583,7 @@ function initialize() {
s_awokensUl.appendChild(fragmentAwoken);
s_sawokensUl.appendChild(fragmentSawoken);
};
s_showOfficialAwokenSorting.checked = Boolean(parseInt(localStorage.getItem("PADDF-" + officialSortingClassName)));
s_showOfficialAwokenSorting.checked = Boolean(Number(localStorage.getItem("PADDF-" + officialSortingClassName)));
s_showOfficialAwokenSorting.onchange();
const s_selectedAwokensUl = searchBox.querySelector(".selected-awokens");
@ -1824,7 +1826,7 @@ function initialize() {
//id搜索
const monstersID = settingBox.querySelector(".row-mon-id .m-id");
const btnSearchByString = settingBox.querySelector(".row-mon-id .search-by-string");
monstersID.onchange = function(e)
function idChange(e)
{
if (/^\d+$/.test(this.value)) {
const newId = parseInt(this.value, 10);
@ -1855,20 +1857,27 @@ function initialize() {
return false;
}
}
monstersID.oninput = monstersID.onchange;
monstersID.onchange = idChange;
monstersID.onkeydown = function(e) {
//如果键入回车,则执行字符串搜索
if (e.key == "Enter")
//如果键入回车,字符串长度大于0且不是数字则执行字符串搜索
if (e.key == "Enter" && this.value.length > 0 && !/^\d+$/.test(this.value))
{
if (!/^\d+$/.test(this.value) && this.value.length > 0) //如果不是数字且字符串长度大于0则进行字符串搜索
{
searchByString(monstersID.value);
}
showSearch(searchByString(this.value));
}
}
//输入id数字即时更新的开关
const realTimeClassName = 'real-time-change-card';
const s_realTimeChangeCard = settingBox.querySelector(`#${realTimeClassName}`);
s_realTimeChangeCard.onchange = function() {
monstersID.oninput = this.checked ? idChange : null;
localStorage.setItem("PADDF-" + realTimeClassName, Number(this.checked));
}
s_realTimeChangeCard.checked = Boolean(Number(localStorage.getItem("PADDF-" + realTimeClassName)));
s_realTimeChangeCard.onchange();
//字符串搜索
btnSearchByString.onclick = function() {
searchByString(monstersID.value);
showSearch(searchByString(monstersID.value));
};
//觉醒
const monEditAwokensRow = settingBox.querySelector(".row-mon-awoken");
@ -1949,8 +1958,8 @@ function initialize() {
id: monid,
level: level
};
const needExp = calculateExp(tempMon);
monLvExp.textContent = needExp ? needExp.map(exp=>exp.bigNumberToString()).join(" + ") : "";
const needExpArr = calculateExp(tempMon);
monLvExp.textContent = needExpArr ? needExpArr.map(exp=>exp.bigNumberToString()).join(" + ") : "";
}
editBox.reCalculateExp = reCalculateExp;
//三维
@ -2001,9 +2010,9 @@ function initialize() {
const s_hideLessUseLetent = settingBox.querySelector(`#${hideClassName}`);
s_hideLessUseLetent.onchange = function() {
toggleDomClassName(this, hideClassName, true, monEditLatentAllowableUl);
localStorage.setItem("PADDF-" + hideClassName, this.checked ? 1 : 0);
localStorage.setItem("PADDF-" + hideClassName, Number(this.checked));
}
s_hideLessUseLetent.checked = Boolean(parseInt(localStorage.getItem("PADDF-" + hideClassName)));
s_hideLessUseLetent.checked = Boolean(Number(localStorage.getItem("PADDF-" + hideClassName)));
s_hideLessUseLetent.onchange();
const rowSkill = settingBox.querySelector(".row-mon-skill");
@ -2700,9 +2709,6 @@ function editBoxChangeMonId(id) {
mAltName.classList.add(className_displayNone);
}
const evoCardUl = settingBox.querySelector(".row-mon-id .evo-card-list");
evoCardUl.classList.add(className_displayNone);
evoCardUl.innerHTML = ""; //据说直接清空HTML性能更好
const evoLinkCardsIdArray = Cards.filter(m=>m.evoRootId == card.evoRootId).map(m=>m.id); //筛选出相同进化链的
@ -2744,6 +2750,9 @@ function editBoxChangeMonId(id) {
evoLinkCardsIdArray.sort((a,b)=>a-b);
const createCardHead = editBox.createCardHead;
const evoCardUl = settingBox.querySelector(".row-mon-id .evo-card-list");
evoCardUl.classList.add(className_displayNone);
evoCardUl.innerHTML = ""; //据说直接清空HTML性能更好
const openEvolutionaryTree = settingBox.querySelector(".row-mon-id .open-evolutionary-tree");
if (evoLinkCardsIdArray.length > 1) {
fragment = document.createDocumentFragment(); //创建节点用的临时空间
@ -2756,10 +2765,10 @@ function editBoxChangeMonId(id) {
});
evoCardUl.appendChild(fragment);
evoCardUl.classList.remove(className_displayNone);
openEvolutionaryTree.classList.remove(className_displayNone);
openEvolutionaryTree.classList.remove(className_displayNone); //显示进化树按钮
}else
{
openEvolutionaryTree.classList.add(className_displayNone);
openEvolutionaryTree.classList.add(className_displayNone); //隐藏进化树按钮
}
const mType = monInfoBox.querySelectorAll(".monster-type li");

View File

@ -773,6 +773,7 @@ var formation = new Formation(teamsCount,6);
</div>
<div class="setting-box">
<div class="setting-row row-mon-id">
<input type="checkbox" class="config-checkbox-ipt" name="real-time-change-card" id="real-time-change-card"><label class="config-checkbox-lbl real-time-change-card-label" for="real-time-change-card"><div class="config-checkbox-lbl-cicle"></div></label>
<button class="open-evolutionary-tree"></button>
<button class="open-search"></button><!--搜索怪物按钮-->
<input type="search" class="m-id" list="monsters-name-list"/><button class="search-by-string"></button>
@ -807,7 +808,8 @@ var formation = new Formation(teamsCount,6);
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="5" id="sawoken-choice-5" /><label for="sawoken-choice-5" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="6" id="sawoken-choice-6" /><label for="sawoken-choice-6" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="7" id="sawoken-choice-7" /><label for="sawoken-choice-7" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label>
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="9" id="sawoken-choice-9" /><label for="sawoken-choice-9" class="awoken-icon"></label>
</div>
</div>
</div>

View File

@ -1766,6 +1766,11 @@ icon.inflicts::after
{
opacity: 1;
}
.setting-box .row-mon-id .real-time-change-card-label
{
margin-right: 0;
margin-left: 5px;
}
.setting-box .row-mon-id .open-search{
float: right;
}

View File

@ -1630,6 +1630,7 @@ var formation = new Formation(teamsCount,6);
</div>
<div class="setting-box">
<div class="setting-row row-mon-id">
<input type="checkbox" class="config-checkbox-ipt" name="real-time-change-card" id="real-time-change-card"><label class="config-checkbox-lbl real-time-change-card-label" for="real-time-change-card"><div class="config-checkbox-lbl-cicle"></div></label>
<button class="open-evolutionary-tree"></button>
<button class="open-search"></button><!--搜索怪物按钮-->
<input type="search" class="m-id" list="monsters-name-list"/><button class="search-by-string"></button>
@ -1664,7 +1665,8 @@ var formation = new Formation(teamsCount,6);
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="5" id="sawoken-choice-5" /><label for="sawoken-choice-5" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="6" id="sawoken-choice-6" /><label for="sawoken-choice-6" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="7" id="sawoken-choice-7" /><label for="sawoken-choice-7" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label>
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label><!--
--><input type="radio" name="sawoken-choice" class="sawoken-choice" value="9" id="sawoken-choice-9" /><label for="sawoken-choice-9" class="awoken-icon"></label>
</div>
</div>
</div>