Module:NameGenerator: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
(title templates working now for real) |
||
Line 17: | Line 17: | ||
local seed = frame.args.seed | local seed = frame.args.seed | ||
local style = frame.args.style:lower() | local style = frame.args.style:lower() | ||
if seed ~= nil and seed ~= ''then | if seed ~= nil and seed ~= ''then | ||
Line 73: | Line 69: | ||
heroname = heroname .. ((prefixes..infixes..postfixes):gsub("^%l", string.upper):gsub("-$", '')) .. ' ' | heroname = heroname .. ((prefixes..infixes..postfixes):gsub("^%l", string.upper):gsub("-$", '')) .. ' ' | ||
end | end | ||
heroname = heroname:gsub(" | heroname = heroname:gsub("%s*$", '') | ||
--[title template]-- | --[title template]-- | ||
local b | |||
local templatetable = naming[style]['TitleTemplates'] | |||
if templatetable ~= nil then | |||
local titletemplate = templatetable[math.random(table.getn(templatetable))] | |||
local varstable = naming[style]['TemplateVars'] | |||
if varstable == nil then | |||
varstable = {} | |||
end | |||
varstable['%*Name%*'] = { heroname } | |||
for var, values in pairs(varstable) do | |||
titletemplate = titletemplate:gsub(var, values[math.random(table.getn(values))]) | |||
end | |||
b = titletemplate | |||
else | |||
b = heroname | |||
end | |||
return b | return b |
Revision as of 06:02, 31 May 2022
Documentation for this module may be created at Module:NameGenerator/doc
local p = {}
local cargo = mw.ext.cargo
function p.main(frame)
local naming = require'Module:Sandbox/User:Illuminatiswag/namegen/NamingTable'
local prefixes = ""
local infixes = ""
local postfixes = ""
local maxprefix
local minprefix
local maxinfix
local mininfix
local maxpostfix
local minpostfix
local titletemplate
local result = {}
local seed = frame.args.seed
local style = frame.args.style:lower()
if seed ~= nil and seed ~= ''then
math.randomseed(seed:gsub("%w",string.byte))
end
local prefixtable = naming[style]['Prefixes']
local infixtable = naming[style]['Infixes']
local postfixtable = naming[style]['Postfixes']
local hyphenationchance = naming[style]['HyphenationChance'] or 0
local twonamechance = naming[style]['TwoNameChance'] or 0
minprefix=naming[style]['MinPrefixAmount']
maxprefix=naming[style]['MaxPrefixAmount']
local namecount
if math.random(0, 100) < twonamechance then
namecount = 2
else
namecount = 1
end
local heroname = ''
for i = 1,namecount do
prefixes = ''
infixes = ''
postfixes = ''
--[get min/maxprefix stuff]--
for i=1,math.random(minprefix,maxprefix) do
prefixes = prefixes.. prefixtable[math.random(table.getn(prefixtable))]
if math.random(0, 100) < hyphenationchance then
prefixes = prefixes .. '-'
end
end
mininfix=naming[style]['MinInfixAmount']
maxinfix=naming[style]['MaxInfixAmount']
for i=1,math.random(mininfix,maxinfix) do
infixes = infixes.. infixtable[math.random(table.getn(infixtable))]
if math.random(0, 100) < hyphenationchance then
infixes = infixes .. '-'
end
end
minpostfix=naming[style]['MinPostfixAmount']
maxpostfix=naming[style]['MaxPostfixAmount']
for i=1,math.random(minpostfix,maxpostfix) do
postfixes = postfixes.. postfixtable[math.random(table.getn(postfixtable))]
if math.random(0, 100) < hyphenationchance then
postfixes = postfixes .. '-'
end
end
--[name fitting]--
heroname = heroname .. ((prefixes..infixes..postfixes):gsub("^%l", string.upper):gsub("-$", '')) .. ' '
end
heroname = heroname:gsub("%s*$", '')
--[title template]--
local b
local templatetable = naming[style]['TitleTemplates']
if templatetable ~= nil then
local titletemplate = templatetable[math.random(table.getn(templatetable))]
local varstable = naming[style]['TemplateVars']
if varstable == nil then
varstable = {}
end
varstable['%*Name%*'] = { heroname }
for var, values in pairs(varstable) do
titletemplate = titletemplate:gsub(var, values[math.random(table.getn(values))])
end
b = titletemplate
else
b = heroname
end
return b
end
return p