🌟 | 現在、 鉄壁ヘッドショットには対応済みです。 鉄壁HSは通常HSと同じダメージになります。LMG及びDMR、チャージライフル、ハンマーポイント弾を除き、すべてのダメージ値が一致していることを確認しています。 |
「モジュール:DamageTable」の版間の差分
ナビゲーションに移動
検索に移動
(ガンシールドに対するダメージ値が誤っていた問題を修正) |
(レッグショットが1倍の場合,胴ダメージに統合する機能の追加) |
||
136行目: | 136行目: | ||
local bodyDamage = roundFunc(mul * baseDamage) | local bodyDamage = roundFunc(mul * baseDamage) | ||
if | if legMul == 1 then | ||
if mul == 0.85 then | |||
renderRow(table, "胴・脚", bodyDamage, 2) | |||
renderRowForGunShiled(table, bodyDamage, baseDamage) | |||
else | |||
renderRow(table, " | renderRow(table, "胴・脚", bodyDamage, 1) | ||
end | |||
else | else | ||
local legDamage = roundFunc(mul * round(legMul * 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 .. ")", legDamage, 1) | |||
else | |||
renderRow(table, "胴", bodyDamage, 1) | renderRow(table, "胴", bodyDamage, 1) | ||
renderRow(table, "脚 (x" .. legMul .. ")", | renderRow(table, "脚 (x" .. legMul .. ")", legDamage, 1) | ||
end | |||
end | end | ||
return table | return table | ||
end | end |
2021年1月23日 (土) 09:08時点における版
このモジュールについての説明文ページを モジュール: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 legMul == 1 then if mul == 0.85 then renderRow(table, "胴・脚", bodyDamage, 2) renderRowForGunShiled(table, bodyDamage, baseDamage) else renderRow(table, "胴・脚", bodyDamage, 1) end else local legDamage = roundFunc(mul * round(legMul * 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 .. ")", legDamage, 1) else renderRow(table, "胴", bodyDamage, 1) renderRow(table, "脚 (x" .. legMul .. ")", legDamage, 1) end 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