|
|
Line 1: |
Line 1: |
| local p = {} | | local p = {} |
| local cargo = mw.ext.cargo | | local cargo = mw.ext.cargo |
|
| |
| function p.main(frame)
| |
| 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
| |
|
| |
| if seed ~= nil and seed ~= ''then
| |
| math.randomseed(seed:gsub("%w",string.byte))
| |
| end
| |
|
| |
| --[get cargo row]--
| |
| local tables= 'HeroNames'
| |
| local fields= 'Prefixes, MinPrefixAmount, MaxPrefixAmount,Infixes, MinInfixAmount,MaxInfixAmount,Postfixes ,MinPostfixAmount,MaxPostfixAmount,TitleTemplate'
| |
| local args= {
| |
| where= 'BaseType="Crab"'
| |
| }
| |
| result = cargo.query(tables,fields,args)
| |
| if not next(result) then
| |
| error('no base type of that kind found.')
| |
| end
| |
| --[get prefixes array]--
| |
| local resultstring = ''
| |
| resultstring = result[1]['Prefixes']
| |
| local prefixtable= {}
| |
| local i = 1
| |
| for j in string.gmatch(resultstring,"%s*(%w+),?%s*") do
| |
| prefixtable[i] = j
| |
| i= i+1
| |
| end
| |
| --[get infixes array]--
| |
| local resultstring = ''
| |
| resultstring = result[1]['Infixes']
| |
| local infixtable= {}
| |
| local i = 1
| |
| for j in string.gmatch(resultstring,"%s*(%w+),?%s*") do
| |
| infixtable[i] = j
| |
| i= i+1
| |
| end
| |
| --[get postfixes array]--
| |
| local resultstring = ''
| |
| resultstring = result[1]['Postfixes']
| |
| local postfixtable= {}
| |
| local i = 1
| |
| for j in string.gmatch(resultstring,"%s*(%w+),?%s*") do
| |
| postfixtable[i] = j
| |
| i= i+1
| |
| end
| |
|
| |
| --[get min/maxprefix stuff]--
| |
| minprefix=result[1]['MinPrefixAmount']
| |
| maxprefix=result[1]['MaxPrefixAmount']
| |
| for i=1,math.random(minprefix,maxprefix) do
| |
| prefixes = prefixes.. prefixtable[math.random(table.getn(prefixtable))]
| |
| end
| |
|
| |
| mininfix=result[1]['MinInfixAmount']
| |
| maxinfix=result[1]['MaxInfixAmount']
| |
| for i=1,math.random(mininfix,maxinfix) do
| |
| infixes = infixes.. infixtable[math.random(table.getn(infixtable))]
| |
| end
| |
| minpostfix=result[1]['MinPostfixAmount']
| |
| maxpostfix=result[1]['MaxPostfixAmount']
| |
| for i=1,math.random(minpostfix,maxpostfix) do
| |
| postfixes = postfixes.. postfixtable[math.random(table.getn(postfixtable))]
| |
| end
| |
|
| |
| --[title template]--
| |
| titletemplate=result[1]['TitleTemplate']
| |
|
| |
| --[name fitting]--
| |
| local heroname= ((prefixes..infixes..postfixes):gsub("^%l", string.upper))
| |
| local a = string.gsub(titletemplate,'NAME',tostring(heroname))
| |
| local b = string.gsub(a,('BASETYPE'), 'crab')
| |
|
| |
| return b
| |
| end
| |
|
| |
|
| function p.a(seed) | | function p.a(seed) |
| math.randomseed(tonumber(seed)) | | math.randomseed(tonumber(seed)) |
| local count = cargo.query('Characters=C, GeneralData=GD', 'TRIM(COUNT(C._pageName))=Number', {join='C.JoinKey=GD.JoinKey', where='C._pageNamespace="0" AND GD.Categories <> "Walls"'})[1]['Number'] | | local count = cargo.query('Characters=C, GeneralData=GD', 'TRIM(COUNT(C._pageName))=Number', {join='C.JoinKey=GD.JoinKey', where='C._pageNamespace="0" AND GD.Categories <> "Walls"'})[1]['Number'] |
| local offsetin = math.random(0 , tonumber(count)-1) | | local offsetin = math.random(0 , tonumber(count)-2) |
| local tables = 'Characters=C, GeneralData=GD' | | local tables = 'Characters=C, GeneralData=GD' |
| local fields = 'GD.PlainName=Name, GD._pageName=Page' | | local fields = 'GD.PlainName=Name, GD._pageName=Page' |