mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 03:25:23 +09:00
Refactor legacy addons into Clusterio format (#413)
* Refactor custom start * Refactor afk kick * Fix use of assert get player * Refactor chat popup * Refactor chat auto reply * Refactor help bubbles * Refactor damage popups * Refactor death markers * Refactor deconstruction log * Remove FAGC logging * Refactor discord alerts * Refactor insert pickup * Refactor inventory clear * Refactor extra logging * Refactor nuke protection * Refactor pollution grading * Refactor protection jail * Refactor report jail * Refactor mine depletion * Refactor degrading tiles * Refactor station auto name * Refactor spawn area * Refactor fast deconstruction * Bug Fixes
This commit is contained in:
47
exp_scenario/module/control/protection_jail.lua
Normal file
47
exp_scenario/module/control/protection_jail.lua
Normal file
@@ -0,0 +1,47 @@
|
||||
--[[-- Control - Projection Jail
|
||||
When a player triggers protection multiple times they are automatically jailed
|
||||
]]
|
||||
|
||||
local ExpUtil = require("modules/exp_util")
|
||||
local Storage = require("modules/exp_util/storage")
|
||||
local Jail = require("modules.exp_legacy.modules.control.jail")
|
||||
local Protection = require("modules.exp_legacy.modules.control.protection")
|
||||
|
||||
local format_player_name = ExpUtil.format_player_name_locale
|
||||
|
||||
--- Stores how many times the repeat violation was triggered
|
||||
--- @type table<number, number>
|
||||
local repeat_count = {}
|
||||
Storage.register(repeat_count, function(tbl)
|
||||
repeat_count = tbl
|
||||
end)
|
||||
|
||||
--- When a protection is triggered increment their counter and jail if needed
|
||||
local function on_repeat_violation(event)
|
||||
local player = assert(game.get_player(event.player_index))
|
||||
|
||||
-- Increment the counter
|
||||
local count = (repeat_count[player.index] or 0) + 1
|
||||
repeat_count[player.index] = count
|
||||
|
||||
-- Jail if needed
|
||||
if count >= 3 then
|
||||
Jail.jail_player(player, "<protection>", "Removed too many protected entities, please wait for a moderator.")
|
||||
game.print{ "exp_protection-jail.chat-jailed", format_player_name(player) }
|
||||
end
|
||||
end
|
||||
|
||||
--- Clear the counter when they leave the game (stops a build up of data)
|
||||
--- @param event EventData.on_player_left_game
|
||||
local function on_player_left_game(event)
|
||||
repeat_count[event.player_index] = nil
|
||||
end
|
||||
|
||||
local e = defines.events
|
||||
|
||||
return {
|
||||
events = {
|
||||
[Protection.events.on_repeat_violation] = on_repeat_violation,
|
||||
[e.on_player_left_game] = on_player_left_game,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user