mirror of
https://github.com/minetest-mods/3d_armor.git
synced 2024-11-29 15:33:44 +01:00
Respect flammable group when fire is protection enabled
This commit is contained in:
parent
a76a35f177
commit
7cfd744ff3
@ -103,7 +103,7 @@ armor:register_armor("mod_name:speed_boots", {
|
|||||||
inventory_image = "mod_name_speed_boots_inv.png",
|
inventory_image = "mod_name_speed_boots_inv.png",
|
||||||
texture = "mod_name_speed_boots.png",
|
texture = "mod_name_speed_boots.png",
|
||||||
preview = "mod_name_speed_boots_preview.png",
|
preview = "mod_name_speed_boots_preview.png",
|
||||||
groups = {armor_feet=1, armor_use=500, physics_speed=1.2},
|
groups = {armor_feet=1, armor_use=500, physics_speed=1.2, flammable=1},
|
||||||
armor_groups = {fleshy=10, radiation=10},
|
armor_groups = {fleshy=10, radiation=10},
|
||||||
damage_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1},
|
damage_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1},
|
||||||
reciprocate_damage = true,
|
reciprocate_damage = true,
|
||||||
@ -126,7 +126,7 @@ Default groups:
|
|||||||
Elements: armor_head, armor_torso, armor_legs, armor_feet
|
Elements: armor_head, armor_torso, armor_legs, armor_feet
|
||||||
Attributes: armor_heal, armor_fire, armor_water
|
Attributes: armor_heal, armor_fire, armor_water
|
||||||
Physics: physics_jump, physics_speed, physics_gravity
|
Physics: physics_jump, physics_speed, physics_gravity
|
||||||
Durability: armor_use
|
Durability: armor_use, flammable
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
@ -150,7 +150,8 @@ Notes:
|
|||||||
|
|
||||||
`on_punch` is called every time a player is punched or takes damage, `hitter`,
|
`on_punch` is called every time a player is punched or takes damage, `hitter`,
|
||||||
`time_from_last_punch` and `tool_capabilities` can be `nil` and will be in the
|
`time_from_last_punch` and `tool_capabilities` can be `nil` and will be in the
|
||||||
case of fall damage, etc. Return `false` to override armor damage effects.
|
case of fall damage, etc. When fire protection is enabled, hitter == "fire"
|
||||||
|
in the event of fire damage. Return `false` to override armor damage effects.
|
||||||
When armor is destroyed `stack` will contain a copy of the previous stack.
|
When armor is destroyed `stack` will contain a copy of the previous stack.
|
||||||
|
|
||||||
Global Callbacks:
|
Global Callbacks:
|
||||||
|
@ -284,7 +284,7 @@ armor.punch = function(self, player, hitter, time_from_last_punch, tool_capabili
|
|||||||
local def = stack:get_definition() or {}
|
local def = stack:get_definition() or {}
|
||||||
if type(def.on_punch) == "function" then
|
if type(def.on_punch) == "function" then
|
||||||
damage = def.on_punch(player, hitter, time_from_last_punch,
|
damage = def.on_punch(player, hitter, time_from_last_punch,
|
||||||
tool_capabilities) ~= false
|
tool_capabilities) ~= false and damage == true
|
||||||
end
|
end
|
||||||
if damage == true and tool_capabilities then
|
if damage == true and tool_capabilities then
|
||||||
local damage_groups = def.damage_groups or default_groups
|
local damage_groups = def.damage_groups or default_groups
|
||||||
@ -325,6 +325,9 @@ armor.punch = function(self, player, hitter, time_from_last_punch, tool_capabili
|
|||||||
recip = false
|
recip = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if damage == true and hitter == "fire" then
|
||||||
|
damage = minetest.get_item_group(name, "flammable") > 0
|
||||||
|
end
|
||||||
if damage == true then
|
if damage == true then
|
||||||
local old_stack = ItemStack(stack)
|
local old_stack = ItemStack(stack)
|
||||||
stack:add_wear(use)
|
stack:add_wear(use)
|
||||||
|
@ -56,21 +56,21 @@ if armor.materials.wood then
|
|||||||
armor:register_armor("3d_armor:helmet_wood", {
|
armor:register_armor("3d_armor:helmet_wood", {
|
||||||
description = S("Wood Helmet"),
|
description = S("Wood Helmet"),
|
||||||
inventory_image = "3d_armor_inv_helmet_wood.png",
|
inventory_image = "3d_armor_inv_helmet_wood.png",
|
||||||
groups = {armor_head=1, armor_heal=0, armor_use=2000},
|
groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
|
||||||
armor_groups = {fleshy=5},
|
armor_groups = {fleshy=5},
|
||||||
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
||||||
})
|
})
|
||||||
armor:register_armor("3d_armor:chestplate_wood", {
|
armor:register_armor("3d_armor:chestplate_wood", {
|
||||||
description = S("Wood Chestplate"),
|
description = S("Wood Chestplate"),
|
||||||
inventory_image = "3d_armor_inv_chestplate_wood.png",
|
inventory_image = "3d_armor_inv_chestplate_wood.png",
|
||||||
groups = {armor_torso=1, armor_heal=0, armor_use=2000},
|
groups = {armor_torso=1, armor_heal=0, armor_use=2000, flammable=1},
|
||||||
armor_groups = {fleshy=10},
|
armor_groups = {fleshy=10},
|
||||||
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
||||||
})
|
})
|
||||||
armor:register_armor("3d_armor:leggings_wood", {
|
armor:register_armor("3d_armor:leggings_wood", {
|
||||||
description = S("Wood Leggings"),
|
description = S("Wood Leggings"),
|
||||||
inventory_image = "3d_armor_inv_leggings_wood.png",
|
inventory_image = "3d_armor_inv_leggings_wood.png",
|
||||||
groups = {armor_legs=1, armor_heal=0, armor_use=2000},
|
groups = {armor_legs=1, armor_heal=0, armor_use=2000, flammable=1},
|
||||||
armor_groups = {fleshy=5},
|
armor_groups = {fleshy=5},
|
||||||
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
||||||
})
|
})
|
||||||
@ -79,7 +79,7 @@ if armor.materials.wood then
|
|||||||
inventory_image = "3d_armor_inv_boots_wood.png",
|
inventory_image = "3d_armor_inv_boots_wood.png",
|
||||||
armor_groups = {fleshy=5},
|
armor_groups = {fleshy=5},
|
||||||
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
||||||
groups = {armor_feet=1, armor_heal=0, armor_use=2000},
|
groups = {armor_feet=1, armor_heal=0, armor_use=2000, flammable=1},
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -300,7 +300,7 @@ minetest.register_on_player_hpchange(function(player, hp_change)
|
|||||||
hp_change = 0
|
hp_change = 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- check if armor damage was handled by on_punchplayer
|
-- check if armor damage was handled by fire or on_punchplayer
|
||||||
local time = last_punch_time[name] or 0
|
local time = last_punch_time[name] or 0
|
||||||
if time == 0 or time + 1 < minetest.get_gametime() then
|
if time == 0 or time + 1 < minetest.get_gametime() then
|
||||||
armor:punch(player)
|
armor:punch(player)
|
||||||
@ -343,6 +343,7 @@ if armor.config.water_protect == true or armor.config.fire_protect == true then
|
|||||||
end
|
end
|
||||||
-- fire protection
|
-- fire protection
|
||||||
if armor.config.fire_protect == true then
|
if armor.config.fire_protect == true then
|
||||||
|
local fire_damage = true
|
||||||
pos.y = pos.y + 1.4 -- head level
|
pos.y = pos.y + 1.4 -- head level
|
||||||
local node_head = minetest.get_node(pos).name
|
local node_head = minetest.get_node(pos).name
|
||||||
pos.y = pos.y - 1.2 -- feet level
|
pos.y = pos.y - 1.2 -- feet level
|
||||||
@ -351,6 +352,11 @@ if armor.config.water_protect == true or armor.config.fire_protect == true then
|
|||||||
for _, row in pairs(armor.fire_nodes) do
|
for _, row in pairs(armor.fire_nodes) do
|
||||||
-- check fire protection, if not enough then get hurt
|
-- check fire protection, if not enough then get hurt
|
||||||
if row[1] == node_head or row[1] == node_feet then
|
if row[1] == node_head or row[1] == node_feet then
|
||||||
|
if fire_damage == true then
|
||||||
|
armor:punch(player, "fire")
|
||||||
|
last_punch_time[name] = minetest.get_gametime()
|
||||||
|
fire_damage = false
|
||||||
|
end
|
||||||
if hp > 0 and armor.def[name].fire < row[2] then
|
if hp > 0 and armor.def[name].fire < row[2] then
|
||||||
hp = hp - row[3] * armor.config.update_time
|
hp = hp - row[3] * armor.config.update_time
|
||||||
player:set_hp(hp)
|
player:set_hp(hp)
|
||||||
|
@ -42,7 +42,7 @@ if armor.materials.wood then
|
|||||||
armor:register_armor("shields:shield_wood", {
|
armor:register_armor("shields:shield_wood", {
|
||||||
description = S("Wooden Shield"),
|
description = S("Wooden Shield"),
|
||||||
inventory_image = "shields_inv_shield_wood.png",
|
inventory_image = "shields_inv_shield_wood.png",
|
||||||
groups = {armor_shield=1, armor_heal=0, armor_use=2000},
|
groups = {armor_shield=1, armor_heal=0, armor_use=2000, flammable=1},
|
||||||
armor_groups = {fleshy=5},
|
armor_groups = {fleshy=5},
|
||||||
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
||||||
reciprocate_damage = true,
|
reciprocate_damage = true,
|
||||||
|
Loading…
Reference in New Issue
Block a user