41 lines
1.1 KiB
Lua
41 lines
1.1 KiB
Lua
ctf.register_on_init(function()
|
|
ctf._set("endgame.destroy_team", false)
|
|
ctf._set("endgame.break_alliances", true)
|
|
ctf._set("endgame.reset_on_winner", false)
|
|
end)
|
|
|
|
ctf_flag.register_on_capture(function(attname, flag)
|
|
if not ctf.setting("endgame.destroy_team") then
|
|
return
|
|
end
|
|
|
|
local fl_team = ctf.team(flag.team)
|
|
if fl_team and #fl_team.flags == 0 then
|
|
ctf.action("endgame", flag.team .. " was defeated.")
|
|
ctf.remove_team(flag.team)
|
|
minetest.chat_send_all(flag.team .. " has been defeated!")
|
|
end
|
|
|
|
if ctf.setting("endgame.reset_on_winner") then
|
|
local winner = nil
|
|
for name, team in pairs(ctf.teams) do
|
|
if winner then
|
|
return
|
|
end
|
|
winner = name
|
|
end
|
|
|
|
-- Only one team left!
|
|
ctf.action("endgame", winner .. " won!")
|
|
minetest.chat_send_all("Team " .. winner .. " won!")
|
|
minetest.chat_send_all("Resetting the map, this may take a few moments...")
|
|
minetest.after(0.5, function()
|
|
minetest.delete_area(vector.new(-16*4, -16*4, -16*4), vector.new(16*4, 16*4, 16*4))
|
|
|
|
minetest.after(1, function()
|
|
ctf.reset()
|
|
end)
|
|
end)
|
|
end
|
|
end)
|