Module:GetRandomCreature: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
m (Undo revision 2983 by Teamtoto (talk))
mNo edit summary
 
(42 intermediate revisions by the same user not shown)
Line 2: Line 2:
local cargo = mw.ext.cargo
local cargo = mw.ext.cargo


function p.decode(frame)
function p.a(seed)
local subtype = string.sub(frame.args[1],0,1)
  math.randomseed(tonumber(seed))
local stats = string.sub(frame.args[1],2,8)
  local count = cargo.query('Characters=C, GeneralData=GD', 'TRIM(COUNT(C._pageName))=Number', {join='C.ObjectID=GD.ObjectID', where='C._pageNamespace="0" AND (NOT GD.ParentObject WITHIN "Wall" AND NOT GD.PlainName LIKE "* door")'})[1]['Number']
local statsstring = "U"
  local offsetin = math.random(0 , tonumber(count)-2)
local subtypetable = {['A'] = "Truekin", ['B'] = "Mutant"}
  local tables = 'Characters=C, GeneralData=GD'
local statstable = {
  local fields = 'GD.PlainName=Name, GD._pageName=Page'
['A'] = "6",
  local args ={join='C._pageName=GD._pageName', where='GD._pageNamespace="0" AND (NOT GD.ParentObject WITHIN "Wall" AND NOT  GD.PlainName LIKE "* door")', offset=offsetin,limit = 1}
['B'] = "7",
  local result = cargo.query(tables, fields, args)
['C'] = "8",
  if not next(result) then
['D'] = "9",
    error('?????')
['E'] = "10",
  end
['F'] = "11",
  return '[[' .. result[1]['Page'] .. '|'.. result[1]['Name'] .. ']]'
['G'] = "12",
['H'] = "13",
['I'] = "14",
['J'] = "15",
['K'] = "16",
['L'] = "17",
['M'] = "18",
['N'] = "19",
['O'] = "20",
['P'] = "21",
['Q'] = "22",
['R'] = "23",
['S'] = "24",
['T'] = "25",
['U'] = "26",
['V'] = "27"}
 
for i=0,4,1
do
statsstring = statsstring .. " " .. statstable[string.sub(stats,i,1+i)]
end
end


return statsstring
function p.getRandomChara(frame)
  return p.a(frame.args.seed)
end
end


function p.nonxmlparse(frame)
function p.test(seed)
local a = string.gsub(frame.args[1],"(&)(%w)([^&\n]*)", function(_,color,text)
  return p.a(tostring(seed))
        local luatable = {
            ['r'] = "#a64a2e",
            ['R'] = "#d74200",
            ['g'] = "#009403",
            ['G'] = "#00c420",
            ['b'] = "#0048bd",
            ['B'] = "#0096ff",
            ['c'] = "#40a4b9",
            ['C'] = "#77bfcf",
            ['m'] = "#b154cf",
            ['M'] = "#da5bd6",
            ['w'] = "#98875f",
            ['W'] = "#cfc041",
            ['k'] = "#0f3b3a",
            ['K'] = "#155352",
            ['y'] = "#b1c9c3",
            ['Y'] = "#FFFFFF",
            ['o'] = "#f15f22",
            ['O'] = "#e99f10"
        }
 
        return "<span style=\"color: " .. luatable[color] .. ";\">"  .. text .. "</span>"
    end)
return a
end
end
function p.parse(frame)
local b = string.gsub(frame.args[1],"([{}])", "")
local b = string.gsub(b,"(~J211)", "")
local a = string.gsub(b,"(&amp;)(%w)(%^?%w?)([^&\n]*)", function(_,color,background,text)
        local luatable = {
            ['r'] = "#a64a2e",
            ['R'] = "#d74200",
            ['g'] = "#009403",
            ['G'] = "#00c420",
            ['b'] = "#0048bd",
            ['B'] = "#0096ff",
            ['c'] = "#40a4b9",
            ['C'] = "#77bfcf",
            ['m'] = "#b154cf",
            ['M'] = "#da5bd6",
            ['w'] = "#98875f",
            ['W'] = "#cfc041",
            ['k'] = "#0f3b3a",
            ['K'] = "#155352",
            ['y'] = "#b1c9c3",
            ['Y'] = "#FFFFFF",
            ['o'] = "#f15f22",
            ['O'] = "#e99f10"
        }
local bgluatable = {
            ["^r"] = "#a64a2e",
            ["^R"] = "#d74200",
            ["^g"] = "#009403",
            ["^G"] = "#00c420",
            ["^b"] = "#0048bd",
            ["^B"] = "#0096ff",
            ["^c"] = "#40a4b9",
            ["^C"] = "#77bfcf",
            ["^m"] = "#b154cf",
            ["^M"] = "#da5bd6",
            ["^w"] = "#98875f",
            ["^W"] = "#cfc041",
            ["^k"] = "#0f3b3a",
            ["^K"] = "#155352",
            ["^y"] = "#b1c9c3",
            ["^Y"] = "#FFFFFF",
            ["^o"] = "#f15f22",
            ["^O"] = "#e99f10",
        }
local c = bgluatable[background]
if (c == nil or c == '')
then
c = "transparent"
end
        return "<span style=\"color: " .. luatable[color] .. "; background: " .. c ..";\">"  .. text .. "</span>"
    end)
return a
end
return p
return p

Latest revision as of 14:42, 27 July 2023

Documentation for this module may be created at Module:GetRandomCreature/doc

local p = {}
local cargo = mw.ext.cargo

function p.a(seed)
  math.randomseed(tonumber(seed))
  local count = cargo.query('Characters=C, GeneralData=GD', 'TRIM(COUNT(C._pageName))=Number', {join='C.ObjectID=GD.ObjectID', where='C._pageNamespace="0" AND (NOT GD.ParentObject WITHIN "Wall" AND NOT GD.PlainName LIKE "* door")'})[1]['Number']
  local offsetin = math.random(0 , tonumber(count)-2)
  local tables = 'Characters=C, GeneralData=GD'
  local fields = 'GD.PlainName=Name, GD._pageName=Page'
  local args ={join='C._pageName=GD._pageName', where='GD._pageNamespace="0" AND (NOT GD.ParentObject WITHIN "Wall" AND NOT  GD.PlainName LIKE "* door")', offset=offsetin,limit = 1}
  local result = cargo.query(tables, fields, args)
  if not next(result) then
    error('?????')
  end
  return '[[' .. result[1]['Page'] .. '|'.. result[1]['Name'] .. ']]'
end

function p.getRandomChara(frame)
  return p.a(frame.args.seed)
end

function p.test(seed)
  return p.a(tostring(seed))
end
return p