123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- -- LUALOCALS < ---------------------------------------------------------
- local ipairs, minetest, nodecore, pairs, type
- = ipairs, minetest, nodecore, pairs, type
- -- LUALOCALS > ---------------------------------------------------------
- local modname = minetest.get_current_modname()
- local function toolhead(name, groups, prills)
- local n = name:lower()
- if type(groups) == "string" then groups = {groups} end
- local function toolcap(nn)
- local t = {}
- for _, k in ipairs(groups) do t[k] = nn end
- return nodecore.toolcaps(t)
- end
- nodecore.register_lode("toolhead_" .. n, {
- type = "craft",
- description = "## Lode " .. name .. " Head",
- inventory_image = modname .. "_#.png^[mask:" ..
- modname .. "_toolhead_" .. n .. ".png",
- stack_max = 1,
- tool_head_capabilities = toolcap(4),
- bytemper = function(t, d)
- if t.name == "tempered" then
- d.tool_head_capabilities = toolcap(5)
- else if t.name == "hot" then
- d.tool_head_capabilities = toolcap(3)
- end
- end
- end
- })
- nodecore.register_lode("tool_" .. n, {
- type = "tool",
- description = "## Lode " .. name,
- inventory_image = modname .. "_tool_handle.png^(" ..
- modname .. "_#.png^[mask:" ..
- modname .. "_tool_" .. n .. ".png)",
- stack_max = 1,
- tool_capabilities = toolcap(4),
- bytemper = function(t, d)
- if t.name == "tempered" then
- d.tool_capabilities = toolcap(5)
- end
- d.skip_register = (t.name == "hot") or nil
- end,
- groups = {flammable = 4},
- metal_alt_hot = modname .. ":prill_hot " .. prills,
- tool_wears_to = prills > 1 and (modname .. ":prill_# " .. (prills - 1)) or nil,
- on_ignite = modname .. ":prill_# " .. prills
- })
- for _, t in pairs({"annealed", "tempered"}) do
- nodecore.register_craft({
- label = "assemble lode " .. n,
- normal = {y = 1},
- indexkeys = {modname .. ":toolhead_" .. n .. "_" .. t},
- nodes = {
- {match = modname .. ":toolhead_" .. n .. "_" .. t,
- replace = "air"},
- {y = -1, match = "nc_woodwork:staff", replace = "air"},
- },
- items = {
- {y = -1, name = modname .. ":tool_" .. n .. "_" .. t},
- }
- })
- end
- end
- toolhead("Mallet", "thumpy", 3)
- toolhead("Spade", "crumbly", 2)
- toolhead("Hatchet", "choppy", 2)
- toolhead("Pick", "cracky", 1)
- local function forgecore(from, fromqty, to, prills, fromtemper, anviltemper)
- return nodecore.register_craft({
- label = anviltemper .. " anvil making " .. fromtemper .. " lode " .. (to or "prills"),
- action = "pummel",
- toolgroups = {thumpy = 3},
- indexkeys = {modname .. ":" .. from .. "_" .. fromtemper},
- nodes = {
- {
- match = {name = modname .. ":" .. from .. "_" .. fromtemper,
- count = fromqty},
- replace = "air"
- },
- {
- y = -1,
- match = modname .. ":block_" .. anviltemper
- }
- },
- items = {
- to and (modname .. ":" .. to .. "_" .. fromtemper) or nil,
- prills and {name = modname .. ":prill_" .. fromtemper, count = prills,
- scatter = 5} or nil
- }
- })
- end
- local function forge(from, fromqty, to, prills)
- forgecore(from, fromqty, to, prills, "hot", "annealed")
- forgecore(from, fromqty, to, prills, "hot", "tempered")
- return forgecore(from, fromqty, to, prills, "annealed", "tempered")
- end
- forge("prill", 3, "toolhead_mallet")
- forge("toolhead_mallet", nil, "toolhead_spade", 1)
- forge("toolhead_spade", nil, "toolhead_hatchet")
- forge("toolhead_hatchet", nil, "toolhead_pick", 1)
- forge("toolhead_pick", nil, nil, 1)
- toolhead("Mattock", {"cracky", "crumbly"}, 3)
- local function mattock(a, b)
- return nodecore.register_craft({
- label = "assemble lode mattock head",
- action = "pummel",
- toolgroups = {thumpy = 3},
- normal = {y = 1},
- indexkeys = {modname .. (a == 0 and ":toolhead_pick_hot" or ":toolhead_spade_hot")},
- nodes = {
- {
- y = a,
- match = modname .. ":toolhead_pick_hot",
- replace = "air"
- },
- {
- y = b,
- match = modname .. ":toolhead_spade_hot",
- replace = "air"
- }
- },
- items = {
- modname .. ":toolhead_mattock_hot"
- }
- })
- end
- mattock(0, -1)
- mattock(-1, 0)
|