From 418bca8e1282b4996ab4d94efde21f6d680d9b52 Mon Sep 17 00:00:00 2001
From: Yona-TYT <yonatan.el.amigo@gmail.com>
Date: Mon, 9 Dec 2024 20:12:47 -0400
Subject: [PATCH] Add clear_player_rules

---
 src/simutrans/dataobj/scenario.cc        | 7 +++++++
 src/simutrans/dataobj/scenario.h         | 6 ++++++
 src/simutrans/script/api/api_scenario.cc | 8 ++++++++
 3 files changed, 21 insertions(+)

diff --git a/src/simutrans/dataobj/scenario.cc b/src/simutrans/dataobj/scenario.cc
index 413752455..f60114d65 100644
--- a/src/simutrans/dataobj/scenario.cc
+++ b/src/simutrans/dataobj/scenario.cc
@@ -504,6 +504,13 @@ void scenario_t::clear_rules()
 }
 
 
+void scenario_t::clear_player_rules(uint8 player_nr)
+{
+	clear_ptr_vector(forbidden_tools[player_nr]);
+	need_toolbar_update = true;
+}
+
+
 bool scenario_t::is_tool_allowed(const player_t* player, uint16 tool_id, sint16 wt, const char* param)
 {
 	if (what_scenario != SCRIPTED  &&  what_scenario != SCRIPTED_NETWORK) {
diff --git a/src/simutrans/dataobj/scenario.h b/src/simutrans/dataobj/scenario.h
index af50f99b9..adf3bd185 100644
--- a/src/simutrans/dataobj/scenario.h
+++ b/src/simutrans/dataobj/scenario.h
@@ -429,6 +429,12 @@ public:
 	 */
 	void clear_rules();
 
+	/**
+	 * Clears all rules for a player selec
+	 * @ingroup squirrel-api
+	 */
+	void clear_player_rules(uint8 player_nr);
+
 	/**
 	 * @ingroup squirrel-api
 	 * @see forbid_way_tool_rect
diff --git a/src/simutrans/script/api/api_scenario.cc b/src/simutrans/script/api/api_scenario.cc
index 0421b805c..faf1ce203 100644
--- a/src/simutrans/script/api/api_scenario.cc
+++ b/src/simutrans/script/api/api_scenario.cc
@@ -258,6 +258,14 @@ void export_scenario(HSQUIRRELVM vm)
 	 */
 	STATIC register_method(vm, &scenario_t::clear_rules, "clear");
 
+	/**
+	 * Clear all forbidding rules for a selec player
+	 *
+	 * Only effects tools forbidden by rules::forbid_tool, rules::forbid_way_tool, rules::forbid_way_tool_cube, rules::forbid_way_tool_rect.
+	 * The result of ::is_tool_allowed and ::is_work_allowed_here is not influenced.
+	 */
+	STATIC register_method(vm, &scenario_t::clear_player_rules, "clear_player");
+
 	/**
 	 * Allow tool with certain waytype within rectangular region on the map.
 	 *
-- 
2.47.1

