- 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:
Flugente
2012-08-11 17:07:28 +00:00
parent 7e8b51ad34
commit 333633b782
9 changed files with 68 additions and 25 deletions
+20 -6
View File
@@ -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 );