185 lines
5.5 KiB
Lua

--Spawn code
function npc_spawner(pos, SPAWN_TYPE)
local MAX_NPC = 5
local count = table.getn(minetest.get_objects_inside_radius(pos, 50))
if count == nil then
count = 0
end
if count <= MAX_NPC then
minetest.add_entity({x=pos.x+math.random(-1,1),y=pos.y+math.random(2,3),z=pos.z+math.random(-1,1)}, SPAWN_TYPE)
end
end
--Item Code for default npcs
minetest.register_node("peaceful_npc:summoner_npc_def", {
description = "Default NPC Summoner",
image = "peaceful_npc_npc_summoner_def.png",
inventory_image = "peaceful_npc_npc_summoner_def.png",
wield_image = "peaceful_npc_npc_summoner_def.png",
paramtype = "light",
tiles = {"peaceful_npc_spawnegg.png"},
is_ground_content = true,
drawtype = "glasslike",
groups = {crumbly=3},
selection_box = {
type = "fixed",
fixed = {0,0,0,0,0,0}
},
sounds = default.node_sound_dirt_defaults(),
on_place = function(itemstack, placer, pointed)
local name = placer:get_player_name()
if (minetest.check_player_privs(name, {peacefulnpc=true})) then
pos = pointed.above
pos.y = pos.y + 1
minetest.add_entity(pointed.above,"peaceful_npc:npc_def")
itemstack:take_item(1)
else
minetest.chat_send_player(name, "Nope! You need to have the peacefulnpc priv!")
end
return itemstack
end
})
minetest.register_node("peaceful_npc:spawner_npc_def", {
description = "Default NPC Portal",
drawtype = "glasslike",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_glass_defaults(),
tiles = {"peaceful_npc_spawner_def.png"},
sunlight_propagates = true,
paramtype = "light",
mesecons = {effector = {
action_on = function(pos) npc_spawner(pos, "peaceful_npc:npc_def") end,
}}
})
minetest.register_abm({
nodenames = {"peaceful_npc:spawner_npc_def"},
interval = 20,
chance = 10,
action = function(pos)
npc_spawner(pos, "peaceful_npc:npc_def")
end,
})
--Item Code for fast npcs
minetest.register_node("peaceful_npc:summoner_npc_fast", {
description = "Fast NPC Summoner",
image = "peaceful_npc_npc_summoner_fast.png",
inventory_image = "peaceful_npc_npc_summoner_fast.png",
wield_image = "peaceful_npc_npc_summoner_fast.png",
paramtype = "light",
tiles = {"peaceful_npc_spawnegg.png"},
is_ground_content = true,
drawtype = "glasslike",
groups = {crumbly=3},
selection_box = {
type = "fixed",
fixed = {0,0,0,0,0,0}
},
sounds = default.node_sound_dirt_defaults(),
on_place = function(itemstack, placer, pointed)
local name = placer:get_player_name()
if (minetest.check_player_privs(name, {peacefulnpc=true})) then
pos = pointed.above
pos.y = pos.y + 1
minetest.add_entity(pointed.above,"peaceful_npc:npc_fast")
itemstack:take_item(1)
else
minetest.chat_send_player(name, "Nope! You need to have the peacefulnpc priv!")
end
return itemstack
end
})
minetest.register_node("peaceful_npc:spawner_npc_fast", {
description = "Fast NPC Portal",
drawtype = "glasslike",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_glass_defaults(),
tiles = {"peaceful_npc_spawner_fast.png"},
sunlight_propagates = true,
paramtype = "light",
mesecons = {effector = {
action_on = function(pos) npc_spawner(pos, "peaceful_npc:npc_fast") end,
}}
})
minetest.register_abm({
nodenames = {"peaceful_npc:spawner_npc_fast"},
interval = 30,
chance = 10,
action = function(pos)
npc_spawner(pos, "peaceful_npc:npc_fast")
end,
})
--Item Code for dwarf npcs
minetest.register_node("peaceful_npc:summoner_npc_dwarf", {
description = "Dwarf NPC Summoner",
image = "peaceful_npc_npc_summoner_dwarf.png",
inventory_image = "peaceful_npc_npc_summoner_dwarf.png",
wield_image = "peaceful_npc_npc_summoner_dwarf.png",
paramtype = "light",
tiles = {"peaceful_npc_spawnegg.png"},
is_ground_content = true,
drawtype = "glasslike",
groups = {crumbly=3},
selection_box = {
type = "fixed",
fixed = {0,0,0,0,0,0}
},
sounds = default.node_sound_dirt_defaults(),
on_place = function(itemstack, placer, pointed)
local name = placer:get_player_name()
if (minetest.check_player_privs(name, {peacefulnpc=true})) then
pos = pointed.above
pos.y = pos.y + 1
minetest.add_entity(pointed.above,"peaceful_npc:npc_dwarf")
itemstack:take_item(1)
else
minetest.chat_send_player(name, "Nope! You need to have the peacefulnpc priv!")
end
return itemstack
end
})
minetest.register_node("peaceful_npc:spawner_npc_dwarf", {
description = "Dwarf NPC Portal",
drawtype = "glasslike",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_glass_defaults(),
tiles = {"peaceful_npc_spawner_dwarf.png"},
sunlight_propagates = true,
paramtype = "light",
mesecons = {effector = {
action_on = function(pos) npc_spawner(pos, "peaceful_npc:npc_dwarf") end,
}}
})
minetest.register_abm({
nodenames = {"peaceful_npc:spawner_npc_dwarf"},
interval = 60,
chance = 10,
action = function(pos)
npc_spawner(pos, "peaceful_npc:npc_dwarf")
end,
})
if instakill_sword == true then
--Adds instakill sword
minetest.register_tool("peaceful_npc:sword_instakill", {
description = "Instakill Sword",
inventory_image = "default_tool_steelsword.png",
tool_capabilities = {
full_punch_interval = 0.1,
max_drop_level = 1,
groupcaps={
fleshy={times={[1]=0.005, [2]=0.005, [3]=0.005}, uses=0, maxlevel=3},
snappy={times={[2]=0.005, [3]=0.005}, uses=0, maxlevel=2},
choppy={times={[3]=0.005}, uses=0, maxlevel=1}
},
}
})
end
print("Peaceful NPC items.lua loaded! By jojoa1997!")