Modified the attack of the phoenix and the envy sword
This commit is contained in:
parent
19e251efc6
commit
2b574182da
@ -69,6 +69,7 @@ mobs:register_mob("nssm:phoenix", {
|
|||||||
local p = self.attack:getpos()
|
local p = self.attack:getpos()
|
||||||
local s = self.object:getpos()
|
local s = self.object:getpos()
|
||||||
local vel = vector.subtract(p,s)
|
local vel = vector.subtract(p,s)
|
||||||
|
set_animation(self, "shoot")
|
||||||
|
|
||||||
minetest.add_particlespawner(
|
minetest.add_particlespawner(
|
||||||
125, --amount
|
125, --amount
|
||||||
@ -87,23 +88,35 @@ mobs:register_mob("nssm:phoenix", {
|
|||||||
"phoenix_fire.png" --texture
|
"phoenix_fire.png" --texture
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
--local dir = placer:get_look_dir()
|
|
||||||
--local playerpos = placer:getpos()
|
|
||||||
local obj = minetest.add_entity(s, "nssm:phoenix_dart")
|
local obj = minetest.add_entity(s, "nssm:phoenix_dart")
|
||||||
local ran = math.random(7,14)/10
|
local ran = math.random(7,14)/10
|
||||||
local vec = vector.multiply(vel, ran)
|
local vec = vector.multiply(vel, ran)
|
||||||
obj:setvelocity(vec)
|
obj:setvelocity(vec)
|
||||||
|
|
||||||
minetest.after(0.5, function()
|
minetest.after(0.5, function()
|
||||||
|
if self.attack then
|
||||||
local p = self.attack:getpos()
|
local p = self.attack:getpos()
|
||||||
local vel = vector.subtract(p,s)
|
local vel = vector.subtract(p,s)
|
||||||
local obj = minetest.add_entity(s, "nssm:phoenix_dart")
|
local obj = minetest.add_entity(s, "nssm:phoenix_dart")
|
||||||
local ran = math.random(7,14)/10
|
local ran = math.random(7,14)/10
|
||||||
local vec = vector.multiply(vel, ran)
|
local vec = vector.multiply(vel, ran)
|
||||||
obj:setvelocity(vec)
|
obj:setvelocity(vec)
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
end,
|
||||||
|
do_custom = function (self)
|
||||||
|
--minetest.chat_send_all(s.y.."-"..p.y.."="..(s.y-p.y))
|
||||||
|
if self.state == "attack" then
|
||||||
|
if self.attack then
|
||||||
|
local s = self.object:getpos()
|
||||||
|
local p = self.attack:getpos()
|
||||||
|
if (s.y - p.y ) < 10 then
|
||||||
|
local v = self.object:getvelocity()
|
||||||
|
v.y = 10
|
||||||
|
self.object:setvelocity(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -116,16 +129,23 @@ minetest.register_entity("nssm:phoenix_dart", {
|
|||||||
if os.time() - self.timer > 4 then
|
if os.time() - self.timer > 4 then
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
end
|
end
|
||||||
local all_objects = minetest.get_objects_inside_radius(self.object:getpos(), 1)
|
local p = self.object:getpos()
|
||||||
|
local all_objects = minetest.get_objects_inside_radius(p, 1)
|
||||||
local players = {}
|
local players = {}
|
||||||
local _,obj
|
local _,obj
|
||||||
for _,obj in ipairs(all_objects) do
|
for _,obj in ipairs(all_objects) do
|
||||||
if obj:is_player() then
|
if obj:is_player() then
|
||||||
obj:punch(self.object, 1.0, {
|
obj:punch(self.object, 1.0, {
|
||||||
full_punch_interval = 1.0,
|
full_punch_interval = 1.0,
|
||||||
damage_groups = {fleshy = 1}
|
damage_groups = {fleshy = 7}
|
||||||
}, nil)
|
}, nil)
|
||||||
|
self.object:remove()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local node = minetest.get_node(p).name
|
||||||
|
if node ~= "air" then
|
||||||
|
self.object:remove()
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
@ -1242,47 +1242,37 @@ minetest.register_tool("nssm:sword_of_envy", {
|
|||||||
if player_inv:is_empty('main') then
|
if player_inv:is_empty('main') then
|
||||||
--minetest.chat_send_all("Inventory empty")
|
--minetest.chat_send_all("Inventory empty")
|
||||||
else
|
else
|
||||||
local found = 0
|
local hp_num = nil
|
||||||
for i = 1,32 do
|
if (obj:is_player()) and (obj:get_player_name()~=dropper:get_player_name()) then
|
||||||
local items = player_inv:get_stack('main', i)
|
hp_num = obj:get_hp()
|
||||||
local n = items:get_name()
|
|
||||||
if n == "nssm:energy_globe" then
|
|
||||||
found = i
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if found == 0 then
|
|
||||||
minetest.chat_send_player(pname, "You haven't got any Energy Globe!")
|
|
||||||
return
|
|
||||||
else
|
else
|
||||||
if (obj:is_player()) then
|
if obj:get_luaentity() and (obj:get_luaentity().health) then
|
||||||
--minetest.chat_send_all("Giocatore")
|
hp_num = obj:get_luaentity().health
|
||||||
if (obj:get_player_name()~=dropper:get_player_name()) then
|
end
|
||||||
local hpp = obj:get_hp()
|
end
|
||||||
obj:set_hp(dropper:get_hp())
|
if hp_num ~= nil then
|
||||||
dropper:set_hp(hpp)
|
minetest.chat_send_all("hp_num = "..hp_num)
|
||||||
flag = 1
|
local stack = {name="nssm:life_energy", count=hp_num, wear=0, metadata=""}
|
||||||
|
if player_inv:contains_item("main", stack) then
|
||||||
|
--minetest.chat_send_all("trovato!")
|
||||||
|
|
||||||
local items = player_inv:get_stack('main', found)
|
if obj:is_player() and (obj:get_player_name()~=dropper:get_player_name()) then
|
||||||
items:take_item()
|
obj:set_hp(dropper:get_hp())
|
||||||
player_inv:set_stack('main', found, items)
|
dropper:set_hp(hp_num)
|
||||||
end
|
|
||||||
else
|
else
|
||||||
if (obj:get_luaentity().health) then
|
if obj:get_luaentity() and (obj:get_luaentity().health) then
|
||||||
local hpp = obj:get_luaentity().health
|
|
||||||
obj:get_luaentity().health = dropper:get_hp()
|
obj:get_luaentity().health = dropper:get_hp()
|
||||||
if hpp > 20 then
|
if hp_num > 20 then
|
||||||
dropper:set_hp(20)
|
dropper:set_hp(20)
|
||||||
else
|
else
|
||||||
dropper:set_hp(hpp)
|
dropper:set_hp(hp_num)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
check_for_death(obj:get_luaentity())
|
|
||||||
flag = 1
|
|
||||||
|
|
||||||
local items = player_inv:get_stack('main', found)
|
player_inv:remove_item("main", stack)
|
||||||
items:take_item()
|
else
|
||||||
player_inv:set_stack('main', found, items)
|
minetest.chat_send_player(dropper:get_player_name(), "You haven't enough life energy!")
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user