mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
- random items can also be results of merges and item transformations
- removed a few instances of incorrect random item spawning git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5598 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+26
-3
@@ -2783,13 +2783,24 @@ BOOLEAN EvaluateValidMerge( UINT16 usMerge, UINT16 usItem, UINT16 * pusResult, U
|
||||
}
|
||||
}
|
||||
|
||||
// Flugente: for random items, we have to do the resolution here
|
||||
UINT16 result1 = Merge[iLoop][2];
|
||||
UINT16 rdresult1 = 0;
|
||||
if ( GetItemFromRandomItem(result1, &rdresult1) )
|
||||
result1 = rdresult1;
|
||||
|
||||
UINT16 result2 = Merge[iLoop][3];
|
||||
UINT16 rdresult2 = 0;
|
||||
if ( GetItemFromRandomItem(result2, &rdresult2) )
|
||||
result2 = rdresult2;
|
||||
|
||||
//WarmSteel - Return false if the results aren't valid.
|
||||
if( !ItemIsLegal(Merge[iLoop][2], TRUE) && !ItemIsLegal(Merge[iLoop][3], TRUE) ){
|
||||
if( !ItemIsLegal(result1, TRUE) && !ItemIsLegal(result2, TRUE) ){
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
*pusResult = Merge[iLoop][2];
|
||||
*pusResult2 = Merge[iLoop][3];
|
||||
*pusResult = result1;
|
||||
*pusResult2 = result2;
|
||||
*pubType = (UINT8) Merge[iLoop][4];
|
||||
*pubAPCost = (UINT8) Merge[iLoop][5];
|
||||
return( TRUE );
|
||||
@@ -7655,6 +7666,12 @@ BOOLEAN CreateItem( UINT16 usItem, INT16 bStatus, OBJECTTYPE * pObj )
|
||||
if ( GetItemFromRandomItem(usItem, &newitemfromrandom) )
|
||||
usItem = newitemfromrandom;
|
||||
|
||||
if (usItem == 0)
|
||||
{
|
||||
DebugBreakpoint();
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
if (Item[ usItem ].usItemClass == IC_GUN)
|
||||
{
|
||||
fRet = CreateGun( usItem, bStatus, pObj );
|
||||
@@ -14031,6 +14048,12 @@ BOOLEAN OBJECTTYPE::TransformObject( SOLDIERTYPE * pSoldier, UINT8 ubStatusIndex
|
||||
if (Transform->usResult[curResult] > 0)
|
||||
{
|
||||
usResult[curResult] = Transform->usResult[curResult];
|
||||
|
||||
// Flugente: resolution of random items
|
||||
UINT16 rdresult = 0;
|
||||
if ( GetItemFromRandomItem(usResult[curResult], &rdresult) )
|
||||
usResult[curResult] = rdresult;
|
||||
|
||||
// Count the number of valid result items
|
||||
iNumResults++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user