From 2d9cfd8e11e3be3f0d84a86cfe1bb66eb7bb6b4e Mon Sep 17 00:00:00 2001 From: oof2win2 Date: Sat, 12 Nov 2022 22:31:36 +0100 Subject: [PATCH] feat: change future to assign roles to table --- expcore/roles.lua | 4 +++- modules/control/jail.lua | 21 ++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/expcore/roles.lua b/expcore/roles.lua index b6d1000d..a7ec1a9e 100644 --- a/expcore/roles.lua +++ b/expcore/roles.lua @@ -374,7 +374,9 @@ function Roles.assign_player(player, roles, by_player_name, skip_checks, silent) if Roles.player_has_role(player, "Jail") then local to_assign = JailOldRole.old_roles[valid_player.name] or {} for _, role in ipairs(roles) do - table.insert(to_assign, role) + if not to_assign[role] then + to_assign[role] = 1 + end end JailOldRole.old_roles[valid_player.name] = to_assign return diff --git a/modules/control/jail.lua b/modules/control/jail.lua index 93a02734..120ad2c8 100644 --- a/modules/control/jail.lua +++ b/modules/control/jail.lua @@ -18,11 +18,10 @@ local Roles = require 'expcore.roles' --- @dep expcore.roles local Game = require 'utils.game' --- @dep utils.game -local Global = require 'utils.global' --- @dep utils.global local JailOldRole = require 'modules.control.jail_old_role' --- @dep modules.control.jail_old_role local valid_player = Game.get_player_from_any -local assign_roles = Roles.assign_player +local assign_role = Roles.assign_player local unassign_roles = Roles.unassign_player local has_role = Roles.player_has_role local get_roles = Roles.get_player_roles @@ -44,12 +43,6 @@ local Jail = { } } -local old_roles = Jail.old_roles -Global.register(old_roles, function(tbl) - Jail.old_roles = tbl - old_roles = tbl -end) - --- Used to emit the jail related events -- @tparam number event the name of the event that will be emited -- @tparam LuaPlayer player the player who is being acted on @@ -90,7 +83,11 @@ function Jail.jail_player(player, by_player_name, reason) if has_role(player, 'Jail') then return end local roles = get_roles(player) - JailOldRole.old_roles[player.name] = roles + local old_roles = {} + for _, role in ipairs(roles) do + old_roles[role.name] = 1 + end + JailOldRole.old_roles[player.name] = old_roles player.walking_state = { walking = false } player.riding_state = { acceleration = defines.riding.acceleration.nothing, direction = player.riding_state.direction } @@ -99,7 +96,7 @@ function Jail.jail_player(player, by_player_name, reason) player.picking_state = false player.repair_state = { repairing = false } - assign_roles(player, 'Jail', by_player_name, nil, true) + assign_role(player, 'Jail', by_player_name, nil, true) unassign_roles(player, roles, by_player_name, nil, true) event_emit(Jail.events.on_player_jailed, player, by_player_name, reason) @@ -120,7 +117,9 @@ function Jail.unjail_player(player, by_player_name) local roles = JailOldRole.old_roles[player.name] or {} unassign_roles(player, 'Jail', by_player_name, nil, true) - assign_roles(player, roles, by_player_name, nil, true) + for role, _ in pairs(roles) do + assign_role(player, role, by_player_name, nil, true) + end event_emit(Jail.events.on_player_unjailed, player, by_player_name)