Initial fork with fixes
This commit is contained in:
commit
1da2bb51e1
27
README.txt
Normal file
27
README.txt
Normal 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
72
changelog.txt
Normal 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
401
darts.lua
Normal 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
6
depends.txt
Normal file
@ -0,0 +1,6 @@
|
||||
default
|
||||
mobs
|
||||
farming?
|
||||
3d_armor?
|
||||
fire
|
||||
tnt
|
BIN
guide/Not so complicated guide for Not so simple mobs.pdf
Normal file
BIN
guide/Not so complicated guide for Not so simple mobs.pdf
Normal file
Binary file not shown.
BIN
guide/source/nssm guide.odt
Normal file
BIN
guide/source/nssm guide.odt
Normal file
Binary file not shown.
72
init.lua
Normal file
72
init.lua
Normal 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
105
mobs/ant_queen.lua
Normal 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
64
mobs/ant_soldier.lua
Normal 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
64
mobs/ant_worker.lua
Normal 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
67
mobs/black_widow.lua
Normal 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
61
mobs/bloco.lua
Normal 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
65
mobs/crab.lua
Normal 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
61
mobs/crocodile.lua
Normal 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
59
mobs/daddy_long_legs.lua
Normal 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
58
mobs/dolidrosaurus.lua
Normal 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
64
mobs/duck.lua
Normal 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
78
mobs/duckking.lua
Normal 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
63
mobs/echidna.lua
Normal 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
66
mobs/enderduck.lua
Normal 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
62
mobs/felucco.lua
Normal 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
63
mobs/flying_duck.lua
Normal 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
59
mobs/giant_sandworm.lua
Normal 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
76
mobs/icelamander.lua
Normal 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
67
mobs/icesnake.lua
Normal 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
63
mobs/kraken.lua
Normal 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
87
mobs/larva.lua
Normal 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
117
mobs/lava_titan.lua
Normal 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
65
mobs/manticore.lua
Normal 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
65
mobs/mantis.lua
Normal 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
63
mobs/mantis_beast.lua
Normal 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
121
mobs/masticone.lua
Normal 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
116
mobs/mese_dragon.lua
Normal 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
56
mobs/moonheron.lua
Normal 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
123
mobs/mordain.lua
Normal 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
172
mobs/morde.lua
Normal 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
57
mobs/morgre.lua
Normal 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
187
mobs/morgut.lua
Normal 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
243
mobs/morlu.lua
Normal 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
925
mobs/morvalar.lua
Normal 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
280
mobs/morvy.lua
Normal 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
71
mobs/morwa.lua
Normal 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
190
mobs/night_master.lua
Normal 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
121
mobs/octopus.lua
Normal 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
69
mobs/phoenix.lua
Normal 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
168
mobs/pumpboom.lua
Normal 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
88
mobs/pumpking.lua
Normal 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
59
mobs/sand_bloco.lua
Normal 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
64
mobs/sandworm.lua
Normal 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
57
mobs/scrausics.lua
Normal 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
52
mobs/signosigno.lua
Normal 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
72
mobs/snow_biter.lua
Normal 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
74
mobs/spiderduck.lua
Normal 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
62
mobs/stone_eater.lua
Normal 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
63
mobs/swimming_duck.lua
Normal 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
145
mobs/tarantula.lua
Normal 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
67
mobs/uloboros.lua
Normal 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
58
mobs/werewolf.lua
Normal 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
58
mobs/white_werewolf.lua
Normal 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,
|
||||
}
|
||||
})
|
42432
models/ant_queen.x
Normal file
42432
models/ant_queen.x
Normal file
File diff suppressed because it is too large
Load Diff
37988
models/ant_soldier.x
Normal file
37988
models/ant_soldier.x
Normal file
File diff suppressed because it is too large
Load Diff
36234
models/ant_worker.x
Normal file
36234
models/ant_worker.x
Normal file
File diff suppressed because it is too large
Load Diff
37099
models/black_widow.x
Normal file
37099
models/black_widow.x
Normal file
File diff suppressed because it is too large
Load Diff
19865
models/bloco.x
Normal file
19865
models/bloco.x
Normal file
File diff suppressed because it is too large
Load Diff
46326
models/crab.x
Normal file
46326
models/crab.x
Normal file
File diff suppressed because it is too large
Load Diff
23176
models/crocodile.x
Normal file
23176
models/crocodile.x
Normal file
File diff suppressed because it is too large
Load Diff
36264
models/daddy_long_legs.x
Normal file
36264
models/daddy_long_legs.x
Normal file
File diff suppressed because it is too large
Load Diff
20117
models/dolidrosaurus.x
Normal file
20117
models/dolidrosaurus.x
Normal file
File diff suppressed because it is too large
Load Diff
4336
models/duck.x
Normal file
4336
models/duck.x
Normal file
File diff suppressed because it is too large
Load Diff
47040
models/echidna.x
Normal file
47040
models/echidna.x
Normal file
File diff suppressed because it is too large
Load Diff
28930
models/enderduck.x
Normal file
28930
models/enderduck.x
Normal file
File diff suppressed because it is too large
Load Diff
51052
models/felucco.x
Normal file
51052
models/felucco.x
Normal file
File diff suppressed because it is too large
Load Diff
17438
models/giant_sandworm.x
Normal file
17438
models/giant_sandworm.x
Normal file
File diff suppressed because it is too large
Load Diff
59757
models/icelamander.x
Normal file
59757
models/icelamander.x
Normal file
File diff suppressed because it is too large
Load Diff
15229
models/icesnake.x
Normal file
15229
models/icesnake.x
Normal file
File diff suppressed because it is too large
Load Diff
30579
models/king_duck.x
Normal file
30579
models/king_duck.x
Normal file
File diff suppressed because it is too large
Load Diff
34648
models/kraken.x
Normal file
34648
models/kraken.x
Normal file
File diff suppressed because it is too large
Load Diff
16147
models/larva.x
Normal file
16147
models/larva.x
Normal file
File diff suppressed because it is too large
Load Diff
52904
models/lava_titan.x
Normal file
52904
models/lava_titan.x
Normal file
File diff suppressed because it is too large
Load Diff
48332
models/manticore.x
Normal file
48332
models/manticore.x
Normal file
File diff suppressed because it is too large
Load Diff
24834
models/mantis.x
Normal file
24834
models/mantis.x
Normal file
File diff suppressed because it is too large
Load Diff
21890
models/mantis_beast.x
Normal file
21890
models/mantis_beast.x
Normal file
File diff suppressed because it is too large
Load Diff
35798
models/masticone.x
Normal file
35798
models/masticone.x
Normal file
File diff suppressed because it is too large
Load Diff
82858
models/mese_dragon.x
Normal file
82858
models/mese_dragon.x
Normal file
File diff suppressed because it is too large
Load Diff
43089
models/moonheron.x
Normal file
43089
models/moonheron.x
Normal file
File diff suppressed because it is too large
Load Diff
59401
models/moonherontrio.x
Normal file
59401
models/moonherontrio.x
Normal file
File diff suppressed because it is too large
Load Diff
14423
models/morbat.x
Normal file
14423
models/morbat.x
Normal file
File diff suppressed because it is too large
Load Diff
22640
models/mordain.x
Normal file
22640
models/mordain.x
Normal file
File diff suppressed because it is too large
Load Diff
20141
models/morde.x
Normal file
20141
models/morde.x
Normal file
File diff suppressed because it is too large
Load Diff
10042
models/morgre.x
Normal file
10042
models/morgre.x
Normal file
File diff suppressed because it is too large
Load Diff
26028
models/morgut.x
Normal file
26028
models/morgut.x
Normal file
File diff suppressed because it is too large
Load Diff
22832
models/morlu.x
Normal file
22832
models/morlu.x
Normal file
File diff suppressed because it is too large
Load Diff
23121
models/mortick.x
Normal file
23121
models/mortick.x
Normal file
File diff suppressed because it is too large
Load Diff
95643
models/morvalar.x
Normal file
95643
models/morvalar.x
Normal file
File diff suppressed because it is too large
Load Diff
22664
models/morvy.x
Normal file
22664
models/morvy.x
Normal file
File diff suppressed because it is too large
Load Diff
18315
models/morwa.x
Normal file
18315
models/morwa.x
Normal file
File diff suppressed because it is too large
Load Diff
BIN
models/morwa_statue.b3d
Normal file
BIN
models/morwa_statue.b3d
Normal file
Binary file not shown.
953
models/morwa_statue.x
Normal file
953
models/morwa_statue.x
Normal 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
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
Loading…
Reference in New Issue
Block a user