mirror of
https://github.com/1dot13/source.git
synced 2026-08-12 14:10:23 +02:00
- fixed a bug that caused bad pointers when accessing the sector inventory and then entering it
- fixed: reinforcements can happen in turnbased again - codechange: stacks of ammo item scan now be used to feed a gun from the inventory git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5458 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+20
-6
@@ -14112,7 +14112,7 @@ OBJECTTYPE* GetExternalFeedingObject(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject
|
||||
|
||||
if ( !pObject || !(pObject->exists()) || !pSoldier || !pSoldier->bActive || !pSoldier->bInSector || pSoldier->stats.bLife < OKLIFE )
|
||||
// how did we even get here?
|
||||
return false;
|
||||
return ( pObjExtMag );
|
||||
|
||||
UINT16 usItem = pObject->usItem;
|
||||
|
||||
@@ -14182,13 +14182,27 @@ BOOLEAN DeductBulletViaExternalFeeding(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObje
|
||||
|
||||
OBJECTTYPE* pObjExtMag = GetExternalFeedingObject(pSoldier, pObject);
|
||||
|
||||
if ( pObjExtMag && (*pObjExtMag)[0]->data.ubShotsLeft != 0 )
|
||||
{
|
||||
(*pObjExtMag)[0]->data.ubShotsLeft--;
|
||||
if ( !pObjExtMag || pObjExtMag->ubNumberOfObjects == 0)
|
||||
return false;
|
||||
|
||||
if ( (*pObjExtMag)[0]->data.ubShotsLeft == 0 )
|
||||
UINT8 lastobjinstack = pObjExtMag->ubNumberOfObjects - 1;
|
||||
|
||||
if ( (*pObjExtMag)[lastobjinstack]->data.ubShotsLeft != 0 )
|
||||
{
|
||||
(*pObjExtMag)[lastobjinstack]->data.ubShotsLeft--;
|
||||
|
||||
if ( (*pObjExtMag)[lastobjinstack]->data.ubShotsLeft == 0 )
|
||||
{
|
||||
DeleteObj( pObjExtMag );
|
||||
pObjExtMag->ubNumberOfObjects--;
|
||||
|
||||
if ( !pObjExtMag->exists() )
|
||||
{
|
||||
// Delete object
|
||||
DeleteObj( pObjExtMag );
|
||||
|
||||
// dirty interface panel
|
||||
DirtyMercPanelInterface( pSoldier, DIRTYLEVEL2 );
|
||||
}
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
|
||||
Reference in New Issue
Block a user