- Fix: When targetting a tank, mercs always aim for the 'head'. This results in misses if one changes the tank's JSD to a lower silhouette.

- Fix: crash during loading of a game, as a tanks animation required sounds which were missing due to vehicle list not yet bein initialised
- Fix: soldier's damaged by a blast always receive at least 1 damage, even if damage calculation results in 0
- If vehicles destroy a wall, this can now bring down a building's roof

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8112 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2016-03-17 21:45:10 +00:00
parent 23d4051473
commit b8c0036396
5 changed files with 28 additions and 6 deletions
+4 -1
View File
@@ -2050,7 +2050,10 @@ BOOLEAN CalculateSoldierZPos( SOLDIERTYPE * pSoldier, UINT8 ubPosType, FLOAT * p
else if ( TANK( pSoldier ) )
{
// high up!
ubPosType = HEAD_TARGET_POS;
//ubPosType = HEAD_TARGET_POS;
// Flugente: why would we try to hit the top of a vehicle? the middle is just fine (we would also miss on vehicles with a lower silhouette)
ubPosType = TORSO_TARGET_POS;
}
ubHeight = gAnimControl[ pSoldier->usAnimState ].ubEndHeight;
+3 -2
View File
@@ -10485,7 +10485,7 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
{
enemysidestrength += pSoldier->GetSurrenderStrength();
if ( pSoldier->ubProfile != NO_PROFILE || pSoldier->ubSoldierClass == SOLDIER_CLASS_TANK )
if ( pSoldier->ubProfile != NO_PROFILE || TANK(pSoldier) )
fNoSurrender = TRUE;
}
}
@@ -10497,7 +10497,7 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
{
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
{
// if a civilian is not neutral and on the enemy side, add his strength to the team
// hostile civs with a profile cannot be captured, as stated above, the entire team cannot surrender
if ( !pSoldier->aiData.bNeutral && pSoldier->bSide == 1 && zCivGroupName[pSoldier->ubCivilianGroup].fCanBeCaptured && pSoldier->ubProfile != NO_PROFILE )
fNoSurrender = TRUE;
@@ -10505,6 +10505,7 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
if ( !pSoldier->CanBeCaptured() )
continue;
// if a civilian is not neutral and on the enemy side, add his strength to the team
enemysidestrength += pSoldier->GetSurrenderStrength( );
}
}
+3 -1
View File
@@ -20939,7 +20939,9 @@ void InternalPlaySoldierFootstepSound( SOLDIERTYPE * pSoldier )
{
bVolume = HIGHVOLUME;
}
PlaySoldierJA2Sample( pSoldier->ubID, pVehicleList[pSoldier->bVehicleID].iMoveSound, RATE_11025, SoundVolume( bVolume, pSoldier->sGridNo ), 1, SoundDir( pSoldier->sGridNo ), TRUE );
if ( pVehicleList )
PlaySoldierJA2Sample( pSoldier->ubID, pVehicleList[pSoldier->bVehicleID].iMoveSound, RATE_11025, SoundVolume( bVolume, pSoldier->sGridNo ), 1, SoundDir( pSoldier->sGridNo ), TRUE );
}
}