Module:Sandbox

local p = {} local cargo = mw.ext.cargo

function tableEmpty(s) return next(s) == nil end

function p.HHPOutput( frame ) local function isEmpty(s) return s == nil or s == '' end

local print = '' local currency

-- Cargo query for hhp_villager (without facilities) local tables1 = 'hhp_villager' local fields1 = "hhp_villager.name=name,hhp_villager._pageTitle=pageName,hhp_villager.icon=icon" local args1 = { where = "hhp_villager.facility=0 AND (hhp_villager.unlocked_items LIKE '%\"" .. frame.args['1'] .. "\"%' OR hhp_villager.item1 = \"" .. frame.args['1'] .. "\" OR hhp_villager.item2 = \"" .. frame.args['1'] .. "\" OR hhp_villager.item3 = \"" .. frame.args['1'] .. "\")", orderBy = 'hhp_villager.name_sort', groupBy = 'hhp_villager.name_sort', limit = 500, default = '' }   local resultsHHP = cargo.query( tables1, fields1, args1 ) -- Cargo query for hhp_villager (only facilities) local tables2 = 'hhp_villager' local fields2 = "hhp_villager.name=name,hhp_villager._pageTitle=pageName" local args2 = { where = "hhp_villager.facility=1 AND hhp_villager.unlocked_items LIKE '%\"" .. frame.args['1'] .. "\"%'", orderBy = 'hhp_villager.name_sort', groupBy = 'hhp_villager.name_sort', limit = 500, default = '' }   local resultsHHP_Facility = cargo.query( tables2, fields2, args2 ) -- Cargo query for hhp_villager (required items) local tables3 = 'hhp_villager' local fields3 = "hhp_villager.name=name,hhp_villager._pageTitle=pageName,hhp_villager.icon=icon" local args3 = { where = "hhp_villager.facility=0 AND (hhp_villager.item1 = \"" .. frame.args['1'] .. "\" OR hhp_villager.item2 = \"" .. frame.args['1'] .. "\" OR hhp_villager.item3 = \"" .. frame.args['1'] .. "\")", orderBy = 'hhp_villager.name_sort', groupBy = 'hhp_villager.name_sort', limit = 500, default = '' }   local resultsHHP_Required = cargo.query( tables3, fields3, args3 ) -- Cargo query for hhp_villager (required item under category for facilities) local tables4 = 'hhp_facility_category' local fields4 = "hhp_facility_category.category=category,hhp_facility_category.room=room,hhp_facility_category._pageTitle=pageName,hhp_facility_category.facility=facility" local args4 = { where = "hhp_facility_category.items LIKE '%\"" .. frame.args['1'] .. "\"%'", orderBy = 'hhp_facility_category.facility,hhp_facility_category.room', groupBy = 'hhp_facility_category._pageTitle', limit = 500, default = '' }   local resultsHHP_Category = cargo.query( tables4, fields4, args4 ) -- Cargo query for nh_furniture (Wardell price) local tables5 = 'nh_furniture' local fields5 = "nh_furniture.buy2_price=price,nh_furniture.availability2=availability2,nh_furniture.buy2_currency=currency" local args5 = { where = "nh_furniture._pageName = \"Item:" .. frame.args['2'] .. "\"", limit = 2000, groupBy = 'nh_furniture._pageName', default = '', }   local resultsHHP_Wardell = cargo.query( tables5, fields5, args5 )

if not tableEmpty(resultsHHP) then print = print .. "In " .. frame:preprocess('') if (not isEmpty(frame.args['hhpstatus']) and frame.args['hhpstatus']:lower == "starter") then print = print .. ", this item is available from the start for usage in house designing" if not isEmpty(frame.args['clothing']) then print = print .. " and for changing the clothes of a villager or the player" end print = print .. "."   		for r = 1, #resultsHHP do		    	if r == #resultsHHP then print = print .. 'and ' end print = print .. " " .. resultsHHP[r].name .. "" if r == #resultsHHP then print = print .. '.'		       else print = print .. ', '		       end end print = print .. " feature this item when doing their vacation home request." else print = print .. ", this item is unlocked for usage in house designing" if not isEmpty(frame.args['clothing']) then print = print .. " and for changing the clothes of a villager or the player" end print = print .. " when doing a vacation home request for " for r = 1, #resultsHHP do		   	if r == #resultsHHP and r-1 ~= 0 then print = print .. 'and ' end print = print .. " " .. resultsHHP[r].name .. "" if r == #resultsHHP then print = print .. '.'		       elseif r-1 == 0 and r+1 == #resultsHHP then print = print .. ' '		       else print = print .. ', '		       end end end end if not tableEmpty(resultsHHP_Facility) then if not tableEmpty(resultsHHP) then if (not isEmpty(frame.args['hhpstatus']) and frame.args['hhpstatus']:lower == "starter") then print = print .. " The item is also featured in the order list" else print = print .. " The item can also be unlocked" end print = print .. " when designing " for r = 1, #resultsHHP_Facility do		   	if r == #resultsHHP_Facility and r-1 ~= 0 then print = print .. 'and ' end print = print .. "the " .. resultsHHP_Facility[r].name:lower .. "" if r == #resultsHHP_Facility then print = print .. '.'		       elseif r-1 == 0 and r+1 == #resultsHHP_Facility then print = print .. ' '		       else print = print .. ', '		       end end else print = print .. "In " .. frame:preprocess('') .. ", this item is unlocked for usage in house designing" if not isEmpty(frame.args['clothing']) then print = print .. " and for changing the clothes of a villager or the player" end print = print .. " when tasked with designing " for r = 1, #resultsHHP_Facility do		   	if r == #resultsHHP_Facility and r-1 ~= 0 then print = print .. 'and ' end print = print .. "the " .. resultsHHP_Facility[r].name:lower .. "" if r == #resultsHHP_Facility then print = print .. '.'		       elseif r-1 == 0 and r+1 == #resultsHHP_Facility then print = print .. ' '		       else print = print .. ', '		       end end end end if not tableEmpty(resultsHHP_Required) then if (not tableEmpty(resultsHHP)) or (not tableEmpty(resultsHHP_Facility)) then print = print .. "\n\n" for r = 1, #resultsHHP_Required do		   	if r == #resultsHHP_Required and r-1 ~= 0 then print = print .. 'and ' end print = print .. " " .. resultsHHP_Required[r].name .. "" if r == #resultsHHP_Required or (r-1 == 0 and r+1 == #resultsHHP_Required) then print = print .. ' '		       else print = print .. ', '		       end end print = print .. "require" if #resultsHHP_Required == 1 then print = print .. "s" end print = print .. " this item to be placed in their vacation home." end end if not tableEmpty(resultsHHP_Category) then if (not tableEmpty(resultsHHP)) or (not tableEmpty(resultsHHP_Facility)) then if not tableEmpty(resultsHHP_Required) then print = print .. ' '			else print = print .. '\n\n' end print = print .. "This item is " if not tableEmpty(resultsHHP_Required) then print = print .. "also " else print = print .. ''			end print = print .. "required " for r = 1, #resultsHHP_Category do		   	if r == #resultsHHP_Category and r-1 ~= 0 then print = print .. 'and ' end print = print .. "as one of the " .. resultsHHP_Category[r].category:lower .. " for the " .. resultsHHP_Category[r].room:lower .. " at the " .. resultsHHP_Category[r].facility:lower .. "" if r == #resultsHHP_Category then print = print .. '.'		       elseif r-1 == 0 and r+1 == #resultsHHP_Category then print = print .. ' '		       else print = print .. ', '		       end end end end if not isEmpty(resultsHHP_Wardell[1].price) and resultsHHP_Wardell[1].currency == "Poki" then currency = require("Module:Currency") print = print .. '\n\n' print = print .. "After unlocking this item, the item can be purchased from Wardell's catalog" if (resultsHHP_Wardell[1].availability2 == "Paradise Planning office" or resultsHHP_Wardell[1].availability2 == "Café") then print = print .. ''		else print = print .. " for " .. currency.outputCurrency("Poki", resultsHHP_Wardell[1].price,"","","","") end print = print .. "."	end if (tableEmpty(resultsHHP)) and (tableEmpty(resultsHHP_Facility)) then print = print .. "In " .. frame:preprocess('') .. ", no villagers unlock this item for usage in designing a vacation home, and it can only be used once the player's catalog is unlocked after completing the 27th vacation home." if not tableEmpty(resultsHHP_Category) then print = print .. '\n\nThe item is however required ' for r = 1, #resultsHHP_Category do		   	if r == #resultsHHP_Category and r-1 ~= 0 then print = print .. 'and ' end print = print .. "as one of the " .. resultsHHP_Category[r].category .. " for the " .. resultsHHP_Category[r].room:lower .. " at the " .. resultsHHP_Category[r].facility:lower .. "" if r == #resultsHHP_Category then print = print .. '.'		       elseif r-1 == 0 and r+1 == #resultsHHP_Category then print = print .. ' '		       else print = print .. ', '		       end end end end return print end

function p.furnitureOutput( frame ) local function isEmpty(s) return s == nil or s == '' end local print = ''

-- Cargo query for nh_house local tables = 'nh_house' local fields = "nh_house.villager=villager,nh_house._pageTitle=pageName" local args = { where = "nh_house.items LIKE '%\"" .. frame.args['1'] .. "\"%'", orderBy = 'nh_house.name_sort', limit = 300, default = '' }   local results = cargo.query( tables, fields, args ) if not tableEmpty(results) then print = print .. "This item " if not isEmpty(frame.args['disable-clothing']) then print = print .. ""   	else print = print .. "also " end print = print .. "appears in the homes of " for r = 1, #results do	   	if r == #results and r-1 ~= 0 then print = print .. 'and ' end print = print .. " " .. results[r].villager .. "" if r == #results then print = print .. '.'	       elseif r-1 == 0 and r+1 == #results then print = print .. ' '	       else print = print .. ', '	       end end if not isEmpty(frame.args['purchasable']) then print = print .. ''	   else print = print .. " As a result, this item has a chance to be purchasable by the player if they were invited by any of the following villagers." end if not isEmpty(frame.args['text']) then print = print .. frame.args['text'] end else print = print .. "No villagers have this item in their home." end print = print .. '\n\n' .. p.HHPOutput(frame) return print end

return p