mirror of
https://github.com/Refactorio/RedMew.git
synced 2024-12-14 10:13:13 +02:00
60 lines
1.8 KiB
Lua
60 lines
1.8 KiB
Lua
--[[-- info
|
|
Provides the ability to increase mining efficiency while preserving the original value.
|
|
]]
|
|
|
|
-- dependencies
|
|
local Event = require 'utils.event'
|
|
|
|
-- this
|
|
local MiningEfficiency = {}
|
|
|
|
global.MiningEfficiency = {
|
|
default_mining_speed = 0,
|
|
active_modifier = 0,
|
|
current_modifier = 0,
|
|
research_modifier = 0,
|
|
}
|
|
|
|
local function update_mining_speed(player_force)
|
|
-- recalculate current modifier
|
|
global.MiningEfficiency.current_modifier = global.MiningEfficiency.default_mining_speed + global.MiningEfficiency.research_modifier
|
|
|
|
-- remove the current buff
|
|
player_force.manual_mining_speed_modifier = player_force.manual_mining_speed_modifier - global.MiningEfficiency.active_modifier
|
|
|
|
-- update the active modifier
|
|
global.MiningEfficiency.active_modifier = global.MiningEfficiency.current_modifier
|
|
|
|
-- add the new active modifier
|
|
player_force.manual_mining_speed_modifier = player_force.manual_mining_speed_modifier + global.MiningEfficiency.active_modifier
|
|
end
|
|
|
|
--[[--
|
|
Registers all event handlers.
|
|
]]
|
|
function MiningEfficiency.register(cfg)
|
|
local config = cfg.features.MiningEfficiency
|
|
|
|
Event.add(defines.events.on_research_finished, function(event)
|
|
local player_force = game.forces.player
|
|
|
|
global.MiningEfficiency.research_modifier = player_force.mining_drill_productivity_bonus * config.mining_speed_productivity_multiplier / 2
|
|
|
|
update_mining_speed(player_force)
|
|
end)
|
|
end
|
|
|
|
--[[--
|
|
Initializes the Feature.
|
|
|
|
@param config Table {@see Diggy.Config}.
|
|
]]
|
|
function MiningEfficiency.initialize(cfg)
|
|
local config = cfg.features.MiningEfficiency
|
|
|
|
global.MiningEfficiency.default_mining_speed = config.default_mining_speed
|
|
update_mining_speed(game.forces.player)
|
|
end
|
|
|
|
return MiningEfficiency
|