Postpone map skipping until flag holder captures or loses the flag (#835)
* Postpone map skipping until flag holder captures or loses the flag * Wait 5s after flag drop
This commit is contained in:
parent
1568de3449
commit
243061957a
1 changed files with 31 additions and 13 deletions
|
@ -6,6 +6,16 @@ function ctf_match.register_on_skip_map(func)
|
|||
table.insert(ctf_match.registered_on_skip_map, func)
|
||||
end
|
||||
|
||||
function skip()
|
||||
for i = 1, #ctf_match.registered_on_skip_map do
|
||||
ctf_match.registered_on_skip_map[i]()
|
||||
end
|
||||
ctf_match.next()
|
||||
end
|
||||
|
||||
local can_vote_skip = false
|
||||
local voted_skip = false
|
||||
local flags_hold = 0
|
||||
function ctf_match.vote_next(name)
|
||||
local tcolor = ctf_colors.get_color(ctf.player(name)).css or "#FFFFFFFF"
|
||||
minetest.chat_send_all(minetest.colorize("#FFAA11", "Vote started by ") ..
|
||||
|
@ -22,10 +32,12 @@ function ctf_match.vote_next(name)
|
|||
if result == "yes" then
|
||||
minetest.chat_send_all("Vote to skip match passed, " ..
|
||||
#results.yes .. " to " .. #results.no)
|
||||
for i = 1, #ctf_match.registered_on_skip_map do
|
||||
ctf_match.registered_on_skip_map[i]()
|
||||
|
||||
can_vote_skip = false
|
||||
voted_skip = true
|
||||
if flags_hold <= 0 then
|
||||
skip()
|
||||
end
|
||||
ctf_match.next()
|
||||
else
|
||||
minetest.chat_send_all("Vote to skip match failed, " ..
|
||||
#results.no .. " to " .. #results.yes)
|
||||
|
@ -53,9 +65,8 @@ minetest.register_chatcommand("vote", {
|
|||
|
||||
local matchskip_time
|
||||
local matchskip_timer = 0
|
||||
local can_skip = false
|
||||
minetest.register_globalstep(function(dtime)
|
||||
if not can_skip then return end
|
||||
if not can_vote_skip then return end
|
||||
|
||||
matchskip_timer = matchskip_timer + dtime
|
||||
|
||||
|
@ -68,18 +79,25 @@ minetest.register_globalstep(function(dtime)
|
|||
end
|
||||
end)
|
||||
|
||||
local function prevent_autoskip()
|
||||
can_skip = false
|
||||
end
|
||||
|
||||
ctf.register_on_new_game(prevent_autoskip)
|
||||
ctf_flag.register_on_pick_up(prevent_autoskip)
|
||||
ctf.register_on_new_game(function()
|
||||
can_vote_skip = false
|
||||
voted_skip = false
|
||||
flags_hold = 0
|
||||
end)
|
||||
ctf_flag.register_on_pick_up(function()
|
||||
flags_hold = flags_hold + 1
|
||||
end)
|
||||
ctf_flag.register_on_drop(function()
|
||||
can_skip = true
|
||||
flags_hold = flags_hold - 1
|
||||
if voted_skip and flags_hold <= 0 then
|
||||
minetest.after(5, function()
|
||||
skip()
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
ctf_match.register_on_build_time_end(function()
|
||||
can_skip = true
|
||||
can_vote_skip = true
|
||||
matchskip_timer = 0
|
||||
-- Set to initial vote time
|
||||
matchskip_time = tonumber(minetest.settings:get("ctf_match.auto_skip_delay")) or 50 * 60
|
||||
|
|
Loading…
Reference in a new issue