打开主菜单

少前百科GFwiki β

更改

Widget:战术人形属性

删除533字节2024年4月9日 (星期二)
无编辑摘要
<includeonly><template id="attr-tpl"><table><caption>生命</caption><colgroup><col><col><col><col><col></colgroup><tr><th>×1</th><th>×2</th><th>×3</th><th>×4</th><th>×5</th></tr><tr id="hp-tr"><td></td><td></td><td></td><td></td><td></td></tr></table><table><tr><th id="growth" colspan="5">成长</th></tr><tr><td id="grow-td" colspan="5"></td></tr><tr><th id="pow">伤害</th><th id="hit">命中</th><th id="dodge">回避</th><th id="rate">射速</th><th id="armor">护甲</th></tr><tr><td id="pow-td"></td><td id="hit-td"></td><td id="dodge-td"></td><td id="rate-td"></td></tr></table></template><script>
const basic = [16, 45, 5, 5];
const basic_life_armor = [
[[55, .555],
[2, .161]],,,,,
[[96.283, .138],
[13.979, .04]], [[5, .05], [5, .05]]
];
const grow = [
[.075, 22.572]]
];
 
function attrMain() {}
(window.RLQ=window.RLQ||[]).push(() => {
const adat = $('#attr-dataset').data();
const base_attr = [[.6,.6,.8,1.2,1.8,0,1.71],[1.6,.6,1.2,.3,1.6,0,2.38],[.8,2.4,.5,1.6,.8,0,.94],[1,1,1,1,1,0,.8],[1.5,1.8,1.6,.6,.6,0,.82],[2,.7,.4,.3,.3,1,3.91]][adat.type-1];
adat.growing = adat.growing.split(',');
adat.growingMod = adat.growingMod?.split(',');$('#attr-table')[0].insertBeforeinsertAdjacentHTML('beforebegin', `<label>等级<input id="lv-input" type="number" min="1" max="100" value="100"><input id="mod-toggle" type="checkbox"><label for="mod-toggle">MOD</label>`);const tables hpTable = $('#attr-tpltable>table')[0].content.cloneNode(true);$('#attr-tpl').remove();$('#attr-table').prepend(tables);if (adat.type == 6) $('#rate-td').insertAfter(`<td id="armor-td"></td>`);
const hpRow = $('#hp-tr')[0];
const [lvInput, modToggle] = $('#lv-input')[0];let modToggle;if (adat.growingMod) {   lvInput.insertAdjacentHTML('afterend', `<input id="mod-toggle" type="checkbox"><label for="mod-toggle">心智升级</label>`); modToggle = $('#mod-toggle');}let mod = 0;
lvInput.addEventListener('input', updateAttrs);
$if (adat.growingMod) modToggle).on('click', toggleMod);
updateAttrs();
mw.loader.using('jquery.makeCollapsible', function() {
$('#dollind').makeCollapsible({collapsed:true});
});
function calcLifeArmorcalcDef(lv, mod, attr) {
const modsuf = mod ? 'Mod' : '';
const ratio = adat['growing'+modsuf][attr];
return Math.ceil(
(basic_life_armor[mod][attr&1][0] + (lv-1)*basic_life_armor[mod][attr&1][1]) * base_attr[attr] * ratio / 100
);
}
function calcOther(lv, mod, attr) {
const modsuf = mod ? 'Mod' : '';
const ratio = +adat['growing'+modsuf][attr], growth = adat['growth'+modsuf];
}
function toggleMod() {
const checked = modToggle[0].checked; const attrRound = $('#attr-round')[0]; const attrCrit = $('#crit-td');
if (checked) {
mod = 1;
lvInput.max = 120;
lvInput.min = 100;
attrRound?.text($attrRound.data(attrRound'mod')); attrCrit.text(attrCrit.data('mod')+ '%'); $('#rate').addClass('mod');
} else {
mod = 0;
lvInput.max = 100;
lvInput.min = 1;
attrRound?.text($attrRound.data(attrRound'attr')); attrCrit.text(attrCrit.data('attr')); $('#rate').removeClass('mod');
}
lvInput.value = 100;
}
function updateAttrs() {
const lv = lvInput.value, mod = +(modToggle.checked); if (lv > 89) hpRowhpTable.className = ''; else if (lv > 69) hpRowhpTable.className = 'form4'; else if (lv > 29) hpRowhpTable.className = 'form3'; else if (lv > 9) hpRowhpTable.className = 'form2'; else hpRowhpTable.className = 'form1'; const hp1 = calcLifeArmorcalcDef(lv, mod, 0);
[...hpRow.children].forEach(function(e, i) {
e.textContent = hp1*(i+1);
if (i < 4) {
const attr = [1,3,4,2][i];
this.textContent = calcOther(lv, mod, attr); } else if (adat.type == 6) this.textContent = calcLifeArmorcalcDef(lv, mod, 5);
});
}
})
</script><style>.form1 col:nth-child(n+2),.form2 col:nth-child(n+3),.form3 col:nth-child(n+4),.form4 col:last-child { visibility: collapse; }#mod-toggle { display: none }#mod-toggle + label { background: #eee; color: #555; display: inline-block;}#mod-toggle:checked + label {   background: #f4c430; color: #333;}</style></includeonly><noinclude>
</noinclude>