ExpAffect: don't spread fire on water.

StructureHit: check water level.
Only normal, stun and flashbang explosives create water explosion.
Increase max force when throwing items into water (to compensate for no bouncing).
Increased splash volume from LOWVOLUME to MIDVOLUME.
InternalIgniteExplosion: no fragments in water.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8752 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2020-02-13 15:57:10 +00:00
parent b57e4eba00
commit a6271e2e47
4 changed files with 63 additions and 47 deletions
+12 -3
View File
@@ -388,7 +388,8 @@ void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32
}
// HEADROCK HAM 5.1: Launch fragments from the explosion.
if (Explosive[ Item[ usItem ].ubClassIndex ].usNumFragments > 0 )
// sevenfm: no fragments in water
if (Explosive[Item[usItem].ubClassIndex].usNumFragments > 0 && !Water(sGridNo, bLevel))
{
// HEADROCK HAM 5: Deactivated until the release of HAM 5.1.
FireFragments( ubOwner, sX, sY, sZ, usItem, ubDirection );
@@ -534,14 +535,15 @@ void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion )
AniParams.sStartFrame = pExplosion->sCurrentFrame;
AniParams.uiFlags = ANITILE_CACHEDTILE | ANITILE_FORWARD | ANITILE_EXPLOSION;
if ( TERRAIN_IS_WATER(ubTerrainType) )
// sevenfm: check level
//if ( TERRAIN_IS_WATER(ubTerrainType) )
if (Water(sGridNo, bLevel))
{
// Change type to water explosion...
ubTypeID = WATER_BLAST;
AniParams.uiFlags |= ANITILE_ALWAYS_TRANSLUCENT;
}
if ( sZ < WALL_HEIGHT )
{
AniParams.uiFlags |= ANITILE_NOZBLITTER;
@@ -2216,6 +2218,13 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte
//Init the variables
sX = sY = -1;
// sevenfm: don't spread fire on water
if (Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_BURNABLEGAS &&
Water(sGridNo, bLevel))
{
return FALSE;
}
if ( sSubsequent == BLOOD_SPREAD_EFFECT )
{
fSmokeEffect = FALSE;