From 43b7d2c86c0a0a7c6f1b8f7d6c35cd936de752c2 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 28 Nov 2015 01:21:49 +0000 Subject: [PATCH] Add prepick_up and precapture callbacks to ctf_flag to allow cancelling --- ctf_flag/api.lua | 16 ++++++++++++++++ ctf_flag/flag_func.lua | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/ctf_flag/api.lua b/ctf_flag/api.lua index 8d5411b..8c45fea 100644 --- a/ctf_flag/api.lua +++ b/ctf_flag/api.lua @@ -14,6 +14,22 @@ function ctf_flag.register_on_pick_up(func) table.insert(ctf_flag.registered_on_pick_up, func) end +ctf_flag.registered_on_precapture = {} +function ctf_flag.register_on_precapture(func) + if ctf._mt_loaded then + error("You can't register callbacks at game time!") + end + table.insert(ctf_flag.registered_on_precapture, func) +end + +ctf_flag.registered_on_prepick_up = {} +function ctf_flag.register_on_prepick_up(func) + if ctf._mt_loaded then + error("You can't register callbacks at game time!") + end + table.insert(ctf_flag.registered_on_prepick_up, func) +end + function ctf_flag.collect_claimed() local claimed = {} for _, team in pairs(ctf.teams) do diff --git a/ctf_flag/flag_func.lua b/ctf_flag/flag_func.lua index d3127c8..74267d5 100644 --- a/ctf_flag/flag_func.lua +++ b/ctf_flag/flag_func.lua @@ -10,6 +10,12 @@ local function do_capture(attname, flag, returned) if ctf.setting("flag.capture_take") and not returned then + for i = 1, #ctf_flag.registered_on_prepick_up do + if not ctf_flag.registered_on_prepick_up[i](attname, flag) then + return + end + end + minetest.chat_send_all(flag_name.." has been picked up by ".. attname.." (team "..attacker.team..")") @@ -39,6 +45,12 @@ local function do_capture(attname, flag, returned) ctf_flag.registered_on_pick_up[i](attname, flag) end else + for i = 1, #ctf_flag.registered_on_prepick_up do + if not ctf_flag.registered_on_precapture[i](attname, flag) then + return + end + end + minetest.chat_send_all(flag_name.." has been captured ".. " by "..attname.." (team "..attacker.team..")")