Files
factorio-scenario-ExpCluster/modules/commands/ratio.lua
PHIDIAS 90faf2ff93 Add Command Description Locale (#323)
* Update admin-chat.lua

* Update admin-markers.lua

* Update artillery.lua

* Update bot-queue.lua

* Update cheat-mode.lua

* Update clear-inventory.lua

* Update connect.lua

* Update debug.lua

* Update enemy.lua

* Update find.lua

* Update friendly-fire.lua

* Update help.lua

* Update home.lua

* Update interface.lua

* Update jail.lua

* Update kill.lua

* Update last-location.lua

* Update me.lua

* Update pollution.lua

* Update protection.lua

* Update rainbow.lua

* Update ratio.lua

* Update repair.lua

* Update reports.lua

* Update research.lua

* Update roles.lua

* Update roles.lua

* Update search.lua

* Update spawn.lua

* Update spectate.lua

* Update speed.lua

* Update surface-clearing.lua

* Update teleport.lua

* Update train.lua

* Update vlayer.lua

* Update warnings.lua

* Update waterfill.lua

* Update gui.cfg

* Update gui.cfg

* Update gui.cfg

* Update commands.cfg

* Update commands.cfg

* Update commands.cfg

* Update connect.lua

* Update cheat-mode.lua

* Update commands.cfg

* Update commands.cfg

* Update commands.cfg

* Update commands.cfg

* Update commands.cfg

* Update commands.cfg

* Update admin-chat.lua

* Update admin-markers.lua

* Update vlayer.lua

* Update artillery.lua

* Update bot-queue.lua

* Update cheat-mode.lua

* Update clear-inventory.lua

* Update connect.lua

* Update debug.lua

* Update enemy.lua

* Update find.lua

* Update friendly-fire.lua

* Update help.lua

* Update home.lua

* Update interface.lua

* Update jail.lua

* Update kill.lua

* Update last-location.lua

* Update me.lua

* Update pollution.lua

* Update protection.lua

* Update rainbow.lua

* Update ratio.lua

* Update repair.lua

* Update reports.lua

* Update research.lua

* Update roles.lua

* Update search.lua

* Update spawn.lua

* Update spectate.lua

* Update speed.lua

* Update surface-clearing.lua

* Update teleport.lua

* Update train.lua

* Update warnings.lua

* Update waterfill.lua

* Update gui.cfg

* Update gui.cfg

* Update gui.cfg

* Update gui.cfg

* Update gui.cfg

* Update commands.cfg

* Update commands.cfg

* Update addons.cfg

* Update addons.cfg

* Update data.cfg

* Update data.cfg

* Update gui.cfg

* Update gui.cfg

* Update data.cfg

* Update data.cfg

* Update gui.cfg

* Update gui.cfg

* Update gui.cfg

* Update gui.cfg

* Update gui.cfg

* Update gui.cfg

* Update commands.lua

* Update admin-chat.lua

* Update admin-markers.lua

* Update artillery.lua

* Update bot-queue.lua

* Update cheat-mode.lua

* Update clear-inventory.lua

* Update connect.lua

* Update debug.lua

* Update enemy.lua

* Update find.lua

* Update help.lua

* Update interface.lua

* Update home.lua

* Update jail.lua

* Update kill.lua

* Update last-location.lua

* Update me.lua

* Update pollution.lua

* Update protection.lua

* Update rainbow.lua

* Update ratio.lua

* Update repair.lua

* Update reports.lua

* Update research.lua

* Update roles.lua

* Update search.lua

* Update spawn.lua

* Update spectate.lua

* Update speed.lua

* Update surface-clearing.lua

* Update teleport.lua

* Update train.lua

* Update vlayer.lua

* Update warnings.lua

* Update waterfill.lua

* Update commands.cfg

* Update commands.cfg

* Update enemy.lua

* Update friendly-fire.lua

* Update roles.lua

* Update spectate.lua

* Update spectate.lua
2024-09-10 11:07:02 +01:00

87 lines
3.3 KiB
Lua

local Commands = require 'expcore.commands'
local function Modules(moduleInventory) -- returns the multiplier of the modules
local effect1 = moduleInventory.get_item_count("productivity-module") -- type 1
local effect2 = moduleInventory.get_item_count("productivity-module-2")-- type 2
local effect3 = moduleInventory.get_item_count("productivity-module-3") -- type 3
local multi = effect1*4+effect2*6+effect3*10
return multi/100+1
end
local function AmountOfMachines(itemsPerSecond, output)
if(itemsPerSecond) then
return itemsPerSecond/output
end
end
Commands.new_command('ratio', {'expcom-ratio.description'}, 'This command will give the input and output ratios of the selected machine. Use the parameter for calculating the machines needed for that amount of items per second.')
:add_param('itemsPerSecond', true, 'number')
:register(function(player, itemsPerSecond)
local machine = player.selected -- selected machine
if not machine then --nil check
return Commands.error{'expcom-ratio.notSelecting'}
end
if machine.type ~= "assembling-machine" and machine.type ~= "furnace" then
return Commands.error{'expcom-ratio.notSelecting'}
end
local recipe = machine.get_recipe() -- recipe
if not recipe then --nil check
return Commands.error{'expcom-ratio.notSelecting'}
end
local items = recipe.ingredients -- items in that recipe
local products = recipe.products -- output items
local amountOfMachines
local moduleInventory = machine.get_module_inventory()--the module Inventory of the machine
local multi = Modules(moduleInventory) --function for the productively modals
if itemsPerSecond then
amountOfMachines = math.ceil( AmountOfMachines(itemsPerSecond, 1/recipe.energy*machine.crafting_speed*products[1].amount*multi)) -- amount of machines
end
if not amountOfMachines then
amountOfMachines = 1 --set to 1 to make it not nil
end
----------------------------items----------------------------
for i, item in ipairs(items) do
local sprite -- string to make the icon work either fluid ore item
if item.type == "item" then
sprite = 'expcom-ratio.item-in'
else
sprite = 'expcom-ratio.fluid-in'
end
local ips = item.amount/recipe.energy*machine.crafting_speed*amountOfMachines --math on the items/fluids per second
Commands.print{sprite, math.round(ips, 3), item.name} -- full string
end
----------------------------products----------------------------
for i, product in ipairs(products) do
local sprite -- string to make the icon work either fluid ore item
if product.type == "item" then
sprite = 'expcom-ratio.item-out'
else
sprite = 'expcom-ratio.fluid-out'
end
local output = 1/recipe.energy*machine.crafting_speed*product.amount*multi --math on the outputs per second
Commands.print {sprite, math.round(output*amountOfMachines, 3), product.name} -- full string
end
if amountOfMachines ~= 1 then
Commands.print{'expcom-ratio.machines', amountOfMachines}
end
end)