◆少前百科是非盈利性、非官方的少女前线维基百科。
◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科
◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科
◆To foreigners,You can use twitter to contact us.
Icon Nyto Silver.png

“Widget:战术人形属性”的版本间的差异

来自少前百科GFwiki
跳转至: 导航搜索
 
(未显示同一用户的32个中间版本)
第1行: 第1行:
<includeonly><template id="attr-tpl">
+
<includeonly><script>
<table><caption>生命</caption><colgroup><col id="hp1"><col id="hp2"><col id="hp3"><col id="hp4"><col id="hp5"></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><td id="grow-th">成长</td></tr><tr><td id="grow-td"></td></tr></table>
 
<table><tr><td id="pow-th">伤害</td><td id="hit-th">命中</td></tr><tr><td id="pow-td"></td><td id="hit-td"></td></tr><tr><td id="dodge-th">回避</td><td id="rate-th">射速</td></tr><tr><td id="dodge-td"></td><td id="rate-th"></td></tr></table>
 
</template><script>
 
 
const basic = [16, 45, 5, 5];
 
const basic = [16, 45, 5, 5];
 
const basic_life_armor = [
 
const basic_life_armor = [
 
     [[55, .555],
 
     [[55, .555],
     [2, .161]],
+
     [2, .161]],,,,,
 
     [[96.283, .138],
 
     [[96.283, .138],
     [13.979, .04]]
+
     [13.979, .04]],
 +
    [[5, .05],
 +
    [5, .05]]
 
];
 
];
 
const grow = [
 
const grow = [
第21行: 第19行:
 
     [.075, 22.572]]
 
     [.075, 22.572]]
 
];
 
];
 +
 +
function attrMain() {}
  
 
(window.RLQ=window.RLQ||[]).push(() => {
 
(window.RLQ=window.RLQ||[]).push(() => {
 
const adat = $('#attr-dataset').data();
 
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.growing = adat.growing.split(',');
adat.growingMod = adat.growingMod.split(',');
+
adat.growingMod = adat.growingMod?.split(',');
const frag = $($('#attr-tpl')[0].content).clone();
+
$('#attr-table')[0].insertAdjacentHTML('beforebegin', `<label>等级<input id="lv-input" type="number" min="1" max="100" value="100"></label>`);
$('#attr-tpl').remove();
+
const hpTable = $('#attr-table>table')[0];
const baseAttr = [[.6,.6,.8,1.2,1.8,0],[1.6,.6,1.2,.3,1.6,0],[.8,2.4,.5,1.6,.8,0],[1,1,1,1,1,0],[1.5,1.8,1.6,.6,.6,0],[2,.7,.4,.3,.3,1]][adat.guntype];
+
const hpRow = $('#hp-tr')[0];
$('#attr-table').prepend(frag);
+
const lvInput = $('#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 calcLifeArmor(lv, type, mod, attr, ratio) {
+
function calcDef(lv, attr) {
 +
    const modsuf = mod ? 'Mod' : '';
 +
    const ratio = adat['growing'+modsuf][attr];
 
     return Math.ceil(
 
     return Math.ceil(
         (basic_life_armor[mod][attr&1][0] + (lv-1)*basic_life_armor[mod][attr&1][1]) * base_attr[type][attr] * ratio / 100
+
         (basic_life_armor[mod][attr][0] + (lv-1)*basic_life_armor[mod][attr][1]) * base_attr[attr] * ratio / 100
 
     );
 
     );
 
}
 
}
function calcOther(lv, type, mod, attr, ratio, growth) {
+
function calcOther(lv, attr) {
     let base = basic[attr-1] * base_attr[type][attr] * ratio / 100;
+
    const modsuf = mod ? 'Mod' : '';
     let accretion = (grow[mod][attr-1][1] + (lv-1)*grow[mod][attr-1][0]) * base_attr[type][attr] * ratio * growth / 100 / 100;
+
    const ratio = +adat['growing'+modsuf][attr], growth = adat['growth'+modsuf];
 +
     let base = basic[attr-1] * base_attr[attr] * ratio / 100;
 +
     let accretion = (grow[mod][attr-1][1] + (lv-1)*grow[mod][attr-1][0]) * base_attr[attr] * ratio * growth / 100 / 100;
 
     return Math.ceil(base) + Math.ceil(accretion);
 
     return Math.ceil(base) + Math.ceil(accretion);
 +
}
 +
function toggleMod() {
 +
    const checked = modToggle[0].checked;
 +
    const attrRound = $('#attr-round');
 +
    const attrCrit = $('#crit-td');
 +
    if (checked) {
 +
        mod = 1;
 +
        lvInput.max = 120;
 +
        lvInput.min = 100;
 +
        attrRound.text(attrRound.data('mod'));
 +
        attrCrit.text(attrCrit.data('mod') + '%');
 +
        $('#rate').addClass('mod');
 +
    } else {
 +
        mod = 0;
 +
        lvInput.max = 100;
 +
        lvInput.min = 1;
 +
        attrRound.text(attrRound.data('attr'));
 +
        attrCrit.text(attrCrit.data('attr'));
 +
        $('#rate').removeClass('mod');
 +
    }
 +
    lvInput.value = 100;
 +
    updateAttrs();
 +
}
 +
function updateAttrs() {
 +
    const lv = lvInput.value;
 +
    if (lv > 89) hpTable.className = '';
 +
    else if (lv > 69) hpTable.className = 'form4';
 +
    else if (lv > 29) hpTable.className = 'form3';
 +
    else if (lv > 9) hpTable.className = 'form2';
 +
    else hpTable.className = 'form1';
 +
    const hp1 = calcDef(lv, 0);
 +
    [...hpRow.children].forEach(function(e, i) {
 +
        e.textContent = hp1*(i+1);
 +
    });
 +
    $('#pow-td,#hit-td,#dodge-td,#rate-td,#armor-td').each(function(i) {
 +
        if (i < 4) {
 +
            const attr = [1,3,4,2][i];
 +
            this.textContent = calcOther(lv, attr);
 +
        } else if (adat.type == 6) this.textContent = calcDef(lv, 5);
 +
    });
 
}
 
}
 
})
 
})
 
</script></includeonly><noinclude>
 
</script></includeonly><noinclude>
 
</noinclude>
 
</noinclude>

2024年4月9日 (二) 21:24的最新版本