Module:Sandbox

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

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

function p.HHPOutput( frame, typeItem ) 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 ) local tables5 local fields5 local args5 local resultsHHP_Wardell if typeItem == "furniture" then -- Cargo query for nh_furniture (Wardell price) tables5 = 'nh_furniture' fields5 = "nh_furniture.buy2_price=price,nh_furniture.availability2=availability2,nh_furniture.buy2_currency=currency" args5 = { where = "nh_furniture._pageName = \"Item:" .. frame.args['2'] .. "\"", limit = 2000, groupBy = 'nh_furniture._pageName', default = '', }	   resultsHHP_Wardell = cargo.query( tables5, fields5, args5 ) elseif typeItem == "interior" then -- Cargo query for nh_interior (Wardell price) tables5 = 'nh_interior' fields5 = "nh_interior.buy2_price=price,nh_interior.availability2=availability2,nh_interior.buy2_currency=currency" args5 = { where = "nh_interior._pageName = \"Item:" .. frame.args['2'] .. "\"", limit = 2000, groupBy = 'nh_interior._pageName', default = '', }	   resultsHHP_Wardell = cargo.query( tables5, fields5, args5 ) end

-- Cargo query for nh_clothing (equipable items) local tables6 = 'nh_clothing' local fields6 = "nh_clothing.vill_equip=equip" local args6 = { where = "nh_clothing._pageName = \"Item:" .. frame.args['2'] .. "\"", limit = 2000, groupBy = 'nh_clothing._pageName', default = '', }   local resultsVill_Equip = cargo.query( tables6, fields6, args6 ) -- Cargo query for nh_clothing (handbags) local tables7 = 'nh_clothing' local fields7 = "nh_clothing.handbag=handbag" local args7 = { where = "nh_clothing._pageName = \"Item:" .. frame.args['2'] .. "\"", limit = 2000, groupBy = 'nh_clothing._pageName', default = '', }   local resultsHandbags = cargo.query( tables7, fields7, args7 ) -- Cargo query for nh_item (plants) local tables8 = 'nh_item' local fields8 = "nh_item.plant_type=type" local args8 = { where = "nh_item._pageName = \"Item:" .. frame.args['2'] .. "\"", limit = 2000, groupBy = 'nh_item._pageName', default = '', }   local plants = cargo.query( tables8, fields8, args8 )

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" if not isEmpty(resultsVill_Equip[1].equip) and resultsVill_Equip[1].equip == "1" then print = print .. " a villager or" end print = print .. " 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" if not isEmpty(resultsVill_Equip[1].equip) and resultsVill_Equip[1].equip == "1" then print = print .. " a villager or" end print = print .. " 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" if not isEmpty(resultsVill_Equip[1].equip) and resultsVill_Equip[1].equip == "1" then print = print .. " a villager or" end print = print .. " 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 (typeItem == "furniture" or typeItem == "interior") and (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" if not isEmpty(frame.args['clothing']) then print = print .. " and as a clothing item to use on" if not isEmpty(resultsVill_Equip[1].equip) and resultsVill_Equip[1].equip == "Yes" then print = print .. " villagers and" end print = print .. " the player" end if not tableEmpty(plants) and not isEmpty(plants[1].plant) then print = print .. ", and it can only be used after the player completes the first vacation home." else print = print .. ", and it can only be used once the player's catalog is unlocked after completing the 27th vacation home." end 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,"furniture") return print end

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

-- Cargo query for nh_villager local tables = 'nh_villager' local fields = "nh_villager.icon=icon,nh_villager.name=villager,nh_villager._pageTitle=pageName" local args = { where = "nh_villager.clothing = '" .. frame.args['1'] .. "'",       orderBy = 'nh_villager.name_sort', limit = 300, default = '' }   local results = cargo.query( tables, fields, args ) if not tableEmpty(results) then print = print .. "This item is worn by " 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 print = print .. " as their default outfit." if not isEmpty(frame.args['text']) then print = print .. " " .. frame.args['text'] end else print = print .. "No villagers wear this item as their default outfit." end print = print .. '\n\n' .. p.HHPOutput(frame,"") return print end

return p