- Fix: When retreating from tactical combat, militia gear was not dropped correctly

- Fix: Under certain circumstances, militia dropped gear twice in autoresolve

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5926 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-03-16 23:49:28 +00:00
parent 89666fa78c
commit 923664ca40
3 changed files with 15 additions and 7 deletions
+9 -3
View File
@@ -6133,11 +6133,11 @@ BOOLEAN HandleDefiniteUnloadingOfWorld( UINT8 ubUnloadCode )
else if( ubUnloadCode == ABOUT_TO_TRASH_WORLD ) else if( ubUnloadCode == ABOUT_TO_TRASH_WORLD )
{ {
//if we arent loading a saved game //if we arent loading a saved game
if( !(gTacticalStatus.uiFlags & LOADING_SAVED_GAME ) ) /*if( !(gTacticalStatus.uiFlags & LOADING_SAVED_GAME ) )
{ {
// Flugente: cause all militia whose equipment is from this sector to drop it // Flugente: cause all militia whose equipment is from this sector to drop it
TeamDropAll( MILITIA_TEAM ); TeamDropAll( MILITIA_TEAM );
} }*/
//Save the current sectors open temp files to the disk //Save the current sectors open temp files to the disk
if( !SaveCurrentSectorsInformationToTempItemFile() ) if( !SaveCurrentSectorsInformationToTempItemFile() )
@@ -6274,8 +6274,14 @@ BOOLEAN CheckAndHandleUnloadingOfCurrentWorld()
// Added logic to prevent a crash when player mercs would retreat from a battle involving militia and enemies. // Added logic to prevent a crash when player mercs would retreat from a battle involving militia and enemies.
// Without the return here, it would proceed to trash the world, and then when autoresolve would come up to // Without the return here, it would proceed to trash the world, and then when autoresolve would come up to
// finish the tactical battle, it would fail to find the existing soldier information (because it was trashed). // finish the tactical battle, it would fail to find the existing soldier information (because it was trashed).
if( HandlePotentialBringUpAutoresolveToFinishBattle( sBattleSectorX, sBattleSectorY, sBattleSectorZ ) ) if( HandlePotentialBringUpAutoresolveToFinishBattle( sBattleSectorX, sBattleSectorY, sBattleSectorZ ) )
{ {
// Flugente: cause all militia whose equipment is from this sector to drop it - otherwise it can get lost
TeamDropAll( MILITIA_TEAM, TRUE );
// Save the current sectors Item list to a temporary file, if its not the first time in
SaveCurrentSectorsInformationToTempItemFile();
return FALSE; return FALSE;
} }
//end //end
+4 -3
View File
@@ -10291,15 +10291,16 @@ void HandleSurrenderOffer( SOLDIERTYPE* pSoldier )
DoMessageBox( MSG_BOX_BASIC_MEDIUM_BUTTONS, TacticalStr[ PRISONER_OFFER_SURRENDER ], guiCurrentScreen, MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS, PrisonerSurrenderMessageBoxCallBack, NULL ); DoMessageBox( MSG_BOX_BASIC_MEDIUM_BUTTONS, TacticalStr[ PRISONER_OFFER_SURRENDER ], guiCurrentScreen, MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS, PrisonerSurrenderMessageBoxCallBack, NULL );
} }
void TeamDropAll(UINT8 bTeam) void TeamDropAll(UINT8 bTeam, BOOLEAN fForce)
{ {
if ( bTeam > PLAYER_PLAN ) if ( bTeam > PLAYER_PLAN )
return; return;
// not if there is a battle going on, or this team is hostile to us // not if there is a battle going on
if ( (gTacticalStatus.uiFlags & INCOMBAT ) ) if ( (gTacticalStatus.uiFlags & INCOMBAT ) && !fForce )
return; return;
// not if this team is hostile to us
if ( gTacticalStatus.Team[ gbPlayerNum ].bSide != gTacticalStatus.Team[ bTeam ].bSide ) if ( gTacticalStatus.Team[ gbPlayerNum ].bSide != gTacticalStatus.Team[ bTeam ].bSide )
return; return;
+2 -1
View File
@@ -408,6 +408,7 @@ STR16 GetNewTraitStr(UINT8 aTrait); // Flugente: deal with the insane new trait
void HandleSurrenderOffer( SOLDIERTYPE* pSoldier ); // Flugente: offer the enemy the chance to surrender void HandleSurrenderOffer( SOLDIERTYPE* pSoldier ); // Flugente: offer the enemy the chance to surrender
void TeamDropAll(UINT8 bTeam); // setting fForce to TRUE allows dropping of gear in combat (used in auto-resolve instances)
void TeamDropAll(UINT8 bTeam, BOOLEAN fForce = FALSE);
#endif #endif