diff --git a/depends.txt b/depends.txt index 1a376f0..9c36ca4 100644 --- a/depends.txt +++ b/depends.txt @@ -1,2 +1,4 @@ 3d_armor shields +hudbars? +hbsprint? diff --git a/init.lua b/init.lua index 207a528..b2c867d 100644 --- a/init.lua +++ b/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 diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..dfe0d6d --- /dev/null +++ b/mod.conf @@ -0,0 +1,3 @@ +name = 3d_armor_classes +depends = 3d_armor,shields +optional_depends = hudbars,hbsprint