Added two new tags into Items.xml, <FoodSystemExclusive> and <DiseaseSystemExclusive> which prevents specific items to appear without these systems enabled.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9343 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Shadooow
2022-03-24 05:40:46 +00:00
parent c704e37586
commit 033ae4a191
5 changed files with 47 additions and 6 deletions
+17 -4
View File
@@ -5638,15 +5638,28 @@ void EnableWeaponKitSelectionButtons()
{
if ( !(gMercProfiles[gbCurrentSoldier].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) || gGameExternalOptions.fGearKitsAlwaysAvailable )
{
bool bShow;
INT16 usItem;
for(int i=0; i<NUM_MERCSTARTINGGEAR_KITS; ++i)
{
bShow = false;
for(int j=INV_START_POS; j<NUM_INV_SLOTS; ++j)
{
if(gMercProfileGear[gbCurrentSoldier][i].inv[j] != NONE)
usItem = gMercProfileGear[gbCurrentSoldier][i].inv[j];
if(usItem != NONE)
{
ShowButton( giWeaponboxSelectionButton[i] );
break;
}
bShow = true;
//shadooow: if any of the item in kit is limited to specific system and this system isn't enabled then disable the whole kit from selection
if (((Item[usItem].usLimitedToSystem & 1) && !UsingFoodSystem()) || ((Item[usItem].usLimitedToSystem & 2) && !gGameExternalOptions.fDisease))
{
bShow = false;
break;
}
}
}
if (bShow)
{
ShowButton(giWeaponboxSelectionButton[i]);
}
}
}
+2
View File
@@ -1214,6 +1214,8 @@ typedef struct
BOOLEAN fProvidesRobotCamo;
BOOLEAN fProvidesRobotNightVision;
BOOLEAN fProvidesRobotLaserBonus;
//shadooow: bitflag controlling what system needs to be in play for item to appear
UINT8 usLimitedToSystem;
} INVTYPE;
+6
View File
@@ -1282,6 +1282,12 @@ BOOLEAN ItemIsLegal( UINT16 usItemIndex, BOOLEAN fIgnoreCoolness )
return FALSE;
}
//shadooow: exclude also any item that is limited to specific system and this system isn't enabled
if (((Item[usItemIndex].usLimitedToSystem & 1) && !UsingFoodSystem()) || ((Item[usItemIndex].usLimitedToSystem & 2) && !gGameExternalOptions.fDisease))
{
return FALSE;
}
//if the user has selected the reduced gun list
if( !gGameOptions.fGunNut )
{
+7
View File
@@ -2900,6 +2900,13 @@ BOOLEAN DetermineArmsDealersSellingInventory( )
continue;
}
//shadooow: do not sell any item that is limited to specific system and this system isn't enabled
if (((Item[iter->object.usItem].usLimitedToSystem & 1) && !UsingFoodSystem()) || ((Item[iter->object.usItem].usLimitedToSystem & 2) && !gGameExternalOptions.fDisease))
{
++iter;
continue;
}
bool increment = true;
if (ItemIsSpecial(*iter) == false) {
StoreObjectsInNextFreeDealerInvSlot( &(*iter), gpTempDealersInventory, gbSelectedArmsDealerID );
+15 -2
View File
@@ -309,7 +309,9 @@ itemStartElementHandle(void *userData, const XML_Char *name, const XML_Char **at
strcmp(name, "RobotUtilitySkillGrant") == 0 ||
strcmp(name, "ProvidesRobotCamo") == 0 ||
strcmp(name, "ProvidesRobotNightVision") == 0 ||
strcmp(name, "ProvidesRobotLaserBonus") == 0
strcmp(name, "ProvidesRobotLaserBonus") == 0 ||
strcmp(name, "FoodSystemExclusive") == 0 ||
strcmp(name, "DiseaseSystemExclusive") == 0
)
{
pData->curElement = ELEMENT_PROPERTY;
@@ -1614,8 +1616,19 @@ itemEndElementHandle(void *userData, const XML_Char *name)
pData->curElement == ELEMENT;
pData->curItem.fProvidesRobotLaserBonus = (BOOLEAN)atol(pData->szCharData);
}
else if (strcmp(name, "FoodSystemExclusive") == 0)
{
pData->curElement == ELEMENT;
if (atol(pData->szCharData))
pData->curItem.usLimitedToSystem|= 1;
}
else if (strcmp(name, "DiseaseSystemExclusive") == 0)
{
pData->curElement == ELEMENT;
if (atol(pData->szCharData))
pData->curItem.usLimitedToSystem|= 2;
}
--pData->maxReadDepth;
}