Aaron Suen 8e47b687d0 TOOL CAPABILITIES / LEVELS OVERHAUL
Try to standardize the way we handle tools, materials, digtimes.
- Levels start at 1 and work upwards.
  - Level 1 is for "hand" or "primitive" tools.
  - Levels 2+ are wood, stone, metal, etc.
- Link dig times, tool levels, and durability together.
- Material groups now define standard "base dig times" which
  are the main thing that makes e.g. stone harder to dig than dirt.

The speed of digging almost everything will probably have changed,
in some cases not for the better; much testing will be needed.
2019-01-24 22:08:05 -05:00

77 lines
1.9 KiB
Lua

-- LUALOCALS < ---------------------------------------------------------
local ItemStack, minetest, nodecore
= ItemStack, minetest, nodecore
-- LUALOCALS > ---------------------------------------------------------
local modname = minetest.get_current_modname()
local function toolhead(name, from, group, sticks, times)
local n
if name then
n = modname .. ":toolhead_" .. name:lower()
local t = n:gsub(":", "_") .. ".png"
minetest.register_craftitem(n, {
description = "Wooden " .. name .. " Head",
inventory_image = t,
stack_max = 1,
groups = {
flammable = 2
}
})
local m = modname .. ":tool_" .. name:lower()
local u = m:gsub(":", "_") .. ".png"
minetest.register_tool(m, {
description = "Wooden " .. name,
inventory_image = u,
groups = {
flammable = 2
},
tool_capabilities = nodecore.toolcaps({
[group] = 2
})
})
nodecore.register_craft({
normal = {y = 1},
nodes = {
{match = n, replace = "air"},
{y = -1, match = modname .. ":staff", replace = "air"},
},
items = {
{y = -1, name = m},
}
})
end
nodecore.extend_pummel(from,
function(pos, node, stats)
return nodecore.wieldgroup(stats.puncher, "choppy")
end,
function(pos, node, stats)
if stats.duration < 5 then return end
minetest.remove_node(pos)
if n then nodecore.place_stack(pos, n) end
if sticks then
minetest.item_drop(ItemStack("nc_tree:stick " .. sticks),
nil, {x = pos.x, y = pos.y + 1, z = pos.z})
nodecore.wear_current_tool(stats.puncher, {choppy = 3})
end
return true
end)
end
toolhead("Mallet", modname .. ":plank",
"thumpy", 2, {
[2] = 5.00,
[3] = 2.00
})
toolhead("Spade", modname .. ":toolhead_mallet",
"crumbly", 1)
toolhead("Hatchet", modname .. ":toolhead_spade",
"choppy", 1)
toolhead("Pick", modname .. ":toolhead_hatchet",
"cracky", 2, {
[2] = 20.00,
[3] = 5.00
})
toolhead(nil, modname.. ":toolhead_pick",
nil, 2)