Add hudbars and hbsprint support

Wearing leather armor increases sprint duration and wearing black
mithril armor increases health bar.
This commit is contained in:
Sys Quatre 2020-10-15 23:52:47 +02:00
parent 89cf7a85db
commit 8fe61c0bb6
3 changed files with 126 additions and 13 deletions

View File

@ -1,2 +1,4 @@
3d_armor
shields
hudbars?
hbsprint?

134
init.lua
View File

@ -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

3
mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = 3d_armor_classes
depends = 3d_armor,shields
optional_depends = hudbars,hbsprint