diff --git a/mods/ctf/ctf_chat/init.lua b/mods/ctf/ctf_chat/init.lua index d730c74..b00283f 100644 --- a/mods/ctf/ctf_chat/init.lua +++ b/mods/ctf/ctf_chat/init.lua @@ -183,6 +183,7 @@ minetest.register_chatcommand("team", { minetest.register_chatcommand("join", { params = "team name", description = "Add to team", + privs = {ctf_team_mgr = true}, func = function(name, param) if ctf.join(name, param, false, name) then return true, "Joined team " .. param .. "!" diff --git a/mods/ctf/ctf_classes/api.lua b/mods/ctf/ctf_classes/api.lua index e474ddf..e8fe5f3 100644 --- a/mods/ctf/ctf_classes/api.lua +++ b/mods/ctf/ctf_classes/api.lua @@ -73,16 +73,18 @@ function ctf_classes.set(player, new_name) local meta = player:get_meta() local old_name = meta:get("ctf_classes:class") + if old_name == new_name then + return + end + meta:set_string("ctf_classes:class", new_name) ctf_classes.update(player) ctf_classes.set_cooldown(player:get_player_name()) - if old_name == nil or old_name ~= new_name then - local old = old_name and ctf_classes.__classes[old_name] - for i=1, #registered_on_changed do - registered_on_changed[i](player, old, new) - end + local old = old_name and ctf_classes.__classes[old_name] + for i=1, #registered_on_changed do + registered_on_changed[i](player, old, new) end end diff --git a/mods/ctf/ctf_classes/ranged.lua b/mods/ctf/ctf_classes/ranged.lua index 2abcffa..4939dda 100644 --- a/mods/ctf/ctf_classes/ranged.lua +++ b/mods/ctf/ctf_classes/ranged.lua @@ -73,6 +73,11 @@ check_grapple("shooter_hook:grapple_hook") -- Override grappling hook entity to check if player has flag before teleporting local old_grapple_step = minetest.registered_entities["shooter_hook:hook"].on_step minetest.registered_entities["shooter_hook:hook"].on_step = function(self, dtime, ...) + -- User left the game. Life is no longer worth living for this poor hook + if not self.user then + self.object:remove() + end + -- Remove entity if player has flag -- This is to prevent players from firing the hook, and then punching the flag if ctf_flag.has_flag(self.user) then