226 lines
7.4 KiB
Lua
226 lines
7.4 KiB
Lua
-- Renew mod for Minetest
|
|
-- Copyright © 2020 Alex Yst <https://y.st./>
|
|
|
|
-- This program is free software; you can redistribute it and/or
|
|
-- modify it under the terms of the GNU Lesser General Public
|
|
-- License as published by the Free Software Foundation; either
|
|
-- version 2.1 of the License, or (at your option) any later version.
|
|
|
|
-- This software is distributed in the hope that it will be useful,
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
-- Lesser General Public License for more details.
|
|
|
|
-- You should have received a copy of the GNU Lesser General Public
|
|
-- License along with this program. If not, see
|
|
-- <https://www.gnu.org./licenses/>.
|
|
|
|
-- Tools
|
|
|
|
minetest.register_tool("renew:sledgehammer_wood", {
|
|
description = "Wooden Sledgehammer",
|
|
inventory_image = "renew-sledgehammer_wood.png",
|
|
tool_capabilities = {
|
|
full_punch_interval = 1.2,
|
|
max_drop_level=0,
|
|
groupcaps={
|
|
pulverizeable = {times={[3]=1.60}, uses=10, maxlevel=1},
|
|
},
|
|
damage_groups = {fleshy=2},
|
|
},
|
|
groups = {flammable = 2},
|
|
sound = {breaks = "default_tool_breaks"},
|
|
})
|
|
|
|
minetest.register_tool("renew:sledgehammer_stone", {
|
|
description = "Stone Sledgehammer",
|
|
inventory_image = "renew-sledgehammer_stone.png",
|
|
tool_capabilities = {
|
|
full_punch_interval = 1.3,
|
|
max_drop_level=0,
|
|
groupcaps={
|
|
pulverizeable = {times={[2]=2.0, [3]=1.00}, uses=20, maxlevel=1},
|
|
},
|
|
damage_groups = {fleshy=3},
|
|
},
|
|
sound = {breaks = "default_tool_breaks"},
|
|
})
|
|
|
|
minetest.register_tool("renew:sledgehammer_steel", {
|
|
description = "Steel Sledgehammer",
|
|
inventory_image = "renew-sledgehammer_steel.png",
|
|
tool_capabilities = {
|
|
full_punch_interval = 1.0,
|
|
max_drop_level=1,
|
|
groupcaps={
|
|
pulverizeable = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=20, maxlevel=2},
|
|
},
|
|
damage_groups = {fleshy=4},
|
|
},
|
|
sound = {breaks = "default_tool_breaks"},
|
|
})
|
|
|
|
minetest.register_tool("renew:sledgehammer_bronze", {
|
|
description = "Bronze Sledgehammer",
|
|
inventory_image = "renew-sledgehammer_bronze.png",
|
|
tool_capabilities = {
|
|
full_punch_interval = 1.0,
|
|
max_drop_level=1,
|
|
groupcaps={
|
|
pulverizeable = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=30, maxlevel=2},
|
|
},
|
|
damage_groups = {fleshy=4},
|
|
},
|
|
sound = {breaks = "default_tool_breaks"},
|
|
})
|
|
|
|
minetest.register_tool("renew:sledgehammer_mese", {
|
|
description = "Mese Sledgehammer",
|
|
inventory_image = "renew-sledgehammer_mese.png",
|
|
tool_capabilities = {
|
|
full_punch_interval = 0.9,
|
|
max_drop_level=3,
|
|
groupcaps={
|
|
pulverizeable = {times={[1]=2.4, [2]=1.2, [3]=0.60}, uses=20, maxlevel=3},
|
|
},
|
|
damage_groups = {fleshy=5},
|
|
},
|
|
sound = {breaks = "default_tool_breaks"},
|
|
})
|
|
|
|
minetest.register_tool("renew:sledgehammer_diamond", {
|
|
description = "Diamond Sledgehammer",
|
|
inventory_image = "renew-sledgehammer_diamond.png",
|
|
tool_capabilities = {
|
|
full_punch_interval = 0.9,
|
|
max_drop_level=3,
|
|
groupcaps={
|
|
pulverizeable = {times={[1]=2.0, [2]=1.0, [3]=0.50}, uses=30, maxlevel=3},
|
|
},
|
|
damage_groups = {fleshy=5},
|
|
},
|
|
sound = {breaks = "default_tool_breaks"},
|
|
})
|
|
|
|
-- Recipes
|
|
|
|
minetest.register_craft({
|
|
output = "renew:sledgehammer_wood",
|
|
recipe = {
|
|
{"group:wood", "group:stick", "group:wood"},
|
|
{"" , "group:stick", "" },
|
|
{"" , "group:stick", "" },
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "renew:sledgehammer_stone",
|
|
recipe = {
|
|
{"group:stone", "group:stick", "group:stone"},
|
|
{"" , "group:stick", "" },
|
|
{"" , "group:stick", "" },
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "renew:sledgehammer_steel",
|
|
recipe = {
|
|
{"default:steel_ingot", "group:stick", "default:steel_ingot"},
|
|
{"" , "group:stick", "" },
|
|
{"" , "group:stick", "" },
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "renew:sledgehammer_bronze",
|
|
recipe = {
|
|
{"default:bronze_ingot", "group:stick", "default:bronze_ingot"},
|
|
{"" , "group:stick", "" },
|
|
{"" , "group:stick", "" },
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "renew:sledgehammer_mese",
|
|
recipe = {
|
|
{"default:mese_crystal", "group:stick", "default:mese_crystal"},
|
|
{"" , "group:stick", "" },
|
|
{"" , "group:stick", "" },
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "renew:sledgehammer_diamond",
|
|
recipe = {
|
|
{"default:diamond", "group:stick", "default:diamond"},
|
|
{"" , "group:stick", "" },
|
|
{"" , "group:stick", "" },
|
|
}
|
|
})
|
|
|
|
-- Node modifications
|
|
|
|
minetest.registered_nodes["default:cobble"].groups.pulverizeable = minetest.registered_nodes["default:cobble"].groups.cracky
|
|
minetest.override_item("default:cobble", {
|
|
on_dig = function(pos, node, digger)
|
|
if not minetest.is_protected(pos, digger:get_player_name())
|
|
and string.sub(digger:get_wielded_item():get_name(), 1, 19) == "renew:sledgehammer_" then
|
|
minetest.set_node(pos, {name="default:sandstone"})
|
|
local tool = digger:get_wielded_item()
|
|
local groups = minetest.registered_nodes["default:cobble"].groups
|
|
tool:add_wear(minetest.get_dig_params(groups, tool:get_tool_capabilities()).wear)
|
|
digger:set_wielded_item(tool)
|
|
else
|
|
minetest.node_dig(pos, node, digger)
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.registered_nodes["default:stone"].groups.pulverizeable = minetest.registered_nodes["default:stone"].groups.cracky
|
|
minetest.override_item("default:stone", {
|
|
on_dig = function(pos, node, digger)
|
|
if not minetest.is_protected(pos, digger:get_player_name())
|
|
and string.sub(digger:get_wielded_item():get_name(), 1, 19) == "renew:sledgehammer_" then
|
|
minetest.set_node(pos, {name="default:gravel"})
|
|
local tool = digger:get_wielded_item()
|
|
local groups = minetest.registered_nodes["default:stone"].groups
|
|
tool:add_wear(minetest.get_dig_params(groups, tool:get_tool_capabilities()).wear)
|
|
digger:set_wielded_item(tool)
|
|
else
|
|
minetest.node_dig(pos, node, digger)
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.registered_nodes["default:desert_cobble"].groups.pulverizeable = minetest.registered_nodes["default:desert_cobble"].groups.cracky
|
|
minetest.override_item("default:desert_cobble", {
|
|
on_dig = function(pos, node, digger)
|
|
if not minetest.is_protected(pos, digger:get_player_name())
|
|
and string.sub(digger:get_wielded_item():get_name(), 1, 19) == "renew:sledgehammer_" then
|
|
minetest.set_node(pos, {name="default:desert_sand"})
|
|
local tool = digger:get_wielded_item()
|
|
local groups = minetest.registered_nodes["default:desert_cobble"].groups
|
|
tool:add_wear(minetest.get_dig_params(groups, tool:get_tool_capabilities()).wear)
|
|
digger:set_wielded_item(tool)
|
|
else
|
|
minetest.node_dig(pos, node, digger)
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.registered_nodes["default:coral_skeleton"].groups.pulverizeable = minetest.registered_nodes["default:coral_skeleton"].groups.cracky
|
|
minetest.override_item("default:coral_skeleton", {
|
|
on_dig = function(pos, node, digger)
|
|
if not minetest.is_protected(pos, digger:get_player_name())
|
|
and string.sub(digger:get_wielded_item():get_name(), 1, 19) == "renew:sledgehammer_" then
|
|
minetest.set_node(pos, {name="default:silver_sand"})
|
|
local tool = digger:get_wielded_item()
|
|
local groups = minetest.registered_nodes["default:coral_skeleton"].groups
|
|
tool:add_wear(minetest.get_dig_params(groups, tool:get_tool_capabilities()).wear)
|
|
digger:set_wielded_item(tool)
|
|
else
|
|
minetest.node_dig(pos, node, digger)
|
|
end
|
|
end,
|
|
})
|