Fix: underbarrel weapons did not properly cause explosions according to their ammotype

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5988 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-04-07 22:54:43 +00:00
parent a66a3ef61b
commit d0b9c0a032
+9 -2
View File
@@ -297,11 +297,18 @@ void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32
return; // no explosive / no attacker return; // no explosive / no attacker
} }
// The ammotype used. WARNING! This will only be != 0 if ubOwner != NOBODY !
UINT16 ammotype = 0;
// Okay, we either got an explosive or a real attacker to check for. // Okay, we either got an explosive or a real attacker to check for.
// Let's check for the attacker first. // Let's check for the attacker first.
if ( ubOwner != NOBODY ) if ( ubOwner != NOBODY )
{ {
if ( !( Item[ usItem ].usItemClass & IC_EXPLOSV ) && AmmoTypes[MercPtrs[ubOwner]->inv[MercPtrs[ubOwner]->ubAttackingHand ][0]->data.gun.ubGunAmmoType].explosionSize < 2 ) OBJECTTYPE* pUsedGun = MercPtrs[ ubOwner ]->GetUsedWeapon( &MercPtrs [ ubOwner ]->inv[MercPtrs[ubOwner]->ubAttackingHand] );
ammotype = (*pUsedGun)[0]->data.gun.ubGunAmmoType;
if ( !( Item[ usItem ].usItemClass & IC_EXPLOSV ) && AmmoTypes[ammotype].explosionSize < 2 )
{ {
return; // no explosive and attackers gun is not fireing HE return; // no explosive and attackers gun is not fireing HE
} }
@@ -328,7 +335,7 @@ void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32
// No explosive but an attacker with HE ammo. // No explosive but an attacker with HE ammo.
if ( !( Item[ usItem ].usItemClass & IC_EXPLOSV ) && ubOwner != NOBODY) if ( !( Item[ usItem ].usItemClass & IC_EXPLOSV ) && ubOwner != NOBODY)
{ {
ExpParams.ubTypeID = (INT8)Explosive[AmmoTypes[MercPtrs[ubOwner]->inv[MercPtrs[ubOwner]->ubAttackingHand ][0]->data.gun.ubGunAmmoType].highExplosive].ubAnimationID; ExpParams.ubTypeID = (INT8)Explosive[AmmoTypes[ammotype].highExplosive].ubAnimationID;
// return; // return;
} }
else // just normal explosives should get here else // just normal explosives should get here