Differenze tra le versioni di "Modulo:Movelist/hf"

Gen 9 movelist (first attempt) *** sovrascritto il testo esistente ***
(Refactoring of ChooseColor *** sovrascritto il testo esistente ***)
(Gen 9 movelist (first attempt) *** sovrascritto il testo esistente ***)
local j = {}
 
-- stylua: ignore start
local w = require('Modulo:Wikilib')
local tab = require('Modulo:Wikilib/tables') -- luacheck: no unused
local txt = require('Modulo:Wikilib/strings') -- luacheck: no unused
local multigen = require('Modulo:Wikilib/multigen')
local mlentry = require('Modulo:Movelist/entry')
local mtdata = mw.loadData('Modulo:Machines/data')
local cc = require('Modulo:ChooseColor')
-- stylua: ignore end
 
-- Tabelle dati
 
j.strings = {
HEADERBASE = [=[
{| class="roundy text-center white-rows roundy-footer no-border-spacing" style="${bg}; padding: 0.3ex;"
|- class="${textcolor}"
! class="hidden-sm" style="padding: 0 0.7ex;" rowspan="${rs}" | Gruppo Uova
! class="roundytr" colspan="${cs}" | ]=],
HEADERTM = [=[
! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 4ex; line-height: 1em;" colspan="${cs}" | [[${genl} generazione|${genr}]]<div class="text-small">${tm}</div>
]=],
 
local cs = {}
cs.level = function(gen) return (gendata.latest + 1 - gen) * 3 end
return (gendata.latest + 1 - gen) * 3
end
cs.breed, cs.tm = cs.level, cs.level
cs.event = function() return 1 end
return 1
cs.tutor = function(gen) return gen end
end
cs.tutor = function(gen)
return gen
end
-- cs.autotm = function(gen)
-- -- TODO: compute the right colspan (it may be enough a filter with i >= gen)
-- return tabletab.fold(j.tmcellgames, 0, function(acc, gengames)
-- return acc + #gengames
-- end, ipairs)
 
local games = {}
games[2] = { {' "C'", '"cristallo'" } }
games[3] = { {' "RFVF'", '"rossofuoco'" }, {' "S'", '"smeraldo'" }, {' "XD'", '"xd'" } }
games[4] =
games[4] = {{'DP', 'diamante'}, {'Pt', 'platino'}, {'HGSS', 'heartgold'}}
{ { "DP", "diamante" }, { "Pt", "platino" }, { "HGSS", "heartgold" } }
games[5] = {{'NB', 'nero'}, {'N2B2', 'nero2'}}
games[65] = { {'XY' "NB", 'x'"nero" }, {'RΩZα' "N2B2", 'rubinoomega'"nero2" } }
games[76] = { {'SL', 'sole'}"XY", {'USUL',"x" 'ultrasole'}, {'LGPE' "RΩZα", 'lgpikachu'"rubinoomega" } }
games[7] =
games[8] = {{'SpSc', 'spada'}, {'IA', 'isolaarmatura'}, {'TC', 'landacorona'}}
{ { "SL", "sole" }, { "USUL", "ultrasole" }, { "LGPE", "lgpikachu" } }
games[8] =
{ { "SpSc", "spada" }, { "IA", "isolaarmatura" }, { "TC", "landacorona" } }
games[9] = { { "SV", "scarlatto" } }
 
-- Contiene le varie funzioni che generano le celle
 
cells.level = function(gen)
local str =
local str = '! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 4ex;" colspan="${cs}" | [[${genl} generazione|${genr}]]\n'
'! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 4ex;" colspan="${cs}" | [[${genl} generazione|${genr}]]\n'
local row = {}
for a = gen, gendata.latest do
table.insert(row, string.interp(str, {bg = c[gendata[a].region].normale,
row,
genl = gendata[a].ext, genr = gendata[a].roman,
txt.interp(str, {
cs = mlentry.maxCellsNumber[a],
textcolor bg = cc.forModBgLua(c[gendata[a].region)}))].normale,
genl = gendata[a].ext,
genr = gendata[a].roman,
cs = mlentry.maxCellsNumber[a],
textcolor = cc.forModBgLua(gendata[a].region),
})
)
end
return table.concat(row)
 
cells.tm = function(gen, tms)
local str =
local str = '! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 4ex; line-height: 1em;" colspan="${cs}" | [[${genl} generazione|${genr}]]<div class="text-small">${tm}</div>\n'
'! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 4ex; line-height: 1em;" colspan="${cs}" | [[${genl} generazione|${genr}]]<div class="text-small">${tm}</div>\n'
local row = {}
local l
for a = gen, gendata.latest do
l = tms[a] == '"NO'" and '"Ness.' or string.interp('[[${tm}|${tm}]]', {tm = tms[a]})"
table.insert(row, string or txt.interp(str"[[${tm}|${tm}]]", {bg tm = c[gendatatms[a].region].normale, })
table.insert(
genl = gendata[a].ext, genr = gendata[a].roman, tm = l,
row,
cs = mlentry.maxCellsNumber[a],
txt.interp(str, {
textcolor = cc.forModBgLua(gendata[a].region)}))
bg = c[gendata[a].region].normale,
genl = gendata[a].ext,
genr = gendata[a].roman,
tm = l,
cs = mlentry.maxCellsNumber[a],
textcolor = cc.forModBgLua(gendata[a].region),
})
)
end
return table.concat(row)
 
cells.breed = function(gen)
local str =
local str = '! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 4ex" colspan="${cs}" | [[${genl} generazione|${genr}]]\n'
'! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 4ex" colspan="${cs}" | [[${genl} generazione|${genr}]]\n'
local row = {}
for a = gen, gendata.latest do
table.insert(row, string.interp(str, {bg = c[gendata[a].region].normale,
row,
genl = gendata[a].ext, genr = gendata[a].roman,
txt.interp(str, {
cs = mlentry.maxCellsNumber[a],
textcolor bg = cc.forModBgLua(c[gendata[a].region)}))].normale,
genl = gendata[a].ext,
genr = gendata[a].roman,
cs = mlentry.maxCellsNumber[a],
textcolor = cc.forModBgLua(gendata[a].region),
})
)
end
return table.concat(row)
 
cells.tutor = function(gen, gms)
local str =
local str = '! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 6ex;" | ${game}\n'
'! class="roundytop ${textcolor}" style="background: #${bg}; min-width: 6ex;" | ${game}\n'
local row = {}
for a in ipairs(gms) do
if gms[a] == '"yes'" then
table.insert(
table.insert(row, string.interp(str, {bg = c[games[gen][a][2]].normale,
row,
game = games[gen][a][1],
txt.interp(str, {
textcolor = cc.forModBgLua(gendata[a].region)}))
bg = c[games[gen][a][2]].normale,
end
game = games[gen][a][1],
end
textcolor = cc.forModBgLua(gendata[a].region),
})
)
end
end
return table.concat(row)
end
 
j.headers = function(tipo, gen, kind)
return stringtxt.interp(j.strings.HEADERBASE, {
bg = css.horizGradLua({ type = tipo }),
textcolor = cc.forModGradBgLua(tipo),
rs = kind == '"event'" and 1 or 2,
cs = cs[kind](gen),
})
end
 
j.levelh = function(frame)
local p = w.trimAndMap(mw.clone(frame.args), string.lower)
local tipo, gen = p[1] or '"pcwiki'", tonumber(p[2]) or 0
return stringtxt.interp([=[${str}Livello
[=[${str}Livello
|-
${g}]=],
${g}]=], {str = j.headers(tipo, gen, 'level'), g = cells.level(gen)})
{ str = j.headers(tipo, gen, "level"), g = cells.level(gen) }
)
end
 
j.eventh = function(frame)
local p = w.trimAndMap(mw.clone(frame.args), string.lower)
local tipo = p[1] or '"pcwiki'"
return stringtxt.interp([=[${str}Ottenuto in
[=[${str}Ottenuto in
|-
]=],
]=], {str = j.headers(tipo, nil, 'event')})
{ str = j.headers(tipo, nil, "event") }
)
end
 
j.tmh = function(frame)
local p, tms = w.trimAndMap(mw.clone(frame.args), string.lower), {}
local tipo, gen = p[1] or '"pcwiki'", tonumber(p[2]) or 0
for a = 3, 2 + gendata.latest do
tms[a - 2] = p[a] and string.upper(p[a]) or '"No'"
end
return stringtxt.interp([=[${str}Macchina
[=[${str}Macchina
|-
${g}]=],
${g}]=], {str = j.headers(tipo, gen, 'tm'), g = cells.tm(gen, tms)})
{ str = j.headers(tipo, gen, "tm"), g = cells.tm(gen, tms) }
)
end
 
j.breedh = function(frame)
local p = w.trimAndMap(mw.clone(frame.args), string.lower)
local tipo, gen = p[1] or 'pcwiki', tonumber(p[2]) < 2 and 2 or tonumber(p[2])
p[1] or "pcwiki", tonumber(p[2]) < 2 and 2 or tonumber(p[2])
return string.interp([=[
return txt.interp(
[=[
${str}Padre
|-
${g}]=],
${g}]=], {str = j.headers(tipo, gen, 'breed'), g = cells.breed(gen)})
{ str = j.headers(tipo, gen, "breed"), g = cells.breed(gen) }
)
end
 
 
j.tutorh = function(frame)
local p = w.trimAndMap(mw.clone(frame.args), string.lower)
local tipo = p[1] or '"pcwiki'"
return stringtxt.interp([=[${str}Gioco
[=[${str}Gioco
|-
]=],
]=], {str = j.headers(tipo, tonumber(p[2]) or 0, 'tutor')})
{ str = j.headers(tipo, tonumber(p[2]) or 0, "tutor") }
)
end
 
 
-- Celle tutor nelle varie gen
for g = 2, 8 do
j["tutor" .. tostring(g)] = function(frame)
return cells.tutor(g, w.trimAndMap(mw.clone(frame.args), string.lower))
end
 
j["Tutor" .. tostring(g)] = j["tutor" .. tostring(g)]
end
 
 
j.shadowh = function(frame)
local p = w.trimAndMap(mw.clone(frame.args), string.lower)
local game = p[1] or '"xd'"
 
local colo = txt.interp(
local colo = string.interp('\n! class="roundytop ${textcolor}" style="background: #${bg}; width: 100px;" | [[Pokémon Colosseum|C]]\n',
'\n! class="roundytop ${textcolor}" style="background: #${bg}; width: 100px;" | [[Pokémon Colosseum|C]]\n',
{ bg = c.colo.normale, textcolor = cc.forModBgLua(c.colo.normale) })
{ bg = c.colo.normale, textcolor = cc.forModBgLua(c.colo.normale) }
return string.interp([=[${str}Livello
)
return txt.interp(
[=[${str}Livello
|-${colo}
! class="roundytop ${textcolor}" style="background: #${bg}; width: 100px;" | [[Pokémon XD: Tempesta Oscura|XD]]]=],
{
{
str = j.headers(
str = j.headers('xd', game == 'colo' and gendata.latest or gendata.latest - 1,
"xd",
'level'),
game == "colo" and gendata.latest or gendata.latest - 1,
bg = c.xd.light,
"level"
textcolor = cc.forModBgLua(c.xd.light),
colo = game == 'colo' and colo or ''),
bg = c.xd.light,
})
textcolor = cc.forModBgLua(c.xd.light),
colo = game == "colo" and colo or "",
}
)
end
 
 
local foot = function(interpData)
return stringtxt.interp([=[|-
[=[|-
! class="text-small text-left ${textcolor}" colspan="${cs}" |
* I Pokémon in '''grassetto''' sono quelli che ricevono il [[bonus di tipo]] dalla mossa.
* I Pokémon in ''corsivo'' sono quelli con evoluzioni o [[Differenze di forma|forme alternative]] che ricevono il bonus di tipo.${last}
|}]=], interpData)
interpData
)
end
 
j.footer = function(frame)
local p = w.trimAndMap(mw.clone(frame.args), string.lower)
return foot({
cs = 5 + cs.level(1),
textcolor = cc.forModGradBgLua(p[1] or '"Sconosciuto'"),
last = ''})"",
})
end
 
 
j.levelf = function(frame)
local p = w.trimAndMap(mw.clone(frame.args), string.lower)
return foot({
cs = 5 + cs.level(1),
textcolor = cc.forModGradBgLua(p[1] or '"Sconosciuto'"),
last = [=[
 
* Le mosse segnate al livello "Evo" possono essere apprese al momento dell'evoluzione.]=]}),
})
end
 
 
j.breedf = function(frame)
local p = w.trimAndMap(mw.clone(frame.args), string.lower)
return foot({
cs = 5 + cs.level(1),
textcolor = cc.forModGradBgLua(p[1] or '"Sconosciuto'"),
last = [=[
 
* Premendo su ✔ è possibile vedere i genitori da cui il Pokémon può imparare la mossa.]=]}),
})
end
 
local gen = tonumber(p[1]) or 0
local genColor = gendata[gen].region
return stringtxt.interp([=[
[=[
 
|-
! colspan="6" style="${bg}" | [[${genl} generazione|<span style="color:#${tc}">${genl} generazione</span>]]]=],
{
{
bg = css.horizGradLua({ type = genColor }),
genl = stringtxt.fu(gendata[gen].ext),
tc = c[gendata[gen].region].dark,
}
})
)
end
 
j.Div = j.div
 
 
-- ============================ Automatic tm header ===========================
j.tmcellgames = {
{ { bg = gendata[1].region, abbr = "" } }, -- 1
{ { bg = gendata[2].region, abbr = "" } }, -- 2
{ -- 3
{ bg = gendata[3].region, abbr = "RZS" },
{ bg = gendata[3].region, abbr = "RFVF" },
},
{ -- 4
{ bg = "diamante", abbr = "DPPt" },
{ bg = "heartgold", abbr = "HGSS" },
},
{ { bg = gendata[5].region, abbr = "" } }, -- 5
{ -- 6
{ bg = '"x'", abbr = '"XY'" },
{ bg = '"rubinoomega'", abbr = '"ROZA'" },
},
{
{
{ bg = '"sole'", abbr = "SLUSUL" },
{ bg = '"lgp'", abbr = "LGPE" },
}, -- 7
{
{
{ bg = '"spada'", abbr = "SpSc" },
}, -- 8
}
 
j.autotmhlua = function(move)
local tipo = multigen.getGenValue(moves[move].type)
local startgen = moves[move].gen or 1
local res = {
j.headers(tipo, startgen, '"tm'"),
' "Macchine\n|-\n'",
}
}
local link
for g = startgen, gendata.latest do
local tmkind, tmnum = tabletab.deepSearch(mtdata[g], move)
link = tmkind
and table.concat{'[[', tmkind, string.nFigures(tmnum, 2), ']]'}{
"[[",
or 'Ness.'
tmkind,
table.insert(res, string.interp(j.strings.HEADERTM, {
txt.nFigures(tmnum, 2),
bg = c[gendata[g].region].normale,
"]]",
textcolor = cc.forModBgLua(gendata[g].region),
})
genl = gendata[g].ext,
or "Ness."
genr = gendata[g].roman,
table.insert(
tm = link,
res,
cs = mlentry.maxCellsNumber[g],
txt.interp(j.strings.HEADERTM, {
}))
bg = c[gendata[g].region].normale,
end
textcolor = cc.forModBgLua(gendata[g].region),
return table.concat(res)
genl = gendata[g].ext,
genr = gendata[g].roman,
tm = link,
cs = mlentry.maxCellsNumber[g],
})
)
end
return table.concat(res)
end
 
-- name, defaults to {{BASEPAGENAME}}
j.autotmh = function(frame)
local move = frame.args[1] and stringtxt.trim(frame.args[1])
or mw.title.getCurrentTitle().text
move = mw.text.decode(move):lower()
return j.autotmhlua(move)
end
j.autoTMh, j.Autotmh = j.autotmh, j.autotmh
 
 
return j
79 548

contributi