Initial fork with fixes

master
TenPlus1 2018-08-08 10:56:14 +01:00
commit 1da2bb51e1
728 changed files with 2005831 additions and 0 deletions

27
README.txt Normal file
View File

@ -0,0 +1,27 @@
Not So Simple Mobs by NPX team
Starting from version 3.0 the mod depends on mobs_redo api: https://github.com/tenplus1/mobs_redo
We suggest that you play nssm with:
- nssb (Not So Simple Buildings, our second mod that adds many blocks and Morlendor, the new dimension):
- 3d_armors (with which you can use nssm armors):
- unified_inventory (useful to discover all the new recipes and to use the armors):
- a throwing mod (a mod that add bows) if compatible with the Tenplus1's damage_system
We would like to thank:
- PilzAdam, for his wonderful simple-mobs mod;
- Tenplus1, for his hard work in making mobs_redo;
- Echoes91, for Spears: simple but amazing;
- and obviously Celeron-55 and all the people who contributed to Minetest and its community (and Paramat in particular);
- Denise and Ponzi_Duro for the revision of the guide;
- Double_P, Ponzi_Duro, Andrey01 and Taikedz for the beta testing;
- Taikedz for his support and for hosting a server dedicated to nssm (Not So Simple Server: https://forum.minetest.net/viewtopic.php?f=10&t=15435&hilit=nsss);
License for the code: LGPL
License for all the models, textures and sound: CC BY-SA 4.0
The mod makes the game really hard, please read the wiki before playing: http://wiki.minetest.net/Mods/Not_So_Simple_Mobs (which will be updated as soon as possible) or the old guide for the 2.4 version.
Here are the trailers of the mod:
- nssm 2.1: https://www.youtube.com/watch?v=ccLUt58mo0k
- nssm 3.0: https://www.youtube.com/watch?v=ZBuAi1sQJxQ

72
changelog.txt Normal file
View File

@ -0,0 +1,72 @@
v3.01 (8th Aug 2018):
- Fixed missing functions so that nssm uses mobs redo's global functions;
- Fixed performance issue thanks to Ihofhansl
v3.0 (22-11-16):
- rewritten to add the dependency from mobs_redo. The mobs now directly use the mobs api;
- added the mobs Morlu, Morvy, Morgut, Mode, Mordain, Morwa, Morgre and Morvalar for the "Morlendor" dimension (that you can find playing with nssb);
- added the "Felucco", to spawn in the savannah;
- added the armors made from the drops of mobs (you need 3d_armor to use them);
- added two new sets of weapons:
-> bombs: you can throw and when they hit the ground they activate special functions;
-> normal weapons (like swords and axes) with special functions you can enable by typing "q";
- new tools (picks, shovels...) and drops;
- a lot of other things (new explosion function, parameters to set difficulty)...
v2.4 (01-05-16):
- new energy weapon: hellzone_grenade (It follows the target: you can shoot some of them and then activate them by pressing q);
- the mobs now honors the protected blocks and areas (Thanks to TenPlus1 for his suggestion);
- fixed the Irrlicht problem with png textures;
- fixed various bugs with materials and recipes also thanks to Amianthoidal and Telesight;
- the counters now use os.time() instead of minetest globalstep to count time;
- added the custom_attack function to the api.lua;
- added custom on_step function for some projectiles of the mobs and fixed various related bugs;
- updated api and fixed bugs.
v2.3 (22-03-16):
- new mobs (Desert Boss: giant sandworm (removed the dahaka), changed sandworm model and added sand_bloco and xgaloctopus)
- new special weapons (added the spirit_ball which look for enemies around it and follow them and updated kamehameha and kienzan)
- api updated to 19-03 version (thanks to Tenplus1 for his hard work on it)
- fixed some bugs
- tidied up the code (nssm_materials, nssm_weapons, nssm_api...)
v2.2.1 (22-02-16):
- updated the api.lua following the updates of Tenplus1's mobs (version of 17th February 2016);
- fixed lava_titan movements;
- tidied up the code;
- uploaded the mod to github;
v2.2:
- Spawn eggs
- Spiderduck and Enderduck are smaller.
- Phoenix shoot less fire.
- When the Tarantula become weaker evolves.
- From Sun feather or Moon feather and a diamond with a stick you can craft amazing swords.
- Stoneaters and Ants drop their mandibles, with them it is possible to craft a powerful pick and a sword
- Six spears are now available thank to Spears mod made by Echoes91! (Mantis spear ([wood][wood][mantis_claw]), Ant spear (ant mandible), Duck beak spear (duck beak dropped by ducks), Manticore spear (manticore spine), Little ice tooth spear (little ice tooth dropped by ice amphibians), Ice tooth spear (ice tooth dropped by Icelamander)).
v2.1:
- All the sounds are now mono as suggested by Fixerol;
- The Pumpking has a new way to attack: he puts around him (and you) some pumpkins that are soon going to explode!
- Improved the attacks of the mods that are "dogshoot". The problem was that they never moved to approach to the player: now every 3 distance attack they come next to you to attack in melee
(with this modification also the duckking spawns less ducks)
- Made some mobs rarer and increased their hp and damage (in particular: mese_dragon, night_master and Phoenix)
v2.0:
- rewritten the mod basing it on mobs_redo's api, you don't need mobf anymore;
- the mod is not a modpack anymore, if you want to disable a monster you need to comment the correct line in init.lua;
- added many mobs: they are 42 now;
- removed the chinese dragon and the bacteriofage;
- new gameplay based on boss fight (read the guide for more info);
- new special attacks for the mobs.
v1.1:
- the mobs are rarer;
- made the kienzan fast;
- removed the particle_spawner from the kamehameha (it could slow your pc);
- added the inventory images for the mobs based on mobf;
Initial release

401
darts.lua Normal file
View File

@ -0,0 +1,401 @@
-- arrow (duck_arrow)
mobs:register_arrow("nssm:duck_father", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"duck_egg.png"},
velocity = 8,
-- direct hit
hit_player = function(self, player)
local pos = self.object:getpos()
duck_explosion(pos)
end,
hit_mob = function(self, player)
local pos = self.object:getpos()
duck_explosion(pos)
end,
hit_node = function(self, pos, node)
duck_explosion(pos)
end,
})
function duck_explosion(pos)
if minetest.is_protected(pos, "") then
return
end
pos.y = pos.y+1;
minetest.add_particlespawner({
amount = 10,
time = 0.2,
minpos = {x=pos.x-1, y=pos.y-1, z=pos.z-1},
maxpos = {x=pos.x+1, y=pos.y+4, z=pos.z+1},
minvel = {x=0, y=0, z=0},
maxvel = {x=1, y=1, 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 = 4,
maxsize = 6,
collisiondetection = false,
vertical = false,
texture = "duck_egg_fragments.png",
})
core.after(0.4, function()
for dx = -1,1 do
pos = {x = pos.x+dx, y=pos.y; z=pos.z+dx}
minetest.add_particlespawner({
amount = 100,
time = 0.2,
minpos = {x=pos.x-1, y=pos.y-1, z=pos.z-1},
maxpos = {x=pos.x+1, y=pos.y+4, z=pos.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",
})
minetest.add_entity(pos, "nssm:duck")
end
end)
end
-- snow_arrow
mobs:register_arrow("nssm:snow_arrow", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"transparent.png"},
velocity =20,
-- direct hit
hit_player = function(self, player)
local pos = self.object:getpos()
ice_explosion(pos)
end,
hit_mob = function(self, player)
local pos = self.object:getpos()
ice_explosion(pos)
end,
hit_node = function(self, pos, node)
ice_explosion(pos)
end,
})
function ice_explosion(pos)
for i=pos.x-math.random(0, 1), pos.x+math.random(0, 1), 1 do
for j=pos.y-1, pos.y+4, 1 do
for k=pos.z-math.random(0, 1), pos.z+math.random(0, 1), 1 do
local p = {x=i, y=j, z=k}
local n = minetest.get_node(p).name
if minetest.get_item_group(n, "unbreakable") == 1 or minetest.is_protected(p, "") or (n == "bones:bones" and not nssm:affectbones(self)) then
else
minetest.set_node({x=i, y=j, z=k}, {name="default:ice"})
end
end
end
end
end
-- arrow manticore
mobs:register_arrow("nssm:spine", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"manticore_spine_flying.png"},
velocity = 10,
-- direct hit
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 2},
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 2},
}, nil)
end,
})
--morbat arrow
mobs:register_arrow("nssm:morarrow", {
visual = "sprite",
visual_size = {x=0.5, y=0.5},
textures = {"morarrow.png"},
velocity= 13,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 3},
}, nil)
end,
})
-- web arrow
mobs:register_arrow("nssm:webball", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"web_ball.png"},
velocity = 8,
-- direct hit
hit_player = function(self, player)
local p = player:getpos()
explosion_web(p)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_node = function(self, pos, node)
explosion_web(pos)
end
})
function explosion_web(pos)
if minetest.is_protected(pos, "") then
return
end
pos.y = round(pos.y)
if minetest.is_protected(pos, "") then
return
end
for i=pos.x-1, pos.x+1, 1 do
for j=pos.y-3, pos.y, 1 do
for k=pos.z-1, pos.z+1, 1 do
local p = {x=i,y=j,z=k}
local k = {x=i,y=j+1,z=k}
local current = minetest.get_node(p).name
local ontop = minetest.get_node(k).name
if (current ~= "air") and
(current ~= "nssm:web") and
(ontop == "air") and not
minetest.is_protected(p,"") and not
minetest.is_protected(k,"") then
minetest.set_node(k, {name="nssm:web"})
end
end
end
end
end
-- thick_web arrow
mobs:register_arrow("nssm:thickwebball", {
visual = "sprite",
visual_size = {x = 2, y = 2},
textures = {"thick_web_ball.png"},
velocity = 8,
-- direct hit
hit_player = function(self, player)
local p = player:getpos()
explosion_thickweb(p)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 6},
}, nil)
end,
hit_node = function(self, pos, node)
explosion_thickweb(pos)
end
})
function explosion_thickweb(pos)
if minetest.is_protected(pos, "") then
return
end
pos.y = round(pos.y)
if minetest.is_protected(pos, "") then
return
end
for i=pos.x+0, pos.x+0, 1 do
for j=pos.y-2, pos.y, 1 do
for k=pos.z+0, pos.z+0, 1 do
local p = {x=i,y=j,z=k}
local k = {x=i,y=j+1,z=k}
local current = minetest.get_node(p).name
local ontop = minetest.get_node(k).name
if (current ~= "air") and
(current ~= "nssm:thick_web") and
(ontop == "air") and not
minetest.is_protected(p,"") and not
minetest.is_protected(k,"") then
minetest.set_node(k, {name="nssm:thick_web"})
end
end
end
end
end
-- arrow=>phoenix arrow
mobs:register_arrow("nssm:phoenix_arrow", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"transparent.png"},
velocity = 8,
-- direct hit
hit_player = function(self, player)
end,
on_step = function(self, dtime)
local pos = self.object:getpos()
if minetest.is_protected(pos, "") then
return
end
local n = minetest.get_node(pos).name
if self.timer == 0 then
self.timer = os.time()
end
if os.time() - self.timer > 5 or minetest.is_protected(pos, "") or ((n~="air") and (n~="nssm:phoenix_fire")) then
self.object:remove()
end
if math.random(1,2)==2 then
minetest.set_node(pos, {name="nssm:phoenix_fire"})
end
if math.random(1,6)==1 then
dx = math.random(-1,1)
dy = math.random(-1,1)
dz = math.random(-1,1)
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.get_node(p).name
if n=="air" then
minetest.set_node(p, {name="nssm:phoenix_fire"})
end
end
end,
})
mobs:register_arrow("nssm:super_gas", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"transparent.png"},
velocity = 8,
-- direct hit
hit_player = function(self, player)
local p = player:getpos()
gas_explosion(p)
end,
hit_node = function(self, pos, node)
gas_explosion(pos)
end
})
function gas_explosion(pos)
if minetest.is_protected(pos, "") then
return
end
for dx=-2,2 do
for dy=-1,4 do
for dz=-2,2 do
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
if minetest.is_protected(p, "") then
return
end
local n = minetest.get_node(p).name
if n== "air" then
minetest.set_node(p, {name="nssm:venomous_gas"})
end
end
end
end
end
--
mobs:register_arrow("nssm:roar_of_the_dragon", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"transparent.png"},
velocity = 10,
on_step = function(self, dtime)
local pos = self.object:getpos()
local n = minetest.get_node(pos).name
if self.timer == 0 then
self.timer = os.time()
end
if os.time() - self.timer > 8 or minetest.is_protected(pos, "") then
self.object:remove()
end
local objects = minetest.get_objects_inside_radius(pos, 1)
for _,obj in ipairs(objects) do
local name = obj:get_entity_name()
if name~="nssm:roar_of_the_dragon" and name ~= "nssm:mese_dragon" then
obj:set_hp(obj:get_hp()-0.05)
if (obj:get_hp() <= 0) then
if (not obj:is_player()) and name ~= self.object:get_luaentity().name then
obj:remove()
end
end
end
end
minetest.set_node(pos, {name="air"})
if math.random(1,2)==1 then
dx = math.random(-1,1)
dy = math.random(-1,1)
dz = math.random(-1,1)
if minetest.is_protected(p, "") then
return
end
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
minetest.set_node(p, {name="air"})
end
end
})
mobs:register_arrow("nssm:lava_arrow", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"transparent.png"},
velocity = 10,
-- direct hit
hit_player = function(self, player)
local pos = self.object:getpos()
if minetest.is_protected(pos, "") then
return
end
for dy=-1, 6, 1 do
for dx=-1, 1, 2 do
for dz=-1, 1, 2 do
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.get_node(p).name
if n~="default:lava_flowing" and not minetest.is_protected(p, "") then
minetest.set_node(p, {name="default:lava_flowing"})
end
end
end
end
end,
})

6
depends.txt Normal file
View File

@ -0,0 +1,6 @@
default
mobs
farming?
3d_armor?
fire
tnt

BIN
guide/source/nssm guide.odt Normal file

Binary file not shown.

72
init.lua Normal file
View File

@ -0,0 +1,72 @@
local path = minetest.get_modpath("nssm")
nssm = {}
nssm.mymapgenis = tonumber(minetest.setting_get('mymapgenis')) or 7
nssm.multimobs = tonumber(minetest.setting_get('multimobs')) or 1000
dofile(path.."/spawn.lua")
--Mobs
dofile(path.."/mobs/ant_queen.lua")
dofile(path.."/mobs/ant_soldier.lua")
dofile(path.."/mobs/ant_worker.lua")
dofile(path.."/mobs/black_widow.lua")
dofile(path.."/mobs/bloco.lua")
dofile(path.."/mobs/crab.lua")
dofile(path.."/mobs/crocodile.lua")
dofile(path.."/mobs/daddy_long_legs.lua")
dofile(path.."/mobs/dolidrosaurus.lua")
dofile(path.."/mobs/duck.lua")
dofile(path.."/mobs/duckking.lua")
dofile(path.."/mobs/echidna.lua")
dofile(path.."/mobs/enderduck.lua")
dofile(path.."/mobs/flying_duck.lua")
dofile(path.."/mobs/felucco.lua")
dofile(path.."/mobs/giant_sandworm.lua")
dofile(path.."/mobs/icelamander.lua")
dofile(path.."/mobs/icesnake.lua")
dofile(path.."/mobs/kraken.lua")
dofile(path.."/mobs/larva.lua")
dofile(path.."/mobs/lava_titan.lua")
dofile(path.."/mobs/manticore.lua")
dofile(path.."/mobs/mantis_beast.lua")
dofile(path.."/mobs/mantis.lua")
dofile(path.."/mobs/masticone.lua")
dofile(path.."/mobs/moonheron.lua")
dofile(path.."/mobs/mordain.lua")
dofile(path.."/mobs/morgre.lua")
dofile(path.."/mobs/morde.lua")
dofile(path.."/mobs/morgut.lua")
dofile(path.."/mobs/morlu.lua")
dofile(path.."/mobs/morvalar.lua")
dofile(path.."/mobs/morvy.lua")
dofile(path.."/mobs/morwa.lua")
dofile(path.."/mobs/night_master.lua")
dofile(path.."/mobs/octopus.lua")
dofile(path.."/mobs/phoenix.lua")
dofile(path.."/mobs/pumpboom.lua")
dofile(path.."/mobs/pumpking.lua")
dofile(path.."/mobs/sandworm.lua")
dofile(path.."/mobs/scrausics.lua")
dofile(path.."/mobs/sand_bloco.lua")
dofile(path.."/mobs/signosigno.lua")
dofile(path.."/mobs/snow_biter.lua")
dofile(path.."/mobs/spiderduck.lua")
dofile(path.."/mobs/stone_eater.lua")
dofile(path.."/mobs/swimming_duck.lua")
dofile(path.."/mobs/tarantula.lua")
dofile(path.."/mobs/uloboros.lua")
dofile(path.."/mobs/werewolf.lua")
dofile(path.."/mobs/white_werewolf.lua")
--Final Boss
dofile(path.."/mobs/mese_dragon.lua")
--Others
dofile(path.."/rainbow_staff.lua")
dofile(path.."/darts.lua")
dofile(path.."/nssm_materials.lua")
dofile(path.."/nssm_spears.lua")
dofile(path.."/nssm_api.lua")
dofile(path.."/nssm_weapons.lua")
dofile(path.."/nssm_armor.lua")

105
mobs/ant_queen.lua Normal file
View File

@ -0,0 +1,105 @@
mobs:register_mob("nssm:ant_queen", {
type = "monster",
hp_max = 220,
hp_min = 220,
collisionbox = {-0.6, 0.00, -0.6, 0.6, 1, 0.6},
visual = "mesh",
mesh = "ant_queen.x",
textures = {{"ant_queen.png"}},
visual_size = {x=6, y=6},
makes_footstep_sound = true,
view_range = 30,
fear_height = 5,
walk_velocity = 1.5,
run_velocity = 2,
lifetimer = 300,
rotate = 270,
sounds = {
random = "ant",
attack = "ant",
},
damage = 4,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 5,
max = 7,},
{name = "nssm:ant_queen_abdomen",
chance = 1,
min = 1,
max = 1,},
{name = "nssm:ant_leg",
chance = 2,
min = 1,
max = 6,},
{name = "nssm:ant_mandible",
chance = 3,
min = 1,
max = 2,},
},
reach = 8,
armor = 40,
drawtype = "front",
water_damage = 2,
lava_damage = 7,
light_damage = 0,
blood_texture="nssm_blood_blue.png",
blood_amount=50,
stepheight=2.1,
knock_back=0,
jump_height=12,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 50,
walk_start = 120,
walk_end = 160,
run_start = 120,
run_end = 160,
punch_start = 170,
punch_end = 190,
},
custom_attack = function(self)
self.ant_queen_counter = (self.ant_queen_counter or 0) + 1
if self.ant_queen_counter == 4 then
self.ant_queen_counter = 0
local counter = 0
local s = self.object:getpos()
local p = self.attack:getpos()
p.y = p.y + 1.5
s.y = s.y + 1.5
if mobs.line_of_sight(self, p, s) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
local pos1 = {x=s.x+math.random(-3,3), y=s.y-1, z=s.z+math.random(-3,3)}
local objects = minetest.get_objects_inside_radius(s, 10)
for _,obj in ipairs(objects) do
if (obj:get_luaentity() and obj:get_luaentity().name == "nssm:ant_soldier") then
counter = counter + 1
end
end
if ((pos1.x~=s.x) and (pos1.z~=s.z))
and (minetest.get_node(pos1).name == "air")
and (counter < 4)
then
explosion_particles(pos1, 1)
minetest.add_entity(pos1, "nssm:ant_soldier")
end
end
end
end
})

64
mobs/ant_soldier.lua Normal file
View File

@ -0,0 +1,64 @@
mobs:register_mob("nssm:ant_soldier", {
type = "monster",
hp_max = 32,
hp_min = 24,
collisionbox = {-0.49, 0.00, -0.49, 0.49, 0.9, 0.49},
visual = "mesh",
mesh = "ant_soldier.x",
textures = {{"ant_soldier.png"}},
visual_size = {x=3, y=3},
makes_footstep_sound = true,
view_range = 20,
fear_height = 4,
walk_velocity = 0.5,
run_velocity = 3,
rotate = 270,
sounds = {
random = "ant",
},
damage = 6,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:ant_leg",
chance = 2,
min = 1,
max = 6,},
{name = "nssm:ant_mandible",
chance = 3,
min = 1,
max = 2,},
{name = "nssm:ant_hard_skin",
chance = 3,
min = 1,
max = 2,},
},
reach = 2,
armor = 70,
drawtype = "front",
water_damage = 2,
lava_damage = 7,
light_damage = 0,
on_rightclick = nil,
group_attack=true,
attack_animals=false,
knock_back=2,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 35,
stand_start = 1,
stand_end = 60,
walk_start = 90,
walk_end = 130,
run_start = 90,
run_end = 130,
punch_start = 60,
punch_end = 80,
}
})

64
mobs/ant_worker.lua Normal file
View File

@ -0,0 +1,64 @@
mobs:register_mob("nssm:ant_worker", {
type = "monster",
passive = true,
hp_max = 24,
hp_min = 18,
collisionbox = {-0.4, 0.00, -0.4, 0.4, 0.5, 0.4},
visual = "mesh",
mesh = "ant_worker.x",
textures = {{"ant_worker.png"}},
visual_size = {x=2, y=2},
makes_footstep_sound = true,
view_range = 20,
fear_height = 4,
walk_velocity = 0.5,
run_velocity = 2,
rotate = 270,
sounds = {
random = "ant",
},
damage = 2,
reach = 2,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 2,
min = 1,
max = 1,},
{name = "nssm:ant_leg",
chance = 2,
min = 1,
max = 6,},
{name = "nssm:ant_mandible",
chance = 3,
min = 1,
max = 2,},
{name = "nssm:ant_hard_skin",
chance = 3,
min = 1,
max = 2,},
},
armor = 70,
drawtype = "front",
water_damage = 2,
lava_damage = 7,
light_damage = 0,
on_rightclick = nil,
group_attack=true,
knock_back=4,
attack_animals=false,
blood_texture="nssm_blood_blue.png",
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 50,
walk_start = 120,
walk_end = 160,
run_start = 120,
run_end = 160,
punch_start = 50,
punch_end = 70,
}
})

67
mobs/black_widow.lua Normal file
View File

@ -0,0 +1,67 @@
mobs:register_mob("nssm:black_widow", {
type = "monster",
hp_max = 26,
hp_min = 19,
collisionbox = {-0.4, 0.00, -0.4, 0.4, 0.8, 0.4},
visual = "mesh",
mesh = "black_widow.x",
textures = {{"black_widow.png"}},
visual_size = {x=2, y=2},
makes_footstep_sound = true,
view_range = 15,
fear_height = 4,
walk_velocity = 0.8,
run_velocity = 2.5,
rotate = 270,
sounds = {
random = "black_widow",
},
damage = 4,
reach = 2,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:spider_leg",
chance = 3,
min = 1,
max = 8,},
{name = "nssm:silk_gland",
chance = 4,
min = 1,
max = 3,},
{name = "nssm:spider_meat",
chance = 4,
min = 1,
max = 2,},
},
armor = 70,
drawtype = "front",
water_damage = 1,
lava_damage = 7,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 70,
walk_start = 80,
walk_end = 120,
run_start = 120,
run_end = 140,
punch_start = 150,
punch_end = 160,
},
do_custom = function(self)
webber_ability(self, "nssm:web", 2)
end,
})

61
mobs/bloco.lua Normal file
View File

@ -0,0 +1,61 @@
mobs:register_mob("nssm:bloco", {
type = "monster",
hp_max = 24,
hp_min = 14,
collisionbox = {-0.56, -0.2, -0.56, 0.56, 1.2, 0.56},
visual = "mesh",
mesh = "bloco.x",
textures = {{"bloco.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 8,
fear_height = 4,
walk_velocity = 0.6,
run_velocity = 2.5,
rotate = 270,
sounds = {
random = "bloco",
},
damage = 4,
reach = 2,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 1,},
{name = "default:stone",
chance = 1,
min = 2,
max = 3,},
{name = "nssm:bloco_skin",
chance = 3,
min = 1,
max = 2,},
},
armor = 40,
drawtype = "front",
water_damage = 3,
lava_damage = 1,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=0,
blood_texture="stone_blood.png",
immune_to={{'default:sword_stone', -2},{'default:stone', -2}, {'default:cobble', -2}, {'default:axe_stone', -2}, {'default:shovel_stone', -2}, {'default:pick_stone', -2}},
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 20,
stand_start = 90,
stand_end = 110,
walk_start = 1,
walk_end = 80,
run_start = 120,
run_end = 160,
punch_start = 170,
punch_end = 190,
}
})

65
mobs/crab.lua Normal file
View File

@ -0,0 +1,65 @@
mobs:register_mob("nssm:crab", {
type = "monster",
hp_max = 32,
hp_min = 19,
collisionbox = {-0.5, 0, -0.5, 0.5, 0.55, 0.5},
visual = "mesh",
mesh = "crab.x",
textures = {{"crab1.png"},{"crab2.png"}},
sounds = {
random = "crab",
},
visual_size = {x=3, y=3},
makes_footstep_sound = true,
view_range = 7,
rotate = 270,
fear_height = 4,
walk_velocity = 1,
run_velocity = 2,
damage = 5,
reach = 2,
floats = 0,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:surimi",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:crab_chela",
chance = 4,
min = 1,
max = 2,},
{name = "nssm:crab_carapace_fragment",
chance = 4,
min = 1,
max = 1,},
},
armor = 40,
drawtype = "front",
water_damage = 0,
lava_damage = 10,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=1,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 10,
stand_end = 80,
walk_start = 120,
walk_end = 140,
run_start = 120,
run_end = 140,
punch_start = 90,
punch_end = 110,
}
})

61
mobs/crocodile.lua Normal file
View File

@ -0,0 +1,61 @@
mobs:register_mob("nssm:crocodile", {
type = "monster",
hp_max = 30,
hp_min = 15,
collisionbox = {-0.45, -0.30, -0.45, 0.45, 0.3, 0.45},
visual = "mesh",
mesh = "crocodile.x",
textures = {{"croco.png"}},
sounds = {
random = "crocod",
},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 15,
walk_velocity = 1,
run_velocity = 1,
damage = 5,
floats = 1,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:crocodile_tail",
chance = 2,
min = 1,
max = 1,},
{name = "nssm:crocodile_skin",
chance = 3,
min = 1,
max = 1,},
},
armor = 60,
drawtype = "front",
reach = 2,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=3,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 1,
stand_end = 80,
walk_start = 230,
walk_end = 270,
run_start = 230,
run_end = 270,
punch_start = 205,
punch_end = 220,
--swim_start = 100,
--swim_end = 140,
}
})

59
mobs/daddy_long_legs.lua Normal file
View File

@ -0,0 +1,59 @@
mobs:register_mob("nssm:daddy_long_legs", {
type = "monster",
hp_max = 22,
hp_min = 16,
collisionbox = {-0.4, 0.00, -0.4, 0.4, 0.6, 0.4},
visual = "mesh",
mesh = "daddy_long_legs.x",
textures = {{"daddy_long_legs.png"}},
visual_size = {x=8, y=8},
makes_footstep_sound = true,
view_range = 12,
walk_velocity = 0.7,
fear_height = 4,
run_velocity = 3.3,
rotate = 90,
sounds = {
random = "daddy",
},
damage = 3,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:spider_leg",
chance = 3,
min = 1,
max = 8,},
{name = "nssm:spider_meat",
chance = 4,
min = 1,
max = 2,},
},
armor = 70,
drawtype = "front",
water_damage = 1,
lava_damage = 7,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 60,
walk_start = 80,
walk_end = 120,
run_start = 80,
run_end = 120,
punch_start = 140,
punch_end = 165,
}
})

58
mobs/dolidrosaurus.lua Normal file
View File

@ -0,0 +1,58 @@
mobs:register_mob("nssm:dolidrosaurus", {
type = "monster",
hp_max = 46,
hp_min = 23,
collisionbox = {-0.5, 0, -0.5, 0.5, 0.52, 0.5},
visual = "mesh",
mesh = "dolidrosaurus.x",
textures = {{"dolidrosaurus1.png"},{"dolidrosaurus2.png"},{"dolidrosaurus3.png"},{"dolidrosaurus4.png"},{"dolidrosaurus5.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 30,
fly = true,
fly_in = "default:water_source",
fall_speed = -20,
walk_velocity = 1.5,
run_velocity = 3.3,
damage = 5,
rotate = 270,
jump = false,
jump_chance = 0,
jump_height = 0,
sounds = {
random = "crocod",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 3,},
{name = "nssm:dolidrosaurus_fin",
chance = 2,
min = 1,
max = 3,},
},
armor = 60,
drawtype = "front",
water_damage = 0,
lava_damage = 10,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=3,
blood_texture="nssm_blood.png",
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 1,
stand_end = 80,
walk_start = 140,
walk_end = 180,
run_start = 140,
run_end = 180,
punch_start = 190,
punch_end = 220,
}
})

64
mobs/duck.lua Normal file
View File

@ -0,0 +1,64 @@
mobs:register_mob("nssm:duck", {
type = "monster",
hp_max = 12,
hp_min = 7,
collisionbox = {-0.3, 0.00, -0.3, 0.3, 0.95, 0.3},
visual = "mesh",
mesh = "duck.x",
textures = {{"duck.png"}},
visual_size = {x=2, y=2},
makes_footstep_sound = true,
view_range = 13,
walk_velocity = 1,
reach =1.5,
run_velocity = 2,
damage = 2,
jump = true,
sounds = {
random = "duck",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 1,},
{name = "nssm:duck_legs",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:duck_beak",
chance = 5,
min = 1,
max = 1,},
{name = "nssm:duck_feather",
chance = 3,
min = 2,
max = 4,},
},
armor = 100,
drawtype = "front",
water_damage = 0,
fear_height = 5,
floats = 1,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=5,
blood_texture="nssm_blood.png",
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 1,
stand_end = 20,
walk_start = 20,
walk_end = 40,
run_start = 20,
run_end = 40,
punch_start = 40,
punch_end = 60,
}
--pathfinding = 1,
})

78
mobs/duckking.lua Normal file
View File

@ -0,0 +1,78 @@
mobs:register_mob("nssm:duckking", {
type = "monster",
hp_max = 180,
hp_min = 180,
collisionbox = {-1.2, -0.25, -1.2, 1.2, 4, 1.2},
visual = "mesh",
mesh = "king_duck.x",
textures = {{"king_duck.png"}},
visual_size = {x=10, y=10},
lifetimer = 300,
makes_footstep_sound = true,
view_range = 30,
rotate = 270,
duck_father = true,
walk_velocity = 1,
fear_height = 4,
run_velocity = 2,
damage = 8,
jump = true,
sounds = {
random = "duckking",
attack = "duckking",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 7,
max = 8,},
{name = "nssm:duck_legs",
chance = 1,
min = 40,
max = 50,},
{name = "nssm:helmet_crown",
chance = 1,
min = 1,
max = 1,},
{name = "nssm:duck_beak",
chance = 4,
min = 10,
max = 20,},
{name = "nssm:duck_feather",
chance = 3,
min = 20,
max = 40,},
},
armor = 50,
drawtype = "front",
water_damage = 0,
floats = 1,
lava_damage = 5,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogshoot",
dogshoot_switch = true,
dogshoot_count_max = 9,
blood_texture="nssm_blood.png",
blood_amount=50,
stepheight=2.1,
knock_back=0,
jump_height=12,
arrow = "nssm:duck_father",
shoot_interval=3,
shoot_offset =-1,
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 60,
stand_end = 140,
walk_start = 0,
walk_end = 40,
run_start = 0,
run_end = 40,
punch_start = 190,
punch_end = 220,
shoot_start = 160,
shoot_end = 180,
}
})

63
mobs/echidna.lua Normal file
View File

@ -0,0 +1,63 @@
mobs:register_mob("nssm:echidna", {
type = "monster",
hp_max = 240,
hp_min = 240,
collisionbox = {-0.6, 0.00, -0.6, 0.6, 2, 0.6},
visual = "mesh",
mesh = "echidna.x",
textures = {{"echidnapes.png"}},
visual_size = {x=6, y=6},
makes_footstep_sound = true,
view_range = 30,
rotate = 270,
lifetimer = 500,
fear_height = 4,
walk_velocity = 2,
run_velocity = 3.5,
damage = 12,
jump = true,
sounds = {
random = "echidna",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 6,
max = 7,},
{name = "nssm:snake_scute",
chance = 1,
min = 1,
max = 1,},
},
armor = 40,
drawtype = "front",
water_damage = 0,
floats = 1,
lava_damage = 0,
light_damage = 0,
blood_texture="nssm_blood.png",
blood_amount=10,
stepheight=1.1,
knock_back=0,
jump_height=8,
on_rightclick = nil,
attack_type = "dogshoot",
dogshoot_switch = true,
arrow = "nssm:super_gas";
reach = 5,
shoot_interval=3,
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 60,
stand_end = 140,
walk_start = 1,
walk_end = 40,
run_start = 1,
run_end = 40,
punch_start = 160,
punch_end = 190,
shoot_start = 200,
shoot_end = 240,
}
})

66
mobs/enderduck.lua Normal file
View File

@ -0,0 +1,66 @@
mobs:register_mob("nssm:enderduck", {
type = "monster",
hp_max = 28,
hp_min = 18,
collisionbox = {-0.28, 0.00, -0.28, 0.28, 1.8, 0.28},
visual = "mesh",
mesh = "enderduck.x",
textures = {{"enderduck.png"}},
visual_size = {x=2, y=2},
makes_footstep_sound = true,
view_range = 25,
walk_velocity = 3,
fear_height = 4,
run_velocity = 3.9,
rotate = 270,
sounds = {
random = "duck",
},
damage = 5,
reach = 2,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2},
{name = "nssm:duck_legs",
chance = 1,
min = 1,
max = 2},
{name = "nssm:black_duck_feather",
chance = 3,
min = 1,
max = 4,},
{name = "nssm:duck_beak",
chance = 5,
min = 1,
max = 1,},
},
armor = 80,
drawtype = "front",
water_damage = 1,
floats=1,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=4,
blood_texture="nssm_blood.png",
jump_height=12,
stepheight=2.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 1,
stand_end = 40,
walk_start = 100,
walk_end = 130,
run_start = 100,
run_end = 130,
punch_start = 60,
punch_end = 90,
}
})

62
mobs/felucco.lua Normal file
View File

@ -0,0 +1,62 @@
mobs:register_mob("nssm:felucco", {
type = "monster",
hp_max = 36,
hp_min = 27,
collisionbox = {-0.5, 0, -0.5, 0.5, 1.2, 0.5},
visual = "mesh",
mesh = "felucco.x",
textures = {{"felucco.png"}},
visual_size = {x=7, y=7},
makes_footstep_sound = true,
view_range = 30,
walk_velocity = 1,
fear_height = 4,
run_velocity = 5,
sounds = {
random = "felucco",
},
damage = 5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 3,
max = 4},
{name = "nssm:felucco_steak",
chance = 2,
min = 1,
max = 2},
{name = "nssm:felucco_fur",
chance = 2,
min = 1,
max = 1},
{name = "nssm:felucco_horn",
chance = 3,
min = 1,
max = 2},
},
armor = 70,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 20,
stand_end = 80,
walk_start = 90,
walk_end = 130,
run_start = 140,
run_end = 160,
punch_start = 200,
punch_end = 240,
}
})

63
mobs/flying_duck.lua Normal file
View File

@ -0,0 +1,63 @@
mobs:register_mob("nssm:flying_duck", {
type = "monster",
hp_max = 20,
hp_min = 10,
collisionbox = {-0.3, -0.2, -0.3, 0.3, 0.2, 0.3},
visual = "mesh",
mesh = "nathan_petrelli.x",
textures = {{"nathan_petrelli.png"}},
visual_size = {x=1, y=1},
view_range = 30,
walk_velocity = 2,
run_velocity = 2.5,
fall_speed = 0,
stepheight = 3,
sounds = {
random = "duck",
},
damage = 3,
reach = 2,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:duck_legs",
chance = 2,
min = 1,
max = 2,},
{name = "nssm:duck_beak",
chance = 5,
min = 1,
max = 1,},
{name = "nssm:duck_feather",
chance = 2,
min = 4,
max = 8,},
},
armor = 80,
drawtype = "front",
water_damage = 0,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=5,
blood_texture="nssm_blood.png",
on_rightclick = nil,
fly = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 0,
stand_end = 80,
walk_start = 160,
walk_end = 200,
run_start = 160,
run_end = 220,
punch_start = 110,
punch_end = 140,
}
})

59
mobs/giant_sandworm.lua Normal file
View File

@ -0,0 +1,59 @@
mobs:register_mob("nssm:giant_sandworm", {
type = "monster",
hp_max = 330,
hp_min = 330,
collisionbox = {-1.2, 0, -1.2, 1.2, 4.5, 1.2},
visual = "mesh",
mesh = "giant_sandworm.x",
textures = {{"sandworm.png"}},
visual_size = {x=13, y=13},
makes_footstep_sound = false,
view_range = 9,
rotate = 270,
reach = 8,
walk_velocity = 0,
run_velocity = 0,
damage = 12,
jump = false,
drops = {
{name = "nssm:worm_flesh",
chance = 1,
min = 20,
max = 30,},
{name = "nssm:sandworm_skin",
chance = 2,
min = 3,
max = 12,},
{name = "nssm:life_energy",
chance = 1,
min = 7,
max = 8,},
{name = "nssm:digested_sand",
chance = 1,
min = 1,
max = 1,},
},
armor = 40,
drawtype = "front",
water_damage = 5,
lava_damage = 3,
light_damage = 0,
blood_texture="nssm_blood_blue.png",
blood_amount=50,
knock_back=0,
jump_height=0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 40,
stand_start = 1,
stand_end = 100,
walk_start = 110,
walk_end = 140,
run_start = 110,
run_end = 140,
punch_start = 150,
punch_end = 180,
},
})

76
mobs/icelamander.lua Normal file
View File

@ -0,0 +1,76 @@
mobs:register_mob("nssm:icelamander", {
type = "monster",
hp_max = 230,
hp_min = 230,
collisionbox = {-0.5, 0, -0.5, 0.5, 2.3, 0.5},
visual = "mesh",
mesh = "icelamander.x",
textures = {{"icelamander.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 35,
lifetimer = 500,
fear_height = 4,
walk_velocity = 2,
run_velocity = 4,
sounds = {
random = "icelamander",
},
damage = 12,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 6,
max = 8},
{name = "nssm:frosted_amphibian_heart",
chance = 1,
min = 1,
max = 1},
{name = "nssm:ice_tooth",
chance = 1,
min = 1,
max = 1},
{name = "nssm:little_ice_tooth",
chance = 1,
min = 0,
max = 20},
{name = "nssm:amphibian_ribs",
chance = 2,
min = 1,
max = 1},
},
armor = 40,
drawtype = "front",
water_damage = 0,
lava_damage = 30,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogshoot",
dogshoot_switch = true,
blood_texture="nssm_blood.png",
blood_amount=20,
stepheight=1.1,
knock_back=0,
jump_height=8,
dogshoot_count_max = 7,
arrow = "nssm:snow_arrow",
shoot_interval = 2,
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 1,
stand_end = 40,
walk_start = 80,
walk_end = 160,
run_start = 40,
run_end = 80,
punch_start = 160,
punch_end = 190,
shoot_start = 190,
shoot_end = 210,
},
do_custom = function(self)
midas_ability(self, "default:ice", self.run_velocity,1, 3)
end,
})

67
mobs/icesnake.lua Normal file
View File

@ -0,0 +1,67 @@
mobs:register_mob("nssm:icesnake", {
type = "monster",
hp_max = 27,
hp_min = 17,
collisionbox = {-0.7, 0, -0.7, 0.7, 0.50, 0.7},
visual = "mesh",
mesh = "icesnake.x",
textures = {{"icesnake.png"}},
visual_size = {x=7, y=7},
makes_footstep_sound = false,
view_range = 10,
rotate = 270,
fear_height = 3,
walk_velocity = 1.2,
run_velocity = 3,
sounds = {
random = "icesnake",
},
damage = 4,
reach = 2,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2},
{name = "nssm:frosted_amphibian_heart",
chance = 2,
min = 1,
max = 1},
{name = "nssm:little_ice_tooth",
chance = 2,
min = 0,
max = 4},
{name = "nssm:amphibian_ribs",
chance = 2,
min = 1,
max = 3},
},
armor = 70,
drawtype = "front",
water_damage = 0,
lava_damage = 20,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 170,
stand_end = 220,
walk_start = 1,
walk_end = 60,
run_start = 80,
run_end = 120,
punch_start = 130,
punch_end = 160,
},
do_custom = function(self)
putting_ability(self, "default:ice", self.run_velocity)
end,
})

63
mobs/kraken.lua Normal file
View File

@ -0,0 +1,63 @@
mobs:register_mob("nssm:kraken", {
type = "monster",
hp_max = 350,
hp_min = 350,
collisionbox = {-2, 0, -2, 2, 4, 2},
visual = "mesh",
mesh = "kraken.x",
textures = {{"kraken.png"}, {"kraken2.png"}},
visual_size = {x=15, y=15},
lifetimer=500,
inker = false,
view_range = 50,
fly = true,
fly_in = "default:water_source",
fall_speed = -1,
walk_velocity = 3.5,
run_velocity = 4.5,
damage = 14,
rotate = 270,
jump = false,
jump_chance = 0,
jump_height = 0,
sounds = {
random = "kraken",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 6,
max = 7,},
{name = "nssm:tentacle",
chance = 1,
min = 30,
max = 40,},
{name = "nssm:tentacle_curly",
chance = 1,
min = 1,
max = 1,},
},
armor = 50,
drawtype = "front",
water_damage = 0,
lava_damage = 10,
light_damage = 0,
blood_texture="nssm_blood_blue.png",
blood_amount=100,
knock_back=0,
on_rightclick = nil,
attack_type = "dogfight",
reach=8,
animation = {
speed_normal = 20,
speed_run = 30,
stand_start = 1,
stand_end = 40,
walk_start = 60,
walk_end = 100,
run_start = 60,
run_end = 100,
punch_start = 120,
punch_end = 150,
}
})

87
mobs/larva.lua Normal file
View File

@ -0,0 +1,87 @@
mobs:register_mob("nssm:larva", {
type = "monster",
hp_max = 12,
hp_min = 8,
collisionbox = {-0.3, 0, -0.3, 0.3, 0.41, 0.3},
visual = "mesh",
mesh = "larva.x",
textures = {{"larva.png"}},
visual_size = {x=3, y=3},
makes_footstep_sound = false,
view_range = 10,
rotate = 90,
jump = false,
fear_height = 4,
jump_height =0,
walk_velocity = 0.4,
run_velocity = 0.4,
sounds = {
random = "sand",
},
damage = 1,
reach = 1,
drops = {
{name = "nssm:life_energy",
chance = 3,
min = 1,
max = 1,},
{name = "nssm:larva_meat",
chance = 2,
min = 1,
max = 2,},
},
armor = 80,
drawtype = "front",
water_damage = 2,
lava_damage = 4,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 20,
stand_start = 0,
stand_end = 80,
walk_start = 100,
walk_end = 160,
run_start = 100,
run_end = 160,
punch_start = 180,
punch_end = 230,
},
do_custom = function (self)
self.metatimer = (self.metatimer) or os.time()
if os.time() - self.metatimer >20 then
minetest.log("action",
"metatimer expired, metamorphosis! ")
local pos=self.object:getpos()
self.object:remove()
minetest.add_particlespawner(
200, --amount
0.1, --time
{x=pos.x-1, y=pos.y-1, z=pos.z-1}, --minpos
{x=pos.x+1, y=pos.y+1, z=pos.z+1}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=1, y=1, z=1}, --maxvel
{x=-0.5,y=5,z=-0.5}, --minacc
{x=0.5,y=5,z=0.5}, --maxacc
0.1, --minexptime
1, --maxexptime
3, --minsize
4, --maxsize
false, --collisiondetection
"tnt_smoke.png" --texture
)
if math.random(1,2)==1 then
minetest.add_entity(pos, "nssm:mantis")
else
minetest.add_entity(pos, "nssm:mantis_beast")
end
return
end
end
})

117
mobs/lava_titan.lua Normal file
View File

@ -0,0 +1,117 @@
mobs:register_mob("nssm:lava_titan", {
type = "monster",
hp_max = 180,
hp_min = 180,
collisionbox = {-0.45, -0.05, -0.45, 0.45, 1.8, 0.45},
visual = "mesh",
mesh = "lava_titan.x",
textures = {{"lava_titan.png"}},
visual_size = {x=2.7, y=2.7},
makes_footstep_sound = true,
view_range = 20,
fear_height = 4,
lifetimer = 500,
walk_velocity = 0.5,
run_velocity = 1.3,
floats = 1,
sounds = {
random = "lava_titan",
},
damage = 8,
jump = false,
jump_height=0,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 7,
max = 9,},
{name = "nssm:lava_titan_eye",
chance = 1,
min = 1,
max = 1,},
{name = "bucket:bucket_lava",
chance = 2,
min = 1,
max = 3,},
},
armor = 20,
drawtype = "front",
water_damage = 25,
rotate = 270,
light_damage = 0,
lava_damage = 0,
on_rightclick = nil,
floats = 0,
blood_texture="stone_blood.png",
blood_amount=50,
knock_back=0,
attack_type = "dogshoot",
dogshoot_switch = true,
arrow = "nssm:lava_arrow",
shoot_interval = 2,
shoot_offset = 0,
--[[
on_dist_attack = function(self, player)
local pos = player:getpos()
for dy=-1, 6, 1 do
for dx=-1, 1, 2 do
for dz=-1, 1, 2 do
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.get_node(p).name
if n~="default:lava_flowing" and not minetest.is_protected(p, "") then
minetest.set_node(p, {name="default:lava_flowing"})
end
end
end
end
end,
]]
animation = {
speed_normal = 25,
speed_run = 45,
stand_start = 120,
stand_end = 300,
walk_start = 10,
walk_end = 110,
run_start = 10,
run_end = 110,
punch_start = 301,
punch_end = 340,
shoot_start =340,
shoot_end=400,
},
do_custom = function (self)
digging_attack(self, nil, self.run_velocity, {x=0, y=4, z=0})
--digging_ability(self, nil, self.run_velocity, {x=0, y=5, z=0})
--putting_ability(self, "default:lava_source", self.run_velocity)
end,
--[[
custom_attack = function (self)
digging_attack
mobs.set_animation(self, "punch")
local p2 = p
local s2 = s
p2.y = p2.y + 1.5
s2.y = s2.y + 1.5
if mobs.line_of_sight(self, p2, s2) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
-- punch player
self.attack:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = self.damage}
}, nil)
end
end,
]]--
})

65
mobs/manticore.lua Normal file
View File

@ -0,0 +1,65 @@
mobs:register_mob("nssm:manticore", {
type = "monster",
hp_max = 55,
hp_min = 34,
collisionbox = {-0.8, -0.85, -0.8, 0.8, 1.9, 0.8},
visual = "mesh",
mesh = "manticore.x",
textures = {{"manticore.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 35,
fear_height = 4,
walk_velocity = 2,
run_velocity = 4,
sounds = {
random = "manticore",
},
damage = 6,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 3,
max = 4,},
{name = "nssm:manticore_spine",
chance = 3,
min = 2,
max = 5,},
{name = "nssm:manticore_fur",
chance = 3,
min = 1,
max = 2,},
},
armor = 60,
drawtype = "front",
water_damage = 2,
rotate = 270,
lava_damage = 5,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogshoot",
dogshoot_switch = true,
arrow = "nssm:spine",
shoot_interval = 2,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.1,
shoot_offset = 1,
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 1,
stand_end = 40,
walk_start = 240,
walk_end = 280,
run_start = 91,
run_end = 108,
punch_start = 110,
punch_end = 143,
shoot_start =180,
shoot_end=230,
}
})

65
mobs/mantis.lua Normal file
View File

@ -0,0 +1,65 @@
mobs:register_mob("nssm:mantis", {
type = "monster",
hp_max = 31,
hp_min = 24,
collisionbox = {-0.5, 0.00, -0.5, 0.5, 2.30, 0.5},
visual = "mesh",
mesh = "mantis.x",
textures = {{"mantis.png"}, {"mantis2.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 20,
fear_height = 4,
walk_velocity = 2,
run_velocity = 2.5,
sounds = {
random = "manti",
},
damage = 4,
jump = true,
drops = {
{name = "nssm:mantis_claw",
chance = 2,
min = 1,
max = 4,},
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:mantis_skin",
chance = 3,
min = 1,
max = 2,},
{name = "nssm:mantis_meat",
chance = 2,
min = 1,
max = 2,},
},
armor = 70,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
on_rightclick = nil,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
double_melee_attack = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 1,
stand_end = 20,
walk_start = 20,
walk_end = 60,
run_start = 60,
run_end = 80,
punch_start = 120,
punch_end = 140,
punch2_start = 145,
punch2_end = 165,
}
})

63
mobs/mantis_beast.lua Normal file
View File

@ -0,0 +1,63 @@
mobs:register_mob("nssm:mantis_beast", {
type = "monster",
hp_max = 30,
hp_min = 27,
collisionbox = {-0.65, 0.00, -0.65, 0.65, 1.50, 0.65},
visual = "mesh",
mesh = "mantis_beast.x",
textures = {{"mantis_beast.png"}, {"mantis_beast2.png"}},
visual_size = {x=6, y=6},
makes_footstep_sound = true,
view_range = 25,
fear_height = 4,
walk_velocity = 2.5,
run_velocity = 3.5,
sounds = {
random = "manti",
},
damage = 5,
reach = 2,
jump = true,
drops = {
{name = "nssm:mantis_claw",
chance = 2,
min = 1,
max = 6,},
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 3,},
{name = "nssm:mantis_skin",
chance = 3,
min = 1,
max = 2,},
{name = "nssm:mantis_meat",
chance = 2,
min = 1,
max = 2,},
},
armor = 70,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 20,
stand_start = 0,
stand_end = 60,
walk_start = 70,
walk_end = 110,
run_start = 70,
run_end = 110,
punch_start = 140,
punch_end = 165,
}
})

121
mobs/masticone.lua Normal file
View File

@ -0,0 +1,121 @@
mobs:register_mob("nssm:masticone", {
type = "monster",
hp_max = 25,
hp_min = 24,
collisionbox = {-0.45, 0.00, -0.45, 0.45, 0.40, 0.45},
visual = "mesh",
mesh = "masticone.x",
textures = {{"masticone.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 15,
lifetimer = 500,
fear_height = 4,
rotate = 270,
walk_velocity = 1.5,
run_velocity = 2.5,
sounds = {
random = "masticone",
},
damage = 5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 7,
max = 8,},
{name = "nssm:masticone_fang",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:masticone_skull_fragments",
chance = 2,
min = 1,
max = 2,},
},
armor = 60,
drawtype = "front",
water_damage = 0,
lava_damage = 0,
floats=0,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=4,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
reach =1.5,
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 80,
stand_end = 140,
walk_start = 20,
walk_end = 40,
run_start = 20,
run_end = 40,
punch_start = 150,
punch_end = 180,
},
on_die = function(self, pos)
self.object:remove()
core.after(2, function()
minetest.add_particlespawner(
200, --amount
0.1, --time
{x=pos.x-1, y=pos.y-1, z=pos.z-1}, --minpos
{x=pos.x+1, y=pos.y+1, z=pos.z+1}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=1, y=1, z=1}, --maxvel
{x=-0.5,y=5,z=-0.5}, --minacc
{x=0.5,y=5,z=0.5}, --maxacc
0.1, --minexptime
1, --maxexptime
3, --minsize
4, --maxsize
false, --collisiondetection
"tnt_smoke.png" --texture
)
for i = 1,2 do
local pos = {x=pos.x+math.random(-1,1), y=pos.y+0.5, z=pos.z+math.random(-1,1)}
local n = minetest.get_node(pos).name
if n == "air" then
minetest.add_entity(pos, "nssm:masticone")
end
end
end)
end,
do_custom = function (self)
local pos = self.object:getpos()
local n = minetest.get_node(pos).name
if n == "default:lava_source" or n == "default:lava_flowing" then
self.object:set_hp(self.object:get_hp()-5)
if self.object:get_hp() <=0 then
for _,drop in pairs(self.drops) do
if math.random(1, drop.chance) == 1 then
obj = minetest.add_item(pos,
ItemStack(drop.name .. " "
.. math.random(drop.min, drop.max)))
if obj then
obj:setvelocity({
x = math.random(-1, 1),
y = 6,
z = math.random(-1, 1)
})
end
end
end
self.object:remove()
end
end
end,
})

116
mobs/mese_dragon.lua Normal file
View File

@ -0,0 +1,116 @@
mobs:register_mob("nssm:mese_dragon", {
type = "monster",
hp_max = 666,
hp_min = 666,
collisionbox = {-1, 0, -1, 1, 5, 1},
visual = "mesh",
mesh = "mese_dragon.x",
textures = {{"mese_dragon.png"}},
visual_size = {x=12, y=12},
makes_footstep_sound = true,
view_range = 45,
rotate = 270,
fear_height = 5,
walk_velocity = 2,
run_velocity = 4,
sounds = {
shoot_attack = "mesed",
attack = "mese_dragon",
distance = 60,
},
damage = 18,
jump = true,
jump_height = 10,
drops = {
{name = "nssm:rainbow_staff",
chance = 1,
min = 1,
max = 1},
{name = "nssm:energy_globe",
chance = 1,
min = 99,
max = 99},
},
armor = 30,
drawtype = "front",
water_damage = 0,
lava_damage = 0,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogshoot",
dogshoot_switch = true,
blood_texture="mese_blood.png",
blood_amount=30,
stepheight=3.1,
knock_back=0,
jump_height=12,
dogshoot_count_max = 9,
arrow = "nssm:roar_of_the_dragon",
reach = 5,
shoot_interval = 3,
shoot_offset = -1,
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 60,
stand_end = 120,
walk_start = 161,
walk_end = 205,
run_start = 206,
run_end = 242,
punch_start = 242,
punch_end = 275,
punch2_start = 330,
punch2_end = 370,
dattack_start = 120,
dattack_end = 160,
},
do_custom = function(self)
midas_ability(self, "default:mese_block", self.run_velocity,2, 3)
end,
custom_attack = function(self)
if self.timer > 1 then
self.timer = 0
self.attack_rip = self.attack_rip+1
local s = self.object:getpos()
if minetest.is_protected(s, "") then
return
end
local p = self.attack:getpos()
p.y = p.y + 1.5
s.y = s.y + 1.5
if minetest.line_of_sight(p, s) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
-- punch player
self.attack:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=self.damage}
}, nil)
end
if self.attack_rip>=8 then
self.attack_rip =0
mobs.set_animation("punch1")
for dx = -17,17 do
for dz= -17,17 do
local k = {x = s.x+dx, y=s.y+20, z=s.z+dz}
local n = minetest.get_node(k).name
if n=="air" and math.random(1,23)==1 then
minetest.set_node(k, {name="nssm:mese_meteor"})
nodeupdate(k)
end
end
end
end
end
end
})

56
mobs/moonheron.lua Normal file
View File

@ -0,0 +1,56 @@
mobs:register_mob("nssm:moonheron", {
type = "monster",
hp_max = 33,
hp_min = 22,
collisionbox = {-0.45, -0.3, -0.45, 0.45, 0.3, 0.45},
visual = "mesh",
mesh = "moonheron.x",
textures = {{"moonheron.png"}},
visual_size = {x=10, y=10},
view_range = 35,
rotate = 270,
walk_velocity = 2,
run_velocity = 3,
fall_speed = 0,
stepheight = 3,
sounds = {
random = "moonheron",
distance =40,
},
damage = 5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 3,},
{name = "nssm:heron_leg",
chance = 1,
min = 1,
max = 1,},
},
armor = 70,
floats = 1,
drawtype = "front",
water_damage = 5,
lava_damage = 5,
group_attack=true,
attack_animals=true,
knock_back=4,
blood_texture="nssm_blood.png",
on_rightclick = nil,
fly = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 140,
stand_end = 200,
walk_start = 20,
walk_end = 60,
run_start = 20,
run_end = 60,
punch_start = 80,
punch_end = 120,
}
})

123
mobs/mordain.lua Normal file
View File

@ -0,0 +1,123 @@
mobs:register_mob("nssm:mordain", {
type = "monster",
hp_max = 32,
hp_min = 23,
collisionbox = {-0.5, -0.3, -0.5, 0.5, 2.7, 0.5},
visual = "mesh",
mesh = "mordain.x",
textures = {{"mordain.png"}},
visual_size = {x=3.5, y=3.5},
makes_footstep_sound = false,
view_range = 30,
fear_height = 4,
walk_velocity = 1,
run_velocity = 3.5,
rotate = 270,
sounds = {
random = "mordain",
},
damage = 6,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 1,},
{name = "nssm:slothful_soul_fragment",
chance = 3,
min = 1,
max = 1,},
},
armor = 80,
drawtype = "front",
water_damage = 0,
lava_damage = 1,
group_attack=true,
attack_animals=true,
knock_back=1,
blood_texture="morparticle.png",
stepheight=1.1,
--light_damage = 2,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 20,
stand_start = 10,
stand_end = 90,
walk_start = 100,
walk_end = 140,
run_start = 170,
run_end = 200,
punch_start = 210,
punch_end = 225,
},
--pathfinding = 1,
custom_attack = function(self)
self.mordain_timer = (self.mordain_timer or os.time())
if (os.time() - self.mordain_timer) > 1 then
self.mordain_timer = os.time()
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
if minetest.line_of_sight({x = p.x, y = p.y +1.5, z = p.z}, {x = s.x, y = s.y +1.5, z = s.z}) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
-- punch player
self.attack:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=self.damage}
}, nil)
end
minetest.after(1, function()
local ty = s.y
local flag = 0
local m = 3
local v = {x=(p.x-s.x)*m, y = ty, z = (p.z-s.z)*m}
local d = {x=s.x+v.x, y = ty, z = s.z+v.z}
d.y = ty
for j = -3,3 do
ty = d.y + j
local current = minetest.get_node({x = d.x, y = ty, z = d.z}).name
local up = minetest.get_node({x = d.x, y = ty+1, z = d.z}).name
if up == "air" and current ~= "air" then
d.y = d.y + j+1.5
flag = 1
break
end
end
while flag ~= 1 do
d.x = p.x + math.random(-m,m)
d.z = p.z + math.random(-m,m)
d.y = p.y
local dist = dist_pos(d, p)
if dist>=2 then
for j = -3,3 do
ty = d.y + j
local current = minetest.get_node({x = d.x, y = ty, z = d.z}).name
local up = minetest.get_node({x = d.x, y = ty+1, z = d.z}).name
if up == "air" and current ~= "air" then
d.y = d.y + j+1.5
flag = 1
break
end
end
end
end
self.object:setpos(d)
end)
end
end
})

172
mobs/morde.lua Normal file
View File

@ -0,0 +1,172 @@
mobs:register_mob("nssm:morde", {
type = "monster",
hp_max = 47,
hp_min = 37,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.6, 0.4},
visual = "mesh",
rotate= 270,
mesh = "morde.x",
textures = {{"morde.png"}},
visual_size = {x=10, y=10},
makes_footstep_sound = true,
view_range = 20,
walk_velocity = 0.5,
reach =3,
run_velocity = 3.5,
damage = 6,
jump = true,
sounds = {
random = "morde",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 4,},
{name = "nssm:proud_soul_fragment",
chance = 3,
min = 1,
max = 1,},
},
armor = 60,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=1,
blood_texture="morparticle.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 10,
stand_end = 40,
walk_start = 50,
walk_end = 90,
run_start = 100,
run_end = 120,
punch_start = 130,
punch_end = 160,
},
custom_attack = function (self)
self.morde_timer = (self.morde_timer or os.time())
if (os.time() - self.morde_timer) > 1 then
self.morde_timer = os.time()
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
self.health = self.health + (self.damage*2)
local m = 3
if minetest.line_of_sight({x = p.x, y = p.y +1.5, z = p.z}, {x = s.x, y = s.y +1.5, z = s.z}) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
-- punch player
self.attack:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=self.damage}
}, nil)
minetest.add_particlespawner(
6, --amount
1, --time
{x=p.x-0.5, y=p.y-0.5, z=p.z-0.5}, --minpos
{x=p.x+0.5, y=p.y+0.5, z=p.z+0.5}, --maxpos
{x=(s.x-p.x)*m, y=(s.y-p.y+1)*m, z=(s.z-p.z)*m}, --minvel
{x=(s.x-p.x)*m, y=(s.y-p.y+1)*m, z=(s.z-p.z)*m}, --maxvel
{x=s.x-p.x, y=s.y-p.y+1, z=s.z-p.z}, --minacc
{x=s.x-p.x, y=s.y-p.y+1, z=s.z-p.z}, --maxacc
0.2, --minexptime
0.3, --maxexptime
2, --minsize
3, --maxsize
false, --collisiondetection
"morparticle.png" --texture
)
end
end
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
minetest.add_entity(pos, "nssm:mortick")
end,
})
minetest.register_entity("nssm:mortick", {
textures = {"mortick.png"},
hp_min = 10000,
hp_max = 10000,
armor = 100,
visual = "mesh",
mesh = "mortick.x",
visual_size = {x=3, y=3},
--lifetime = 10,
damage = 1,
on_step = function(self, dtime)
self.mortick_timer = self.mortick_timer or os.time()
self.timer = self.timer or 0
self.timer = self.timer+dtime
local s = self.object:getpos()
local s1 = {x=s.x, y = s.y-1, z = s.z}
--[[
if (os.time()-self.mortick_timer > self.lifetime) then
self.object:remove()
end
]]
--The mortick dies when he finds himself in the fire
local name = minetest.get_node(s1).name
if name == "fire:basic_flame" then
self.object:remove()
end
--Find player to attack:
self.attack = (self.attack or 0)
local objects = minetest.get_objects_inside_radius(s, 8)
for _,obj in ipairs(objects) do
if (obj:is_player()) then
self.attack = obj
end
end
--If found a player follow him
if self.attack ~= 0 then
local p = self.attack:getpos()
local yawp = self.attack:get_look_yaw()
local pi = math.pi
p.y = p.y + 1
p.x = p.x-math.cos(yawp)/2.5
p.z = p.z-math.sin(yawp)/2.5
local m = 10
local v = {x=-(s.x-p.x)*m, y=-(s.y-p.y)*m, z=-(s.z-p.z)*m}
local yaws = yawp +pi
--stay attached to players back:
self.object:setvelocity(v)
self.object:setyaw(yaws)
--damage player every ten seconds:
if (self.timer>10) then
self.timer = 0
self.attack:set_hp(self.attack:get_hp() - self.damage)
end
end
end
})

57
mobs/morgre.lua Normal file
View File

@ -0,0 +1,57 @@
mobs:register_mob("nssm:morgre", {
type = "monster",
hp_max = 33,
hp_min = 17,
collisionbox = {-0.20, -0.1, -0.20, 0.20, 1.60, 0.20},
visual = "mesh",
mesh = "morgre.x",
rotate = 270,
textures = {{"morgre.png"}},
visual_size = {x=5, y=5},
explosion_radius = 4,
makes_footstep_sound = true,
view_range = 25,
fear_height = 4,
walk_velocity = 0.5,
run_velocity = 3.5,
sounds = {
explode = "tnt_explode",
random = "morgre1",
},
damage = 1,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:greedy_soul_fragment",
chance = 5,
min = 1,
max = 1,},
},
armor = 60,
drawtype = "front",
water_damage = 0,
lava_damage = 0,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=1,
blood_texture="morparticle.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "explode",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 10,
stand_end = 40,
walk_start = 50,
walk_end = 90,
run_start = 120,
run_end = 140,
punch_start = 100,
punch_end = 110,
}
})

187
mobs/morgut.lua Normal file
View File

@ -0,0 +1,187 @@
mobs:register_mob("nssm:morgut", {
type = "monster",
hp_max = 35,
hp_min = 28,
collisionbox = {-0.3, -0.1, -0.3, 0.3, 1.8, 0.3},
visual = "mesh",
rotate= 270,
mesh = "morgut.x",
textures = {{"morgut.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 26,
walk_velocity = 0.5,
reach =2,
run_velocity = 4,
damage = 4,
runaway = true,
jump = true,
sounds = {
random = "morgut",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 3,},
{name = "nssm:gluttonous_soul_fragment",
chance = 3,
min = 1,
max = 1,},
},
armor = 70,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=1,
blood_texture="morparticle.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 10,
stand_end = 40,
walk_start = 50,
walk_end = 90,
run_start = 100,
run_end = 120,
punch_start = 130,
punch_end = 160,
},
do_custom = function (self)
self.flag = (self.flag or 0)
if self.inv_flag ~= 1 then
self.inventory = {}
for i=1,32 do
self.inventory[i]={name = '', num = 0}
end
end
self.inv_flag = (self.inv_flag or 1)
if self.flag == 1 then
self.state = ""
mobs.set_animation(self, "run")
self.object:setyaw(self.dir)
set_velocity(self, 4)
if os.time() - self.morgut_timer > 3 then
self.flag = 0
self.state = "stand"
end
end
end,
custom_attack = function (self)
self.curr_attack = (self.curr_attack or self.attack)
self.morgut_timer = (self.morgut_timer or os.time())
self.dir = (self.dir or 0)
if (os.time() - self.morgut_timer) > 1 then
if self.attack then
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
local m = 2
minetest.add_particlespawner(
6, --amount
1, --time
{x=p.x-0.5, y=p.y-0.5, z=p.z-0.5}, --minpos
{x=p.x+0.5, y=p.y+0.5, z=p.z+0.5}, --maxpos
{x=(s.x-p.x)*m, y=(s.y-p.y)*m, z=(s.z-p.z)*m}, --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, y=s.y-p.y, z=s.z-p.z}, --minacc
{x=s.x-p.x, y=s.y-p.y, z=s.z-p.z}, --maxacc
0.2, --minexptime
0.3, --maxexptime
2, --minsize
3, --maxsize
false, --collisiondetection
"roasted_duck_legs.png" --texture
)
minetest.after(1, function (self)
if self then
if self.attack:is_player() then
local pname = self.attack:get_player_name()
local player_inv = minetest.get_inventory({type='player', name = pname})
if player_inv:is_empty('main') then
--minetest.chat_send_all("Inventory empty")
else
for i = 1,32 do
--minetest.chat_send_all("Inventory is not empty")
local items = player_inv:get_stack('main', i)
local n = items:get_name()
if minetest.get_item_group(n, "eatable")==1 then
local index
local found = 0
for j = 1,32 do
if found == 0 then
if self.inventory[j].num == 0 then
--found an empty place
found = 2
index = j
else
--found a corrsponding itemstack
if self.inventory[j].name == n then
self.inventory[j].num = self.inventory[j].num +1
found = 1
end
end
end
end
if found == 2 then
self.inventory[index].name = n
self.inventory[index].num = 1
end
items:take_item()
player_inv:set_stack('main', i, items)
end
end
end
mobs.set_animation(self, "run")
self.flag = 1
self.morgut_timer = os.time()
self.curr_attack = self.attack
self.state = ""
local pyaw = self.curr_attack: get_look_yaw()
self.dir = pyaw
self.object:setyaw(pyaw)
if self then
set_velocity(self, 4)
end
end
end
end,self)
end
end
end,
on_die = function(self)
local pos = self.object:getpos()
if (self.inventory ~= nil) then
local elem
for i = 1,32 do
if self.inventory[i].num~=0 then
local items = ItemStack(self.inventory[i].name.." "..self.inventory[i].num)
local obj = minetest.add_item(pos, items)
obj:setvelocity({
x = math.random(-1, 1),
y = 6,
z = math.random(-1, 1)
})
end
end
end
self.object:remove()
end,
})

243
mobs/morlu.lua Normal file
View File

@ -0,0 +1,243 @@
mobs:register_mob("nssm:morlu", {
type = "monster",
hp_max = 36,
hp_min = 26,
collisionbox = {-0.3, -0.1, -0.3, 0.3, 0.6, 0.3},
visual = "mesh",
rotate= 270,
mesh = "morlu.x",
textures = {{"morlu.png"}},
visual_size = {x=7, y=7},
makes_footstep_sound = true,
view_range = 28,
walk_velocity = 0.5,
reach =2,
run_velocity = 4,
damage = 4,
runaway = true,
jump = true,
sounds = {
random = "morlu1",
random = "morlu2"
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 3,
max = 4,},
{name = "nssm:lustful_soul_fragment",
chance = 3,
min = 1,
max = 1,},
},
armor = 40,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=1,
blood_texture="morparticle.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 10,
stand_end = 40,
walk_start = 50,
walk_end = 90,
run_start = 50,
run_end = 90,
punch_start = 100,
punch_end = 130,
},
do_custom = function (self)
self.flag = (self.flag or 0)
if self.inv_flag ~= 1 then
self.inventory = {}
self.invnum = 0
for i=1,6 do
self.inventory[i]={name = ''}
end
end
self.inv_flag = (self.inv_flag or 1)
if self.flag == 1 then
self.state = ""
mobs.set_animation(self, "run")
self.object:setyaw(self.dir)
set_velocity(self, 4)
if os.time() - self.morlu_timer > 3 then
self.flag = 0
self.state = "stand"
end
end
end,
custom_attack = function (self)
self.curr_attack = (self.curr_attack or self.attack)
self.morlu_timer = (self.morlu_timer or os.time())
self.dir = (self.dir or 0)
if (os.time() - self.morlu_timer) > 1 then
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
local m = 1
if self.attack:is_player() then
if minetest.get_modpath("3d_armor") then
local pname, player_inv, armor_inv, ppos = armor:get_valid_player(self.attack, "[set_player_armor]")
local pname = self.attack:get_player_name()
local player_inv = minetest.get_inventory({type='player', name = pname})
if player_inv:is_empty('armor') then
-- punch player if he doesn't own an armor
self.attack:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = self.damage}
}, nil)
else
local armor_elements = {}
local armor_num = 0
local steal_pos
for i=1,6 do
local armor_stack = player_inv:get_stack("armor", i)
local armor_item = armor_stack:get_name()
if armor_stack:get_count() > 0 then
armor_elements[armor_num]={name=armor_item, pos=i}
armor_num = armor_num + 1
end
end
if armor_num > 0 then
steal_pos = math.random(1,armor_num)
steal_pos = steal_pos-1
--[[for i=0,armor_num-1 do
minetest.chat_send_all("Posizione: "..armor_elements[i].pos.." Oggetto: "..armor_elements[i].name)
end
]]
--minetest.chat_send_all("Selezionato: pos: "..armor_elements[steal_pos].pos.." nome: "..armor_elements[steal_pos].name)
local cpos = string.find(armor_elements[steal_pos].name, ":")
--minetest.chat_send_all("Posizione dei due punti: "..cpos)
local mod_name = string.sub(armor_elements[steal_pos].name, 0, cpos-1)
local nname = string.sub(armor_elements[steal_pos].name, cpos+1)
--minetest.chat_send_all("Armor Mod name: "..mod_name)
if mod_name == "3d_armor" then
nname = "3d_armor_inv_"..nname..".png"
elseif mod_name == "nssm" then
nname = "inv_"..nname..".png"
else
nname = "3d_armor_inv_chestplate_diamond.png"
end
--minetest.chat_send_all("Nome della texture: "..nname)
minetest.add_particlespawner(
1, --amount
1, --time
{x=p.x, y=p.y+1, z=p.z}, --minpos
{x=p.x, y=p.y+1, z=p.z}, --maxpos
{x=(s.x-p.x)*m, y=(s.y-p.y)*m, z=(s.z-p.z)*m}, --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, y=s.y-p.y-1, z=s.z-p.z}, --minacc
{x=s.x-p.x, y=s.y-p.y-1, z=s.z-p.z}, --maxacc
0.5, --minexptime
0.5, --maxexptime
10, --minsize
10, --maxsize
false, --collisiondetection
nname --texture
)
minetest.after(1, function (self)
if self then
local armor_stack = player_inv:get_stack("armor", armor_elements[steal_pos].pos)
armor_stack:take_item()
player_inv:set_stack('armor', armor_elements[steal_pos].pos, armor_stack)
armor_stack = armor_inv:get_stack("armor", armor_elements[steal_pos].pos)
armor_stack:take_item()
armor_inv:set_stack('armor', armor_elements[steal_pos].pos, armor_stack)
armor:set_player_armor(self.attack, self.attack)
--armor:update_armor(self.attack)
armor:update_inventory(self.attack)
--armor:update_player_visuals(self.attack)
--Update personal inventory of armors:
if (self.invnum ~= nil) and (self.invnum <= 5) then
--minetest.chat_send_all("Invnum: "..self.invnum)
--minetest.chat_send_all("Salvo: "..armor_elements[steal_pos].name)
self.invnum = self.invnum + 1
self.inventory[self.invnum].name = armor_elements[steal_pos].name
end
mobs.set_animation(self, "run")
self.flag = 1
self.morlu_timer = os.time()
self.curr_attack = self.attack
self.state = ""
local pyaw = self.curr_attack: get_look_yaw()
self.dir = pyaw
self.object:setyaw(pyaw)
if self then
set_velocity(self, 4)
end
end
end,self)
end
end
else
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
if minetest.line_of_sight({x = p.x, y = p.y +1.5, z = p.z}, {x = s.x, y = s.y +1.5, z = s.z}) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
-- punch player
self.attack:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=self.damage}
}, nil)
end
end
end
end
end,
on_die = function(self)
local pos = self.object:getpos()
if (self.inventory ~= nil) then
if self.invnum > 0 then
for i=1,self.invnum do
local items = ItemStack(self.inventory[i].name.." 1")
local obj = minetest.add_item(pos, items)
obj:setvelocity({
x = math.random(-1, 1),
y = 6,
z = math.random(-1, 1)
})
end
end
end
self.object:remove()
end,
})

925
mobs/morvalar.lua Normal file
View File

@ -0,0 +1,925 @@
local time_limit = 120
posmorvalarblock = {x=827, y=-30094, z=-817}
function respawn_block(self)
--start a timer if it doesn't exist
self.stop_timer = self.stop_timer or os.time()
--create a variable to record the hp if it doesn't exist
self.hp_record = self.hp_record or self.health
if self.hp_record ~= self.health then
self.stop_timer = os.time()
self.hp_record = self.health
else
if os.time() - self.stop_timer > time_limit then
minetest.chat_send_all("Time is over!")
self.object:remove()
minetest.set_node(posmorvalarblock, {name="nssb:morvalar_block"})
end
end
end
mobs:register_mob("nssm:morvalar", {
type = "monster",
hp_max = 100,
hp_min = 100,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.8, 0.4},
visual = "mesh",
--rotate= 270,
mesh = "morvalar.x",
textures = {{"morvalar.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 50,
walk_velocity = 1.6,
reach =3,
run_velocity = 3.2,
damage = 8,
runaway = true,
jump = true,
sounds = {
random = "morvalar7",
},
armor = 50,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
blood_texture="morparticle.png",
blood_amount=10,
knock_back=0,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 5,
stand_end = 6,
walk_start = 10,
walk_end = 50,
run_start = 10,
run_end = 50,
punch_start = 55,
punch_end = 80,
},
do_custom = function(self)
respawn_block(self)
end,
custom_attack = function (self)
self.curr_attack = (self.curr_attack or self.attack)
self.morvalar_timer = (self.morvalar_timer or os.time())
self.dir = (self.dir or 0)
if (os.time() - self.morvalar_timer) > 2 then
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
local m = 1
if self.attack:is_player() then
if minetest.get_modpath("3d_armor") then
local pname, player_inv, armor_inv, ppos = armor:get_valid_player(self.attack, "[set_player_armor]")
local pname = self.attack:get_player_name()
local player_inv = minetest.get_inventory({type='player', name = pname})
if player_inv:is_empty('armor') then
-- punch player if he doesn't own an armor
self.attack:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = self.damage}
}, nil)
else
local armor_elements = {}
local armor_num = 0
local steal_pos
for i=1,6 do
local armor_stack = player_inv:get_stack("armor", i)
local armor_item = armor_stack:get_name()
if armor_stack:get_count() > 0 then
armor_elements[armor_num]={name=armor_item, pos=i}
armor_num = armor_num + 1
end
end
if armor_num > 0 then
steal_pos = math.random(1,armor_num)
steal_pos = steal_pos-1
local cpos = string.find(armor_elements[steal_pos].name, ":")
local mod_name = string.sub(armor_elements[steal_pos].name, 0, cpos-1)
local nname = string.sub(armor_elements[steal_pos].name, cpos+1)
if mod_name == "3d_armor" then
nname = "3d_armor_inv_"..nname..".png"
elseif mod_name == "nssm" then
nname = "inv_"..nname..".png"
else
nname = "3d_armor_inv_chestplate_diamond.png"
end
minetest.add_particlespawner(
1, --amount
1, --time
{x=p.x, y=p.y+1, z=p.z}, --minpos
{x=p.x, y=p.y+1, z=p.z}, --maxpos
{x=(s.x-p.x)*m, y=(s.y-p.y)*m, z=(s.z-p.z)*m}, --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, y=s.y-p.y-1, z=s.z-p.z}, --minacc
{x=s.x-p.x, y=s.y-p.y-1, z=s.z-p.z}, --maxacc
0.5, --minexptime
0.5, --maxexptime
10, --minsize
10, --maxsize
false, --collisiondetection
nname --texture
)
minetest.after(1, function (self)
local armor_stack = player_inv:get_stack("armor", armor_elements[steal_pos].pos)
armor_stack:take_item()
player_inv:set_stack('armor', armor_elements[steal_pos].pos, armor_stack)
armor_stack = armor_inv:get_stack("armor", armor_elements[steal_pos].pos)
armor_stack:take_item()
armor_inv:set_stack('armor', armor_elements[steal_pos].pos, armor_stack)
armor:set_player_armor(self.attack, self.attack)
armor:update_inventory(self.attack)
end,self)
end
end
else
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
if minetest.line_of_sight({x = p.x, y = p.y +1.5, z = p.z}, {x = s.x, y = s.y +1.5, z = s.z}) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
-- punch player
self.attack:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=self.damage}
}, nil)
end
end
end
end
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
add_entity_and_particles("nssm:morvalar6", pos, "morparticle.png", 10)
end,
})
mobs:register_mob("nssm:morvalar6", {
type = "monster",
hp_max = 120,
hp_min = 120,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.8, 0.4},
visual = "mesh",
--rotate= 270,
mesh = "morvalar.x",
textures = {{"morvalar.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 50,
walk_velocity = 1.6,
reach =4,
run_velocity = 3.2,
damage = 8,
runaway = true,
jump = true,
sounds = {
random = "morvalar6",
},
armor = 50,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
blood_amount=10,
knock_back=0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 85,
stand_end = 86,
walk_start = 90,
walk_end = 130,
run_start = 90,
run_end = 130,
punch_start = 132,
punch_end = 162,
},
do_custom = function(self)
respawn_block(self)
end,
custom_attack = function (self)
self.morvalar6_timer = (self.morvalar6_timer or os.time())
self.dir = (self.dir or 0)
if (os.time() - self.morvalar6_timer) > 1 then
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
local m = 2
minetest.after(1, function (self)
if self.attack:is_player() then
local pname = self.attack:get_player_name()
local player_inv = minetest.get_inventory({type='player', name = pname})
if player_inv:is_empty('main') then
--minetest.chat_send_all("Inventory empty")
else
local imhungry = 0
for i = 1,32 do
--minetest.chat_send_all("Inventory is not empty")
local items = player_inv:get_stack('main', i)
local n = items:get_name()
if minetest.get_item_group(n, "eatable")==1 then
imhungry = 1
for t = 0,2 do
items:take_item()
end
player_inv:set_stack('main', i, items)
end
end
if imhungry == 0 then
self.attack:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = self.damage}
}, nil)
else
s.y = s.y+1.8
minetest.add_particlespawner(
1, --amount
1, --time
{x=p.x, y=p.y+1, z=p.z}, --minpos
{x=p.x, y=p.y+1, z=p.z}, --maxpos
{x=(s.x-p.x)*m, y=(s.y-p.y)*m, z=(s.z-p.z)*m}, --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, y=s.y-p.y-1, z=s.z-p.z}, --minacc
{x=s.x-p.x, y=s.y-p.y-1, z=s.z-p.z}, --maxacc
0.5, --minexptime
0.5, --maxexptime
10, --minsize
10, --maxsize
false, --collisiondetection
"roasted_duck_legs.png" --texture
)
end
self.morvalar6_timer = os.time()
end
end
end,self)
end
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
add_entity_and_particles("nssm:morvalar5", pos, "morparticle.png", 10)
end,
})
mobs:register_mob("nssm:morvalar5", {
type = "monster",
hp_max = 130,
hp_min = 130,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.8, 0.4},
visual = "mesh",
--rotate= 270,
mesh = "morvalar.x",
textures = {{"morvalar.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 50,
walk_velocity = 1.6,
reach =6,
run_velocity = 3.2,
damage = 4,
runaway = true,
jump = true,
sounds = {
random = "morvalar5",
},
armor = 40,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
blood_amount=10,
knock_back=0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 165,
stand_end = 166,
walk_start = 170,
walk_end = 210,
run_start = 170,
run_end = 210,
punch_start = 215,
punch_end = 245,
},
do_custom = function(self)
respawn_block(self)
end,
custom_attack = function (self)
self.morvalar5_timer = (self.morvalar5_timer or os.time())
self.dir = (self.dir or 0)
if (os.time() - self.morvalar5_timer) > 2 then
local s = self.object:getpos()
local p = self.attack:getpos()
minetest.after(2, function(self)
mobs.set_animation(self, "punch")
tnt_boom_nssm(p, {damage_radius=6,radius=5,ignore_protection=false})
self.morvalar5_timer = os.time()
end,self)
end
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
add_entity_and_particles("nssm:morvalar4", pos, "morparticle.png", 10)
end,
})
mobs:register_mob("nssm:morvalar4", {
type = "monster",
hp_max = 100,
hp_min = 100,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.8, 0.4},
visual = "mesh",
--rotate= 270,
mesh = "morvalar.x",
textures = {{"morvalar.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 50,
walk_velocity = 1.6,
reach = 3,
run_velocity = 3.2,
damage = 4,
runaway = true,
jump = true,
sounds = {
random = "morvalar4",
},
armor = 30,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
blood_amount=10,
knock_back=0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 250,
stand_end = 251,
walk_start = 255,
walk_end = 295,
run_start = 255,
run_end = 295,
punch_start = 300,
punch_end = 320,
},
do_custom = function(self)
respawn_block(self)
end,
custom_attack = function(self)
self.morvalar4_timer = (self.morvalar4_timer or os.time())
if (os.time() - self.morvalar4_timer) > 1 then
self.morvalar4_timer = os.time()
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
if minetest.line_of_sight({x = p.x, y = p.y +1.5, z = p.z}, {x = s.x, y = s.y +1.5, z = s.z}) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
-- punch player
self.attack:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=self.damage}
}, nil)
end
minetest.after(1.4, function()
local ty = s.y
local flag = 0
local m = 3
local v = {x=(p.x-s.x)*m, y = ty, z = (p.z-s.z)*m}
local d = {x=s.x+v.x, y = ty, z = s.z+v.z}
d.y = ty
for j = -3,3 do
ty = d.y + j
local current = minetest.get_node({x = d.x, y = ty, z = d.z}).name
local up = minetest.get_node({x = d.x, y = ty+1, z = d.z}).name
if up == "air" and current ~= "air" then
d.y = d.y + j+1.5
flag = 1
break
end
end
while flag ~= 1 do
d.x = p.x + math.random(-m,m)
d.z = p.z + math.random(-m,m)
d.y = p.y
local dist = dist_pos(d, p)
if dist>=2 then
for j = -3,3 do
ty = d.y + j
local current = minetest.get_node({x = d.x, y = ty, z = d.z}).name
local up = minetest.get_node({x = d.x, y = ty+1, z = d.z}).name
if up == "air" and current ~= "air" then
d.y = d.y + j+1.5
flag = 1
break
end
end
end
end
self.object:setpos(d)
end)
end
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
add_entity_and_particles("nssm:morvalar3", pos, "morparticle.png", 10)
end,
})
mobs:register_mob("nssm:morvalar3", {
type = "monster",
hp_max = 120,
hp_min = 120,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.8, 0.4},
visual = "mesh",
--rotate= 270,
mesh = "morvalar.x",
textures = {{"morvalar.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 50,
walk_velocity = 1.6,
reach = 3,
run_velocity = 3.2,
damage = 16,
runaway = true,
jump = true,
sounds = {
random = "morvalar3",
},
armor = 30,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
blood_amount=10,
knock_back=0,
on_rightclick = nil,
attack_type = "dogshoot",
dogshoot_switch = true,
arrow = "nssm:morarrow",
shoot_interval = 2,
shoot_offset = 0,
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 325,
stand_end = 326,
walk_start = 330,
walk_end = 370,
run_start = 330,
run_end = 370,
punch_start = 375,
punch_end = 395,
shoot_start = 400,
shoot_end = 450,
},
do_custom = function(self)
respawn_block(self)
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
add_entity_and_particles("nssm:morvalar2", pos, "morparticle.png", 10)
end,
})
mobs:register_mob("nssm:morvalar2", {
type = "monster",
hp_max = 90,
hp_min = 90,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.8, 0.4},
visual = "mesh",
--rotate= 270,
mesh = "morvalar.x",
textures = {{"morvalar.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 50,
walk_velocity = 1.6,
reach = 6,
run_velocity = 3.2,
damage = 4,
runaway = true,
jump = true,
sounds = {
random = "morvalar2",
},
armor = 50,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
blood_amount=10,
knock_back=0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 455,
stand_end = 456,
walk_start = 460,
walk_end = 500,
run_start = 460,
run_end = 500,
punch_start = 505,
punch_end = 545,
},
do_custom = function(self)
respawn_block(self)
end,
custom_attack = function(self)
self.morvalar2_timer = (self.morvalar2_timer or os.time())
if (os.time() - self.morvalar2_timer) > 1 then
self.morvalar2_timer = os.time()
local s = self.object:getpos()
local p = self.attack:getpos()
local counter = 0
local objects = minetest.get_objects_inside_radius(s, 7)
for _,obj in ipairs(objects) do
if obj:get_luaentity() then
local name = obj:get_luaentity().name
if (name == "nssm:mordain" or name == "nssm:morde" or name == "nssm:morgut" or name == "nssm:morgre" or name == "nssm:morlu" or name == "nssm:morwa" or name == "nssm:morvy") then
counter = counter + 1
end
end
end
minetest.chat_send_all("Ne ho contati: "..counter)
if counter < 2 then
mobs.set_animation(self, "punch")
local v = vector.subtract(p,s)
--local v = {x = s.x-p.x, y = s.y-p.y , z= s.z-p.z}
v = vector.normalize(v)
local per = perpendicular_vector(v)
local p1 = vector.add(s,v)
p1 = vector.subtract(p1,vector.multiply(per,4))
add_entity_and_particles("nssm:morwa", p1, "morparticle.png", 1)
p1 = vector.add(p1,per)
add_entity_and_particles("nssm:mordain", p1, "morparticle.png", 1)
p1 = vector.add(p1,per)
add_entity_and_particles("nssm:morgre", p1, "morparticle.png", 1)
p1 = vector.add(p1,per)
add_entity_and_particles("nssm:morlu", p1, "morparticle.png", 1)
p1 = vector.add(p1,per)
add_entity_and_particles("nssm:morgut", p1, "morparticle.png", 1)
p1 = vector.add(p1,per)
add_entity_and_particles("nssm:morde", p1, "morparticle.png", 1)
p1 = vector.add(p1,per)
add_entity_and_particles("nssm:morvy", p1, "morparticle.png", 1)
p1 = vector.add(p1,per)
end
end
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
add_entity_and_particles("nssm:morvalar1", pos, "morparticle.png", 10)
end,
})
mobs:register_mob("nssm:morvalar1", {
type = "monster",
hp_max = 160,
hp_min = 160,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.8, 0.4},
visual = "mesh",
--rotate= 270,
mesh = "morvalar.x",
textures = {{"morvalar.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 50,
walk_velocity = 1.6,
reach = 6,
run_velocity = 3.2,
damage = 4,
runaway = true,
jump = true,
sounds = {
random = "morvalar1",
},
armor = 20,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
blood_amount=10,
knock_back=0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 550,
stand_end = 551,
walk_start = 560,
walk_end = 600,
run_start = 560,
run_end = 600,
punch_start = 610,
punch_end = 640,
},
do_custom = function(self)
respawn_block(self)
end,
custom_attack = function (self)
self.morvalar1_timer = (self.morvalar1_timer or os.time())
if (os.time() - self.morvalar1_timer) > 3 then
self.morvalar1_timer = os.time()
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
local m = 3
if minetest.line_of_sight({x = p.x, y = p.y +1.5, z = p.z}, {x = s.x, y = s.y +1.5, z = s.z}) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
-- punch player
self.health = self.health + (self.damage*3)
self.attack:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=self.damage}
}, nil)
end
end
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
add_entity_and_particles("nssm:morvalar0", pos, "morparticle.png", 10)
end,
})
mobs:register_mob("nssm:morvalar0", {
type = "monster",
hp_max = 100,
hp_min = 100,
collisionbox = {-0.4, -0.1, -0.4, 0.4, 1.8, 0.4},
visual = "mesh",
--rotate= 270,
mesh = "morvalar.x",
textures = {{"morvalar.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 50,
walk_velocity = 1.6,
reach = 16,
run_velocity = 3.2,
damage = 4,
runaway = true,
jump = true,
sounds = {
random = "kamehameha",
},
drops = {
{name = "nssm:death_scythe",
chance = 1,
min = 1,
max = 1,},
},
armor = 30,
drawtype = "front",
water_damage = 0,
fear_height = 4,
floats = 1,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
blood_amount=10,
knock_back=0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 645,
stand_end = 646,
walk_start = 650,
walk_end = 690,
run_start = 650,
run_end = 690,
punch_start = 700,
punch_end = 750,
},
do_custom = function(self)
respawn_block(self)
end,
custom_attack = function (self)
self.morvalar1_timer = (self.morvalar1_timer or os.time())
if (os.time() - self.morvalar1_timer) > 1 then
self.morvalar1_timer = os.time()
local s = self.object:getpos()
local p = self.attack:getpos()
mobs.set_animation(self, "punch")
local m = 5 --velocity of the kamehameha
local obj = minetest.add_entity(s, "nssm:kamehameha_bad")
s.y = s.y+0.5
p.y = p.y+0.9
local dir = {x=(p.x-s.x)*m, y=(p.y-s.y)*m, z=(p.z-s.z)*m} --direction of the kamehameha
obj:setvelocity(dir)
end
end,
on_die = function(self)
local pos = self.object:getpos()
self.object:remove()
minetest.add_particlespawner({
amount = 500,
time = 2,
minpos = {x=pos.x-2, y=pos.y-1, z=pos.z-2},
maxpos = {x=pos.x+2, y=pos.y+4, z=pos.z+2},
minvel = {x=0, y=0, z=0},
maxvel = {x=1, y=2, z=1},
minacc = {x=-0.5,y=0.6,z=-0.5},
maxacc = {x=0.5,y=0.7,z=0.5},
minexptime = 2,
maxexptime = 3,
minsize = 3,
maxsize = 5,
collisiondetection = false,
vertical = false,
texture = "morparticle.png",
})
minetest.set_node(posmorvalarblock, {name="nssb:dis_morvalar_block"})
--minetest.add_entity(pos, "nssm:morvalar3")
end,
})
minetest.register_entity("nssm:kamehameha_bad", {
textures = {"kamehameha.png"},
on_step = function(self, dtime)
local pos = self.object:getpos();
if self.timer == 0 then
self.timer = os.time()
end
if os.time() - self.timer > self.life_time then
self.object:remove()
end
local objects = minetest.get_objects_inside_radius(pos, 2)
for _,obj in ipairs(objects) do
if obj:is_player() then
minetest.chat_send_all("Dentro il raggio grande")
obj:set_hp(obj:get_hp()-5)
end
if obj:get_luaentity() then
local name = obj:get_luaentity().name
if name ~= "nssm:morvalar0" and name ~="nssm:kamehameha_bad" then
obj:set_hp(obj:get_hp()-5)
if (obj:get_hp() <= 0) then
if (not obj:is_player()) then
obj:remove()
end
end
end
end
end
local objects = minetest.get_objects_inside_radius(pos, 1)
for _,obj in ipairs(objects) do
if obj:is_player() then
tnt_boom_nssm(pos, {damage_radius=6,radius=5,ignore_protection=false})
self.object:remove()
minetest.chat_send_all("Dentro il raggio piccolo")
end
if obj:get_luaentity() then
local name = obj:get_luaentity().name
if name ~= "nssm:morvalar0" and name ~="nssm:kamehameha_bad" then
tnt_boom_nssm(pos, {damage_radius=6,radius=5,ignore_protection=false})
self.object:remove()
end
end
end
local nodename = minetest.get_node(pos).name
if nodename ~= "air" then
explosion(pos, 5, 0, 1, true)
self.object:remove()
end
end,
life_time = 40,
timer = 0,
custom_timer = 0,
})
--[[
7 code: ruba l'armatura come il morlu, ma poi non scappa e ti attacca normalmente. O un po' un po' o prima ruba e poi ti ara e basta.
6 code: stand: 85-86 walk: 90-130 attack: 132-162
Attacca come prima con 7 ma ruba il cibo come il morvalar6 al posto dell'armatura, e non scappa ma attacca.
5 code: stand: 165-166 walk: 170-210 attack: 215-245
Fa esplodere un po' la sua coda come un Morgre fa esplodere se stesso.
4 code: stand: 250-251 walk: 255-295 attack: 300-320
Attacca esattamente come un Mordain
3 code: stand: 325-326 walk: 330-370 attack: 375-395(punch) 400-450(shoot)
Dogshoot con lo stesso intervel del Morwa, che mi pare sia 2.
2 code: stand: 455-456 walk: 460-500 attack: 505-545
Evoca intorno a s<EFBFBD> i 7 mostri del Morlendor contemporaneamente, non fa nulla fino a quando sono nel suo raggio visivo, quando muoiono ne evoca altri 7 e cos<EFBFBD> via fino a che non lo abbatti, sei libero di reinterpretare questo attacco in base alle tue capacit<EFBFBD>.
1 code: stand: 550-551 walk: 560-600 attack: 610-640
Attacca assorbendo la vita come un morde, si ricarica in questo modo, ma di pi<EFBFBD> del numero che assorbe.
0 code: stand: 645-646 walk: 650-690 attack: 700-750
Shoota delle kamehameha
]]--

280
mobs/morvy.lua Normal file
View File

@ -0,0 +1,280 @@
mobs:register_mob("nssm:morvy", {
type = "monster",
hp_max = 39,
hp_min = 21,
collisionbox = {-0.3, -0.1, -0.3, 0.3, 2.3, 0.3},
visual = "mesh",
mesh = "morvy.x",
textures = {{"morvy.png"}},
visual_size = {x=6, y=6},
makes_footstep_sound = true,
view_range = 35,
fear_height = 5,
walk_velocity = 0.7,
run_velocity = 2,
rotate = 270,
damage = 4,
sounds = {
random = "morvy",
},
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 5,
max = 7,},
{name = "nssm:envious_soul_fragment",
chance = 3,
min = 1,
max = 1,},
},
reach = 8,
armor = 60,
drawtype = "front",
water_damage = 0,
lava_damage = 0,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=1,
blood_texture="morparticle.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 10,
stand_end = 40,
walk_start = 50,
walk_end = 90,
run_start = 50,
run_end = 90,
punch_start = 100,
punch_end = 130,
},
custom_attack = function(self)
mobs.set_animation(self, "stand")
self.morvy_counter = (self.morvy_counter or 0) + 1
if self.morvy_counter == 4 then
mobs.set_animation(self, "punch")
self.morvy_counter = 0
local counter = 0
local s = self.object:getpos()
local p = self.attack:getpos()
p.y = p.y + 1.5
s.y = s.y + 1.5
if mobs.line_of_sight(self, p, s) == true then
--[[play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end]]
local pos1 = {x=s.x+math.random(-0.5,0.5), y=s.y+0.2, z=s.z+math.random(-0.5,0.5)}
local objects = minetest.get_objects_inside_radius(s, 10)
for _,obj in ipairs(objects) do
if (obj:get_luaentity() and ((obj:get_luaentity().name == "nssm:morbat1") or (obj:get_luaentity().name == "nssm:morbat2") or (obj:get_luaentity().name == "nssm:morbat3"))) then
counter = counter + 1
end
end
if (minetest.get_node(pos1).name == "air")
and (counter < 5)
then
local bat
local which = math.random(1,3)
if which == 1 then
bat = "nssm:morbat1"
elseif which == 2 then
bat = "nssm:morbat2"
elseif which == 3 then
bat = "nssm:morbat3"
end
if (bat=="nssm:morbat3") then
pos1.y=pos1.y+1.5
end
minetest.add_entity(pos1, bat)
minetest.add_particlespawner(
20, --amount
0.1, --time
{x=pos1.x-0.2, y=pos1.y-0.2, z=pos1.z-0.2}, --minpos
{x=pos1.x+0.2, y=pos1.y+0.2, z=pos1.z+0.2}, --maxpos
{x=0, y=0, z=0}, --minvel
{x=0.1, y=0.3, z=0.1}, --maxvel
{x=-0.5,y=1,z=-0.5}, --minacc
{x=0.5,y=1,z=0.5}, --maxacc
0.1, --minexptime
4, --maxexptime
2, --minsize
6, --maxsize
false, --collisiondetection
"morparticle.png" --texture
)
end
end
end
end
})
--Morbats
mobs:register_mob("nssm:morbat1", {
type = "monster",
hp_max = 15,
hp_min = 13,
collisionbox = {-0.1, 0.2, -0.1, 0.1, 0.4, 0.1},
visual = "mesh",
mesh = "morbat.x",
textures = {{"morbat1.png"}},
visual_size = {x=2, y=2},
view_range = 40,
walk_velocity = 0.5,
run_velocity = 3,
fall_speed = 0,
stepheight = 3,
--[[ sounds = {
random = "duck",
},]]
damage = 4,
reach = 2,
jump = true,
rotate = 270,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
},
armor = 80,
drawtype = "front",
water_damage = 0,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
on_rightclick = nil,
fly = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 60,
stand_end = 90,
walk_start = 10,
walk_end = 50,
run_start = 10,
run_end = 50,
punch_start = 100,
punch_end = 115,
}
})
mobs:register_mob("nssm:morbat2", {
type = "monster",
hp_max = 13,
hp_min = 5,
collisionbox = {-0.1, 0.2, -0.1, 0.1, 0.4, 0.1},
visual = "mesh",
mesh = "morbat.x",
textures = {{"morbat2.png"}},
visual_size = {x=2, y=2},
view_range = 40,
walk_velocity = 0.5,
run_velocity = 3,
fall_speed = 0,
stepheight = 3,
--[[ sounds = {
random = "duck",
},]]
damage = 4,
reach = 1,
jump = true,
rotate = 270,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
},
armor = 100,
drawtype = "front",
water_damage = 0,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
on_rightclick = nil,
fly = true,
attack_type = "explode",
explosion_radius = 3,
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 60,
stand_end = 90,
walk_start = 10,
walk_end = 50,
run_start = 10,
run_end = 50,
punch_start = 100,
punch_end = 115,
}
})
mobs:register_mob("nssm:morbat3", {
type = "monster",
hp_max = 13,
hp_min = 12,
collisionbox = {-0.1, 0.2, -0.1, 0.1, 0.4, 0.1},
visual = "mesh",
mesh = "morbat.x",
textures = {{"morbat3.png"}},
visual_size = {x=2, y=2},
view_range = 40,
walk_velocity = 0.5,
run_velocity = 3,
fall_speed = 0,
stepheight = 3,
--[[ sounds = {
random = "duck",
},]]
damage = 4,
reach = 1,
jump = true,
rotate = 270,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
},
armor = 100,
drawtype = "front",
water_damage = 0,
lava_damage = 0,
light_damage = 0,
blood_texture="morparticle.png",
on_rightclick = nil,
fly = true,
attack_type = "shoot",
arrow = "nssm:morarrow",
shoot_interval = 3,
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 60,
stand_end = 90,
walk_start = 10,
walk_end = 50,
run_start = 10,
run_end = 50,
punch_start = 100,
punch_end = 115,
}
})

71
mobs/morwa.lua Normal file
View File

@ -0,0 +1,71 @@
mobs:register_mob("nssm:morwa", {
type = "monster",
hp_max = 56,
hp_min = 49,
collisionbox = {-1, -0.1, -1, 1, 3, 1},
visual = "mesh",
mesh = "morwa.x",
textures = {{"morwa.png"}},
visual_size = {x=10, y=10},
makes_footstep_sound = true,
view_range = 25,
fear_height = 4,
walk_velocity = 0.5,
run_velocity = 4,
sounds = {
random = "morwa",
},
damage = 8,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 3,
max = 4,},
{name = "nssm:wrathful_soul_fragment",
chance = 3,
min = 1,
max = 1,},
},
armor = 50,
drawtype = "front",
water_damage = 0,
reach =4,
rotate = 270,
lava_damage = 0,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=1,
blood_texture="morparticle.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogshoot",
dogshoot_switch = true,
arrow = "nssm:morarrow",
shoot_interval = 2,
shoot_offset = 0,
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 10,
stand_end = 40,
walk_start = 50,
walk_end = 90,
run_start = 100,
run_end = 120,
punch_start = 130,
punch_end = 160,
shoot_start =176,
shoot_end=226,
},
do_custom = function (self)
local pos = self.object:getpos()
local light = minetest.get_node_light(pos)
--minetest.chat_send_all("Luce: "..light)
if (light < 8) then
self.object:remove()
minetest.set_node(pos, {name="nssm:morwa_statue"})
end
end,
})

190
mobs/night_master.lua Normal file
View File

@ -0,0 +1,190 @@
mobs:register_mob("nssm:night_master", {
type = "monster",
hp_max = 60,
hp_min = 60,
collisionbox = {-0.65, -0.4, -0.65, 0.65, 0.4, 0.65},
visual = "mesh",
mesh = "moonherontrio.x",
textures = {{"moonherontrio.png"}},
visual_size = {x=18, y=18},
view_range = 40,
rotate = 270,
lifetimer = 500,
floats=1,
walk_velocity = 3,
run_velocity = 4,
fall_speed = 0,
stepheight = 3,
sounds = {
random = "night_master",
distance = 45,
},
damage = 10,
jump = false,
armor = 60,
drawtype = "front",
water_damage = 0,
lava_damage = 5,
light_damage = 0,
blood_texture="nssm_blood.png",
blood_amount=50,
on_rightclick = nil,
fly = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 60,
stand_end = 120,
walk_start = 20,
walk_end = 50,
run_start = 20,
run_end = 50,
punch_start = 130,
punch_end = 160,
},
on_die = function(self, pos)
minetest.add_particlespawner(
200, --amount
0.1, --time
{x=pos.x-1, y=pos.y-1, z=pos.z-1}, --minpos
{x=pos.x+1, y=pos.y+1, z=pos.z+1}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=1, y=1, z=1}, --maxvel
{x=-0.5,y=5,z=-0.5}, --minacc
{x=0.5,y=5,z=0.5}, --maxacc
0.1, --minexptime
1, --maxexptime
3, --minsize
4, --maxsize
false, --collisiondetection
"tnt_smoke.png" --texture
)
self.object:remove()
minetest.add_entity(pos, "nssm:night_master_2")
end,
})
mobs:register_mob("nssm:night_master_2", {
type = "monster",
hp_max = 60,
hp_min = 60,
collisionbox = {-0.65, -0.4, -0.65, 0.65, 0.4, 0.65},
visual = "mesh",
mesh = "night_master_2.x",
textures = {{"moonherontrio.png"}},
visual_size = {x=18, y=18},
view_range = 40,
rotate = 270,
lifetimer = 500,
floats=1,
walk_velocity = 3,
run_velocity = 4,
fall_speed = 0,
stepheight = 3,
sounds = {
random = "night_master",
distance = 45,
},
damage = 10,
jump = false,
armor = 60,
drawtype = "front",
water_damage = 0,
lava_damage = 5,
light_damage = 0,
on_rightclick = nil,
fly = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 60,
stand_end = 120,
walk_start = 20,
walk_end = 50,
run_start = 20,
run_end = 50,
punch_start = 130,
punch_end = 160,
},
on_die = function(self, pos)
minetest.add_particlespawner(
200, --amount
0.1, --time
{x=pos.x-1, y=pos.y-1, z=pos.z-1}, --minpos
{x=pos.x+1, y=pos.y+1, z=pos.z+1}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=1, y=1, z=1}, --maxvel
{x=-0.5,y=5,z=-0.5}, --minacc
{x=0.5,y=5,z=0.5}, --maxacc
0.1, --minexptime
1, --maxexptime
3, --minsize
4, --maxsize
false, --collisiondetection
"tnt_smoke.png" --texture
)
self.object:remove()
minetest.add_entity(pos, "nssm:night_master_1")
end,
})
mobs:register_mob("nssm:night_master_1", {
type = "monster",
hp_max = 70,
hp_min = 70,
collisionbox = {-0.65, -0.4, -0.65, 0.65, 0.4, 0.65},
visual = "mesh",
mesh = "night_master_1.x",
textures = {{"moonherontrio.png"}},
visual_size = {x=18, y=18},
view_range = 40,
rotate = 270,
lifetimer = 500,
floats=1,
walk_velocity = 3,
run_velocity = 4,
fall_speed = 0,
stepheight = 3,
sounds = {
random = "night_master",
distance = 45,
},
damage = 12,
jump = false,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 6,
max = 7,},
{name = "nssm:heron_leg",
chance = 1,
min = 1,
max = 1,},
{name = "nssm:night_feather",
chance = 1,
min = 1,
max = 1,},
},
armor = 50,
drawtype = "front",
water_damage = 0,
lava_damage = 5,
light_damage = 0,
on_rightclick = nil,
fly = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 60,
stand_end = 120,
walk_start = 20,
walk_end = 50,
run_start = 20,
run_end = 50,
punch_start = 130,
punch_end = 160,
}
})

121
mobs/octopus.lua Normal file
View File

@ -0,0 +1,121 @@
mobs:register_mob("nssm:octopus", {
type = "monster",
hp_max = 32,
hp_min = 25,
collisionbox = {-0.9, -0.5, -0.9, 0.9, 0.92, 0.9},
visual = "mesh",
mesh = "octopus.x",
textures = {{"octopus.png"}},
visual_size = {x=4, y=4},
view_range = 25,
fly = true,
fly_in = "default:water_source",
fall_speed = -20,
walk_velocity = 1.5,
run_velocity = 3,
damage = 5,
reach = 2,
rotate = 270,
jump = false,
jump_chance = 0,
jump_height = 0,
sounds = {
random = "octopus",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 3,},
{name = "nssm:tentacle",
chance = 1,
min = 1,
max = 8,},
},
armor = 70,
drawtype = "front",
water_damage = 0,
lava_damage = 10,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 1,
stand_end = 50,
walk_start = 60,
walk_end = 100,
run_start = 60,
run_end = 100,
punch_start = 120,
punch_end = 160,
}
})
mobs:register_mob("nssm:xgaloctopus", {
type = "monster",
hp_max = 30,
hp_min = 27,
collisionbox = {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25},
visual = "mesh",
mesh = "octopus.x",
textures = {{"xgaloctopus.png"}},
visual_size = {x=1, y=1},
view_range = 25,
fly = true,
fly_in = "default:water_source",
fall_speed = -20,
walk_velocity = 1.5,
run_velocity = 3,
damage = 5,
reach = 1,
rotate = 270,
jump = false,
jump_chance = 0,
jump_height = 0,
sounds = {
random = "octopus",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 3,},
{name = "nssm:tentacle",
chance = 1,
min = 1,
max = 8,},
},
armor = 60,
drawtype = "front",
water_damage = 0,
lava_damage = 10,
light_damage = 0,
on_rightclick = nil,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 1,
stand_end = 50,
walk_start = 60,
walk_end = 100,
run_start = 60,
run_end = 100,
punch_start = 120,
punch_end = 160,
},
replace_rate = 1,
replace_what = {"default:torch"},
replace_with = "default:water_source",
replace_offset = 0,
})

69
mobs/phoenix.lua Normal file
View File

@ -0,0 +1,69 @@
mobs:register_mob("nssm:phoenix", {
type = "monster",
hp_max = 160,
hp_min = 160,
collisionbox = {-0.65, -0.4, -0.65, 0.65, 0.4, 0.65},
visual = "mesh",
mesh = "phoenix.x",
textures = {{"phoenix.png"}},
visual_size = {x=18, y=18},
view_range = 40,
lifetimer = 500,
floats=1,
rotate = 270,
walk_velocity = 2,
run_velocity = 2.5,
fall_speed = 0,
stepheight = 3,
sounds = {
random = "phoenix",
distance = 45,
},
damage = 2,
jump = false,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 7,
max = 8,},
{name = "nssm:sun_feather",
chance = 1,
min = 1,
max = 1,},
{name = "nssm:phoenix_tear",
chance = 1,
min = 5,
max = 6,},
{name = "nssm:phoenix_nuggets",
chance = 6,
min = 10,
max = 20,},
},
armor = 40,
drawtype = "front",
water_damage = 5,
lava_damage = 0,
light_damage = 0,
blood_texture="nssm_blood.png",
blood_amount=50,
on_rightclick = nil,
fly = true,
attack_type = "shoot",
arrow = "nssm:phoenix_arrow",
reach = 1,
shoot_interval = 4,
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 220,
stand_end = 280,
walk_start = 140,
walk_end = 180,
run_start = 190,
run_end = 210,
punch_start = 80,
punch_end = 110,
shoot_start = 80,
shoot_end = 110,
}
})

168
mobs/pumpboom.lua Normal file
View File

@ -0,0 +1,168 @@
mobs:register_mob("nssm:pumpboom_small", {
type = "monster",
hp_max = 15,
hp_min = 14,
collisionbox = {-0.80, -0.3, -0.80, 0.80, 0.80, 0.80},
visual = "mesh",
mesh = "pumpboom.x",
rotate = 270,
textures = {{"pumpboom.png"}},
visual_size = {x=3, y=3},
explosion_radius = 4,
makes_footstep_sound = true,
view_range = 20,
fear_height = 4,
walk_velocity = 2,
run_velocity = 2.5,
sounds = {
explode = "tnt_explode"
},
damage = 1.5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:black_powder",
chance = 2,
min = 1,
max = 2,},
},
armor = 100,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "explode",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 1,
stand_end = 30,
walk_start = 81,
walk_end = 97,
run_start = 81,
run_end = 97,
punch_start = 70,
punch_end = 80,
}
})
mobs:register_mob("nssm:pumpboom_medium", {
type = "monster",
hp_max = 18,
hp_min = 17,
collisionbox = {-0.80, -0.3, -0.80, 0.80, 0.80, 0.80},
visual = "mesh",
mesh = "pumpboom.x",
rotate = 270,
textures = {{"pumpboom.png"}},
visual_size = {x=5, y=5},
makes_footstep_sound = true,
view_range = 25,
walk_velocity = 2,
explosion_radius = 6,
run_velocity = 2.5,
sounds = {
explode = "tnt_explode"
},
damage = 1.5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 3,},
{name = "nssm:black_powder",
chance = 2,
min = 1,
max = 3,},
},
armor = 100,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "explode",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 1,
stand_end = 30,
walk_start = 81,
walk_end = 97,
run_start = 81,
run_end = 97,
punch_start = 70,
punch_end = 80,
}
})
mobs:register_mob("nssm:pumpboom_large", {
type = "monster",
hp_max = 20,
hp_min = 19,
collisionbox = {-0.80, -0.3, -0.80, 0.80, 0.80, 0.80},
visual = "mesh",
mesh = "pumpboom.x",
rotate = 270,
explosion_radius = 8,
textures = {{"pumpboom.png"}},
visual_size = {x=8, y=8},
makes_footstep_sound = true,
view_range = 30,
walk_velocity = 2,
run_velocity = 3,
sounds = {
explode = "tnt_explode"
},
damage = 1.5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 3,
max = 4,},
{name = "nssm:black_powder",
chance = 2,
min = 2,
max = 4,},
},
armor = 100,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "explode",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 1,
stand_end = 30,
walk_start = 81,
walk_end = 97,
run_start = 81,
run_end = 97,
punch_start = 70,
punch_end = 80,
}
})

88
mobs/pumpking.lua Normal file
View File

@ -0,0 +1,88 @@
mobs:register_mob("nssm:pumpking", {
type = "monster",
hp_max = 220,
hp_min = 220,
collisionbox = {-0.4, 0.00, -0.4, 0.4, 3.2, 0.4},
visual = "mesh",
mesh = "pumpking.x",
textures = {{"pumpking.png"}},
visual_size = {x=2.5, y=2.5},
makes_footstep_sound = true,
lifetimer=500,
rotate=270,
fear_height = 4,
view_range = 35,
walk_velocity = 2,
run_velocity = 4,
sounds = {
random = "king",
explode = "tnt_explode",
},
damage = 13,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 7,
max = 9,},
{name = "nssm:cursed_pumpkin_seed",
chance = 1,
min = 1,
max = 1,},
{name = "nssm:black_powder",
chance = 1,
min = 9,
max = 12,},
},
armor =40,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
blood_texture="nssm_blood.png",
blood_amount=25,
stepheight=2.1,
knock_back=0,
jump_height=12,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
stand_start = 165, stand_end = 210,
walk_start = 220, walk_end = 260,
run_start = 220, run_end = 260,
punch_start = 300, punch_end = 330,
speed_normal = 15, speed_run = 15,
},
on_die=function(self,pos)
self.object:remove()
minetest.after(0.2, function(pos)
tnt.boom(pos, {damage_radius=5,radius=4,ignore_protection=false})
end, pos)
end,
custom_attack = function(self)
self.pumpking_timer = (self.pumpking_timer or os.time())
if (os.time() - self.pumpking_timer) >3 then
mobs.set_animation(self, "punch")
self.pumpking_timer = os.time()
local s = self.object:getpos()
local p = self.attack:getpos()
p.y = p.y + 1.5
s.y = s.y + 1.5
if minetest.line_of_sight(p, s) == true then
-- play attack sound
if self.sounds.attack then
minetest.sound_play(self.sounds.attack, {
object = self.object,
max_hear_distance = self.sounds.distance
})
end
local pos1 = {x=s.x+math.random(-1,1), y=s.y-1.5, z=s.z+math.random(-1,1)}
minetest.after(1, function(pos1)
minetest.set_node(pos1, {name="nssm:pumpbomb"})
minetest.get_node_timer(pos1):start(2)
end,
pos1)
end
end
end
})

59
mobs/sand_bloco.lua Normal file
View File

@ -0,0 +1,59 @@
mobs:register_mob("nssm:sand_bloco", {
type = "monster",
hp_max = 24,
hp_min = 17,
collisionbox = {-0.5, -0.2, -0.5, 0.5, 1.3, 0.5},
visual = "mesh",
mesh = "sand_bloco.x",
textures = {{"sand_bloco.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 14,
fear_height = 4,
walk_velocity = 0.8,
run_velocity = 2,
rotate = 270,
sounds = {
random = "bloco",
},
damage = 4,
reach = 1.5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 1,},
{name = "default:sandstone",
chance = 1,
min = 2,
max = 3,},
{name = "nssm:sand_bloco_skin",
chance = 2,
min = 1,
max = 3,},
},
armor = 40,
drawtype = "front",
water_damage = 10,
lava_damage = 1,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="stone_blood.png",
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 20,
stand_start = 10,
stand_end = 90,
walk_start = 140,
walk_end = 180,
run_start = 190,
run_end = 200,
punch_start = 100,
punch_end = 130,
}
})

64
mobs/sandworm.lua Normal file
View File

@ -0,0 +1,64 @@
mobs:register_mob("nssm:sandworm", {
type = "monster",
hp_max = 40,
hp_min = 25,
collisionbox = {-0.4, -0.2, -0.4, 0.4, 1.90, 0.4},
visual = "mesh",
mesh = "sandworm.x",
textures = {{"sandworm.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = false,
view_range = 17,
rotate = 270,
reach = 2,
fear_height = 3,
walk_velocity = 2,
run_velocity = 2,
damage = 6,
sounds = {
random = "sandworm",
distance = 40,
},
jump = false,
drops = {
{name = "nssm:worm_flesh",
chance = 2,
min = 1,
max = 3,},
{name = "nssm:sandworm_skin",
chance = 2,
min = 1,
max = 3,},
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 3,},
},
armor = 60,
drawtype = "front",
water_damage = 5,
lava_damage = 10,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 40,
stand_start = 1,
stand_end = 100,
walk_start = 110,
walk_end = 140,
run_start = 110,
run_end = 140,
punch_start = 150,
punch_end = 180,
},
do_custom = function(self)
digging_attack(self, "sand", self.run_velocity, {x=0, y=3, z=0})
end,
})

57
mobs/scrausics.lua Normal file
View File

@ -0,0 +1,57 @@
mobs:register_mob("nssm:scrausics", {
type = "monster",
hp_max = 33,
hp_min = 22,
collisionbox = {-0.4, -0.3, -0.4, 0.4, 0.3, 0.4},
visual = "mesh",
mesh = "scrausics.x",
textures = {{"scrausics.png"}},
visual_size = {x=10, y=10},
view_range = 35,
rotate = 270,
walk_velocity = 2,
run_velocity = 3,
fall_speed = 0,
stepheight = 3,
floats=1,
sounds = {
random = "scrausics",
distance = 40,
},
damage = 4,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 3,
max = 4,},
{name = "nssm:raw_scrausics_wing",
chance = 1,
min = 1,
max = 2,},
},
armor = 80,
drawtype = "front",
water_damage = 5,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
on_rightclick = nil,
fly = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 220,
stand_end = 280,
walk_start = 140,
walk_end = 180,
run_start = 190,
run_end = 210,
punch_start = 20,
punch_end = 50,
}
})

52
mobs/signosigno.lua Normal file
View File

@ -0,0 +1,52 @@
mobs:register_mob("nssm:signosigno", {
type = "monster",
hp_max = 20,
hp_min = 8,
collisionbox = {-0.2, 0.00, -0.2, 0.2, 1.6, 0.2},
visual = "mesh",
mesh = "signosigno.x",
textures = {{"signosigno.png"}, {"signosigno2.png"}},
visual_size = {x=6, y=6},
makes_footstep_sound = false,
view_range = 15,
walk_velocity = 1.5,
fear_height = 4,
run_velocity = 2.5,
rotate = 270,
damage = 4,
reach = 1.5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:slothful_soul_fragment",
chance = 20,
min = 1,
max = 1,},
},
armor = 40,
drawtype = "front",
water_damage = 1,
lava_damage = 2,
light_damage = 1,
group_attack=true,
attack_animals=true,
knock_back=4,
blood_texture="morparticle.png",
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 20,
stand_start = 20,
stand_end = 80,
walk_start = 100,
walk_end = 140,
run_start = 200,
run_end = 220,
punch_start = 160,
punch_end = 190,
}
})

72
mobs/snow_biter.lua Normal file
View File

@ -0,0 +1,72 @@
mobs:register_mob("nssm:snow_biter", {
type = "monster",
hp_max = 30,
hp_min = 15,
collisionbox = {-0.5, 0, -0.5, 0.5, 0.60, 0.5},
visual = "mesh",
mesh = "snow_biter.x",
textures = {{"snow_biter.png"}},
visual_size = {x=6, y=6},
makes_footstep_sound = true,
view_range = 18,
rotate = 270,
mele_number = 2,
fear_height = 4,
reach = 1.5,
walk_velocity = 0.8,
run_velocity = 3,
sounds = {
random = "snow_biter",
},
--pathfinding = true,
damage = 4,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 3},
{name = "nssm:frosted_amphibian_heart",
chance = 2,
min = 1,
max = 1},
{name = "nssm:amphibian_ribs",
chance = 2,
min = 1,
max = 1},
{name = "nssm:little_ice_tooth",
chance = 2,
min = 0,
max = 4},
},
armor = 80,
drawtype = "front",
water_damage = 0,
lava_damage = 30,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=4,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
double_melee_attack = true,
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 0,
stand_end = 80,
walk_start = 110,
walk_end = 150,
run_start = 80,
run_end = 100,
punch_start = 175,
punch_end = 190,
punch2_start = 200,
punch2_end = 215
},
do_custom = function(self)
putting_ability(self, "default:ice", self.run_velocity)
end,
})

74
mobs/spiderduck.lua Normal file
View File

@ -0,0 +1,74 @@
mobs:register_mob("nssm:spiderduck", {
type = "monster",
hp_max = 35,
hp_min = 24,
collisionbox = {-0.6, -0.8, -0.6, 0.6, 0.4, 0.5},
visual = "mesh",
rotate = 270,
mesh = "spiderduck.x",
textures = {{"spiderduck.png"}},
visual_size = {x=2, y=2},
fear_height = 4,
makes_footstep_sound = true,
view_range = 24,
walk_velocity = 2,
run_velocity = 4,
sounds = {
random = "duck",
},
damage = 6,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:duck_legs",
chance = 1,
min = 1,
max = 8,},
{name = "nssm:silk_gland",
chance = 2,
min = 1,
max = 2,},
{name = "nssm:black_duck_feather",
chance = 3,
min = 1,
max = 4,},
{name = "nssm:duck_beak",
chance = 5,
min = 1,
max = 1,},
},
armor = 80,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.5,
on_rightclick = nil,
dogshoot_switch = true,
attack_type = "dogshoot",
arrow = "nssm:webball",
reach = 2,
shoot_interval = 2,
shoot_offset = 2,
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 60,
stand_end = 140,
walk_start = 220,
walk_end = 260,
run_start = 220,
run_end = 260,
punch_start = 20,
punch_end = 46,
shoot_start = 150,
shoot_end = 200,
}
})

62
mobs/stone_eater.lua Normal file
View File

@ -0,0 +1,62 @@
mobs:register_mob("nssm:stone_eater", {
type = "monster",
hp_max = 27,
hp_min = 19,
collisionbox = {-0.3, -0.05, -0.3, 0.3, 0.65, 0.3},
visual = "mesh",
mesh = "stone_eater.x",
textures = {{"stone_eater.png"}},
visual_size = {x=10, y=10},
makes_footstep_sound = false,
view_range = 16,
rotate = 270,
fear_height = 4,
jump = false,
jump_height =0,
walk_velocity = 1,
run_velocity = 1.5,
damage = 5,
reach = 1.5,
drops = {
{name = "default:stone",
chance = 2,
min = 1,
max = 3,},
{name = "nssm:life_energy",
chance = 1,
min = 2,
max = 3,},
{name = "nssm:stoneater_mandible",
chance = 2,
min = 1,
max = 4,},
},
armor = 40,
drawtype = "front",
water_damage = 1,
lava_damage = 1,
group_attack=true,
attack_animals=true,
knock_back=0,
blood_texture="stone_blood.png",
immune_to={{'default:sword_stone', -2},{'default:stone', -2}, {'default:cobble', -2}, {'default:axe_stone', -2}, {'default:shovel_stone', -2}, {'default:pick_stone', -2}},
light_damage = 0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 20,
stand_start = 1,
stand_end = 60,
walk_start = 70,
walk_end = 110,
run_start = 130,
run_end = 150,
punch_start = 160,
punch_end = 185,
},
do_custom = function(self)
--digging_ability(self, "stone", self.run_velocity, {x=0, y=2, z=0})
digging_attack(self, "stone", self.run_velocity, {x=0, y=1, z=0})
end,
})

63
mobs/swimming_duck.lua Normal file
View File

@ -0,0 +1,63 @@
mobs:register_mob("nssm:swimming_duck", {
type = "monster",
hp_max = 25,
hp_min = 15,
collisionbox = {-0.35, -0.30, -0.35, 0.35, 0.7, 0.35},
visual = "mesh",
mesh = "swimming_duck.x",
textures = {{"swimming_duck.png"}},
visual_size = {x=1.5, y=1.5},
view_range = 25,
floats=1,
walk_velocity = 1,
run_velocity = 1,
damage = 3,
reach = 1.5,
jump = false,
jump_chance = 0,
jump_height = 0,
sounds = {
random = "duck",
},
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:duck_legs",
chance = 1,
min = 1,
max = 2,},
{name = "nssm:duck_beak",
chance = 5,
min = 1,
max = 1,},
{name = "nssm:duck_feather",
chance = 6,
min = 1,
max = 2,},
},
armor = 80,
drawtype = "front",
water_damage = 0,
lava_damage = 10,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=4,
blood_texture="nssm_blood.png",
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 1,
stand_end = 60,
walk_start = 80,
walk_end = 120,
run_start = 80,
run_end = 120,
punch_start = 140,
punch_end = 160,
}
})

145
mobs/tarantula.lua Normal file
View File

@ -0,0 +1,145 @@
mobs:register_mob("nssm:tarantula", {
type = "monster",
hp_max = 50,
hp_min = 50,
collisionbox = {-0.5, 0.00, -0.5, 0.5, 0.9, 0.5},
visual = "mesh",
mesh = "tarantula.x",
textures = {{"tarantula.png"}},
visual_size = {x=8, y=8},
makes_footstep_sound = true,
view_range = 20,
lifetimer = 500,
walk_velocity = 0.7,
fear_height = 4,
run_velocity = 3,
rotate = 270,
sounds = {
random = "tarry",
},
damage = 8,
jump = true,
drops = {
{name = "nssm:super_silk_gland",
chance = 1,
min = 3,
max = 5,},
},
armor = 60,
drawtype = "front",
water_damage = 1,
lava_damage = 7,
reach = 3,
knock_back=0,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
light_damage = 0,
on_rightclick = nil,
dogshoot_switch = true,
attack_type = "dogshoot",
arrow = "nssm:thickwebball",
shoot_interval = 2,
shoot_offset = 1,
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 60,
walk_start = 100,
walk_end = 140,
run_start = 140,
run_end = 160,
punch_start = 180,
punch_end = 200,
shoot_start = 180,
shoot_end = 200,
},
on_die = function(self, pos)
self.object:remove()
minetest.add_particlespawner(
200, --amount
0.1, --time
{x=pos.x-1, y=pos.y-1, z=pos.z-1}, --minpos
{x=pos.x+1, y=pos.y+1, z=pos.z+1}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=1, y=1, z=1}, --maxvel
{x=-0.5,y=5,z=-0.5}, --minacc
{x=0.5,y=5,z=0.5}, --maxacc
0.1, --minexptime
1, --maxexptime
3, --minsize
4, --maxsize
false, --collisiondetection
"tnt_smoke.png" --texture
)
minetest.add_entity(pos, "nssm:tarantula_propower")
end,
})
mobs:register_mob("nssm:tarantula_propower", {
type = "monster",
hp_max = 90,
hp_min = 90,
collisionbox = {-0.5, 0.00, -0.5, 0.5, 1, 0.5},
visual = "mesh",
mesh = "tarantula_propower.x",
textures = {{"tarantula.png"}},
visual_size = {x=10, y=10},
makes_footstep_sound = true,
view_range = 30,
lifetimer = 500,
walk_velocity = 1.5,
run_velocity = 3.3,
rotate = 270,
sounds = {
random = "tarry",
},
damage = 12,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 16,
max = 18,},
{name = "nssm:spider_leg",
chance = 1,
min = 1,
max = 8,},
{name = "nssm:tarantula_chelicerae",
chance = 1,
min = 1,
max = 1,},
{name = "nssm:silk_gland",
chance = 2,
min = 1,
max = 3,},
{name = "nssm:spider_meat",
chance = 2,
min = 1,
max = 2,},
},
armor = 40,
drawtype = "front",
water_damage = 1,
lava_damage = 3,
reach = 4,
knock_back=0,
blood_texture="nssm_blood_blue.png",
stepheight=2.1,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 60,
walk_start = 100,
walk_end = 140,
run_start = 140,
run_end = 160,
punch_start = 180,
punch_end = 200,
}
})

67
mobs/uloboros.lua Normal file
View File

@ -0,0 +1,67 @@
mobs:register_mob("nssm:uloboros", {
type = "monster",
hp_max = 28,
hp_min = 17,
collisionbox = {-0.5, 0.00, -0.5, 0.5, 0.8, 0.5},
visual = "mesh",
mesh = "uloboros.x",
textures = {{"uloboros.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 22,
walk_velocity = 1.5,
fear_height = 4,
run_velocity = 2.5,
rotate = 270,
sounds = {
random = "uloboros",
},
damage = 5,
reach = 2,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 1,
max = 4,},
{name = "nssm:spider_leg",
chance = 2,
min = 1,
max = 8,},
{name = "nssm:silk_gland",
chance = 4,
min = 1,
max = 3,},
{name = "nssm:spider_meat",
chance = 4,
min = 1,
max = 2,},
},
armor = 80,
drawtype = "front",
water_damage = 1,
lava_damage = 7,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood_blue.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 30,
stand_start = 1,
stand_end = 80,
walk_start = 120,
walk_end = 160,
run_start = 120,
run_end = 160,
punch_start = 80,
punch_end = 110,
},
do_custom = function(self)
webber_ability(self, "nssm:web", 2)
end,
})

58
mobs/werewolf.lua Normal file
View File

@ -0,0 +1,58 @@
mobs:register_mob("nssm:werewolf", {
type = "monster",
hp_max = 40,
hp_min = 25,
collisionbox = {-0.85, -0.01, -0.85, 0.85, 3.50, 0.85},
visual = "mesh",
mesh = "werewolf.x",
textures = {{"werewolf.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 30,
walk_velocity = 3,
fear_height = 4,
run_velocity = 5,
sounds = {
random = "werewolf",
},
damage = 5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 3,
max = 4},
{name = "nssm:werewolf_leg",
chance = 2,
min = 1,
max = 2},
{name = "nssm:wolf_fur",
chance = 2,
min = 1,
max = 1},
},
armor = 80,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 1,
stand_end = 60,
walk_start = 90,
walk_end = 130,
run_start = 140,
run_end = 160,
punch_start = 170,
punch_end = 193,
}
})

58
mobs/white_werewolf.lua Normal file
View File

@ -0,0 +1,58 @@
mobs:register_mob("nssm:white_werewolf", {
type = "monster",
hp_max = 40,
hp_min = 25,
collisionbox = {-0.85, -0.01, -0.85, 0.85, 3.50, 0.85},
visual = "mesh",
mesh = "white_werewolf.x",
textures = {{"white_werewolf.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 30,
walk_velocity = 3,
fear_height = 4,
run_velocity = 5,
sounds = {
random = "werewolf",
},
damage = 5,
jump = true,
drops = {
{name = "nssm:life_energy",
chance = 1,
min = 3,
max = 4},
{name = "nssm:werewolf_leg",
chance = 2,
min = 1,
max = 2},
{name = "nssm:white_wolf_fur",
chance = 2,
min = 1,
max = 1},
},
armor = 80,
drawtype = "front",
water_damage = 2,
lava_damage = 5,
light_damage = 0,
group_attack=true,
attack_animals=true,
knock_back=2,
blood_texture="nssm_blood.png",
stepheight=1.1,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 1,
stand_end = 60,
walk_start = 90,
walk_end = 130,
run_start = 140,
run_end = 160,
punch_start = 170,
punch_end = 193,
}
})

1
mod.conf Normal file
View File

@ -0,0 +1 @@
name = nssm

42432
models/ant_queen.x Normal file

File diff suppressed because it is too large Load Diff

37988
models/ant_soldier.x Normal file

File diff suppressed because it is too large Load Diff

36234
models/ant_worker.x Normal file

File diff suppressed because it is too large Load Diff

37099
models/black_widow.x Normal file

File diff suppressed because it is too large Load Diff

19865
models/bloco.x Normal file

File diff suppressed because it is too large Load Diff

46326
models/crab.x Normal file

File diff suppressed because it is too large Load Diff

23176
models/crocodile.x Normal file

File diff suppressed because it is too large Load Diff

36264
models/daddy_long_legs.x Normal file

File diff suppressed because it is too large Load Diff

20117
models/dolidrosaurus.x Normal file

File diff suppressed because it is too large Load Diff

4336
models/duck.x Normal file

File diff suppressed because it is too large Load Diff

47040
models/echidna.x Normal file

File diff suppressed because it is too large Load Diff

28930
models/enderduck.x Normal file

File diff suppressed because it is too large Load Diff

51052
models/felucco.x Normal file

File diff suppressed because it is too large Load Diff

17438
models/giant_sandworm.x Normal file

File diff suppressed because it is too large Load Diff

59757
models/icelamander.x Normal file

File diff suppressed because it is too large Load Diff

15229
models/icesnake.x Normal file

File diff suppressed because it is too large Load Diff

30579
models/king_duck.x Normal file

File diff suppressed because it is too large Load Diff

34648
models/kraken.x Normal file

File diff suppressed because it is too large Load Diff

16147
models/larva.x Normal file

File diff suppressed because it is too large Load Diff

52904
models/lava_titan.x Normal file

File diff suppressed because it is too large Load Diff

48332
models/manticore.x Normal file

File diff suppressed because it is too large Load Diff

24834
models/mantis.x Normal file

File diff suppressed because it is too large Load Diff

21890
models/mantis_beast.x Normal file

File diff suppressed because it is too large Load Diff

35798
models/masticone.x Normal file

File diff suppressed because it is too large Load Diff

82858
models/mese_dragon.x Normal file

File diff suppressed because it is too large Load Diff

43089
models/moonheron.x Normal file

File diff suppressed because it is too large Load Diff

59401
models/moonherontrio.x Normal file

File diff suppressed because it is too large Load Diff

14423
models/morbat.x Normal file

File diff suppressed because it is too large Load Diff

22640
models/mordain.x Normal file

File diff suppressed because it is too large Load Diff

20141
models/morde.x Normal file

File diff suppressed because it is too large Load Diff

10042
models/morgre.x Normal file

File diff suppressed because it is too large Load Diff

26028
models/morgut.x Normal file

File diff suppressed because it is too large Load Diff

22832
models/morlu.x Normal file

File diff suppressed because it is too large Load Diff

23121
models/mortick.x Normal file

File diff suppressed because it is too large Load Diff

95643
models/morvalar.x Normal file

File diff suppressed because it is too large Load Diff

22664
models/morvy.x Normal file

File diff suppressed because it is too large Load Diff

18315
models/morwa.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/morwa_statue.b3d Normal file

Binary file not shown.

953
models/morwa_statue.x Normal file
View File

@ -0,0 +1,953 @@
xof 0303txt 0032
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000,-0.000000, 1.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Frame Cube {
FrameTransformMatrix {
0.433013, 0.000000, 0.000000, 0.000000,
0.000000, 0.687771, 0.000000, 0.000000,
0.000000, 0.000000, 0.414217, 0.000000,
0.000000, 0.000000, 2.316839, 1.000000;;
}
Mesh { // Cube mesh
408;
0.857818; 0.415456; 1.318132;,
0.857818;-0.415456; 1.318132;,
-0.361042;-0.415456; 1.318132;,
-0.361042; 0.415456; 1.318132;,
0.857818; 0.415456; 1.489767;,
-0.361042; 0.415456; 1.489767;,
-0.361043;-0.415456; 1.489767;,
0.857817;-0.415456; 1.489767;,
0.857818; 0.415456; 1.318132;,
0.857818; 0.415456; 1.489767;,
0.857817;-0.415456; 1.489767;,
0.857818;-0.415456; 1.318132;,
0.857818;-0.415456; 1.318132;,
0.857817;-0.415456; 1.489767;,
-0.361043;-0.415456; 1.489767;,
-0.361042;-0.415456; 1.318132;,
-0.361042;-0.415456; 1.318132;,
-0.361043;-0.415456; 1.489767;,
-0.361042; 0.415456; 1.489767;,
-0.361042; 0.415456; 1.318132;,
0.857818; 0.415456; 1.489767;,
0.857818; 0.415456; 1.318132;,
-0.361042; 0.415456; 1.318132;,
-0.361042; 0.415456; 1.489767;,
0.857818; 0.415456; 1.512615;,
0.857818;-0.415456; 1.512615;,
-0.361042;-0.415456; 1.512615;,
-0.361042; 0.415456; 1.512615;,
0.857818; 0.415456; 2.779115;,
-0.361042; 0.415456; 2.779115;,
-0.361043;-0.415456; 2.779115;,
0.857817;-0.415456; 2.779115;,
0.857818; 0.415456; 1.512615;,
0.857818; 0.415456; 2.779115;,
0.857817;-0.415456; 2.779115;,
0.857818;-0.415456; 1.512615;,
0.857818;-0.415456; 1.512615;,
0.857817;-0.415456; 2.779115;,
-0.361043;-0.415456; 2.779115;,
-0.361042;-0.415456; 1.512615;,
-0.361042;-0.415456; 1.512615;,
-0.361043;-0.415456; 2.779115;,
-0.361042; 0.415456; 2.779115;,
-0.361042; 0.415456; 1.512615;,
0.857818; 0.415456; 2.779115;,
0.857818; 0.415456; 1.512615;,
-0.361042; 0.415456; 1.512615;,
-0.361042; 0.415456; 2.779115;,
0.358109; 0.320227; 1.001286;,
0.358109;-0.320227; 1.001286;,
-0.358109;-0.320227; 1.001286;,
-0.358108; 0.320227; 1.001286;,
0.358109; 0.320227; 1.306335;,
-0.358109; 0.320227; 1.306335;,
-0.358109;-0.320227; 1.306335;,
0.358108;-0.320227; 1.306335;,
0.358109; 0.320227; 1.001286;,
0.358109; 0.320227; 1.306335;,
0.358108;-0.320227; 1.306335;,
0.358109;-0.320227; 1.001286;,
0.358109;-0.320227; 1.001286;,
0.358108;-0.320227; 1.306335;,
-0.358109;-0.320227; 1.306335;,
-0.358109;-0.320227; 1.001286;,
-0.358109;-0.320227; 1.001286;,
-0.358109;-0.320227; 1.306335;,
-0.358109; 0.320227; 1.306335;,
-0.358108; 0.320227; 1.001286;,
0.358109; 0.320227; 1.306335;,
0.358109; 0.320227; 1.001286;,
-0.358108; 0.320227; 1.001286;,
-0.358109; 0.320227; 1.306335;,
0.661734;-1.012656;-2.382977;,
0.661734;-1.448231;-2.382977;,
-0.661734;-1.448231;-2.382977;,
-0.661734;-1.012656;-2.382977;,
0.661734;-1.012656; 0.998660;,
-0.661734;-1.012656; 0.998660;,
-0.661734;-1.448231; 0.998660;,
0.661734;-1.448231; 0.998660;,
0.661734;-1.012656;-2.382977;,
0.661734;-1.012656; 0.998660;,
0.661734;-1.448231; 0.998660;,
0.661734;-1.448231;-2.382977;,
0.661734;-1.448231;-2.382977;,
0.661734;-1.448231; 0.998660;,
-0.661734;-1.448231; 0.998660;,
-0.661734;-1.448231;-2.382977;,
-0.661734;-1.448231;-2.382977;,
-0.661734;-1.448231; 0.998660;,
-0.661734;-1.012656; 0.998660;,
-0.661734;-1.012656;-2.382977;,
0.661734;-1.012656; 0.998660;,
0.661734;-1.012656;-2.382977;,
-0.661734;-1.012656;-2.382977;,
-0.661734;-1.012656; 0.998660;,
0.522818;-1.077437;-4.952721;,
0.522818;-1.383450;-4.952721;,
-0.522818;-1.383450;-4.952721;,
-0.522818;-1.077437;-4.952721;,
0.522819;-1.077437;-2.389734;,
-0.522818;-1.077437;-2.389734;,
-0.522818;-1.383450;-2.389734;,
0.522818;-1.383450;-2.389734;,
0.522818;-1.077437;-4.952721;,
0.522819;-1.077437;-2.389734;,
0.522818;-1.383450;-2.389734;,
0.522818;-1.383450;-4.952721;,
0.522818;-1.383450;-4.952721;,
0.522818;-1.383450;-2.389734;,
-0.522818;-1.383450;-2.389734;,
-0.522818;-1.383450;-4.952721;,
-0.522818;-1.383450;-4.952721;,
-0.522818;-1.383450;-2.389734;,
-0.522818;-1.077437;-2.389734;,
-0.522818;-1.077437;-4.952721;,
0.522819;-1.077437;-2.389734;,
0.522818;-1.077437;-4.952721;,
-0.522818;-1.077437;-4.952721;,
-0.522818;-1.077437;-2.389734;,
0.595445;-1.019842;-5.495213;,
0.595445;-1.441046;-5.495213;,
-0.595445;-1.441046;-5.495213;,
-0.595445;-1.019841;-5.495213;,
0.595446;-1.019842;-4.965870;,
-0.595445;-1.019842;-4.965870;,
-0.595446;-1.441046;-4.965870;,
0.595445;-1.441046;-4.965870;,
0.595445;-1.019842;-5.495213;,
0.595446;-1.019842;-4.965870;,
0.595445;-1.441046;-4.965870;,
0.595445;-1.441046;-5.495213;,
0.595445;-1.441046;-5.495213;,
0.595445;-1.441046;-4.965870;,
-0.595446;-1.441046;-4.965870;,
-0.595445;-1.441046;-5.495213;,
-0.595445;-1.441046;-5.495213;,
-0.595446;-1.441046;-4.965870;,
-0.595445;-1.019842;-4.965870;,
-0.595445;-1.019841;-5.495213;,
0.595446;-1.019842;-4.965870;,
0.595445;-1.019842;-5.495213;,
-0.595445;-1.019841;-5.495213;,
-0.595445;-1.019842;-4.965870;,
0.595445; 1.435306;-5.495213;,
0.595445; 1.014102;-5.495213;,
-0.595445; 1.014102;-5.495213;,
-0.595445; 1.435307;-5.495213;,
0.595446; 1.435306;-4.965870;,
-0.595445; 1.435306;-4.965870;,
-0.595446; 1.014102;-4.965870;,
0.595445; 1.014102;-4.965870;,
0.595445; 1.435306;-5.495213;,
0.595446; 1.435306;-4.965870;,
0.595445; 1.014102;-4.965870;,
0.595445; 1.014102;-5.495213;,
0.595445; 1.014102;-5.495213;,
0.595445; 1.014102;-4.965870;,
-0.595446; 1.014102;-4.965870;,
-0.595445; 1.014102;-5.495213;,
-0.595445; 1.014102;-5.495213;,
-0.595446; 1.014102;-4.965870;,
-0.595445; 1.435306;-4.965870;,
-0.595445; 1.435307;-5.495213;,
0.595446; 1.435306;-4.965870;,
0.595445; 1.435306;-5.495213;,
-0.595445; 1.435307;-5.495213;,
-0.595445; 1.435306;-4.965870;,
0.522818; 1.377711;-4.952721;,
0.522818; 1.071698;-4.952721;,
-0.522818; 1.071698;-4.952721;,
-0.522818; 1.377711;-4.952721;,
0.522819; 1.377711;-2.389734;,
-0.522818; 1.377711;-2.389734;,
-0.522818; 1.071698;-2.389734;,
0.522818; 1.071698;-2.389734;,
0.522818; 1.377711;-4.952721;,
0.522819; 1.377711;-2.389734;,
0.522818; 1.071698;-2.389734;,
0.522818; 1.071698;-4.952721;,
0.522818; 1.071698;-4.952721;,
0.522818; 1.071698;-2.389734;,
-0.522818; 1.071698;-2.389734;,
-0.522818; 1.071698;-4.952721;,
-0.522818; 1.071698;-4.952721;,
-0.522818; 1.071698;-2.389734;,
-0.522818; 1.377711;-2.389734;,
-0.522818; 1.377711;-4.952721;,
0.522819; 1.377711;-2.389734;,
0.522818; 1.377711;-4.952721;,
-0.522818; 1.377711;-4.952721;,
-0.522818; 1.377711;-2.389734;,
0.661734; 1.442492;-2.382977;,
0.661734; 1.006917;-2.382977;,
-0.661734; 1.006917;-2.382977;,
-0.661734; 1.442492;-2.382977;,
0.661734; 1.442492; 0.998660;,
-0.661734; 1.442492; 0.998660;,
-0.661734; 1.006917; 0.998660;,
0.661734; 1.006917; 0.998660;,
0.661734; 1.442492;-2.382977;,
0.661734; 1.442492; 0.998660;,
0.661734; 1.006917; 0.998660;,
0.661734; 1.006917;-2.382977;,
0.661734; 1.006917;-2.382977;,
0.661734; 1.006917; 0.998660;,
-0.661734; 1.006917; 0.998660;,
-0.661734; 1.006917;-2.382977;,
-0.661734; 1.006917;-2.382977;,
-0.661734; 1.006917; 0.998660;,
-0.661734; 1.442492; 0.998660;,
-0.661734; 1.442492;-2.382977;,
0.661734; 1.442492; 0.998660;,
0.661734; 1.442492;-2.382977;,
-0.661734; 1.442492;-2.382977;,
-0.661734; 1.442492; 0.998660;,
0.661734; 0.660522;-4.353356;,
0.661734; 0.224947;-4.353356;,
-0.661734; 0.224947;-4.353356;,
-0.661734; 0.660522;-4.353356;,
0.661734; 0.660522;-3.039748;,
-0.661734; 0.660522;-3.039748;,
-0.661734; 0.224947;-3.039748;,
0.661734; 0.224947;-3.039748;,
0.661734; 0.660522;-4.353356;,
0.661734; 0.660522;-3.039748;,
0.661734; 0.224947;-3.039748;,
0.661734; 0.224947;-4.353356;,
0.661734; 0.224947;-4.353356;,
0.661734; 0.224947;-3.039748;,
-0.661734; 0.224947;-3.039748;,
-0.661734; 0.224947;-4.353356;,
-0.661734; 0.224947;-4.353356;,
-0.661734; 0.224947;-3.039748;,
-0.661734; 0.660522;-3.039748;,
-0.661734; 0.660522;-4.353356;,
0.661734; 0.660522;-3.039748;,
0.661734; 0.660522;-4.353356;,
-0.661734; 0.660522;-4.353356;,
-0.661734; 0.660522;-3.039748;,
0.522818; 0.595741;-5.351583;,
0.522818; 0.289728;-5.351583;,
-0.522818; 0.289728;-5.351583;,
-0.522818; 0.595741;-5.351583;,
0.522819; 0.595741;-4.355981;,
-0.522818; 0.595741;-4.355981;,
-0.522818; 0.289728;-4.355981;,
0.522818; 0.289728;-4.355981;,
0.522818; 0.595741;-5.351583;,
0.522819; 0.595741;-4.355981;,
0.522818; 0.289728;-4.355981;,
0.522818; 0.289728;-5.351583;,
0.522818; 0.289728;-5.351583;,
0.522818; 0.289728;-4.355981;,
-0.522818; 0.289728;-4.355981;,
-0.522818; 0.289728;-5.351583;,
-0.522818; 0.289728;-5.351583;,
-0.522818; 0.289728;-4.355981;,
-0.522818; 0.595741;-4.355981;,
-0.522818; 0.595741;-5.351583;,
0.522819; 0.595741;-4.355981;,
0.522818; 0.595741;-5.351583;,
-0.522818; 0.595741;-5.351583;,
-0.522818; 0.595741;-4.355981;,
0.568957; 0.626037;-5.632695;,
0.568957; 0.259432;-5.632695;,
-0.568957; 0.259432;-5.632695;,
-0.568957; 0.626037;-5.632695;,
0.568957; 0.626037;-5.364969;,
-0.568957; 0.626037;-5.364969;,
-0.568957; 0.259432;-5.364969;,
0.568957; 0.259431;-5.364969;,
0.568957; 0.626037;-5.632695;,
0.568957; 0.626037;-5.364969;,
0.568957; 0.259431;-5.364969;,
0.568957; 0.259432;-5.632695;,
0.568957; 0.259432;-5.632695;,
0.568957; 0.259431;-5.364969;,
-0.568957; 0.259432;-5.364969;,
-0.568957; 0.259432;-5.632695;,
-0.568957; 0.259432;-5.632695;,
-0.568957; 0.259432;-5.364969;,
-0.568957; 0.626037;-5.364969;,
-0.568957; 0.626037;-5.632695;,
0.568957; 0.626037;-5.364969;,
0.568957; 0.626037;-5.632695;,
-0.568957; 0.626037;-5.632695;,
-0.568957; 0.626037;-5.364969;,
0.568957;-0.276674;-5.632695;,
0.568957;-0.643280;-5.632695;,
-0.568957;-0.643280;-5.632695;,
-0.568957;-0.276674;-5.632695;,
0.568957;-0.276674;-5.364969;,
-0.568957;-0.276674;-5.364969;,
-0.568957;-0.643280;-5.364969;,
0.568957;-0.643280;-5.364969;,
0.568957;-0.276674;-5.632695;,
0.568957;-0.276674;-5.364969;,
0.568957;-0.643280;-5.364969;,
0.568957;-0.643280;-5.632695;,
0.568957;-0.643280;-5.632695;,
0.568957;-0.643280;-5.364969;,
-0.568957;-0.643280;-5.364969;,
-0.568957;-0.643280;-5.632695;,
-0.568957;-0.643280;-5.632695;,
-0.568957;-0.643280;-5.364969;,
-0.568957;-0.276674;-5.364969;,
-0.568957;-0.276674;-5.632695;,
0.568957;-0.276674;-5.364969;,
0.568957;-0.276674;-5.632695;,
-0.568957;-0.276674;-5.632695;,
-0.568957;-0.276674;-5.364969;,
0.522818;-0.306970;-5.351583;,
0.522818;-0.612983;-5.351583;,
-0.522818;-0.612983;-5.351583;,
-0.522818;-0.306970;-5.351583;,
0.522819;-0.306971;-4.355981;,
-0.522818;-0.306970;-4.355981;,
-0.522818;-0.612983;-4.355981;,
0.522818;-0.612983;-4.355981;,
0.522818;-0.306970;-5.351583;,
0.522819;-0.306971;-4.355981;,
0.522818;-0.612983;-4.355981;,
0.522818;-0.612983;-5.351583;,
0.522818;-0.612983;-5.351583;,
0.522818;-0.612983;-4.355981;,
-0.522818;-0.612983;-4.355981;,
-0.522818;-0.612983;-5.351583;,
-0.522818;-0.612983;-5.351583;,
-0.522818;-0.612983;-4.355981;,
-0.522818;-0.306970;-4.355981;,
-0.522818;-0.306970;-5.351583;,
0.522819;-0.306971;-4.355981;,
0.522818;-0.306970;-5.351583;,
-0.522818;-0.306970;-5.351583;,
-0.522818;-0.306970;-4.355981;,
0.661734;-0.242190;-4.353356;,
0.661734;-0.677764;-4.353356;,
-0.661734;-0.677764;-4.353356;,
-0.661734;-0.242189;-4.353356;,
0.661734;-0.242190;-3.039748;,
-0.661734;-0.242190;-3.039748;,
-0.661734;-0.677764;-3.039748;,
0.661734;-0.677764;-3.039748;,
0.661734;-0.242190;-4.353356;,
0.661734;-0.242190;-3.039748;,
0.661734;-0.677764;-3.039748;,
0.661734;-0.677764;-4.353356;,
0.661734;-0.677764;-4.353356;,
0.661734;-0.677764;-3.039748;,
-0.661734;-0.677764;-3.039748;,
-0.661734;-0.677764;-4.353356;,
-0.661734;-0.677764;-4.353356;,
-0.661734;-0.677764;-3.039748;,
-0.661734;-0.242190;-3.039748;,
-0.661734;-0.242189;-4.353356;,
0.661734;-0.242190;-3.039748;,
0.661734;-0.242190;-4.353356;,
-0.661734;-0.242189;-4.353356;,
-0.661734;-0.242190;-3.039748;,
0.962029; 0.684361;-3.017800;,
0.962029;-0.684361;-3.017800;,
-0.962029;-0.684361;-3.017800;,
-0.962029; 0.684361;-3.017800;,
0.962030; 0.684361;-1.016196;,
-0.962029; 0.684361;-1.016196;,
-0.962030;-0.684361;-1.016196;,
0.962029;-0.684361;-1.016196;,
0.962029; 0.684361;-3.017800;,
0.962030; 0.684361;-1.016196;,
0.962029;-0.684361;-1.016196;,
0.962029;-0.684361;-3.017800;,
0.962029;-0.684361;-3.017800;,
0.962029;-0.684361;-1.016196;,
-0.962030;-0.684361;-1.016196;,
-0.962029;-0.684361;-3.017800;,
-0.962029;-0.684361;-3.017800;,
-0.962030;-0.684361;-1.016196;,
-0.962029; 0.684361;-1.016196;,
-0.962029; 0.684361;-3.017800;,
0.962030; 0.684361;-1.016196;,
0.962029; 0.684361;-3.017800;,
-0.962029; 0.684361;-3.017800;,
-0.962029; 0.684361;-1.016196;,
1.000000; 1.000000;-1.000000;,
1.000000;-1.000000;-1.000000;,
-1.000000;-1.000000;-1.000000;,
-1.000000; 1.000000;-1.000000;,
1.000000; 0.999999; 1.000000;,
-1.000000; 1.000000; 1.000000;,
-1.000000;-1.000000; 1.000000;,
0.999999;-1.000001; 1.000000;,
1.000000; 1.000000;-1.000000;,
1.000000; 0.999999; 1.000000;,
0.999999;-1.000001; 1.000000;,
1.000000;-1.000000;-1.000000;,
1.000000;-1.000000;-1.000000;,
0.999999;-1.000001; 1.000000;,
-1.000000;-1.000000; 1.000000;,
-1.000000;-1.000000;-1.000000;,
-1.000000;-1.000000;-1.000000;,
-1.000000;-1.000000; 1.000000;,
-1.000000; 1.000000; 1.000000;,
-1.000000; 1.000000;-1.000000;,
1.000000; 0.999999; 1.000000;,
1.000000; 1.000000;-1.000000;,
-1.000000; 1.000000;-1.000000;,
-1.000000; 1.000000; 1.000000;;
102;
4;3,2,1,0;,
4;7,6,5,4;,
4;11,10,9,8;,
4;15,14,13,12;,
4;19,18,17,16;,
4;23,22,21,20;,
4;27,26,25,24;,
4;31,30,29,28;,
4;35,34,33,32;,
4;39,38,37,36;,
4;43,42,41,40;,
4;47,46,45,44;,
4;51,50,49,48;,
4;55,54,53,52;,
4;59,58,57,56;,
4;63,62,61,60;,
4;67,66,65,64;,
4;71,70,69,68;,
4;75,74,73,72;,
4;79,78,77,76;,
4;83,82,81,80;,
4;87,86,85,84;,
4;91,90,89,88;,
4;95,94,93,92;,
4;99,98,97,96;,
4;103,102,101,100;,
4;107,106,105,104;,
4;111,110,109,108;,
4;115,114,113,112;,
4;119,118,117,116;,
4;123,122,121,120;,
4;127,126,125,124;,
4;131,130,129,128;,
4;135,134,133,132;,
4;139,138,137,136;,
4;143,142,141,140;,
4;147,146,145,144;,
4;151,150,149,148;,
4;155,154,153,152;,
4;159,158,157,156;,
4;163,162,161,160;,
4;167,166,165,164;,
4;171,170,169,168;,
4;175,174,173,172;,
4;179,178,177,176;,
4;183,182,181,180;,
4;187,186,185,184;,
4;191,190,189,188;,
4;195,194,193,192;,
4;199,198,197,196;,
4;203,202,201,200;,
4;207,206,205,204;,
4;211,210,209,208;,
4;215,214,213,212;,
4;219,218,217,216;,
4;223,222,221,220;,
4;227,226,225,224;,
4;231,230,229,228;,
4;235,234,233,232;,
4;239,238,237,236;,
4;243,242,241,240;,
4;247,246,245,244;,
4;251,250,249,248;,
4;255,254,253,252;,
4;259,258,257,256;,
4;263,262,261,260;,
4;267,266,265,264;,
4;271,270,269,268;,
4;275,274,273,272;,
4;279,278,277,276;,
4;283,282,281,280;,
4;287,286,285,284;,
4;291,290,289,288;,
4;295,294,293,292;,
4;299,298,297,296;,
4;303,302,301,300;,
4;307,306,305,304;,
4;311,310,309,308;,
4;315,314,313,312;,
4;319,318,317,316;,
4;323,322,321,320;,
4;327,326,325,324;,
4;331,330,329,328;,
4;335,334,333,332;,
4;339,338,337,336;,
4;343,342,341,340;,
4;347,346,345,344;,
4;351,350,349,348;,
4;355,354,353,352;,
4;359,358,357,356;,
4;363,362,361,360;,
4;367,366,365,364;,
4;371,370,369,368;,
4;375,374,373,372;,
4;379,378,377,376;,
4;383,382,381,380;,
4;387,386,385,384;,
4;391,390,389,388;,
4;395,394,393,392;,
4;399,398,397,396;,
4;403,402,401,400;,
4;407,406,405,404;;
MeshTextureCoords { // Cube UV coordinates
408;
0.146555; 0.704938;,
0.219579; 0.704938;,
0.219579; 0.597638;,
0.146555; 0.597638;,
0.375317; 0.453613;,
0.375317; 0.700559;,
0.734358; 0.700559;,
0.734358; 0.453613;,
0.734631; 0.437290;,
0.734855; 0.467815;,
0.374945; 0.468118;,
0.375264; 0.437227;,
0.823588; 0.418938;,
0.808504; 0.418938;,
0.808504; 0.526238;,
0.823588; 0.526238;,
0.578626; 0.055536;,
0.563542; 0.055536;,
0.563542; 0.128684;,
0.578626; 0.128684;,
0.808504; 0.418938;,
0.823588; 0.418938;,
0.823588; 0.311638;,
0.808504; 0.311638;,
0.734192; 0.452700;,
0.375763; 0.454545;,
0.375763; 0.695071;,
0.734192; 0.693225;,
0.853190; 0.892700;,
0.853190; 1.000000;,
0.926213; 1.000000;,
0.926213; 0.892700;,
0.733844; 0.468849;,
0.733844; 0.123528;,
0.374688; 0.123528;,
0.374688; 0.468849;,
0.347692; 0.350172;,
0.347692; 0.238678;,
0.240575; 0.238678;,
0.240575; 0.350172;,
0.740541; 0.147195;,
0.740541; 0.258689;,
0.813564; 0.258689;,
0.813564; 0.147195;,
0.807655; 0.185158;,
0.807655; 0.073664;,
0.700538; 0.073664;,
0.700538; 0.185158;,
0.697294; 0.823793;,
0.753579; 0.823793;,
0.753579; 0.760742;,
0.697294; 0.760742;,
0.697294; 0.823793;,
0.697294; 0.760742;,
0.641009; 0.760742;,
0.641009; 0.823793;,
0.904703; 0.008042;,
0.877894; 0.008042;,
0.877894; 0.064423;,
0.904703; 0.064423;,
0.907933; 0.074983;,
0.934742; 0.074983;,
0.934742; 0.011932;,
0.907934; 0.011932;,
0.991302; 0.759518;,
0.964493; 0.759518;,
0.964493; 0.815899;,
0.991302; 0.815899;,
0.210851; 0.427844;,
0.237659; 0.427844;,
0.237659; 0.364793;,
0.210851; 0.364793;,
0.973107; 0.052812;,
0.934827; 0.052812;,
0.934827; 0.169321;,
0.973107; 0.169321;,
0.934827; 0.169321;,
0.934827; 0.285830;,
0.973107; 0.285830;,
0.973107; 0.169321;,
0.869654; 0.454170;,
0.869654; 0.156474;,
0.831374; 0.156474;,
0.831374; 0.454170;,
0.000000; 0.702304;,
0.000000; 1.000000;,
0.116311; 1.000000;,
0.116311; 0.702304;,
0.907933; 0.454170;,
0.907933; 0.156474;,
0.869654; 0.156474;,
0.869654; 0.454170;,
0.263458; 0.822824;,
0.263458; 0.525128;,
0.147148; 0.525128;,
0.147148; 0.822824;,
0.770397; 0.000000;,
0.743504; 0.000000;,
0.743504; 0.092051;,
0.770397; 0.092051;,
0.991386; 0.907949;,
0.991386; 0.815899;,
0.964493; 0.815899;,
0.964493; 0.907949;,
0.934827; 0.526238;,
0.934827; 0.300610;,
0.907934; 0.300610;,
0.907933; 0.526238;,
0.846910; 0.280160;,
0.846910; 0.505787;,
0.938804; 0.505787;,
0.938804; 0.280160;,
0.934827; 0.751866;,
0.934827; 0.526238;,
0.907934; 0.526238;,
0.907933; 0.751866;,
0.853190; 1.000000;,
0.853190; 0.774372;,
0.761296; 0.774372;,
0.761296; 1.000000;,
0.129949; 0.092205;,
0.092932; 0.092205;,
0.092932; 0.197043;,
0.129949; 0.197043;,
0.130005; 0.029002;,
0.130005; 0.133840;,
0.167021; 0.133840;,
0.167021; 0.029002;,
0.189231; 0.169107;,
0.189231; 0.122508;,
0.152214; 0.122507;,
0.152214; 0.169107;,
0.143088; 0.176945;,
0.096567; 0.176945;,
0.096567; 0.281783;,
0.143088; 0.281783;,
0.096414; 0.254403;,
0.096414; 0.301003;,
0.133431; 0.301003;,
0.133431; 0.254403;,
0.184374; 0.157981;,
0.137854; 0.157981;,
0.137854; 0.262819;,
0.184374; 0.262819;,
0.217045; 0.080940;,
0.180028; 0.080940;,
0.180028; 0.185778;,
0.217045; 0.185778;,
0.155395; 0.155324;,
0.155395; 0.260162;,
0.192412; 0.260162;,
0.192412; 0.155325;,
0.062521; 0.223308;,
0.062521; 0.269908;,
0.099538; 0.269908;,
0.099538; 0.223309;,
0.132683; 0.264179;,
0.179203; 0.264179;,
0.179203; 0.159342;,
0.132683; 0.159342;,
0.162243; 0.235845;,
0.162243; 0.189245;,
0.125226; 0.189245;,
0.125226; 0.235845;,
0.138015; 0.185771;,
0.184535; 0.185771;,
0.184535; 0.080933;,
0.138015; 0.080933;,
0.743504; 0.000000;,
0.716611; 0.000000;,
0.716611; 0.092051;,
0.743504; 0.092051;,
0.716610; 0.092051;,
0.716610; 0.000000;,
0.689717; 0.000000;,
,
0.125226; 0.235845;,
0.138015; 0.185771;,
0.184535; 0.185771;,
0.184535; 0.080933;,
0.138015; 0.080933;,
0.743504; 0.000000;,
0.716611; 0.000000;,
0.716611; 0.092051;,
0.743504; 0.092051;,
0.716610; 0.092051;,
0.716610; 0.000000;,
0.689717; 0.000000;,
0.689717; 0.092051;,
0.934827; 0.300610;,
0.934827; 0.074983;,
0.907934; 0.074983;,
0.907933; 0.300610;,
0.870199; 0.358905;,
0.870199; 0.133277;,
0.778305; 0.133277;,
0.778305; 0.358905;,
0.808504; 0.526238;,
0.808504; 0.300610;,
0.781611; 0.300610;,
0.781611; 0.526238;,
0.831374; 0.751866;,
0.831374; 0.526238;,
0.739480; 0.526238;,
0.739480; 0.751866;,
0.973107; 0.285830;,
0.934827; 0.285830;,
0.934827; 0.402339;,
0.973107; 0.402339;,
0.934827; 0.518848;,
0.934827; 0.635357;,
0.973107; 0.635357;,
0.973107; 0.518848;,
0.869654; 0.751866;,
0.869654; 0.454170;,
0.831374; 0.454170;,
0.831374; 0.751866;,
0.116311; 0.702304;,
0.116311; 1.000000;,
0.232621; 1.000000;,
0.232621; 0.702304;,
0.907933; 0.751866;,
0.907933; 0.454170;,
0.869654; 0.454170;,
0.869654; 0.751866;,
0.348932; 1.000000;,
0.348932; 0.702304;,
0.232621; 0.702304;,
0.232621; 1.000000;,
0.973107; 0.402339;,
0.934827; 0.402339;,
0.934827; 0.518848;,
0.973107; 0.518848;,
0.964493; 0.883491;,
0.964493; 0.766982;,
0.926213; 0.766982;,
0.926213; 0.883491;,
0.428092; 0.141471;,
0.428092; 0.025830;,
0.389812; 0.025830;,
0.389812; 0.141471;,
0.142880; 0.727963;,
0.258324; 0.727963;,
0.258324; 0.611454;,
0.142880; 0.611454;,
0.428092; 0.025830;,
0.428092; 0.141471;,
0.466372; 0.141471;,
0.466372; 0.025830;,
0.689717; 0.300610;,
0.805161; 0.300610;,
0.805161; 0.184101;,
0.689717; 0.184101;,
0.973107; 0.751866;,
1.000000; 0.751866;,
1.000000; 0.659815;,
0.973107; 0.659815;,
0.904788; 0.156474;,
0.904788; 0.064423;,
0.877894; 0.064423;,
0.877894; 0.156474;,
0.105638; 0.635034;,
0.105638; 0.547388;,
0.078745; 0.547388;,
0.078745; 0.635034;,
0.031990; 0.613889;,
0.119487; 0.613889;,
0.119487; 0.521838;,
0.031990; 0.521838;,
0.973107; 0.572169;,
0.973107; 0.659815;,
1.000000; 0.659815;,
1.000000; 0.572169;,
0.365305; 0.045359;,
0.277809; 0.045359;,
0.277809; 0.137409;,
0.365305; 0.137410;,
0.045311; 0.156340;,
0.077530; 0.156340;,
0.077530; 0.056166;,
0.045311; 0.056166;,
0.148600; 0.244396;,
0.148600; 0.144222;,
0.116381; 0.144222;,
0.116381; 0.244396;,
0.168555; 0.208727;,
0.192083; 0.208727;,
0.192083; 0.176454;,
0.168555; 0.176454;,
0.170487; 0.079342;,
0.146958; 0.079342;,
0.146958; 0.179516;,
0.170487; 0.179516;,
0.114022; 0.152920;,
0.137551; 0.152920;,
0.137551; 0.120647;,
0.114022; 0.120647;,
0.052290; 0.223964;,
0.075819; 0.223964;,
0.075819; 0.123790;,
0.052290; 0.123790;,
0.114498; 0.093416;,
0.082279; 0.093416;,
0.082279; 0.193590;,
0.114498; 0.193590;,
0.041178; 0.212581;,
0.041178; 0.112407;,
0.008960; 0.112407;,
0.008960; 0.212581;,
0.159527; 0.102570;,
0.135999; 0.102570;,
0.135999; 0.134843;,
0.159527; 0.134843;,
0.092595; 0.142392;,
0.116124; 0.142392;,
0.116124; 0.042218;,
0.092595; 0.042218;,
0.157428; 0.176454;,
0.133899; 0.176454;,
0.133899; 0.208727;,
0.157428; 0.208727;,
0.033688; 0.268331;,
0.057216; 0.268331;,
0.057216; 0.168157;,
0.033688; 0.168157;,
0.991386; 0.907949;,
0.964493; 0.907949;,
0.964493; 1.000000;,
0.991386; 1.000000;,
0.641532; 0.127043;,
0.641532; 0.034992;,
0.614639; 0.034992;,
0.614639; 0.127043;,
0.107924; 0.517859;,
0.107924; 0.605505;,
0.134817; 0.605505;,
0.134817; 0.517859;,
0.689717; 0.184101;,
0.777214; 0.184101;,
0.777214; 0.092051;,
0.689717; 0.092051;,
0.167158; 0.424349;,
0.167158; 0.511995;,
0.194051; 0.511995;,
0.194051; 0.424349;,
0.439029; 0.141471;,
0.351533; 0.141471;,
0.351533; 0.233522;,
0.439029; 0.233522;,
0.973107; 0.635357;,
0.934827; 0.635357;,
0.934827; 0.751866;,
0.973107; 0.751866;,
0.964493; 1.000000;,
0.964493; 0.883491;,
0.926213; 0.883491;,
0.926213; 1.000000;,
0.389812; 0.141471;,
0.389812; 0.025830;,
0.351533; 0.025830;,
0.351533; 0.141471;,
0.110376; 0.662550;,
0.225820; 0.662550;,
0.225820; 0.546041;,
0.110376; 0.546041;,
0.504651; 0.141471;,
0.504651; 0.025830;,
0.466372; 0.025830;,
0.466372; 0.141471;,
0.201212; 0.556736;,
0.316656; 0.556736;,
0.316656; 0.440227;,
0.201212; 0.440227;,
0.085837; 0.579025;,
0.206124; 0.579025;,
0.206124; 0.409644;,
0.085837; 0.409644;,
0.201493; 0.620858;,
0.201493; 0.451477;,
0.081206; 0.451477;,
0.081206; 0.620858;,
0.207106; 0.786112;,
0.207106; 0.609905;,
0.086819; 0.609905;,
0.086819; 0.786112;,
0.269625; 0.632052;,
0.269625; 0.455844;,
0.100533; 0.455844;,
0.100533; 0.632052;,
0.641009; 0.823793;,
0.641009; 1.000000;,
0.761296; 1.000000;,
0.761296; 0.823793;,
0.982550; 0.858444;,
0.982550; 0.682236;,
0.813458; 0.682236;,
0.813458; 0.858444;,
0.000000; 0.526238;,
0.175766; 0.526238;,
0.175766; 0.350172;,
0.000000; 0.350172;,
0.308289; 0.672775;,
0.308289; 0.496709;,
0.132523; 0.496709;,
0.132523; 0.672775;,
0.351533; 0.526238;,
0.175766; 0.526238;,
0.175766; 0.702304;,
0.351533; 0.702304;,
0.000000; 0.702304;,
0.175766; 0.702304;,
0.175766; 0.526238;,
0.000000; 0.526238;,
0.351532; 0.350172;,
0.175766; 0.350172;,
0.175766; 0.526238;,
0.351532; 0.526238;,
0.367862; 0.782101;,
0.192096; 0.782101;,
0.192096; 0.958167;,
0.367862; 0.958167;;
} // End of Cube UV coordinates

41068
models/nathan_petrelli.x Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More