Module:Inventory: Difference between revisions

544 bytes added ,  14:21, 3 July 2022
support population links
(Support ID Aliases in inventory)
(support population links)
Line 10: Line 10:
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
local weaponhtml


Line 16: Line 17:
local objname
local objname
local name
local name
local favilinked
local favilinkhtml
   
   
  if frame.args[1] ~= nil and frame.args[1] ~= '' then
if frame.args[1] ~= nil and frame.args[1] ~= '' then
   objname = mw.text.trim(frame.args[1])
   objname = mw.text.trim(frame.args[1])
   --return name
   --return name
  else
else
    error "There is no argument specified! [[Category:pages with inventory errors]]"
  error "There is no argument specified! [[Category:pages with inventory errors]]"
 
end
end


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'} )


if not next(result) then
if ispop ~= 'yes' then
   return '[[' .. objname.. ']][[Category:pages with inventory errors]]'
  --[logic for basic objects]--
else
  local result = cargo.query('ItemsTable=IT,GeneralData=GD,MissileWeaponData=MWD',
   name = result[1]['PlainName']
  'PlainName,Vibro,MaxPV,BasePV,Damage,PenetratingAmmo,GD.JoinKey=Page',
end
   { 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'} )


local favilinked = frame:expandTemplate{title='Favilink id', args={objname,'displayname-tooltip-override'}}
  if not next(result) then
    return '[[' .. objname.. ']][[Category:pages with inventory errors]]'
  else
    name = result[1]['PlainName']
  end


--[If damage, return weapon html that specifies damage, PV and max PV]--
  favilinked = frame:expandTemplate{title='Favilink id', args={objname,'displayname-tooltip-override'}}


local damage = result[1]['Damage']
  --[If damage, return weapon html that specifies damage, PV and max PV]--
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
  local damage = result[1]['Damage']
  if result[1]['Vibro'] == '1' then
  local piercingTemplate = ''
    pv = ''
   if result[1]['PenetratingAmmo'] ~= nil and result[1]['PenetratingAmmo'] == '1' then
   elseif result[1]['BasePV'] ~= nil then
    piercingTemplate = frame:expandTemplate{title='PV', args={'pierce'}}
    pv = result[1]['BasePV']
  else
     maxpv = result[1]['MaxPV']
     piercingTemplate = frame:expandTemplate{title='PV'}
   end
   end


   local pvstr = ''
   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
    if maxpv ~= nil and maxpv ~= '' then
    pvstr = '<span style="color:#155352;">/' .. maxpv.. '</span>'
      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
 
  --[Define html...]--
  favilinkhtml = mw.html.create('div')
              :addClass('qud-inv-favilink-wrapper')
              :wikitext(favilinked)
  if weaponhtml ~= nil then
    favilinkhtml:node(weaponhtml)
   end
   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


--[Define html...]--
else
local favilinkhtml = mw.html.create('div')  
  --[logic for population tables]--
            :addClass('qud-inv-favilink-wrapper')
  favilinkhtml = mw.html.create('div')
            :wikitext(favilinked)
              :addClass('qud-inv-favilink-wrapper')
if weaponhtml ~= nil then
              :node('div')
  favilinkhtml:node(weaponhtml)
                    :addClass('qud-inv-poptable-icon')
              :node('span')
                    :wikitext('Item from [[Population:' .. objname .. '|' .. objname .. ']]')
end
end