Implemented some new functions
This commit is contained in:
parent
844fa22dff
commit
b6c54be63f
@ -155,25 +155,7 @@ mobs:register_mob("nssm:morvalar", {
|
|||||||
on_die = function(self)
|
on_die = function(self)
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
minetest.add_particlespawner({
|
add_entity_and_particles("nssm:morvalar6", pos, "morparticle.png", 10)
|
||||||
amount = 1000,
|
|
||||||
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.add_entity(pos, "nssm:morvalar6")
|
|
||||||
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -293,24 +275,7 @@ mobs:register_mob("nssm:morvalar6", {
|
|||||||
on_die = function(self)
|
on_die = function(self)
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
minetest.add_particlespawner({
|
add_entity_and_particles("nssm:morvalar5", pos, "morparticle.png", 10)
|
||||||
amount = 1000,
|
|
||||||
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.add_entity(pos, "nssm:morvalar5")
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -381,24 +346,7 @@ mobs:register_mob("nssm:morvalar5", {
|
|||||||
on_die = function(self)
|
on_die = function(self)
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
minetest.add_particlespawner({
|
add_entity_and_particles("nssm:morvalar4", pos, "morparticle.png", 10)
|
||||||
amount = 1000,
|
|
||||||
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.add_entity(pos, "nssm:morvalar4")
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -521,24 +469,7 @@ mobs:register_mob("nssm:morvalar4", {
|
|||||||
on_die = function(self)
|
on_die = function(self)
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
minetest.add_particlespawner({
|
add_entity_and_particles("nssm:morvalar3", pos, "morparticle.png", 10)
|
||||||
amount = 1000,
|
|
||||||
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.add_entity(pos, "nssm:morvalar3")
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -599,24 +530,7 @@ mobs:register_mob("nssm:morvalar3", {
|
|||||||
on_die = function(self)
|
on_die = function(self)
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
minetest.add_particlespawner({
|
add_entity_and_particles("nssm:morvalar2", pos, "morparticle.png", 10)
|
||||||
amount = 1000,
|
|
||||||
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.add_entity(pos, "nssm:morvalar2")
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -692,51 +606,31 @@ mobs:register_mob("nssm:morvalar2", {
|
|||||||
local v = vector.subtract(p,s)
|
local v = vector.subtract(p,s)
|
||||||
--local v = {x = s.x-p.x, y = s.y-p.y , z= s.z-p.z}
|
--local v = {x = s.x-p.x, y = s.y-p.y , z= s.z-p.z}
|
||||||
v = vector.normalize(v)
|
v = vector.normalize(v)
|
||||||
local vv = vector.add(s,v)
|
local per = perpendicular_vector(v)
|
||||||
local vvv
|
local p1 = vector.add(s,v)
|
||||||
if math.abs(v.x) > math.abs (v.z) then
|
p1 = vector.subtract(p1,vector.multiply(per,4))
|
||||||
vvv = {x=1, y=0, z=0}
|
|
||||||
else
|
|
||||||
vvv = {x=0, y=0, z=1}
|
|
||||||
end
|
|
||||||
|
|
||||||
minetest.add_entity(vv, "nssm:morwa")
|
add_entity_and_particles("nssm:morwa", p1, "morparticle.png", 1)
|
||||||
vv = vector.add(vv,vvv)
|
p1 = vector.add(p1,per)
|
||||||
minetest.add_entity(vv, "nssm:mordain")
|
add_entity_and_particles("nssm:mordain", p1, "morparticle.png", 1)
|
||||||
vv = vector.add(vv,vvv)
|
p1 = vector.add(p1,per)
|
||||||
minetest.add_entity(vv, "nssm:morgre")
|
add_entity_and_particles("nssm:morgre", p1, "morparticle.png", 1)
|
||||||
vv = vector.add(vv,vvv)
|
p1 = vector.add(p1,per)
|
||||||
minetest.add_entity(vv, "nssm:morlu")
|
add_entity_and_particles("nssm:morlu", p1, "morparticle.png", 1)
|
||||||
vv = vector.add(vv,vvv)
|
p1 = vector.add(p1,per)
|
||||||
minetest.add_entity(vv, "nssm:morgut")
|
add_entity_and_particles("nssm:morgut", p1, "morparticle.png", 1)
|
||||||
vv = vector.add(vv,vvv)
|
p1 = vector.add(p1,per)
|
||||||
minetest.add_entity(vv, "nssm:morde")
|
add_entity_and_particles("nssm:morde", p1, "morparticle.png", 1)
|
||||||
vv = vector.add(vv,vvv)
|
p1 = vector.add(p1,per)
|
||||||
minetest.add_entity(vv, "nssm:morvy")
|
add_entity_and_particles("nssm:morvy", p1, "morparticle.png", 1)
|
||||||
|
p1 = vector.add(p1,per)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
on_die = function(self)
|
on_die = function(self)
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
minetest.add_particlespawner({
|
add_entity_and_particles("nssm:morvalar1", pos, "morparticle.png", 10)
|
||||||
amount = 1000,
|
|
||||||
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.add_entity(pos, "nssm:morvalar1")
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -820,24 +714,7 @@ mobs:register_mob("nssm:morvalar1", {
|
|||||||
on_die = function(self)
|
on_die = function(self)
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
minetest.add_particlespawner({
|
add_entity_and_particles("nssm:morvalar0", pos, "morparticle.png", 10)
|
||||||
amount = 1000,
|
|
||||||
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.add_entity(pos, "nssm:morvalar0")
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
34
nssm_api.lua
34
nssm_api.lua
@ -20,6 +20,40 @@ function nssm:affectbones(mobe) -- as function for adaptable heuristic
|
|||||||
return not nssm.safebones
|
return not nssm.safebones
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function perpendicular_vector(vec) --returns a vector rotated of 90° in 2D
|
||||||
|
local ang = math.pi/2
|
||||||
|
local c = math.cos(ang)
|
||||||
|
local s = math.sin(ang)
|
||||||
|
|
||||||
|
local i = vec.x*c - vec.z*s
|
||||||
|
local k = vec.x*s + vec.z*c
|
||||||
|
local j = vec.y
|
||||||
|
|
||||||
|
vec = {x=i, y=j, z=k}
|
||||||
|
return vec
|
||||||
|
end
|
||||||
|
|
||||||
|
function add_entity_and_particles(entity, pos, particles, multiplier)
|
||||||
|
minetest.add_particlespawner({
|
||||||
|
amount = 100*multiplier,
|
||||||
|
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 = particles,
|
||||||
|
})
|
||||||
|
minetest.add_entity(pos, entity)
|
||||||
|
end
|
||||||
|
|
||||||
-- get node but use fallback for nil or unknown
|
-- get node but use fallback for nil or unknown
|
||||||
function node_ok(pos, fallback)
|
function node_ok(pos, fallback)
|
||||||
fallback = fallback or "default:dirt"
|
fallback = fallback or "default:dirt"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user