diff options
author | TenPlus1 <kinsellaja@yahoo.com> | 2017-05-28 20:49:50 +0100 |
---|---|---|
committer | TenPlus1 <kinsellaja@yahoo.com> | 2017-05-28 20:49:50 +0100 |
commit | 608a5178cf9345dc7c09a10beb457cef2b4dc532 (patch) | |
tree | 89488b9e3c64287ec278f8609a16bf41161bfa03 /api.lua | |
parent | d6ff2829178418fda28a2060da378b4e09be88ac (diff) |
fix damage_per_sec checks wit some nested if's, add custom on_activate to arrows
Diffstat (limited to 'api.lua')
-rw-r--r-- | api.lua | 32 |
1 files changed, 19 insertions, 13 deletions
@@ -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 |