Implement Transformer Upgrade

This commit is contained in:
mrkubax10 2023-11-26 11:34:38 +01:00
parent 20bf1d63ec
commit ecab88d784

View File

@ -19,8 +19,31 @@ local S=minetest.get_translator("industrialtest")
industrialtest.internal.applyUpgrade=function(meta,stack)
local def=minetest.registered_items[stack:get_name()]
if def.groups._industrialtest_upgradeSpeed then
local speed=meta:contains("industrialtest.speed") and meta:get_int("industrialtest.speed") or 1
local speed=industrialtest.api.getMachineSpeed(meta)
meta:set_int("industrialtest.speed",math.min(4,speed+def.groups._industrialtest_upgradeSpeed))
elseif def.groups._industrialtest_upgradeTransformer then
local flows={
industrialtest.api.lvPowerFlow,
industrialtest.api.mvPowerFlow,
industrialtest.api.hvPowerFlow,
industrialtest.api.evPowerFlow,
industrialtest.api.ivPowerFlow
}
local machineFlow=meta:get_int("industrialtest.powerFlow")
local upgradedFlow=machineFlow
for _,flow in ipairs(flows) do
if flow>machineFlow then
upgradedFlow=flow
break
end
end
meta:set_int("industrialtest.powerFlow",upgradedFlow)
local networks=industrialtest.api.isAttachedToNetwork(meta)
if networks then
for _,network in ipairs(networks) do
industrialtest.api.createNetworkMapForNode(network)
end
end
end
end
@ -29,6 +52,30 @@ industrialtest.internal.removeUpgrade=function(meta,stack)
if def.groups._industrialtest_upgradeSpeed and meta:contains("industrialtest.speed") then
local speed=meta:get_int("industrialtest.speed")
meta:set_int("industrialtest.speed",math.max(1,speed-def.groups._industrialtest_upgradeSpeed))
elseif def.groups._industrialtest_upgradeTransformer then
local flows={
industrialtest.api.lvPowerFlow,
industrialtest.api.mvPowerFlow,
industrialtest.api.hvPowerFlow,
industrialtest.api.evPowerFlow,
industrialtest.api.ivPowerFlow
}
local machineFlow=meta:get_int("industrialtest.powerFlow")
local downgradedFlow=machineFlow
for i=#flows,1,-1 do
local flow=flows[i]
if flow<machineFlow then
downgradedFlow=flow
break
end
end
meta:set_int("industrialtest.powerFlow",downgradedFlow)
local networks=industrialtest.api.isAttachedToNetwork(meta)
if networks then
for _,network in ipairs(networks) do
industrialtest.api.createNetworkMapForNode(network)
end
end
end
end
@ -38,7 +85,8 @@ local function registerMachineUpgrade(config)
inventory_image="industrialtest_"..config.name..".png",
groups={
_industrialtest_machineUpgrade=1,
_industrialtest_upgradeSpeed=config.speed or 0
_industrialtest_upgradeSpeed=config.speed or nil,
_industrialtest_upgradeTransformer=config.transformer or nil,
}
})
end
@ -48,3 +96,26 @@ registerMachineUpgrade({
displayName=S("Overclocker Upgrade"),
speed=1
})
minetest.register_craft({
type="shaped",
output="industrialtest:overclocker_upgrade",
recipe={
{"industrialtest:coolant_cell","industrialtest:coolant_cell","industrialtest:coolant_cell"},
{"industrialtest:insulated_copper_cable","industrialtest:electronic_circuit","industrialtest:insulated_copper_cable"}
}
})
registerMachineUpgrade({
name="transformer_upgrade",
displayName=S("Transformer Upgrade"),
transformer=1
})
minetest.register_craft({
type="shaped",
output="industrialtest:transformer_upgrade",
recipe={
{industrialtest.elementKeys.glass,industrialtest.elementKeys.glass,industrialtest.elementKeys.glass},
{"industrialtest:insulated_gold_cable","industrialtest:mv_transformer","industrialtest:insulated_gold_cable"},
{industrialtest.elementKeys.glass,"industrialtest:electronic_circuit",industrialtest.elementKeys.glass}
}
})