Implemented some new functions

This commit is contained in:
npx 2016-10-30 10:49:13 +01:00
parent 844fa22dff
commit b6c54be63f
2 changed files with 58 additions and 147 deletions

View File

@ -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,
}) })

View File

@ -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"