minetest-mod-nssm/nssm_materials.lua

2159 lines
54 KiB
Lua

local S = nssm.S
-- non-eatable craftitems
local function nssm_craftitem(name, descr)
minetest.register_craftitem("nssm:" .. name, {
description = S(descr),
image = name .. ".png"
})
end
nssm_craftitem("sky_feather", "Sky Feather")
nssm_craftitem("snake_scute", "Snake Scute")
nssm_craftitem("eyed_tentacle", "Eyed Tentacle")
--nssm_craftitem("king_duck_crown", "King Duck Crown")
nssm_craftitem("great_energy_globe", "Great Energy Globe")
nssm_craftitem("superior_energy_globe", "Superior Energy Globe")
nssm_craftitem("ant_queen_abdomen", "Ant Queen Abdomen")
--nssm_craftitem("masticone_skull", "Masticone Skull")
nssm_craftitem("masticone_skull_fragments", "Masticone Skull Fragments")
--nssm_craftitem("masticone_skull_crowned", "Masticone Skull Crowned")
nssm_craftitem("tentacle_curly", "Kraken Tentacle")
nssm_craftitem("lava_titan_eye", "Lava Titan Eye")
nssm_craftitem("duck_beak", "Duck Beak")
nssm_craftitem("ice_tooth", "Ice Tooth")
nssm_craftitem("little_ice_tooth", "Little Ice Tooth")
nssm_craftitem("digested_sand", "Digested Sand")
nssm_craftitem("black_ice_tooth", "Black Ice Tooth")
nssm_craftitem("tarantula_chelicerae", "Tarantula Chelicerae")
nssm_craftitem("crab_chela", "Crab Chela")
nssm_craftitem("cursed_pumpkin_seed", "Cursed Pumpkin Seed")
nssm_craftitem("mantis_claw", "Mantis Claw")
nssm_craftitem("manticore_fur", "Manticore Fur")
nssm_craftitem("ant_hard_skin", "Ant Hard Skin")
nssm_craftitem("bloco_skin", "Bloco Skin")
nssm_craftitem("crab_carapace_fragment", "Crab Carapace Fragment")
nssm_craftitem("crocodile_skin", "Crocodile Skin")
nssm_craftitem("manticore_spine", "Manticore Spine")
nssm_craftitem("night_feather", "Night Feather")
nssm_craftitem("sun_feather", "Sun Feather")
nssm_craftitem("duck_feather", "Duck Feather")
nssm_craftitem("black_duck_feather", "Black Duck Feather")
nssm_craftitem("masticone_fang", "Masticone Fang")
nssm_craftitem("white_wolf_fur", "White Wolf Fur")
nssm_craftitem("stoneater_mandible", "Stoneater Mandible")
nssm_craftitem("ant_mandible", "Ant Mandible")
nssm_craftitem("life_energy", "Life Energy")
nssm_craftitem("wolf_fur", "Wolf Fur")
nssm_craftitem("felucco_fur", "Felucco Fur")
nssm_craftitem("felucco_horn", "Felucco Horn")
nssm_craftitem("energy_globe", "Energy Globe")
nssm_craftitem("greedy_soul_fragment", "Greedy Soul Fragment")
nssm_craftitem("lustful_soul_fragment", "Lustful Soul Fragment")
nssm_craftitem("wrathful_soul_fragment", "Wrathful Soul Fragment")
nssm_craftitem("proud_soul_fragment", "Proud Soul Fragment")
nssm_craftitem("slothful_soul_fragment", "Slothful Soul Fragment")
nssm_craftitem("envious_soul_fragment", "Envious Soul Fragment")
nssm_craftitem("gluttonous_soul_fragment", "Gluttonous Soul Fragment")
nssm_craftitem("gluttonous_moranga", "Gluttonous Moranga")
nssm_craftitem("envious_moranga", "Envious Moranga")
nssm_craftitem("proud_moranga", "Proud Moranga")
nssm_craftitem("slothful_moranga", "Slothful Moranga")
nssm_craftitem("lustful_moranga", "Lustful Moranga")
nssm_craftitem("wrathful_moranga", "Wrathful Moranga")
nssm_craftitem("greedy_moranga", "Greedy Moranga")
nssm_craftitem("mantis_skin", "Mantis_skin")
nssm_craftitem("sand_bloco_skin", "Sand Bloco Skin")
nssm_craftitem("sandworm_skin", "Sandworm Skin")
nssm_craftitem("sky_iron", "Sky Iron")
nssm_craftitem("web_string", "Cobweb String")
nssm_craftitem("dense_web_string", "Dense Cobweb String")
nssm_craftitem("black_powder", "Black Powder")
nssm_craftitem("morelentir_dust", "Dark Starred Stone Dust")
nssm_craftitem("empty_evocation_bomb", "Empty Evocation Bomb")
local function nssm_craftitem_eat(name, descr, gnam)
minetest.register_craftitem("nssm:" .. name, {
description = S(descr),
image = name .. ".png",
on_use = minetest.item_eat(gnam),
groups = {food_meat = 1, meat = 1, eatable = 1}
})
end
nssm_craftitem_eat("werewolf_leg", "Werewolf Leg", 3)
nssm_craftitem_eat("felucco_steak", "Felucco Steak", 3)
nssm_craftitem_eat("roasted_felucco_steak", "Roasted Felucco Steak", 6)
nssm_craftitem_eat("heron_leg", "Moonheron Leg", 2)
nssm_craftitem_eat("chichibios_heron_leg", "Chichibios Moonheron Leg", 4)
nssm_craftitem_eat("crocodile_tail", "Crocodile Tail", 3)
nssm_craftitem_eat("roasted_crocodile_tail", "Roasted Crocodile Tail", 6)
nssm_craftitem_eat("roasted_werewolf_leg", "Roasted_Werewolf Leg", 6)
nssm_craftitem_eat("duck_legs", "Duck Legs", 1)
nssm_craftitem_eat("roasted_duck_legs", "Roasted Duck Leg", 3)
nssm_craftitem_eat("ant_leg", "Ant Leg", -1)
nssm_craftitem_eat("roasted_ant_leg", "Roasted Ant Leg", 4)
nssm_craftitem_eat("spider_leg", "Spider Leg", -1)
nssm_craftitem_eat("roasted_spider_leg", "Roasted Spider Leg", 4)
--nssm_craftitem_eat("brain", "Brain", 3)
--nssm_craftitem_eat("roasted_brain", "Roasted Brain", 8)
nssm_craftitem_eat("tentacle", "Tentacle", 2)
nssm_craftitem_eat("roasted_tentacle", "Roasted Tentacle", 5)
nssm_craftitem_eat("worm_flesh", "Worm Flesh", -2)
nssm_craftitem_eat("roasted_worm_flesh", "Roasted Worm Flesh", 4)
nssm_craftitem_eat("amphibian_heart", "Amphibian Heart", 1)
nssm_craftitem_eat("roasted_amphibian_heart", "Roasted Amphibian Heart", 8)
nssm_craftitem_eat("raw_scrausics_wing", "Raw Scrausics Wing", 1)
nssm_craftitem_eat("spicy_scrausics_wing", "Spicy Scrausics Wing", 6)
nssm_craftitem_eat("phoenix_nuggets", "Phoenix Nuggets", 20)
nssm_craftitem_eat("phoenix_tear", "Phoenix Tear", 20)
nssm_craftitem_eat("frosted_amphibian_heart", "Frosted Amphibian Heart", -1)
nssm_craftitem_eat("surimi", "Surimi", 4)
nssm_craftitem_eat("amphibian_ribs", "Amphibian Ribs", 2)
nssm_craftitem_eat("roasted_amphibian_ribs", "Roasted Amphibian Ribs", 6)
nssm_craftitem_eat("dolidrosaurus_fin", "Dolidrosaurus Fin", -2)
nssm_craftitem_eat("roasted_dolidrosaurus_fin", "Roasted Dolidrosaurus Fin", 4)
nssm_craftitem_eat("larva_meat", "Larva Meat", -1)
nssm_craftitem_eat("larva_juice", "Larva Juice", -3)
nssm_craftitem_eat("larva_soup", "Larva Soup", 10)
nssm_craftitem_eat("mantis_meat", "Mantis Meat", 1)
nssm_craftitem_eat("roasted_mantis_meat", "Roasted Mantis Meat", 4)
nssm_craftitem_eat("spider_meat", "Spider Meat", -1)
nssm_craftitem_eat("roasted_spider_meat", "Roasted Spider Meat", 3)
nssm_craftitem_eat("silk_gland", "Silk Gland", -1)
nssm_craftitem_eat("roasted_silk_gland", "Roasted Silk Gland", 3)
nssm_craftitem_eat("super_silk_gland", "Super Silk Gland", -8)
nssm_craftitem_eat("roasted_super_silk_gland", "Roasted Super Silk Gland", 2)
-- ore generation
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:modders_block",
wherein = "default:stone",
clust_scarcity = 50*50*50,
clust_num_ores = 1,
clust_size = 1,
y_min = -115,
y_max = -95
})
for i = 1, 9 do
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "default:cobble",
clust_scarcity = 1,
clust_num_ores = 1,
clust_size = 1,
y_min = -1,
y_max = 40
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "default:mossycobble",
clust_scarcity = 1,
clust_num_ores = 1,
clust_size = 1,
y_min = -1000,
y_max = 40
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "default:sandstonebrick",
clust_scarcity = 1,
clust_num_ores = 1,
clust_size = 1,
y_min = -1000,
y_max = 40
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "stairs:stair_sandstonebrick",
clust_scarcity = 1,
clust_num_ores = 1,
clust_size = 1,
y_min = -1000,
y_max = 40
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "stairs:stair_cobble",
clust_scarcity = 1,
clust_num_ores = 1,
clust_size = 1,
y_min = -1000,
y_max = 40
})
end
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:web",
wherein = "default:junglegrass",
clust_scarcity = 2*2*2,
clust_num_ores = 2,
clust_size = 2,
y_min = -20,
y_max = 200
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:web",
wherein = "default:jungleleaves",
clust_scarcity = 4*4*4,
clust_num_ores = 5,
clust_size = 5,
y_min = -20,
y_max = 200
})
-- nodes
minetest.register_node("nssm:ant_dirt", {
description = S("Ant Dirt"),
tiles = {"ant_dirt.png"},
groups = {crumbly = 3}
})
minetest.register_node("nssm:dead_leaves", {
description = S("Dead leaves"),
tiles = {"dead_leaves.png"},
groups = {snappy = 3, leaves = 1}
})
minetest.register_node("nssm:invisible_light", {
description = S("Invisible light source"),
tiles = {"transparent.png"},
paramtype = "light",
drawtype = "airlike",
walkable = false,
sunlight_propagates = true,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
groups = {unbreakable = 1},
drop = "",
light_source = 14
})
minetest.register_node("nssm:venomous_gas", {
description = S("Venomous Gas"),
inventory_image = minetest.inventorycube("venomous_gas.png"),
drawtype = "firelike",
tiles = {
{
name = "venomous_gas_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.0
}
}
},
paramtype = "light",
walkable = false,
sunlight_propagates = true,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
drowning = 1,
damage_per_second = 1,
post_effect_color = {a = 100, r = 1, g = 100, b = 1},
groups = {flammable = 2}
})
-- Cleanup that obnoxious gas...!
minetest.register_abm({
nodenames = {"nssm:venomous_gas"},
interval = 5,
chance = 5,
action = function(pos, node)
minetest.remove_node(pos)
end
})
minetest.register_node("nssm:modders_block", {
description = S("Modders Block"),
tiles = {"modders_block.png"},
is_ground_content = true,
groups = {crumbly = 3, not_in_creative_inventory =1}
})
minetest.register_node("nssm:web", {
description = S("Web"),
inventory_image = "web.png",
tiles = {"web.png"} ,
drawtype = "plantlike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "farming:cotton",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range = 0,
liquid_alternative_flowing = "nssm:web",
liquid_alternative_source = "nssm:web",
liquid_viscosity = 20,
groups = {flammable = 2, snappy = 1, liquid = 1}
})
minetest.register_node("nssm:thick_web", {
description = S("Thick Web"),
inventory_image = "thick_web.png",
tiles = {"thick_web.png"},
drawtype = "firelike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "farming:cotton 4",
drowning = 2,
liquid_renewable = false,
liquidtype = "source",
liquid_range = 0,
liquid_alternative_flowing = "nssm:thick_web",
liquid_alternative_source = "nssm:thick_web",
liquid_viscosity = 28,--30,
groups = {flammable = 2, snappy = 1, level = 2, liquid = 1}
})
minetest.register_node("nssm:ink", {
description = S("Ink"),
inventory_image = minetest.inventorycube("ink.png"),
drawtype = "liquid",
tiles = {
{
name = "ink_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0
}
}
},
--alpha = 420,
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
liquid_range = 0,
drowning = 1,
liquid_renewable = false,
liquidtype = "source",
liquid_alternative_flowing = "nssm:ink",
liquid_alternative_source = "nssm:ink",
liquid_viscosity = 1,
post_effect_color = {a = 2000, r = 30, g = 30, b = 30},
groups = {water = 3, liquid = 3, puts_out_fire = 1}
})
minetest.register_node("nssm:mese_meteor", {
description = S("Mese Meteor"),
tiles = {"mese_meteor.png"},
paramtype = "light",
drop = "",
groups = {crumbly = 1, falling_node = 1, flammable = 2}
})
minetest.register_node("nssm:pumpbomb", {
description = S("Pumpbomb"),
tiles = {
"pumpbomb_top.png", "pumpbomb_bottom.png", "pumpbomb_side.png",
"pumpbomb_side.png", "pumpbomb_side.png", "pumpbomb_front.png"
},
light_source = 5,
groups = {not_in_creative_inventory = 1},
drop = "",
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name = "air"})
nssm:tnt_boom_nssm(pos, {damage_radius = 4, radius = 3, ignore_protection = false})
end
})
-- abms
minetest.register_abm({
nodenames = {"nssm:mese_meteor"},
neighbors = {"air"},
interval = 2,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
if minetest.is_protected(pos, "") then
return
end
minetest.set_node({x = pos.x + 1, y = pos.y, z = pos.z}, {name = "fire:basic_flame"})
minetest.set_node({x = pos.x - 1, y = pos.y, z = pos.z}, {name = "fire:basic_flame"})
minetest.set_node({x = pos.x, y = pos.y, z = pos.z - 1}, {name = "fire:basic_flame"})
minetest.set_node({x = pos.x, y = pos.y, z = pos.z + 1}, {name = "fire:basic_flame"})
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "fire:basic_flame"})
end
})
minetest.register_node("nssm:phoenix_fire", {
description = S("Phoenix Fire"),
drawtype = "firelike",
tiles = {
{
name = "phoenix_fire_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1
}
}
},
inventory_image = "phoenix_fire.png",
light_source = 14,
groups = {snappy = 1}, -- igniter = 1
drop = "",
walkable = false,
buildable_to = false,
damage_per_second = 4
})
minetest.register_abm({
nodenames = {"nssm:phoenix_fire"},
neighbors = {"air"},
interval = 3,
chance = 2,
action = function(pos, node)
minetest.set_node({x = pos.x, y = pos.y , z = pos.z}, {name = "air"})
end
})
minetest.register_abm({
nodenames = {"nssm:dead_leaves"},
neighbors = {"air"},
interval = 15,
chance = 3,
action = function(pos, node)
minetest.set_node({x = pos.x, y = pos.y , z = pos.z}, {name = "air"})
end
})
-- tools
minetest.register_tool("nssm:sun_sword", {
description = S("Sun Sword"),
inventory_image = "sun_sword.png",
tool_capabilities = {
full_punch_interval = 0.6,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.80, [2]=0.40, [3]=0.20}, uses = 70, maxlevel = 1},
fleshy = {times = {[2]=0.6, [3]=0.2}, uses = 70, maxlevel = 1}
},
damage_groups = {fleshy = 10}
},
minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing)
if puncher:get_wielded_item():get_name() == "nssm:sun_sword" then
if node.name ~= "air" and not minetest.is_protected(pos, "") then
minetest.add_node(pointed_thing.above, {name = "fire:basic_flame"})
end
end
end)
})
minetest.register_tool("nssm:masticone_fang_sword", {
description = S("Masticone Fang Sword"),
inventory_image = "masticone_fang_sword.png",
tool_capabilities = {
full_punch_interval = 0.7,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.6, [2]=0.5, [3]=0.4}, uses = 200, maxlevel = 1},
fleshy = {times = {[2]=0.8, [3]=0.4}, uses = 200, maxlevel = 1}
},
damage_groups = {fleshy = 8}
}
})
minetest.register_tool("nssm:night_sword", {
description = S("Night Sword"),
inventory_image = "night_sword.png",
tool_capabilities = {
full_punch_interval = 0.4,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.4, [2]=0.3, [3]=0.2}, uses = 300, maxlevel = 1},
fleshy = {times = {[2]=0.7, [3]=0.3}, uses = 300, maxlevel = 1}
},
damage_groups = {fleshy = 12}
}
})
minetest.register_tool("nssm:crab_light_mace", {
description = S("Light Crab Mace"),
inventory_image = "crab_light_mace.png",
tool_capabilities = {
full_punch_interval = 2,
max_drop_level = 1,
groupcaps = {
fleshy = {times = {[2]=1.4, [3]=1}, uses = 20, maxlevel = 1}
},
damage_groups = {fleshy = 8}
}
})
minetest.register_tool("nssm:crab_heavy_mace", {
description = S("Heavy Crab Mace"),
inventory_image = "crab_heavy_mace.png",
tool_capabilities = {
full_punch_interval = 4,
max_drop_level = 1,
groupcaps={
fleshy = {times = {[2]=2, [3]=1.4}, uses = 20, maxlevel = 1}
},
damage_groups = {fleshy = 12}
}
})
minetest.register_tool("nssm:mantis_battleaxe", {
description = S("Mantis Battleaxe"),
inventory_image = "mantis_battleaxe.png",
tool_capabilities = {
full_punch_interval = 3,
max_drop_level = 1,
groupcaps = {
fleshy = {times = {[2]=2, [3]=1.4}, uses = 20, maxlevel = 1}
},
damage_groups = {fleshy = 10}
}
})
minetest.register_node("nssm:rope", {
description = S("Rope"),
paramtype = "light",
walkable = false,
climbable = true,
sunlight_propagates = true,
drawtype = "plantlike",
drops = "nssm:rope",
tiles = {"rope.png"},
groups = {snappy = 1}
})
minetest.register_tool("nssm:stoneater_pick", {
description = S("Stoneater Pickaxe"),
inventory_image = "stoneater_pick.png",
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level = 0,
groupcaps = {
cracky = {times = {[3]=0.0}, uses = 200, maxlevel = 1},
},
damage_groups = {fleshy = 5}
}
})
minetest.register_tool("nssm:mantis_sword", {
description = S("Mantis Sword"),
inventory_image = "mantis_sword.png",
tool_capabilities = {
full_punch_interval = 0.7,
max_drop_level = 1,
groupcaps = {
fleshy = {times = {[2]=1.0, [3]=0.4}, uses = 30, maxlevel = 1},
snappy = {times = {[2]=1.00, [2]=0.80, [3] = 0.3}, uses = 40, maxlevel = 1},
},
damage_groups = {fleshy = 7}
}
})
minetest.register_tool("nssm:little_ice_tooth_knife", {
description = S("Little Ice Tooth Knife"),
inventory_image = "little_ice_tooth_knife.png",
tool_capabilities = {
full_punch_interval = 0.3,
max_drop_level = 1,
groupcaps = {
fleshy = {times = {[2]=1.0, [3]=0.4}, uses = 4, maxlevel = 1},
snappy = {times = {[2]=0.80, [3]=0.3}, uses = 7, maxlevel = 1},
},
damage_groups = {fleshy = 5}
}
})
minetest.register_tool("nssm:manticore_spine_knife", {
description = S("Manticore Spine Knife"),
inventory_image = "manticore_spine_knife.png",
tool_capabilities = {
full_punch_interval = 0.4,
max_drop_level = 1,
groupcaps = {
fleshy = {times = {[2]=1.0, [3]=0.4}, uses = 6, maxlevel = 1},
snappy = {times = {[2]=0.80, [3]=0.3}, uses = 6, maxlevel = 1},
},
damage_groups = {fleshy = 6}
}
})
minetest.register_tool("nssm:felucco_knife", {
description = S("Felucco Knife"),
inventory_image = "felucco_knife.png",
tool_capabilities = {
full_punch_interval = 0.4,
max_drop_level = 1,
groupcaps = {
fleshy = {times = {[2]=1.0, [3]=0.4}, uses = 6, maxlevel = 1},
snappy = {times = {[2]=0.80, [3]=0.3}, uses = 6, maxlevel = 1}
},
damage_groups = {fleshy = 6}
}
})
if minetest.get_modpath("farming") then
farming.register_hoe(":farming:felucco_hoe", {
description = S("Felucco Hoe"),
inventory_image = "felucco_hoe.png",
max_uses = 290,
material = "nssm:felucco_horn"
})
farming.register_hoe(":farming:ant_hoe", {
description = S("Ant Hoe"),
inventory_image = "ant_hoe.png",
max_uses = 350,
material = "nssm:ant_mandible"
})
end
minetest.register_tool("nssm:ant_sword", {
description = S("Ant Sword"),
inventory_image = "ant_sword.png",
tool_capabilities = {
full_punch_interval = 0.8,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=1.30, [2]=0.90, [3]=0.40}, uses = 40, maxlevel = 3}
},
damage_groups = {fleshy = 8}
}
})
minetest.register_tool("nssm:ant_shovel", {
description = S("Ant Shovel"),
inventory_image = "ant_shovel.png",
wield_image = "ant_shovel.png^[transformR90",
tool_capabilities = {
full_punch_interval = 1,
max_drop_level = 1,
groupcaps = {
crumbly = {times = {[1]=1.50, [2]=0.90, [3]=0.40}, uses = 35, maxlevel = 2}
},
damage_groups = {fleshy = 4}
}
})
minetest.register_tool("nssm:duck_beak_shovel", {
description = S("Duck Beak Shovel"),
inventory_image = "duck_beak_shovel.png",
wield_image = "duck_beak_shovel.png^[transformR90",
tool_capabilities = {
full_punch_interval = 0.6,
max_drop_level = 1,
groupcaps = {
crumbly = {times = {[1]=1.10, [2]=0.80, [3]=0.20}, uses = 5, maxlevel = 2}
},
damage_groups = {fleshy = 4}
}
})
minetest.register_tool("nssm:mantis_axe", {
description = S("Mantis Axe"),
inventory_image = "mantis_axe.png",
tool_capabilities = {
full_punch_interval = 0.8,
max_drop_level = 1,
groupcaps = {
choppy = {times = {[1]=2.20, [2]=1.00, [3]=0.60}, uses = 30, maxlevel = 3}
},
damage_groups = {fleshy = 5}
}
})
minetest.register_tool("nssm:ant_billhook", {
description = S("Ant Billhook"),
inventory_image = "ant_billhook.png",
tool_capabilities = {
full_punch_interval = 0.8,
max_drop_level = 1,
groupcaps = {
choppy = {times = {[1]=1.40, [2]=1.00, [3]=0.60}, uses = 30, maxlevel = 3},
snappy = {times = {[1]=1.40, [2]=1.00, [3]=0.60}, uses = 30, maxlevel = 3}
},
damage_groups = {fleshy = 6}
}
})
minetest.register_tool("nssm:duck_beak_pick",{
description = S("Duck Beak Pickaxe"),
inventory_image = "duck_beak_pick.png",
tool_capabilities = {
full_punch_interval = 0.6,
max_drop_level = 3,
groupcaps = {
cracky = {times = {[1]=1.0, [2]=0.8, [3]=0.20}, uses = 3, maxlevel = 3}
},
damage_groups = {fleshy = 5}
}
})
minetest.register_tool("nssm:ant_pick", {
description = S("Ant Pickaxe"),
inventory_image = "ant_pick.png",
tool_capabilities = {
full_punch_interval = 1.2,
max_drop_level = 1,
groupcaps = {
cracky = {times = {[1]=2.00, [2]=1.20, [3]=0.80}, uses = 30, maxlevel = 2}
},
damage_groups = {fleshy = 4}
}
})
minetest.register_tool("nssm:mantis_pick", {
description = S("Mantis Pickaxe"),
inventory_image = "mantis_pick.png",
tool_capabilities = {
full_punch_interval = 1,
max_drop_level = 1,
groupcaps = {
cracky = {times = {[1]=1.6, [2]=1.0, [3]=0.60}, uses = 20, maxlevel = 2}
},
damage_groups = {fleshy = 4}
}
})
minetest.register_tool("nssm:tarantula_warhammer", {
description = S("Tarantula Warhammer"),
inventory_image = "tarantula_warhammer.png",
wield_scale= {x = 2, y = 2, z = 1.5},
tool_capabilities = {
full_punch_interval = 1,
max_drop_level = 1,
groupcaps = {
cracky = {times = {[1]=0.6, [2]=0.5, [3]=0.4}, uses = 80, maxlevel = 1},
fleshy = {times = {[2]=0.8, [3]=0.4}, uses = 200, maxlevel = 1}
},
damage_groups = {fleshy = 13}
}
})
minetest.register_tool("nssm:axe_of_pride", {
description = S("Axe of Pride"),
inventory_image = "axe_of_pride.png",
wield_scale= {x = 2, y = 2, z = 1.5},
tool_capabilities = {
full_punch_interval = 1.3,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.6, [2]=0.5, [3]=0.4}, uses = 100, maxlevel = 1},
fleshy = {times = {[2]=0.8, [3]=0.4}, uses = 400, maxlevel = 1}
},
damage_groups = {fleshy = 16}
},
on_drop = function(itemstack, dropper, pos)
local objects = minetest.get_objects_inside_radius(pos, 10)
local flag = 0
local part = 0
for _,obj in ipairs(objects) do
part = 0
if flag == 0 then
local pname = dropper:get_player_name()
local player_inv = minetest.get_inventory({type="player", name = pname})
if not player_inv:is_empty("main") then
local found = 0
for i = 1, 32 do
local items = player_inv:get_stack("main", i)
local n = items:get_name()
if n == "nssm:energy_globe" then
found = i
break
end
end
if found == 0 then
minetest.chat_send_player(pname,
"You haven't got any Energy Globe!")
return
else
if obj:is_player() then
if obj:get_player_name() ~= dropper:get_player_name() then
obj:set_hp(obj:get_hp() - 10)
dropper:set_hp(dropper:get_hp() + 10)
--flag = 1
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
part = 1
end
else
if obj:get_luaentity().health then
obj:get_luaentity().health = obj:get_luaentity().health -10
dropper:set_hp(dropper:get_hp() + 10)
--flag = 1
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
part = 1
end
end
if part == 1 then
local s = dropper:get_pos()
local p = obj:get_pos()
local m = 2
minetest.add_particlespawner({
amount = 3,
time = 0.1,
minpos = {x = p.x - 0.5, y = p.y - 0.5, z = p.z - 0.5},
maxpos = {x = p.x + 0.5, y = p.y + 0.5, z = p.z + 0.5},
minvel = {
x = (s.x - p.x) * m,
y = (s.y - p.y) * m,
z = (s.z - p.z) * m
},
maxvel = {
x = (s.x - p.x) * m,
y = (s.y - p.y) * m,
z = (s.z - p.z) * m
},
minacc = {x = s.x - p.x, y = s.y - p.y, z = s.z - p.z},
maxacc = {x = s.x - p.x, y = s.y - p.y, z = s.z - p.z},
minexptime = 0.5,
maxexptime = 1,
minsize = 3,
maxsize = 4,
collisiondetection = false,
texture = "heart.png"
})
end
end
end
end
end
end
})
minetest.register_tool("nssm:gratuitousness_battleaxe", {
description = S("Gratuitousness Battleaxe"),
inventory_image = "gratuitousness_battleaxe.png",
wield_scale = {x = 2.2, y = 2.2, z = 1.5},
tool_capabilities = {
full_punch_interval = 1.6,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.6, [2]=0.5, [3]=0.4}, uses = 100, maxlevel = 1},
fleshy = {times = {[2]=0.8, [3]=0.4}, uses = 400, maxlevel = 1}
},
damage_groups = {fleshy = 18}
},
on_drop = function(itemstack, dropper, pos)
local objects = minetest.get_objects_inside_radius(pos, 10)
local flag = 0
local vec = dropper:get_look_dir()
local pos = dropper:get_pos()
for i = 1, 10 do
pos = vector.add(pos, vec)
end
local pname = dropper:get_player_name()
local player_inv = minetest.get_inventory({type = "player", name = pname})
local found = 0
for i = 1, 32 do
local items = player_inv:get_stack("main", i)
local n = items:get_name()
if n == "nssm:energy_globe" then
found = i
break
end
end
if found == 0 then
minetest.chat_send_player(pname, "You haven't got any Energy Globe!")
return
else
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
tnt.boom(pos, {damage_radius = 5, radius = 4, ignore_protection = false})
end
end
})
minetest.register_tool("nssm:sword_of_eagerness", {
description = S("Sword of Eagerness"),
inventory_image = "sword_of_eagerness.png",
wield_scale= {x = 2, y = 2, z = 1},
tool_capabilities = {
full_punch_interval = 0.7,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.6, [2]=0.5, [3]=0.4}, uses = 100, maxlevel = 1},
fleshy = {times = {[2]=0.8, [3]=0.4}, uses = 400, maxlevel = 1}
},
damage_groups = {fleshy = 14}
},
on_drop = function(itemstack, dropper, pos)
local objects = minetest.get_objects_inside_radius(pos, 10)
local flag = 0
for _,obj in ipairs(objects) do
local part = 0
if flag == 0 then
local pname = dropper:get_player_name()
local player_inv = minetest.get_inventory({type="player", name = pname})
if not player_inv:is_empty("main") then
local found = 0
for i = 1, 32 do
local items = player_inv:get_stack("main", i)
local n = items:get_name()
if n == "nssm:energy_globe" then
found = i
break
end
end
if found == 0 then
minetest.chat_send_player(pname,
"You haven't got any Energy Globe!")
return
else
local pos = obj:get_pos()
pos.y = pos.y + 15
if (obj:is_player()) then
if obj:get_player_name() ~= dropper:get_player_name() then
part = 1
obj:set_pos(pos)
--flag = 1
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
end
else
if (obj:get_luaentity().health) then
obj:get_luaentity().old_y = pos.y
obj:set_pos(pos)
part = 1
--flag = 1
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
end
end
if part == 1 then
local s = pos
s.y = s.y - 15
minetest.add_particlespawner({
amount = 25,
time = 0.3,
minpos = vector.subtract(s, 0.5),
maxpos = vector.add(s, 0.5),
minvel = {x = 0, y = 10, z = 0},
maxvel = {x = 0.1, y = 11, z = 0.1},
minacc = {x = 0, y = 1, z = 0},
maxacc = {x = 0, y = 1, z = 0},
minexptime = 0.5,
maxexptime = 1,
minsize = 1,
maxsize = 2,
collisiondetection = false,
texture = "slothful_soul_fragment.png"
})
end
end
end
end
end
end
})
minetest.register_tool("nssm:falchion_of_eagerness", {
description = S("Falchion of Eagerness"),
inventory_image = "falchion_of_eagerness.png",
wield_scale= {x = 2, y = 2, z = 1},
tool_capabilities = {
full_punch_interval = 1,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.6, [2]=0.5, [3]=0.4}, uses = 100, maxlevel = 1},
fleshy = {times = {[2]=0.8, [3]=0.4}, uses = 400, maxlevel = 1}
},
damage_groups = {fleshy = 16}
},
on_drop = function(itemstack, dropper, pos)
local vec = dropper:get_look_dir()
local pos = dropper:get_pos()
for i = 1, 16 do
pos = vector.add(pos, vec)
end
local pname = dropper:get_player_name()
local player_inv = minetest.get_inventory({type="player", name = pname})
if not player_inv:is_empty("main") then
local found = 0
for i = 1, 32 do
local items = player_inv:get_stack("main", i)
local n = items:get_name()
if n == "nssm:life_energy" then
if items:get_count() >= 5 then
found = i
break
end
end
end
if found == 0 then
minetest.chat_send_player(pname, "You haven't got enough life_energy!")
return
else
local s = dropper:get_pos()
minetest.add_particlespawner({
amount = 25,
time = 0.3,
minpos = vector.subtract(s, 0.5),
maxpos = vector.add(s, 0.5),
minvel = {x = 0, y = 10, z = 0},
maxvel = {x = 0.1, y = 11, z = 0.1},
minacc = {x = 0, y = 1, z = 0},
maxacc = {x = 0, y = 1, z = 0},
minexptime = 0.5,
maxexptime = 1,
minsize = 1,
maxsize = 2,
collisiondetection = false,
texture = "slothful_soul_fragment.png"
})
minetest.remove_node(pos) ; pos.y=pos.y + 1
minetest.remove_node(pos) ; pos.y=pos.y - 2
minetest.remove_node(pos)
dropper:set_pos(pos)
s = pos
s.y = s.y + 10
minetest.add_particlespawner({
amount - 25,
time = 0.3,
minpos = vector.subtract(s, 0.5),
maxpos = vector.add(s, 0.5),
minvel = {x = 0, y = -10, z = 0},
maxvel = {x = 0.1, y = -11, z = 0.1},
minacc = {x = 0, y = -1, z = 0},
maxacc = {x = 0, y = -1, z = 0},
minexptime = 0.5,
maxexptime = 1,
minsize = 1,
maxsize = 2,
collisiondetection = false,
texture = "slothful_soul_fragment.png"
})
local items = player_inv:get_stack("main", found)
items:set_count(items:get_count() - 5)
player_inv:set_stack("main", found, items)
end
end
end
})
minetest.register_tool("nssm:sword_of_envy", {
description = S("Sword of Envy"),
inventory_image = "sword_of_envy.png",
wield_scale= {x = 2, y = 2, z = 1},
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.6, [2]=0.5, [3]=0.4}, uses = 100, maxlevel = 1},
fleshy = {times = {[2]=0.5, [3]=0.2}, uses = 400, maxlevel = 1}
},
damage_groups = {fleshy = 14}
},
on_drop = function(itemstack, dropper, pos)
local objects = minetest.get_objects_inside_radius(pos, 10)
local flag = 0
for _,obj in ipairs(objects) do
if flag == 0 then
local pname = dropper:get_player_name()
local player_inv = minetest.get_inventory({type = "player", name = pname})
if not player_inv:is_empty("main") then
local found = 0
for i = 1, 32 do
local items = player_inv:get_stack("main", i)
local n = items:get_name()
if n == "nssm:energy_globe" then
found = i
break
end
end
if found == 0 then
minetest.chat_send_player(pname, "You haven't got any Energy Globe!")
return
else
if obj:is_player() then
if obj:get_player_name() ~= dropper:get_player_name() then
local hpp = obj:get_hp()
obj:set_hp(dropper:get_hp())
dropper:set_hp(hpp)
flag = 1
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
end
else
if obj:get_luaentity().health then
local hpp = obj:get_luaentity().health
obj:get_luaentity().health = dropper:get_hp()
if hpp > 20 then
dropper:set_hp(20)
else
dropper:set_hp(hpp)
end
flag = 1
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
end
end
end
end
end
end
end
})
minetest.register_tool("nssm:sword_of_gluttony", {
description = S("Sword of Gluttony"),
inventory_image = "sword_of_gluttony.png",
wield_scale= {x = 2, y = 2, z = 1},
tool_capabilities = {
full_punch_interval = 1,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.9, [2]=0.7, [3]=0.4}, uses = 100, maxlevel = 1},
fleshy = {times = {[2]=0.6, [3]=0.2}, uses = 400, maxlevel = 1}
},
damage_groups = {fleshy = 14}
},
on_drop = function(itemstack, dropper, pos)
local objects = minetest.get_objects_inside_radius(pos, 10)
local flag = 0
for _,obj in ipairs(objects) do
if flag == 0 then
local pname = dropper:get_player_name()
local player_inv = minetest.get_inventory({type = "player", name = pname})
if not player_inv:is_empty("main") then
local found = 0
for i = 1, 32 do
local items = player_inv:get_stack("main", i)
local n = items:get_name()
if n == "nssm:energy_globe" then
found = i
break
end
end
if found == 0 then
minetest.chat_send_player(pname, "You haven't got any Energy Globe!")
return
else
if obj:is_player() then
if obj:get_player_name() ~= dropper:get_player_name() then
obj:set_hp(obj:get_hp() - 10)
--flag = 1
--take energy globe from inventory:
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
end
else
if obj:get_luaentity().health then
if obj:get_luaentity().health <= 32 then
local pos = obj:get_pos()
obj:remove()
--flag = 1
--take energy globe from inventory:
local items = player_inv:get_stack("main", found)
items:take_item()
player_inv:set_stack("main", found, items)
for i = 1, math.random(4) do
drop = minetest.add_item(pos,
"nssm:roasted_duck_legs 1")
drops(drop)
end
local s = obj:get_pos()
local p = dropper:get_pos()
local m = 3
minetest.add_particlespawner({
amount = 10,
time = 0.1,
minpos = {x = p.x - 0.5, y = p.y - 0.5, z = p.z - 0.5},
maxpos = {x = p.x + 0.5, y = p.y + 0.5, z = p.z + 0.5},
minvel = {
x = (s.x - p.x) * m,
y = (s.y - p.y) * m,
z = (s.z - p.z) * m
},
maxvel = {
x = (s.x - p.x) * m,
y = (s.y - p.y) * m,
z = (s.z - p.z) * m
},
{x = s.x - p.x, y = s.y - p.y, z = s.z - p.z},
{x = s.x - p.x, y = s.y - p.y, z = s.z - p.z},
minexptime = 0.5,
maxexptime = 1,
minsize = 1,
maxsize = 2,
collisiondetection = false,
texture = "gluttonous_soul_fragment.png"
})
end
end
end
end
end
end
end
end
})
minetest.register_tool("nssm:death_scythe", {
description = S("Death Scythe"),
wield_scale= {x = 3, y = 3, z = 1.3},
inventory_image = "death_scythe.png",
tool_capabilities = {
full_punch_interval = 0.2,
max_drop_level = 1,
groupcaps = {
snappy = {times = {[1]=0.1, [2]=0.1, [3]=0.1}, uses = 28000, maxlevel = 1},
fleshy = {times = {[2]=0.1, [3]=0.1}, uses = 28000, maxlevel = 1}
},
damage_groups = {fleshy = 28}
},
groups ={not_in_creative_inventory = 1},
on_drop = function(itemstack, dropper, pos)
local objects = minetest.get_objects_inside_radius(pos, 10)
local flag = 0
dropper:set_hp(dropper:get_hp() - 9)
for _,obj in ipairs(objects) do
flag = 0
if obj:is_player() then
if obj:get_player_name() ~= dropper:get_player_name() then
obj:set_hp(obj:get_hp() - 40)
flag = 1
end
else
if obj:get_luaentity().health then
obj:get_luaentity().health = obj:get_luaentity().health - 40
flag = 1
end
end
if flag == 1 then
for i = 1, math.random(2) do
drop = minetest.add_item(pos, "nssm:energy_globe 1")
if drop then
drop:set_velocity({
x = math.random(-10, 10) / 9,
y = 5,
z = math.random(-10, 10) / 9
})
end
end
end
end
local pos = dropper:get_pos()
local vec = {x = 5, y = 5, z = 5}
local poslist = minetest.find_nodes_in_area(vector.subtract(pos, vec),
vector.add(pos,vec), "default:dirt_with_grass")
for _,v in pairs(poslist) do
minetest.set_node(v, {name = "default:dirt_with_dry_grass"})
if math.random(3) == 1 then
v.y = v.y + 2
drop = minetest.add_item(v, "nssm:life_energy 1")
drops(drop)
end
end
local poslist = minetest.find_nodes_in_area_under_air(vector.subtract(pos, vec),
vector.add(pos,vec), "group:flora")
for _,v in pairs(poslist) do
minetest.set_node(v, {name = "default:dry_shrub"})
if math.random(3) == 1 then
v.y = v.y + 2
drop = minetest.add_item(v, "nssm:life_energy 1")
drops(drop)
end
end
local poslist = minetest.find_nodes_in_area(vector.subtract(pos, vec),
vector.add(pos,vec), "group:leaves")
for _,v in pairs(poslist) do
minetest.set_node(v, {name = "nssm:dead_leaves"})
if math.random(3) == 1 then
v.y = v.y + 2
drop = minetest.add_item(v, "nssm:life_energy 1")
drops(drop)
end
end
end
})
-- recipes
minetest.register_craft({
output = "nssm:web_string",
recipe = {
{"nssm:web", "nssm:web"},
{"nssm:web", "nssm:web"}
}
})
minetest.register_craft({
output = "nssm:dense_web_string",
recipe = {
{"nssm:web_string", "nssm:web_string", "nssm:web_string"},
{"nssm:web_string", "nssm:web_string", "nssm:web_string"},
{"nssm:web_string", "nssm:web_string", "nssm:web_string"}
}
})
minetest.register_craft({
output = "nssm:mantis_sword",
recipe = {
{"nssm:mantis_claw"},
{"nssm:mantis_claw"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:masticone_fang_sword",
recipe = {
{"nssm:masticone_fang", "nssm:masticone_fang"},
{"nssm:masticone_fang", ""},
{"group:stick", ""}
}
})
minetest.register_craft({
output = "nssm:black_ice_tooth",
type = "shapeless",
recipe = {"nssm:digested_sand", "nssm:ice_tooth"}
})
minetest.register_craft({
output = "nssm:web 4",
type = "shapeless",
recipe = {"nssm:silk_gland"}
})
minetest.register_craft({
output = "nssm:crab_light_mace",
recipe = {
{"nssm:crab_chela"},
{"group:stick"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:crab_heavy_mace",
recipe = {
{"", "nssm:crab_chela", ""},
{"nssm:crab_chela", "nssm:crab_chela", "nssm:crab_chela"},
{"", "group:stick", ""}
}
})
minetest.register_craft({
output = "nssm:energy_globe",
recipe = {
{"nssm:life_energy", "nssm:life_energy", "nssm:life_energy"},
{"nssm:life_energy", "nssm:life_energy", "nssm:life_energy"},
{"nssm:life_energy", "nssm:life_energy", "nssm:life_energy"}
}
})
minetest.register_craft({
output = "nssm:great_energy_globe",
recipe = {
{"nssm:energy_globe", "nssm:energy_globe", "nssm:energy_globe"},
{"nssm:energy_globe", "nssm:energy_globe", "nssm:energy_globe"},
{"nssm:energy_globe", "nssm:energy_globe", "nssm:energy_globe"}
}
})
minetest.register_craft({
output = "nssm:superior_energy_globe",
recipe = {
{"nssm:great_energy_globe", "nssm:great_energy_globe", "nssm:great_energy_globe"},
{"nssm:great_energy_globe", "nssm:great_energy_globe", "nssm:great_energy_globe"},
{"nssm:great_energy_globe", "nssm:great_energy_globe", "nssm:great_energy_globe"}
}
})
minetest.register_craft({
output = "nssm:mese_egg",
type = "shapeless",
recipe = {
"nssm:tarantula_chelicerae", "nssm:helmet_masticone_crowned",
"nssm:eyed_tentacle", "nssm:black_ice_tooth", "nssm:superior_energy_globe",
"nssm:sky_feather", "nssm:cursed_pumpkin_seed", "nssm:ant_queen_abdomen",
"nssm:snake_scute"
}
})
--[[minetest.register_craft({
output = "nssm:masticone_skull_crowned",
recipe = {
{"", "nssm:king_duck_crown", ""},
{"", "nssm:masticone_skull", ""},
{"", "", ""}
}
})]]
minetest.register_craft({
output = "nssm:eyed_tentacle",
type = "shapeless",
recipe = {"nssm:lava_titan_eye", "nssm:tentacle_curly"}
})
minetest.register_craft({
output = "nssm:life_energy 9",
type = "shapeless",
recipe = {"nssm:energy_globe"}
})
minetest.register_craft({
output = "nssm:energy_globe 9",
type = "shapeless",
recipe = {"nssm:great_energy_globe"}
})
minetest.register_craft({
output = "nssm:great_energy_globe 9",
type = "shapeless",
recipe = {"nssm:superior_energy_globe"}
})
--[[
local tmp = "nssm:masticone_skull_fragments"
minetest.register_craft({
output = "nssm:masticone_skull",
recipe = {
{tmp, tmp, tmp},
{tmp, tmp, tmp},
{tmp, tmp, tmp}
}
})]]
minetest.register_craft({
output = "nssm:rope 12",
recipe = {
{"nssm:web_string"},
{"nssm:web_string"},
{"nssm:web_string"}
}
})
minetest.register_craft({
output = "nssm:sky_feather",
type = "shapeless",
recipe = {"nssm:sun_feather", "nssm:night_feather"}
})
minetest.register_craft({
output = "nssm:sun_sword",
recipe = {
{"default:diamond"},
{"nssm:sun_feather"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:night_sword",
recipe = {
{"default:diamond"},
{"nssm:night_feather"},
{"group:stick"}
}
})
local function nssm_register_recip(ingredient, dish, tictac)
minetest.register_craft({
type = "cooking",
output = "nssm:" .. dish,
recipe = "nssm:" .. ingredient,
cooktime = tictac
})
end
nssm_register_recip("worm_flesh", "roasted_worm_flesh", 12)
nssm_register_recip("duck_legs", "roasted_duck_legs", 6)
nssm_register_recip("spider_leg", "roasted_spider_leg", 6)
nssm_register_recip("felucco_steak", "roasted_felucco_steak", 10)
nssm_register_recip("werewolf_leg", "roasted_werewolf_leg", 10)
nssm_register_recip("brain", "roasted_brain", 6)
nssm_register_recip("amphibian_heart", "roasted_amphibian_heart", 6)
nssm_register_recip("tentacle", "roasted_tentacle", 6)
nssm_register_recip("frosted_amphibian_heart", "amphibian_heart", 8)
nssm_register_recip("heron_leg", "chichibios_heron_leg", 20)
nssm_register_recip("raw_scrausics_wing", "spicy_scrausics_wing", 12)
nssm_register_recip("ant_leg", "roasted_ant_leg", 6)
nssm_register_recip("crocodile_tail", "roasted_crocodile_tail", 16)
nssm_register_recip("dolidrosaurus_fin", "roasted_dolidrosaurus_fin", 8)
nssm_register_recip("amphibian_ribs", "roasted_amphibian_ribs", 12)
nssm_register_recip("mantis_meat", "roasted_mantis_meat", 6)
nssm_register_recip("spider_meat", "roasted_spider_meat", 6)
nssm_register_recip("silk_gland", "roasted_silk_gland", 4)
nssm_register_recip("larva_juice", "larva_soup", 20)
minetest.register_craft({
output = "nssm:larva_juice",
type = "shapeless",
recipe = {"nssm:larva_meat", "bucket:bucket_empty"}
})
minetest.register_craft({
output = "nssm:ant_sword",
recipe = {
{"nssm:ant_mandible"},
{"nssm:ant_mandible"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:ant_billhook",
recipe = {
{"nssm:ant_mandible", "nssm:ant_mandible"},
{"nssm:ant_mandible", "group:stick"},
{"", "group:stick"}
}
})
minetest.register_craft({
output = "nssm:ant_shovel",
recipe = {
{"nssm:ant_mandible"},
{"group:stick"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:duck_beak_shovel",
recipe = {
{"nssm:duck_beak"},
{"group:stick"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:duck_beak_pick",
recipe = {
{"nssm:duck_beak", "nssm:duck_beak", "nssm:duck_beak"},
{"", "group:stick", ""},
{"", "group:stick", ""}
}
})
minetest.register_craft({
output = "nssm:sky_iron 30",
recipe = {
{"default:steelblock", "default:steelblock", "default:steelblock"},
{"default:steelblock", "nssm:sky_feather", "default:steelblock"},
{"default:steelblock", "default:steelblock", "default:steelblock"}
}
})
minetest.register_craft({
output = "nssm:stoneater_pick",
recipe = {
{"nssm:stoneater_mandible", "nssm:stoneater_mandible", "nssm:stoneater_mandible"},
{"", "group:stick", ""},
{"", "group:stick", ""}
}
})
minetest.register_craft({
output = "nssm:felucco_knife",
recipe = {
{"nssm:felucco_horn"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:little_ice_tooth_knife",
recipe = {
{"nssm:little_ice_tooth"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:manticore_spine_knife",
recipe = {
{"nssm:manticore_spine"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:ant_pick",
recipe = {
{"nssm:ant_mandible", "nssm:ant_mandible", "nssm:ant_mandible"},
{"", "group:stick", ""},
{"", "group:stick", ""}
}
})
minetest.register_craft({
output = "nssm:mantis_pick",
recipe = {
{"nssm:mantis_claw", "nssm:mantis_claw", "nssm:mantis_claw"},
{"", "group:stick", ""},
{"", "group:stick", ""}
}
})
minetest.register_craft({
output = "nssm:mantis_axe",
recipe = {
{"nssm:mantis_claw", "nssm:mantis_claw"},
{"nssm:mantis_claw", "group:stick"},
{"", "group:stick"}
}
})
minetest.register_craft({
output = "nssm:tarantula_warhammer",
recipe = {
{"nssm:tarantula_chelicerae"},
{"group:stick"},
{"group:stick"}
}
})
minetest.register_craft({
output = "nssm:mantis_battleaxe",
recipe = {
{"nssm:mantis_claw", "nssm:mantis_claw", "nssm:mantis_claw"},
{"nssm:mantis_claw", "group:stick", "nssm:mantis_claw"},
{"", "group:stick", ""}
}
})
if minetest.get_modpath("nssb") then
minetest.register_craft({
output = "nssm:axe_of_pride",
recipe = {
{"nssm:proud_moranga", "nssm:proud_moranga", "nssm:proud_moranga"},
{"nssm:proud_moranga", "nssb:moranga_ingot", ""},
{"", "nssb:moranga_ingot", ""}
}
})
minetest.register_craft({
output = "nssm:gratuitousness_battleaxe",
recipe = {
{"nssm:greedy_moranga", "nssm:greedy_moranga", "nssm:greedy_moranga"},
{"nssm:greedy_moranga", "nssb:moranga_ingot", "nssm:greedy_moranga"},
{"", "nssb:moranga_ingot", ""}
}
})
minetest.register_craft({
output = "nssm:sword_of_envy",
recipe = {
{"nssm:envious_moranga"},
{"nssm:envious_moranga"},
{"nssb:moranga_ingot"}
}
})
minetest.register_craft({
output = "nssm:sword_of_eagerness",
recipe = {
{"nssm:slothful_moranga"},
{"nssm:slothful_moranga"},
{"nssb:moranga_ingot"}
}
})
minetest.register_craft({
output = "nssm:falchion_of_eagerness",
recipe = {
{"nssm:slothful_moranga", "nssm:slothful_moranga"},
{"nssm:slothful_moranga", ""},
{"nssb:moranga_ingot", ""}
}
})
minetest.register_craft({
output = "nssm:sword_of_gluttony",
recipe = {
{"nssm:gluttonous_moranga", "nssm:gluttonous_moranga", "nssm:gluttonous_moranga"},
{"", "nssm:gluttonous_moranga", ""},
{"", "nssb:moranga_ingot", ""}
}
})
local function nssm_register_moranga(viz)
local tmp = "nssm:" .. viz .. "_soul_fragment"
minetest.register_craft({
output = "nssm:" .. viz .. "_moranga",
recipe = {
{tmp, "nssb:moranga_ingot", tmp},
{"nssb:moranga_ingot", tmp, "nssb:moranga_ingot"},
{tmp, "nssb:moranga_ingot", tmp}
}
})
end
nssm_register_moranga("lustful")
nssm_register_moranga("greedy")
nssm_register_moranga("slothful")
nssm_register_moranga("wrathful")
nssm_register_moranga("gluttonous")
nssm_register_moranga("envious")
nssm_register_moranga("proud")
end
-- Eggs
local function nssm_register_egg(name, descr)
minetest.register_craftitem("nssm:" .. name, {
description = S(descr .. " Egg"),
image = name.."_egg.png",
on_place = function(itemstack, placer, pointed_thing)
local pos1 = minetest.get_pointed_thing_position(pointed_thing, true)
pos1.y = pos1.y + 1.5
core.after(0.1, function()
minetest.add_entity(pos1, "nssm:" .. name)
end)
itemstack:take_item()
return itemstack
end
})
end
local function nssm_register_egg2(name, descr) -- mobs you can"t catch
minetest.register_craftitem("nssm:" .. name .. "_egg", {
description = S(descr .. " Egg"),
image = name .. "_egg.png",
on_place = function(itemstack, placer, pointed_thing)
local pos1 = minetest.get_pointed_thing_position(pointed_thing, true)
pos1.y = pos1.y + 1.5
core.after(0.1, function()
minetest.add_entity(pos1, "nssm:" .. name)
end)
itemstack:take_item()
return itemstack
end
})
end
nssm_register_egg("flying_duck", "Flying Duck")
nssm_register_egg("stone_eater", "Stoneater")
nssm_register_egg("signosigno", "Signosigno")
nssm_register_egg("bloco", "Bloco")
nssm_register_egg("sand_bloco", "Sand Bloco")
nssm_register_egg("swimming_duck", "Swimming Duck")
nssm_register_egg("duck", "Duck")
nssm_register_egg2("duckking", "Duckking")
nssm_register_egg("enderduck", "Enderduck")
nssm_register_egg("spiderduck", "Spiderduck")
nssm_register_egg2("echidna", "Echidna")
nssm_register_egg("werewolf", "Werewolf")
nssm_register_egg("white_werewolf", "White Werewolf")
nssm_register_egg("snow_biter", "Snow Biter")
nssm_register_egg2("icelamander", "Icelamander")
nssm_register_egg("icesnake", "Icesnake")
nssm_register_egg2("lava_titan", "Lava Titan")
nssm_register_egg("masticone", "Masticone")
nssm_register_egg("mantis_beast", "Mantis Beast")
nssm_register_egg("mantis", "Mantis")
nssm_register_egg("larva", "Larva")
nssm_register_egg2("phoenix", "Phoenix")
nssm_register_egg2("night_master", "Night Master")
nssm_register_egg("scrausics", "Scrausics")
nssm_register_egg("moonheron", "Moonheron")
nssm_register_egg("sandworm", "Sandworm")
nssm_register_egg2("giant_sandworm", "Giant Sandworm")
nssm_register_egg2("ant_queen", "Ant Queen")
nssm_register_egg("ant_soldier", "Ant Soldier")
nssm_register_egg("ant_worker", "Ant Worker")
nssm_register_egg("crocodile", "Crocodile")
nssm_register_egg("dolidrosaurus", "Dolidrosaurus")
nssm_register_egg("crab", "Crab")
nssm_register_egg("octopus", "Octopus")
nssm_register_egg("xgaloctopus", "Xgaloctopus")
nssm_register_egg("black_widow", "Black Widow")
nssm_register_egg("uloboros", "Uloboros")
nssm_register_egg2("tarantula", "Tarantula")
nssm_register_egg("daddy_long_legs", "Daddy Long Legs")
nssm_register_egg2("kraken", "Kraken")
nssm_register_egg2("pumpking", "Pumpking")
nssm_register_egg("manticore", "Manticore")
nssm_register_egg("felucco", "Felucco")
nssm_register_egg("pumpboom_large", "Large Pumpboom")
nssm_register_egg("pumpboom_small", "Small Pumpboom")
nssm_register_egg("pumpboom_medium", "Medium Pumpboom")
nssm_register_egg2("mordain", "Mordain")
nssm_register_egg2("morgre", "Morgre")
nssm_register_egg2("morvy", "Morvy")
nssm_register_egg2("morgut", "Morgut")
nssm_register_egg2("morde", "Morde")
nssm_register_egg2("morlu", "Morlu")
nssm_register_egg2("morwa", "Morwa")
--nssm_register_egg("morvalar", "Morvalar")
minetest.register_craftitem("nssm:mese_egg", {
description = S("Mese Egg"),
image = "mese_egg.png",
on_place = function(itemstack, placer, pointed_thing)
local pos1 = minetest.get_pointed_thing_position(pointed_thing, true)
pos1.y = pos1.y + 1.5
minetest.add_particlespawner({
amount = 200,
time = 0.2,
minpos = {x = pos1.x - 1, y = pos1.y - 1, z = pos1.z - 1},
maxpos = {x = pos1.x + 1, y = pos1.y + 4, z = pos1.z + 1},
minvel = {x = 0, y = 0, z = 0},
maxvel = {x = 1, y = 5, z = 1},
minacc = {x = -0.5, y = 5, z = -0.5},
maxacc = {x = 0.5, y = 5, z = 0.5},
minexptime = 1,
maxexptime = 3,
minsize = 2,
maxsize = 4,
collisiondetection = false,
vertical = false,
texture = "tnt_smoke.png"
})
core.after(0.4, function()
minetest.add_entity(pos1, "nssm:mese_dragon")
end)
itemstack:take_item()
return itemstack
end
})
-- experimental morwa statue
minetest.register_node("nssm:morwa_statue", {
description = S("Morwa Statue"),
drawtype = "mesh",
mesh = "morwa_statue.b3d",
tiles = {"morwa_statue.png"},
inventory_image = "morwa_statue.png",
groups = {not_in_creative_inventory = 1},
paramtype = "light",
paramtype2 = "facedir",
selection_box = {
type = "fixed", fixed = {-1, -0.5, -1, 1, 3, 1}
},
collision_box = {
type = "fixed", fixed = {-1, -0.5, -1, 1, 3, 1}
}
})
-- Abm to make the conversion between statue and the entity, caused by light
minetest.register_abm({
nodenames = {"nssm:morwa_statue"},
neighbors = {"air"},
interval = 2,
chance = 1,
action = function(pos, node)
local pos1 = {x = pos.x, y = pos.y + 1, z = pos.z}
local n = minetest.get_node(pos1).name
if n ~= "air" then
return
end
if (minetest.get_node_light(pos1) > 8) then
minetest.add_entity(pos1, "nssm:morwa")
minetest.remove_node(pos)
end
end
})
-- Eggs recipes
minetest.register_craft({
output = "nssm:duck",
recipe = {
{"", "nssm:duck_beak", ""},
{"nssm:duck_feather", "nssm:energy_globe", "nssm:duck_feather"},
{"nssm:duck_legs", "nssm:duck_feather", "nssm:duck_legs"}
}
})
minetest.register_craft({
output = "nssm:flying_duck",
recipe = {
{"nssm:duck_feather", "nssm:duck_beak", "nssm:duck_feather"},
{"nssm:duck_feather", "nssm:energy_globe", "nssm:duck_feather"},
{"nssm:duck_legs", "nssm:duck_feather", "nssm:duck_legs"}
}
})
minetest.register_craft({
output = "nssm:enderduck",
recipe = {
{"nssm:black_duck_feather", "nssm:duck_beak", "nssm:black_duck_feather"},
{"nssm:duck_legs", "nssm:energy_globe", "nssm:duck_legs"},
{"nssm:duck_legs", "", "nssm:duck_legs"}
}
})
minetest.register_craft({
output = "nssm:swimming_duck",
recipe = {
{"nssm:duck_feather", "nssm:duck_beak", "nssm:duck_feather"},
{"nssm:duck_legs", "nssm:energy_globe", "nssm:duck_legs"},
{"nssm:duck_feather", "nssm:duck_feather", "nssm:duck_feather"}
}
})
minetest.register_craft({
output = "nssm:spiderduck",
recipe = {
{"nssm:duck_legs", "nssm:duck_beak", "nssm:duck_legs"},
{"nssm:black_duck_feather", "nssm:energy_globe", "nssm:black_duck_feather"},
{"nssm:duck_legs", "nssm:black_duck_feather", "nssm:duck_legs"}
}
})
minetest.register_craft({
output = "nssm:duckking_egg",
recipe = {
{"", "nssm:helmet_crown", ""},
{"nssm:duck_feather", "nssm:duck_beak", "nssm:duck_feather"},
{"nssm:duck_legs", "nssm:superior_energy_globe", "nssm:duck_legs"}
}
})
minetest.register_craft({
output = "nssm:bloco",
recipe = {
{"nssm:bloco_skin", "nssm:bloco_skin", "nssm:bloco_skin"},
{"nssm:bloco_skin", "nssm:energy_globe", "nssm:bloco_skin"},
{"nssm:bloco_skin", "nssm:bloco_skin", "nssm:bloco_skin"}
}
})