Index: edit.c ================================================================== --- edit.c +++ edit.c @@ -529,10 +529,11 @@ } } generation_number_inc=0; n=objalloc(m->class); if(n==VOIDLINK) return; + level_changed=1; objects[n]->x=x; objects[n]->y=y; objects[n]->image=m->img; objects[n]->dir=m->dir; objects[n]->misc1=m->misc1; @@ -574,10 +575,11 @@ case 're': // Resize and clear if(argc<3) return 0; x=sqlite3_column_int(args,1); y=sqlite3_column_int(args,2); if(x<1 || y<1 || x>64 || y>64) return 0; + level_changed=1; annihilate(); pfwidth=x; pfheight=y; return 0; default: Index: function.c ================================================================== --- function.c +++ function.c @@ -931,10 +931,11 @@ if(objects[id]->misc2.t&~3) objects[id]->misc2=NVALUE(0); objects[id]->misc3.u=sqlite3_value_int64(argv[6])&0xFFFF; objects[id]->misc3.t=sqlite3_value_int64(argv[6])>>32; if(objects[id]->misc3.t&~3) objects[id]->misc3=NVALUE(0); } + level_changed=1; return SQLITE_OK; } Module(vt_objects, .xBestIndex=vt1_objects_index, Index: heromesh.h ================================================================== --- heromesh.h +++ heromesh.h @@ -47,10 +47,11 @@ extern Uint8 message_trace[0x4100/8]; extern Uint16 level_id,level_ord,level_version,level_code; extern unsigned char*level_title; extern Uint16*level_index; extern int level_nindex; +extern char level_changed; // 1 if solution is potentially invalidated by edits #ifdef __GNUC__ extern char stack_protect_mode; extern void*stack_protect_mark; extern void*stack_protect_low; Index: main.c ================================================================== --- main.c +++ main.c @@ -45,10 +45,11 @@ Uint8 message_trace[0x4100/8]; Uint16 level_id,level_ord,level_version,level_code; unsigned char*level_title; Uint16*level_index; int level_nindex; +char level_changed; #ifdef __GNUC__ char stack_protect_mode=0; void*stack_protect_mark; void*stack_protect_low; @@ -225,10 +226,11 @@ p=buf=read_lump(FIL_LEVEL,lvl,&sz); end=buf+sz; } if(lvl<0) return "Invalid level ID"; if(!buf) return "Cannot find level"; + level_changed=1; free(level_title); level_title=0; annihilate(); generation_number=TY_MAXTYPE+1; generation_number_inc=0; @@ -349,10 +351,11 @@ for(i=0;i