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

更改

跳转至: 导航搜索

Widget:融合势力属性

添加4,014字节2023年3月23日 (四) 12:06
无编辑摘要
<scriptstyle>const type_coef = [#attr-th-1 { background: url(/images/9/9e/Data_Life.png) } [4#attr-th-2 { background: url(/images/1/16/Data_Pow.79, png) }#attr-th-3{ background: url(/images/7/72/Data_Rate.67, 0png) }#attr-th-4 { background: url(/images/6/6d/Data_Hit.46, 0png) }#attr-th-5 { background: url(/images/5/5f/Data_Dodge.55, 0png) }#attr-th-6 { background: url(/images/8/89/Data_Armor.75, 0png) }#attr-th-7 { background: url(/images/b/b2/Data_AP.18],png) } [3#attr-th-8 { background: url(/images/5/5d/Data_Ct.84, 2.94, 0.42, 0.44, 0.60, 0png) }#attr-th-9 { background: url(/images/1/12/Data_CtPow.15],png) } [3.60, #attr-th-10 { background: url(/images/2/2f/Data_Move.76, 0png) }#attr-th-11 { background: url(/images/b/bb/Data_Range.42, 0.42, 0.57, 0.14]]png) }</style><script>let type_coef;
const size_coef = [100, 102, 105, 108, 110];
const rank_coef = [80, 90, 100, 110, 120];
const sizes = ['微', '小', '中', '大', '巨'];
const formImgPaths = ['0/0d', 'a/a8', '5/5a', '0/05', '3/3e'];
let div, type, ratios, grow;
let maxform = 5;
let resolution = new Array(5);
let variables = {size: 0, formation: 45, lv: 100, rank: 4, resolution: 4};
let stars;
let resFlower;
let checked = {size: null, rank: null};
function calccalcGroup(attr, lv, rank, size, resolve, form) {
let ratio = ratios[attr];
let form = attr == 1 ? 1 : (attr == 0 ? resolve+1 : 5); let base = type_coef[type][attr] * ratio * 2 * grow * size_coef[size] * rank_coef[rank] * form / (maxform * 5e6)1.25e7; let accretion = type_coef[type][attr] * ratio * (lv - 1) * grow * size_coef[size] * rank_coef[rank] * form / (maxform * 1e8)5e8; if (base - return Math.floorceil(base+ accretion) + (attr == 0 ? form : 1) < 1e-3* resolution[0][attr];} function calcSole(attr, lv, rank, size, resolve) { let ratio = ratios[attr]; let base = Mathtype_coef[attr] * ratio * grow * size_coef[size] * rank_coef[rank] / 2.floor5e6; let accretion = type_coef[attr] * ratio * (baselv - 1)* grow * size_coef[size] * rank_coef[rank] / 1e8; } return Math.ceil(base) + Math.floor(accretion) + form * resolution[resolve][attr];
}
function updateAttrs() {
for (let i = 7; --i;) document.getElementById('attr-td-' + i).textContent = calcwindow.calcAttr( i-1, variables.lv, variables.rank, variables.size, variables.resolveresolution);} function updateResSignal() { let res = variables.resolution; if (res) resFlower.setAttribute('mask', `url(#res${res})`); else resFlower.setAttribute('mask', '');} function addSizeControl(container) { let sizes = ['微', '小', '中', '大', '巨']; for (let i = 0; i < 5; i++) { let radio = document.createElement('span'); radio.textContent = sizes[i]; radio.id = 'size' + i; radio.value = i; container.appendChild(radio); radio.addEventListener('click', e => { let val = +e.currentTarget.value; if (variables.formsize != val) { variables.size = val; updateAttrs(); } if (checked.size) checked.size.className = ''; checked.size = e.currentTarget; checked.size.className = 'checked'; }); } container.children[4].click();
}
function addInputsaddResFormControl(containerresCtrl, name, labels, targetformCtrl = null) {
for (let i = 0; i < 5; i++) {
let label = document.createElement('label');
let input = document.createElement('input');
input.id = 'reso' + i;
input.type = 'radio';
input.value = i;
input.name = name; label.appendChild(input); if (labels) label.insertAdjacentText('beforeendresolution', labels[i]); containerresCtrl.appendChild(labelinput); input.addEventListneraddEventListener('click', e => { let val t = +e.currentTarget; let val = +t.value; if (variables[target] .resolution != val) { variables[target] .resolution = val;
updateAttrs();
updateResSignal();
if (t.labels.length) {
if (checked.formation) checked.formation.className = '';
checked.formation = t.labels[0];
checked.formation.className = 'checked';
}
}
});
}
if (formCtrl) {
for (let i = 0; i < 5; i++) {
let label = document.createElement('label');
label.htmlFor = 'reso' + i;
let labelImg = new Image();
labelImg.src = `/images/${formImgPaths[i]}/X${i+1}.png`;
labelImg.alt = '×' + (i+1);
label.append(labelImg);
formCtrl.appendChild(label);
}
formCtrl.children[4].className = 'checked';
}
resCtrl.children[4].click();
}
let sizeCtrl = document.getElementById('size-control');
let formCtrl = document.getElementById('formation-control');
let resSignal = document.getElementById('resolve-signal');
let lvCtrl = document.getElementById('lv-control');
let rankCtrl = document.getElementById('rank-control');
let resCtrl = document.getElementById('resolve-control');
if (sizeCtrl) addInputsaddSizeControl(sizeCtrl, 'size', ['微', '小', '中', '大', '巨'], 'size'); if (maxform == 5) addInputsaddResFormControl(resCtrl, formCtrl, ); else { let x1Img = new Image(); x1Img.src = 'formation/images/0/0d/X1.png', [; x1Img.alt = '×1', ; formCtrl.append(x1Img); addResFormControl(resCtrl); } resSignal.insertAdjacentHTML('×2beforeend', '×3'`<svg xmlns="http://www.w3.org/2000/svg" width="94" height="94"><defs><g id="diamonds"><polygon points="0,47 23.5,33 70.5,61 94,47 70.5,33 23.5,61"\/><polygon points="47,0 33,23.5 61,70.5 47,94 33,70.5 61,23.5"\/><\/g><\/defs><mask id="res1"><rect width="94" height="94" fill="#fff"\/><polygon points="0,0 94,0 47,47"\/><\/mask><mask id="res2"><rect width="94" height="94" fill="#fff"\/><polygon points="0,0 94,0 0,94 94,94"\/><\/mask><mask id="res3"><rect width="94" height="94"\/><polygon points="94, '×4'0 47, '×5']47 94, 'formation'94" fill="#fff"\/><\/mask><mask id="res4"><rect width="94" height="94"\/><\/mask><rect x="23" y="23" width="48" height="48" fill="#3d3d3d"\/><use fill="#ff004e" href="#diamonds"\/><use id="flower" fill="#161616" mask="url(#res4)" href="#diamonds"\/><\/svg>`); else formCtrlresFlower = document.textContent = getElementById('×1flower');
let lvLabel = document.createElement('label');
lvLabel.textContent = '等级';
lvLabel.appendChild(lvInput);
lvCtrl.appendChild(lvLabel);
lvInput.addEventListener('input', e => {
let val = e.currentTarget.value;
if (variables.lv != val) {
variables.lv = val;
updateAttrs();
}
});
stars = rankCtrl.children;
for (let i = 5; i--;) stars[i].src = '/images/0/0a/StarWhite.svg';
for (let i = 3 2 - type; i < 5; i++) {
let star = stars[i];
stars[i].addEventListener('click', e => {
updateAttrs();
}
});
}
for (let i = 0; i < 5; i++) {
let input = document.createElement('input');
input.type = 'radio';
input.value = i;
input.name = 'resolution';
resCtrl.appendChild(input);
input.addEventListner('click', e => {
let val = +e.currentTarget.value;
if (variables.resolve != val)
variables.resolve = val;
updateAttrs();
updateResSignal();
});
}
}
function mainattrMain() {
div = document.getElementById('attrs');
let unitid = div.dataset.id;
if (unitid < 2000 || (unitid == -2006 || )*(unitid -2018)*(unitid-3010) == 30100) maxform = 1; variables.formation = maxform - 1;
type = div.dataset.type;
type_coef = [ [4.79, 3.67, 0.46, 0.55, 0.75, 0.18],
[3.84, 2.94, 0.42, 0.44, 0.60, 0.15],
[3.60, 2.76, 0.42, 0.42, 0.57, 0.14]][type];
ratios = div.dataset.attrs.split(',').map(x => +x);
grow = div.dataset.grow;
for (let j = 0; j < 6; j++) resolution[i][j] = +rs[j];
}
window.calcAttr = maxform == 5 ? calcGroup : calcSole;
addControl();
updateAttrs();
if (unitid > 2000) div.insertAdjacentHTML('beforebegin', `<style>
#control #size0.checked { clip-path: path('M1,1h26v27h-10v5h-6v-5h-10v-27z'); }
#control #size1.checked { clip-path: path('M1,1h26v27h-9v5h-8v-5h-9v-27z'); }
#control #size2.checked { clip-path: path('M3,1h26v27h-7v5h-12v-5h-7v-27z'); }
#control #size3.checked { clip-path: path('M1,1h26v27h-4v5h-18v-5h-4v-27z'); }
#control #size4.checked { clip-path: path('M3,1h26v27h-2v5h-22v-5h-2v-27z'); }
</style>`);
}
 
window.onload = main;
</script>

导航菜单