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 );