2023-03-04 19:15:43 +01:00

114 lines
3.1 KiB
Lua

local S = minetest.get_translator("rp_spikes")
local SPIKES_PITCH_MODIFIER = 1.5
local make_metal_sounds = function(pitch)
local sounds = rp_sounds.node_sound_metal_defaults()
if not pitch then
pitch = 1
end
pitch = pitch * SPIKES_PITCH_MODIFIER
sounds.footstep = {}
if sounds.dig then
sounds.dig.pitch = pitch
end
if sounds.dug then
sounds.dug.pitch = pitch
end
if sounds.place then
sounds.place.pitch = pitch
end
return sounds
end
local register_spikes = function(name, def)
local disable_jump = 1
if def.allow_jump then
disable_jump = nil
end
local move_resistance = 4
if def.move_resistance then
move_resistance = def.move_resistance
end
local groups = { spikes = 1, disable_jump = disable_jump, attached_node = 1, cracky = 3, creative_decoblock = 1 }
if def.groups_plus then
for k,v in pairs(def.groups_plus) do
groups[k] = v
end
end
local spikedef = {
description = def.description,
drawtype = "plantlike",
paramtype = "light",
paramtype2 = "wallmounted",
tiles = def.tiles,
visual_scale = 1.45,
walkable = false,
inventory_image = def.image,
wield_image = def.image,
move_resistance = move_resistance,
sunlight_propagates = false,
is_ground_content = false,
groups = groups,
damage_per_second = def.damage_per_second,
sounds = make_metal_sounds(def.pitch),
}
minetest.register_node(name, spikedef)
if def.craftitem then
crafting.register_craft({
output = name,
items = {
def.craftitem .. " 5",
"rp_default:stick 4",
"rp_default:thistle",
},
})
end
end
local mod_default = minetest.get_modpath("rp_default") ~= nil
register_spikes("rp_spikes:spikes_copper", {
description = S("Copper Spikes"),
tiles = { "rp_spikes_spikes_copper.png" },
image = "rp_spikes_spikes_copper_inventory.png",
damage_per_second = 2,
craftitem = "rp_default:ingot_copper",
pitch = mod_default and default.METAL_PITCH_COPPER,
})
register_spikes("rp_spikes:spikes_wrought_iron", {
description = S("Wrought Iron Spikes"),
tiles = { "rp_spikes_spikes_wrought_iron.png" },
image = "rp_spikes_spikes_wrought_iron_inventory.png",
damage_per_second = 3,
craftitem = "rp_default:ingot_wrought_iron",
groups_plus = { magnetic = 1 },
pitch = mod_default and default.METAL_PITCH_WROUGHT_IRON,
})
register_spikes("rp_spikes:spikes_steel", {
description = S("Steel Spikes"),
tiles = { "rp_spikes_spikes_steel.png" },
image = "rp_spikes_spikes_steel_inventory.png",
damage_per_second = 4,
craftitem = "rp_default:ingot_steel",
pitch = mod_default and default.METAL_PITCH_STEEL,
})
register_spikes("rp_spikes:spikes_carbon_steel", {
description = S("Carbon Steel Spikes"),
tiles = { "rp_spikes_spikes_carbon_steel.png" },
image = "rp_spikes_spikes_carbon_steel_inventory.png",
damage_per_second = 5,
craftitem = "rp_default:ingot_carbon_steel",
pitch = mod_default and default.METAL_PITCH_CARBON_STEEL,
})
register_spikes("rp_spikes:spikes_bronze", {
description = S("Bronze Spikes"),
tiles = { "rp_spikes_spikes_bronze.png" },
image = "rp_spikes_spikes_bronze_inventory.png",
damage_per_second = 6,
craftitem = "rp_default:ingot_bronze",
pitch = mod_default and default.METAL_PITCH_BRONZE,
})