diff --git a/polymer/build/src/engine.c b/polymer/build/src/engine.c
index 113e132f7..e611f5ffb 100644
--- a/polymer/build/src/engine.c
+++ b/polymer/build/src/engine.c
@@ -6845,7 +6845,7 @@ int loadboard(char *filename, char fromwhere, int *daposx, int *daposy, int *dap
 
         if (sprite[i].sectnum<0||sprite[i].sectnum>=MYMAXSECTORS)
         {
-            initprintf("Map error: sprite #%d(%d,%d) with wrong sector(%d)\n",i,sprite[i].x,sprite[i].y,sprite[i].sectnum);
+			initprintf("Map error: sprite #%d(%d,%d) with an illegal sector(%d)\n",i,sprite[i].x,sprite[i].y,sprite[i].sectnum);
             sprite[i].sectnum=MYMAXSECTORS-1;
         }
     }
@@ -7594,6 +7594,12 @@ int saveboard(char *filename, int *daposx, int *daposy, int *daposz,
     if ((fil = Bopen(filename,BO_BINARY|BO_TRUNC|BO_CREAT|BO_WRONLY,BS_IREAD|BS_IWRITE)) == -1)
         return(-1);
 
+	for (j=0;j<MAXSPRITES;j++)if((unsigned)sprite[j].statnum>MAXSTATUS)
+	{
+		initprintf("Map error: sprite #%d(%d,%d) with an illegal statnum(%d)\n",j,sprite[j].x,sprite[j].y,sprite[j].statnum);
+		changespritestat(j,0);
+	}
+
     numsprites = 0;
     for (j=0;j<MAXSTATUS;j++)
     {
diff --git a/polymer/eduke32/source/gamedef.c b/polymer/eduke32/source/gamedef.c
index dcd3cc0f8..8bbd4d3be 100644
--- a/polymer/eduke32/source/gamedef.c
+++ b/polymer/eduke32/source/gamedef.c
@@ -3106,6 +3106,27 @@ static int parsecommand(void)
             return 0;
         }
         textptr++;
+
+		if (scriptptr[-1] == g_iThisActorID) // convert to "setvarvar"
+		{
+			scriptptr--;
+			scriptptr[-1]=CON_SETVARVAR;
+			if (tw == CON_SETACTORVAR || tw == CON_SETPLAYERVAR)
+			{
+				transvartype(GAMEVAR_FLAG_READONLY);
+				transvar();
+			}
+			else
+			{
+				scriptptr++;
+				transvar();
+				scriptptr-=2;
+				transvartype(GAMEVAR_FLAG_READONLY);
+				scriptptr++;
+			}
+			break;
+		}
+
         /// now pointing at 'xxx'
 
         // get the ID of the DEF