Merge branch 'development'

master
npx 2016-11-23 00:58:03 +01:00
commit 24bb0a311c
42 changed files with 1835 additions and 518 deletions

View File

@ -1,5 +1,8 @@
# nssb
Mod in development
Mod to use with nssm
It adds buildings with monsters spawners around the world and the Morlendor dimension which can be reached by portals that spawns like the other buildings.
License: LGPL
License for media: CC BY-SA 4.0
Mod to use with nssb
It adds buildings with monsters spawners around the world

View File

@ -1,2 +1,7 @@
v1.0 - 22-03-16
v2.0 - 22-11-16
- added the Morlendor dimension and all its materials;
- added the compatibility with the mapgen v7 and valleys (and also fractal and flat);
- added the portals to go to Morlendor and come back.
v1.0 - 22-03-16
First stable release

519
init.lua
View File

@ -1,515 +1,6 @@
--Nssb
--Materials
minetest.register_node("nssb:mossy_stone_brick", {
description = "Mossy Stone Brick",
tiles = {"mossy_stone_brick.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:very_mossy_stone_brick", {
description = "Very Mossy Stone Brick",
tiles = {"very_mossy_stone_brick.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:mossy_stone_column", {
description = "Mossy Stone Column",
tiles = {"mossy_stone_column.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:stone_column", {
description = "Stone Column",
tiles = {"stone_column.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:marine_stone", {
description = "Seastone",
tiles = {"marine_stone.png"},
is_ground_content = false,
groups = {cracky=1, stone=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:marine_brick", {
description = "Seastone Brick",
tiles = {"marine_brick.png"},
is_ground_content = false,
groups = {stone=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:marine_meselamp", {
description = "Sea Meselamp",
tiles = {"marine_meselamp.png"},
is_ground_content = false,
groups = {cracky=3},
drop = "",
light_source = 15,
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("nssb:mantis_clay", {
description = "Mantis Clay",
tiles = {"mantis_clay.png"},
is_ground_content = false,
groups = {cracky=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:hardened_mantis_clay", {
description = "Hardened Mantis Clay",
tiles = {"hard_mantis_clay.png"},
is_ground_content = false,
groups = {cracky=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:ant_stone", {
description = "Ant Stone",
tiles = {"ant_stone.png"},
is_ground_content = false,
groups = {cracky=1, stone=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:vine", {
description = "Vine",
drawtype = "signlike",
tiles = {"climbing_plant.png"},
inventory_image = {"vine.png"},
walkable = false,
climbable = true,
paramtype = "light",
paramtype2 = "wallmounted",
selection_box = {type="wallmounted"},
legacy_wallmounted = true,
groups = {flammable=3, snappy = 3},
sounds = default.node_sound_leaves_defaults()
})
minetest.register_node("nssb:liana", {
description = "Liana",
drawtype = "plantlike",
inventory_image = {"liana.png"},
tiles = {"liana.png"},
paramtype = "light",
walkable = false,
climbable = true,
groups = {flammable=3, snappy = 3},
sounds = default.node_sound_leaves_defaults()
})
minetest.register_node("nssb:vertical_web", {
description = "Vertical Web",
inventory_image = "vertical_web.png",
tile_images = {"vertical_web.png"} ,
drawtype = "plantlike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "nssm:web",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range= 0,
liquid_alternative_flowing = "nssb:vertical_web",
liquid_alternative_source = "nssb:vertical_web",
liquid_viscosity = 20,
groups = {flammable=2, snappy=1, liquid=1},
})
minetest.register_node("nssb:web_cone_up", {
description = "Web Cone Up",
inventory_image = "web_cone_up.png",
tile_images = {"web_cone_up.png"} ,
drawtype = "plantlike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "nssm:web",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range= 0,
liquid_alternative_flowing = "nssb:web_cone_up",
liquid_alternative_source = "nssb:web_cone_up",
liquid_viscosity = 20,
groups = {flammable=2, snappy=1, liquid=1},
})
minetest.register_node("nssb:web_cone_down", {
description = "Web Cone Down",
inventory_image = "web_cone_down.png",
tile_images = {"web_cone_down.png"} ,
drawtype = "plantlike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "nssm:web",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range= 0,
liquid_alternative_flowing = "nssb:web_cone_down",
liquid_alternative_source = "nssb:web_cone_down",
liquid_viscosity = 20,
groups = {flammable=2, snappy=1, liquid=1},
})
minetest.register_craft({
output = 'nssb:marine_meselamp',
recipe = {
{'default:glass', 'bucket:bucket_water', 'default:glass'},
{'default:glass', 'default:mese_crystal', 'default:glass'},
{'default:glass', 'bucket:bucket_water', 'default:glass'},
}
})
minetest.register_node("nssb:web_cocoon", {
description = "Web Cocoon",
tiles = {"web_cocoon.png"},
drop = {
max_items = 1,
items = {
{
items = {'node "nssm:spider_leg" 2'},
rarity = 4
},
{
items = {'node "nssm:web 1'},
rarity = 4
},
{
items = {'node "nssm:ant_sword" 1'},
rarity = 20
},
{
items = {'node "nssm:sun_sword" 1'},
rarity = 100
},
{
items = {'node "nssm:night_sword" 1'},
rarity = 100
},
{
items = {'node "nssm:spear_ant" 1'},
rarity = 20
},
{
items = {'node "nssm:spear_mantis" 1'},
rarity = 20
},
{
items = {'node "nssm:spear_manticore" 1'},
rarity = 22
},
{
items = {'node "nssm:spear_little_ice_tooth" 1'},
rarity = 20
},
{
items = {'node "nssm:spear_duck_beak" 1'},
rarity = 20
},
{
items = {'node "default:sword_wood" 1'},
rarity = 14
},
{
items = {'node "default:sword_steel" 1'},
rarity = 20
},{
items = {'node "default:sword_mese" 1'},
rarity = 20
},{
items = {'node "default:axe_bronze" 1'},
rarity = 20
},
{
items = {'node "nssm:raw_scrausics_wing" 2'},
rarity = 20
},
{
items = {'node "nssm:nssm:mantis_claw" 1'},
rarity = 20
},
{
items = {'node "default:axe_mese" 1'},
rarity = 20
},
{
items = {'node "nssm:mantis_sword" 1'},
rarity = 20
},
{
items = {'node "default:axe_steel" 1'},
rarity = 20
},
{
items = {'node "nssm:crab_light_mace" 1'},
rarity = 20
},
{
items = {'node "nssm:masticone_fang_sword" 1'},
rarity = 20
}
}
},
is_ground_content = false,
groups = {snappy=1, flammable=2},
})
--schematichs generation
function nssb_register_buildings(
build, -- name of the schematic
rand, -- 1/rand is the probability of the spawning of the schematic if the place found is acceptable
posschem, -- the block on which the schematic need to be to spawn
down, -- useful in finding flat surfaces, down indetify the x and z coordinates of a block 1 under posschem
downblock, -- the block that is necessary to find in down to place the schematic
above, -- when you need to place the schem under something (water, air, jungleleaves...) above is the number of blocks above posschem
aboveblock, -- the name of this block above above-times posschem
radius, -- the radius in which the function search for the "near" block
near, -- the block that is necessary to spawn the schem in the radius
side, -- the mesure of the side of the schematic, it is necessary to put the dirt under it
underground, -- if true the schematic need to spawn underground
height, -- under this heigh the schematic can spawn. If nil the schematic can spawn everywhere underground
ice, -- if true fill the space under the schem with ice and not with dirt as standard
exact_height) -- exact_height=exact_eight under the surface in the correct place
minetest.register_on_generated(function(minp, maxp, seed)
if underground==false then
local i, j, k
local flag=0
local posd
i = math.random(minp.x, maxp.x)
k = math.random(minp.z, maxp.z)
for j=minp.y,maxp.y do
local pos1 = {x=i, y=j, z=k}
local pos2 = {x=i+down, y=j-1, z=k+down}
local pos3 = {x=i, y=j+above, z=k}
local n = minetest.env:get_node(pos1).name
local u = minetest.env:get_node(pos2).name
local d = minetest.env:get_node(pos3).name
if (downblock==nil) then
u = downblock
end
if (aboveblock==nil) then
d = aboveblock
end
if n== posschem and u== downblock and d==aboveblock and flag==0 and math.random(1,rand)==1 then
if minetest.find_node_near(pos3, radius, near) then
minetest.place_schematic(pos1, minetest.get_modpath("nssb").."/schems/".. build ..".mts", "0", {}, true)
--minetest.chat_send_all("Added schematic in "..(minetest.pos_to_string(pos1)))
posd=pos1
flag=1
end
end
end
--Puts dirt/ice under the schematic to fill the space under it
if flag==1 and side>0 then
for dx = 0,side do
for dz = 0,side do
local dy=posd.y-1
local f = {x = posd.x+dx, y=dy, z=posd.z+dz}
local fg = minetest.env:get_node(f).name
if ice == false then
while fg=="air" do
minetest.env:set_node(f, {name="default:dirt"})
f.y=f.y-1
fg = minetest.env:get_node(f).name
end
else
while fg=="air" do
minetest.env:set_node(f, {name="default:ice"})
f.y=f.y-1
fg = minetest.env:get_node(f).name
end
end
end
end
end
else --underground==true
if minp.y<0 then
--minetest.chat_send_all("Posmin: "..(minetest.pos_to_string(minp)).." Posmax: "..(minetest.pos_to_string(maxp)))
local i, jj, k, j
local flag=0
i = math.random(minp.x, maxp.x)
k = math.random(minp.z, maxp.z)
jj = math.random(minp.y, maxp.y)
if height~=nil then
if height>maxp.y then
j = jj
elseif height>minp.y and height<maxp.y then
j = math.random(minp.y, height)
else
return
end
else
if jj>0 then
j = math.random(minp.y, 0)
end
end
local pos1={x=i, y=j, z=k}
local n = minetest.env:get_node(pos1).name
if minetest.find_node_near(pos1, radius, "default:lava_source")or flag==1 then
return
else
if n==posschem and math.random(1,rand)==1 then
minetest.place_schematic(pos1, minetest.get_modpath("nssb").."/schems/".. build ..".mts", "0", {}, true)
flag=1
--minetest.chat_send_all("Added schematic in "..(minetest.pos_to_string(pos1)))
end
end
end
end
end)
end
nssb_register_buildings ('spiaggiagranchius', 2, "default:sand", 3, "default:sand", 2, "air", 3, "air", 0, false, nil, false, false)
nssb_register_buildings ('acquagranchius', 3, "default:sand", 3, "default:sand", 12,"default:water_source", 3, "default:water_source", 0, false, nil, false, false)
nssb_register_buildings ('ooteca', 6, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 24, "default:tree", 8, false, nil, false, false)
nssb_register_buildings ('minuscolaooteca', 6, "default:dirt_with_grass",3 , "default:dirt", 2, "air", 24, "default:tree", 2, false, nil, false, false)
nssb_register_buildings ('piccolaooteca', 6, "default:dirt_with_grass", 2, "default:dirt", 2, "air", 24, "default:tree", 4, false, nil, false, false)
nssb_register_buildings ('arcate', 8, "default:sand", 3, "default:sand", 13, "default:water_source", 3, "default:water_source",0, false, nil, false, false)
nssb_register_buildings ('grandepiramide', 8, "default:dirt", 3, "default:dirt", 20, "default:water_source", 3, "default:water_source", 0, false, nil, false, false)
nssb_register_buildings ('collina', 5, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 3, "air", 12, false, nil, false, false)
nssb_register_buildings ('megaformicaio', 7, "default:dirt_with_grass", 4, "default:dirt", 2, "air", 3, "air", 25, false, nil, false, false)
nssb_register_buildings ('antqueenhill', 8, "default:dirt_with_grass", 4, "default:dirt", 2, "air", 3, "air", 21, false, nil, false, false)
nssb_register_buildings ('rovine1', 4, "default:dirt_with_grass", 3, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
--nssb_register_buildings ('rovine2', 1, "default:stone", 0, "air", 0, "air", 24, "default:jungletree", 5, true, -8, false, false)
nssb_register_buildings ('rovine3', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('rovine4', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('rovine5', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('rovine6', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('rovine7', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('rovine8', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('rovine9', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('rovine10', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('bozzoli', 4, "default:dirt_with_grass", 1, "default:dirt", 2, "air", 8, "default:jungletree", 10, false, nil, false, false)
nssb_register_buildings ('blocohouse', 4, "default:stone", 0, "air", 0, "air", 3, "default:stone", 5, true, -10, false, false)
nssb_register_buildings ('bigblocohouse', 4, "default:stone", 0, "air", 0, "air", 3, "default:stone", 5, true, -20, false, false)
nssb_register_buildings ('blocobiggesthouse', 4, "default:stone", 0, "air", 0, "air", 3, "default:stone", 5, true, -30, false, false)
nssb_register_buildings ('picco', 12, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 10, false, nil, false, false)
nssb_register_buildings ('piccoghiaccio', 12, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 10, false, nil, true, false)
nssb_register_buildings ('icehall', 8, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 30, false, nil, true, false)
nssb_register_buildings ('piccomoonheron', 8, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 3, false, nil, true, false)
nssb_register_buildings ('doppiopiccoghiaccio', 11, "default:dirt_with_snow", 1, "default:dirt", 1, "air", 3, "default:dirt_with_snow", 7, false, nil, true, false)
nssb_register_buildings ('doppiopiccosabbia', 11, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 7, false, nil, false, false)
nssb_register_buildings ('piccoscrausics', 8, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 3, false, nil, false, false)
nssb_register_buildings ('fossasand', 1, "default:desert_sand", 1, "default:desert_stone", 1, "air", 3, "default:desert_sand", 16, false, nil, false, false)
--Eggs
function nssb_register_eggs (
name, -- name of the mobs and the eggs
descr, -- Description of the mob and eggs
int, -- time interval between each birth
wide, -- the radius in wich mobs are generated
troppi, -- maximun number of mobs spawned
neigh, -- block that need to be near for spawning the mobs
night, --if only at night
lumin) --luminosity parameter of the egg_block
minetest.register_node("nssb:".. name .."_eggs", {
description = descr .." Eggs",
tiles = {name .."_eggs.png"},
light_source = lumin,
is_ground_content = false,
groups = {choppy=1},
})
minetest.register_abm({
nodenames = {"nssb:".. name .."_eggs"},
neighbors = {neigh},
interval = int,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local pos1 = {x=pos.x+math.random(-wide,wide), y=pos.y+0.5, z=pos.z+math.random(-wide,wide)}
local n = minetest.env:get_node(pos1).name
if n ~= "air" and n ~= "default:water_source" then
return
end
local count = 0
local objects = minetest.env:get_objects_inside_radius(pos, 12)
for _,obj in ipairs(objects) do
count = count +1
--minetest.chat_send_all("Count: "..count)
end
local t = minetest.get_timeofday()
--minetest.chat_send_all("Time of day: "..t)
if (t>=0.75 and t<=1) or (t>=0 and t<=0.25) or night==false then
if count < troppi then
minetest.add_entity(pos1, "nssm:" .. name)
end
end
end
})
end
nssb_register_eggs ('ant_worker', 'Ant Worker', 16, 2, 4, "air", false, 5)
nssb_register_eggs ('ant_soldier', 'Ant Soldier', 16, 2, 4, "air", false, 5)
nssb_register_eggs ('larva', 'Larva', 16, 2, 4, "air", false, 5)
nssb_register_eggs ('crab', 'Crab', 18, 2, 4, "default:sand", false, 5)
nssb_register_eggs ('black_widow', 'Black Widow', 18, 2, 4, "air", false, 5)
nssb_register_eggs ('uloboros', 'Uloboros', 18, 2, 4, "air", false, 5)
nssb_register_eggs ('daddy_long_legs', 'Daddy Long Legs', 18, 2, 4, "air", false, 5)
nssb_register_eggs ('xgaloctopus', 'Xgaloctopus', 18, 2, 4, "default:water_source", false, 5)
nssb_register_eggs ('bloco', 'Bloco', 14, 2, 4, "default:gravel", false, 5)
nssb_register_eggs ('icesnake', 'Icesnake', 18, 2, 4, "default:ice", false, 5)
nssb_register_eggs ('snow_biter', 'Snowbiter', 18, 2, 4, "default:ice", false, 5)
nssb_register_eggs ('scrausics', 'Scrausics', 18, 2, 4, "air", false, 5)
nssb_register_eggs ('moonheron', 'Moonheron', 18, 2, 4, "air", true, 0)
--Bosses of the eggs:
nssb_register_eggs ('phoenix', 'Phoenix', 900, 10, 1, "air", false, 15)
nssb_register_eggs ('tarantula', 'Tarantula', 900, 2, 1, "air", false, 5)
nssb_register_eggs ('night_master', 'Night Master', 900, 10, 1, "air", true, 0)
nssb_register_eggs ('ant_queen', 'Ant Queen', 900, 10, 1, "air", false, 5)
nssb_register_eggs ('icelamander', 'Icelamander', 900, 10, 1, "air", false, 5)
minetest.register_node("nssb:giant_sandworm_eggs", {
description = "Giant Sandworm Egg",
tiles = {"giant_sandworm_eggs.png"},
is_ground_content = false,
groups = {choppy=1},
})
minetest.register_abm({
nodenames = {"nssb:giant_sandworm_eggs"},
neighbors = {"default:desert_stone"},
interval = 1,
chance = 1,
action = function(pos, node)
local pos1 = {x=pos.x, y=pos.y+1, z=pos.z}
local n = minetest.env:get_node(pos1).name
if n ~= "air" then
return
end
minetest.add_entity(pos1, "nssm:giant_sandworm")
minetest.remove_node(pos)
end
})
nssb = {}
local path = minetest.get_modpath("nssb")
dofile(path.."/nodes.lua")
dofile(path.."/mapgen.lua")
dofile(path.."/spawn.lua")

1031
mapgen.lua Normal file

File diff suppressed because it is too large Load Diff

778
nodes.lua Normal file
View File

@ -0,0 +1,778 @@
--Materials
minetest.register_node("nssb:memoryone", {
description = "Memoryone",
tiles = {"very_mossy_stone_brick.png"},
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
on_blast = function() end,
})
minetest.register_node("nssb:mossy_stone_brick", {
description = "Mossy Stone Brick",
tiles = {"mossy_stone_brick.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
on_blast = function() end,
})
minetest.register_node("nssb:stone_brick", {
description = "Stone Brick",
tiles = {"default_stone_brick.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
on_blast = function() end,
})
minetest.register_node("nssb:very_mossy_stone_brick", {
description = "Very Mossy Stone Brick",
tiles = {"very_mossy_stone_brick.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
on_blast = function() end,
})
minetest.register_node("nssb:mossy_stone_column", {
description = "Mossy Stone Column",
tiles = {"mossy_stone_column.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
on_blast = function() end,
})
minetest.register_node("nssb:stone_column", {
description = "Stone Column",
tiles = {"stone_column.png"},
is_ground_content = false,
groups = {cracky=2, stone=2},
sounds = default.node_sound_stone_defaults(),
on_blast = function() end,
})
minetest.register_node("nssb:marine_stone", {
description = "Seastone",
tiles = {"marine_stone.png"},
is_ground_content = false,
groups = {cracky=1, stone=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:marine_brick", {
description = "Seastone Brick",
tiles = {"marine_brick.png"},
is_ground_content = false,
groups = {stone=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:marine_meselamp", {
description = "Sea Meselamp",
tiles = {"marine_meselamp.png"},
is_ground_content = false,
groups = {cracky=3},
drop = "",
light_source = 15,
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("nssb:morlamp", {
description = "Morlamp",
tiles = {"morlamp.png"},
is_ground_content = false,
groups = {cracky=3},
drop = "",
light_source = 15,
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("nssb:mantis_clay", {
description = "Mantis Clay",
tiles = {"mantis_clay.png"},
is_ground_content = false,
groups = {cracky=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:hardened_mantis_clay", {
description = "Hardened Mantis Clay",
tiles = {"hard_mantis_clay.png"},
is_ground_content = false,
groups = {cracky=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:ant_stone", {
description = "Ant Stone",
tiles = {"ant_stone.png"},
is_ground_content = false,
groups = {cracky=1, stone=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:vine", {
description = "Vine",
drawtype = "signlike",
tiles = {"climbing_plant.png"},
inventory_image = {"vine.png"},
walkable = false,
climbable = true,
paramtype = "light",
paramtype2 = "wallmounted",
selection_box = {type="wallmounted"},
legacy_wallmounted = true,
groups = {flammable=3, snappy = 3},
sounds = default.node_sound_leaves_defaults()
})
minetest.register_node("nssb:liana", {
description = "Liana",
drawtype = "plantlike",
inventory_image = {"liana.png"},
tiles = {"liana.png"},
paramtype = "light",
walkable = false,
climbable = true,
groups = {flammable=3, snappy = 3},
sounds = default.node_sound_leaves_defaults()
})
minetest.register_node("nssb:vertical_web", {
description = "Vertical Web",
inventory_image = "vertical_web.png",
tile_images = {"vertical_web.png"} ,
drawtype = "plantlike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "nssm:web",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range= 0,
liquid_alternative_flowing = "nssb:vertical_web",
liquid_alternative_source = "nssb:vertical_web",
liquid_viscosity = 20,
groups = {flammable=2, snappy=1, liquid=1},
})
minetest.register_node("nssb:web_cone_up", {
description = "Web Cone Up",
inventory_image = "web_cone_up.png",
tile_images = {"web_cone_up.png"} ,
drawtype = "plantlike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "nssm:web",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range= 0,
liquid_alternative_flowing = "nssb:web_cone_up",
liquid_alternative_source = "nssb:web_cone_up",
liquid_viscosity = 20,
groups = {flammable=2, snappy=1, liquid=1},
})
minetest.register_node("nssb:web_cone_down", {
description = "Web Cone Down",
inventory_image = "web_cone_down.png",
tile_images = {"web_cone_down.png"} ,
drawtype = "plantlike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "nssm:web",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range= 0,
liquid_alternative_flowing = "nssb:web_cone_down",
liquid_alternative_source = "nssb:web_cone_down",
liquid_viscosity = 20,
groups = {flammable=2, snappy=1, liquid=1},
})
minetest.register_craft({
output = 'nssb:marine_meselamp',
recipe = {
{'default:glass', 'bucket:bucket_water', 'default:glass'},
{'default:glass', 'default:mese_crystal', 'default:glass'},
{'default:glass', 'bucket:bucket_water', 'default:glass'},
}
})
minetest.register_craft({
output = 'nssb:morlamp',
recipe = {
{'nssb:morelentir_dust','nssb:morelentir_dust','nssb:morelentir_dust',},
{'nssb:morelentir_dust','nssb:morelentir_dust','nssb:morelentir_dust',},
{'nssb:morelentir_dust','nssb:morelentir_dust','nssb:morelentir_dust',},
}
})
minetest.register_node("nssb:web_cocoon", {
description = "Web Cocoon",
tiles = {"web_cocoon.png"},
drop = {
max_items = 1,
items = {
{
items = {'node "nssm:spider_leg" 2'},
rarity = 4
},
{
items = {'node "nssm:web 1'},
rarity = 4
},
{
items = {'node "nssm:ant_sword" 1'},
rarity = 20
},
{
items = {'node "nssm:sun_sword" 1'},
rarity = 100
},
{
items = {'node "nssm:night_sword" 1'},
rarity = 100
},
{
items = {'node "nssm:spear_ant" 1'},
rarity = 20
},
{
items = {'node "nssm:spear_mantis" 1'},
rarity = 20
},
{
items = {'node "nssm:spear_manticore" 1'},
rarity = 22
},
{
items = {'node "nssm:spear_little_ice_tooth" 1'},
rarity = 20
},
{
items = {'node "nssm:spear_duck_beak" 1'},
rarity = 20
},
{
items = {'node "default:sword_wood" 1'},
rarity = 14
},
{
items = {'node "default:sword_steel" 1'},
rarity = 20
},{
items = {'node "default:sword_mese" 1'},
rarity = 20
},{
items = {'node "default:axe_bronze" 1'},
rarity = 20
},
{
items = {'node "nssm:raw_scrausics_wing" 2'},
rarity = 20
},
{
items = {'node "nssm:nssm:mantis_claw" 1'},
rarity = 20
},
{
items = {'node "default:axe_mese" 1'},
rarity = 20
},
{
items = {'node "nssm:mantis_sword" 1'},
rarity = 20
},
{
items = {'node "default:axe_steel" 1'},
rarity = 20
},
{
items = {'node "nssm:crab_light_mace" 1'},
rarity = 20
},
{
items = {'node "nssm:masticone_fang_sword" 1'},
rarity = 20
}
}
},
is_ground_content = false,
groups = {snappy=1, flammable=2},
})
--Eggs
function nssb_register_eggs (
name, -- name of the mobs and the eggs
descr, -- Description of the mob and eggs
int, -- time interval between each birth
wide, -- the radius in wich mobs are generated
troppi, -- maximun number of mobs spawned
neigh, -- block that need to be near for spawning the mobs
night, --if only at night
lumin) --luminosity parameter of the egg_block
minetest.register_node("nssb:".. name .."_eggs", {
description = descr .." Eggs",
tiles = {name .."_eggs.png"},
light_source = lumin,
is_ground_content = false,
groups = {choppy=1},
})
minetest.register_abm({
nodenames = {"nssb:".. name .."_eggs"},
neighbors = {neigh},
interval = int,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local pos1 = {x=pos.x+math.random(-wide,wide), y=pos.y+0.5, z=pos.z+math.random(-wide,wide)}
local n = minetest.env:get_node(pos1).name
if n ~= "air" and n ~= "default:water_source" then
return
end
local count = 0
local objects = minetest.env:get_objects_inside_radius(pos, 12)
for _,obj in ipairs(objects) do
count = count +1
--minetest.chat_send_all("Count: "..count)
end
local t = minetest.get_timeofday()
--minetest.chat_send_all("Time of day: "..t)
if (t>=0.75 and t<=1) or (t>=0 and t<=0.25) or night==false then
if count < troppi then
minetest.add_entity(pos1, "nssm:" .. name)
end
end
end
})
end
nssb_register_eggs ('ant_worker', 'Ant Worker', 16, 2, 4, "air", false, 5)
nssb_register_eggs ('ant_soldier', 'Ant Soldier', 16, 2, 4, "air", false, 5)
nssb_register_eggs ('larva', 'Larva', 16, 2, 4, "air", false, 5)
nssb_register_eggs ('crab', 'Crab', 18, 2, 4, "default:sand", false, 5)
nssb_register_eggs ('black_widow', 'Black Widow', 18, 2, 4, "air", false, 5)
nssb_register_eggs ('uloboros', 'Uloboros', 18, 2, 4, "air", false, 5)
nssb_register_eggs ('daddy_long_legs', 'Daddy Long Legs', 18, 2, 4, "air", false, 5)
nssb_register_eggs ('xgaloctopus', 'Xgaloctopus', 18, 2, 4, "default:water_source", false, 5)
nssb_register_eggs ('bloco', 'Bloco', 14, 2, 4, "default:gravel", false, 5)
nssb_register_eggs ('icesnake', 'Icesnake', 18, 2, 4, "default:ice", false, 5)
nssb_register_eggs ('snow_biter', 'Snowbiter', 18, 2, 4, "default:ice", false, 5)
nssb_register_eggs ('scrausics', 'Scrausics', 18, 2, 4, "air", false, 5)
nssb_register_eggs ('moonheron', 'Moonheron', 18, 2, 4, "air", true, 0)
function nssb_register_eggboss (
name, -- name of the mobs and the eggs
descr, -- Description of the mob and eggs
int, -- time interval between each birth
wide, -- the radius in wich mobs are generated
troppi, -- maximun number of mobs spawned
neigh, -- block that need to be near for spawning the mobs
night, --if only at night
lumin) --luminosity parameter of the egg_block
minetest.register_node("nssb:".. name .."_eggboss", {
description = descr .." Eggs",
tiles = {name .."_eggs.png"},
light_source = lumin,
is_ground_content = false,
groups = {choppy=1},
})
minetest.register_abm({
nodenames = {"nssb:".. name .."_eggboss"},
neighbors = {neigh},
interval = int,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local pos1 = {x=pos.x+math.random(-wide,wide), y=pos.y+0.5, z=pos.z+math.random(-wide,wide)}
local n = minetest.env:get_node(pos1).name
if n ~= "air" and n ~= "default:water_source" then
return
end
local count = 0
local objects = minetest.env:get_objects_inside_radius(pos, 12)
for _,obj in ipairs(objects) do
count = count +1
--minetest.chat_send_all("Count: "..count)
end
local t = minetest.get_timeofday()
--minetest.chat_send_all("Time of day: "..t)
if (t>=0.75 and t<=1) or (t>=0 and t<=0.25) or night==false then
if count < troppi then
minetest.add_entity(pos1, "nssm:" .. name)
end
end
end
})
end
--Bosses of the eggs:
nssb_register_eggboss ('phoenix', 'Phoenix', 900, 10, 1, "air", false, 15)
nssb_register_eggboss ('tarantula', 'Tarantula', 900, 2, 1, "air", false, 5)
nssb_register_eggboss ('night_master', 'Night Master', 900, 10, 1, "air", true, 0)
nssb_register_eggboss ('ant_queen', 'Ant Queen', 900, 10, 1, "air", false, 5)
nssb_register_eggboss ('icelamander', 'Icelamander', 900, 10, 1, "air", false, 5)
minetest.register_node("nssb:giant_sandworm_eggs", {
description = "Giant Sandworm Egg",
tiles = {"giant_sandworm_eggs.png"},
is_ground_content = false,
groups = {choppy=1},
})
minetest.register_abm({
nodenames = {"nssb:giant_sandworm_eggs"},
neighbors = {"default:desert_stone"},
interval = 1,
chance = 1,
action = function(pos, node)
local pos1 = {x=pos.x, y=pos.y+1, z=pos.z}
local n = minetest.env:get_node(pos1).name
if n ~= "air" then
return
end
minetest.add_entity(pos1, "nssm:giant_sandworm")
minetest.remove_node(pos)
end
})
--Morlavala nodes
minetest.register_node("nssb:morentir", {
description = "Dark Stone",
tiles = {"morentir.png"},
is_ground_content = true,
groups = {cracky=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:boum_morentir", {
description = "Exploding Dark Stone",
tiles = {"morentir.png"},
is_ground_content = true,
groups = {cracky=1},
drop = "nssb:morentir",
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:fall_morentir", {
description = "Falling Dark Stone",
tiles = {"morentir.png"},
is_ground_content = true,
groups = {cracky=1,falling_node = 1},
drop = "nssb:morentir",
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:indistructible_morentir", {
description = "Dark Indistructible Stone",
tiles = {"morentir.png"},
--groups = {oddly_breakable_by_hand = 2},
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
on_blast = function() end,
})
minetest.register_node("nssb:morelentir", {
description = "Dark Starred Stone",
inventory_image = minetest.inventorycube("morelentir.png"),
light_source = 10,
drop = "nssm:morelentir_dust",
tiles = {
{
name = "morelentir_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 6.0},
},},
is_ground_content = false,
groups = {cracky=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:morkemen", {
description = "Dark Dirt",
tiles = {"morkemen.png"},
is_ground_content = true,
groups = {crumbly=1},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("nssb:morvilya", {
description = "Dark Air",
drawtype = "airlike",
tiles = {"morvilya.png"},
paramtype = "light",
walkable = false,
sunlight_propagates = true,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
drowning = 1,
damage_per_second = 2,
post_effect_color = {a=800, r=1, g=1, b=1},
})
minetest.register_node("nssb:mornar", {
description = "Black Flame",
drawtype = "firelike",
tiles = {{
name = "mornar_animated.png",
animation = {type = "vertical_frames",
aspect_w = 16, aspect_h = 16, length = 1},
}},
inventory_image = "mornar.png",
light_source = 12,
groups = {igniter = 2},
drop = '',
walkable = false,
buildable_to = false,
damage_per_second = 4,
})
minetest.register_node("nssb:mornen", {
description = "Black Water",
inventory_image = minetest.inventorycube("mornen.png"),
drawtype = "liquid",
tiles = {
{
name = "mornen_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 2.0},
},
},
alpha = 650,
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = true,
drop = "",
light_source = 14,
liquid_range= 4,
drowning = 1,
liquid_renewable = true,
damage_per_second = 2,
liquidtype = "source",
liquid_alternative_flowing = "nssb:mornen_flowing",
liquid_alternative_source = "nssb:mornen",
liquid_viscosity = 6,
post_effect_color = {a=500, r=1, g=1, b=1},
groups = {liquid=3, puts_out_fire=1},
})
minetest.register_node("nssb:mornen_flowing", {
description = "Flowing Dark Water",
inventory_image = minetest.inventorycube("mornen.png"),
drawtype = "flowingliquid",
tiles= {"mornen.png"},
special_tiles = {
{
name = "mornen_animated.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.3,
},
},
{
name = "mornen_animated.png",
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.3,
},
},
},
paramtype = "light",
paramtype2 = "flowingliquid",
light_source = 10,
alpha = 650,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "flowing",
liquid_alternative_flowing = "nssb:mornen_flowing",
liquid_alternative_source = "nssb:mornen",
liquid_viscosity = 6,
liquid_renewable = true,
damage_per_second = 2,
post_effect_color = {a=500, r=1, g=1, b=1},
groups = {liquid=3, puts_out_fire=1, water=1, not_in_creative_inventory=1},
})
minetest.register_node("nssb:portal", {
description = "Morlendor Portal",
inventory_image = minetest.inventorycube("mornen.png"),
drawtype = "liquid",
tiles = {
{
name = "mornen_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 2.0},
},
},
alpha = 800,
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
light_source = 15,
liquid_range= 0,
drowning = 1,
liquid_renewable = false,
liquidtype = "source",
liquid_alternative_flowing = "nssb:portal",
liquid_alternative_source = "nssb:portal",
liquid_viscosity = 0,
post_effect_color = {a=10, r=1, g=1, b=1},
groups = {liquid=3, puts_out_fire=1},
on_blast = function() end,
})
minetest.register_node("nssb:portalhome", {
description = "Home Portal",
inventory_image = minetest.inventorycube("portalhome.png"),
drawtype = "liquid",
tiles = {
{
name = "portalhome_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 2.0},
},
},
alpha = 800,
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
light_source = 15,
liquid_range= 0,
drowning = 1,
liquid_renewable = false,
liquidtype = "source",
liquid_alternative_flowing = "nssb:portalhome",
liquid_alternative_source = "nssb:portalhome",
liquid_viscosity = 0,
post_effect_color = {a=10, r=1, g=1, b=1},
groups = {liquid=3, puts_out_fire=1},
on_blast = function() end,
})
minetest.register_node("nssb:morlote", {
description = "Morlote",
drawtype = "plantlike",
visual_scale = 1.0,
tiles = {"morlote.png"},
inventory_image = "morlote.png",
wield_image = "morlote.png",
paramtype = "light",
light_source= 14,
sunlight_propagates = true,
walkable = false,
buildable_to = false,
groups = {snappy = 3, attached_node = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
minetest.register_node("nssb:moranga", {
description = "Moranga Ore",
tiles = {"morentir.png^moranga.png"},
groups = {cracky = 1},
drop = 'nssb:moranga_lump',
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("nssb:life_energy_ore", {
description = "Life Energy Ore",
tiles = {"morentir.png^life_energy_ore.png"},
groups = {cracky = 1},
light_source = 4,
drop = 'nssm:energy_globe',
sounds = default.node_sound_stone_defaults(),
})
minetest.register_craftitem("nssb:moranga_lump", {
description = "Moranga Lump",
image = "moranga_lump.png",
})
minetest.register_craft({
type = "cooking",
output = "nssb:moranga_ingot",
recipe = "nssb:moranga_lump",
cooktime = 160,
})
minetest.register_craftitem("nssb:moranga_ingot", {
description = "Moranga Ingot",
image = "moranga_ingot.png",
})
minetest.register_node("nssb:morvalar_block", {
description = "Morvalar Block",
tiles = {"morvalar_block.png"},
light_source = 13,
})
minetest.register_node("nssb:dis_morvalar_block", {
description = "Disactivated Morvalar Block",
tiles = {"dis_morvalar_block.png"},
on_punch = function(pos, node, puncher)
if puncher:get_wielded_item():get_name() == "nssm:superior_energy_globe" then
minetest.set_node(pos, {name="nssb:morvalar_block"})
end
end,
})
minetest.register_abm({
nodenames = {"nssb:morvalar_block"},
neighbors = {"nssb:indistructible_morentir"},
interval = 1,
chance = 1,
action = function(pos, node)
minetest.remove_node(pos)
minetest.add_entity(pos, "nssm:morvalar")
end
})

BIN
schems/arena51.mts Normal file

Binary file not shown.

BIN
schems/arena510.mts Normal file

Binary file not shown.

BIN
schems/arena511.mts Normal file

Binary file not shown.

BIN
schems/arena52.mts Normal file

Binary file not shown.

BIN
schems/arena53.mts Normal file

Binary file not shown.

BIN
schems/arena54.mts Normal file

Binary file not shown.

BIN
schems/arena55.mts Normal file

Binary file not shown.

BIN
schems/arena56.mts Normal file

Binary file not shown.

BIN
schems/arena57.mts Normal file

Binary file not shown.

BIN
schems/arena58.mts Normal file

Binary file not shown.

BIN
schems/arena59.mts Normal file

Binary file not shown.

BIN
schems/memoportal.mts Normal file

Binary file not shown.

BIN
schems/portal.mts Normal file

Binary file not shown.

9
spawn.lua Normal file
View File

@ -0,0 +1,9 @@
local mm = nssm.multimobs
mobs:spawn_specific("nssm:morbat1", {"air"}, {"nssb:morelentir"}, 0, 20, 100, 20000000/mm, 1, -31000, 0)
mobs:spawn_specific("nssm:morbat2", {"air"}, {"nssb:morelentir"}, 0, 20, 100, 20000000/mm, 1, -31000, 0)
mobs:spawn_specific("nssm:morbat3", {"air"}, {"nssb:morelentir"}, 0, 20, 100, 20000000/mm, 1, -31000, 0)
mobs:spawn_specific("nssm:morvy", {"nssb:morentir"}, {"nssb:morentir"}, 0, 20, 120, 18000000/mm, 1, -31000, -93)
mobs:spawn_specific("nssm:morlu", {"nssb:morentir"}, {"nssb:mornen"}, 0, 20, 80, 1200000/mm, 1, -31000, -93)
mobs:spawn_specific("nssm:morde", {"nssb:morenrir"}, {"nssb:mornar"}, 0, 20, 50, 350000/mm, 1, -31000, -93)
mobs:spawn_specific("nssm:mordain", {"nssb:morentir"}, {"nssb:morentir"}, 0, 20, 90, 15000000/mm, 1, -31000, .93)
mobs:spawn_specific("nssm:morgut", {"nssb:morentir"}, {"nssb:morentir"}, 0, 20, 50, 15000000/mm, 1, -31000, -93)

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 B

BIN
textures/earth_particle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 B

BIN
textures/moranga.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 B

BIN
textures/moranga_ingot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

BIN
textures/moranga_lump.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

BIN
textures/morelentir.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
textures/morentir.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 807 B

BIN
textures/morentir2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

BIN
textures/morkemen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

BIN
textures/morlamp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

BIN
textures/morlote.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
textures/mornar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
textures/mornen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
textures/morparticle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

BIN
textures/morvalar_block.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

BIN
textures/morvilya.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

BIN
textures/portalhome.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB