- Fix: cleaning weapons prompt read parameters wrong

- when a merc regains HP via surgery, display the gain
- if an EPC leaves the team, add them to the list of departed characters

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7977 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2015-08-17 20:00:19 +00:00
parent 873929c410
commit 5385ae1295
4 changed files with 29 additions and 24 deletions
+5 -20
View File
@@ -5437,14 +5437,11 @@ BOOLEAN DisplayHighLightBox( void )
// add to dead list // add to dead list
void AddCharacterToDeadList( SOLDIERTYPE *pSoldier ) void AddCharacterToDeadList( SOLDIERTYPE *pSoldier )
{ {
INT32 iCounter = 0; for ( INT32 iCounter = 0; iCounter < 256; ++iCounter )
for( iCounter = 0; iCounter < 256; iCounter++ )
{ {
if( LaptopSaveInfo.ubDeadCharactersList[ iCounter ] == -1 ) if( LaptopSaveInfo.ubDeadCharactersList[ iCounter ] == -1 )
{ {
// valid slot, merc not found yet, inset here // valid slot, merc not found yet, insert here
LaptopSaveInfo.ubDeadCharactersList[ iCounter ] = pSoldier->ubProfile; LaptopSaveInfo.ubDeadCharactersList[ iCounter ] = pSoldier->ubProfile;
// leave // leave
@@ -5454,7 +5451,6 @@ void AddCharacterToDeadList( SOLDIERTYPE *pSoldier )
// are they already in the list? // are they already in the list?
if( LaptopSaveInfo.ubDeadCharactersList[ iCounter ] == pSoldier->ubProfile ) if( LaptopSaveInfo.ubDeadCharactersList[ iCounter ] == pSoldier->ubProfile )
{ {
return; return;
} }
} }
@@ -5463,10 +5459,7 @@ void AddCharacterToDeadList( SOLDIERTYPE *pSoldier )
void AddCharacterToFiredList( SOLDIERTYPE *pSoldier ) void AddCharacterToFiredList( SOLDIERTYPE *pSoldier )
{ {
INT32 iCounter = 0; for ( INT32 iCounter = 0; iCounter < 256; ++iCounter )
for( iCounter = 0; iCounter < 256; iCounter++ )
{ {
if( LaptopSaveInfo.ubLeftCharactersList[ iCounter ] == -1 ) if( LaptopSaveInfo.ubLeftCharactersList[ iCounter ] == -1 )
{ {
@@ -5480,19 +5473,14 @@ void AddCharacterToFiredList( SOLDIERTYPE *pSoldier )
// are they already in the list? // are they already in the list?
if( LaptopSaveInfo.ubLeftCharactersList[ iCounter ] == pSoldier->ubProfile ) if( LaptopSaveInfo.ubLeftCharactersList[ iCounter ] == pSoldier->ubProfile )
{ {
return; return;
} }
} }
} }
void AddCharacterToOtherList( SOLDIERTYPE *pSoldier ) void AddCharacterToOtherList( SOLDIERTYPE *pSoldier )
{ {
INT32 iCounter = 0; for ( INT32 iCounter = 0; iCounter < 256; ++iCounter )
for( iCounter = 0; iCounter < 256; iCounter++ )
{ {
if( LaptopSaveInfo.ubOtherCharactersList[ iCounter ] == -1 ) if( LaptopSaveInfo.ubOtherCharactersList[ iCounter ] == -1 )
{ {
@@ -5506,7 +5494,6 @@ void AddCharacterToOtherList( SOLDIERTYPE *pSoldier )
// are they already in the list? // are they already in the list?
if( LaptopSaveInfo.ubOtherCharactersList[ iCounter ] == pSoldier->ubProfile ) if( LaptopSaveInfo.ubOtherCharactersList[ iCounter ] == pSoldier->ubProfile )
{ {
return; return;
} }
} }
@@ -5518,9 +5505,7 @@ void AddCharacterToOtherList( SOLDIERTYPE *pSoldier )
//to be on your team list, and departed list ) //to be on your team list, and departed list )
BOOLEAN RemoveNewlyHiredMercFromPersonnelDepartedList( UINT8 ubProfile ) BOOLEAN RemoveNewlyHiredMercFromPersonnelDepartedList( UINT8 ubProfile )
{ {
INT32 iCounter = 0; for ( INT32 iCounter = 0; iCounter < 256; ++iCounter )
for( iCounter = 0; iCounter < 256; iCounter++ )
{ {
// are they already in the Dead list? // are they already in the Dead list?
if( LaptopSaveInfo.ubDeadCharactersList[ iCounter ] == ubProfile ) if( LaptopSaveInfo.ubDeadCharactersList[ iCounter ] == ubProfile )
+3 -3
View File
@@ -4975,7 +4975,7 @@ void CleanWeapons( BOOLEAN fEntireTeam )
return; return;
// if in combat, always only for selected merc // if in combat, always only for selected merc
if ( !fEntireTeam || (gTacticalStatus.uiFlags & INCOMBAT) ) if ( !fEntireTeam )
{ {
if ( gusSelectedSoldier == NOBODY ) if ( gusSelectedSoldier == NOBODY )
return; return;
@@ -4987,7 +4987,7 @@ void CleanWeapons( BOOLEAN fEntireTeam )
} }
else // perform action for every merc in this sector else // perform action for every merc in this sector
{ {
UINT8 bMercID, bLastTeamID; UINT16 bMercID, bLastTeamID;
SOLDIERTYPE* pSoldier = NULL; SOLDIERTYPE* pSoldier = NULL;
bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
@@ -5326,7 +5326,7 @@ void TacticalFunctionSelectionMessageBoxCallBack( UINT8 ubExitValue )
break; break;
case 3: case 3:
// clean weapons - in realtime of the entire team, in turnbased only for the selected merc // clean weapons - in realtime of the entire team, in turnbased only for the selected merc
CleanWeapons( gTacticalStatus.uiFlags & INCOMBAT ); CleanWeapons( !(gTacticalStatus.uiFlags & INCOMBAT) );
break; break;
case 4: case 4:
UpdateGear(); UpdateGear();
+17
View File
@@ -13031,13 +13031,22 @@ UINT32 SOLDIERTYPE::SoldierDressWound( SOLDIERTYPE *pVictim, INT16 sKitPts, INT1
pVictim->bBleeding = 0; pVictim->bBleeding = 0;
uiMedcost += max( 0, (((usLifeReturned / 100) - pVictim->bBleeding) / 2) ); // add medkit points cost for unbandaged part uiMedcost += max( 0, (((usLifeReturned / 100) - pVictim->bBleeding) / 2) ); // add medkit points cost for unbandaged part
} }
// display healing done
pVictim->flags.fDisplayDamage = TRUE;
pVictim->sDamage -= (usLifeReturned / 100);
} }
else // this shouldn't even happen, but we still want to have it here for sure else // this shouldn't even happen, but we still want to have it here for sure
{ {
// display healing done
pVictim->flags.fDisplayDamage = TRUE;
pVictim->sDamage -= (pVictim->stats.bLifeMax - pVictim->stats.bLife);
pVictim->stats.bLife = pVictim->stats.bLifeMax; pVictim->stats.bLife = pVictim->stats.bLifeMax;
pVictim->iHealableInjury = 0; pVictim->iHealableInjury = 0;
pVictim->bBleeding = 0; pVictim->bBleeding = 0;
} }
// Reduce max breath based on life returned // Reduce max breath based on life returned
if ( (pVictim->bBreathMax - (((usLifeReturned / 100) * gSkillTraitValues.usDOSurgeryMaxBreathLoss) / 100)) <= BREATHMAX_ABSOLUTE_MINIMUM ) if ( (pVictim->bBreathMax - (((usLifeReturned / 100) * gSkillTraitValues.usDOSurgeryMaxBreathLoss) / 100)) <= BREATHMAX_ABSOLUTE_MINIMUM )
{ {
@@ -22540,9 +22549,17 @@ UINT32 VirtualSoldierDressWound( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pVictim, OB
pVictim->bBleeding = 0; pVictim->bBleeding = 0;
uiMedcost += max( 0, (((iLifeReturned / 100) - pVictim->bBleeding) / 2) ); // add medkit points cost for unbandaged part uiMedcost += max( 0, (((iLifeReturned / 100) - pVictim->bBleeding) / 2) ); // add medkit points cost for unbandaged part
} }
// display healing done
pVictim->flags.fDisplayDamage = TRUE;
pVictim->sDamage -= (iLifeReturned / 100);
} }
else // this shouldn't even happen, but we still want to have it here for sure else // this shouldn't even happen, but we still want to have it here for sure
{ {
// display healing done
pVictim->flags.fDisplayDamage = TRUE;
pVictim->sDamage -= (pVictim->stats.bLifeMax - pVictim->stats.bLife);
pVictim->stats.bLife = pVictim->stats.bLifeMax; pVictim->stats.bLife = pVictim->stats.bLifeMax;
pVictim->iHealableInjury = 0; pVictim->iHealableInjury = 0;
pVictim->bBleeding = 0; pVictim->bBleeding = 0;
+4 -1
View File
@@ -2067,12 +2067,15 @@ BOOLEAN UnRecruitEPC( UINT8 ubCharNum )
if ( pSoldier->bAssignment < ON_DUTY ) if ( pSoldier->bAssignment < ON_DUTY )
{ {
ResetDeadSquadMemberList( pSoldier->bAssignment ); ResetDeadSquadMemberList( pSoldier->bAssignment );
} }
// Rmeove from squad.... // Rmeove from squad....
RemoveCharacterFromSquads( pSoldier ); RemoveCharacterFromSquads( pSoldier );
// Add to our 'departed' list
AddCharacterToOtherList( pSoldier );
// O< check if this is the only guy in the sector.... // O< check if this is the only guy in the sector....
if ( gusSelectedSoldier == pSoldier->ubID ) if ( gusSelectedSoldier == pSoldier->ubID )
{ {