Index: exec.c ================================================================== --- exec.c +++ exec.c @@ -3697,11 +3697,11 @@ // Finished return 0; } const char*init_level(void) { - Uint32 n; + Uint32 n,m; if(setjmp(my_env)) return my_error; clear_inventory(); if(main_options['t']) { printf("[Level %d restarted]\n",level_id); if(!traced_obj.t) { @@ -3732,12 +3732,13 @@ if(control_obj==VOIDLINK) Throw("Error creating object"); } n=lastobj; while(n!=VOIDLINK && !(objects[n]->oflags&OF_ORDERED)) { send_message(VOIDLINK,n,MSG_INIT,NVALUE(0),NVALUE(0),NVALUE(0)); + m=objects[n]->prev; if(classes[objects[n]->class]->order && !(objects[n]->oflags&OF_DESTROYED)) set_order(n); - n=objects[n]->prev; + n=m; } broadcast(VOIDLINK,0,MSG_POSTINIT,NVALUE(0),NVALUE(0),NVALUE(0),0); if(gameover) return 0; return execute_turn(0); }