capturetheflag/mods/ctf/ctf_classes/flags.lua
ANAND cafd16878e
ctf_classes: Implement cooldown after class change (#637)
Defaults to a 30s cooldown. Players with ctf_admin priv are exempt from this restriction.
2020-06-04 22:15:13 +05:30

37 lines
1,013 B
Lua

ctf_flag.register_on_pick_up(function(name)
ctf_classes.update(minetest.get_player_by_name(name))
end)
ctf_flag.register_on_drop(function(name)
ctf_classes.update(minetest.get_player_by_name(name))
end)
local old_func = ctf_flag.on_punch
local function on_punch(pos, node, player, ...)
local class = ctf_classes.get(player)
if not class.properties.can_capture then
local pname = player:get_player_name()
local flag = ctf_flag.get(pos)
local team = ctf.player(pname).team
if flag and flag.team and team and team ~= flag.team then
minetest.chat_send_player(pname,
"You need to change classes to capture the flag!")
return
end
end
return old_func(pos, node, player, ...)
end
local function show(_, _, player)
local can_change, reason = ctf_classes.can_change(player)
if not can_change then
minetest.chat_send_player(player:get_player_name(), reason)
else
ctf_classes.show_gui(player:get_player_name(), player)
end
end
ctf_flag.on_rightclick = show
ctf_flag.on_punch = on_punch