83 lines
2.7 KiB
Lua
83 lines
2.7 KiB
Lua
|
local rebar_id = terumet.id('item_rebar')
|
||
|
|
||
|
minetest.register_craftitem( rebar_id, {
|
||
|
description = 'Teruchalcum Rebar',
|
||
|
inventory_image = terumet.tex('item_rebar'),
|
||
|
})
|
||
|
|
||
|
minetest.register_craft{ output=rebar_id..' 5', recipe=terumet.recipe_plus('terumet:ingot_tcha') }
|
||
|
|
||
|
local desc = {'Reinforced %s', 'Double-reinforced %s', 'Triple-reinforced %s'}
|
||
|
local blchance = {40, 20, 3}
|
||
|
|
||
|
local function reinf_block_id(code, rlv)
|
||
|
return minetest.get_current_modname()..':reinf_block_'..code..rlv
|
||
|
end
|
||
|
|
||
|
function terumet.register_reinforced_block(base, code)
|
||
|
local base_def = minetest.registered_nodes[base]
|
||
|
if not base_def then error('base '..base..' is not defined') end
|
||
|
|
||
|
for rlv = 1,3 do
|
||
|
local def = {}
|
||
|
for k,v in pairs(base_def) do
|
||
|
if k == 'groups' then
|
||
|
def.groups = {}
|
||
|
for gk,gv in pairs(v) do
|
||
|
if not terumet.options.misc.BLOCK_REMOVE_GROUPS[gk] then
|
||
|
def.groups[gk]=gv
|
||
|
end
|
||
|
end
|
||
|
else
|
||
|
def[k] = v
|
||
|
end
|
||
|
end
|
||
|
if not base_def.groups then
|
||
|
def.groups = {level=(rlv+1)}
|
||
|
else
|
||
|
def.groups.level = (base_def.groups.level or 1) + rlv
|
||
|
end
|
||
|
local id = reinf_block_id(code, rlv)
|
||
|
|
||
|
def.description = string.format(desc[rlv], base_def.description)
|
||
|
|
||
|
local visibility = terumet.options.cosmetic.REINFORCING_VISIBLE
|
||
|
if visibility then
|
||
|
local tileov = terumet.tex('blockov_rebar'..rlv)
|
||
|
if visibility == 1 then
|
||
|
def.overlay_tiles = {tileov, tileov, '', '', '', ''}
|
||
|
else
|
||
|
def.overlay_tiles = {tileov}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def.on_blast = terumet.blast_chance(blchance[rlv], id)
|
||
|
|
||
|
minetest.register_node(id, def)
|
||
|
|
||
|
local recbase
|
||
|
if rlv == 1 then
|
||
|
recbase = base
|
||
|
minetest.register_craft{ output=id..' 4', recipe = {
|
||
|
{rebar_id, recbase, rebar_id},
|
||
|
{recbase, '', recbase},
|
||
|
{rebar_id, recbase, rebar_id}
|
||
|
}}
|
||
|
elseif rlv == 2 then
|
||
|
recbase = reinf_block_id(code, 1)
|
||
|
minetest.register_craft{ output=id..' 4', recipe = {
|
||
|
{rebar_id, recbase, rebar_id},
|
||
|
{recbase, '', recbase},
|
||
|
{rebar_id, recbase, rebar_id}
|
||
|
}}
|
||
|
else
|
||
|
recbase = reinf_block_id(code, 2)
|
||
|
minetest.register_craft{ output=id..' 4', recipe = {
|
||
|
{rebar_id, recbase, rebar_id},
|
||
|
{recbase, '', recbase},
|
||
|
{rebar_id, recbase, rebar_id}
|
||
|
}}
|
||
|
end
|
||
|
end
|
||
|
end
|