From 9cb5748b734d79acfa9d1f1f98bff3e3121c8fa2 Mon Sep 17 00:00:00 2001 From: mrkubax10 Date: Mon, 14 Apr 2025 14:48:42 +0200 Subject: [PATCH] Refactor electric drills --- ...ndustrialtest_advanced_electric_drill.png} | Bin tools/activated_electric_tool.lua | 30 ++-- tools/electric_chainsaw.lua | 6 +- tools/electric_drill.lua | 163 +++++------------- 4 files changed, 68 insertions(+), 131 deletions(-) rename textures/{industrialtest_diamond_electric_drill.png => industrialtest_advanced_electric_drill.png} (100%) diff --git a/textures/industrialtest_diamond_electric_drill.png b/textures/industrialtest_advanced_electric_drill.png similarity index 100% rename from textures/industrialtest_diamond_electric_drill.png rename to textures/industrialtest_advanced_electric_drill.png diff --git a/tools/activated_electric_tool.lua b/tools/activated_electric_tool.lua index 1e0ed55..4c73739 100644 --- a/tools/activated_electric_tool.lua +++ b/tools/activated_electric_tool.lua @@ -78,28 +78,36 @@ end function industrialtest.ActivatedElectricTool.defineToolCapabilities(self,def,times,digSpeed) if industrialtest.mtgAvailable then if self.digs then - def.tool_capabilities.groupcaps={ - [self.digs]={ + def.tool_capabilities.groupcaps={} + for _,digType in ipairs(self.digs) do + def.tool_capabilities.groupcaps[digType]={ times=times, - maxlevel=self.digLevel + maxlevel=self.digLevel+1 } - } - if self.digs=="choppy" then - def.groups.axe=1 + if digType=="choppy" then + def.groups.axe=1 + elseif digType=="cracky" then + def.groups.pickaxe=1 + elseif digType=="crumbly" then + def.groups.shovel=1 + end end end elseif industrialtest.mclAvailable then local digTypeMapping={ - choppy="axey" + choppy="axey", + cracky="pickaxey", + crumbly="shovely" } def.groups.dig_speed_class=self.digSpeedClass - def._mcl_diggroups={ - [digTypeMapping[self.digs]]={ + def._mcl_diggroups={} + for _,digType in ipairs(self.digs) do + def._mcl_diggroups[digTypeMapping[digType]]={ speed=digSpeed, - level=self.digLevel+4, + level=5-self.digLevel, uses=-1 } - } + end end end diff --git a/tools/electric_chainsaw.lua b/tools/electric_chainsaw.lua index dbe7c4e..3e63dea 100644 --- a/tools/electric_chainsaw.lua +++ b/tools/electric_chainsaw.lua @@ -17,7 +17,7 @@ local S=minetest.get_translator("industrialtest") industrialtest.ElectricChainsawBase=table.copy(industrialtest.ActivatedElectricTool) industrialtest.internal.unpackTableInto(industrialtest.ElectricChainsawBase,{ - digs="choppy" + digs={"choppy"} }) function industrialtest.ElectricChainsawBase.use(self,itemstack,user,pointed) @@ -40,7 +40,7 @@ industrialtest.internal.unpackTableInto(industrialtest.ElectricChainsaw,{ inventoryImage="industrialtest_electric_chainsaw.png", capacity=10000, flow=industrialtest.api.lvPowerFlow, - digLevel=1, + digLevel=0, digSpeedClass=4, digSpeed=1, active={ @@ -68,7 +68,7 @@ industrialtest.internal.unpackTableInto(industrialtest.AdvancedElectricChainsaw, inventoryImage="industrialtest_advanced_electric_chainsaw.png", capacity=10000, flow=industrialtest.api.lvPowerFlow, - digLevel=1, + digLevel=0, digSpeedClass=5, digSpeed=1, active={ diff --git a/tools/electric_drill.lua b/tools/electric_drill.lua index 2601eac..a723d8e 100644 --- a/tools/electric_drill.lua +++ b/tools/electric_drill.lua @@ -15,107 +15,35 @@ -- along with this program. If not, see . local S=minetest.get_translator("industrialtest") - -local electricDrill={} - -electricDrill.afterUse=function(itemstack,config) - local meta=itemstack:get_meta() - industrialtest.api.addPowerToItem(itemstack,-20) - if meta:get_int("industrialtest.powerAmount")<20 then - itemstack:set_name("industrialtest:"..config.name) - end - return itemstack -end - -local function registerElectricDrill(config) - local definition={ - description=config.displayName, - inventory_image="industrialtest_"..config.name..".png", - after_use=function() - -- Hack to make sure that drill won't be destroyed when has 0 EU - return nil - end, - _industrialtest_powerStorage=true, - _industrialtest_powerCapacity=10000, - _industrialtest_powerFlow=industrialtest.api.lvPowerFlow, - _industrialtest_inactiveName="industrialtest:"..config.name +industrialtest.ElectricDrillBase=table.copy(industrialtest.ActivatedElectricTool) +industrialtest.internal.unpackTableInto(industrialtest.ElectricDrillBase,{ + digs={ + "cracky", + "crumbly" } - if industrialtest.mtgAvailable then - definition.tool_capabilities={ - full_punch_interval=0.5, - max_drop_level=config.maxDropLevel, - groupcaps={ - cracky={ - times=config.inactiveTimes, - maxlevel=config.maxLevel - }, - crumbly={ - times=config.inactiveTimes, - maxlevel=config.maxLevel - } - } - } - definition.groups={ - pickaxe=1, - shovel=1 - } - elseif industrialtest.mclAvailable then - definition.tool_capabilities={ - full_punch_interval=0.5, - max_drop_level=config.maxDropLevel - } - definition.groups={ - tool=1, - dig_speed_class=config.digSpeedClass - } - definition._mcl_diggroups={ - pickaxey={ - speed=config.inactiveDigSpeed, - level=config.digLevel, - uses=-1 - }, - shovely={ - speed=config.inactiveDigSpeed, - level=config.digLevel, - uses=-1 - } - } - definition._mcl_toollike_wield=true - end - minetest.register_tool("industrialtest:"..config.name,definition) - definition=table.copy(definition) - if industrialtest.mtgAvailable then - definition.tool_capabilities.groupcaps.cracky.times=config.activeTimes - definition.tool_capabilities.groupcaps.crumbly.times=config.activeTimes - elseif industrialtest.mclAvailable then - definition._mcl_diggroups.pickaxey.speed=config.activeDigSpeed - definition._mcl_diggroups.shovely.speed=config.activeDigSpeed - end - definition.groups.not_in_creative_inventory=1 - definition.after_use=function(itemstack) - return electricDrill.afterUse(itemstack,config) - end - minetest.register_tool("industrialtest:"..config.name.."_active",definition) - industrialtest.internal.registeredElectricDrills["industrialtest:"..config.name]=true - industrialtest.internal.registeredElectricDrills["industrialtest:"..config.name.."_active"]=true +}) + +function industrialtest.ElectricDrillBase.getOpPower(self,itemstack) + return 50 end -local definition={ - name="electric_drill", - displayName=S("Electric Drill") -} -if industrialtest.mtgAvailable then - definition.maxDropLevel=1 - definition.inactiveTimes={[1]=10,[2]=5.6,[3]=4} - definition.maxLevel=2 - definition.activeTimes={[1]=2.0,[2]=0.8,[3]=0.4} -elseif industrialtest.mclAvailable then - definition.digSpeedClass=4 - definition.maxDropLevel=4 - definition.inactiveDigSpeed=1 - definition.digLevel=4 - definition.activeDigSpeed=7 -end -registerElectricDrill(definition) + +industrialtest.ElectricDrill=table.copy(industrialtest.ElectricDrillBase) +industrialtest.internal.unpackTableInto(industrialtest.ElectricDrill,{ + name="industrialtest:electric_drill", + description=S("Electric Drill"), + inventoryImage="industrialtest_electric_drill.png", + capacity=30000, + flow=industrialtest.api.lvPowerFlow, + digLevel=1, + digSpeedClass=4, + active={ + times={[1]=1.7,[2]=1.2,[3]=1.0,[4]=0.7}, + digSpeed=4 + } +}) + +industrialtest.ElectricDrill:register() + minetest.register_craft({ type="shaped", output="industrialtest:electric_drill", @@ -125,26 +53,27 @@ minetest.register_craft({ {"industrialtest:refined_iron_ingot","industrialtest:re_battery","industrialtest:refined_iron_ingot"} } }) -definition={ - name="diamond_electric_drill", - displayName=S("Diamond Electric Drill") -} -if industrialtest.mtgAvailable then - definition.maxDropLevel=1 - definition.inactiveTimes={[1]=10,[2]=5.6,[3]=4} - definition.maxLevel=3 - definition.activeTimes={[1]=2.0,[2]=0.8,[3]=0.4} -elseif industrialtest.mclAvailable then - definition.digSpeedClass=5 - definition.maxDropLevel=5 - definition.inactiveDigSpeed=1 - definition.digLevel=5 - definition.activeDigSpeed=9 -end -registerElectricDrill(definition) + +industrialtest.AdvancedElectricDrill=table.copy(industrialtest.ElectricDrillBase) +industrialtest.internal.unpackTableInto(industrialtest.AdvancedElectricDrill,{ + name="industrialtest:advanced_electric_drill", + description=S("Advanced Electric Drill"), + inventoryImage="industrialtest_advanced_electric_drill.png", + capacity=30000, + flow=industrialtest.api.lvPowerFlow, + digLevel=0, + digSpeedClass=5, + active={ + times={[1]=1.0,[2]=0.7,[3]=0.3,[4]=0.1}, + digSpeed=7 + } +}) + +industrialtest.AdvancedElectricDrill:register() + minetest.register_craft({ type="shaped", - output="industrialtest:diamond_electric_drill", + output="industrialtest:advanced_electric_drill", recipe={ {"",industrialtest.elementKeys.diamond,""}, {industrialtest.elementKeys.diamond,"industrialtest:electric_drill",industrialtest.elementKeys.diamond}