diff --git a/Strategic/strategicmap.cpp b/Strategic/strategicmap.cpp index 5708dfc7..801bda22 100644 --- a/Strategic/strategicmap.cpp +++ b/Strategic/strategicmap.cpp @@ -6665,18 +6665,16 @@ BOOLEAN CheckAndHandleUnloadingOfCurrentWorld( ) if ( guiCurrentScreen == AUTORESOLVE_SCREEN ) { - if ( gWorldSectorX == sBattleSectorX && gWorldSectorY == sBattleSectorY && gbWorldSectorZ == sBattleSectorZ ) - { //Yes, this is and looks like a hack. The conditions of this if statement doesn't work inside - //TrashWorld() or more specifically, TacticalRemoveSoldier() from within TrashWorld(). Because - //we are in the autoresolve screen, soldiers are internally created different (from pointers instead of - //the MercPtrs[]). It keys on the fact that we are in the autoresolve screen. So, by switching the - //screen, it'll delete the soldiers in the loaded world properly, then later on, once autoresolve is - //complete, it'll delete the autoresolve soldiers properly. As you can now see, the above if conditions - //don't change throughout this whole process which makes it necessary to do it this way. - guiCurrentScreen = MAP_SCREEN; - TrashWorld( ); - guiCurrentScreen = AUTORESOLVE_SCREEN; - } + //Yes, this is and looks like a hack. The conditions of this if statement doesn't work inside + //TrashWorld() or more specifically, TacticalRemoveSoldier() from within TrashWorld(). Because + //we are in the autoresolve screen, soldiers are internally created different (from pointers instead of + //the MercPtrs[]). It keys on the fact that we are in the autoresolve screen. So, by switching the + //screen, it'll delete the soldiers in the loaded world properly, then later on, once autoresolve is + //complete, it'll delete the autoresolve soldiers properly. As you can now see, the above if conditions + //don't change throughout this whole process which makes it necessary to do it this way. + guiCurrentScreen = MAP_SCREEN; + TrashWorld( ); + guiCurrentScreen = AUTORESOLVE_SCREEN; } else {