Module:SCValue: Difference between revisions

From Melvor Idle
(Created page with "local p = {} local Shared = require('Module:Shared') local Shop = require('Module:Shop') local Items = require('Module:Items') --local Debug = require('Module:Debug') local function getPurchase(itemName) return Shop.getPurchase(itemName) end local function getPurchaseValue(purchase) if purchase == nil or purchase.cost == nil or purchase.contains == nil then return 0 end local costs = purchase.cost local sales = purchase.contains local function getItemValues...")
 
mNo edit summary
Line 20: Line 20:
local gpVal = 0
local gpVal = 0
if items ~= nil then
if items ~= nil then
for _, v in pairs(items) do
for _, item in pairs(items) do
gpVal = gpVal + Items.getItemValueByID(v['id']) * v['quantity']
gpVal = gpVal + Items.getItemValueByID(item['id']) * item['quantity']
end
end
end
end

Revision as of 15:06, 4 May 2024

This module can be used to get information regarding SC Slayer Coins related shop purchases. For instance, it calculates for much effective profit there can be gained or lost by buying specific items with SC and selling them for GP.


local p = {}

local Shared = require('Module:Shared')
local Shop = require('Module:Shop')
local Items = require('Module:Items')
--local Debug = require('Module:Debug')

local function getPurchase(itemName)
	return Shop.getPurchase(itemName)
end

local function getPurchaseValue(purchase)
	if purchase == nil or purchase.cost == nil or purchase.contains == nil 
	then return 0 end
	
	local costs = purchase.cost
	local sales = purchase.contains
	
	local function getItemValues(items)
		local gpVal = 0
		if items ~= nil then
			for _, item in pairs(items) do
				gpVal = gpVal + Items.getItemValueByID(item['id']) * item['quantity']
			end
		end	
		return gpVal
	end
	
	-- Get total costs (including gp/item costs)
	local gpCost = 0
	if costs.gp ~= nil then	gpCost = costs.gp['cost'] or 0 end
	gpCost = gpCost + getItemValues(costs.items)

	-- Get gross profit from sale
	local gpProfit = getItemValues(sales.items)

	-- Calculate actual profit
	return gpProfit - gpCost
end

function p.getSCValue(item)
	local purchase = getPurchase(item)
	return getPurchaseValue(purchase)
end

function p.test()
	local item = 'Necromancer Hat'
	local s = getPurchase(item)
	mw.log(getPurchaseValue(s))
end

return p