🌟 | 現在、 鉄壁ヘッドショットには対応済みです。 鉄壁HSは通常HSと同じダメージになります。LMG及びDMR、チャージライフル、ハンマーポイント弾を除き、すべてのダメージ値が一致していることを確認しています。 |
「モジュール:DamageTable」の版間の差分
ナビゲーションに移動
検索に移動
(改良) |
(小柄・鉄壁に対応) |
||
5行目: | 5行目: | ||
end | end | ||
local function renderHeader(table) | local function renderHeader(table, mul) | ||
local row = table:tag('tr') | local row = table:tag('tr') | ||
row:tag('th') | local cell = row:tag('th') | ||
:attr('colspan', 2) | :attr('colspan', 2) | ||
:attr('rowspan', 2) | :attr('rowspan', 2) | ||
:wikitext('部位') | 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') | row:tag('th') | ||
:attr('rowspan', 2) | :attr('rowspan', 2) | ||
56行目: | 64行目: | ||
local function renderTable(args) | local function renderTable(args) | ||
local | local mul = args.mul or 1 | ||
local baseDamage = args.damage or 20 | |||
local headMul = args.head or 2 | local headMul = args.head or 2 | ||
local headDamage = round(headMul * | local headDamage = round(mul * round(headMul * baseDamage)) | ||
local legMul = args.leg or 0.8 | local legMul = args.leg or 0.8 | ||
local table = mw.html.create('table') | local table = mw.html.create('table') | ||
:addClass('wikitable') | :addClass('wikitable') | ||
renderHeader(table) | renderHeader(table, mul) | ||
renderRow(table, "頭 (x" .. headMul .. ")", headDamage, 4) | renderRow(table, "頭 (x" .. headMul .. ")", headDamage, 4) | ||
renderRow( | renderRow( | ||
77行目: | 86行目: | ||
'<span style="color:#B237C8">Lv.3</span>/<span style="color:#CEAD21">4</span>', | '<span style="color:#B237C8">Lv.3</span>/<span style="color:#CEAD21">4</span>', | ||
round(0.75 * headDamage)) | round(0.75 * headDamage)) | ||
renderRow(table, "胴", | if mul > 1 then | ||
renderRow(table, "胴・脚", round(mul * baseDamage), 1) | |||
else | |||
renderRow(table, "胴", round(mul * baseDamage), 1) | |||
renderRow(table, "脚 (x" .. legMul .. ")", round(mul * round(legMul * baseDamage)), 1) | |||
end | |||
return table | return table | ||
end | end |
2021年1月20日 (水) 16:28時点における版
このモジュールについての説明文ページを モジュール:DamageTable/doc に作成できます
local p = {} local function round(num) return math.floor(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 style="color:#A8A8A8">150<small> HP</small></span>') row:tag('th'):wikitext('<span style="color:#51A8D6">175<small> HP</small></span>') row:tag('th'):wikitext('<span style="color:#B237C8">200<small> HP</small></span>') row:tag('th'):wikitext('<span style="color:#FF4E1D">225<small> HP</small></span>') end local function renderRow(table, name, damage, rowspan) rowspan = rowspan 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 renderTable(args) local mul = args.mul or 1 local baseDamage = args.damage or 20 local headMul = args.head or 2 local headDamage = round(mul * 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 .. ")", headDamage, 4) renderRow( table, '<span style="color:#A8A8A8">Lv.1</span>', round(0.9 * headDamage)) renderRow( table, '<span style="color:#51A8D6">Lv.2</span>', round(0.8 * headDamage)) renderRow( table, '<span style="color:#B237C8">Lv.3</span>/<span style="color:#CEAD21">4</span>', round(0.75 * headDamage)) if mul > 1 then renderRow(table, "胴・脚", round(mul * baseDamage), 1) else renderRow(table, "胴", round(mul * baseDamage), 1) renderRow(table, "脚 (x" .. legMul .. ")", round(mul * round(legMul * baseDamage)), 1) end return table end function p._main(args) return tostring(renderTable(args)) end function p.main(frame) return p._main({}) end return p