From ea9992cbe1c0d2374f2e15cc131b4c2e2a4be86d Mon Sep 17 00:00:00 2001
From: Tor Andersson <tor@ccxvii.net>
Date: Thu, 30 Jan 2025 23:59:49 +0100
Subject: Don't re-enter ST in neutral Saxony.

---
 rules.js | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/rules.js b/rules.js
index f1d82a7..162e309 100644
--- a/rules.js
+++ b/rules.js
@@ -2457,6 +2457,14 @@ function resume_movement_after_flanders_stacking() {
 	game.state = "movement"
 }
 
+function is_neutral_power(pow) {
+	if (pow === P_SAXONY)
+		return is_saxony_neutral()
+	if (pow === P_PRUSSIA)
+		return is_prussia_neutral()
+	return false
+}
+
 function is_forbidden_neutral_space(pow, to) {
 	if (is_saxony_neutral()) {
 		if (pow === P_SAXONY) {
@@ -3279,10 +3287,12 @@ function can_train_re_enter(p) {
 }
 
 function has_re_entry_space_for_supply_train(pow) {
-	if (coop_minor_power(pow) !== pow)
-		return can_re_enter_train_at_power_fortress(pow) || can_re_enter_train_at_power_fortress(coop_minor_power(pow))
-	else
-		return can_re_enter_train_at_power_fortress(pow)
+	if (can_re_enter_train_at_power_fortress(pow))
+		return true
+	let minor = coop_minor_power(pow)
+	if (minor !== pow && !is_neutral_power(minor))
+		return can_re_enter_train_at_power_fortress(minor)
+	return false
 }
 
 function gen_re_enter_train_at_power_fortress(pow) {
@@ -3392,8 +3402,9 @@ states.re_enter_train_where = {
 		view.draw = game.recruit.pool
 
 		gen_re_enter_train_at_power_fortress(game.power)
-		if (coop_minor_power(game.power) !== game.power)
-			gen_re_enter_train_at_power_fortress(coop_minor_power(game.power))
+		let minor = coop_minor_power(game.power)
+		if (minor !== game.power && !is_neutral_power(minor))
+			gen_re_enter_train_at_power_fortress(minor)
 	},
 	space(to) {
 		enter_train_at(game.selected, to)
-- 
cgit v1.2.3