From 8c002671c0e16f805788be2ea2966c4b6712bd2e Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 26 Mar 2021 18:24:08 +0100 Subject: [PATCH] make helmet protect from falling anvils --- mods/ENTITIES/mcl_falling_nodes/init.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index f173cbade..5b94373d9 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -1,5 +1,8 @@ local S = minetest.get_translator("mcl_falling_nodes") local dmes = minetest.get_modpath("mcl_death_messages") ~= nil +local has_mcl_armor = minetest.get_modpath("mcl_armor") + +local his_creative_enabled = minetest.is_creative_enabled local get_falling_depth = function(self) if not self._startpos then @@ -45,7 +48,16 @@ local deal_falling_damage = function(self, dtime) if hp < 0 then hp = 0 end - -- TODO: Reduce damage if wearing a helmet + -- Reduce damage if wearing a helmet + local inv = v:get_inventory() + local helmet = inv:get_stack("armor", 2) + if has_mcl_armor and not helmet:is_empty() then + hp = hp/4*3 + if not his_creative_enabled(name) then + helmet:add_wear(65535/helmet:get_definition().groups.mcl_armor_uses) --TODO: be sure damage is exactly like mc (informations are missing in the mc wiki) + inv:set_stack("armor", 2, helmet) + end + end local msg if minetest.get_item_group(self.node.name, "anvil") ~= 0 then msg = S("@1 was smashed by a falling anvil.", v:get_player_name()) @@ -71,6 +83,7 @@ local deal_falling_damage = function(self, dtime) hit = true end end + --TODO: reduce damage for mobs then they will be able to wear armor if not hit then table.insert(self._hit_mobs, v) local way = self._startpos.y - pos.y