fix damage_per_sec checks wit some nested if's, add custom on_activate to arrows

This commit is contained in:
TenPlus1 2017-05-28 20:49:50 +01:00
parent d6ff282917
commit 608a5178cf
1 changed files with 19 additions and 13 deletions

32
api.lua
View File

@ -1,9 +1,9 @@
-- Mobs Api (27th May 2017)
-- Mobs Api (28th May 2017)
mobs = {}
mobs.mod = "redo"
mobs.version = "20170527"
mobs.version = "20170528"
-- Intllib
@ -550,7 +550,7 @@ local do_env_damage = function(self)
-- what is mob standing in?
pos.y = pos.y + self.collisionbox[2] + 0.1 -- foot level
self.standing_in = node_ok(pos, "air").name
--print ("standing in " .. self.standing_in)
-- print ("standing in " .. self.standing_in)
-- don't fall when on ignore, just stand still
if self.standing_in == "ignore" then
@ -566,26 +566,30 @@ local do_env_damage = function(self)
pos.y = pos.y + 1
-- water
if self.water_damage ~= 0
and nodef.groups.water then
if nodef.groups.water then
self.health = self.health - self.water_damage
if self.water_damage ~= 0 then
effect(pos, 5, "bubble.png", nil, nil, 1, nil)
self.health = self.health - self.water_damage
if check_for_death(self, "water") then return end
effect(pos, 5, "bubble.png", nil, nil, 1, nil)
if check_for_death(self, "water") then return end
end
-- lava or fire
elseif self.lava_damage ~= 0
and (nodef.groups.lava
elseif (nodef.groups.lava
or self.standing_in == "fire:basic_flame"
or self.standing_in == "fire:permanent_flame") then
self.health = self.health - self.lava_damage
if self.lava_damage ~= 0 then
effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil)
self.health = self.health - self.lava_damage
if check_for_death(self, "lava") then return end
effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil)
if check_for_death(self, "lava") then return end
end
-- damage_per_second node check
elseif minetest.registered_nodes[self.standing_in].damage_per_second ~= 0 then
@ -2879,6 +2883,8 @@ function mobs:register_arrow(name, def)
automatic_face_movement_dir = def.rotate
and (def.rotate - (pi / 180)) or false,
on_activate = def.on_activate or nil,
on_step = def.on_step or function(self, dtime)
self.timer = self.timer + 1