diff --git a/Source/Core/ZDoom/ActorStructure.cs b/Source/Core/ZDoom/ActorStructure.cs
index 86e4a97c6373cdeda8f4bda158a065a07923ee0a..05d8cca1792e6fa8622adcde81a1c42713f974d0 100644
--- a/Source/Core/ZDoom/ActorStructure.cs
+++ b/Source/Core/ZDoom/ActorStructure.cs
@@ -120,16 +120,12 @@ namespace CodeImp.DoomBuilder.ZDoom
 								parser.ReportError("Expected class name to inherit from");
 								return;
 							}
- 
+
 							// Find the actor to inherit from
 							baseclass = parser.GetArchivedActorByName(inheritclass);
 
-							//mxd. Does it exist?
-							if(baseclass == null)
-							{
-								parser.ReportError("Parent class '" + inheritclass + "' does not exist");
-								return;
-							}
+							//mxd. Does it exist? (We can carry on regardless, so add a warning) 
+							if(baseclass == null) parser.ReportWarning("Parent class '" + inheritclass + "' does not exist");
 							break;
 
 						case "replaces":
diff --git a/Source/Core/ZDoom/ZDTextParser.cs b/Source/Core/ZDoom/ZDTextParser.cs
index a571905ecd44500dd756b9c328a26b7a4039da75..2f4c1d2bd83cea3d6bb9d6b3a8c3589656376192 100644
--- a/Source/Core/ZDoom/ZDTextParser.cs
+++ b/Source/Core/ZDoom/ZDTextParser.cs
@@ -468,26 +468,34 @@ namespace CodeImp.DoomBuilder.ZDoom
 			errorsource = sourcename;
 		}
 
+		//mxd. This reports a warning
+		protected internal void ReportWarning(string message)
+		{
+			// Add a warning
+			General.ErrorLogger.Add(ErrorType.Warning, "DECORATE warning in '" + sourcename + "', line " + GetCurrentLineNumber() + ". " + message + ".");
+		}
+
 		//mxd 
 		protected internal int GetCurrentLineNumber() 
 		{
-			long position = Math.Min(prevstreamposition, datastream.Position);
+			long pos = datastream.Position;
+			long finishpos = Math.Min(prevstreamposition, pos);
 			long readpos = 0;
 			int linenumber = 0;
 
 			// Find the line on which we found this error
 			datastream.Seek(0, SeekOrigin.Begin);
 			StreamReader textreader = new StreamReader(datastream, Encoding.ASCII);
-			while (readpos < position) 
+			while(readpos < finishpos) 
 			{
 				string line = textreader.ReadLine();
-				if (line == null) break;
+				if(line == null) break;
 				readpos += line.Length + 2;
 				linenumber++;
 			}
 
 			// Return to original position
-			datastream.Seek(position, SeekOrigin.Begin);
+			datastream.Seek(pos, SeekOrigin.Begin);
 
 			return linenumber;
 		}