mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
fixed bugs when handling items that are both food and drug
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5419 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include "Random.h"
|
||||
#include "Text.h"
|
||||
#include "Interface.h"
|
||||
#include "Food.h" // added by Flugente
|
||||
#endif
|
||||
|
||||
//forward declarations of common classes to eliminate includes
|
||||
@@ -71,7 +72,7 @@ BOOLEAN ApplyDrugs( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObject )
|
||||
UINT32 foodtype = Item[pObject->usItem].foodtype;
|
||||
|
||||
// if not a food item, nothing to see here
|
||||
if ( foodtype > 0 )
|
||||
if ( gGameOptions.fFoodSystem && foodtype > 0 )
|
||||
consumeitem = FALSE;
|
||||
|
||||
// set flag: we are on drugs
|
||||
@@ -254,6 +255,9 @@ BOOLEAN ApplyDrugs( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObject )
|
||||
// Dirty panel
|
||||
fInterfacePanelDirty = DIRTYLEVEL2;
|
||||
|
||||
if ( !consumeitem )
|
||||
ApplyFood( pSoldier, pObject );
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
|
||||
+10
-2
@@ -502,7 +502,11 @@ void HourlyFoodAutoDigestion( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
while ( (*pObj)[0]->data.objectStatus > 1 )
|
||||
{
|
||||
ApplyFood( pSoldier, pObj );
|
||||
// if food is also a drug, ApplyDrugs will also call ApplyFood
|
||||
if ( Item[pObj->usItem].drugtype > 0 )
|
||||
ApplyDrugs( pSoldier, pObj );
|
||||
else
|
||||
ApplyFood( pSoldier, pObj );
|
||||
|
||||
// if we're full, finish
|
||||
if ( pSoldier->bFoodLevel > FoodMoraleMods[FOOD_MERC_START_CONSUME].bThreshold && pSoldier->bDrinkLevel > FoodMoraleMods[FOOD_MERC_START_CONSUME].bThreshold )
|
||||
@@ -530,7 +534,11 @@ void HourlyFoodAutoDigestion( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
while ( (*pObj)[0]->data.objectStatus > 1 )
|
||||
{
|
||||
ApplyFood( pSoldier, pObj );
|
||||
// if food is also a drug, ApplyDrugs will also call ApplyFood
|
||||
if ( Item[pObj->usItem].drugtype > 0 )
|
||||
ApplyDrugs( pSoldier, pObj );
|
||||
else
|
||||
ApplyFood( pSoldier, pObj );
|
||||
|
||||
// if we're full, finish
|
||||
if ( pSoldier->bFoodLevel > FoodMoraleMods[FOOD_MERC_START_CONSUME].bThreshold && pSoldier->bDrinkLevel > FoodMoraleMods[FOOD_MERC_START_CONSUME].bThreshold )
|
||||
|
||||
@@ -3315,7 +3315,7 @@ void SMInvClickCamoCallback( MOUSE_REGION * pRegion, INT32 iReason )
|
||||
gpSMCurrentMerc->DoMercBattleSound( BATTLE_SOUND_COOL1 );
|
||||
}
|
||||
}
|
||||
else if ( gGameOptions.fFoodSystem && ApplyDrugs( gpSMCurrentMerc, gpItemPointer ) )
|
||||
else if ( ApplyDrugs( gpSMCurrentMerc, gpItemPointer ) )
|
||||
{
|
||||
// Dirty
|
||||
fInterfacePanelDirty = DIRTYLEVEL2;
|
||||
@@ -3342,7 +3342,7 @@ void SMInvClickCamoCallback( MOUSE_REGION * pRegion, INT32 iReason )
|
||||
gpSMCurrentMerc->DoMercBattleSound( BATTLE_SOUND_COOL1 );
|
||||
|
||||
}
|
||||
else if ( ApplyFood( gpSMCurrentMerc, gpItemPointer ) )
|
||||
else if ( gGameOptions.fFoodSystem && ApplyFood( gpSMCurrentMerc, gpItemPointer ) )
|
||||
{
|
||||
// Dirty
|
||||
fInterfacePanelDirty = DIRTYLEVEL2;
|
||||
|
||||
Reference in New Issue
Block a user