From aea5c6f7bedbf3776758a61ee870e249cf0e70d5 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Tue, 16 Jan 2024 14:55:40 +0000 Subject: [PATCH] Make cactus be able to damage mobs --- mods/ITEMS/mcl_core/nodes_cactuscane.lua | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index 79b440f61..d7abdfdf7 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -136,3 +136,40 @@ minetest.register_node("mcl_core:reeds", { _mcl_blast_resistance = 0, _mcl_hardness = 0, }) + +local function cactus_damage_check(obj) + -- where am I? + local pos = obj:get_pos() + if pos then + -- Am I near a cactus? + local near = minetest.find_node_near(pos, 1, "mcl_core:cactus") + if not near and near ~= nil then + near = find_node_near({x=pos.x, y=pos.y-1, z=pos.z}, 1, "mcl_core:cactus") + end + if near then + -- Am I touching the cactus? If so, it hurts + local dist = vector.distance(pos, near) + local dist_feet = vector.distance({x=pos.x, y=pos.y-1, z=pos.z}, near) + if dist < 1.1 or dist_feet < 1.1 then + if obj:get_hp() > 0 then + mcl_util.deal_damage(obj, 1, {type = "cactus"}) + end + end + end + end +end + +local etime = 0 +minetest.register_globalstep(function(dtime) + etime = dtime + etime + if etime < 0.5 then return end + etime = 0 + --for _,pl in pairs(minetest.get_connected_players()) do + --cactus_damage_check(pl) -- Another player cactus damage check code is in mcl_playerplus + --end + for _,ent in pairs(minetest.luaentities) do + if ent.is_mob then + cactus_damage_check(ent.object) + end + end +end) \ No newline at end of file