<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AStoreLine</id>
	<title>Module:StoreLine - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AStoreLine"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:StoreLine&amp;action=history"/>
	<updated>2026-04-30T18:54:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:StoreLine&amp;diff=34267&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;local p = {} local lang = mw.language.getContentLanguage() local var = mw.ext.VariablesLua local params = require(&#039;Module:Paramtest&#039;) local yesno = require(&#039;Module:Yesno&#039;) local currency_image = require(&quot;Module:Currency Image&quot;) local commas = require(&quot;Module:Addcommas&quot;)  local exchange = require(&#039;Module:Exchange&#039;) local find_gevalue = exchange._value local find_geprice = exchange._price  local geprices_data = mw.loadJsonData(&#039;Module:GEPrices/data.json&#039;) local var = mw.ex...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:StoreLine&amp;diff=34267&amp;oldid=prev"/>
		<updated>2024-10-16T00:06:42Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {} local lang = mw.language.getContentLanguage() local var = mw.ext.VariablesLua local params = require(&amp;#039;Module:Paramtest&amp;#039;) local yesno = require(&amp;#039;Module:Yesno&amp;#039;) local currency_image = require(&amp;quot;Module:Currency Image&amp;quot;) local commas = require(&amp;quot;Module:Addcommas&amp;quot;)  local exchange = require(&amp;#039;Module:Exchange&amp;#039;) local find_gevalue = exchange._value local find_geprice = exchange._price  local geprices_data = mw.loadJsonData(&amp;#039;Module:GEPrices/data.json&amp;#039;) local var = mw.ex...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
local var = mw.ext.VariablesLua&lt;br /&gt;
local params = require(&amp;#039;Module:Paramtest&amp;#039;)&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local currency_image = require(&amp;quot;Module:Currency Image&amp;quot;)&lt;br /&gt;
local commas = require(&amp;quot;Module:Addcommas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local exchange = require(&amp;#039;Module:Exchange&amp;#039;)&lt;br /&gt;
local find_gevalue = exchange._value&lt;br /&gt;
local find_geprice = exchange._price&lt;br /&gt;
&lt;br /&gt;
local geprices_data = mw.loadJsonData(&amp;#039;Module:GEPrices/data.json&amp;#039;)&lt;br /&gt;
local var = mw.ext.VariablesLua&lt;br /&gt;
&lt;br /&gt;
local ptitle = mw.title.getCurrentTitle()&lt;br /&gt;
local ns = ptitle.nsText&lt;br /&gt;
local title = ptitle.fullText&lt;br /&gt;
local pgTitle = ptitle.text&lt;br /&gt;
&lt;br /&gt;
local function ticktime(ticks)&lt;br /&gt;
    local ret = &amp;#039;&amp;#039;&lt;br /&gt;
    local days = math.floor(ticks/144000)&lt;br /&gt;
    local hours = math.floor(ticks%144000/6000)&lt;br /&gt;
    local minutes = math.floor(ticks%6000/100)&lt;br /&gt;
    local seconds = ticks%100*0.6&lt;br /&gt;
    if days &amp;gt; 0 then&lt;br /&gt;
        ret = ret .. commas._add(days) .. &amp;#039;d &amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if hours &amp;gt; 0 then&lt;br /&gt;
        ret = ret .. hours .. &amp;#039;h &amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if minutes &amp;gt; 0 then&lt;br /&gt;
        ret = ret .. minutes .. &amp;#039;m &amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if seconds &amp;gt; 0 then&lt;br /&gt;
        ret = ret .. seconds .. &amp;#039;s&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
&lt;br /&gt;
    -- Params and defaults&lt;br /&gt;
    local name, stock, buyvalue, sellvalue, geprice, rowShopVersion = params.defaults{&lt;br /&gt;
        {args.name or args.Name, &amp;#039;&amp;#039;},&lt;br /&gt;
        {args.stock or args.Stock, &amp;#039;&amp;#039;},&lt;br /&gt;
        {args.buy or args.Buy, &amp;#039;&amp;#039;},&lt;br /&gt;
        {args.sell or args.Sell, &amp;#039;&amp;#039;},&lt;br /&gt;
        {args.geprice or args.geprice, &amp;#039;&amp;#039;},&lt;br /&gt;
        {args.shopversion, &amp;#039;&amp;#039;}&lt;br /&gt;
    }&lt;br /&gt;
    local itemvalue = &amp;#039;&amp;#039;&lt;br /&gt;
    local gemwname = params.default_to(args.gemwname,name)&lt;br /&gt;
    local smwname = params.default_to(args.smwname,name)&lt;br /&gt;
    local displayname = params.default_to(args.displayname or args.DisplayName,name)&lt;br /&gt;
    local image = &amp;#039;File:&amp;#039; .. params.default_to(args.image or args.Image, name .. &amp;#039;.png&amp;#039;)&lt;br /&gt;
    local gemw = yesno(args.gemw or &amp;#039;yes&amp;#039;, false)&lt;br /&gt;
    local restock = params.default_to(args.restock or args.Restock,-1)&lt;br /&gt;
&lt;br /&gt;
    -- Check precached Module:GEPrices/data&lt;br /&gt;
    if gemw and geprice == &amp;#039;&amp;#039; then&lt;br /&gt;
        local cached_price = geprices_data[gemwname]&lt;br /&gt;
        if type(cached_price) == &amp;#039;number&amp;#039; and cached_price &amp;gt; 0 then&lt;br /&gt;
            geprice = cached_price&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Lookup GE price&lt;br /&gt;
    if gemw and geprice == &amp;#039;&amp;#039; then&lt;br /&gt;
        local has_geprice, geprice_check = pcall(find_geprice,gemwname)&lt;br /&gt;
        if has_geprice and geprice_check &amp;gt; -1 then&lt;br /&gt;
            geprice = geprice_check&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Lookup GE value&lt;br /&gt;
    if gemw and itemvalue == &amp;#039;&amp;#039; then&lt;br /&gt;
        local has_gevalue, gevalue = pcall(find_gevalue,gemwname)&lt;br /&gt;
        if has_gevalue and gevalue &amp;gt; -1 then&lt;br /&gt;
            itemvalue = gevalue&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Lookup SMW value&lt;br /&gt;
    if itemvalue == &amp;#039;&amp;#039;  then&lt;br /&gt;
        itemvalue = getSMWInfo(smwname) or &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Check precached Module:DropsLine/itemData - gets GE alch so inaccurate&lt;br /&gt;
    if itemvalue == &amp;#039;&amp;#039; then&lt;br /&gt;
        local droppeditem_data = mw.loadJsonData(&amp;#039;Module:DropsLine/itemData.json&amp;#039;)&lt;br /&gt;
        local cached_dropdata = droppeditem_data[name]&lt;br /&gt;
        if type(cached_dropdata) == &amp;#039;table&amp;#039; and type(cached_dropdata[2]) == &amp;#039;number&amp;#039; then&lt;br /&gt;
            itemvalue = cached_dropdata[2]/.6&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Check precached Module:GEHighAlch/data - gets GE alch so inaccurate&lt;br /&gt;
    if itemvalue == &amp;#039;&amp;#039; then&lt;br /&gt;
        local highalch_data = mw.loadJsonData(&amp;#039;Module:GEHighAlchs/data.json&amp;#039;)&lt;br /&gt;
        local cached_data = highalch_data[name]&lt;br /&gt;
        if type(cached_data) == &amp;#039;number&amp;#039; and cached_data &amp;gt; -1 then&lt;br /&gt;
            itemvalue = cached_data/.6&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local buymultiplier = var.var(&amp;#039;BuyMultiplier&amp;#039;, 1000)&lt;br /&gt;
    local sellmultiplier = var.var(&amp;#039;SellMultiplier&amp;#039;, 1000)&lt;br /&gt;
    local currency = var.var(&amp;#039;Currency&amp;#039;, &amp;#039;Coins&amp;#039;)&lt;br /&gt;
    local namenotes = var.var(&amp;#039;NameNotes&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    local delta = var.var(&amp;#039;Delta&amp;#039;, 10)&lt;br /&gt;
    local useSmw = yesno(var.var(&amp;#039;smw&amp;#039;,&amp;#039;yes&amp;#039;), true)&lt;br /&gt;
    local hideimage = yesno(var.var(&amp;#039;hideImage&amp;#039;,&amp;#039;no&amp;#039;), false)&lt;br /&gt;
    local hidege = yesno(var.var(&amp;#039;hideGE&amp;#039;,&amp;#039;no&amp;#039;), false)&lt;br /&gt;
    local hidesell = yesno(var.var(&amp;#039;hideSell&amp;#039;,&amp;#039;no&amp;#039;), false)&lt;br /&gt;
    local hidebuy = yesno(var.var(&amp;#039;hideBuy&amp;#039;,&amp;#039;no&amp;#039;), false)&lt;br /&gt;
    local hidestock = yesno(var.var(&amp;#039;hideStock&amp;#039;,&amp;#039;no&amp;#039;), false)&lt;br /&gt;
    local hiderestock = yesno(var.var(&amp;#039;hideRestock&amp;#039;,&amp;#039;no&amp;#039;), false)&lt;br /&gt;
    local tableShopVersion = var.var(&amp;#039;ShopVersion&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    buyvalue = commas._strip(buyvalue)&lt;br /&gt;
    sellvalue = commas._strip(sellvalue)&lt;br /&gt;
    local buy_smw = tonumber(buyvalue)&lt;br /&gt;
    local sell_smw = tonumber(sellvalue) or 1e10&lt;br /&gt;
    local ge_sort = tonumber(geprice)&lt;br /&gt;
    local buyCurrency = &amp;#039;&amp;#039;&lt;br /&gt;
    local sellCurrency = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    if buyvalue ~= &amp;#039;N/A&amp;#039; then&lt;br /&gt;
        if buyvalue == &amp;#039;&amp;#039; and itemvalue ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            buyvalue = math.floor(math.max(itemvalue*buymultiplier/1000,itemvalue*0.1))&lt;br /&gt;
            buy_smw = buyvalue&lt;br /&gt;
        end&lt;br /&gt;
        buyvalue = showCurrencyAmount(currency, buyvalue)&lt;br /&gt;
    end&lt;br /&gt;
    if sellvalue ~= &amp;#039;N/A&amp;#039; then&lt;br /&gt;
        if sellvalue == &amp;#039;&amp;#039; and itemvalue ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            sellvalue = math.floor(math.max(itemvalue*sellmultiplier/1000,1))&lt;br /&gt;
            sell_smw = sellvalue&lt;br /&gt;
        end&lt;br /&gt;
        sellvalue = showCurrencyAmount(currency, sellvalue)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if gemw and tonumber(geprice) ~= nil then&lt;br /&gt;
        geprice = showCurrencyAmount(&amp;#039;coins&amp;#039;, geprice)&lt;br /&gt;
    else&lt;br /&gt;
        ge_sort = 0&lt;br /&gt;
        geprice = &amp;#039;Not sold&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if stock==&amp;#039;inf&amp;#039; then stock=&amp;#039;∞&amp;#039; end --inf is easier to type&lt;br /&gt;
    if stock==&amp;#039;∞&amp;#039; then restock=&amp;#039;N/A&amp;#039; end --self-documenting code&lt;br /&gt;
&lt;br /&gt;
    local ret = mw.html.create(&amp;#039;tr&amp;#039;):css(&amp;#039;text-align&amp;#039;,&amp;#039;center&amp;#039;)&lt;br /&gt;
    if not hideimage then&lt;br /&gt;
        ret:tag(&amp;#039;td&amp;#039;):wikitext(mw.ustring.format(&amp;#039;[[%s|link=%s]]&amp;#039;, image, name))&lt;br /&gt;
    end&lt;br /&gt;
    -- no hideXXX parameter for the column that lists the actual items.&lt;br /&gt;
    ret:tag(&amp;#039;td&amp;#039;):css(&amp;#039;text-align&amp;#039;,&amp;#039;left&amp;#039;):wikitext(mw.ustring.format(&amp;#039;[[%s|%s]]&amp;#039;, name, displayname))&lt;br /&gt;
    if not hidestock then&lt;br /&gt;
        if stock==&amp;#039;N/A&amp;#039; then&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, 0):attr(&amp;#039;class&amp;#039;,&amp;#039;table-na&amp;#039;):wikitext(&amp;#039;&amp;lt;small&amp;gt;N/A&amp;lt;/small&amp;gt;&amp;#039;):done()&lt;br /&gt;
        elseif stock==&amp;#039;∞&amp;#039; then&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;&amp;lt;span style=&amp;quot;font-size:120%;&amp;quot;&amp;gt;∞&amp;lt;/span&amp;gt;&amp;#039;):done()&lt;br /&gt;
        else&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
                :wikitext(stock)&lt;br /&gt;
            :done()&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if not hiderestock then&lt;br /&gt;
        if restock==&amp;#039;N/A&amp;#039; or stock==&amp;#039;N/A&amp;#039; or stock==&amp;#039;∞&amp;#039; then&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, 0):attr(&amp;#039;class&amp;#039;,&amp;#039;table-na&amp;#039;):wikitext(&amp;#039;&amp;lt;small&amp;gt;N/A&amp;lt;/small&amp;gt;&amp;#039;):done()&lt;br /&gt;
        elseif restock == -1 then&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, -1):wikitext(&amp;#039;&amp;lt;small&amp;gt;unknown&amp;lt;/small&amp;gt;[[Category:Needs restock time]]&amp;#039;):done()&lt;br /&gt;
        else&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, restock)&lt;br /&gt;
                :wikitext(ticktime(tonumber(restock) or 0) .. &amp;#039; (&amp;#039; .. commas._add(restock) .. &amp;#039;t)&amp;#039;)&lt;br /&gt;
            :done()&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        restock=&amp;#039;N/A&amp;#039; -- Set restock to N/A if hideRestock is set to true in the header&lt;br /&gt;
    end&lt;br /&gt;
    if not hidesell then&lt;br /&gt;
        if sellvalue == &amp;#039;N/A&amp;#039; then&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, 0):attr(&amp;#039;class&amp;#039;,&amp;#039;table-na&amp;#039;):wikitext(&amp;#039;&amp;lt;small&amp;gt;N/A&amp;lt;/small&amp;gt;&amp;#039;):done()&lt;br /&gt;
        elseif sell_smw == 0 then&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
                :attr(&amp;#039;data-sort-value&amp;#039;, 0)&lt;br /&gt;
                :wikitext(&amp;#039;&amp;lt;small&amp;gt;Free&amp;lt;/small&amp;gt;&amp;#039;)&lt;br /&gt;
            :done()&lt;br /&gt;
        else&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
                :attr(&amp;#039;data-sort-value&amp;#039;, sell_smw)&lt;br /&gt;
                :wikitext(sellvalue)&lt;br /&gt;
            :done()&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if not hidebuy then&lt;br /&gt;
        if buyvalue==&amp;#039;N/A&amp;#039; then&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, 0):attr(&amp;#039;class&amp;#039;,&amp;#039;table-na&amp;#039;):wikitext(&amp;#039;&amp;lt;small&amp;gt;N/A&amp;lt;/small&amp;gt;&amp;#039;):done()&lt;br /&gt;
        else&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
                    :attr(&amp;#039;data-sort-value&amp;#039;, buy_smw or 0)&lt;br /&gt;
                    :wikitext(buyvalue)&lt;br /&gt;
               :done()&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if not hidege then&lt;br /&gt;
        ret:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
                :attr(&amp;#039;data-sort-value&amp;#039;, ge_sort)&lt;br /&gt;
                :wikitext(geprice)&lt;br /&gt;
            :done()&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local i = 1&lt;br /&gt;
    while args[&amp;#039;column&amp;#039; .. i] do&lt;br /&gt;
        if args[&amp;#039;column&amp;#039; .. i]==&amp;#039;N/A&amp;#039; then&lt;br /&gt;
            ret:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;data-sort-value&amp;#039;, 0):attr(&amp;#039;class&amp;#039;,&amp;#039;table-na&amp;#039;):wikitext(&amp;#039;&amp;lt;small&amp;gt;N/A&amp;lt;/small&amp;gt;&amp;#039;):done()&lt;br /&gt;
        else&lt;br /&gt;
        ret:tag(&amp;#039;td&amp;#039;):wikitext(args[&amp;#039;column&amp;#039; .. i]):done()&lt;br /&gt;
        end&lt;br /&gt;
        i = i+1&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local onMain = ns == &amp;#039;&amp;#039; or ns == &amp;#039;RuneScape&amp;#039;&lt;br /&gt;
    local unrecognizedShopVersionCategory = &amp;#039;&amp;#039;&lt;br /&gt;
    if onMain and useSmw then&lt;br /&gt;
&lt;br /&gt;
        local smw = {}&lt;br /&gt;
        local smw_sub = {}&lt;br /&gt;
        local source = title&lt;br /&gt;
&lt;br /&gt;
        local subobjectCount = 1&lt;br /&gt;
        if var.varexists(&amp;#039;SoldItemCount&amp;#039;) then&lt;br /&gt;
            subobjectCount = var.var(&amp;#039;SoldItemCount&amp;#039;, 1)&lt;br /&gt;
            subobjectCount = subobjectCount + 1&lt;br /&gt;
            var.vardefine(&amp;#039;SoldItemCount&amp;#039;, subobjectCount)&lt;br /&gt;
        else&lt;br /&gt;
            var.vardefine(&amp;#039;SoldItemCount&amp;#039;, 1)&lt;br /&gt;
        end&lt;br /&gt;
        local subobjectName = &amp;#039;SOLDITEM_&amp;#039;..subobjectCount..&amp;#039;_&amp;#039;..smwname&lt;br /&gt;
&lt;br /&gt;
        -- shop versions&lt;br /&gt;
        local shopVersionKeys = &amp;#039;DEFAULT&amp;#039;&lt;br /&gt;
        if params.has_content(tableShopVersion) then&lt;br /&gt;
            -- versions applied to the entire table&lt;br /&gt;
           shopVersionKeys = tableShopVersion&lt;br /&gt;
        end&lt;br /&gt;
        if params.has_content(rowShopVersion) then&lt;br /&gt;
            -- versions applied to this row&lt;br /&gt;
            shopVersionKeys = rowShopVersion&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local shopVersions = {}&lt;br /&gt;
        local membersValues = {}&lt;br /&gt;
        local locationsValues = {}&lt;br /&gt;
        for shopVersion in string.gmatch(shopVersionKeys, &amp;#039; *([^,]+) *&amp;#039;) do&lt;br /&gt;
            table.insert(shopVersions, shopVersion)&lt;br /&gt;
&lt;br /&gt;
            local membersVar = string.format(&amp;quot;ShopInfo_members_%s&amp;quot;, shopVersion)&lt;br /&gt;
            local locationsVar = string.format(&amp;quot;ShopInfo_location_%s&amp;quot;, shopVersion)&lt;br /&gt;
            if (not var.varexists(membersVar) or not var.varexists(locationsVar)) and shopVersion ~= &amp;#039;DEFAULT&amp;#039; then&lt;br /&gt;
                unrecognizedShopVersionCategory = unrecognizedShopVersionCategory..&amp;#039;[[Category:Uses unrecognized shop version]]&amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
            local curMembersValues = var.var(membersVar)&lt;br /&gt;
            local curLocationsValues = var.var(locationsVar)&lt;br /&gt;
            table.insert(membersValues, curMembersValues)&lt;br /&gt;
            table.insert(locationsValues, curLocationsValues)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if #shopVersions == 1 then&lt;br /&gt;
            membersValues = membersValues[1]&lt;br /&gt;
            locationsValues = locationsValues[1]&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local tableWideMembersOverride = var.var(&amp;#039;StoreTable_MembersOverride&amp;#039;)&lt;br /&gt;
        local tableWideLocationOverride = var.var(&amp;#039;StoreTable_LocationOverride&amp;#039;)&lt;br /&gt;
        if tableWideMembersOverride ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            membersValues = tableWideMembersOverride&lt;br /&gt;
        end&lt;br /&gt;
        if tableWideLocationOverride ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            locationsValues = tableWideLocationOverride&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local rowWideMembersOverride = args.members or &amp;#039;&amp;#039;&lt;br /&gt;
        local rowWideLocationsOverride = args.location or &amp;#039;&amp;#039;&lt;br /&gt;
        if rowWideMembersOverride ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            membersValues = rowWideMembersOverride&lt;br /&gt;
        end&lt;br /&gt;
        if rowWideLocationsOverride ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            locationsValues = rowWideLocationsOverride&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local smw_json = {&lt;br /&gt;
            [&amp;#039;Sold by&amp;#039;] = source,&lt;br /&gt;
            [&amp;#039;Sold item image&amp;#039;] = image,&lt;br /&gt;
            [&amp;#039;Sold item&amp;#039;] = name,&lt;br /&gt;
            [&amp;#039;Display name&amp;#039;] = displayname,&lt;br /&gt;
            [&amp;#039;Store stock&amp;#039;] = stock,&lt;br /&gt;
            [&amp;#039;Restock time&amp;#039;] = restock,&lt;br /&gt;
            [&amp;#039;Store sell price&amp;#039;] = sell_smw,&lt;br /&gt;
            [&amp;#039;Store buy price&amp;#039;] = buy_smw or &amp;#039;N/A&amp;#039;,&lt;br /&gt;
            [&amp;#039;Store currency&amp;#039;] = currency,&lt;br /&gt;
            [&amp;#039;Store notes&amp;#039;] = namenotes,&lt;br /&gt;
            [&amp;#039;Store delta&amp;#039;] = delta,&lt;br /&gt;
            [&amp;#039;Members&amp;#039;] = membersValues,&lt;br /&gt;
            [&amp;#039;Location&amp;#039;] = locationsValues,&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if shopVersionKeys ~= &amp;#039;DEFAULT&amp;#039; then&lt;br /&gt;
            smw_json[&amp;#039;Shop version&amp;#039;] = shopVersions&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        smw[&amp;#039;Sells item&amp;#039;] = name&lt;br /&gt;
        smw_sub[&amp;#039;Sold by&amp;#039;] = source&lt;br /&gt;
        smw_sub[&amp;#039;Sold item image&amp;#039;] = image&lt;br /&gt;
        smw_sub[&amp;#039;Sold item&amp;#039;] = name&lt;br /&gt;
        smw_sub[&amp;#039;Sold item text&amp;#039;] = name&lt;br /&gt;
        smw_sub[&amp;#039;Store stock&amp;#039;] = stock&lt;br /&gt;
        smw_sub[&amp;#039;Restock time&amp;#039;] = restock&lt;br /&gt;
        smw_sub[&amp;#039;Store sell price&amp;#039;] = sell_smw --type = number for sorting purposes&lt;br /&gt;
        smw_sub[&amp;#039;Store buy price&amp;#039;] = buy_smw or &amp;#039;N/A&amp;#039;&lt;br /&gt;
        smw_sub[&amp;#039;Store currency&amp;#039;] = currency&lt;br /&gt;
        smw_sub[&amp;#039;Store notes&amp;#039;] = namenotes&lt;br /&gt;
        smw_sub[&amp;#039;Store delta&amp;#039;] = delta&lt;br /&gt;
        smw_sub[&amp;#039;Sold item JSON&amp;#039;] = mw.text.jsonEncode(smw_json)&lt;br /&gt;
        mw.smw.subobject(smw_sub, subobjectName) -- add item subobject to page&lt;br /&gt;
        mw.smw.set(smw) -- add data to page&lt;br /&gt;
    end&lt;br /&gt;
    return tostring(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local smwData = nil&lt;br /&gt;
function getSMWInfo(item)&lt;br /&gt;
    if smwData ~= nil then&lt;br /&gt;
        return smwData&lt;br /&gt;
    end&lt;br /&gt;
    local smw = mw.smw.ask({&lt;br /&gt;
        &amp;#039;[[&amp;#039;..item..&amp;#039;]]&amp;#039;,&lt;br /&gt;
        &amp;#039;?Value&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
    if smw and smw[1] then&lt;br /&gt;
        smwData = smw[1][&amp;#039;Value&amp;#039;]&lt;br /&gt;
    else&lt;br /&gt;
        smwData = &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    return smwData&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function showCurrencyAmount(currency, amount)&lt;br /&gt;
    local image = currency and currency_image(currency, amount) or &amp;#039;&amp;#039;&lt;br /&gt;
    if image ~= &amp;#039;&amp;#039; and currency and tonumber(amount) then&lt;br /&gt;
        return string.format(&amp;#039;[[File:%s|link=%s]] %s&amp;#039;, image, currency, commas._add(amount))&lt;br /&gt;
    else&lt;br /&gt;
        return amount&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>