From 608a5178cf9345dc7c09a10beb457cef2b4dc532 Mon Sep 17 00:00:00 2001 From: TenPlus1 Date: Sun, 28 May 2017 20:49:50 +0100 Subject: [PATCH] fix damage_per_sec checks wit some nested if's, add custom on_activate to arrows --- api.lua | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/api.lua b/api.lua index 246cf15..0516668 100644 --- a/api.lua +++ b/api.lua @@ -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