diff --git a/Tactical/Handle UI.h b/Tactical/Handle UI.h
index a4c474ffb..a869c07fb 100644
--- a/Tactical/Handle UI.h
+++ b/Tactical/Handle UI.h
@@ -344,4 +344,6 @@ void PopupMilitiaControlMenu( SOLDIERTYPE *pSoldier ); //lal
void PreventFromTheFreezingBug(SOLDIERTYPE* pSoldier);
+void GetGridNoScreenXY( INT16 sGridNo, INT16 *pScreenX, INT16 *pScreenY );
+
#endif
\ No newline at end of file
diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h
index 0c63eaa4e..c4e1d48ab 100644
--- a/Tactical/Item Types.h
+++ b/Tactical/Item Types.h
@@ -388,6 +388,8 @@ typedef struct
INT16 desertCamobonus;
INT16 snowCamobonus;
+ BOOLEAN scifi; // item only available in scifi mode
+
UINT16 defaultattachment;
} INVTYPE;
diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp
index fd11305d7..21f78f2ce 100644
--- a/Tactical/Items.cpp
+++ b/Tactical/Items.cpp
@@ -1188,6 +1188,12 @@ BOOLEAN ItemIsLegal( UINT16 usItemIndex )
}
}
+ if ( gGameOptions.ubGameStyle == STYLE_REALISTIC && Item[usItemIndex].scifi )
+ {
+ return FALSE;
+ }
+
+
return(TRUE);
}
diff --git a/Utils/XML_Items.cpp b/Utils/XML_Items.cpp
index 20e513eef..7c19cf27c 100644
--- a/Utils/XML_Items.cpp
+++ b/Utils/XML_Items.cpp
@@ -205,6 +205,7 @@ itemStartElementHandle(void *userData, const char *name, const char **atts)
strcmp(name, "DesertCamoBonus") == 0 ||
strcmp(name, "SnowCamoBonus") == 0 ||
strcmp(name, "StealthBonus") == 0 ||
+ strcmp(name, "SciFi") == 0 ||
strcmp(name, "fFlags") == 0 ))
{
@@ -688,6 +689,11 @@ itemEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT;
pData->curItem.thermaloptics = (BOOLEAN) atol(pData->szCharData);
}
+ else if(strcmp(name, "SciFi") == 0)
+ {
+ pData->curElement = ELEMENT;
+ pData->curItem.scifi = (BOOLEAN) atol(pData->szCharData);
+ }
else if(strcmp(name, "HideMuzzleFlash") == 0)
{
pData->curElement = ELEMENT;
@@ -918,23 +924,22 @@ itemEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT;
pData->curItem.firstaidkit = (BOOLEAN) atol(pData->szCharData);
}
-
else if(strcmp(name, "MetalDetector") == 0)
{
pData->curElement = ELEMENT;
pData->curItem.metaldetector = (BOOLEAN) atol(pData->szCharData);
}
- else if(strcmp(name, "PercentTunnelVision") == 0)
+ if(strcmp(name, "PercentTunnelVision") == 0) //Madd: had to scrap the "else" due to a compiler limit
{
pData->curElement = ELEMENT;
pData->curItem.percenttunnelvision = (UINT8) atol(pData->szCharData);
}
- else if(strcmp(name, "Jar") == 0)
+ if(strcmp(name, "Jar") == 0)
{
pData->curElement = ELEMENT;
pData->curItem.jar = (BOOLEAN) atol(pData->szCharData);
}
- else if(strcmp(name, "BestLaserRange") == 0)
+ if(strcmp(name, "BestLaserRange") == 0)
{
pData->curElement = ELEMENT;
pData->curItem.bestlaserrange = (INT16) atol(pData->szCharData);
@@ -1370,6 +1375,7 @@ BOOLEAN WriteItemStats()
FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].notbuyable );
FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].attachment );
FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].biggunlist );
+ FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].scifi );
FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].notineditor );
FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].defaultundroppable );
FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].unaerodynamic );