Module:SpaceBodyLister/Mining

From Terra Invicta Official Wiki

Documentation for this module may be created at Module:SpaceBodyLister/Mining/doc

---
---Reads the SpaceBody data files and computes a table of SpaceBody to Mining Modifiers

--region Dependencies
local SpaceBodyData = mw.loadData('Module:CSVReader/SpaceBody')
--endregion

--region Private constants
--endregion

--region Private member variables
local miningTable = {}
--endregion

--region Private methods

function getMiningTable()
	for rowID, row in pairs(SpaceBodyData) do
		local spaceBodyMass = row['mass_kg']
		local spaceBodyDensity = row['density_gcm3']
		local massModifier = 1
		local densityModifier = 1
		if spaceBodyMass and spaceBodyMass ~= '' and tonumber(spaceBodyMass) then
			massModifier = tonumber(spaceBodyMass) / 50000000000000000
			if massModifier > 1 then
				massModifier = 1
			end
		end
		if spaceBodyDensity and spaceBodyDensity ~= '' and tonumber(spaceBodyDensity) then
			if tonumber(spaceBodyDensity) < 1.25 then
				densityModifier = tonumber(spaceBodyDensity) / 1.25
			elseif tonumber(spaceBodyDensity) > 3 then
				densityModifier = tonumber(spaceBodyDensity) / 3
			end
		end
		local modifierA = massModifier
		if modifierA < 0.75 then
			modifierA = 0.75
		end
		local modifierB = massModifier * densityModifier
		if modifierB < 0.75 then
			modifierB = 0.75
		elseif modifierB > 1.25 then
			modifierB = 1.25
		end
		miningTable[rowID] = {}
		miningTable[rowID]['massModifier'] = massModifier
		miningTable[rowID]['densityModifier'] = densityModifier
		miningTable[rowID]['modifierA'] = modifierA
		miningTable[rowID]['modifierB'] = modifierB
	end
	return miningTable
end

--endregion

--region Public methods
--endregion

return getMiningTable()