- 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 )
{
//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
TeamDropAll( MILITIA_TEAM );
}
}*/
//Save the current sectors open temp files to the disk
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.
// 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).
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;
}
//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 );
}
void TeamDropAll(UINT8 bTeam)
void TeamDropAll(UINT8 bTeam, BOOLEAN fForce)
{
if ( bTeam > PLAYER_PLAN )
return;
// not if there is a battle going on, or this team is hostile to us
if ( (gTacticalStatus.uiFlags & INCOMBAT ) )
// not if there is a battle going on
if ( (gTacticalStatus.uiFlags & INCOMBAT ) && !fForce )
return;
// not if this team is hostile to us
if ( gTacticalStatus.Team[ gbPlayerNum ].bSide != gTacticalStatus.Team[ bTeam ].bSide )
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 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