forked from mff/3d_armor_classes
Add hudbars and hbsprint support
Wearing leather armor increases sprint duration and wearing black mithril armor increases health bar.
This commit is contained in:
parent
89cf7a85db
commit
8fe61c0bb6
@ -1,2 +1,4 @@
|
||||
3d_armor
|
||||
shields
|
||||
hudbars?
|
||||
hbsprint?
|
||||
|
134
init.lua
134
init.lua
@ -26,6 +26,35 @@ for material, _ in pairs(armor.materials) do
|
||||
end
|
||||
end
|
||||
|
||||
-- Function to change max stamina if hbsprint is present
|
||||
local mod_hbsprint = minetest.get_modpath("hbsprint") ~= nil
|
||||
local function change_stamina_max(player, value)
|
||||
if mod_hbsprint then
|
||||
local new_max = value + hb.get_hudtable("stamina").hudstate[player:get_player_name()].max
|
||||
local val = player:get_meta():get_float("hbsprint:stamina")
|
||||
if val > new_max then
|
||||
player:get_meta():set_float("hbsprint:stamina", new_max)
|
||||
hb.change_hudbar(player, "stamina", new_max, new_max)
|
||||
elseif val < new_max then
|
||||
hb.unhide_hudbar(player, "stamina")
|
||||
hb.change_hudbar(player, "stamina", nil, new_max)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local mod_hb = minetest.get_modpath("hudbars") ~= nil
|
||||
local function change_hp_max(player, value)
|
||||
local hp_max = player:get_properties().hp_max
|
||||
local hp = player:get_hp()
|
||||
local new_max = hp_max + value
|
||||
if hp > new_max then
|
||||
player:set_hp(new_max, {type="set_hp", from="mod"})
|
||||
if mod_hb then
|
||||
hb.change_hudbar(player, "health", new_max, new_max)
|
||||
end
|
||||
end
|
||||
player:set_properties({hp_max = new_max})
|
||||
end
|
||||
|
||||
-- Reinforced Leather
|
||||
minetest.register_craftitem(":3d_armor:reinforcedleather", {
|
||||
@ -50,7 +79,13 @@ if armor.materials.reinforcedleather then
|
||||
inventory_image = "3d_armor_inv_helmet_reinforcedleather.png",
|
||||
groups = {armor_head=1, armor_use=40, physics_speed=0.02, physics_gravity=-0.02},
|
||||
armor_groups = {fleshy=6},
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=2}
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=2},
|
||||
on_equip = function(player, index, stack)
|
||||
change_stamina_max(player, 2)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_stamina_max(player, -2)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register chestplates :
|
||||
@ -59,7 +94,14 @@ if armor.materials.reinforcedleather then
|
||||
inventory_image = "3d_armor_inv_chestplate_reinforcedleather.png",
|
||||
groups = {armor_torso = 1, armor_use = 40, physics_speed=0.08, physics_gravity=-0.08},
|
||||
armor_groups = {fleshy=11},
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=2}
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=2},
|
||||
on_equip = function(player, index, stack)
|
||||
change_stamina_max(player, 8)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_stamina_max(player, -8)
|
||||
end,
|
||||
|
||||
})
|
||||
|
||||
-- Register leggings :
|
||||
@ -68,7 +110,13 @@ if armor.materials.reinforcedleather then
|
||||
inventory_image = "3d_armor_inv_leggings_reinforcedleather.png",
|
||||
groups = {armor_legs = 1, armor_use = 40, physics_speed=0.06, physics_gravity=-0.06},
|
||||
armor_groups = {fleshy=11},
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=2}
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=2},
|
||||
on_equip = function(player, index, stack)
|
||||
change_stamina_max(player, 6)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_stamina_max(player, -6)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register boots :
|
||||
@ -77,7 +125,13 @@ if armor.materials.reinforcedleather then
|
||||
inventory_image = "3d_armor_inv_boots_reinforcedleather.png",
|
||||
groups = {armor_feet = 1, armor_use = 40, physics_speed=0.02, physics_gravity=-0.02},
|
||||
armor_groups = {fleshy=6},
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=3}
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
|
||||
on_equip = function(player, index, stack)
|
||||
change_stamina_max(player, 2)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_stamina_max(player, -2)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
@ -105,7 +159,13 @@ if armor.materials.hardenedleather then
|
||||
inventory_image = "3d_armor_inv_helmet_hardenedleather.png",
|
||||
groups = {armor_head = 1, armor_use = 250, physics_speed=0.01, physics_gravity=-0.01},
|
||||
armor_groups = {fleshy=5},
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
|
||||
on_equip = function(player, index, stack)
|
||||
change_stamina_max(player, 1)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_stamina_max(player, -1)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register chestplates :
|
||||
@ -114,7 +174,13 @@ if armor.materials.hardenedleather then
|
||||
inventory_image = "3d_armor_inv_chestplate_hardenedleather.png",
|
||||
groups = {armor_torso = 1, armor_use = 250, physics_speed=0.04, physics_gravity=-0.04},
|
||||
armor_groups = {fleshy=8},
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
|
||||
on_equip = function(player, index, stack)
|
||||
change_stamina_max(player, 4)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_stamina_max(player, -4)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register leggings :
|
||||
@ -123,7 +189,13 @@ if armor.materials.hardenedleather then
|
||||
inventory_image = "3d_armor_inv_leggings_hardenedleather.png",
|
||||
groups = {armor_legs = 1, armor_use = 250, physics_speed=0.03, physics_gravity=-0.03},
|
||||
armor_groups = {fleshy=8},
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
|
||||
on_equip = function(player, index, stack)
|
||||
change_stamina_max(player, 3)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_stamina_max(player, -3)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register boots :
|
||||
@ -132,7 +204,13 @@ if armor.materials.hardenedleather then
|
||||
inventory_image = "3d_armor_inv_boots_hardenedleather.png",
|
||||
groups = {armor_feet = 1, armor_use = 250, physics_speed=0.01, physics_gravity=-0.01},
|
||||
armor_groups = {fleshy=5},
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2}
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
|
||||
on_equip = function(player, index, stack)
|
||||
change_stamina_max(player, 1)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_stamina_max(player, -1)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
@ -160,7 +238,13 @@ if armor.materials.blackmithril then
|
||||
inventory_image = "3d_armor_inv_helmet_blackmithril.png",
|
||||
groups = {armor_head = 1, armor_heal = 15, armor_use = 40},
|
||||
armor_groups = {fleshy=16},
|
||||
damage_groups = {cracky=2, snappy=1, level=3}
|
||||
damage_groups = {cracky=2, snappy=1, level=3},
|
||||
on_equip = function(player, index, stack)
|
||||
change_hp_max(player, 1)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_hp_max(player, -1)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register chestplates :
|
||||
@ -169,7 +253,13 @@ if armor.materials.blackmithril then
|
||||
inventory_image = "3d_armor_inv_chestplate_blackmithril.png",
|
||||
groups = {armor_torso = 1, armor_heal = 15, armor_use = 40},
|
||||
armor_groups = {fleshy=22},
|
||||
damage_groups = {cracky=2, snappy=1, level=3}
|
||||
damage_groups = {cracky=2, snappy=1, level=3},
|
||||
on_equip = function(player, index, stack)
|
||||
change_hp_max(player, 5)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_hp_max(player, -5)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register leggings :
|
||||
@ -178,7 +268,13 @@ if armor.materials.blackmithril then
|
||||
inventory_image = "3d_armor_inv_leggings_blackmithril.png",
|
||||
groups = {armor_legs = 1, armor_heal = 15, armor_use = 40},
|
||||
armor_groups = {fleshy=22},
|
||||
damage_groups = {cracky=2, snappy=1, level=3}
|
||||
damage_groups = {cracky=2, snappy=1, level=3},
|
||||
on_equip = function(player, index, stack)
|
||||
change_hp_max(player, 3)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_hp_max(player, -3)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register boots :
|
||||
@ -187,7 +283,13 @@ if armor.materials.blackmithril then
|
||||
inventory_image = "3d_armor_inv_boots_blackmithril.png",
|
||||
groups = {armor_feet = 1, armor_heal = 15, armor_use = 40},
|
||||
armor_groups = {fleshy=16},
|
||||
damage_groups = {cracky=2, snappy=1, level=3}
|
||||
damage_groups = {cracky=2, snappy=1, level=3},
|
||||
on_equip = function(player, index, stack)
|
||||
change_hp_max(player, 1)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_hp_max(player, -1)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Register shield :
|
||||
@ -198,7 +300,13 @@ if armor.materials.blackmithril then
|
||||
armor_groups = {fleshy=16},
|
||||
damage_groups = {cracky=2, snappy=1, level=3},
|
||||
reciprocate_damage = true,
|
||||
})
|
||||
on_equip = function(player, index, stack)
|
||||
change_hp_max(player, 5)
|
||||
end,
|
||||
on_unequip = function(player, index, stack)
|
||||
change_hp_max(player, -5)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
for k, v in pairs(armor.materials) do
|
||||
|
Loading…
Reference in New Issue
Block a user