From f26492fa65393e691a9a6850d46543c5318a2f48 Mon Sep 17 00:00:00 2001
From: spherallic <spherallic@gmail.com>
Date: Wed, 11 Oct 2023 00:17:29 +0200
Subject: [PATCH] Do not clear all custom objects if one or more SOC/Lua
 scripts throws an error Fix SOC errors being displayed as Lua errors

---
 Source/Core/Data/DataManager.cs      | 10 ++++------
 Source/Core/SRB2/SOCMobjStructure.cs |  5 ++++-
 Source/Core/SRB2/SOCParser.cs        |  2 +-
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/Source/Core/Data/DataManager.cs b/Source/Core/Data/DataManager.cs
index 7f1484236..8ed212bf3 100755
--- a/Source/Core/Data/DataManager.cs
+++ b/Source/Core/Data/DataManager.cs
@@ -1874,7 +1874,6 @@ namespace CodeImp.DoomBuilder.Data
 					if (lua.HasError)
 					{
 						lua.LogError();
-						break;
 					}
 				}
 			}
@@ -1882,8 +1881,8 @@ namespace CodeImp.DoomBuilder.Data
 			//mxd. Add to text resources collection
 			currentreader = null;
 
-			if (lua.HasError)
-				lua.ClearActors();
+			//if (lua.HasError)
+			//	lua.ClearActors();
 		}
 
 		// sphere: This loads things and level headers from SRB2 SOC files.
@@ -1907,7 +1906,6 @@ namespace CodeImp.DoomBuilder.Data
 					if (soc.HasError)
 					{
 						soc.LogError();
-						break;
 					}
 				}
 			}
@@ -1915,8 +1913,8 @@ namespace CodeImp.DoomBuilder.Data
 			//mxd. Add to text resources collection
 			currentreader = null;
 
-			if (soc.HasError)
-				soc.ClearActors();
+			//if (soc.HasError)
+			//	soc.ClearActors();
 		}
 
 		// [ZZ] this retrieves ZDoom actor structure by class name.
diff --git a/Source/Core/SRB2/SOCMobjStructure.cs b/Source/Core/SRB2/SOCMobjStructure.cs
index 3f8065de8..c6a3ab7a0 100644
--- a/Source/Core/SRB2/SOCMobjStructure.cs
+++ b/Source/Core/SRB2/SOCMobjStructure.cs
@@ -23,7 +23,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 			if (string.IsNullOrEmpty(objname))
             {
-                parser.ReportError("Lua object structure has no object name or map thing number");
+                parser.ReportError("SOC object structure has no object name or map thing number");
                 return;
             }
 
@@ -67,6 +67,9 @@ namespace CodeImp.DoomBuilder.ZDoom
 					parser.SkipWhitespace(false, true);
 					token = parser.ReadToken();
 
+					General.WriteLogLine(tokenname);
+					General.WriteLogLine(token);
+
 					// SOC definitions are terminated by an empty line. Blegh.
 					if (tokenname == "\n")
 					{
diff --git a/Source/Core/SRB2/SOCParser.cs b/Source/Core/SRB2/SOCParser.cs
index ea03d0d49..f45148c21 100644
--- a/Source/Core/SRB2/SOCParser.cs
+++ b/Source/Core/SRB2/SOCParser.cs
@@ -44,7 +44,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 		#region ================== Variables
 
 		//mxd. Script type
-		internal override ScriptType ScriptType { get { return ScriptType.LUA; } }
+		internal override ScriptType ScriptType { get { return ScriptType.SOC; } }
 
 		// SRB2 mobjs
 		private Dictionary<int, ActorStructure> mobjs;
-- 
GitLab