Module:Inventory: Difference between revisions
Jump to navigation
Jump to search
(Created page with "local p = {} local cargo= mw.ext.cargo local htmlparse = require'Module:HTMLParse' local colorparse = require'Module:ColorParse' local favilink = require'Module:Favilink' fun...") |
mNo edit summary |
||
(30 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local cargo= mw.ext.cargo | local cargo= mw.ext.cargo | ||
local favilink = require'Module:Favilink' | local favilink = require'Module:Favilink' | ||
function p.main(frame) | function p.main(frame) | ||
local frame = mw.getCurrentFrame() | |||
local pv = '' | local pv = '' | ||
local maxpv = '' | local maxpv = '' | ||
local quantity = frame.args[2] or '1' | local quantity = frame.args[2] or '1' | ||
local chance = frame.args[4] or '100' | local chance = frame.args[4] or '100' | ||
local ispop = frame.args[5] or 'no' | |||
local weaponhtml | |||
--[Getting query results...] | --[Getting query results...] | ||
local objname | |||
local name | local name | ||
local favilinked | |||
local favilinkhtml | |||
if frame.args[1] ~= nil and frame.args[1] ~= '' then | |||
objname = mw.text.trim(frame.args[1]) | |||
-- | else | ||
error "There is no argument specified! [[Category:pages with inventory errors]]" | |||
end | |||
if ispop ~= 'yes' then | |||
--[logic for basic objects]-- | |||
--[special case for random items, ex: K-Goninon]-- | |||
if objname == '$CALLBLUEPRINTMETHOD:Qud.API.EncountersAPI.GetAnItemBlueprint' then | |||
favilinkhtml = mw.html.create('div') | |||
:addClass('qud-inv-favilink-wrapper') | |||
:node(mw.html.create('div') | |||
:addClass('qud-inv-poptable-icon') | |||
:wikitext('?')) | |||
:node(mw.html.create('span') | |||
:wikitext('Any random item')) | |||
--[Otherwise, define typical favilink...]-- | |||
else | else | ||
favilinked = frame:expandTemplate{title='Favilink id', args={objname,'displayname-tooltip-override'}} | |||
favilinkhtml = mw.html.create('div') | |||
:addClass('qud-inv-favilink-wrapper') | |||
:wikitext(favilinked) | |||
--[If it can be found in the items or missle weapon table, define weapon html]-- | |||
local result = cargo.query('ItemsTable=IT,GeneralData=GD,MissileWeaponData=MWD', | |||
'PlainName,Vibro,MaxPV,BasePV,Damage,PenetratingAmmo,GD.JoinKey=Page', | |||
{ where='(GD._pageNamespace="0" OR GD._pageNamespace="10002") AND (GD.ObjectID="' .. objname .. '" OR GD.IDAliases HOLDS "' .. objname .. '")', | |||
default='0', | |||
limit='1', | |||
join='GD.JoinKey=IT.JoinKey,GD.JoinKey=MWD.JoinKey'} ) | |||
--[Exit if not found, it's an item that doesn't have combat data and only needs favilink and quantity] | |||
if next(result) ~= nil then | |||
--[If damage, return weapon html that specifies damage, PV and max PV]-- | |||
local result = | local damage = result[1]['Damage'] | ||
' | local piercingTemplate = '' | ||
if result[1]['PenetratingAmmo'] ~= nil and result[1]['PenetratingAmmo'] == '1' then | |||
piercingTemplate = frame:expandTemplate{title='PV', args={'pierce'}} | |||
else | |||
piercingTemplate = frame:expandTemplate{title='PV'} | |||
end | |||
if | if damage ~= nil and damage ~= '' then | ||
if result[1]['Vibro'] == '1' then | |||
pv = '≈' | |||
elseif result[1]['BasePV'] ~= nil then | |||
end | pv = result[1]['BasePV'] | ||
maxpv = result[1]['MaxPV'] | |||
end | |||
local pvstr = '' | |||
local | |||
if maxpv ~= nil and maxpv ~= '' then | |||
-- | pvstr = '<span style="color:#155352;">/' .. maxpv.. '</span>' | ||
end | |||
--[Define weaponhtml] | |||
weaponhtml = mw.html.create('span') | |||
:addClass('qud-inline-weap-stats') | |||
:node(mw.html.create('span') | |||
:addClass('qud-inline-damage') | |||
:wikitext(frame:expandTemplate{title='Heart'} .. '<span class="qud-inline-damage">' .. | |||
damage .. '</span> '.. piercingTemplate .. | |||
'<span class="qud-inline-pv">' .. pv ..'</span>' .. pvstr) ) | |||
end | |||
if | if weaponhtml ~= nil then | ||
favilinkhtml:node(weaponhtml) | |||
end | |||
end | |||
end | |||
else | |||
--[logic for population tables]-- | |||
local descprefix = 'Item from ' | |||
if quantity == '*' then | |||
descprefix = 'Items from ' | |||
end | |||
wikipagename = string.gsub(string.gsub(objname, '{', '*'), '}', '*') | |||
favilinkhtml = mw.html.create('div') | |||
:addClass('qud-inv-favilink-wrapper') | |||
:node(mw.html.create('div') | |||
:addClass('qud-inv-poptable-icon') | |||
:wikitext('?')) | |||
:node(mw.html.create('span') | |||
:wikitext(descprefix .. '[[Population:' .. wikipagename .. '|' .. objname .. ']]')) | |||
end | end | ||
local | local quantitystr = '*' | ||
if quantity ~= '*' then | |||
quantitystr = 'x' .. quantity | |||
end | |||
local inventoryhtml = mw.html.create('div') | local inventoryhtml = mw.html.create('div') | ||
inventoryhtml | inventoryhtml | ||
:addClass('qud-inventory-item') | :addClass('qud-inventory-item') | ||
:node( | :node(favilinkhtml) | ||
:node(mw.html.create('span') | :node(mw.html.create('span') | ||
:addClass('qud-item-qty') | :addClass('qud-item-qty') | ||
:wikitext( | :wikitext(quantitystr) | ||
:node(mw.html.create('span') | :node(mw.html.create('span') | ||
:addClass('qud-item-chance chance-' .. chance) | :addClass('qud-item-chance chance-' .. chance) | ||
:wikitext(chance .. '%'))) | :wikitext('(' .. chance .. '%)'))) | ||
Latest revision as of 01:01, 27 January 2023
local p = {}
local cargo= mw.ext.cargo
local favilink = require'Module:Favilink'
function p.main(frame)
local frame = mw.getCurrentFrame()
local pv = ''
local maxpv = ''
local quantity = frame.args[2] or '1'
local chance = frame.args[4] or '100'
local ispop = frame.args[5] or 'no'
local weaponhtml
--[Getting query results...]
local objname
local name
local favilinked
local favilinkhtml
if frame.args[1] ~= nil and frame.args[1] ~= '' then
objname = mw.text.trim(frame.args[1])
else
error "There is no argument specified! [[Category:pages with inventory errors]]"
end
if ispop ~= 'yes' then
--[logic for basic objects]--
--[special case for random items, ex: K-Goninon]--
if objname == '$CALLBLUEPRINTMETHOD:Qud.API.EncountersAPI.GetAnItemBlueprint' then
favilinkhtml = mw.html.create('div')
:addClass('qud-inv-favilink-wrapper')
:node(mw.html.create('div')
:addClass('qud-inv-poptable-icon')
:wikitext('?'))
:node(mw.html.create('span')
:wikitext('Any random item'))
--[Otherwise, define typical favilink...]--
else
favilinked = frame:expandTemplate{title='Favilink id', args={objname,'displayname-tooltip-override'}}
favilinkhtml = mw.html.create('div')
:addClass('qud-inv-favilink-wrapper')
:wikitext(favilinked)
--[If it can be found in the items or missle weapon table, define weapon html]--
local result = cargo.query('ItemsTable=IT,GeneralData=GD,MissileWeaponData=MWD',
'PlainName,Vibro,MaxPV,BasePV,Damage,PenetratingAmmo,GD.JoinKey=Page',
{ where='(GD._pageNamespace="0" OR GD._pageNamespace="10002") AND (GD.ObjectID="' .. objname .. '" OR GD.IDAliases HOLDS "' .. objname .. '")',
default='0',
limit='1',
join='GD.JoinKey=IT.JoinKey,GD.JoinKey=MWD.JoinKey'} )
--[Exit if not found, it's an item that doesn't have combat data and only needs favilink and quantity]
if next(result) ~= nil then
--[If damage, return weapon html that specifies damage, PV and max PV]--
local damage = result[1]['Damage']
local piercingTemplate = ''
if result[1]['PenetratingAmmo'] ~= nil and result[1]['PenetratingAmmo'] == '1' then
piercingTemplate = frame:expandTemplate{title='PV', args={'pierce'}}
else
piercingTemplate = frame:expandTemplate{title='PV'}
end
if damage ~= nil and damage ~= '' then
if result[1]['Vibro'] == '1' then
pv = '≈'
elseif result[1]['BasePV'] ~= nil then
pv = result[1]['BasePV']
maxpv = result[1]['MaxPV']
end
local pvstr = ''
if maxpv ~= nil and maxpv ~= '' then
pvstr = '<span style="color:#155352;">/' .. maxpv.. '</span>'
end
--[Define weaponhtml]
weaponhtml = mw.html.create('span')
:addClass('qud-inline-weap-stats')
:node(mw.html.create('span')
:addClass('qud-inline-damage')
:wikitext(frame:expandTemplate{title='Heart'} .. '<span class="qud-inline-damage">' ..
damage .. '</span> '.. piercingTemplate ..
'<span class="qud-inline-pv">' .. pv ..'</span>' .. pvstr) )
end
if weaponhtml ~= nil then
favilinkhtml:node(weaponhtml)
end
end
end
else
--[logic for population tables]--
local descprefix = 'Item from '
if quantity == '*' then
descprefix = 'Items from '
end
wikipagename = string.gsub(string.gsub(objname, '{', '*'), '}', '*')
favilinkhtml = mw.html.create('div')
:addClass('qud-inv-favilink-wrapper')
:node(mw.html.create('div')
:addClass('qud-inv-poptable-icon')
:wikitext('?'))
:node(mw.html.create('span')
:wikitext(descprefix .. '[[Population:' .. wikipagename .. '|' .. objname .. ']]'))
end
local quantitystr = '*'
if quantity ~= '*' then
quantitystr = 'x' .. quantity
end
local inventoryhtml = mw.html.create('div')
inventoryhtml
:addClass('qud-inventory-item')
:node(favilinkhtml)
:node(mw.html.create('span')
:addClass('qud-item-qty')
:wikitext(quantitystr)
:node(mw.html.create('span')
:addClass('qud-item-chance chance-' .. chance)
:wikitext('(' .. chance .. '%)')))
return tostring(inventoryhtml)
end
return p