Module:Creature Mutation Query: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(4 intermediate revisions by the same user not shown)
Line 22: 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.
-- Try to find a mutation with this name, if not, just return the name unlinked.
result = util_cargo.queryAndCast(query)[1]
    result = util_cargo.queryAndCast(query)
local parentheses = ""
    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;">&nbsp;(</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


if not next(result) then
 
else
function format(page, name, cost, type, level, ego)
local cost, type = tonumber(util_cargo.queryAndCast(result["Cost"])), result[1]["Type"]
     local isDefect = false
     local isDefect = false
     local isMental = false
     local isMental = false
Line 42: Line 78:
     end
     end
     local modifier = math.floor((ego-16)/2)
     local modifier = math.floor((ego-16)/2)
 
    local parentheses = ""
   if isDefect then
   if isDefect then
    parentheses ='<b><span style="color:#b1c9c3;">&nbsp;(</span><span style="color:#a64a2e;">D</span><span style="color:#b1c9c3;">)</b>'
      formattedLevel ='a64a2e;">D'
   elseif (cost == nil or cost > 1) then
   elseif (cost == nil or cost > 1) then
       parentheses = '<b><span style="color:#b1c9c3;">&nbsp;(<span style="color:#77bfcf;">' .. level .. '</span>'
       formattedLevel = '77bfcf;">' .. level
      if isMental then
        local bonus = ""
        if modifier > 0 then
        bonus = "<span style = \"color:#00c420\">+" .. tostring(modifier) .. '</span>'
        elseif modifier < 0 then
          bonus = "<span style = \"color:#d74200\">" .. tostring(modifier) .. '</span>'
        end
        parentheses = parentheses .. bonus
     
    end
  parentheses = parentheses .. ")</span></b>"
   end
   end
end
 
-- formatting
   return formatResult(page, name, formattedLevel, modifier, isMental)
local mutationString = mw.html.create('div')
mutationString
   :addClass('qud-mutation-entry')
:wikitext('[[' .. mutation .. '|'.. mutation .. parentheses .. ']]')
 
return mutationString
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;">&nbsp;(</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