ctf_bandages: Add percentage-based healing (#609)

Remove HP hardcoding; heal up to a certain percentage of player's `hp_max` property.
This commit is contained in:
MinetestSam 2020-05-02 15:06:06 +05:30 committed by GitHub
parent 6238fb2540
commit 7c3d35bd03
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,9 +1,10 @@
--Inspired from Andrey's bandages mod --Inspired from Andrey's bandages mod
local healing_limit = 15 ctf_bandages = {}
ctf_bandages.heal_percent = 0.75 --Percentage of total HP to be healed
minetest.register_craftitem("ctf_bandages:bandage", { minetest.register_craftitem("ctf_bandages:bandage", {
description = "Bandage\n\nHeals teammates for 3-4 HP until HP is equal to "..healing_limit, description = "Bandage\n\nHeals teammates for 3-4 HP until HP is equal to 75% of the total HP",
inventory_image = "ctf_bandages_bandage.png", inventory_image = "ctf_bandages_bandage.png",
on_use = function(itemstack, player, pointed_thing) on_use = function(itemstack, player, pointed_thing)
if pointed_thing.type ~= "object" then if pointed_thing.type ~= "object" then
@ -17,10 +18,11 @@ minetest.register_craftitem("ctf_bandages:bandage", {
local name = player:get_player_name() local name = player:get_player_name()
if ctf.player(pname).team == ctf.player(name).team then if ctf.player(pname).team == ctf.player(name).team then
local hp = object:get_hp() local hp = object:get_hp()
if hp > 0 and hp < healing_limit then local limit = ctf_bandages.heal_percent * object:get_properties().hp_max
if hp > 0 and hp < limit then
hp = hp + math.random(3,4) hp = hp + math.random(3,4)
if hp > healing_limit then if hp > limit then
hp = healing_limit hp = limit
end end
object:set_hp(hp) object:set_hp(hp)
itemstack:take_item() itemstack:take_item()