Module:Creature Mutation Query: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
(12 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
local ego = 16 --[default, is 0 modifier] | local ego = 16 --[default, is 0 modifier] | ||
local level = 1 | local level = 1 | ||
local isDefect = false | |||
local isMental = false | |||
frame=mw.getCurrentFrame() | frame=mw.getCurrentFrame() | ||
Line 20: | Line 22: | ||
end | end | ||
local query = { | |||
result= doQuery(mutation) | |||
if result ~= nil then | |||
return format(result["_pageName"], mutation, result["cost"], result["type"], level, ego) | |||
else | |||
return format(mutation, mutation, nil, "", level, ego) | |||
end | |||
end | |||
function doQuery(mutation) | |||
local query = { | |||
tables = { 'Mutations' }, | tables = { 'Mutations' }, | ||
fields = {'Cost, Type'}, | fields = {'Cost, Type, _pageName'}, | ||
where = '(_pageNamespace="14" OR _pageNamespace="0") AND _pageName="' .. mutation..'"', | where = '(_pageNamespace="14" OR _pageNamespace="0") AND _pageName="' .. mutation..'"', | ||
limit= '1' | limit= '1' | ||
} | } | ||
-- Try to find a mutation with this name, if not, just return the name unlinked. | |||
result = util_cargo.queryAndCast(query) | |||
if not next(result) then | |||
return nil | |||
else return result[1] | |||
end | |||
end | |||
function formatBonus(modifier) | |||
if modifier > 0 then | |||
c = "00c420\">+" | |||
elseif modifier < 0 then | |||
c= "d74200\">" | |||
return '<span style = \"color:#"=' .. c .. tostring(modifier) .. '</span>' | |||
end | end | ||
parentheses = | end | ||
function formatResult(page, name, formattedLevel, modifier, showBonus) | |||
parentheses ='<b><span style="color:#b1c9c3;"> (</span><span style="color:#"' .. formattedLevel | |||
if showBonus then | |||
parentheses = parentheses .. formatBonus(modifier) | |||
end | end | ||
parentheses = parentheses .. '</span><span style="color:#b1c9c3;">)</span></b>' | |||
-- formatting | |||
local mutationString = mw.html.create('div') | local mutationString = mw.html.create('div') | ||
mutationString | mutationString | ||
:addClass('qud-mutation-entry') | :addClass('qud-mutation-entry') | ||
:wikitext('[[' .. | :wikitext('[[' .. name.. '|'.. page .. parentheses .. ']]') | ||
return mutationString | |||
end | |||
return | |||
function format(page, name, cost, type, level, ego) | |||
local isDefect = false | |||
local isMental = false | |||
if type ~= nil then | |||
isDefect = string.match(type,"defect") ~= nil | |||
isMental = string.match(type,"Mental") ~= nil | |||
end | |||
local modifier = math.floor((ego-16)/2) | |||
local parentheses = "" | |||
if isDefect then | |||
formattedLevel ='a64a2e;">D' | |||
elseif (cost == nil or cost > 1) then | |||
formattedLevel = '77bfcf;">' .. level | |||
end | |||
return formatResult(page, name, formattedLevel, modifier, isMental) | |||
end | end | ||
return p | return p |
Latest revision as of 01:16, 1 June 2023
local util_args = require('Module:Args Utility')
local util_cargo = require('Module:Cargo Utility')
local p = {}
function p.main()
local mutation = ""
local ego = 16 --[default, is 0 modifier]
local level = 1
local isDefect = false
local isMental = false
frame=mw.getCurrentFrame()
if frame.args ~= nil and frame.args ~= '' then
if frame.args[1] ~= nil and frame.args[1] ~= '' then
mutation = mw.text.trim(frame:preprocess(frame.args[1]))
level = tonumber(mw.text.trim(frame:preprocess(frame.args[2])))
end
if frame.args[3] ~= nil and frame.args[3] ~= '' then
ego = tonumber(mw.text.trim(frame:preprocess(frame.args[3])))
end
end
result= doQuery(mutation)
if result ~= nil then
return format(result["_pageName"], mutation, result["cost"], result["type"], level, ego)
else
return format(mutation, mutation, nil, "", level, ego)
end
end
function doQuery(mutation)
local query = {
tables = { 'Mutations' },
fields = {'Cost, Type, _pageName'},
where = '(_pageNamespace="14" OR _pageNamespace="0") AND _pageName="' .. mutation..'"',
limit= '1'
}
-- Try to find a mutation with this name, if not, just return the name unlinked.
result = util_cargo.queryAndCast(query)
if not next(result) then
return nil
else return result[1]
end
end
function formatBonus(modifier)
if modifier > 0 then
c = "00c420\">+"
elseif modifier < 0 then
c= "d74200\">"
return '<span style = \"color:#"=' .. c .. tostring(modifier) .. '</span>'
end
end
function formatResult(page, name, formattedLevel, modifier, showBonus)
parentheses ='<b><span style="color:#b1c9c3;"> (</span><span style="color:#"' .. formattedLevel
if showBonus then
parentheses = parentheses .. formatBonus(modifier)
end
parentheses = parentheses .. '</span><span style="color:#b1c9c3;">)</span></b>'
-- formatting
local mutationString = mw.html.create('div')
mutationString
:addClass('qud-mutation-entry')
:wikitext('[[' .. name.. '|'.. page .. parentheses .. ']]')
return mutationString
end
function format(page, name, cost, type, level, ego)
local isDefect = false
local isMental = false
if type ~= nil then
isDefect = string.match(type,"defect") ~= nil
isMental = string.match(type,"Mental") ~= nil
end
local modifier = math.floor((ego-16)/2)
local parentheses = ""
if isDefect then
formattedLevel ='a64a2e;">D'
elseif (cost == nil or cost > 1) then
formattedLevel = '77bfcf;">' .. level
end
return formatResult(page, name, formattedLevel, modifier, isMental)
end
return p