From 5717e2b8b8fd85c40f16a672c61d015910c630a2 Mon Sep 17 00:00:00 2001 From: Wanne Date: Mon, 25 Aug 2014 11:01:39 +0000 Subject: [PATCH] Merged from revision: 7411 Bugfix: Dud grenades (by cocsackie) - Dud is not set up properly git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7412 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- TileEngine/Explosion Control.cpp | 2 +- TileEngine/physics.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/TileEngine/Explosion Control.cpp b/TileEngine/Explosion Control.cpp index ba6c7e8a..76fc266b 100644 --- a/TileEngine/Explosion Control.cpp +++ b/TileEngine/Explosion Control.cpp @@ -4214,7 +4214,7 @@ void DecayBombTimers( void ) for ( INT8 bLoop = 0; bLoop < invsize; ++bLoop) // ... for all items in our inventory ... { // ... if Item is a bomb ... - if (pSoldier->inv[bLoop].exists() == true && ( Item[pSoldier->inv[bLoop].usItem].usItemClass & (IC_BOMB) ) ) + if (pSoldier->inv[bLoop].exists() == true && ( Item[pSoldier->inv[bLoop].usItem].usItemClass & (IC_BOMB|IC_GRENADE) ) ) { OBJECTTYPE * pObj = &(pSoldier->inv[bLoop]); // ... get pointer for this item ... diff --git a/TileEngine/physics.cpp b/TileEngine/physics.cpp index 73752214..dcc67f2a 100644 --- a/TileEngine/physics.cpp +++ b/TileEngine/physics.cpp @@ -2613,7 +2613,7 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject ) AddItemToPool( pObject->sGridNo, pObj, INVISIBLE, bLevel, usFlags, 0 ); } - if ( fCheckForDuds ) + if ( fCheckForDuds && (*pObj)[0]->data.misc.bDetonatorType != BOMB_TIMED ) { // OJW - 20021002 - MP Explosives if (is_networked && is_client && pObject->mpIsFromRemoteClient && pObject->mpHaveClientResult) @@ -2657,6 +2657,7 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject ) (*pObj)[0]->data.misc.bDetonatorType = BOMB_TIMED; (*pObj)[0]->data.misc.bDelay = (INT8)( 1 + PreRandom( 2 ) ); + (*pObj)[0]->data.misc.usBombItem = pObj->usItem; } // ATE: If we have collided with roof last... @@ -2713,7 +2714,10 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject ) } */ - IgniteExplosion( pObject->ubOwner, (INT16)pObject->Position.x, (INT16)pObject->Position.y, sZ, pObject->sGridNo, pObject->Obj.usItem, GET_OBJECT_LEVEL( pObject->Position.z - CONVERT_PIXELS_TO_HEIGHTUNITS( gpWorldLevelData[ pObject->sGridNo ].sHeight ) ), DIRECTION_IRRELEVANT, &pObject->Obj ); + if( (*pObj)[0]->data.misc.bDetonatorType != BOMB_TIMED ) + { + IgniteExplosion( pObject->ubOwner, (INT16)pObject->Position.x, (INT16)pObject->Position.y, sZ, pObject->sGridNo, pObject->Obj.usItem, GET_OBJECT_LEVEL( pObject->Position.z - CONVERT_PIXELS_TO_HEIGHTUNITS( gpWorldLevelData[ pObject->sGridNo ].sHeight ) ), DIRECTION_IRRELEVANT, &pObject->Obj ); + } } else if ( Item[ pObject->Obj.usItem ].usItemClass == IC_BOMB ) //if ( pObject->Obj.usItem == MORTAR_SHELL ) {