mirror of
https://github.com/1dot13/source.git
synced 2026-08-12 14:10:23 +02:00
Prisoner feature bugfix (#110)
* Allow game to continue after offering to surrender to enemies * Fix issues related to surrender and POW quests - Quests were ended prematurely if one had prisoners in both alma and tixa - Strategic status flags for rescue/escape were not set properly - Only the maximum amount a prison can hold will be taken as POWs, rest of the mercs will either escape or have to fight to the death, to prevent a player having unrescuable POWs - Capturing a mercenary had a lot of functions called that should not have been, IF the merc is not going to be captured after all * Switch all tactical surrender calls to use one unified function * Only mercs that are capable can escape Incapacitated mercs left behind will die. Should probably prioritize incapacitated mercs to be captured by the enemy to prevent needless deaths * Combine pow quest state changes into one function * Add JumpIntoEscapedSector to header file * Allow enemy to demand surrender even if they already have POWs in Tixa and Alma * Remove surrender from UB * Address review feedback
This commit is contained in:
+4
-34
@@ -197,42 +197,12 @@ BOOLEAN GetCivQuoteText(UINT16 ubCivQuoteID, UINT16 ubEntryID, STR16 zQuote )
|
||||
|
||||
void SurrenderMessageBoxCallBack( UINT8 ubExitValue )
|
||||
{
|
||||
SOLDIERTYPE *pTeamSoldier;
|
||||
INT32 cnt = 0;
|
||||
|
||||
if ( ubExitValue == MSG_BOX_RETURN_YES )
|
||||
{
|
||||
// CJC Dec 1 2002: fix multiple captures
|
||||
BeginCaptureSquence();
|
||||
|
||||
// Do capture....
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
|
||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++)
|
||||
{
|
||||
// Are we active and in sector.....
|
||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||
{
|
||||
if ( pTeamSoldier->stats.bLife != 0 )
|
||||
{
|
||||
EnemyCapturesPlayerSoldier( pTeamSoldier );
|
||||
|
||||
RemoveSoldierFromTacticalSector( pTeamSoldier, TRUE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EndCaptureSequence( );
|
||||
|
||||
gfSurrendered = TRUE;
|
||||
SetCustomizableTimerCallbackAndDelay( 3000, CaptureTimerCallback, FALSE );
|
||||
|
||||
ActionDone( gCivQuoteData.pCiv );
|
||||
}
|
||||
else
|
||||
{
|
||||
ActionDone( gCivQuoteData.pCiv );
|
||||
AttemptToCapturePlayerSoldiers();
|
||||
}
|
||||
gTacticalStatus.fEnemyFlags |= ENEMY_OFFERED_SURRENDER;
|
||||
ActionDone( gCivQuoteData.pCiv );
|
||||
}
|
||||
|
||||
void ShutDownQuoteBox( BOOLEAN fForce )
|
||||
@@ -2383,4 +2353,4 @@ BOOLEAN PlayVoiceTaunt(SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTa
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user