capturetheflag/mods/ctf/ctf_bandages/init.lua
Lars Müller 87f7212f43
Replace chat with HUD events, add BS 5 palette (#848)
* Replace chat with HUD events, add BS 5 palette

* Use HUD events for paxel too

* Move paxel_stop function up
2021-03-29 14:00:46 -07:00

62 lines
1.6 KiB
Lua

--Inspired from Andrey's bandages mod
ctf_bandages = {}
ctf_bandages.heal_percent = 0.75 -- Percentage of total HP to be healed
minetest.register_craftitem("ctf_bandages:bandage", {
description = "Bandage\n\n" ..
"Heals teammates for 3-4 HP until target's HP is equal to " ..
ctf_bandages.heal_percent * 100 .. "% of their maximum HP",
inventory_image = "ctf_bandages_bandage.png",
stack_max = 1,
on_use = function(itemstack, player, pointed_thing)
if pointed_thing.type ~= "object" then return end
local object = pointed_thing.ref
if not object:is_player() then return end
local pname = object:get_player_name()
local name = player:get_player_name()
if ctf.player(pname).team == ctf.player(name).team then
local hp = object:get_hp()
local limit = ctf_bandages.heal_percent * object:get_properties().hp_max
if hp <= 0 then
hud_event.new(name, {
name = "ctf_bandages:dead",
color = "warning",
value = pname .. " is dead!",
})
elseif hp >= limit then
hud_event.new(name, {
name = "ctf_bandages:limit",
color = "warning",
value = pname .. " already has " .. limit .. " HP!",
})
else
local hp_add = math.random(3,4)
kill_assist.add_heal_assist(pname, hp_add)
hp = hp + hp_add
if hp > limit then
hp = limit
end
object:set_hp(hp)
hud_event.new(pname, {
name = "ctf_bandages:heal",
color = 0xC1FF44,
value = name .. " healed you!",
})
end
else
hud_event.new(name, {
name = "ctf_bandages:team",
color = "warning",
value = pname .. " isn't in your team!",
})
end
end,
})