Working on morvalarr
This commit is contained in:
parent
be2292df12
commit
2db515c302
@ -352,7 +352,7 @@ mobs:register_mob("nssm:morvalarr5", {
|
|||||||
local p = self.attack:getpos()
|
local p = self.attack:getpos()
|
||||||
minetest.after(2, function(self)
|
minetest.after(2, function(self)
|
||||||
set_animation(self, "punch")
|
set_animation(self, "punch")
|
||||||
explosion(p, 3, 0, 1, self.sounds.explode)
|
explosion(p, 5, 0, 1, true)
|
||||||
self.morvalarr5_timer = os.time()
|
self.morvalarr5_timer = os.time()
|
||||||
end,self)
|
end,self)
|
||||||
end
|
end
|
||||||
@ -653,7 +653,6 @@ mobs:register_mob("nssm:morvalarr2", {
|
|||||||
self.morvalarr2_timer = os.time()
|
self.morvalarr2_timer = os.time()
|
||||||
local s = self.object:getpos()
|
local s = self.object:getpos()
|
||||||
local p = self.attack:getpos()
|
local p = self.attack:getpos()
|
||||||
minetest.chat_send_all("ciao ciao sono dentro")
|
|
||||||
|
|
||||||
local counter = 0
|
local counter = 0
|
||||||
local objects = minetest.env:get_objects_inside_radius(s, 7)
|
local objects = minetest.env:get_objects_inside_radius(s, 7)
|
||||||
@ -668,14 +667,31 @@ mobs:register_mob("nssm:morvalarr2", {
|
|||||||
minetest.chat_send_all("Ne ho contati: "..counter)
|
minetest.chat_send_all("Ne ho contati: "..counter)
|
||||||
if counter < 2 then
|
if counter < 2 then
|
||||||
set_animation(self, "punch")
|
set_animation(self, "punch")
|
||||||
minetest.chat_send_all("Ora te li sbatto addosso")
|
|
||||||
minetest.add_entity(s, "nssm:morwa")
|
local v = vector.subtract(p,s)
|
||||||
minetest.add_entity(s, "nssm:mordain")
|
--local v = {x = s.x-p.x, y = s.y-p.y , z= s.z-p.z}
|
||||||
minetest.add_entity(s, "nssm:morgre")
|
v = vector.normalize(v)
|
||||||
minetest.add_entity(s, "nssm:morlu")
|
local vv = vector.add(s,v)
|
||||||
minetest.add_entity(s, "nssm:morgut")
|
local vvv
|
||||||
minetest.add_entity(s, "nssm:morde")
|
if math.abs(v.x) > math.abs (v.z) then
|
||||||
minetest.add_entity(s, "nssm:morvy")
|
vvv = {x=1, y=0, z=0}
|
||||||
|
else
|
||||||
|
vvv = {x=0, y=0, z=1}
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.add_entity(vv, "nssm:morwa")
|
||||||
|
vv = vector.add(vv,vvv)
|
||||||
|
minetest.add_entity(vv, "nssm:mordain")
|
||||||
|
vv = vector.add(vv,vvv)
|
||||||
|
minetest.add_entity(vv, "nssm:morgre")
|
||||||
|
vv = vector.add(vv,vvv)
|
||||||
|
minetest.add_entity(vv, "nssm:morlu")
|
||||||
|
vv = vector.add(vv,vvv)
|
||||||
|
minetest.add_entity(vv, "nssm:morgut")
|
||||||
|
vv = vector.add(vv,vvv)
|
||||||
|
minetest.add_entity(vv, "nssm:morde")
|
||||||
|
vv = vector.add(vv,vvv)
|
||||||
|
minetest.add_entity(vv, "nssm:morvy")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
@ -777,23 +793,6 @@ mobs:register_mob("nssm:morvalarr1", {
|
|||||||
full_punch_interval=1.0,
|
full_punch_interval=1.0,
|
||||||
damage_groups = {fleshy=self.damage}
|
damage_groups = {fleshy=self.damage}
|
||||||
}, nil)
|
}, 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
|
end
|
||||||
end,
|
end,
|
||||||
@ -834,7 +833,7 @@ mobs:register_mob("nssm:morvalarr0", {
|
|||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
view_range = 50,
|
view_range = 50,
|
||||||
walk_velocity = 1.6,
|
walk_velocity = 1.6,
|
||||||
reach = 6,
|
reach = 16,
|
||||||
run_velocity = 3.2,
|
run_velocity = 3.2,
|
||||||
damage = 4,
|
damage = 4,
|
||||||
runaway = true,
|
runaway = true,
|
||||||
@ -876,14 +875,15 @@ mobs:register_mob("nssm:morvalarr0", {
|
|||||||
|
|
||||||
local s = self.object:getpos()
|
local s = self.object:getpos()
|
||||||
local p = self.attack:getpos()
|
local p = self.attack:getpos()
|
||||||
p.y = p.y +1
|
|
||||||
|
|
||||||
set_animation(self, "punch")
|
set_animation(self, "punch")
|
||||||
|
|
||||||
local m = 5 --velocity of the kamehameha
|
local m = 5 --velocity of the kamehameha
|
||||||
local obj = minetest.add_entity(s, "nssm:kamehameha_bad")
|
local obj = minetest.add_entity(s, "nssm:kamehameha_bad")
|
||||||
|
|
||||||
local dir = {x=(p.x-s.x)*m, y=(p.y-s.y+1)*m, z=(p.z-s.z)*m} --direction of the kamehameha
|
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)
|
obj:setvelocity(dir)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
@ -915,7 +915,6 @@ minetest.register_entity("nssm:kamehameha_bad", {
|
|||||||
textures = {"kamehameha.png"},
|
textures = {"kamehameha.png"},
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
local pos = self.object:getpos();
|
local pos = self.object:getpos();
|
||||||
|
|
||||||
if self.timer == 0 then
|
if self.timer == 0 then
|
||||||
self.timer = os.time()
|
self.timer = os.time()
|
||||||
end
|
end
|
||||||
@ -926,9 +925,13 @@ minetest.register_entity("nssm:kamehameha_bad", {
|
|||||||
|
|
||||||
local objects = minetest.env:get_objects_inside_radius(pos, 2)
|
local objects = minetest.env:get_objects_inside_radius(pos, 2)
|
||||||
for _,obj in ipairs(objects) do
|
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
|
if obj:get_luaentity() then
|
||||||
local name = obj:get_luaentity().name
|
local name = obj:get_luaentity().name
|
||||||
if name ~= "nssm:morvalarr0" then
|
if name ~= "nssm:morvalarr0" and name ~="nssm:kamehameha_bad" then
|
||||||
obj:set_hp(obj:get_hp()-5)
|
obj:set_hp(obj:get_hp()-5)
|
||||||
if (obj:get_hp() <= 0) then
|
if (obj:get_hp() <= 0) then
|
||||||
if (not obj:is_player()) then
|
if (not obj:is_player()) then
|
||||||
@ -938,28 +941,34 @@ minetest.register_entity("nssm:kamehameha_bad", {
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local objects = minetest.env:get_objects_inside_radius(pos, 0)
|
local objects = minetest.env:get_objects_inside_radius(pos, 1)
|
||||||
for _,obj in ipairs(objects) do
|
for _,obj in ipairs(objects) do
|
||||||
|
if obj:is_player() then
|
||||||
|
explosion(pos, 5, 0, 1, true)
|
||||||
|
self.object:remove()
|
||||||
|
minetest.chat_send_all("Dentro il raggio piccolo")
|
||||||
|
end
|
||||||
if obj:get_luaentity() then
|
if obj:get_luaentity() then
|
||||||
local name = obj:get_luaentity().name
|
local name = obj:get_luaentity().name
|
||||||
if name ~= "nssm:morvalarr0" then
|
if name ~= "nssm:morvalarr0" and name ~="nssm:kamehameha_bad" then
|
||||||
explosion(pos, 5, 0, 1)
|
explosion(pos, 5, 0, 1, true)
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local nodename = minetest.env:get_node(pos).name
|
local nodename = minetest.env:get_node(pos).name
|
||||||
--[[if nodename ~= "air" then
|
if nodename ~= "air" then
|
||||||
explosion(pos, 5, 0, 1)
|
explosion(pos, 5, 0, 1, true)
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
end
|
end
|
||||||
]]
|
|
||||||
end,
|
end,
|
||||||
life_time = 40,
|
life_time = 40,
|
||||||
timer = 0,
|
timer = 0,
|
||||||
custom_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.
|
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.
|
||||||
|
|
||||||
|
28
nssm_api.lua
28
nssm_api.lua
@ -94,7 +94,7 @@ function explosion_particles(pos, exp_radius)
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
function explosion(pos, exp_radius, fire)
|
function explosion(pos, exp_radius, fire, kamehameha_bad)
|
||||||
local radius = exp_radius
|
local radius = exp_radius
|
||||||
-- if area protected or near map limits then no blast damage
|
-- if area protected or near map limits then no blast damage
|
||||||
if minetest.is_protected(pos, "")
|
if minetest.is_protected(pos, "")
|
||||||
@ -118,12 +118,26 @@ function explosion(pos, exp_radius, fire)
|
|||||||
local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z}
|
local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z}
|
||||||
local dist = (vec.x^2+vec.y^2+vec.z^2)^0.5
|
local dist = (vec.x^2+vec.y^2+vec.z^2)^0.5
|
||||||
local damage = (-exp_radius*dist+exp_radius^2)*2
|
local damage = (-exp_radius*dist+exp_radius^2)*2
|
||||||
obj:set_hp(obj:get_hp()-damage)
|
if not kamehameha_bad then
|
||||||
if (obj:get_hp() <= 0) then
|
obj:set_hp(obj:get_hp()-damage)
|
||||||
if (not obj:is_player()) then
|
if (obj:get_hp() <= 0) then
|
||||||
obj:remove()
|
if (not obj:is_player()) then
|
||||||
end
|
obj:remove()
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if (obj:get_luaentity()) then
|
||||||
|
local name = obj:get_luaentity().name
|
||||||
|
if (name~="nssm:morvalarr0") and (name~="nssm:morvalarr5") then
|
||||||
|
obj:set_hp(obj:get_hp()-(damage*3))
|
||||||
|
if (obj:get_hp() <= 0) then
|
||||||
|
if (not obj:is_player()) then
|
||||||
|
obj:remove()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--damages blocks around and if necessary put some fire
|
--damages blocks around and if necessary put some fire
|
||||||
|
Loading…
x
Reference in New Issue
Block a user