{{#invoke:Sandbox/Gallium/FGO|classTitle|Rider|40}}
Rider
骑兵
{{#invoke:FGOClass|classTitle|Rider|40}}
Rider
骑兵
{{#invoke:Sandbox/Gallium/FGO|classTitle|Rider|40|}}
Rider
骑兵
{{#invoke:Sandbox/Gallium/FGO|classTitle|Rider|40|Saber}}
Rider
骑兵
{{#invoke:Sandbox/Gallium/FGO|classTitle|Rider|40|False}}
Rider
骑兵
{{#invoke:Sandbox/Gallium/FGO|classTitle|Rider|40|link=False}}
Rider
骑兵
-- Originally designed and coded by Maya (U:MJH)
local getArgs = require("Module:Arguments").getArgs
local FGOData = require("Module:FGOData")
local generateTabs = function (args)
local retstr = '<div class="Tabs" data-label-side="top" style="width:220px;margin:auto" data-label-padding="2px" data-text-padding="0px 0px">'
for i = 1, #(args['卡背args'].labels) do
retstr = retstr .. '<div class="Tab"><div class="TabLabelText">' .. args['卡背args'].labels[i] ..
[=[</div><div class="TabContentText">[[File:]=] .. args['卡背args'].filenames[i] .. [=[.png|185px]]</div></div>]=]
end
retstr = retstr .. '</div>'
return retstr
end
local fillDefaultAndConstructArgs = function (args)
local i = 1
args['卡背args'] = { labels = {} , filenames = {} }
while i <= 3 or args['卡背名称' .. i] do
args['卡背args'].labels[i] = args['卡背名称' .. i] or FGOData.classCardTabTitles[-1][i]
args['卡背args'].filenames[i] = args['卡背文件名' .. i] or
((args['卡背立绘' .. i] or args['卡背'] or 'Shielder') ..
(args['卡背名称' .. i] or FGOData.classCardTabTitles[-1][i]))
i = i + 1
end
args['伤害系数'] = args['伤害系数'] or FGOData.classAtkCoeff[-1]
args['暴击星掉落率'] = args['暴击星掉落率'] or FGOData.baseStarDropRate[-1]
args['暴击星集中度'] = args['暴击星集中度'] or FGOData.baseStarWeight[-1]
args['被即死率'] = args['被即死率'] or FGOData.baseInstakillRate[-1]
args['充能格数'] = args['充能格数'] or FGOData.baseChargeLength[-1]
args['行动次数'] = args['行动次数'] or FGOData.baseActionCount[-1]
args['行动优先度'] = args['行动优先度'] or FGOData.baseActionPriority[-1]
args['攻args'] = {}
args['防args'] = {}
for i = 1, #FGOData.classKeys do
args['攻args'][i] = args[FGOData.classNames[FGOData.classKeys[i]] .. '攻'] or
FGOData.getFromDefaultedTable2d(FGOData.classMultFromTo, nil, FGOData.classKeys[i])
args['防args'][i] = args[FGOData.classNames[FGOData.classKeys[i]] .. '防'] or
FGOData.getFromDefaultedTable2d(FGOData.classMultFromTo, FGOData.classKeys[i], nil)
end
end
local classDataTableCore = function (args)
local tabTemp = ''
if next(args['卡背args'].labels) then tabTemp = generateTabs(args) else tabTemp = '卡背暂缺' end
local mults = ''
local titletemp = ''
local atktemp = ''
local deftemp = ''
for i = 1, #FGOData.classKeys do
if i % 7 == 1 then
mults = mults .. titletemp .. atktemp .. deftemp
titletemp = [[
|-
! style="width:7%" | 职阶相性]]
atktemp = [[
|-
! 造成伤害]]
deftemp = [[
|-
! 受到伤害]]
end
titletemp = titletemp .. [=[!![[]=] .. FGOData.classLinks[FGOData.classKeys[i]] .. '|'
.. (FGOData.classNamesDisplay[FGOData.classKeys[i]] or FGOData.classNames[FGOData.classKeys[i]])
.. FGOData.getFromDefaultedTable(FGOData.classNamesInfo, FGOData.classKeys[i]) .. [=[]]]=]
atktemp = atktemp .. [[
|]] .. FGOData.getClassMultStyle(args['攻args'][i]) .. string.format('%.1f', args['攻args'][i])
deftemp = deftemp .. [[
|]] .. FGOData.getClassMultStyle(args['防args'][i]) .. string.format('%.1f', args['防args'][i])
end
local multsSpanTaken = #FGOData.classKeys % 7
if multsSpanTaken ~= 0 then
multsRestSpan = 7 - multsSpanTaken
titletemp = titletemp .. [[
| rowspan=3 colspan=]] .. multsRestSpan .. ' style="background:#CCC" |'
end
mults = mults .. titletemp .. atktemp .. deftemp
return [[<div style="max-width:100%;overflow:auto">
{| class="wikitable" style="text-align:center;background:#FFF"
|-
! rowspan=3 |]] .. (args['图标整体'] or FGOData.getClassIconCore(args['图标'], args['图标链接'], 40)) ..
'!! colspan=8 |' .. args['职阶'] .. [[
|-
| colspan=8 lang="ja" | -{]] .. args['日文名称'] .. [[}-
|-
| colspan=8 |]] .. args['中文名称'] .. [[
|-
| rowspan=15 style="min-width:230px;margin:auto;" |]] .. tabTemp ..
[[
! rowspan=3 style="min-width:70px;" | 常规数值 !! colspan=4 | 己方 !! colspan=3 | 敌方
|-
! style="min-width:100px" | 伤害系数
! style="min-width:100px" | 暴击星掉落率
! style="min-width:100px" | 暴击星集中度
! style="min-width:100px" | 被即死率
! style="min-width:100px" | 充能格数
! style="min-width:100px" | 行动次数
! style="min-width:100px" | 行动优先度
|-
| ]] .. FGOData.getClassAtkCoeffStyle(args['伤害系数']) .. string.format('%.2f', args['伤害系数']) ..
'||' .. FGOData.getBaseStarDropRateStyle(args['暴击星掉落率'] or args['掉星率']) .. (args['暴击星掉落率'] or args['掉星率']) ..
'%||' .. FGOData.getBaseStarWeightStyle(args['暴击星集中度'] or args['集星权重']) .. (args['暴击星集中度'] or args['集星权重']) ..
'||' .. FGOData.getBaseInstakillRateStyle(args['被即死率']) .. (args['被即死率']) ..
'%||' .. FGOData.getBaseChargeLengthStyle(args['充能格数']) .. (args['充能格数']) ..
'||' .. FGOData.getBaseActionCountStyle(args['行动次数']) .. (args['行动次数']) ..
'||' .. FGOData.getBaseActionPriorityStyle(args['行动优先度']) .. (args['行动优先度']) .. mults .. [[
|}
</div>]]
end
local FGOClass = {
main = function (frame)
local args = getArgs(frame)
local classIndex = FGOData.classNamesInverse[args['职阶'] or args[1]]
local argsToCore = {}
if classIndex then
argsToCore['职阶'] = FGOData.classNames[classIndex]
argsToCore['中文名称'] = FGOData.classNamesChinese[classIndex]
argsToCore['日文名称'] = FGOData.classNamesJapanese[classIndex]
argsToCore['图标整体'] = FGOData.getClassIcon(classIndex, 40)
local classCardFilenames = {}
local classCardFilenameSuffix = FGOData.getFromDefaultedTable(FGOData.classCardFilenameSuffixes, classIndex)
for i = 1, #classCardFilenameSuffix do
classCardFilenames[i] = FGOData.classNames[classIndex] .. classCardFilenameSuffix[i]
end
argsToCore['卡背args'] = {
labels = FGOData.getFromDefaultedTable(FGOData.classCardTabTitles, classIndex),
filenames = classCardFilenames
}
argsToCore['伤害系数'] = FGOData.getFromDefaultedTable(FGOData.classAtkCoeff, classIndex)
argsToCore['暴击星掉落率'] = FGOData.getFromDefaultedTable(FGOData.baseStarDropRate, classIndex)
argsToCore['暴击星集中度'] = FGOData.getFromDefaultedTable(FGOData.baseStarWeight, classIndex)
argsToCore['被即死率'] = FGOData.getFromDefaultedTable(FGOData.baseInstakillRate, classIndex)
argsToCore['充能格数'] = FGOData.getFromDefaultedTable(FGOData.baseChargeLength, classIndex)
argsToCore['行动次数'] = FGOData.getFromDefaultedTable(FGOData.baseActionCount, classIndex)
argsToCore['行动优先度'] = FGOData.getFromDefaultedTable(FGOData.baseActionPriority, classIndex)
argsToCore['攻args'] = {}
argsToCore['防args'] = {}
for i = 1, #FGOData.classKeys do
argsToCore['攻args'][i] = FGOData.getFromDefaultedTable2d(FGOData.classMultFromTo, classIndex, FGOData.classKeys[i])
argsToCore['防args'][i] = FGOData.getFromDefaultedTable2d(FGOData.classMultFromTo, FGOData.classKeys[i], classIndex)
end
else
argsToCore = args
fillDefaultAndConstructArgs(argsToCore)
end
return classDataTableCore(argsToCore)
end,
classTitle = function (frame)
local args = getArgs(frame)
local classIndexer = args[1]
local size = args[2]
local link = args[3]
if not tonumber(classIndexer) then
classIndexer = FGOData.classNamesInverse[classIndexer]
end
return FGOData.getClassTitle(classIndexer, size, link)
end
}
return FGOClass