mirror of
https://codeberg.org/tenplus1/mobs_redo.git
synced 2025-01-23 16:00:16 +01:00
add immune_to check to is_node_dangerous function
This commit is contained in:
parent
527fe8c2d5
commit
58792311c7
34
api.lua
34
api.lua
@ -19,7 +19,7 @@ end
|
|||||||
|
|
||||||
mobs = {
|
mobs = {
|
||||||
mod = "redo",
|
mod = "redo",
|
||||||
version = "20241127",
|
version = "20241128",
|
||||||
spawning_mobs = {},
|
spawning_mobs = {},
|
||||||
translate = S,
|
translate = S,
|
||||||
node_snow = has(minetest.registered_aliases["mapgen_snow"])
|
node_snow = has(minetest.registered_aliases["mapgen_snow"])
|
||||||
@ -914,7 +914,7 @@ end
|
|||||||
|
|
||||||
-- Returns true if node can deal damage to self
|
-- Returns true if node can deal damage to self
|
||||||
|
|
||||||
function mobs:is_node_dangerous(mob_object, nodename)
|
local function is_node_dangerous(mob_object, nodename)
|
||||||
|
|
||||||
if mob_object.water_damage > 0
|
if mob_object.water_damage > 0
|
||||||
and minetest.get_item_group(nodename, "water") ~= 0 then return true end
|
and minetest.get_item_group(nodename, "water") ~= 0 then return true end
|
||||||
@ -925,13 +925,26 @@ function mobs:is_node_dangerous(mob_object, nodename)
|
|||||||
if mob_object.fire_damage > 0
|
if mob_object.fire_damage > 0
|
||||||
and minetest.get_item_group(nodename, "fire") ~= 0 then return true end
|
and minetest.get_item_group(nodename, "fire") ~= 0 then return true end
|
||||||
|
|
||||||
if minetest.registered_nodes[nodename].damage_per_second > 0 then return true end
|
local def = minetest.registered_nodes[nodename]
|
||||||
|
|
||||||
return false
|
if mob_object.node_damage and def.damage_per_second > 0 then
|
||||||
|
|
||||||
|
-- check for node immunity or special damage
|
||||||
|
local damage = def.damage_per_second
|
||||||
|
|
||||||
|
for n = 1, #mob_object.immune_to do
|
||||||
|
|
||||||
|
if mob_object.immune_to[n][1] == nodename then
|
||||||
|
damage = mob_object.immune_to[n][2] or 0 ; break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if damage > 0 then return true end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function is_node_dangerous(mob_object, nodename)
|
function mobs:is_node_dangerous(mob_object, nodename)
|
||||||
return mobs:is_node_dangerous(mob_object, nodename)
|
return is_node_dangerous(mob_object, nodename)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- is mob facing a cliff
|
-- is mob facing a cliff
|
||||||
@ -1045,10 +1058,7 @@ function mob_class:do_env_damage()
|
|||||||
for n = 1, #self.immune_to do
|
for n = 1, #self.immune_to do
|
||||||
|
|
||||||
if self.immune_to[n][1] == self.standing_in then
|
if self.immune_to[n][1] == self.standing_in then
|
||||||
|
damage = self.immune_to[n][2] or 0 ; break
|
||||||
damage = self.immune_to[n][2] or 0
|
|
||||||
|
|
||||||
break
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2725,9 +2735,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir, damage)
|
|||||||
|
|
||||||
if self.immune_to[n][1] == hit_item then
|
if self.immune_to[n][1] == hit_item then
|
||||||
|
|
||||||
damage = self.immune_to[n][2] or 0
|
damage = self.immune_to[n][2] or 0 ; break
|
||||||
|
|
||||||
break
|
|
||||||
|
|
||||||
-- if "all" then no tools deal damage unless it's specified in list
|
-- if "all" then no tools deal damage unless it's specified in list
|
||||||
elseif self.immune_to[n][1] == "all" then
|
elseif self.immune_to[n][1] == "all" then
|
||||||
|
Loading…
Reference in New Issue
Block a user