185 lines
5.5 KiB
Lua
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!")
|