mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
- bugfix: Endless clock after stealing
- changed: APs for stealing from 10 to 14 (because stealing is more than simple picking enemies gun) - changed: You cannot steal items from head, body, leg or face until the enemy is collapsed (lying on the ground) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@631 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+51
-12
@@ -5319,31 +5319,70 @@ UINT8 StealItems(SOLDIERTYPE* pSoldier,SOLDIERTYPE* pOpponent, UINT8* ubIndexRet
|
||||
ITEM_POOL *pItemPool,*pTempItemPool,*pTempLastItemPool;
|
||||
OBJECTTYPE *pObject;
|
||||
UINT8 i;
|
||||
BOOLEAN fStealItem = FALSE;
|
||||
|
||||
//Create a temporary item pool, with index in Opponent's inventory as index
|
||||
pItemPool=NULL;
|
||||
for(i=0 ; i<NUM_INV_SLOTS; i++)
|
||||
{
|
||||
fStealItem = FALSE;
|
||||
|
||||
pObject=pOpponent->inv+i;
|
||||
if (pObject->usItem!=0)
|
||||
{
|
||||
pTempItemPool = (ITEM_POOL*)MemAlloc(sizeof(ITEM_POOL));
|
||||
++ubCount;
|
||||
if (pItemPool == NULL)
|
||||
// Is the enemy collapsed
|
||||
if ( pOpponent->bLife < OKLIFE || pOpponent->bCollapsed )
|
||||
{
|
||||
pItemPool = pTempItemPool;
|
||||
pItemPool->pPrev = NULL;
|
||||
// We can steal any of his items in the inventory
|
||||
fStealItem = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
pTempItemPool->pPrev = pTempLastItemPool;
|
||||
pTempLastItemPool->pNext = pTempItemPool;
|
||||
// Check, if we can steal the item
|
||||
switch (i)
|
||||
{
|
||||
case HANDPOS:
|
||||
case SECONDHANDPOS:
|
||||
case BIGPOCK1POS:
|
||||
case BIGPOCK2POS:
|
||||
case BIGPOCK3POS:
|
||||
case BIGPOCK4POS:
|
||||
case SMALLPOCK1POS:
|
||||
case SMALLPOCK2POS:
|
||||
case SMALLPOCK3POS:
|
||||
case SMALLPOCK4POS:
|
||||
case SMALLPOCK5POS:
|
||||
case SMALLPOCK6POS:
|
||||
case SMALLPOCK7POS:
|
||||
case SMALLPOCK8POS:
|
||||
fStealItem = TRUE;
|
||||
break;
|
||||
default:
|
||||
fStealItem = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (fStealItem == TRUE)
|
||||
{
|
||||
pTempItemPool = (ITEM_POOL*)MemAlloc(sizeof(ITEM_POOL));
|
||||
++ubCount;
|
||||
if (pItemPool == NULL)
|
||||
{
|
||||
pItemPool = pTempItemPool;
|
||||
pItemPool->pPrev = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
pTempItemPool->pPrev = pTempLastItemPool;
|
||||
pTempLastItemPool->pNext = pTempItemPool;
|
||||
}
|
||||
pTempItemPool->pNext = NULL;
|
||||
pTempItemPool->iItemIndex = i;
|
||||
//very bad, jack, to test if we are stealing?
|
||||
pTempItemPool->pLevelNode=NULL;//finally not used
|
||||
pTempLastItemPool=pTempItemPool;
|
||||
}
|
||||
pTempItemPool->pNext = NULL;
|
||||
pTempItemPool->iItemIndex = i;
|
||||
//very bad, jack, to test if we are stealing?
|
||||
pTempItemPool->pLevelNode=NULL;//finally not used
|
||||
pTempLastItemPool=pTempItemPool;
|
||||
}
|
||||
}
|
||||
if (ubCount == 0)
|
||||
|
||||
Reference in New Issue
Block a user