Merge branch 'master' into service-worker
|
@ -1,14 +1,13 @@
|
|||
let needUpdateBrowser = (()=>{
|
||||
try {
|
||||
return !Boolean(eval("undefined?.undefined ?? true"));
|
||||
return !Boolean(eval("1n && (undefined?.undefined ?? true)"));
|
||||
} catch (e) {
|
||||
if (e.name !== 'SyntaxError') throw e // Throw the error if it is not a SyntaxError
|
||||
return true;
|
||||
}
|
||||
})();
|
||||
|
||||
if (needUpdateBrowser)
|
||||
{
|
||||
if (needUpdateBrowser) {
|
||||
let browserVersion = ((UA)=>{
|
||||
let regRes;
|
||||
if (regRes = /\b(Firefox|Chrome)\/([\d\.]+)/ig.exec(UA)) {
|
||||
|
@ -27,20 +26,55 @@ if (needUpdateBrowser)
|
|||
您的浏览器版本为:
|
||||
${browserVersion}
|
||||
|
||||
您的浏览器内核不支持本程序使用的 可选链操作符(?.) 和 空值合并操作符(??)。
|
||||
您的浏览器内核不支持本程序使用的 可选链操作符(?.) 和 空值合并操作符(??) 或 BigInt 数据类型。
|
||||
|
||||
请更新您的浏览器内核到 Firefox(火狐) ≥ 74 或 Chrome(谷歌) ≥ 80 或 iOS Safari ≥ 13.4。`;
|
||||
请更新您的浏览器内核到 Firefox(火狐) ≥ 74 或 Chrome(谷歌) ≥ 80 或 Safari ≥ 14。`;
|
||||
} else {
|
||||
alertStr =
|
||||
`🙁Browser kernel is too old
|
||||
Your browser is:
|
||||
${browserVersion}
|
||||
|
||||
Your browser core does not support Optional chaining (?.) and Nullish coalescing operator (??) used in this program.
|
||||
Your browser core does not support Optional chaining (?.) and Nullish coalescing operator (??) or BigInt value used in this program.
|
||||
|
||||
Please update your browser core to Firefox ≥ 74 or Chrome ≥ 80 or iOS Safari ≥ 13.4`;
|
||||
Please update your browser core to Firefox ≥ 74 or Chrome ≥ 80 or Safari ≥ 14`;
|
||||
}
|
||||
|
||||
alert(alertStr);
|
||||
document.write(alertStr.replace(/\n/g,'<br />'));
|
||||
}
|
||||
|
||||
let denied = ((UA)=>{
|
||||
return /\b(?:MicroMessenger|WeChat|Weixin|QQ|AliApp)\b/.test(UA);
|
||||
})(navigator.userAgent);
|
||||
if (denied) {
|
||||
const mask = document.createElement("div");
|
||||
mask.id = "denied-mask";
|
||||
const css = `
|
||||
#denied-mask {
|
||||
position: fixed;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: #000A;
|
||||
}
|
||||
.alert {
|
||||
font-size: 2em;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
`;
|
||||
const style = mask.appendChild(document.createElement("style"));
|
||||
style.appendChild(document.createTextNode(css));
|
||||
const alertDiv = mask.appendChild(document.createElement("div"));
|
||||
alertDiv.className = "alert"
|
||||
alertDiv.appendChild(document.createTextNode("请勿使用内置浏览"));
|
||||
alertDiv.appendChild(document.createElement("br"));
|
||||
alertDiv.appendChild(document.createTextNode("点击菜单使用正常浏览器打开↗"));
|
||||
|
||||
window.addEventListener("load", ()=>{
|
||||
document.body.appendChild(mask);
|
||||
});
|
||||
}
|
|
@ -82,8 +82,8 @@
|
|||
</ol>
|
||||
<h2 id="editing-tips">编辑技巧 | Editing tips</h2>
|
||||
<ul>
|
||||
<li>使用<strong>后退</strong>即可撤销上一次修改,需要重做则使用前进。<br>
|
||||
Use <strong>Back</strong> to undo the last edit, redo with Forward.<br>
|
||||
<li>使用<strong>后退</strong><code>Alt + ←</code>即可撤销上一次修改,需要重做则使用<strong>前进</strong><code>Alt + →</code>。<br>
|
||||
Use <strong>Back</strong><code>Alt + ←</code> to undo the last edit, redo with <strong>Forward</strong><code>Alt + →</code>.<br>
|
||||
<img src="images/tips-undo.png" alt="撤銷修改">
|
||||
</li>
|
||||
<li><strong>拖拽</strong>卡片头像即可快速交换位置,也支持手机触屏。<br>
|
||||
|
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 183 KiB |
Before Width: | Height: | Size: 576 KiB After Width: | Height: | Size: 824 KiB |
Before Width: | Height: | Size: 873 KiB After Width: | Height: | Size: 921 KiB |
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 931 KiB After Width: | Height: | Size: 970 KiB |
Before Width: | Height: | Size: 481 KiB After Width: | Height: | Size: 682 KiB |
Before Width: | Height: | Size: 741 KiB After Width: | Height: | Size: 741 KiB |
Before Width: | Height: | Size: 806 KiB After Width: | Height: | Size: 1012 KiB |
Before Width: | Height: | Size: 525 KiB After Width: | Height: | Size: 886 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 595 KiB |
After Width: | Height: | Size: 184 KiB |
After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 881 KiB After Width: | Height: | Size: 882 KiB |
Before Width: | Height: | Size: 872 KiB After Width: | Height: | Size: 872 KiB |
Before Width: | Height: | Size: 878 KiB After Width: | Height: | Size: 925 KiB |
Before Width: | Height: | Size: 820 KiB After Width: | Height: | Size: 820 KiB |
Before Width: | Height: | Size: 806 KiB After Width: | Height: | Size: 1012 KiB |
Before Width: | Height: | Size: 744 KiB After Width: | Height: | Size: 821 KiB |
Before Width: | Height: | Size: 207 KiB After Width: | Height: | Size: 829 KiB |
After Width: | Height: | Size: 758 KiB |
After Width: | Height: | Size: 249 KiB |
Before Width: | Height: | Size: 576 KiB After Width: | Height: | Size: 824 KiB |
Before Width: | Height: | Size: 873 KiB After Width: | Height: | Size: 921 KiB |
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 931 KiB After Width: | Height: | Size: 964 KiB |
Before Width: | Height: | Size: 820 KiB After Width: | Height: | Size: 820 KiB |
Before Width: | Height: | Size: 806 KiB After Width: | Height: | Size: 1012 KiB |
Before Width: | Height: | Size: 525 KiB After Width: | Height: | Size: 886 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 595 KiB |
After Width: | Height: | Size: 184 KiB |
After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 399 KiB After Width: | Height: | Size: 456 KiB |
Before Width: | Height: | Size: 284 KiB After Width: | Height: | Size: 291 KiB |
|
@ -283,6 +283,10 @@ label[for="merge-skill"]::after{
|
|||
.control-box .change-swap-to-copy-lbl::after{
|
||||
content:"\"Copy\" when dragging";
|
||||
}
|
||||
label[for="default-level"]::after
|
||||
{
|
||||
content: "Default Lv.";
|
||||
}
|
||||
|
||||
.tIf-total-move .general::after,
|
||||
.tIf-total-move .awoken-bind::after
|
||||
|
@ -421,6 +425,12 @@ label[for="box-have"]::after
|
|||
.special-div .special-add::before {
|
||||
content: "➕";
|
||||
}
|
||||
.special-div .special-star::before {
|
||||
content: "☆";
|
||||
}
|
||||
.special-div .special-star.marked::before {
|
||||
content: "★";
|
||||
}
|
||||
.control-div .search-start::before{
|
||||
content: "🔍Start Search";
|
||||
}
|
||||
|
|
|
@ -276,6 +276,10 @@ label[for="merge-skill"]::after{
|
|||
.control-box .change-swap-to-copy-lbl::after{
|
||||
content:"ドラッグ時にコピー";
|
||||
}
|
||||
label[for="default-level"]::after
|
||||
{
|
||||
content: "デフォルト Lv.";
|
||||
}
|
||||
|
||||
.tIf-total-move .general::after,
|
||||
.tIf-total-move .awoken-bind::after
|
||||
|
@ -414,6 +418,12 @@ label[for="box-have"]::after
|
|||
.special-div .special-add::before {
|
||||
content: "➕";
|
||||
}
|
||||
.special-div .special-star::before {
|
||||
content: "☆";
|
||||
}
|
||||
.special-div .special-star.marked::before {
|
||||
content: "★";
|
||||
}
|
||||
.control-div .search-start::before{
|
||||
content: "🔍検索の開始";
|
||||
}
|
||||
|
|
|
@ -273,6 +273,10 @@ label[for="merge-skill"]::after{
|
|||
.control-box .change-swap-to-copy-lbl::after{
|
||||
content:"끌 때 복사";
|
||||
}
|
||||
label[for="default-level"]::after
|
||||
{
|
||||
content: "기본 Lv.";
|
||||
}
|
||||
|
||||
.tIf-total-move .general::after,
|
||||
.tIf-total-move .awoken-bind::after
|
||||
|
@ -411,6 +415,12 @@ label[for="box-have"]::after
|
|||
.special-div .special-add::before {
|
||||
content: "➕";
|
||||
}
|
||||
.special-div .special-star::before {
|
||||
content: "☆";
|
||||
}
|
||||
.special-div .special-star.marked::before {
|
||||
content: "★";
|
||||
}
|
||||
.control-div .search-start::before{
|
||||
content: "🔍검색 시작";
|
||||
}
|
||||
|
|
|
@ -280,6 +280,10 @@ label[for="merge-skill"]::after{
|
|||
.control-box .change-swap-to-copy-lbl::after{
|
||||
content:"拖拽時使用“複製”";
|
||||
}
|
||||
label[for="default-level"]::after
|
||||
{
|
||||
content: "默認等級:";
|
||||
}
|
||||
|
||||
.tIf-total-move .general::after,
|
||||
.tIf-total-move .awoken-bind::after
|
||||
|
@ -418,6 +422,12 @@ label[for="box-have"]::after
|
|||
.special-div .special-add::before {
|
||||
content: "➕";
|
||||
}
|
||||
.special-div .special-star::before {
|
||||
content: "☆";
|
||||
}
|
||||
.special-div .special-star.marked::before {
|
||||
content: "★";
|
||||
}
|
||||
.control-div .search-start::before{
|
||||
content: "🔍開始搜索";
|
||||
}
|
||||
|
|
|
@ -90,6 +90,7 @@
|
|||
henshin: tp`變身為${'card'}`,
|
||||
void_poison: tp`消除${'poison'}時不會受到毒傷害`,
|
||||
skill_proviso: tp`${'condition'}才能發動後續效果`,
|
||||
impart_awoken: tp`賦予${'attrs_types'}額外的${'awakenings'}`,
|
||||
obstruct_opponent: tp`對${'target'}施加敵對技能效果:${'skills'}`,
|
||||
obstruct_opponent_after_me: tp`排名比自身低的對手`,
|
||||
obstruct_opponent_before_me: tp`排名比自身高的對手`,
|
||||
|
@ -167,6 +168,7 @@
|
|||
enemy_all: tp`敵方全體`,
|
||||
enemy_one: tp`敵方1體`,
|
||||
enemy_attr: tp`${'attr'}敵人`,
|
||||
the_attr: tp`該組寶珠屬性`,
|
||||
},
|
||||
stats: {
|
||||
unknown: tp`[ 未知狀態: ${'type'}]`, //type
|
||||
|
@ -332,6 +334,19 @@
|
|||
[80]: tp`${'icon'}4色`,
|
||||
[81]: tp`${'icon'}5色`,
|
||||
[82]: tp`${'icon'}12珠`,
|
||||
[83]: tp`${'icon'}附加神類型`,
|
||||
[84]: tp`${'icon'}附加龍類型`,
|
||||
[85]: tp`${'icon'}附加惡魔類型`,
|
||||
[86]: tp`${'icon'}附加機械類型`,
|
||||
[87]: tp`${'icon'}附加平衡類型`,
|
||||
[88]: tp`${'icon'}附加攻擊類型`,
|
||||
[89]: tp`${'icon'}附加體力類型`,
|
||||
[90]: tp`${'icon'}附加回復類型`,
|
||||
[91]: tp`${'icon'}附加火屬性`,
|
||||
[92]: tp`${'icon'}附加水屬性`,
|
||||
[93]: tp`${'icon'}附加木屬性`,
|
||||
[94]: tp`${'icon'}附加光屬性`,
|
||||
[95]: tp`${'icon'}附加暗屬性`,
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -278,6 +278,10 @@ label[for="merge-skill"]::after{
|
|||
.control-box .change-swap-to-copy-lbl::after{
|
||||
content:"拖拽时使用“复制”";
|
||||
}
|
||||
label[for="default-level"]::after
|
||||
{
|
||||
content: "默认等级:";
|
||||
}
|
||||
|
||||
.tIf-total-move .general::after,
|
||||
.tIf-total-move .awoken-bind::after
|
||||
|
@ -416,6 +420,12 @@ label[for="box-have"]::after
|
|||
.special-div .special-add::before {
|
||||
content: "➕";
|
||||
}
|
||||
.special-div .special-star::before {
|
||||
content: "☆";
|
||||
}
|
||||
.special-div .special-star.marked::before {
|
||||
content: "★";
|
||||
}
|
||||
.control-div .search-start::before{
|
||||
content: "🔍开始搜索";
|
||||
}
|
||||
|
|
|
@ -91,6 +91,7 @@
|
|||
random_henshin: tp`随机变身为${'cards'}`,
|
||||
void_poison: tp`消除${'poison'}时不会受到毒伤害`,
|
||||
skill_proviso: tp`${'condition'}才能发动后续效果`,
|
||||
impart_awoken: tp`赋予${'attrs_types'}额外的${'awakenings'}`,
|
||||
obstruct_opponent: tp`对${'target'}施加敌对技能效果:${'skills'}`,
|
||||
obstruct_opponent_after_me: tp`排名比自身低的对手`,
|
||||
obstruct_opponent_before_me: tp`排名比自身高的对手`,
|
||||
|
@ -170,6 +171,7 @@
|
|||
enemy_all: tp`敌方全体`,
|
||||
enemy_one: tp`敌方1体`,
|
||||
enemy_attr: tp`${'attr'}敌人`,
|
||||
the_attr: tp`该组宝珠属性`,
|
||||
},
|
||||
stats: {
|
||||
unknown: tp`[ 未知状态: ${'type'}]`, //type
|
||||
|
@ -335,6 +337,19 @@
|
|||
[80]: tp`${'icon'}4色`,
|
||||
[81]: tp`${'icon'}5色`,
|
||||
[82]: tp`${'icon'}12珠`,
|
||||
[83]: tp`${'icon'}附加龙类型`,
|
||||
[84]: tp`${'icon'}附加神类型`,
|
||||
[85]: tp`${'icon'}附加恶魔类型`,
|
||||
[86]: tp`${'icon'}附加机械类型`,
|
||||
[87]: tp`${'icon'}附加平衡类型`,
|
||||
[88]: tp`${'icon'}附加攻击类型`,
|
||||
[89]: tp`${'icon'}附加体力类型`,
|
||||
[90]: tp`${'icon'}附加回复类型`,
|
||||
[91]: tp`${'icon'}附加火属性`,
|
||||
[92]: tp`${'icon'}附加水属性`,
|
||||
[93]: tp`${'icon'}附加木属性`,
|
||||
[94]: tp`${'icon'}附加光属性`,
|
||||
[95]: tp`${'icon'}附加暗属性`,
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -24,9 +24,9 @@ If your simulator needs Android 7 to play PAD. Take the [Nox Player](https://www
|
|||
|
||||
1. 将 Fidder 根证书导出到桌面
|
||||
Export the Fidder Root Certificate to desktop
|
||||
1. 在电脑上找一个 **openssl.exe** 程序,或者下载安装 [Win32OpenSSL](http://slproweb.com/products/Win32OpenSSL.html)
|
||||
1. 在电脑上找一个 **openssl.exe** 程序,或者下载安装 [Win32OpenSSL](http://slproweb.com/products/Win32OpenSSL.html)
|
||||
Find an **openssl.exe** program on computer, or install [Win32OpenSSL](http://slproweb.com/products/Win32OpenSSL.html)
|
||||
1. 执行代码,获取证书的hash
|
||||
1. 执行代码,获取证书的hash
|
||||
Execute the code to get the hash of the certificate
|
||||
`openssl x509 -inform PEM -subject_hash_old -noout -in FiddlerRoot.cer`
|
||||
1. 执行代码,将证书由 *CER* 转换为 *PEM* 格式
|
||||
|
|
|
@ -1 +1 @@
|
|||
[{"code":"ja","ckey":{"card":"7fcd84e9b15daef107106d3bd9bc88fb","skill":"f6325b48a470e0bdf3866e85df053c16"},"updateTime":1650277168198},{"code":"en","ckey":{"card":"46a400abf1aaf7101de9e6608ae8046f","skill":"412e27ec83b66ffe775615ca509203b8"},"updateTime":1650277168198},{"code":"ko","ckey":{"card":"d81734d1081b11cfbc19bf6b56417c9b","skill":"2eaf36d0d87213bf5a29a14cd4f60217"},"updateTime":1650277168198}]
|
||||
[{"code":"ja","ckey":{"card":"a2e41c3c566eb0649199102d3b307182","skill":"3b124788c18bb26dbf37752021774cde"},"updateTime":1655710195153},{"code":"en","ckey":{"card":"59eb92f688d04fd1a238339fb70b0162","skill":"fa3a9fdb35a0a67e8e0405ab45aa842e"},"updateTime":1655467366519},{"code":"ko","ckey":{"card":"29625b6520ecd9ee393ff00e607f0801","skill":"57f1a15fd61faefe642ab7faa63ec602"},"updateTime":1655467366519}]
|
|
@ -29,10 +29,10 @@ function sameCard(m1,m2)
|
|||
if (m1 == undefined || m2 == undefined) return false; //是否存在
|
||||
if (m1.attrs[0] != m2.attrs[0]) return false; //主属性
|
||||
if (m1.attrs[1] != m2.attrs[1]) return false; //副属性
|
||||
if (m1.types.length != m2.types.length) return false; //类型长度
|
||||
if (m1.types.some(function(t1,ti){
|
||||
return m2.types[ti] == undefined || m2.types[ti] != t1;
|
||||
})) return false; //全部类型有任意不同的时候也返回false
|
||||
//全部类型有任意不同的时候也返回false,但是考虑到上修,不要求总数一致
|
||||
for (let i = 0; i < Math.min(m1.types.length, m2.types.length); i++) {
|
||||
if (m1.types[i] != m2.types[i]) return false;
|
||||
}
|
||||
if (m1.maxLevel != m2.maxLevel) return false; //最大等级
|
||||
if (m1.collabId != m2.collabId) return false; //合作ID
|
||||
return true;
|
||||
|
@ -99,6 +99,20 @@ officialAPI.forEach(function(lang) {
|
|||
delete card.searchFlags;
|
||||
monCards.push(card);
|
||||
}
|
||||
/*
|
||||
//测试附加属性与类型的武器用
|
||||
for (let i = 83; i <= 95; i++)
|
||||
{
|
||||
let testCard = new Card(oCards[0]);
|
||||
testCard.id = monCards.length;
|
||||
testCard.canAssist = true;
|
||||
if (i >= 83 && i<= 90) testCard.attrs[0] = 6;
|
||||
if (i >= 91) testCard.attrs = [i - 91, i - 91];
|
||||
testCard.name = "v20.0 new awoken debug test ID." + i;
|
||||
testCard.awakenings.push(49, i);
|
||||
monCards.push(testCard);
|
||||
}
|
||||
*/
|
||||
|
||||
//加入自定义的语言
|
||||
lang.customName.forEach(function(lcode){
|
||||
|
|
|
@ -3,6 +3,8 @@ const path = require('path');
|
|||
const OpenCC = require('opencc-js');
|
||||
const converter = OpenCC.Converter({ from: 'hk', to: 'cn' });
|
||||
const tsConverter = OpenCC.CustomConverter([
|
||||
['点阵图', '像素画'],
|
||||
['魔物猎人', '怪物猎人'],
|
||||
['铁甲奇侠', '钢铁侠'],
|
||||
['变形侠医', '绿巨人'],
|
||||
['毒魔', '毒液'],
|
||||
|
|
71
multi.html
|
@ -56,19 +56,26 @@ var formation = new Formation(teamsCount,5);
|
|||
<label class="languages-label"><select class="languages"></select></label>
|
||||
<label class="datasource-label"><select class="datasource"></select></label>
|
||||
<button onclick="loadData(true);" class="datasource-updatetime" title="强制刷新数据"></button>
|
||||
<a class="help-link" target="_blank" href="doc/index.html"></a>
|
||||
</div>
|
||||
<div>
|
||||
<button class="btn-clear-data" onclick="clearData();"></button>
|
||||
<button class="btn-player-data"></button>
|
||||
<button class="btn-solo-link" onclick="turnPage(1,arguments[0]);"></button><button class="btn-multi-link" disabled></button><button class="btn-triple-link" onclick="turnPage(3,arguments[0]);"></button>
|
||||
<button class="btn-swap-AB-team" onclick="swapABCteam();"></button>
|
||||
<button class="btn-set-dungeon-enchance"></button>
|
||||
</div>
|
||||
<div>
|
||||
<a class="down-capture display-none" target="_blank"></a>
|
||||
<button class="btn-qrcode"></button>
|
||||
<button class="btn-capture" onclick="capture();"></button>
|
||||
<a class="down-capture display-none" target="_blank"></a>
|
||||
<button class="btn-player-data"></button>
|
||||
<a class="help-link" target="_blank" href="doc/index.html"></a>
|
||||
<button class="btn-set-dungeon-enchance"></button>
|
||||
<label for="default-level"></label><input id="default-level" type="number" min="1" max="120" list="level-list" placeholder="110"/>
|
||||
<datalist id="level-list">
|
||||
<option>1</option>
|
||||
<option>99</option>
|
||||
<option>110</option>
|
||||
<option>120</option>
|
||||
</datalist>
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" class="config-checkbox-ipt" name="show-mon-id" id="show-mon-id"><label class="config-checkbox-lbl show-mon-id-lbl" for="show-mon-id"><div class="config-checkbox-lbl-cicle"></div></label>
|
||||
|
@ -118,8 +125,8 @@ var formation = new Formation(teamsCount,5);
|
|||
--><li><icon class="attr" data-attr-icon="4"><!--暗--></icon></li>
|
||||
</ul>
|
||||
<ul class="tIf-types">
|
||||
<li><icon class="type-icon" data-type-icon="4"><!--龍--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="5"><!--神--></icon></li><!--
|
||||
<li><icon class="type-icon" data-type-icon="5"><!--神--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="4"><!--龍--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="7"><!--惡魔--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="8"><!--机械--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="1"><!--平衡--></icon></li><!--
|
||||
|
@ -710,8 +717,8 @@ var formation = new Formation(teamsCount,5);
|
|||
</div>
|
||||
<div class="types-div"><!--类型-->
|
||||
<ul class="type-list">
|
||||
<li data-type-icon="4"><input type="checkbox" class="type-check" name="types" value="4" id="search-type-4" /><label class="type-icon" data-type-icon="4" for="search-type-4"><!--龍--></label></li>
|
||||
<li data-type-icon="5"><input type="checkbox" class="type-check" name="types" value="5" id="search-type-5" /><label class="type-icon" data-type-icon="5" for="search-type-5"><!--神--></label></li>
|
||||
<li data-type-icon="4"><input type="checkbox" class="type-check" name="types" value="4" id="search-type-4" /><label class="type-icon" data-type-icon="4" for="search-type-4"><!--龍--></label></li>
|
||||
<li data-type-icon="7"><input type="checkbox" class="type-check" name="types" value="7" id="search-type-7" /><label class="type-icon" data-type-icon="7" for="search-type-7"><!--惡魔--></label></li>
|
||||
<li data-type-icon="8"><input type="checkbox" class="type-check" name="types" value="8" id="search-type-8" /><label class="type-icon" data-type-icon="8" for="search-type-8"><!--机械--></label></li>
|
||||
<li data-type-icon="1"><input type="checkbox" class="type-check" name="types" value="1" id="search-type-1" /><label class="type-icon" data-type-icon="1" for="search-type-1"><!--平衡--></label></li>
|
||||
|
@ -843,6 +850,19 @@ var formation = new Formation(teamsCount,5);
|
|||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="80"></button><!--4色--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="81"></button><!--5色--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="82"></button><!--12珠--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="83" data-max-count="1"></button><!--附加神类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="84" data-max-count="1"></button><!--附加龙类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="85" data-max-count="1"></button><!--附加恶魔类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="86" data-max-count="1"></button><!--附加机械类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="87" data-max-count="1"></button><!--附加平衡类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="88" data-max-count="1"></button><!--附加攻击类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="89" data-max-count="1"></button><!--附加体力类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="90" data-max-count="1"></button><!--附加回复类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="91" data-max-count="1"></button><!--附加火属性--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="92" data-max-count="1"></button><!--附加水属性--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="93" data-max-count="1"></button><!--附加木属性--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="94" data-max-count="1"></button><!--附加光属性--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="95" data-max-count="1"></button><!--附加暗属性--></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sawoken-div"><!--超觉醒-->
|
||||
|
@ -865,9 +885,9 @@ var formation = new Formation(teamsCount,5);
|
|||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="45" id="search-awoken-45" /><label class="awoken-icon" data-awoken-icon="45" for="search-awoken-45"></label><!--心追--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="50" id="search-awoken-50" /><label class="awoken-icon" data-awoken-icon="50" for="search-awoken-50"></label><!--方块心追--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="19" id="search-awoken-19" /><label class="awoken-icon" data-awoken-icon="19" for="search-awoken-19"></label><!--手指--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="1" id="search-awoken-1" /><label class="awoken-icon" data-awoken-icon="1" for="search-awoken-1"></label><!--HP+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="2" id="search-awoken-2" /><label class="awoken-icon" data-awoken-icon="2" for="search-awoken-2"></label><!--攻击+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="3" id="search-awoken-3" /><label class="awoken-icon" data-awoken-icon="3" for="search-awoken-3"></label><!--回复+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="1" id="search-awoken-1" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="1" for="search-awoken-1"></label><!--HP+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="2" id="search-awoken-2" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="2" for="search-awoken-2"></label><!--攻击+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="3" id="search-awoken-3" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="3" for="search-awoken-3"></label><!--回复+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="4" id="search-awoken-4" /><label class="awoken-icon" data-awoken-icon="4" for="search-awoken-4"></label><!--火盾--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="5" id="search-awoken-5" /><label class="awoken-icon" data-awoken-icon="5" for="search-awoken-5"></label><!--水盾--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="6" id="search-awoken-6" /><label class="awoken-icon" data-awoken-icon="6" for="search-awoken-6"></label><!--木盾--></li>
|
||||
|
@ -891,7 +911,7 @@ var formation = new Formation(teamsCount,5);
|
|||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="26" id="search-awoken-26" /><label class="awoken-icon" data-awoken-icon="26" for="search-awoken-26"></label><!--暗横--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="20" id="search-awoken-20" /><label class="awoken-icon" data-awoken-icon="20" for="search-awoken-20"></label><!--心解--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="28" id="search-awoken-28" /><label class="awoken-icon" data-awoken-icon="28" for="search-awoken-28"></label><!--SX--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="30" id="search-awoken-30" /><label class="awoken-icon" data-awoken-icon="30" for="search-awoken-30"></label><!--协力--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="30" id="search-awoken-30" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="30" for="search-awoken-30"></label><!--协力--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="31" id="search-awoken-31" /><label class="awoken-icon" data-awoken-icon="31" for="search-awoken-31"></label><!--龙杀--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="32" id="search-awoken-32" /><label class="awoken-icon" data-awoken-icon="32" for="search-awoken-32"></label><!--神杀--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="33" id="search-awoken-33" /><label class="awoken-icon" data-awoken-icon="33" for="search-awoken-33"></label><!--恶魔杀--></li>
|
||||
|
@ -907,17 +927,17 @@ var formation = new Formation(teamsCount,5);
|
|||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="44" id="search-awoken-44" /><label class="awoken-icon" data-awoken-icon="44" for="search-awoken-44"></label><!--5色破防--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="46" id="search-awoken-46" /><label class="awoken-icon" data-awoken-icon="46" for="search-awoken-46"></label><!--全体HP--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="47" id="search-awoken-47" /><label class="awoken-icon" data-awoken-icon="47" for="search-awoken-47"></label><!--全体回复--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="49" id="search-awoken-49" /><label class="awoken-icon" data-awoken-icon="49" for="search-awoken-49"></label><!--武器觉醒--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="49" id="search-awoken-49" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="49" for="search-awoken-49"></label><!--武器觉醒--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="51" id="search-awoken-51" /><label class="awoken-icon" data-awoken-icon="51" for="search-awoken-51"></label><!--5色溜--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="53" id="search-awoken-53" /><label class="awoken-icon" data-awoken-icon="53" for="search-awoken-53"></label><!--大手指--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="56" id="search-awoken-56" /><label class="awoken-icon" data-awoken-icon="56" for="search-awoken-56"></label><!--大SB--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="59" id="search-awoken-59" /><label class="awoken-icon" data-awoken-icon="59" for="search-awoken-59"></label><!--L盾--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="62" id="search-awoken-62" /><label class="awoken-icon" data-awoken-icon="62" for="search-awoken-62"></label><!--c珠--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="63" id="search-awoken-63" /><label class="awoken-icon" data-awoken-icon="63" for="search-awoken-63"></label><!--语音--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="63" id="search-awoken-63" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="63" for="search-awoken-63"></label><!--语音--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="64" id="search-awoken-64" /><label class="awoken-icon" data-awoken-icon="64" for="search-awoken-64"></label><!--奖励增加--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="65" id="search-awoken-65" /><label class="awoken-icon" data-awoken-icon="65" for="search-awoken-65"></label><!--HP- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="66" id="search-awoken-66" /><label class="awoken-icon" data-awoken-icon="66" for="search-awoken-66"></label><!--攻击- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="67" id="search-awoken-67" /><label class="awoken-icon" data-awoken-icon="67" for="search-awoken-67"></label><!--回复- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="65" id="search-awoken-65" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="65" for="search-awoken-65"></label><!--HP- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="66" id="search-awoken-66" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="66" for="search-awoken-66"></label><!--攻击- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="67" id="search-awoken-67" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="67" for="search-awoken-67"></label><!--回复- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="71" id="search-awoken-71" /><label class="awoken-icon" data-awoken-icon="71" for="search-awoken-71"></label><!--掉废--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="72" id="search-awoken-72" /><label class="awoken-icon" data-awoken-icon="72" for="search-awoken-72"></label><!--掉毒--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="73" id="search-awoken-73" /><label class="awoken-icon" data-awoken-icon="73" for="search-awoken-73"></label><!--2串火--></li>
|
||||
|
@ -930,11 +950,25 @@ var formation = new Formation(teamsCount,5);
|
|||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="80" id="search-awoken-80" /><label class="awoken-icon" data-awoken-icon="80" for="search-awoken-80"></label><!--4色--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="81" id="search-awoken-81" /><label class="awoken-icon" data-awoken-icon="81" for="search-awoken-81"></label><!--5色--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="82" id="search-awoken-82" /><label class="awoken-icon" data-awoken-icon="82" for="search-awoken-82"></label><!--12珠--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="83" id="search-awoken-83" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="83" for="search-awoken-83"></label><!--附加神类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="84" id="search-awoken-84" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="84" for="search-awoken-84"></label><!--附加龙类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="85" id="search-awoken-85" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="85" for="search-awoken-85"></label><!--附加恶魔类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="86" id="search-awoken-86" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="86" for="search-awoken-86"></label><!--附加机械类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="87" id="search-awoken-87" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="87" for="search-awoken-87"></label><!--附加平衡类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="88" id="search-awoken-88" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="88" for="search-awoken-88"></label><!--附加攻击类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="89" id="search-awoken-89" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="89" for="search-awoken-89"></label><!--附加体力类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="90" id="search-awoken-90" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="90" for="search-awoken-90"></label><!--附加回复类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="91" id="search-awoken-91" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="91" for="search-awoken-91"></label><!--附加火属性--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="92" id="search-awoken-92" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="92" for="search-awoken-92"></label><!--附加水属性--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="93" id="search-awoken-93" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="93" for="search-awoken-93"></label><!--附加木属性--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="94" id="search-awoken-94" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="94" for="search-awoken-94"></label><!--附加光属性--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="95" id="search-awoken-95" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="95" for="search-awoken-95"></label><!--附加暗属性--></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="special-div">
|
||||
<button class="special-add brown-button"></button>
|
||||
<button class="special-clear brown-button"></button>
|
||||
<button class="special-star brown-button"></button>
|
||||
<ul class="special-filter-list">
|
||||
<li><select class="special-filter"></select></li>
|
||||
</ul>
|
||||
|
@ -1126,6 +1160,7 @@ var formation = new Formation(teamsCount,5);
|
|||
<li class="latent-icon" data-latent-icon="40"></li><!--心横解转转-->
|
||||
<li class="latent-icon" data-latent-icon="41"></li><!--U解禁消-->
|
||||
<li class="latent-icon" data-latent-icon="42"></li><!--伤害上限解除-->
|
||||
<li class="latent-icon" data-latent-icon="46"></li><!--心追解云封-->
|
||||
</ul>
|
||||
</div>
|
||||
<div class="setting-row row-mon-skill">
|
||||
|
@ -1173,7 +1208,7 @@ var formation = new Formation(teamsCount,5);
|
|||
</div>
|
||||
|
||||
<template id="template-card-a">
|
||||
<a class="monster" target="_blank" data-cardid="" data-cards-pic-idx="" data-cards-pic-x="" data-cards-pic-y="" title=""><div class="property" data-property=""></div><div class="subproperty" data-property=""></div><div class="id"></div><div class="awoken-count-num"></div><div class="count-in-box"><span class="same-id"></span><span class="evo-tree"></span></div></a>
|
||||
<a class="monster" target="_blank" data-cardid="" data-cards-pic-idx="" data-cards-pic-x="" data-cards-pic-y="" title=""><div class="property" data-property=""></div><div class="subproperty" data-property=""></div><div class="id"></div><div class="awoken-count-num"></div><div class="rarity"></div><div class="count-in-box"><span class="same-id"></span><span class="evo-tree"></span></div></a>
|
||||
</template>
|
||||
</div>
|
||||
<svg id="interchange-line" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" height="100%" width="100%" style="display:none;">
|
||||
|
@ -1235,8 +1270,8 @@ var formation = new Formation(teamsCount,5);
|
|||
<li><input type="checkbox" class="attr-check" name="dungeon-attrs" value="4" id="dungeon-attr-4" /><label class="attr" data-attr-icon="4" for="dungeon-attr-4"></label></li><!--暗-->
|
||||
</ul>
|
||||
<ul class="type-list">
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="4" id="dungeon-type-4" /><label class="type-icon" data-type-icon="4" for="dungeon-type-4"><!--龍--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="5" id="dungeon-type-5" /><label class="type-icon" data-type-icon="5" for="dungeon-type-5"><!--神--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="4" id="dungeon-type-4" /><label class="type-icon" data-type-icon="4" for="dungeon-type-4"><!--龍--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="7" id="dungeon-type-7" /><label class="type-icon" data-type-icon="7" for="dungeon-type-7"><!--惡魔--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="8" id="dungeon-type-8" /><label class="type-icon" data-type-icon="8" for="dungeon-type-8"><!--机械--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="1" id="dungeon-type-1" /><label class="type-icon" data-type-icon="1" for="dungeon-type-1"><!--平衡--></label></li>
|
||||
|
|
1747
script-json_data.js
|
@ -371,7 +371,9 @@ const SkillKinds = {
|
|||
Henshin: "henshin",
|
||||
VoidPoison: "void-poison",
|
||||
SkillProviso: "skill-proviso",
|
||||
ImpartAwakenings: "impart-awakenings",
|
||||
ObstructOpponent: "obstruct-opponent",
|
||||
|
||||
}
|
||||
|
||||
function skillParser(skillId)
|
||||
|
@ -916,6 +918,9 @@ function henshin(id, random = false) {
|
|||
}
|
||||
function voidPoison() { return { kind: SkillKinds.VoidPoison }; }
|
||||
function skillProviso(cond) { return { kind: SkillKinds.SkillProviso, cond: cond }; }
|
||||
function impartAwakenings(attrs, types, awakenings) {
|
||||
return { kind: SkillKinds.ImpartAwakenings, attrs: attrs, types: types, awakenings: awakenings };
|
||||
}
|
||||
function obstructOpponent(type, pos, ids) {
|
||||
return { kind: SkillKinds.ObstructOpponent, type: type, pos: pos, enemy_skills: ids };
|
||||
}
|
||||
|
@ -992,7 +997,7 @@ const parsers = {
|
|||
[58](attr, min, max) { return damageEnemy('all', attr, v.randomATK(min, max)); },
|
||||
[59](attr, min, max) { return damageEnemy('single', attr, v.randomATK(min, max)); },
|
||||
[60](turns, mul, attr) { return activeTurns(turns, counterAttack(attr, v.percent(100), v.percent(mul))); },
|
||||
[61](attrs, min, base, bonus, max) { return powerUp(null, null, p.scaleAttrs(flags(attrs), min, max || min, [base, 100], [bonus, 0])); },
|
||||
[61](attrs, min, base, bonus, max) { return powerUp(null, null, p.scaleAttrs(flags(attrs), min, min + (max || 0), [base, 100], [bonus, 0])); },
|
||||
[62](type, mul) { return powerUp(null, [type], p.mul({ hp: mul, atk: mul })); },
|
||||
[63](type, mul) { return powerUp(null, [type], p.mul({ hp: mul, rcv: mul })); },
|
||||
[64](type, mul) { return powerUp(null, [type], p.mul({ atk: mul, rcv: mul })); },
|
||||
|
@ -1154,7 +1159,7 @@ const parsers = {
|
|||
|
||||
[148](percent) { return rateMultiply(v.percent(percent), 'exp'); },
|
||||
[149](mul) { return powerUp(null, null, p.mul({ rcv: mul }), c.exact('match-length', 4, [Attributes.Heart])); },
|
||||
[150](_, mul) { return powerUp(null, null, p.mul({ atk: mul }), c.exact('match-length', 5, 'enhanced')); },
|
||||
[150](_, mul) { return powerUp({targets: ['the-attr']}, null, p.mul({ atk: mul }), c.exact('match-length', 5, 'enhanced')); },
|
||||
[151](mul1, mul2, percent) {
|
||||
return powerUp(null, null, p.scaleCross([{ single: true, attr: [Attributes.Heart], atk: mul1 || 100, rcv: mul2 || 100 }]), null, v.percent(percent));
|
||||
},
|
||||
|
@ -1215,7 +1220,12 @@ const parsers = {
|
|||
);
|
||||
},
|
||||
[169](min, base, percent, bonus, max) { return powerUp(null, null, p.scaleCombos(min, max ?? min, [base || 100, 100], [bonus, 0]), null, v.percent(percent)); },
|
||||
[170](attrs, min, base, percent, bonus, stage) { return powerUp(null, null, p.scaleAttrs(flags(attrs), min, min + (stage ? stage - 1 : 0), [base, 100], [bonus ?? 0, 0]), null, v.percent(percent)); },
|
||||
//stage的真实用法目前不知道,缺少样本来判断,不知道到底是直接算数(stage-1)还是算二进制个数(flags(stage).length)。 2022年5月23日
|
||||
//按 瘦鹅 的说法,也可能是因为暗牛头限制了5色, 所以就算是3级到了6色,也只算5色。
|
||||
[170](attrs, min, base, percent, bonus, stage) {
|
||||
let attrsArr = flags(attrs);
|
||||
return powerUp(null, null, p.scaleAttrs(attrsArr, min, Math.min(min + (stage || 0), attrsArr.length), [base, 100], [bonus ?? 0, 0]), null, v.percent(percent));
|
||||
},
|
||||
[171](attrs1, attrs2, attrs3, attrs4, min, mul, percent, bonus) {
|
||||
const attrs = [attrs1, attrs2, attrs3, attrs4].filter(Boolean);
|
||||
return powerUp(null, null, p.scaleMatchAttrs(attrs.flatMap(flags), min, bonus ? attrs.length : min, [mul, 100], [bonus ?? 0, 0]), null, v.percent(percent));
|
||||
|
@ -1369,6 +1379,9 @@ const parsers = {
|
|||
[210](attrs, reduce, combo) {
|
||||
return powerUp(null, null, p.scaleCross([{ single: false, attr: flags(attrs), atk: 100, rcv: 100}]), null, v.percent(reduce), combo ? [addCombo(combo)] : null);
|
||||
},
|
||||
[213](attrs, types, ...awakenings) { //赋予觉醒的队长技
|
||||
return impartAwakenings(flags(attrs), flags(types), awakenings);
|
||||
},
|
||||
[214](turns) { return activeTurns(turns, bindSkill()); },
|
||||
[215](turns, attrs) { return activeTurns(turns, setOrbState(flags(attrs), 'bound')); },
|
||||
|
||||
|
@ -1401,7 +1414,7 @@ const parsers = {
|
|||
);
|
||||
},
|
||||
[229](attrs, types, hp, atk, rcv) {
|
||||
return powerUp(null, null, p.scaleStateKindCount(null, flags(attrs), flags(types), p.mul({hp: hp, atk: atk, rcv: rcv})));
|
||||
return powerUp(null, null, p.scaleStateKindCount(null, flags(attrs), flags(types), p.mul({hp: hp || 0, atk: atk || 0, rcv: rcv || 0})));
|
||||
},
|
||||
[230](turns, target, mul) {
|
||||
/*const targetType = {
|
||||
|
@ -2148,7 +2161,6 @@ function renderSkill(skill, option = {})
|
|||
}
|
||||
if (targets != undefined)
|
||||
{
|
||||
console.debug(targets)
|
||||
targetDict.target = targets.map(target=>
|
||||
tsp?.target[target.replaceAll("-","_")]?.())
|
||||
.nodeJoin(tsp.word.slight_pause());
|
||||
|
@ -2224,6 +2236,31 @@ function renderSkill(skill, option = {})
|
|||
frg.ap(tsp.skill.skill_proviso(dict));
|
||||
break;
|
||||
}
|
||||
case SkillKinds.ImpartAwakenings: { //赋予队员觉醒
|
||||
let attrs = skill.attrs, types = skill.types, awakenings = skill.awakenings;
|
||||
dict = {
|
||||
awakenings: renderAwakenings(awakenings, {affix: true}),
|
||||
}
|
||||
|
||||
let attrs_types = [];
|
||||
if (attrs?.length && !isEqual(attrs, Attributes.all()))
|
||||
{
|
||||
dict.attrs = renderAttrs(attrs || [], {affix: attrs?.filter(attr=> attr !== 5)?.length});
|
||||
attrs_types.push(dict.attrs);
|
||||
}
|
||||
if (types?.length)
|
||||
{
|
||||
dict.types = renderTypes(types || [], {affix: true});
|
||||
attrs_types.push(dict.types);
|
||||
}
|
||||
if (attrs_types.length)
|
||||
{
|
||||
dict.attrs_types = attrs_types.nodeJoin(tsp.word.slight_pause());
|
||||
}
|
||||
|
||||
frg.ap(tsp.skill.impart_awoken(dict));
|
||||
break;
|
||||
}
|
||||
case SkillKinds.ObstructOpponent: { //条件限制才能用技能
|
||||
let type = skill.type, pos = skill.pos, enemy_skills = skill.enemy_skills;
|
||||
let slight_pause = tsp.word.slight_pause().textContent;
|
||||
|
|
|
@ -51,38 +51,27 @@ function localStorage_getBoolean(name, defaultValue = false){
|
|||
else return Boolean(Number(localStorage.getItem(name) ?? defaultValue));
|
||||
}
|
||||
|
||||
//数字补前导0
|
||||
Number.prototype.prefixInteger = function(length, useGrouping = false) {
|
||||
return this.toLocaleString(undefined, {
|
||||
useGrouping: useGrouping,
|
||||
minimumIntegerDigits: length
|
||||
});
|
||||
}
|
||||
//数字补前导0
|
||||
String.prototype.prefix = function(length = 2, prefix = '0') {
|
||||
let needAddLength = Math.max(length - this.length, 0);
|
||||
return new Array(needAddLength).fill(prefix).join('') + this;
|
||||
}
|
||||
|
||||
// 将字符串转为Base64
|
||||
String.prototype.toBinary = function() {
|
||||
const charCodes16Arr = [...this].map(char=>char.charCodeAt(0));
|
||||
const codeUnits = new Uint16Array(charCodes16Arr);
|
||||
const charCodes = new Uint8Array(codeUnits.buffer);
|
||||
// 将字符串转为二进制字符串
|
||||
String.prototype.toUTF16BinaryString = function() {
|
||||
const charCodes16Arr = [...this].map(char=>char.charCodeAt(0)); //将每个字符转为数字
|
||||
const codeUnits = new Uint16Array(charCodes16Arr); //将每个字符存入 2 字节中。警告:仅限 0xFFFF 前的Unicode字符,之后的就得换 Uint32Array
|
||||
const charCodes = new Uint8Array(codeUnits.buffer); //每两个存入中
|
||||
const result = [...charCodes].map(code=>String.fromCharCode(code)).join('');
|
||||
return result;
|
||||
}
|
||||
String.prototype.toBase64 = function() {
|
||||
return btoa(this.toBinary());
|
||||
}
|
||||
String.fromBinary = function(binary) {
|
||||
|
||||
String.fromBinaryString = function(binary) {
|
||||
const bytes = new Uint8Array([...binary].map(char=>char.charCodeAt(0)));
|
||||
const charCodes = new Uint16Array(bytes.buffer);
|
||||
const result = [...charCodes].map(code=>String.fromCharCode(code)).join('');
|
||||
return result;
|
||||
}
|
||||
String.fromBase64 = function(base64) {
|
||||
return String.fromBinary(atob(base64));
|
||||
return String.fromBinaryString(atob(base64));
|
||||
}
|
||||
//Buffer转16进制字符串
|
||||
Uint8Array.prototype.toHex = function() {
|
||||
return [...this].map(n=>n.toString(16).padStart(2,'0')).join('');
|
||||
}
|
||||
|
||||
//大数字缩短长度,默认返回本地定义字符串
|
||||
|
@ -131,6 +120,7 @@ Math.randomInteger = function(max, min = 0) {
|
|||
return this.floor(this.random() * (max - min + 1) + min);
|
||||
}
|
||||
|
||||
|
||||
//将二进制flag转为数组
|
||||
function flags(num) {
|
||||
const arr = [];
|
||||
|
@ -356,14 +346,22 @@ function dbDelete (db, tableName, keys) {
|
|||
function latentUseHole(latentId) {
|
||||
switch (true) {
|
||||
case (latentId === 12):
|
||||
case (latentId >= 16 && latentId <= 36 || latentId >= 43):
|
||||
case (latentId >= 16 && latentId <= 36):
|
||||
case (latentId >= 43 && latentId <= 45):
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
case (latentId >= 13 && latentId <= 15):
|
||||
case (latentId >= 37 && latentId <= 42):
|
||||
case (latentId == 46):
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
case (latentId < 12):
|
||||
default:
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
//获取最大潜觉数量
|
||||
|
@ -634,22 +632,27 @@ function searchCards(cards, attr1, attr2, fixMainColor, types, typeAndOr, rares,
|
|||
if (attr1 != null && attr1 === attr2 || //主副属性一致并不为空
|
||||
(attr1 === 6 && attr2 === -1)) //主副属性都为“无”
|
||||
{ //当两个颜色相同时,主副一样颜色的只需判断一次
|
||||
cardsRange = cardsRange.filter(c => c.attrs[0] === attr1 && c.attrs[1] === attr1);
|
||||
} else if (fixMainColor) //如果固定了顺序
|
||||
cardsRange = cardsRange.filter(c => c.attrs[0] === attr1 && c.attrs[1] === attr2);
|
||||
}
|
||||
else if (fixMainColor) //如果固定了顺序
|
||||
{
|
||||
const a1null = attr1 === null,
|
||||
a2null = attr2 === null;
|
||||
cardsRange = cardsRange.filter(c =>
|
||||
(a1null ? true : c.attrs[0] === attr1) &&
|
||||
(a2null ? true : c.attrs[1] === attr2)
|
||||
);
|
||||
} else //不限定顺序时
|
||||
const a1IsNull = attr1 === null,
|
||||
a2IsNull = attr2 === null;
|
||||
if (!a1IsNull || !a2IsNull) { //当a1、a2任一不为null(任意)时才需要筛选
|
||||
cardsRange = cardsRange.filter(c =>
|
||||
(a2IsNull ? c.attrs[0] === 6 && c.attrs[1] === attr1 : false) || //当2为随机,只有属性1时,也专门搜只有副属性=属性1的怪物
|
||||
(a1IsNull ? true : c.attrs[0] === attr1) &&
|
||||
(a2IsNull ? true : c.attrs[1] === attr2)
|
||||
);
|
||||
}
|
||||
}
|
||||
else //不限定顺序时
|
||||
{
|
||||
const search_attrs = [attr1, attr2].filter(a => a !== null && a >= 0 && a <= 5); //所有非空属性
|
||||
const anone = attr1 === 6 || attr2 === -1; //是否有“无”属性
|
||||
const search_attrs = [attr1, attr2].filter(a => a != null && a >= 0 && a <= 5); //所有非空属性
|
||||
const aNone = attr1 === 6 || attr2 === -1; //是否有“无”属性
|
||||
cardsRange = cardsRange.filter(c =>
|
||||
search_attrs.every(a => c.attrs.includes(a)) &&
|
||||
(anone ? (c.attrs.includes(6) || c.attrs.includes(-1)) : true)
|
||||
(aNone ? (c.attrs.includes(6) || c.attrs.includes(-1)) : true)
|
||||
);
|
||||
}
|
||||
//类型
|
||||
|
@ -917,16 +920,16 @@ function getAllowLatent(card) {
|
|||
return Array.from(latentSet);
|
||||
}
|
||||
//计算队伍中有多少血量
|
||||
function countTeamHp(memberArr, leader1id, leader2id, solo, noAwoken = false) {
|
||||
function countTeamHp(team, leader1id, leader2id, solo, noAwoken = false) {
|
||||
let memberArr = team[0], assistArr = team[1];
|
||||
const ls1 = Skills[(Cards[leader1id] || Cards[0]).leaderSkillId];
|
||||
const ls2 = Skills[(Cards[leader2id] || Cards[0]).leaderSkillId];
|
||||
const mHpArr = memberArr.map(m => {
|
||||
const ability = noAwoken ? m.abilityNoAwoken : m.ability;
|
||||
const mHpArr = memberArr.map((member, idx) => {
|
||||
const ability = noAwoken ? member.abilityNoAwoken : member.ability;
|
||||
let hp = ability ? ability[0] : 0;
|
||||
if (!hp) return 0;
|
||||
const card = Cards[m.id] || Cards[0];
|
||||
let hp1 = hp = Math.round(hp * memberHpMul(card, ls2, memberArr, solo)); //战友队长技
|
||||
let hp2 = hp = Math.round(hp * memberHpMul(card, ls1, memberArr, solo)); //我方队长技
|
||||
let hp1 = hp = Math.round(hp * memberHpMul(member, assistArr[idx], ls2, memberArr, solo)); //战友队长技
|
||||
let hp2 = hp = Math.round(hp * memberHpMul(member, assistArr[idx], ls1, memberArr, solo)); //我方队长技
|
||||
|
||||
//演示用代码
|
||||
//console.log("%s 第1次倍率血量:%s,第2次倍率血量:%s",Cards[m.id].otLangName["chs"],hp1,hp2);
|
||||
|
@ -937,14 +940,15 @@ function countTeamHp(memberArr, leader1id, leader2id, solo, noAwoken = false) {
|
|||
|
||||
//console.log('单个队伍血量:',mHpArr,mHpArr.reduce((p,c)=>p+c));
|
||||
|
||||
function memberHpMul(card, ls, memberArr, solo) {
|
||||
function memberHpMul(member, assist, ls, memberArr, solo) {
|
||||
let memberAttrsTypes = member.getAttrsTypesWithWeapon(assist);
|
||||
|
||||
function hpMul(parm, scale) {
|
||||
if (scale == undefined || scale == 0) return 1;
|
||||
if (parm.attrs && card.attrs.some(a => parm.attrs.includes(a))) {
|
||||
if (parm.attrs && memberAttrsTypes.attrs.some(a => parm.attrs.includes(a))) {
|
||||
return scale / 100;
|
||||
}
|
||||
if (parm.types && card.types.some(t => parm.types.includes(t))) {
|
||||
if (parm.types && memberAttrsTypes.types.some(t => parm.types.includes(t))) {
|
||||
return scale / 100;
|
||||
}
|
||||
return 1;
|
||||
|
@ -1014,39 +1018,38 @@ function countTeamHp(memberArr, leader1id, leader2id, solo, noAwoken = false) {
|
|||
scale = hpMul({ attrs: flags(sk[1]), types: flags(sk[2]) }, sk[3]);
|
||||
break;
|
||||
case 203:{ //队员为指定类型,不包括双方队长,且队员数大于0
|
||||
let trueMemberCardsArr = memberArr.slice(1, 5).filter(m => m.id > 0).map(m => Cards[m.id]);
|
||||
let trueMemberCardsArr = memberArr.slice(1, 5).filter(m => m.id > 0).map(m => m.card);
|
||||
switch (sk[0]) {
|
||||
case 0: //全是像素进化
|
||||
scale = (trueMemberCardsArr.length > 0 && trueMemberCardsArr.every(card => card.evoMaterials.includes(3826))) ? sk[1] / 100 : 1;
|
||||
scale = (trueMemberCardsArr.length > 0 && trueMemberCardsArr.every(memberCard => memberCard.evoMaterials.includes(3826))) ? sk[1] / 100 : 1;
|
||||
break;
|
||||
case 2: //全是转生、超转生(8格潜觉)
|
||||
scale = (trueMemberCardsArr.length > 0 && trueMemberCardsArr.every(card => isReincarnated(card))) ? sk[1] / 100 : 1;
|
||||
scale = (trueMemberCardsArr.length > 0 && trueMemberCardsArr.every(memberCard => isReincarnated(memberCard))) ? sk[1] / 100 : 1;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 217:{ //限定队伍星级,不包括好友队长
|
||||
let cardsArr = memberArr.slice(0, 5).filter(m => m.id > 0).map(m => Cards[m.id]); //所有的卡片
|
||||
const rarityCount = cardsArr.reduce((pre,member)=>{
|
||||
const card = Cards[member.id] || Cards[0];
|
||||
return pre + card.rarity;
|
||||
},0);
|
||||
let cardsArr = memberArr.slice(0, 5).filter(m => m.id > 0).map(m => m.card); //所有的卡片
|
||||
const rarityCount = cardsArr.reduce((pre, memberCard)=>{
|
||||
return pre + memberCard.rarity;
|
||||
}, 0);
|
||||
scale = rarityCount <= sk[0] ? sk[1] / 100 : 1;
|
||||
break;
|
||||
}
|
||||
case 229:{ //队员中存在每个属性或Type都算一次
|
||||
let cardsArr = memberArr.filter(m => m.id > 0).map(m => Cards[m.id]); //所有的卡片
|
||||
let attrsArr = cardsArr.flatMap(card => card.attr); //所有卡片的属性
|
||||
let typesArr = cardsArr.flatMap(card => card.types); //所有卡片的类型
|
||||
let correspondingAttrs = flags(sk[0]); //符合的属性
|
||||
let correspondingTypes = flags(sk[1]); //符合的类型
|
||||
let correspondingTimes = attrsArr.filter(a=>correspondingAttrs.includes(a)).length + typesArr.filter(t=>correspondingTypes.includes(t)).length; //符合的次数
|
||||
scale = sk[2] * correspondingTimes / 100 + 1;
|
||||
//console.log('属性、类型个数动态倍率,当前队长HP倍率为 %s',scale);
|
||||
const atCount = countTeamTotalAttrsTypes(memberArr, assistArr);
|
||||
|
||||
let correAttrs = flags(sk[0]), correTypes = flags(sk[1]); //符合的属性/类型
|
||||
//符合的次数
|
||||
let correTimes = correAttrs.reduce((pre,attr)=>pre + (atCount.attrs.get(attr) || 0),0) +
|
||||
correTypes.reduce((pre,type)=>pre + (atCount.types.get(type) || 0),0);
|
||||
scale = sk[2] * correTimes / 100 + 1;
|
||||
console.debug('属性、类型个数动态倍率,当前队长HP倍率为 %s (匹配 %d 次)', scale, correTimes);
|
||||
break;
|
||||
}
|
||||
case 138: //调用其他队长技
|
||||
scale = sk.reduce((pmul, skid) => pmul * memberHpMul(card, Skills[skid], memberArr, solo), 1)
|
||||
scale = sk.reduce((pmul, skid) => pmul * memberHpMul(member, assist, Skills[skid], memberArr, solo), 1)
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
@ -1055,6 +1058,25 @@ function countTeamHp(memberArr, leader1id, leader2id, solo, noAwoken = false) {
|
|||
return mHpArr;
|
||||
}
|
||||
|
||||
//由于有了更改属性和类型的武器,所以需要更改计算方法
|
||||
function countTeamTotalAttrsTypes(memberArr, assistArr) {
|
||||
let attrsCount = new Map();
|
||||
let typesCount = new Map();
|
||||
for (let idx = 0; idx < memberArr.length; idx++) {
|
||||
const member = memberArr[idx], assist = assistArr[idx];
|
||||
|
||||
let memberAttrsTypes = member.getAttrsTypesWithWeapon(assist);
|
||||
if (memberAttrsTypes) {
|
||||
for (let attr of memberAttrsTypes.attrs) {
|
||||
attrsCount.set(attr, (attrsCount.get(attr) || 0) + 1);
|
||||
}
|
||||
for (let type of memberAttrsTypes.types) {
|
||||
typesCount.set(type, (typesCount.get(type) || 0) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return {attrs: attrsCount, types: typesCount};
|
||||
}
|
||||
//返回卡片的队长技能
|
||||
function getCardLeaderSkills(card, skillTypes) {
|
||||
if (!card) return [];
|
||||
|
|
344
script.js
|
@ -4,6 +4,8 @@ let PlayerDatas = []; //玩家数据
|
|||
let currentLanguage; //当前语言
|
||||
let currentDataSource; //当前数据
|
||||
let currentPlayerData; //当前玩家数据
|
||||
let markedFilter = []; //收藏的特殊搜索
|
||||
let defaultLevel = 99; //默认等级
|
||||
|
||||
const teamBigBoxs = []; //储存全部teamBigBox
|
||||
const allMembers = []; //储存所有成员,包含辅助
|
||||
|
@ -146,6 +148,29 @@ var Member = function() {
|
|||
this.ability = [0, 0, 0];
|
||||
this.abilityNoAwoken = [0, 0, 0];
|
||||
};
|
||||
//让 Member 能直接获取 card
|
||||
Object.defineProperty(Member.prototype, "card", {
|
||||
get() { return Cards[this.id]; }
|
||||
})
|
||||
Member.prototype.getAttrsTypesWithWeapon = function(assist) {
|
||||
let memberCard = this.card, assistCard = assist?.card;
|
||||
if (this.id <= 0 || !memberCard) return null; //跳过 id 0
|
||||
let attrs = [...memberCard.attrs]; //属性只有两个,因此用固定的数组
|
||||
let types = new Set(memberCard.types); //Type 用Set,确保不会重复
|
||||
if (assistCard?.awakenings?.includes(49)) { //如果有武器
|
||||
//更改副属性
|
||||
let changeAttr = assistCard.awakenings.find(ak=>ak >= 91 && ak <= 95);
|
||||
if (changeAttr) attrs[1] = changeAttr - 91;
|
||||
//添加类型
|
||||
let appendTypes = assistCard.awakenings.filter(ak=>ak >= 83 && ak <= 90);
|
||||
appendTypes = appendTypes.map(type=>
|
||||
typekiller_for_type.find(t=>(type - 52) === t.awoken).type);
|
||||
for (let appendType of appendTypes) {
|
||||
types.add(appendType);
|
||||
}
|
||||
}
|
||||
return {attrs: attrs, types: Array.from(types)};
|
||||
}
|
||||
Member.prototype.outObj = function() {
|
||||
const m = this;
|
||||
if (m.id == 0) return null;
|
||||
|
@ -416,7 +441,7 @@ Formation.prototype.getPdcQrStr = function()
|
|||
const o = new Map();
|
||||
o.set(0, m.id);
|
||||
if (m.latent.length)
|
||||
o.set(2, m.latent.map(pdfLtent=>pdcLatentMap.find(latent=>latent.pdf === pdfLtent).pdc.toString(36).prefix(2)).join('')); //潜觉
|
||||
o.set(2, m.latent.map(pdfLtent=>pdcLatentMap.find(latent=>latent.pdf === pdfLtent).pdc.toString(36).padStart(2,'0')).join('')); //潜觉
|
||||
o.set(3, m.level);
|
||||
o.set(4, m.plus[0]);
|
||||
o.set(5, m.plus[1]);
|
||||
|
@ -465,8 +490,8 @@ Formation.prototype.getPdcQrStr = function()
|
|||
return null;
|
||||
}
|
||||
return [
|
||||
item[0].toString(36).prefix(2),
|
||||
item[1].toString(36).prefix(2)
|
||||
item[0].toString(36).padStart(2,'0'),
|
||||
item[1].toString(36).padStart(2,'0')
|
||||
].join('')}).filter(item=>item).join(',');
|
||||
teamArr.push(pdcMemberStr);
|
||||
}
|
||||
|
@ -801,7 +826,7 @@ class EvoTree
|
|||
class LeaderSkillType{
|
||||
constructor(flags1, flags2){
|
||||
this.matchMode = {
|
||||
multipleColors: Boolean(flags1 & 1 << 0),
|
||||
multipleAttr: Boolean(flags1 & 1 << 0),
|
||||
rowMatch: Boolean(flags1 & 1 << 1),
|
||||
combo: Boolean(flags1 & 1 << 2),
|
||||
sameColor: Boolean(flags1 & 1 << 3),
|
||||
|
@ -1400,7 +1425,7 @@ function pdcFotmationToPdfFotmation(inputString)
|
|||
{
|
||||
let membersStr = teamStr.split('}').filter(Boolean);
|
||||
const team = {
|
||||
badge: parseInt(membersStr.shift(),10) //徽章是10进制
|
||||
badge: parseInt(membersStr.shift(),10) //第一个元素是徽章,是10进制。读取并从数组内删掉,剩下的都是队员
|
||||
}
|
||||
team.members = membersStr.map(memberStr=>{
|
||||
let memberArr = memberStr.split(',').map(valueStr=>{
|
||||
|
@ -1580,6 +1605,16 @@ function initialize(event) {
|
|||
btnShowAwokenCount.onclick();
|
||||
}
|
||||
|
||||
//默认等级
|
||||
const iptDefaultLevel = document.getElementById("default-level");
|
||||
iptDefaultLevel.value = localStorage.getItem(cfgPrefix + iptDefaultLevel.id);
|
||||
iptDefaultLevel.onchange = function(e){
|
||||
let num = Number(this.value || this.placeholder);
|
||||
defaultLevel = num;
|
||||
if (e) localStorage.setItem(cfgPrefix + this.id, defaultLevel);
|
||||
}
|
||||
iptDefaultLevel.onchange(false);
|
||||
|
||||
//触屏使用的切换显示的线条
|
||||
interchangeSVG = document.body.querySelector("#interchange-line");
|
||||
interchangeSVG.line = interchangeSVG.querySelector("g line");
|
||||
|
@ -2725,8 +2760,8 @@ function initialize(event) {
|
|||
const searchEvolutionByThis = settingBox.querySelector(".row-mon-id .search-evolution-by-this");
|
||||
searchEvolutionByThis.onclick = function() {showSearch(Cards.filter(card=>card.evoMaterials.includes(editBox.mid)))};
|
||||
|
||||
const s_attr1s = Array.from(searchBox.querySelectorAll(".attrs-div .attr-list-1 .attr-radio"));
|
||||
const s_attr2s = Array.from(searchBox.querySelectorAll(".attrs-div .attr-list-2 .attr-radio"));
|
||||
const s_attr1s = Array.from(searchBox.querySelectorAll(".attrs-div .attr-list-1 [name=\"attr-1\"]"));
|
||||
const s_attr2s = Array.from(searchBox.querySelectorAll(".attrs-div .attr-list-2 [name=\"attr-2\"]"));
|
||||
const s_fixMainColor = searchBox.querySelector("#fix-main-color");
|
||||
const s_typesDiv = searchBox.querySelector(".types-div");
|
||||
const s_typeAndOr = s_typesDiv.querySelector("#type-and-or");
|
||||
|
@ -2850,11 +2885,11 @@ function initialize(event) {
|
|||
}
|
||||
for (const id of awokenSorting) {
|
||||
const li = s_awokensLi.find(li=>getIconId(li) === id);
|
||||
fragmentAwoken.appendChild(li);
|
||||
if (li) fragmentAwoken.appendChild(li);
|
||||
}
|
||||
for (const id of sawokenSorting) {
|
||||
const li = s_sawokensLi.find(li=>getIconId(li) === id);
|
||||
fragmentSawoken.appendChild(li);
|
||||
if (li) fragmentSawoken.appendChild(li);
|
||||
}
|
||||
|
||||
const className = "official-awoken-sorting";
|
||||
|
@ -2914,6 +2949,7 @@ function initialize(event) {
|
|||
const s_specialDiv = searchBox.querySelector(".special-div");
|
||||
const specialAdd = s_specialDiv.querySelector(".special-add");
|
||||
const specialClear = s_specialDiv.querySelector(".special-clear");
|
||||
const specialStar = s_specialDiv.querySelector(".special-star");
|
||||
const specialFilterUl = s_specialDiv.querySelector(".special-filter-list");
|
||||
const specialFilterFirstLi = specialFilterUl.querySelector("li");
|
||||
const specialFirstSelect = specialFilterFirstLi.querySelector(".special-filter");
|
||||
|
@ -2921,46 +2957,104 @@ function initialize(event) {
|
|||
function newSpecialSearchOption(func, idx1, idx2)
|
||||
{
|
||||
const funcName = returnMonsterNameArr(func, currentLanguage.searchlist, currentDataSource.code)[0];
|
||||
return new Option(funcName + (func.addition ? " " + localTranslating.addition_display : ""), idx1 + (idx2 != null ? "|" + idx2 : ""));
|
||||
return new Option(
|
||||
funcName + (func.addition ? " " + localTranslating.addition_display : ""), //有附加显示的,名称增加一个附加显示图标
|
||||
idx1 + (idx2 != null ? "|" + idx2 : "") //值为 组序号|组内序号
|
||||
);
|
||||
}
|
||||
specialSearchFunctions.forEach((sfunc,idx)=>{
|
||||
if (sfunc.group)
|
||||
{
|
||||
const groupName = returnMonsterNameArr(sfunc, currentLanguage.searchlist, currentDataSource.code)[0];
|
||||
const optgroup = specialFirstSelect.appendChild(document.createElement("optgroup"));
|
||||
optgroup.label = groupName;
|
||||
if (sfunc.functions)
|
||||
{
|
||||
sfunc.functions.forEach((_sfunc,_idx)=>{
|
||||
optgroup.appendChild(newSpecialSearchOption(_sfunc, idx, _idx));
|
||||
});
|
||||
//读取储存的筛选收藏列表
|
||||
let strMakedConfig = JSON.parse(localStorage.getItem(cfgPrefix + "marked-filter"));
|
||||
if (Array.isArray(strMakedConfig)) {
|
||||
for (let arr of strMakedConfig) {
|
||||
let idx1 = specialSearchFunctions.findIndex(group=>group.name == arr[0]);
|
||||
if (idx1 < 0 ) continue;
|
||||
if (arr.length > 1) {
|
||||
let idx2 = specialSearchFunctions[idx1].functions.findIndex(func=>func.name == arr[1]);
|
||||
if (idx2 < 0 ) continue;
|
||||
markedFilter.push([idx1, idx2]);
|
||||
} else {
|
||||
markedFilter.push([idx1]);
|
||||
}
|
||||
}else
|
||||
{
|
||||
specialFirstSelect.options.add(newSpecialSearchOption(sfunc, idx));
|
||||
}
|
||||
});
|
||||
specialAdd.onclick = function()
|
||||
{
|
||||
}
|
||||
specialFirstSelect.refreshList = function() {
|
||||
const _this = specialFirstSelect;
|
||||
function addNewOption(sfunc, idx){
|
||||
if (sfunc.group)
|
||||
{
|
||||
const groupName = returnMonsterNameArr(sfunc, currentLanguage.searchlist, currentDataSource.code)[0];
|
||||
const optgroup = _this.appendChild(document.createElement("optgroup"));
|
||||
optgroup.label = groupName;
|
||||
if (sfunc.functions)
|
||||
{
|
||||
sfunc.functions.forEach((_sfunc,_idx)=>{
|
||||
optgroup.appendChild(newSpecialSearchOption(_sfunc, idx, _idx));
|
||||
});
|
||||
}
|
||||
}else
|
||||
{
|
||||
_this.options.add(newSpecialSearchOption(sfunc, idx));
|
||||
}
|
||||
}
|
||||
_this.innerHTML = '';
|
||||
addNewOption(specialSearchFunctions[0], 0);
|
||||
if (markedFilter.length > 0) {
|
||||
const groupName = "=====★=====";
|
||||
const optgroup = _this.appendChild(document.createElement("optgroup"));
|
||||
optgroup.label = groupName;
|
||||
for (let indexs of markedFilter) {
|
||||
const funcObj = indexs.length > 1 ? specialSearchFunctions[indexs[0]].functions[indexs[1]] : specialSearchFunctions[indexs[0]];
|
||||
optgroup.appendChild(newSpecialSearchOption(funcObj, indexs[0], indexs[1]));
|
||||
}
|
||||
}
|
||||
for (let idx = 1; idx < specialSearchFunctions.length; idx++) {
|
||||
addNewOption(specialSearchFunctions[idx], idx);
|
||||
}
|
||||
}
|
||||
specialFirstSelect.onchange = function() {
|
||||
const indexs = specialFirstSelect.value.split("|").map(Number);
|
||||
let markIdx = markedFilter.findIndex(arr=>arr[0] === indexs[0] && arr[1] === indexs[1]);
|
||||
if (markIdx >= 0) {//已经存在的收藏
|
||||
specialStar.classList.add("marked");
|
||||
} else {
|
||||
specialStar.classList.remove("marked");
|
||||
}
|
||||
}
|
||||
//只添加第一个列表,后面的全部通过克隆的方式复现
|
||||
specialFirstSelect.refreshList();
|
||||
specialAdd.onclick = function() {
|
||||
specialFilterUl.appendChild(specialFilterFirstLi.cloneNode(true));
|
||||
}
|
||||
specialAdd.onclick(); //先运行一次产生两个
|
||||
specialClear.onclick = function()
|
||||
{
|
||||
/*for (let ci = specialFilterUl.children.length-1; ci>0; ci--)
|
||||
{
|
||||
specialFilterUl.children[ci].remove();
|
||||
}*/
|
||||
//specialAdd.onclick(); //先运行一次产生两个
|
||||
specialClear.onclick = function() {
|
||||
specialFilterUl.innerHTML = "";
|
||||
specialFilterUl.appendChild(specialFilterFirstLi);
|
||||
specialFirstSelect.selectedIndex = 0;
|
||||
}
|
||||
specialStar.onclick = function() {
|
||||
const indexs = specialFirstSelect.value.split("|").map(Number);
|
||||
let markIdx = markedFilter.findIndex(arr=>arr[0] === indexs[0] && arr[1] === indexs[1]);
|
||||
if (markIdx >= 0) {//已经存在的收藏
|
||||
markedFilter.splice(markIdx,1);
|
||||
} else {
|
||||
markedFilter.push(indexs);
|
||||
}
|
||||
specialFirstSelect.refreshList(); //刷新列表
|
||||
specialStar.classList.remove("marked"); //去掉自身的收藏标记
|
||||
//储存设置
|
||||
let strMakedConfig = markedFilter.map(indexs=>{
|
||||
let arr = [specialSearchFunctions[indexs[0]].name];
|
||||
if (indexs.length > 1) arr.push(specialSearchFunctions[indexs[0]].functions[indexs[1]].name);
|
||||
return arr;})
|
||||
localStorage.setItem(cfgPrefix + "marked-filter", JSON.stringify(strMakedConfig));
|
||||
}
|
||||
|
||||
const s_controlDiv = searchBox.querySelector(".control-div");
|
||||
const searchStart = s_controlDiv.querySelector(".search-start");
|
||||
const searchClose = s_controlDiv.querySelector(".search-close");
|
||||
const searchClear = s_controlDiv.querySelector(".search-clear");
|
||||
|
||||
|
||||
function returnCheckedInput(ipt) {
|
||||
return ipt.checked;
|
||||
}
|
||||
|
@ -2969,6 +3063,17 @@ function initialize(event) {
|
|||
return ipt.value;
|
||||
}
|
||||
|
||||
function returnRadiosValue(radioArr) {
|
||||
let checkedRadio = radioArr.find(returnCheckedInput);
|
||||
let firstCheckedValue = checkedRadio ? returnInputValue(checkedRadio) : undefined;
|
||||
return firstCheckedValue;
|
||||
}
|
||||
function returnCheckBoxsValues(checkBoxsArr) {
|
||||
let checkedCheckBoxs = checkBoxsArr.filter(returnCheckedInput);
|
||||
let checkedValues = checkedCheckBoxs.map(returnInputValue);
|
||||
return checkedValues;
|
||||
}
|
||||
|
||||
function Str2Int(str) {
|
||||
return parseInt(str, 10);
|
||||
}
|
||||
|
@ -3040,31 +3145,19 @@ function initialize(event) {
|
|||
s_add_show_abilities.onchange = reShowSearch;
|
||||
s_add_show_abilities_with_awoken.onchange = reShowSearch;
|
||||
|
||||
const startSearch = function(cards, customAdditionalFunction) {
|
||||
if (customAdditionalFunction == undefined) customAdditionalFunction = [];
|
||||
const attr1Filter = s_attr1s.filter(returnCheckedInput).map(returnInputValue);
|
||||
const attr2Filter = s_attr2s.filter(returnCheckedInput).map(returnInputValue);
|
||||
const startSearch = function(cards, customAdditionalFunction = []) {
|
||||
let attr1, attr2;
|
||||
if (attr1Filter.length > 0) {
|
||||
if (!isNaN(attr1Filter[0])) {
|
||||
attr1 = parseInt(attr1Filter[0], 10);
|
||||
} else {
|
||||
attr1 = null;
|
||||
}
|
||||
}
|
||||
if (attr2Filter.length > 0) {
|
||||
if (!isNaN(attr2Filter[0])) {
|
||||
attr2 = parseInt(attr2Filter[0], 10);
|
||||
} else {
|
||||
attr2 = null;
|
||||
}
|
||||
}
|
||||
const typesFilter = s_types.filter(returnCheckedInput).map(returnInputValue).map(Str2Int);
|
||||
attr1 = returnRadiosValue(s_attr1s); //获取选中单选框的值
|
||||
attr2 = returnRadiosValue(s_attr2s); //获取选中单选框的值
|
||||
attr1 = isNaN(attr1) ? null : Str2Int(attr1); //将值转为十进制
|
||||
attr2 = isNaN(attr2) ? null : Str2Int(attr2); //将值转为十进制
|
||||
|
||||
const typesFilter = returnCheckBoxsValues(s_types).map(Str2Int);
|
||||
const rareFilter = [
|
||||
s_rareLows.filter(returnCheckedInput).map(returnInputValue).map(Str2Int)[0],
|
||||
s_rareHighs.filter(returnCheckedInput).map(returnInputValue).map(Str2Int)[0],
|
||||
returnCheckBoxsValues(s_rareLows).map(Str2Int)[0],
|
||||
returnCheckBoxsValues(s_rareHighs).map(Str2Int)[0],
|
||||
];
|
||||
const sawokensFilter = s_sawokens.filter(returnCheckedInput).map(returnInputValue).map(Str2Int);
|
||||
const sawokensFilter = returnCheckBoxsValues(s_sawokens).map(Str2Int);
|
||||
const awokensFilter = s_awokensIcons.filter(btn => parseInt(btn.getAttribute("data-awoken-count"), 10) > 0).map(btn => {
|
||||
const awokenIndex = parseInt(btn.getAttribute("data-awoken-icon"), 10);
|
||||
return {
|
||||
|
@ -3121,6 +3214,9 @@ function initialize(event) {
|
|||
sawokenClear.onclick();
|
||||
specialClear.onclick();
|
||||
|
||||
s_canAssist.checked = false;
|
||||
s_noHenshin.checked = false;
|
||||
|
||||
searchMonList.originalHeads = null;
|
||||
searchResultCount.setAttribute("data-search-result-count", 0);
|
||||
searchMonList.innerHTML = "";
|
||||
|
@ -3242,7 +3338,7 @@ function initialize(event) {
|
|||
const card = Cards[editBox.mid];
|
||||
const decoder = new Adpcm(adpcm_wasm, pcmImportObj);
|
||||
decoder.resetDecodeState(new Adpcm.State(0, 0));
|
||||
decodeAudio(`sound/voice/${currentDataSource.code}/padv${card.voiceId.prefixInteger(3)}.wav`, decoder.decode.bind(decoder));
|
||||
decodeAudio(`sound/voice/${currentDataSource.code}/padv${card.voiceId.toString().padStart(2,'0')}.wav`, decoder.decode.bind(decoder));
|
||||
}
|
||||
}
|
||||
monEditAwokensLabel.forEach(akDom => akDom.onclick = playVoiceAwoken);
|
||||
|
@ -3260,7 +3356,7 @@ function initialize(event) {
|
|||
monEditSAwokensRow.swaokenIndex = value;
|
||||
const plusArr = [monEditAddHp,monEditAddAtk,monEditAddRcv];
|
||||
//自动打上297
|
||||
if (plusArr.some(ipt=>parseInt(ipt.value)<99))
|
||||
if (!monEditSAwokensRow.classList.contains(className_displayNone) && plusArr.some(ipt=>parseInt(ipt.value)<99))
|
||||
{
|
||||
console.debug("点亮超觉醒,自动设定297");
|
||||
plusArr.forEach(ipt=>ipt.value=99);
|
||||
|
@ -3508,7 +3604,7 @@ function initialize(event) {
|
|||
teamData[editBox.memberIdx[1]][editBox.memberIdx[2]] = mon;
|
||||
|
||||
mon.id = editBox.mid;
|
||||
const card = Cards[mon.id] || Cards[0];
|
||||
const card = mon.card || Cards[0];
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
||||
mon.level = parseInt(monEditLv.value, 10);
|
||||
|
@ -3542,12 +3638,17 @@ function initialize(event) {
|
|||
const teamAbilityDom = teamBigBox.querySelector(".team-ability");
|
||||
refreshAbility(teamAbilityDom, teamData, editBox.memberIdx[2]); //本人能力值
|
||||
|
||||
let changeAttrTypeWeapon = false;
|
||||
let awokens = card.awakenings;
|
||||
if (!editBox.isAssist) {//如果改的不是辅助
|
||||
awokens = teamData[editBox.memberIdx[1] + 1][editBox.memberIdx[2]].card.awakenings;
|
||||
}
|
||||
if (awokens.includes(49) && awokens.some(ak => ak >= 83 && ak <= 95)) changeAttrTypeWeapon = true;
|
||||
|
||||
//如果是2人协力,且修改的是队长的情况,为了刷新另一个队伍时间计算,直接刷新整个队形
|
||||
if (teamsCount === 2 && editBox.memberIdx[2] === 0)
|
||||
{
|
||||
if (teamsCount === 2 && editBox.memberIdx[2] === 0 || changeAttrTypeWeapon) {
|
||||
refreshAll(formation);
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
const teamTotalInfoDom = teamBigBox.querySelector(".team-total-info"); //队伍能力值合计
|
||||
if (teamTotalInfoDom) refreshTeamTotalHP(teamTotalInfoDom, teamData, editBox.memberIdx[0]);
|
||||
const formationTotalInfoDom = formationBox.querySelector(".formation-total-info"); //所有队伍能力值合计
|
||||
|
@ -3562,7 +3663,7 @@ function initialize(event) {
|
|||
const formationAwokenDom = formationBox.querySelector(".formation-awoken"); //所有队伍觉醒合计
|
||||
if (formationAwokenDom) refreshFormationAwokenCount(formationAwokenDom, formation.teams);
|
||||
|
||||
//刷新改队员的CD
|
||||
//刷新该队员的CD
|
||||
refreshMemberSkillCD(teamBox, teamData, editBox.memberIdx[2]);
|
||||
}
|
||||
|
||||
|
@ -3578,15 +3679,19 @@ function initialize(event) {
|
|||
}
|
||||
else
|
||||
{
|
||||
let selection = window.getSelection(), selectNodes = selection?.focusNode?.childNodes;
|
||||
//如果正在编辑文本,则不执行快捷键操作
|
||||
if (selectNodes && Array.from(selectNodes).some(node=>node?.nodeName === "TEXTAREA" || node?.nodeName === "INPUT"))
|
||||
return;
|
||||
//如果按Ctrl+左右方向键,或者是小键盘上的左右方向键(关闭Num),快速切换变身
|
||||
if (event.key === "ArrowLeft"
|
||||
&& (event.code == "Numpad4" || event.ctrlKey))
|
||||
{
|
||||
{ //变身后退
|
||||
henshinStep(-1);
|
||||
}
|
||||
else if (event.key === "ArrowRight"
|
||||
&& (event.code == "Numpad6" || event.ctrlKey))
|
||||
{
|
||||
{ //变身前进
|
||||
henshinStep(+1);
|
||||
}
|
||||
}
|
||||
|
@ -3602,23 +3707,8 @@ function initialize(event) {
|
|||
const teamAbilityDom = teamBigBox.querySelector(".team-ability");
|
||||
refreshAbility(teamAbilityDom, teamData, editBox.memberIdx[2]); //本人能力值
|
||||
|
||||
const teamTotalInfoDom = teamBigBox.querySelector(".team-total-info"); //队伍能力值合计
|
||||
if (teamTotalInfoDom) refreshTeamTotalHP(teamTotalInfoDom, teamData, editBox.memberIdx[0]);
|
||||
const formationTotalInfoDom = formationBox.querySelector(".formation-total-info"); //所有队伍能力值合计
|
||||
if (formationTotalInfoDom) refreshFormationTotalHP(formationTotalInfoDom, formation.teams);
|
||||
|
||||
const teamMenberAwokenDom = teamBigBox.querySelector(".team-menber-awoken"); //队员觉醒
|
||||
const teamAssistAwokenDom = teamBigBox.querySelector(".team-assist-awoken"); //辅助觉醒
|
||||
if (teamMenberAwokenDom && teamAssistAwokenDom) refreshMenberAwoken(teamMenberAwokenDom, teamAssistAwokenDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
|
||||
|
||||
const teamAwokenDom = teamBigBox.querySelector(".team-awoken"); //队伍觉醒合计
|
||||
if (teamAwokenDom) refreshTeamAwokenCount(teamAwokenDom, teamData);
|
||||
const formationAwokenDom = formationBox.querySelector(".formation-awoken"); //所有队伍觉醒合计
|
||||
if (formationAwokenDom) refreshFormationAwokenCount(formationAwokenDom, formation.teams);
|
||||
|
||||
//刷新改队员的CD
|
||||
refreshMemberSkillCD(teamBigBox, teamData, editBox.memberIdx[2]);
|
||||
|
||||
refreshAll(formation);
|
||||
|
||||
creatNewUrl();
|
||||
editBox.hide();
|
||||
};
|
||||
|
@ -3728,7 +3818,7 @@ function buildEvoTreeIdsArray(card, includeHenshin = true) {
|
|||
}
|
||||
|
||||
//改变一个怪物头像
|
||||
function changeid(mon, monDom, latentDom) {
|
||||
function changeid(mon, monDom, latentDom, assist) {
|
||||
let fragment = document.createDocumentFragment(); //创建节点用的临时空间
|
||||
const parentNode = monDom.parentNode;
|
||||
fragment.appendChild(monDom);
|
||||
|
@ -3764,7 +3854,13 @@ function changeid(mon, monDom, latentDom) {
|
|||
monDom.setAttribute("data-cards-pic-y", Math.floor(idxInPage / 10)); //添加Y方向序号
|
||||
|
||||
monDom.querySelector(".property").setAttribute("data-property", card.attrs[0]); //主属性
|
||||
monDom.querySelector(".subproperty").setAttribute("data-property", card.attrs[1]); //副属性
|
||||
let subAttribute = card.attrs[1]; //正常的副属性
|
||||
let assistCard = Cards[assist?.id];
|
||||
if (assistCard && assistCard.awakenings.includes(49)) { //如果传入了辅助武器
|
||||
let changeAttr = assistCard.awakenings.find(ak=>ak >= 91 && ak <= 95); //搜索改副属性的觉醒
|
||||
if (changeAttr) subAttribute = changeAttr - 91; //更改副属性
|
||||
}
|
||||
monDom.querySelector(".subproperty").setAttribute("data-property", subAttribute); //副属性
|
||||
|
||||
monDom.title = "No." + monId + " " + (card.otLangName ? (card.otLangName[currentLanguage.searchlist[0]] || card.name) : card.name);
|
||||
monDom.href = currentLanguage.guideURL(monId, card.name);
|
||||
|
@ -4117,8 +4213,8 @@ function editBoxChangeMonId(id) {
|
|||
//monEditLvMax.textContent = monEditLvMax.value = card.maxLevel;
|
||||
monEditLvMax.value = card.maxLevel;
|
||||
const monEditLv = settingBox.querySelector(".m-level");
|
||||
monEditLv.max = card.limitBreakIncr ? 120 : card.maxLevel; //最大等级为120
|
||||
monEditLv.value = card.limitBreakIncr ? 110 : card.maxLevel; //默认等级为110
|
||||
monEditLv.max = card.limitBreakIncr ? 120 : card.maxLevel; //最大可设定等级
|
||||
monEditLv.value = Math.min(defaultLevel, card.limitBreakIncr ? 120 : card.maxLevel); //默认等级
|
||||
const monEditLv110 = settingBox.querySelector(".m-level-btn-110");
|
||||
const monEditLv120 = settingBox.querySelector(".m-level-btn-120");
|
||||
|
||||
|
@ -4320,26 +4416,27 @@ function refreshAll(formationData) {
|
|||
}
|
||||
});
|
||||
//修改显示内容
|
||||
const member = memberLi.querySelector(`.monster`);
|
||||
const assist = assistsLi.querySelector(`.monster`);
|
||||
const latent = latentLi.querySelector(`.latent-ul`);
|
||||
changeid(teamData[0][ti], member, latent); //队员
|
||||
changeid(teamData[1][ti], assist); //辅助
|
||||
const memberDom = memberLi.querySelector(`.monster`);
|
||||
const assistDom = assistsLi.querySelector(`.monster`);
|
||||
const latentDom = latentLi.querySelector(`.latent-ul`);
|
||||
let member = teamData[0][ti], assist = teamData[1][ti];
|
||||
changeid(member, memberDom, latentDom, assist); //队员
|
||||
changeid(assist, assistDom); //辅助
|
||||
//隐藏队长的自身换为换队长的技能
|
||||
if (ti == 5 || //好友队长永远隐藏
|
||||
leaderIdx == 0 && ti == 0 ) //当没换队长时,自身队长的欢队长技能隐藏
|
||||
{
|
||||
const card_m = Cards[teamData[0][ti].id] || Cards[0];
|
||||
const card_a = Cards[teamData[1][ti].id] || Cards[0];
|
||||
const card_m = Cards[member.id] || Cards[0];
|
||||
const card_a = Cards[assist.id] || Cards[0];
|
||||
const skills_m = getCardActiveSkills(card_m, [93, 227]); //更换队长的技能
|
||||
const skills_a = getCardActiveSkills(card_a, [93, 227]); //更换队长的技能
|
||||
if (skills_m.length == 0 || skills_m[0].type != 227)
|
||||
{
|
||||
member.querySelector(".switch-leader").classList.add(className_displayNone);
|
||||
memberDom.querySelector(".switch-leader").classList.add(className_displayNone);
|
||||
}
|
||||
if (skills_a.length == 0 || skills_a[0].type != 227)
|
||||
{
|
||||
assist.querySelector(".switch-leader").classList.add(className_displayNone);
|
||||
assistDom.querySelector(".switch-leader").classList.add(className_displayNone);
|
||||
}
|
||||
}
|
||||
refreshMemberSkillCD(teamBox, teamData, ti); //技能CD
|
||||
|
@ -4602,7 +4699,9 @@ function refreshTeamTotalHP(totalDom, team, teamIdx) {
|
|||
const leader1id = team[0][team[3] || 0].id;
|
||||
const leader2id = teamsCount===2 ? (teamIdx === 1 ? teams[0][0][teams[0][3] || 0].id : teams[1][0][teams[1][3] || 0].id) : team[0][5].id;
|
||||
|
||||
//计算当前队伍,2P时则是需要特殊处理
|
||||
const team_2p = teamsCount===2 ? team[0].concat((teamIdx === 1 ? teams[0][0][0] : teams[1][0][0])) : team[0];
|
||||
const assistTeam_2p = teamsCount===2 ? team[1].concat((teamIdx === 1 ? teams[0][1][0] : teams[1][1][0])) : team[1];
|
||||
|
||||
if (tHpDom) {
|
||||
const reduceScales1 = getReduceScales(leader1id);
|
||||
|
@ -4624,8 +4723,8 @@ function refreshTeamTotalHP(totalDom, team, teamIdx) {
|
|||
|
||||
const totalReduce = leastScale.scale;
|
||||
|
||||
const teamHPArr = countTeamHp(team[0], leader1id, leader2id, solo);
|
||||
const teamHPNoAwokenArr = countTeamHp(team[0], leader1id, leader2id, solo, true);
|
||||
const teamHPArr = countTeamHp(team, leader1id, leader2id, solo);
|
||||
const teamHPNoAwokenArr = countTeamHp(team, leader1id, leader2id, solo, true);
|
||||
|
||||
|
||||
let tHP = teamHPArr.reduce((pv, v) => pv + v); //队伍计算的总HP
|
||||
|
@ -4700,35 +4799,24 @@ function refreshTeamTotalHP(totalDom, team, teamIdx) {
|
|||
},0);
|
||||
rarityDoms.setAttribute(dataAttrName, rarityCount);
|
||||
}
|
||||
//统计队伍颜色个数
|
||||
if (tAttrsDom)
|
||||
//统计队伍属性/类型个数
|
||||
if (tAttrsDom || tTypesDom)
|
||||
{
|
||||
const attrDoms = Array.from(tAttrsDom.querySelectorAll(".attr"));
|
||||
attrDoms.forEach(attrDom=>{
|
||||
const attrId = parseInt(attrDom.getAttribute("data-attr-icon"));
|
||||
const attrCount = team_2p.reduce((pre,member)=>{
|
||||
if (member.id <= 0) return pre;
|
||||
const card = Cards[member.id] || Cards[0];
|
||||
const attrNum = card.attrs.filter(a=>a==attrId).length;
|
||||
return pre + attrNum;
|
||||
},0);
|
||||
attrDom.setAttribute(dataAttrName, attrCount);
|
||||
});
|
||||
}
|
||||
//统计队伍类型个数
|
||||
if (tTypesDom)
|
||||
{
|
||||
const typeDoms = Array.from(tTypesDom.querySelectorAll(".type-icon"));
|
||||
typeDoms.forEach(typeDom=>{
|
||||
const typeId = parseInt(typeDom.getAttribute("data-type-icon"));
|
||||
const typeCount = team_2p.reduce((pre,member)=>{
|
||||
if (member.id <= 0) return pre;
|
||||
const card = Cards[member.id] || Cards[0];
|
||||
const typeNum = card.types.filter(a=>a==typeId).length;
|
||||
return pre + typeNum;
|
||||
},0);
|
||||
typeDom.setAttribute(dataAttrName, typeCount);
|
||||
});
|
||||
const atCount = countTeamTotalAttrsTypes(team_2p, assistTeam_2p);
|
||||
if (tAttrsDom) {
|
||||
const attrDoms = Array.from(tAttrsDom.querySelectorAll(".attr"));
|
||||
attrDoms.forEach(attrDom=>{
|
||||
const attrId = parseInt(attrDom.getAttribute("data-attr-icon"));
|
||||
attrDom.setAttribute(dataAttrName, atCount.attrs.get(attrId) || 0);
|
||||
});
|
||||
}
|
||||
if (tTypesDom) {
|
||||
const typeDoms = Array.from(tTypesDom.querySelectorAll(".type-icon"));
|
||||
typeDoms.forEach(typeDom=>{
|
||||
const typeId = parseInt(typeDom.getAttribute("data-type-icon"));
|
||||
typeDom.setAttribute(dataAttrName, atCount.types.get(typeId) || 0);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (tEffectDom) {
|
||||
|
@ -4814,7 +4902,7 @@ function refreshFormationTotalHP(totalDom, teams) {
|
|||
const totalReduce = leastScale.scale;
|
||||
|
||||
const tHPArr = teams.map(function(team) {
|
||||
const teamHPArr = countTeamHp(team[0], leader1id, leader2id, solo);
|
||||
const teamHPArr = countTeamHp(team, leader1id, leader2id, solo);
|
||||
|
||||
|
||||
const teamTHP = teamHPArr.reduce((pv, v) => pv + v); //队伍计算的总HP
|
||||
|
@ -4823,7 +4911,7 @@ function refreshFormationTotalHP(totalDom, teams) {
|
|||
return Math.round(teamTHP * (1 + 0.05 * teamHPAwoken));
|
||||
});
|
||||
const tHPNoAwokenArr = teams.map(function(team) {
|
||||
const teamHPArr = countTeamHp(team[0], leader1id, leader2id, solo, true);
|
||||
const teamHPArr = countTeamHp(team, leader1id, leader2id, solo, true);
|
||||
|
||||
const teamTHP = teamHPArr.reduce((pv, v) => pv + v); //队伍计算的总HP
|
||||
return Math.round(teamTHP);
|
||||
|
|
82
solo.html
|
@ -37,18 +37,25 @@ var formation = new Formation(teamsCount,6);
|
|||
<label class="languages-label"><select class="languages"></select></label>
|
||||
<label class="datasource-label"><select class="datasource"></select></label>
|
||||
<button onclick="loadData(true);" class="datasource-updatetime" title="强制刷新数据"></button>
|
||||
<a class="help-link" target="_blank" href="doc/index.html"></a>
|
||||
</div>
|
||||
<div>
|
||||
<button class="btn-clear-data" onclick="clearData();"></button>
|
||||
<button class="btn-player-data"></button>
|
||||
<button class="btn-solo-link" disabled></button><button class="btn-multi-link" onclick="turnPage(2,arguments[0]);"></button><button class="btn-triple-link" onclick="turnPage(3,arguments[0]);"></button>
|
||||
<button class="btn-set-dungeon-enchance"></button>
|
||||
</div>
|
||||
<div>
|
||||
<a class="down-capture display-none" target="_blank"></a>
|
||||
<button class="btn-qrcode"></button>
|
||||
<button class="btn-capture" onclick="capture();"></button>
|
||||
<a class="down-capture display-none" target="_blank"></a>
|
||||
<button class="btn-player-data"></button>
|
||||
<a class="help-link" target="_blank" href="doc/index.html"></a>
|
||||
<button class="btn-set-dungeon-enchance"></button>
|
||||
<label for="default-level"></label><input id="default-level" type="number" min="1" max="120" list="level-list" placeholder="110"/>
|
||||
<datalist id="level-list">
|
||||
<option>1</option>
|
||||
<option>99</option>
|
||||
<option>110</option>
|
||||
<option>120</option>
|
||||
</datalist>
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" class="config-checkbox-ipt" name="show-mon-id" id="show-mon-id"><label class="config-checkbox-lbl show-mon-id-lbl" for="show-mon-id"><div class="config-checkbox-lbl-cicle"></div></label>
|
||||
|
@ -103,8 +110,8 @@ var formation = new Formation(teamsCount,6);
|
|||
--><li><icon class="attr" data-attr-icon="4"><!--暗--></icon></li>
|
||||
</ul>
|
||||
<ul class="tIf-types">
|
||||
<li><icon class="type-icon" data-type-icon="4"><!--龍--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="5"><!--神--></icon></li><!--
|
||||
<li><icon class="type-icon" data-type-icon="5"><!--神--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="4"><!--龍--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="7"><!--惡魔--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="8"><!--机械--></icon></li><!--
|
||||
--><li><icon class="type-icon" data-type-icon="1"><!--平衡--></icon></li><!--
|
||||
|
@ -528,6 +535,19 @@ var formation = new Formation(teamsCount,6);
|
|||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="80"></span><span class="count"></span></li><!--4色-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="81"></span><span class="count"></span></li><!--5色-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="82"></span><span class="count"></span></li><!--12珠-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="83"></span><span class="count"></span></li><!--附加神类型-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="84"></span><span class="count"></span></li><!--附加龙类型-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="85"></span><span class="count"></span></li><!--附加恶魔类型-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="86"></span><span class="count"></span></li><!--附加机械类型-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="87"></span><span class="count"></span></li><!--附加平衡类型-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="88"></span><span class="count"></span></li><!--附加攻击类型-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="89"></span><span class="count"></span></li><!--附加体力类型-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="90"></span><span class="count"></span></li><!--附加回复类型-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="91"></span><span class="count"></span></li><!--附加火属性-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="92"></span><span class="count"></span></li><!--附加水属性-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="93"></span><span class="count"></span></li><!--附加木属性-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="94"></span><span class="count"></span></li><!--附加光属性-->
|
||||
<li class="awoken-count display-none"><span class="awoken-icon" data-awoken-icon="95"></span><span class="count"></span></li><!--附加暗属性-->
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
@ -565,8 +585,8 @@ var formation = new Formation(teamsCount,6);
|
|||
</div>
|
||||
<div class="types-div"><!--类型-->
|
||||
<ul class="type-list">
|
||||
<li data-type-icon="4"><input type="checkbox" class="type-check" name="types" value="4" id="search-type-4" /><label class="type-icon" data-type-icon="4" for="search-type-4"><!--龍--></label></li>
|
||||
<li data-type-icon="5"><input type="checkbox" class="type-check" name="types" value="5" id="search-type-5" /><label class="type-icon" data-type-icon="5" for="search-type-5"><!--神--></label></li>
|
||||
<li data-type-icon="4"><input type="checkbox" class="type-check" name="types" value="4" id="search-type-4" /><label class="type-icon" data-type-icon="4" for="search-type-4"><!--龍--></label></li>
|
||||
<li data-type-icon="7"><input type="checkbox" class="type-check" name="types" value="7" id="search-type-7" /><label class="type-icon" data-type-icon="7" for="search-type-7"><!--惡魔--></label></li>
|
||||
<li data-type-icon="8"><input type="checkbox" class="type-check" name="types" value="8" id="search-type-8" /><label class="type-icon" data-type-icon="8" for="search-type-8"><!--机械--></label></li>
|
||||
<li data-type-icon="1"><input type="checkbox" class="type-check" name="types" value="1" id="search-type-1" /><label class="type-icon" data-type-icon="1" for="search-type-1"><!--平衡--></label></li>
|
||||
|
@ -698,6 +718,19 @@ var formation = new Formation(teamsCount,6);
|
|||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="80"></button><!--4色--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="81"></button><!--5色--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="82"></button><!--12珠--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="83" data-max-count="1"></button><!--附加神类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="84" data-max-count="1"></button><!--附加龙类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="85" data-max-count="1"></button><!--附加恶魔类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="86" data-max-count="1"></button><!--附加机械类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="87" data-max-count="1"></button><!--附加平衡类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="88" data-max-count="1"></button><!--附加攻击类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="89" data-max-count="1"></button><!--附加体力类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="90" data-max-count="1"></button><!--附加回复类型--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="91" data-max-count="1"></button><!--附加火属性--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="92" data-max-count="1"></button><!--附加水属性--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="93" data-max-count="1"></button><!--附加木属性--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="94" data-max-count="1"></button><!--附加光属性--></li>
|
||||
<li class="awoken-count"><button class="awoken-icon" data-awoken-icon="95" data-max-count="1"></button><!--附加暗属性--></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sawoken-div"><!--超觉醒-->
|
||||
|
@ -720,9 +753,9 @@ var formation = new Formation(teamsCount,6);
|
|||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="45" id="search-awoken-45" /><label class="awoken-icon" data-awoken-icon="45" for="search-awoken-45"></label><!--心追--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="50" id="search-awoken-50" /><label class="awoken-icon" data-awoken-icon="50" for="search-awoken-50"></label><!--方块心追--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="19" id="search-awoken-19" /><label class="awoken-icon" data-awoken-icon="19" for="search-awoken-19"></label><!--手指--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="1" id="search-awoken-1" /><label class="awoken-icon" data-awoken-icon="1" for="search-awoken-1"></label><!--HP+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="2" id="search-awoken-2" /><label class="awoken-icon" data-awoken-icon="2" for="search-awoken-2"></label><!--攻击+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="3" id="search-awoken-3" /><label class="awoken-icon" data-awoken-icon="3" for="search-awoken-3"></label><!--回复+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="1" id="search-awoken-1" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="1" for="search-awoken-1"></label><!--HP+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="2" id="search-awoken-2" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="2" for="search-awoken-2"></label><!--攻击+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="3" id="search-awoken-3" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="3" for="search-awoken-3"></label><!--回复+--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="4" id="search-awoken-4" /><label class="awoken-icon" data-awoken-icon="4" for="search-awoken-4"></label><!--火盾--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="5" id="search-awoken-5" /><label class="awoken-icon" data-awoken-icon="5" for="search-awoken-5"></label><!--水盾--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="6" id="search-awoken-6" /><label class="awoken-icon" data-awoken-icon="6" for="search-awoken-6"></label><!--木盾--></li>
|
||||
|
@ -746,7 +779,7 @@ var formation = new Formation(teamsCount,6);
|
|||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="26" id="search-awoken-26" /><label class="awoken-icon" data-awoken-icon="26" for="search-awoken-26"></label><!--暗横--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="20" id="search-awoken-20" /><label class="awoken-icon" data-awoken-icon="20" for="search-awoken-20"></label><!--心解--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="28" id="search-awoken-28" /><label class="awoken-icon" data-awoken-icon="28" for="search-awoken-28"></label><!--SX--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="30" id="search-awoken-30" /><label class="awoken-icon" data-awoken-icon="30" for="search-awoken-30"></label><!--协力--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="30" id="search-awoken-30" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="30" for="search-awoken-30"></label><!--协力--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="31" id="search-awoken-31" /><label class="awoken-icon" data-awoken-icon="31" for="search-awoken-31"></label><!--龙杀--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="32" id="search-awoken-32" /><label class="awoken-icon" data-awoken-icon="32" for="search-awoken-32"></label><!--神杀--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="33" id="search-awoken-33" /><label class="awoken-icon" data-awoken-icon="33" for="search-awoken-33"></label><!--恶魔杀--></li>
|
||||
|
@ -762,17 +795,17 @@ var formation = new Formation(teamsCount,6);
|
|||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="44" id="search-awoken-44" /><label class="awoken-icon" data-awoken-icon="44" for="search-awoken-44"></label><!--5色破防--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="46" id="search-awoken-46" /><label class="awoken-icon" data-awoken-icon="46" for="search-awoken-46"></label><!--全体HP--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="47" id="search-awoken-47" /><label class="awoken-icon" data-awoken-icon="47" for="search-awoken-47"></label><!--全体回复--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="49" id="search-awoken-49" /><label class="awoken-icon" data-awoken-icon="49" for="search-awoken-49"></label><!--武器觉醒--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="49" id="search-awoken-49" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="49" for="search-awoken-49"></label><!--武器觉醒--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="51" id="search-awoken-51" /><label class="awoken-icon" data-awoken-icon="51" for="search-awoken-51"></label><!--5色溜--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="53" id="search-awoken-53" /><label class="awoken-icon" data-awoken-icon="53" for="search-awoken-53"></label><!--大手指--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="56" id="search-awoken-56" /><label class="awoken-icon" data-awoken-icon="56" for="search-awoken-56"></label><!--大SB--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="59" id="search-awoken-59" /><label class="awoken-icon" data-awoken-icon="59" for="search-awoken-59"></label><!--L盾--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="62" id="search-awoken-62" /><label class="awoken-icon" data-awoken-icon="62" for="search-awoken-62"></label><!--c珠--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="63" id="search-awoken-63" /><label class="awoken-icon" data-awoken-icon="63" for="search-awoken-63"></label><!--语音--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="63" id="search-awoken-63" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="63" for="search-awoken-63"></label><!--语音--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="64" id="search-awoken-64" /><label class="awoken-icon" data-awoken-icon="64" for="search-awoken-64"></label><!--奖励增加--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="65" id="search-awoken-65" /><label class="awoken-icon" data-awoken-icon="65" for="search-awoken-65"></label><!--HP- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="66" id="search-awoken-66" /><label class="awoken-icon" data-awoken-icon="66" for="search-awoken-66"></label><!--攻击- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="67" id="search-awoken-67" /><label class="awoken-icon" data-awoken-icon="67" for="search-awoken-67"></label><!--回复- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="65" id="search-awoken-65" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="65" for="search-awoken-65"></label><!--HP- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="66" id="search-awoken-66" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="66" for="search-awoken-66"></label><!--攻击- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="67" id="search-awoken-67" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="67" for="search-awoken-67"></label><!--回复- --></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="71" id="search-awoken-71" /><label class="awoken-icon" data-awoken-icon="71" for="search-awoken-71"></label><!--掉废--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="72" id="search-awoken-72" /><label class="awoken-icon" data-awoken-icon="72" for="search-awoken-72"></label><!--掉毒--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="73" id="search-awoken-73" /><label class="awoken-icon" data-awoken-icon="73" for="search-awoken-73"></label><!--2串火--></li>
|
||||
|
@ -785,11 +818,25 @@ var formation = new Formation(teamsCount,6);
|
|||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="80" id="search-awoken-80" /><label class="awoken-icon" data-awoken-icon="80" for="search-awoken-80"></label><!--4色--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="81" id="search-awoken-81" /><label class="awoken-icon" data-awoken-icon="81" for="search-awoken-81"></label><!--5色--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="82" id="search-awoken-82" /><label class="awoken-icon" data-awoken-icon="82" for="search-awoken-82"></label><!--12珠--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="83" id="search-awoken-83" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="83" for="search-awoken-83"></label><!--附加神类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="84" id="search-awoken-84" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="84" for="search-awoken-84"></label><!--附加龙类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="85" id="search-awoken-85" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="85" for="search-awoken-85"></label><!--附加恶魔类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="86" id="search-awoken-86" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="86" for="search-awoken-86"></label><!--附加机械类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="87" id="search-awoken-87" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="87" for="search-awoken-87"></label><!--附加平衡类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="88" id="search-awoken-88" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="88" for="search-awoken-88"></label><!--附加攻击类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="89" id="search-awoken-89" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="89" for="search-awoken-89"></label><!--附加体力类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="90" id="search-awoken-90" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="90" for="search-awoken-90"></label><!--附加回复类型--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="91" id="search-awoken-91" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="91" for="search-awoken-91"></label><!--附加火属性--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="92" id="search-awoken-92" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="92" for="search-awoken-92"></label><!--附加水属性--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="93" id="search-awoken-93" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="93" for="search-awoken-93"></label><!--附加木属性--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="94" id="search-awoken-94" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="94" for="search-awoken-94"></label><!--附加光属性--></li>
|
||||
<li class="awoken-count"><input type="checkbox" class="sawoken-check" name="types" value="95" id="search-awoken-95" /><label class="awoken-icon unallowable-awoken" data-awoken-icon="95" for="search-awoken-95"></label><!--附加暗属性--></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="special-div">
|
||||
<button class="special-add brown-button"></button>
|
||||
<button class="special-clear brown-button"></button>
|
||||
<button class="special-star brown-button"></button>
|
||||
<ul class="special-filter-list">
|
||||
<li><select class="special-filter"></select></li>
|
||||
</ul>
|
||||
|
@ -981,6 +1028,7 @@ var formation = new Formation(teamsCount,6);
|
|||
<li class="latent-icon" data-latent-icon="40"></li><!--心横解转转-->
|
||||
<li class="latent-icon" data-latent-icon="41"></li><!--U解禁消-->
|
||||
<li class="latent-icon" data-latent-icon="42"></li><!--伤害上限解除-->
|
||||
<li class="latent-icon" data-latent-icon="46"></li><!--心追解云封-->
|
||||
</ul>
|
||||
</div>
|
||||
<div class="setting-row row-mon-skill">
|
||||
|
@ -1090,8 +1138,8 @@ var formation = new Formation(teamsCount,6);
|
|||
<li><input type="checkbox" class="attr-check" name="dungeon-attrs" value="4" id="dungeon-attr-4" /><label class="attr" data-attr-icon="4" for="dungeon-attr-4"></label></li><!--暗-->
|
||||
</ul>
|
||||
<ul class="type-list">
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="4" id="dungeon-type-4" /><label class="type-icon" data-type-icon="4" for="dungeon-type-4"><!--龍--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="5" id="dungeon-type-5" /><label class="type-icon" data-type-icon="5" for="dungeon-type-5"><!--神--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="4" id="dungeon-type-4" /><label class="type-icon" data-type-icon="4" for="dungeon-type-4"><!--龍--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="7" id="dungeon-type-7" /><label class="type-icon" data-type-icon="7" for="dungeon-type-7"><!--惡魔--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="8" id="dungeon-type-8" /><label class="type-icon" data-type-icon="8" for="dungeon-type-8"><!--机械--></label></li>
|
||||
<li><input type="checkbox" class="type-check" name="dungeon-types" value="1" id="dungeon-type-1" /><label class="type-icon" data-type-icon="1" for="dungeon-type-1"><!--平衡--></label></li>
|
||||
|
|