From 0bd932f20fb4b7408e9c65cf8c1c6818523bf00d Mon Sep 17 00:00:00 2001
From: kitty624 <58940527+kitty624@users.noreply.github.com>
Date: Tue, 17 Dec 2024 13:13:37 +0100
Subject: [PATCH] Simplified rework foodsystem allowed items simplified the
previous commit, now no more need for a tag when checking IsItemLegal for
Food System, ontop of checking for foodpoints, now also check if is drug as a
result, as previously, all eatable food will be excluded without food system,
but now only if it isn't a drug at the same time and no more tag to check for
that in items.xml needed
---
Tactical/Item Types.h | 1 -
Tactical/Items.cpp | 16 +++++++---------
Tactical/Items.h | 1 -
Utils/XML_Items.cpp | 7 -------
4 files changed, 7 insertions(+), 18 deletions(-)
diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h
index 37ba1be2..78f1f5d5 100644
--- a/Tactical/Item Types.h
+++ b/Tactical/Item Types.h
@@ -871,7 +871,6 @@ extern OBJECTTYPE gTempObject;
#define ITEM_fProvidesRobotCamo 0x0000010000000000 // rftr: robot attachments
#define ITEM_fProvidesRobotNightVision 0x0000020000000000 // rftr: robot attachments
#define ITEM_fProvidesRobotLaserBonus 0x0000040000000000 // rftr: robot attachments
-#define ITEM_FoodSystemExclusive 0x0000080000000000 // kitty: item exclusively available with food feature
// ----------------------------------------------------------------
diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp
index 5dd52f89..1dd9c4c6 100644
--- a/Tactical/Items.cpp
+++ b/Tactical/Items.cpp
@@ -1271,14 +1271,13 @@ BOOLEAN ItemIsLegal( UINT16 usItemIndex, BOOLEAN fIgnoreCoolness )
if ( Item[usItemIndex].ubCoolness == 0 && !fIgnoreCoolness )
return FALSE;
-
- // kitty: no food items if the food system is off
- // whether the item is exclusive is defined by tag
- // replaced previous system which used Item[usItemIndex].foodtype > 0 as criteria
- // that also restricted dual use items (i.e. drugs that also have a foodtype, like coffee, etc.)
- if (!gGameExternalOptions.fFoodSystem && ItemIsOnlyInFood(usItemIndex))
- {
- return FALSE;
+ // silversurfer: no food items if the food system is off
+ if (!UsingFoodSystem() && Item[usItemIndex].foodtype > 0)
+ {
+ // silversurfer: Only restrict food for now. Water can be used to replenish lost energy so it is useful even without the food system.
+ // kitty: and only if food isn't a drug at the same time, to make sure using those drugs without food system is possible
+ if (Food[Item[usItemIndex].foodtype].bFoodPoints > 0 && Item[usItemIndex].drugtype == 0 )
+ return FALSE;
}
// kitty: no disease items if the disease system is off
@@ -16130,4 +16129,3 @@ BOOLEAN ItemIsOnlyInDisease(UINT16 usItem) { return HasItemFlag2(usItem, ITEM_Di
BOOLEAN ItemProvidesRobotCamo(UINT16 usItem) { return HasItemFlag2(usItem, ITEM_fProvidesRobotCamo); }
BOOLEAN ItemProvidesRobotNightvision(UINT16 usItem) { return HasItemFlag2(usItem, ITEM_fProvidesRobotNightVision); }
BOOLEAN ItemProvidesRobotLaserBonus(UINT16 usItem) { return HasItemFlag2(usItem, ITEM_fProvidesRobotLaserBonus); }
-BOOLEAN ItemIsOnlyInFood(UINT16 usItem) { return HasItemFlag2(usItem, ITEM_FoodSystemExclusive); }
diff --git a/Tactical/Items.h b/Tactical/Items.h
index cf58ac72..6aa26659 100644
--- a/Tactical/Items.h
+++ b/Tactical/Items.h
@@ -251,7 +251,6 @@ BOOLEAN ItemIsOnlyInDisease(UINT16 usItem);
BOOLEAN ItemProvidesRobotCamo(UINT16 usItem);
BOOLEAN ItemProvidesRobotNightvision(UINT16 usItem);
BOOLEAN ItemProvidesRobotLaserBonus(UINT16 usItem);
-BOOLEAN ItemIsOnlyInFood(UINT16 usItem);
//Existing functions without header def's, added them here, just incase I'll need to call
//them from the editor.
diff --git a/Utils/XML_Items.cpp b/Utils/XML_Items.cpp
index d1ecf8a6..412a96fa 100644
--- a/Utils/XML_Items.cpp
+++ b/Utils/XML_Items.cpp
@@ -1592,12 +1592,6 @@ itemEndElementHandle(void *userData, const XML_Char *name)
pData->curElement = ELEMENT;
pData->curItem.iTransportGroupMaxProgress = (INT8)atoi(pData->szCharData);
}
- else if (strcmp(name, "FoodSystemExclusive") == 0)
- {
- pData->curElement = ELEMENT;
- if ((BOOLEAN)atol(pData->szCharData))
- pData->curItem.usItemFlag2 |= ITEM_FoodSystemExclusive;
- }
--pData->maxReadDepth;
}
@@ -2231,7 +2225,6 @@ BOOLEAN WriteItemStats()
if (ItemProvidesRobotNightvision(cnt)) FilePrintf(hFile, "\t\t%d\r\n", 1);
if (ItemProvidesRobotLaserBonus(cnt)) FilePrintf(hFile, "\t\t%d\r\n", 1);
if (ItemIsOnlyInDisease(cnt)) FilePrintf(hFile, "\t\t%d\r\n", 1);
- if (ItemIsOnlyInFood(cnt)) FilePrintf(hFile, "\t\t%d\r\n", 1);
FilePrintf(hFile,"\t\r\n");
}