🌟 | 現在、 鉄壁ヘッドショットには対応済みです。 鉄壁HSは通常HSと同じダメージになります。LMG及びDMR、チャージライフル、ハンマーポイント弾を除き、すべてのダメージ値が一致していることを確認しています。 |
「モジュール:DamageTable」の版間の差分
ナビゲーションに移動
検索に移動
(ガンシールド有効時の確殺数の追加) |
(ガンシールドに対するダメージ値が誤っていた問題を修正) |
||
40行目: | 40行目: | ||
end | end | ||
local function renderRow(table, name, damage, rowspan | local function renderRow(table, name, damage, rowspan) | ||
rowspan = rowspan or 0 | rowspan = rowspan or 0 | ||
rowspanForDamage = rowspanForDamage or 0 | rowspanForDamage = rowspanForDamage or 0 | ||
62行目: | 62行目: | ||
:wikitext(name) | :wikitext(name) | ||
end | end | ||
row:tag('td'):attr('align', 'right'):wikitext(damage) | |||
row:tag('td'):attr('align', 'right'):wikitext(math.ceil(100 / damage)) | row:tag('td'):attr('align', 'right'):wikitext(math.ceil(100 / damage)) | ||
row:tag('td'):attr('align', 'right'):wikitext(math.ceil(150 / damage)) | row:tag('td'):attr('align', 'right'):wikitext(math.ceil(150 / damage)) | ||
77行目: | 70行目: | ||
end | end | ||
local function renderRowForGunShiled(table, damage) | local function renderRowForGunShiled(table, damage, baseDamage) | ||
local row = table:tag('tr') | local row = table:tag('tr') | ||
row:tag('th') | row:tag('th') | ||
86行目: | 79行目: | ||
:wikitext('+ガンシールド') | :wikitext('+ガンシールド') | ||
local countForGunShiled = math.ceil(50 / | local countForGunShiled = math.ceil(50 / baseDamage) | ||
row:tag('td'):attr('align', 'right'):wikitext(baseDamage) | |||
row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(100 / damage)) | row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(100 / damage)) | ||
row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(150 / damage)) | row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(150 / damage)) | ||
145行目: | 139行目: | ||
renderRow(table, "胴・脚", bodyDamage, 1) | renderRow(table, "胴・脚", bodyDamage, 1) | ||
elseif mul == 0.85 then | elseif mul == 0.85 then | ||
renderRow(table, "胴", bodyDamage, 2 | renderRow(table, "胴", bodyDamage, 2) | ||
renderRowForGunShiled(table, bodyDamage) | renderRowForGunShiled(table, bodyDamage, baseDamage) | ||
renderRow(table, "脚 (x" .. legMul .. ")", roundFunc(mul * round(legMul * baseDamage)), 1) | renderRow(table, "脚 (x" .. legMul .. ")", roundFunc(mul * round(legMul * baseDamage)), 1) | ||
else | else |
2021年1月23日 (土) 01:13時点における版
このモジュールについての説明文ページを モジュール:DamageTable/doc に作成できます
local p = {} local getArgs -- lazily initialized local function round(num) return math.floor(tonumber(string.format("%.3f", num)) + 0.5) end local function roundover(num) return math.ceil(num - 0.5) end local function renderHeader(table, mul) local row = table:tag('tr') local cell = row:tag('th') :attr('colspan', 2) :attr('rowspan', 2) if mul == 1 then cell:wikitext('部位') elseif mul == 1.05 then cell:wikitext('部位 (小柄)') elseif mul == 0.85 then cell:wikitext('部位 (鉄壁)') else cell:wikitext('部位 (x' .. mul .. ')') end row:tag('th') :attr('rowspan', 2) :wikitext('ダメージ') row:tag('th') :attr('colspan', 5) :wikitext('確殺数') row = table:tag('tr') row:tag('th'):wikitext('100<small> HP</small>') row:tag('th'):wikitext('<span class="text-rarity text-rarity-common">150<small> HP</small></span>') row:tag('th'):wikitext('<span class="text-rarity text-rarity-rare">175<small> HP</small></span>') row:tag('th'):wikitext('<span class="text-rarity text-rarity-epic">200<small> HP</small></span>') row:tag('th'):wikitext('<span class="text-rarity text-rarity-heirloom">225<small> HP</small></span>') end local function renderRow(table, name, damage, rowspan) rowspan = rowspan or 0 rowspanForDamage = rowspanForDamage or 0 local row = table:tag('tr') if rowspan > 1 then row:tag('th') :attr('colspan', 2) :css('border-bottom', "0 none transparent") :wikitext(name) elseif rowspan == 1 then row:tag('th') :attr('colspan', 2) :wikitext(name) else row:tag('th') :css('border-top', "0 none transparent") :css('border-bottom', "0 none transparent") :wikitext(' ') row:tag('th') :wikitext(name) end row:tag('td'):attr('align', 'right'):wikitext(damage) row:tag('td'):attr('align', 'right'):wikitext(math.ceil(100 / damage)) row:tag('td'):attr('align', 'right'):wikitext(math.ceil(150 / damage)) row:tag('td'):attr('align', 'right'):wikitext(math.ceil(175 / damage)) row:tag('td'):attr('align', 'right'):wikitext(math.ceil(200 / damage)) row:tag('td'):attr('align', 'right'):wikitext(math.ceil(225 / damage)) end local function renderRowForGunShiled(table, damage, baseDamage) local row = table:tag('tr') row:tag('th') :css('border-top', "0 none transparent") :css('border-bottom', "0 none transparent") :wikitext(' ') row:tag('th') :wikitext('+ガンシールド') local countForGunShiled = math.ceil(50 / baseDamage) row:tag('td'):attr('align', 'right'):wikitext(baseDamage) row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(100 / damage)) row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(150 / damage)) row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(175 / damage)) row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(200 / damage)) row:tag('td'):attr('align', 'right'):wikitext(countForGunShiled + math.ceil(225 / damage)) end local function renderTable(args) local mul = args.mul or 1 local roundFunc if mul == 0.85 then roundFunc = round else roundFunc = roundover end local baseDamage if args.amped then baseDamage = round(1.2 * (args.damage or 20)) else baseDamage = args.damage or 20 end local headMul = args.head or 2 local headDamage = round(headMul * baseDamage) local legMul = args.leg or 0.8 local table = mw.html.create('table') :addClass('wikitable') renderHeader(table, mul) renderRow( table, "頭 (x" .. headMul .. ")", roundFunc(mul * headDamage), 4) local hlmLv1Mul = 0.2 + 0.8 * headMul renderRow( table, '<span class="text-rarity text-rarity-common">Lv.1 (x' .. hlmLv1Mul .. ')</span>', roundFunc(mul * round(hlmLv1Mul * baseDamage))) local hlmLv2Mul = 0.4 + 0.6 * headMul renderRow( table, '<span class="text-rarity text-rarity-rare">Lv.2 (x' .. hlmLv2Mul .. ')</span>', roundFunc(mul * round(hlmLv2Mul * baseDamage))) local hlmLv3Mul = 0.5 + 0.5 * headMul renderRow( table, '<span class="text-rarity text-rarity-epic">Lv.3</span>/<span class="text-rarity text-rarity-legendary">4 (x' .. hlmLv3Mul .. ')</span>', roundFunc(mul * round(hlmLv3Mul * baseDamage))) local bodyDamage = roundFunc(mul * baseDamage) if mul == 1.05 then renderRow(table, "胴・脚", bodyDamage, 1) elseif mul == 0.85 then renderRow(table, "胴", bodyDamage, 2) renderRowForGunShiled(table, bodyDamage, baseDamage) renderRow(table, "脚 (x" .. legMul .. ")", roundFunc(mul * round(legMul * baseDamage)), 1) else renderRow(table, "胴", bodyDamage, 1) renderRow(table, "脚 (x" .. legMul .. ")", roundFunc(mul * round(legMul * baseDamage)), 1) end return table end function p._main(args) return tostring(renderTable(args)) end function p.main(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame) -- fix arguments args.damage = tonumber(args.damage) args.head = tonumber(args.head) args.leg = tonumber(args.leg) args.mul = tonumber(args.mul) args.amped = args.amped == 'true' return p._main(args) end return p