diff --git a/Tactical/Drugs And Alcohol.cpp b/Tactical/Drugs And Alcohol.cpp index 743c64f8..7cdb6d92 100644 --- a/Tactical/Drugs And Alcohol.cpp +++ b/Tactical/Drugs And Alcohol.cpp @@ -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 ); } diff --git a/Tactical/Food.cpp b/Tactical/Food.cpp index 784dd290..38e82492 100644 --- a/Tactical/Food.cpp +++ b/Tactical/Food.cpp @@ -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 ) diff --git a/Tactical/Interface Panels.cpp b/Tactical/Interface Panels.cpp index 90ccc312..b02aaeed 100644 --- a/Tactical/Interface Panels.cpp +++ b/Tactical/Interface Panels.cpp @@ -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;