Data and Source v1.13 Mod High Resolution version from 2006-04-15

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@25 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
lalien
2006-04-19 18:16:27 +00:00
parent 8b2d0e33aa
commit 8d448f9c64
83 changed files with 2125 additions and 3651 deletions
+32 -23
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="Editor" Name="Editor"
SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA" SccProjectName=""
SccLocalPath="..\..\..\ja2\build"> SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
@@ -21,7 +23,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\TileEngine,..\Utils,..\TacticalAI,..\Tactical,..\strategic,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -35,7 +37,8 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -72,8 +75,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Tactical,\ja2\build\strategic" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Editor All.h" PrecompiledHeaderThrough="Editor All.h"
@@ -85,7 +88,8 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -122,8 +126,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Tactical,\ja2\build\strategic" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Editor All.h" PrecompiledHeaderThrough="Editor All.h"
@@ -135,7 +139,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -172,8 +176,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Tactical,\ja2\build\strategic" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="JA2DEMO;_DEBUG;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="JA2DEMO;_DEBUG;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Editor All.h" PrecompiledHeaderThrough="Editor All.h"
@@ -185,7 +189,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -222,8 +226,13 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="2" GlobalOptimizations="TRUE"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\tacticalai,..\strategic,..\Laptop,.\" InlineFunctionExpansion="1"
EnableIntrinsicFunctions="TRUE"
FavorSizeOrSpeed="1"
OptimizeForProcessor="3"
OptimizeForWindowsApplication="TRUE"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE" PreprocessorDefinitions="PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -237,7 +246,7 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -275,8 +284,8 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Tactical,\ja2\build\strategic" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
@@ -289,7 +298,7 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -327,7 +336,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\TileEngine,..\Utils,..\TacticalAI,..\Tactical,..\strategic,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE" PreprocessorDefinitions="NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -341,7 +350,7 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -378,7 +387,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\tacticalai,..\strategic,..\Laptop,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
@@ -391,7 +400,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0" CompileAs="2"
DisableSpecificWarnings="4292"/> DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
+1 -1
View File
@@ -3098,4 +3098,4 @@ UINT8 GetCurrentSummaryVersion()
return 0; return 0;
} }
#endif #endif
+16 -17
View File
@@ -49,7 +49,6 @@
#define GIO_OFFSET_TO_TOGGLE_BOX 250 #define GIO_OFFSET_TO_TOGGLE_BOX 250
#define GIO_OFFSET_TO_TOGGLE_BOX_Y 9 #define GIO_OFFSET_TO_TOGGLE_BOX_Y 9
#define GIO_DIF_SETTINGS_X iScreenWidthOffset + 20 #define GIO_DIF_SETTINGS_X iScreenWidthOffset + 20
#define GIO_DIF_SETTINGS_Y iScreenHeightOffset + 75 #define GIO_DIF_SETTINGS_Y iScreenHeightOffset + 75
#define GIO_DIF_SETTINGS_WIDTH GIO_OFFSET_TO_TOGGLE_BOX - GIO_OFFSET_TO_TEXT #define GIO_DIF_SETTINGS_WIDTH GIO_OFFSET_TO_TOGGLE_BOX - GIO_OFFSET_TO_TEXT
@@ -73,7 +72,6 @@
#define GIO_BR_SETTING_X iScreenWidthOffset + 340 #define GIO_BR_SETTING_X iScreenWidthOffset + 340
#define GIO_BR_SETTING_Y GIO_DIF_SETTINGS_Y #define GIO_BR_SETTING_Y GIO_DIF_SETTINGS_Y
#define GIO_BR_SETTING_WIDTH GIO_DIF_SETTINGS_WIDTH #define GIO_BR_SETTING_WIDTH GIO_DIF_SETTINGS_WIDTH
#define GIO_IRON_MAN_SETTING_X iScreenWidthOffset + 20 #define GIO_IRON_MAN_SETTING_X iScreenWidthOffset + 20
#define GIO_IRON_MAN_SETTING_Y iScreenHeightOffset + 355 #define GIO_IRON_MAN_SETTING_Y iScreenHeightOffset + 355
#define GIO_IRON_MAN_SETTING_WIDTH GIO_DIF_SETTINGS_WIDTH #define GIO_IRON_MAN_SETTING_WIDTH GIO_DIF_SETTINGS_WIDTH
@@ -453,7 +451,7 @@ BOOLEAN EnterGIOScreen()
ButtonList[ guiBROptionToggles[ GIO_BR_AWESOME ] ]->uiFlags |= BUTTON_CLICKED_ON; ButtonList[ guiBROptionToggles[ GIO_BR_AWESOME ] ]->uiFlags |= BUTTON_CLICKED_ON;
break; break;
} }
/*
// JA2Gold: iron man buttons // JA2Gold: iron man buttons
usPosY = GIO_IRON_MAN_SETTING_Y - GIO_OFFSET_TO_TOGGLE_BOX_Y; usPosY = GIO_IRON_MAN_SETTING_Y - GIO_OFFSET_TO_TOGGLE_BOX_Y;
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++) for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
@@ -469,10 +467,11 @@ BOOLEAN EnterGIOScreen()
ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags |= BUTTON_CLICKED_ON; ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags |= BUTTON_CLICKED_ON;
else else
ButtonList[ guiGameSaveToggles[ GIO_CAN_SAVE ] ]->uiFlags |= BUTTON_CLICKED_ON; ButtonList[ guiGameSaveToggles[ GIO_CAN_SAVE ] ]->uiFlags |= BUTTON_CLICKED_ON;
*/
// //
// Toggle Air Strikes On / Off // Check box to toggle Gun options
// //
usPosY = GIO_GUN_SETTINGS_Y - GIO_OFFSET_TO_TOGGLE_BOX_Y; usPosY = GIO_GUN_SETTINGS_Y - GIO_OFFSET_TO_TOGGLE_BOX_Y;
@@ -486,7 +485,7 @@ BOOLEAN EnterGIOScreen()
usPosY += GIO_GAP_BN_SETTINGS; usPosY += GIO_GAP_BN_SETTINGS;
} }
if( gGameOptions.fAirStrikes ) if( gGameOptions.fGunNut )
ButtonList[ guiGunOptionToggles[ GIO_GUN_NUT ] ]->uiFlags |= BUTTON_CLICKED_ON; ButtonList[ guiGunOptionToggles[ GIO_GUN_NUT ] ]->uiFlags |= BUTTON_CLICKED_ON;
else else
ButtonList[ guiGunOptionToggles[ GIO_REDUCED_GUNS ] ]->uiFlags |= BUTTON_CLICKED_ON; ButtonList[ guiGunOptionToggles[ GIO_REDUCED_GUNS ] ]->uiFlags |= BUTTON_CLICKED_ON;
@@ -568,9 +567,10 @@ BOOLEAN ExitGIOScreen()
for( cnt=0; cnt<NUM_BR_OPTIONS; cnt++) for( cnt=0; cnt<NUM_BR_OPTIONS; cnt++)
RemoveButton( guiBROptionToggles[ cnt ] ); RemoveButton( guiBROptionToggles[ cnt ] );
// JA2Gold: remove iron man buttons /* // JA2Gold: remove iron man buttons
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++) for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
RemoveButton( guiGameSaveToggles[ cnt ] ); RemoveButton( guiGameSaveToggles[ cnt ] );
*/
gfGIOButtonsAllocated = FALSE; gfGIOButtonsAllocated = FALSE;
@@ -726,6 +726,7 @@ BOOLEAN RenderGIOScreen()
DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT), usPosY, GIO_DIF_SETTINGS_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_AWESOME_TEXT ], FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED ); DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT), usPosY, GIO_DIF_SETTINGS_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_AWESOME_TEXT ], FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED );
// JA2Gold: Display the iron man Settings Title Text // JA2Gold: Display the iron man Settings Title Text
/*
DisplayWrappedString( GIO_IRON_MAN_SETTING_X, (UINT16)(GIO_IRON_MAN_SETTING_Y-GIO_GAP_BN_SETTINGS), GIO_DIF_SETTINGS_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_GAME_SAVE_STYLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED ); DisplayWrappedString( GIO_IRON_MAN_SETTING_X, (UINT16)(GIO_IRON_MAN_SETTING_Y-GIO_GAP_BN_SETTINGS), GIO_DIF_SETTINGS_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_GAME_SAVE_STYLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED );
usPosY = GIO_IRON_MAN_SETTING_Y+2; usPosY = GIO_IRON_MAN_SETTING_Y+2;
@@ -736,6 +737,7 @@ BOOLEAN RenderGIOScreen()
usPosY += 20; usPosY += 20;
DisplayWrappedString( (UINT16)(GIO_IRON_MAN_SETTING_X+GIO_OFFSET_TO_TEXT), usPosY, 220, 2, FONT12ARIAL, GIO_TOGGLE_TEXT_COLOR, zNewTacticalMessages[ TCTL_MSG__CANNOT_SAVE_DURING_COMBAT ], FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED ); DisplayWrappedString( (UINT16)(GIO_IRON_MAN_SETTING_X+GIO_OFFSET_TO_TEXT), usPosY, 220, 2, FONT12ARIAL, GIO_TOGGLE_TEXT_COLOR, zNewTacticalMessages[ TCTL_MSG__CANNOT_SAVE_DURING_COMBAT ], FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED );
*/
return( TRUE ); return( TRUE );
} }
@@ -1195,14 +1197,14 @@ void RestoreGIOButtonBackGrounds()
} }
*/ */
//Check box to toggle iron man options /* //Check box to toggle iron man options
usPosY = GIO_IRON_MAN_SETTING_Y-GIO_OFFSET_TO_TOGGLE_BOX_Y; usPosY = GIO_IRON_MAN_SETTING_Y-GIO_OFFSET_TO_TOGGLE_BOX_Y;
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++) for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
{ {
RestoreExternBackgroundRect( GIO_IRON_MAN_SETTING_X+GIO_OFFSET_TO_TOGGLE_BOX, usPosY, 34, 29 ); RestoreExternBackgroundRect( GIO_IRON_MAN_SETTING_X+GIO_OFFSET_TO_TOGGLE_BOX, usPosY, 34, 29 );
usPosY += GIO_GAP_BN_SETTINGS; usPosY += GIO_GAP_BN_SETTINGS;
} }
*/
// Madd // Madd
usPosY = GIO_BR_SETTING_Y-GIO_OFFSET_TO_TOGGLE_BOX_Y; usPosY = GIO_BR_SETTING_Y-GIO_OFFSET_TO_TOGGLE_BOX_Y;
@@ -1218,16 +1220,15 @@ void DoneFadeOutForExitGameInitOptionScreen( void )
{ {
// loop through and get the status of all the buttons // loop through and get the status of all the buttons
// Madd // Madd
// gGameOptions.fGunNut = GetCurrentGunButtonSetting(); gGameOptions.fGunNut = GetCurrentGunButtonSetting();
gGameOptions.fGunNut = TRUE;
gGameOptions.fAirStrikes = GetCurrentGunButtonSetting();
gGameOptions.ubGameStyle = GetCurrentGameStyleButtonSetting(); gGameOptions.ubGameStyle = GetCurrentGameStyleButtonSetting();
gGameOptions.ubDifficultyLevel = GetCurrentDifficultyButtonSetting() + 1; gGameOptions.ubDifficultyLevel = GetCurrentDifficultyButtonSetting() + 1;
// JA2Gold: no more timed turns setting // JA2Gold: no more timed turns setting
//gGameOptions.fTurnTimeLimit = GetCurrentTimedTurnsButtonSetting(); //gGameOptions.fTurnTimeLimit = GetCurrentTimedTurnsButtonSetting();
// JA2Gold: iron man
gGameOptions.fIronManMode = GetCurrentGameSaveButtonSetting(); //gGameOptions.fIronManMode = GetCurrentGameSaveButtonSetting();
// Madd
gGameOptions.fIronManMode = FALSE;
switch ( GetCurrentBROptionButtonSetting() ) switch ( GetCurrentBROptionButtonSetting() )
{ {
case GIO_BR_GOOD: case GIO_BR_GOOD:
@@ -1326,9 +1327,7 @@ void ConfirmGioDifSettingMessageBoxCallBack( UINT8 bExitValue )
BOOLEAN DisplayMessageToUserAboutIronManMode() BOOLEAN DisplayMessageToUserAboutIronManMode()
{ {
// Madd // Madd
//UINT8 ubIronManMode = FALSE; // GetCurrentGameSaveButtonSetting(); UINT8 ubIronManMode = FALSE; // GetCurrentGameSaveButtonSetting();
UINT8 ubIronManMode = GetCurrentGameSaveButtonSetting();
//if the user has selected IRON MAN mode //if the user has selected IRON MAN mode
if( ubIronManMode ) if( ubIronManMode )
+2 -2
View File
@@ -654,8 +654,8 @@ void DisplayGameSettings( )
//ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_GOOD_TEXT ] ); //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_GOOD_TEXT ] );
// ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_GAME_SAVE_STYLE_TEXT ], gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT + gGameOptions.fIronManMode ] ); // ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_GAME_SAVE_STYLE_TEXT ], gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT + gGameOptions.fIronManMode ] );
// Air Strikes Option // Tons of Guns Option
if( gGameOptions.fAirStrikes ) if( gGameOptions.fGunNut )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_GUN_OPTIONS_TEXT ], gzGIOScreenText[ GIO_GUN_NUT_TEXT ] ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_GUN_OPTIONS_TEXT ], gzGIOScreenText[ GIO_GUN_NUT_TEXT ] );
else else
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_GUN_OPTIONS_TEXT ], gzGIOScreenText[ GIO_REDUCED_GUNS_TEXT ] ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_GUN_OPTIONS_TEXT ], gzGIOScreenText[ GIO_REDUCED_GUNS_TEXT ] );
+1 -1
View File
@@ -28,7 +28,7 @@ INT16 zVersionLabel[16] = { L"Beta v. 0.98" };
#endif #endif
INT8 czVersionNumber[16] = { "Build 11.08.05" }; INT8 czVersionNumber[16] = { "Build 04.15.06" };
INT16 zTrackingNumber[16] = { L"Z" }; INT16 zTrackingNumber[16] = { L"Z" };
+11
View File
@@ -103,6 +103,14 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
if(!ReadInAmmoStats(fileName)) if(!ReadInAmmoStats(fileName))
return FALSE; return FALSE;
// Lesh: added this, begin
strcpy(fileName, directoryName);
strcat(fileName, BURSTSOUNDSFILENAME);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
if(!ReadInBurstSoundArray(fileName))
return FALSE;
// Lesh: end
strcpy(fileName, directoryName); strcpy(fileName, directoryName);
strcat(fileName, ITEMSFILENAME); strcat(fileName, ITEMSFILENAME);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
@@ -147,6 +155,9 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
if(!ReadInMergeStats(fileName)) if(!ReadInMergeStats(fileName))
return FALSE; return FALSE;
//if(!WriteMergeStats())
// return FALSE;
strcpy(fileName, directoryName); strcpy(fileName, directoryName);
strcat(fileName, ATTACHMENTCOMBOMERGESFILENAME); strcat(fileName, ATTACHMENTCOMBOMERGESFILENAME);
if(!ReadInAttachmentComboMergeStats(fileName)) if(!ReadInAttachmentComboMergeStats(fileName))
BIN
View File
Binary file not shown.
+37 -1270
View File
File diff suppressed because it is too large Load Diff
+161 -161
View File
@@ -1,46 +1,46 @@
Microsoft Visual Studio Solution File, Format Version 8.00 Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Editor", "Editor\Editor.vcproj", "{CB33540F-3AFF-4985-86FE-5E899B570133}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Editor", "Editor\Editor.vcproj", "{33CD085A-A03E-4D2C-970A-D69CD5466806}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Laptop", "Laptop\Laptop.vcproj", "{FEE1FCB1-6A45-4247-A440-3561F33B16A3}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Laptop", "Laptop\Laptop.vcproj", "{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Standard Gaming Platform", "Standard Gaming Platform\Standard Gaming Platform.vcproj", "{4D15E8C7-9458-403C-A34B-15DF2CAF3277}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Standard Gaming Platform", "Standard Gaming Platform\Standard Gaming Platform.vcproj", "{1D052886-AE6B-437A-BE0C-D074CA940818}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Strategic", "Strategic\Strategic.vcproj", "{5C428253-7443-4C4B-A5F2-E079DA2E6933}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Strategic", "Strategic\Strategic.vcproj", "{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tactical", "Tactical\Tactical.vcproj", "{F80B55A6-E228-4EB6-B915-4815E01CEA76}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tactical", "Tactical\Tactical.vcproj", "{2124B612-013E-492D-911C-B5737D60EEDF}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TacticalAI", "TacticalAI\TacticalAI.vcproj", "{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TacticalAI", "TacticalAI\TacticalAI.vcproj", "{D76119D7-B5EB-4F61-BFB9-F582B06F889B}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TileEngine", "TileEngine\TileEngine.vcproj", "{262D8F88-8266-4B16-999E-B5C0B12EFF01}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TileEngine", "TileEngine\TileEngine.vcproj", "{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Utils", "Utils\Utils.vcproj", "{6B1D57C9-A579-452E-8642-6ECF3E9FD399}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Utils", "Utils\Utils.vcproj", "{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ja2", "JA2.vcproj", "{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ja2", "JA2.vcproj", "{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{CB33540F-3AFF-4985-86FE-5E899B570133} = {CB33540F-3AFF-4985-86FE-5E899B570133} {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5} = {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}
{5C428253-7443-4C4B-A5F2-E079DA2E6933} = {5C428253-7443-4C4B-A5F2-E079DA2E6933} {E0E16C88-C352-4C37-AC27-BFF3FDF18E82} = {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6} = {94DA4574-7108-4CDA-B43F-DA83B1C3EDF6} {33CD085A-A03E-4D2C-970A-D69CD5466806} = {33CD085A-A03E-4D2C-970A-D69CD5466806}
{262D8F88-8266-4B16-999E-B5C0B12EFF01} = {262D8F88-8266-4B16-999E-B5C0B12EFF01} {D76119D7-B5EB-4F61-BFB9-F582B06F889B} = {D76119D7-B5EB-4F61-BFB9-F582B06F889B}
{F80B55A6-E228-4EB6-B915-4815E01CEA76} = {F80B55A6-E228-4EB6-B915-4815E01CEA76} {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2} = {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}
{FEE1FCB1-6A45-4247-A440-3561F33B16A3} = {FEE1FCB1-6A45-4247-A440-3561F33B16A3} {2124B612-013E-492D-911C-B5737D60EEDF} = {2124B612-013E-492D-911C-B5737D60EEDF}
{4D15E8C7-9458-403C-A34B-15DF2CAF3277} = {4D15E8C7-9458-403C-A34B-15DF2CAF3277} {1D052886-AE6B-437A-BE0C-D074CA940818} = {1D052886-AE6B-437A-BE0C-D074CA940818}
{6B1D57C9-A579-452E-8642-6ECF3E9FD399} = {6B1D57C9-A579-452E-8642-6ECF3E9FD399} {97E691B8-7A39-4E86-B69A-BD6BD5C31F32} = {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}
EndProjectSection EndProjectSection
EndProject EndProject
Global Global
@@ -55,150 +55,150 @@ Global
Release with Debug Info = Release with Debug Info Release with Debug Info = Release with Debug Info
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution GlobalSection(ProjectConfiguration) = postSolution
{CB33540F-3AFF-4985-86FE-5E899B570133}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Bounds Checker.Build.0 = Bounds Checker|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Bounds Checker.Build.0 = Bounds Checker|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Debug.ActiveCfg = Debug|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Debug.ActiveCfg = Debug|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Debug.Build.0 = Debug|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Debug.Build.0 = Debug|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Debug Demo.ActiveCfg = Debug Demo|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Debug Demo.ActiveCfg = Debug Demo|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Debug Demo.Build.0 = Debug Demo|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Debug Demo.Build.0 = Debug Demo|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release.ActiveCfg = Release|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Release.ActiveCfg = Release|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release.Build.0 = Release|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Release.Build.0 = Release|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release Demo.ActiveCfg = Release Demo|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Release Demo.ActiveCfg = Release Demo|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release Demo.Build.0 = Release Demo|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Release Demo.Build.0 = Release Demo|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {33CD085A-A03E-4D2C-970A-D69CD5466806}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Bounds Checker.Build.0 = Bounds Checker|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Bounds Checker.Build.0 = Bounds Checker|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Debug.ActiveCfg = Debug|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Debug.ActiveCfg = Debug|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Debug.Build.0 = Debug|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Debug.Build.0 = Debug|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Debug Demo.ActiveCfg = Debug Demo|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Debug Demo.ActiveCfg = Debug Demo|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Debug Demo.Build.0 = Debug Demo|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Debug Demo.Build.0 = Debug Demo|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release.ActiveCfg = Release|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release.ActiveCfg = Release|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release.Build.0 = Release|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release.Build.0 = Release|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release Demo.ActiveCfg = Release Demo|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release Demo.ActiveCfg = Release Demo|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release Demo.Build.0 = Release Demo|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release Demo.Build.0 = Release Demo|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Bounds Checker.Build.0 = Bounds Checker|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Bounds Checker.Build.0 = Bounds Checker|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Debug.ActiveCfg = Debug|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Debug.ActiveCfg = Debug|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Debug.Build.0 = Debug|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Debug.Build.0 = Debug|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Debug Demo.ActiveCfg = Debug Demo|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Debug Demo.ActiveCfg = Debug Demo|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Debug Demo.Build.0 = Debug Demo|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Debug Demo.Build.0 = Debug Demo|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Demo Bounds Checker.ActiveCfg = Bounds Checker|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Demo Bounds Checker.ActiveCfg = Bounds Checker|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Demo Bounds Checker.Build.0 = Bounds Checker|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Demo Bounds Checker.Build.0 = Bounds Checker|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release.ActiveCfg = Release|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Release.ActiveCfg = Release|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release.Build.0 = Release|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Release.Build.0 = Release|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release Demo.ActiveCfg = Release Demo|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Release Demo.ActiveCfg = Release Demo|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release Demo.Build.0 = Release Demo|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Release Demo.Build.0 = Release Demo|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {1D052886-AE6B-437A-BE0C-D074CA940818}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Bounds Checker.Build.0 = Bounds Checker|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Bounds Checker.Build.0 = Bounds Checker|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Debug.ActiveCfg = Debug|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Debug.ActiveCfg = Debug|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Debug.Build.0 = Debug|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Debug.Build.0 = Debug|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Debug Demo.ActiveCfg = Debug Demo|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Debug Demo.ActiveCfg = Debug Demo|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Debug Demo.Build.0 = Debug Demo|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Debug Demo.Build.0 = Debug Demo|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release.ActiveCfg = Release|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release.ActiveCfg = Release|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release.Build.0 = Release|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release.Build.0 = Release|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release Demo.ActiveCfg = Release Demo|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release Demo.ActiveCfg = Release Demo|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release Demo.Build.0 = Release Demo|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release Demo.Build.0 = Release Demo|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Bounds Checker.Build.0 = Bounds Checker|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Bounds Checker.Build.0 = Bounds Checker|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Debug.ActiveCfg = Debug|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Debug.ActiveCfg = Debug|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Debug.Build.0 = Debug|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Debug.Build.0 = Debug|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Debug Demo.ActiveCfg = Debug Demo|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Debug Demo.ActiveCfg = Debug Demo|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Debug Demo.Build.0 = Debug Demo|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Debug Demo.Build.0 = Debug Demo|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release.ActiveCfg = Release|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Release.ActiveCfg = Release|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release.Build.0 = Release|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Release.Build.0 = Release|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release Demo.ActiveCfg = Release Demo|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Release Demo.ActiveCfg = Release Demo|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release Demo.Build.0 = Release Demo|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Release Demo.Build.0 = Release Demo|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {2124B612-013E-492D-911C-B5737D60EEDF}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Bounds Checker.Build.0 = Bounds Checker|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Bounds Checker.Build.0 = Bounds Checker|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Debug.ActiveCfg = Debug|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Debug.ActiveCfg = Debug|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Debug.Build.0 = Debug|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Debug.Build.0 = Debug|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Debug Demo.ActiveCfg = Debug Demo|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Debug Demo.ActiveCfg = Debug Demo|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Debug Demo.Build.0 = Debug Demo|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Debug Demo.Build.0 = Debug Demo|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release.ActiveCfg = Release|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release.ActiveCfg = Release|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release.Build.0 = Release|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release.Build.0 = Release|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release Demo.ActiveCfg = Release Demo|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release Demo.ActiveCfg = Release Demo|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release Demo.Build.0 = Release Demo|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release Demo.Build.0 = Release Demo|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Bounds Checker.Build.0 = Bounds Checker|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Bounds Checker.Build.0 = Bounds Checker|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Debug.ActiveCfg = Debug|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Debug.ActiveCfg = Debug|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Debug.Build.0 = Debug|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Debug.Build.0 = Debug|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Debug Demo.ActiveCfg = Debug Demo|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Debug Demo.ActiveCfg = Debug Demo|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Debug Demo.Build.0 = Debug Demo|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Debug Demo.Build.0 = Debug Demo|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release.ActiveCfg = Release|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release.ActiveCfg = Release|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release.Build.0 = Release|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release.Build.0 = Release|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release Demo.ActiveCfg = Release Demo|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release Demo.ActiveCfg = Release Demo|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release Demo.Build.0 = Release Demo|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release Demo.Build.0 = Release Demo|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Bounds Checker.Build.0 = Bounds Checker|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Bounds Checker.Build.0 = Bounds Checker|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Debug.ActiveCfg = Debug|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Debug.ActiveCfg = Debug|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Debug.Build.0 = Debug|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Debug.Build.0 = Debug|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Debug Demo.ActiveCfg = Debug Demo|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Debug Demo.ActiveCfg = Debug Demo|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Debug Demo.Build.0 = Debug Demo|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Debug Demo.Build.0 = Debug Demo|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release.ActiveCfg = Release|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release.ActiveCfg = Release|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release.Build.0 = Release|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release.Build.0 = Release|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release Demo.ActiveCfg = Release Demo|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release Demo.ActiveCfg = Release Demo|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release Demo.Build.0 = Release Demo|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release Demo.Build.0 = Release Demo|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Bounds Checker.ActiveCfg = Bounds Checker|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Bounds Checker.Build.0 = Bounds Checker|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Bounds Checker.Build.0 = Bounds Checker|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Debug.ActiveCfg = Debug|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Debug.ActiveCfg = Debug|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Debug.Build.0 = Debug|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Debug.Build.0 = Debug|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Debug Demo.ActiveCfg = Debug Demo|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Debug Demo.ActiveCfg = Debug Demo|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Debug Demo.Build.0 = Debug Demo|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Debug Demo.Build.0 = Debug Demo|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release.ActiveCfg = Release|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release.ActiveCfg = Release|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release.Build.0 = Release|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release.Build.0 = Release|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release Demo.ActiveCfg = Release Demo|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release Demo.ActiveCfg = Release Demo|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release Demo.Build.0 = Release Demo|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release Demo.Build.0 = Release Demo|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release with Debug Info.Build.0 = Release with Debug Info|Win32 {32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection EndGlobalSection
BIN
View File
Binary file not shown.
+57 -35
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="ja2" Name="ja2"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA" SccProjectName=""
SccLocalPath="..\..\ja2\build"> SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
@@ -20,7 +22,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories=".\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Editor,.\Strategic,.\laptop,.\,..\" AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
@@ -33,14 +35,14 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="0" CompileAs="2"
DisableSpecificWarnings="4292"/> DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="libexpatMT.lib mss32.lib winmm.lib smackw32.lib" AdditionalDependencies="libexpatMT.lib mss32.lib winmm.lib smackw32.lib"
OutputFile="C:\Games\Jagged Alliance 2 v1.13\ja2_debug_wanne.exe" OutputFile="C:\games\Jagged Alliance 2 Gold\ja2_debug.exe"
LinkIncremental="2" LinkIncremental="2"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\" AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
@@ -90,8 +92,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\Laptop" AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="JA2 All.h" PrecompiledHeaderThrough="JA2 All.h"
@@ -103,15 +105,16 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib smackw32.lib mss32.lib" AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="d:\ja2demo\ja2.exe" OutputFile="d:\ja2demo\ja2.exe"
LinkIncremental="2" LinkIncremental="2"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug Demo/ja2.pdb" ProgramDatabaseFile=".\Debug Demo/ja2.pdb"
GenerateMapFile="TRUE" GenerateMapFile="TRUE"
@@ -157,8 +160,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\Laptop" AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="JA2 All.h" PrecompiledHeaderThrough="JA2 All.h"
@@ -170,15 +173,16 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib smackw32.lib mss32.lib" AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="..\..\ja2.exe" OutputFile="d:\ja2demo\ja2.exe"
LinkIncremental="2" LinkIncremental="2"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Demo Bounds Checker/ja2.pdb" ProgramDatabaseFile=".\Demo Bounds Checker/ja2.pdb"
GenerateMapFile="TRUE" GenerateMapFile="TRUE"
@@ -227,7 +231,7 @@
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
OptimizeForProcessor="1" OptimizeForProcessor="1"
AdditionalIncludeDirectories=".\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\laptop,.\" AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -242,15 +246,16 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib smackw32.lib mss32.lib" AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="d:\ja2demo\ja2.exe" OutputFile="d:\ja2demo\ja2.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
GenerateMapFile="TRUE" GenerateMapFile="TRUE"
MapFileName=".\Demo Release with Debug/ja2.map" MapFileName=".\Demo Release with Debug/ja2.map"
@@ -298,10 +303,11 @@
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
OptimizeForProcessor="1" OptimizeForProcessor="1"
AdditionalIncludeDirectories=".\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\laptop,.\" AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
BufferSecurityCheck="FALSE"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="JA2 All.h" PrecompiledHeaderThrough="JA2 All.h"
@@ -310,21 +316,24 @@
ObjectFile=".\Release with Debug/" ObjectFile=".\Release with Debug/"
ProgramDataBaseFileName=".\Release with Debug/" ProgramDataBaseFileName=".\Release with Debug/"
BrowseInformation="1" BrowseInformation="1"
WarningLevel="4" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib" AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="..\ja2_cvs.exe" OutputFile="C:\games\Jagged Alliance 2 Gold\ja2_reldbg.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=""
IgnoreDefaultLibraryNames=""
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
GenerateMapFile="TRUE" GenerateMapFile="TRUE"
MapFileName=".\Release with Debug/ja2_cvs.map" MapFileName=".\Release with Debug/ja2.map"
SubSystem="2" SubSystem="2"
TargetMachine="1"/> TargetMachine="1"/>
<Tool <Tool
@@ -366,8 +375,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\Laptop" AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="JA2 All.h" PrecompiledHeaderThrough="JA2 All.h"
@@ -379,15 +388,17 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="4" DebugInformationFormat="4"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="vtuneapi.lib winmm.lib smackw32.lib mss32.lib" AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="\ja2\ja2.exe" OutputFile="\ja2\ja2.exe"
LinkIncremental="2" LinkIncremental="2"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Bounds Checker/ja2.pdb" ProgramDatabaseFile=".\Bounds Checker/ja2.pdb"
GenerateMapFile="TRUE" GenerateMapFile="TRUE"
@@ -436,8 +447,8 @@
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
OptimizeForProcessor="1" OptimizeForProcessor="1"
AdditionalIncludeDirectories="\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\laptop" AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
@@ -451,15 +462,16 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib smackw32.lib mss32.lib" AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="d:\ja2demo\ja2.exe" OutputFile="d:\ja2demo\ja2.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE" GenerateDebugInformation="TRUE"
GenerateMapFile="TRUE" GenerateMapFile="TRUE"
MapFileName=".\Release Demo/ja2.map" MapFileName=".\Release Demo/ja2.map"
@@ -505,9 +517,13 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions="/O2b2 " AdditionalOptions="/O2b2 "
Optimization="2" Optimization="2"
InlineFunctionExpansion="2" GlobalOptimizations="TRUE"
OptimizeForProcessor="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Editor,.\Strategic,.\laptop,.\" EnableIntrinsicFunctions="TRUE"
FavorSizeOrSpeed="1"
OptimizeForProcessor="3"
OptimizeForWindowsApplication="TRUE"
AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE" PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -522,15 +538,18 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib" AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="C:\Games\Jagged Alliance 2 v1.13\ja2_release_wanne.exe" OutputFile="C:\Games\Jagged Alliance 2 Gold\ja2.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
IgnoreDefaultLibraryNames=""
GenerateMapFile="TRUE" GenerateMapFile="TRUE"
MapFileName=".\Release/ja2_cvs.map" MapFileName=".\Release/ja2_cvs.map"
SubSystem="2" SubSystem="2"
@@ -2377,6 +2396,9 @@
<File <File
RelativePath="GameSettings.h"> RelativePath="GameSettings.h">
</File> </File>
<File
RelativePath=".\Init.h">
</File>
<File <File
RelativePath="JA2 All.h"> RelativePath="JA2 All.h">
</File> </File>
+4 -4
View File
@@ -1209,8 +1209,8 @@ void SetFirstLastPagesForNew( UINT32 uiClassMask )
UINT16 i; UINT16 i;
INT16 sFirst = -1; INT16 sFirst = -1;
INT16 sLast = -1; INT16 sLast = -1;
UINT8 ubPages=0; UINT16 ubPages=0;
UINT8 ubNumItems=0; UINT16 ubNumItems=0;
gubCurPage = 0; gubCurPage = 0;
@@ -1254,8 +1254,8 @@ void SetFirstLastPagesForUsed()
UINT16 i; UINT16 i;
INT16 sFirst = -1; INT16 sFirst = -1;
INT16 sLast = -1; INT16 sLast = -1;
UINT8 ubPages=0; UINT16 ubPages=0;
UINT8 ubNumItems=0; UINT16 ubNumItems=0;
gubCurPage = 0; gubCurPage = 0;
+1 -1
View File
@@ -1244,7 +1244,7 @@ void Print8CharacterOnlyString( void )
BOOLEAN CheckCharacterInputForEgg( void ) BOOLEAN CheckCharacterInputForEgg( void )
{ {
MERC_HIRE_STRUCT HireMercStruct; // MERC_HIRE_STRUCT HireMercStruct;
#ifndef JA2BETAVERSION #ifndef JA2BETAVERSION
return( FALSE ); return( FALSE );
+36 -96
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="Laptop" Name="Laptop"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA" SccProjectName=""
SccLocalPath="..\..\..\ja2\build"> SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
@@ -21,7 +23,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\TileEngine,..\Utils,..\TacticalAI,..\Editor,..\Tactical,..\strategic,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -36,7 +38,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -74,7 +76,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\TileEngine,..\Utils,..\TacticalAI,..\Editor,..\Tactical,..\strategic,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -89,7 +91,8 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -126,8 +129,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Editor,\ja2\build\Tactical,\ja2\build\strategic" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Laptop All.h" PrecompiledHeaderThrough="Laptop All.h"
@@ -139,7 +142,8 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -177,8 +181,8 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Editor,\ja2\build\Tactical,\ja2\build\strategic" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
@@ -192,7 +196,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -229,8 +233,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Editor,\ja2\build\Tactical,\ja2\build\strategic" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Laptop All.h" PrecompiledHeaderThrough="Laptop All.h"
@@ -242,7 +246,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -279,8 +283,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Editor,\ja2\build\Tactical,\ja2\build\strategic" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Laptop All.h" PrecompiledHeaderThrough="Laptop All.h"
@@ -292,7 +296,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -329,8 +333,13 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\strategic,.\" EnableIntrinsicFunctions="TRUE"
FavorSizeOrSpeed="1"
OptimizeForProcessor="3"
OptimizeForWindowsApplication="TRUE"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE" PreprocessorDefinitions="PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -344,7 +353,7 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -381,7 +390,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\strategic,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
@@ -394,7 +403,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0" CompileAs="2"
DisableSpecificWarnings="4292"/> DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
@@ -3505,79 +3514,7 @@
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="IMP Skill Trait.cpp"> RelativePath=".\IMP Skill Trait.cpp">
<FileConfiguration
Name="Demo Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Demo Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
</File> </File>
<File <File
RelativePath="IMP Text System.cpp"> RelativePath="IMP Text System.cpp">
@@ -4811,7 +4748,7 @@
RelativePath="IMP Portraits.h"> RelativePath="IMP Portraits.h">
</File> </File>
<File <File
RelativePath="IMP Skill Trait.h"> RelativePath=".\IMP Skill Trait.h">
</File> </File>
<File <File
RelativePath="IMP Text System.h"> RelativePath="IMP Text System.h">
@@ -4855,6 +4792,9 @@
<File <File
RelativePath="sirtech.h"> RelativePath="sirtech.h">
</File> </File>
<File
RelativePath=".\Speck Quotes.h">
</File>
<File <File
RelativePath="Store Inventory.h"> RelativePath="Store Inventory.h">
</File> </File>
+2 -1
View File
@@ -1812,7 +1812,7 @@ UINT32 LaptopScreenHandle()
if( gfStartMapScreenToLaptopTransition ) if( gfStartMapScreenToLaptopTransition )
{ {
// WANNE 2: I disabled the animation of the laptop, because the screen redrawing does not work correct! // WANNE 2: I disabled the animation of the laptop, because the screen redrawing does not work correct!
// Madd: It'd be nice if someone who knows more about graphics than I do could re-enable this, at least for 640x480
//Everything is set up to start the transition animation. //Everything is set up to start the transition animation.
//SGPRect SrcRect2, DstRect; //SGPRect SrcRect2, DstRect;
//INT32 iPercentage, iScalePercentage, iFactor; //INT32 iPercentage, iScalePercentage, iFactor;
@@ -2446,6 +2446,7 @@ BOOLEAN LeaveLapTopScreen( void )
if( !gfDontStartTransitionFromLaptop ) if( !gfDontStartTransitionFromLaptop )
{ {
// WANNE 2: I disabled the laptop animation, because the screen redrawing does not work correctly! // WANNE 2: I disabled the laptop animation, because the screen redrawing does not work correctly!
// Madd: It'd be nice if someone who knows more about graphics than I do could re-enable this, at least for 640x480
//SGPRect SrcRect1, SrcRect2, DstRect; //SGPRect SrcRect1, SrcRect2, DstRect;
//INT32 iPercentage, iScalePercentage, iFactor; //INT32 iPercentage, iScalePercentage, iFactor;
BIN
View File
Binary file not shown.
+1 -3
View File
@@ -538,7 +538,6 @@ BOOLEAN SaveGame( UINT8 ubSaveGameID, STR16 pGameDesc )
//Place a message on the screen telling the user that we are saving the game //Place a message on the screen telling the user that we are saving the game
iSaveLoadGameMessageBoxID = PrepareMercPopupBox( iSaveLoadGameMessageBoxID, BASIC_MERC_POPUP_BACKGROUND, BASIC_MERC_POPUP_BORDER, zSaveLoadText[ SLG_SAVING_GAME_MESSAGE ], 300, 0, 0, 0, &usActualWidth, &usActualHeight); iSaveLoadGameMessageBoxID = PrepareMercPopupBox( iSaveLoadGameMessageBoxID, BASIC_MERC_POPUP_BACKGROUND, BASIC_MERC_POPUP_BORDER, zSaveLoadText[ SLG_SAVING_GAME_MESSAGE ], 300, 0, 0, 0, &usActualWidth, &usActualHeight);
usPosX = ( SCREEN_WIDTH - usActualWidth ) / 2 ; usPosX = ( SCREEN_WIDTH - usActualWidth ) / 2 ;
RenderMercPopUpBoxFromIndex( iSaveLoadGameMessageBoxID, usPosX, iScreenHeightOffset + 160, FRAME_BUFFER ); RenderMercPopUpBoxFromIndex( iSaveLoadGameMessageBoxID, usPosX, iScreenHeightOffset + 160, FRAME_BUFFER );
@@ -4547,7 +4546,6 @@ BOOLEAN SaveGeneralInfo( HWFILE hFile )
extern UINT32 guiRainLoop; extern UINT32 guiRainLoop;
//end rain //end rain
BOOLEAN LoadGeneralInfo( HWFILE hFile ) BOOLEAN LoadGeneralInfo( HWFILE hFile )
{ {
UINT32 uiNumBytesRead; UINT32 uiNumBytesRead;
@@ -5471,4 +5469,4 @@ UINT32 CalcJA2EncryptionSet( SAVED_GAME_HEADER * pSaveGameHeader )
} }
return( uiEncryptionSet ); return( uiEncryptionSet );
} }
+31 -20
View File
@@ -48,28 +48,36 @@ extern UINT32 guiBrokenSaveGameVersion;
// //
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
#define SAVE_LOAD_TITLE_FONT FONT14ARIAL #define SAVE_LOAD_TITLE_FONT FONT14ARIAL
#define SAVE_LOAD_TITLE_COLOR FONT_MCOLOR_WHITE #define SAVE_LOAD_TITLE_COLOR FONT_MCOLOR_WHITE
#define SAVE_LOAD_NORMAL_FONT FONT12ARIAL #define SAVE_LOAD_NORMAL_FONT FONT12ARIAL
#define SAVE_LOAD_NORMAL_COLOR 2 #define SAVE_LOAD_NORMAL_COLOR 2//FONT_MCOLOR_DKWHITE//2//FONT_MCOLOR_WHITE
#define SAVE_LOAD_NORMAL_SHADOW_COLOR 118 #define SAVE_LOAD_NORMAL_SHADOW_COLOR 118//121//118//125
/*#define SAVE_LOAD_NORMAL_FONT FONT12ARIAL
#define SAVE_LOAD_NORMAL_COLOR FONT_MCOLOR_DKWHITE//2//FONT_MCOLOR_WHITE
#define SAVE_LOAD_NORMAL_SHADOW_COLOR 2//125
*/
#define SAVE_LOAD_QUICKSAVE_FONT FONT12ARIAL #define SAVE_LOAD_QUICKSAVE_FONT FONT12ARIAL
#define SAVE_LOAD_QUICKSAVE_COLOR 2 #define SAVE_LOAD_QUICKSAVE_COLOR 2//FONT_MCOLOR_DKGRAY//FONT_MCOLOR_WHITE
#define SAVE_LOAD_QUICKSAVE_SHADOW_COLOR 189 #define SAVE_LOAD_QUICKSAVE_SHADOW_COLOR 189//248//2
#define SAVE_LOAD_EMPTYSLOT_FONT FONT12ARIAL #define SAVE_LOAD_EMPTYSLOT_FONT FONT12ARIAL
#define SAVE_LOAD_EMPTYSLOT_COLOR 2 #define SAVE_LOAD_EMPTYSLOT_COLOR 2//125//FONT_MCOLOR_WHITE
#define SAVE_LOAD_EMPTYSLOT_SHADOW_COLOR 121 #define SAVE_LOAD_EMPTYSLOT_SHADOW_COLOR 121//118
#define SAVE_LOAD_HIGHLIGHTED_FONT FONT12ARIAL #define SAVE_LOAD_HIGHLIGHTED_FONT FONT12ARIAL
#define SAVE_LOAD_HIGHLIGHTED_COLOR FONT_MCOLOR_WHITE #define SAVE_LOAD_HIGHLIGHTED_COLOR FONT_MCOLOR_WHITE
#define SAVE_LOAD_HIGHLIGHTED_SHADOW_COLOR 2 #define SAVE_LOAD_HIGHLIGHTED_SHADOW_COLOR 2
#define SAVE_LOAD_SELECTED_FONT FONT12ARIAL #define SAVE_LOAD_SELECTED_FONT FONT12ARIAL
#define SAVE_LOAD_SELECTED_COLOR 2 #define SAVE_LOAD_SELECTED_COLOR 2//145//FONT_MCOLOR_WHITE
#define SAVE_LOAD_SELECTED_SHADOW_COLOR 130 #define SAVE_LOAD_SELECTED_SHADOW_COLOR 130//2
#define SAVE_LOAD_NUMBER_FONT FONT12ARIAL #define SAVE_LOAD_NUMBER_FONT FONT12ARIAL
#define SAVE_LOAD_NUMBER_COLOR FONT_MCOLOR_WHITE #define SAVE_LOAD_NUMBER_COLOR FONT_MCOLOR_WHITE
@@ -78,26 +86,28 @@ extern UINT32 guiBrokenSaveGameVersion;
#define SLG_UNSELECTED_COLOR FONT_MCOLOR_DKWHITE #define SLG_UNSELECTED_COLOR FONT_MCOLOR_DKWHITE
#define SLG_SAVELOCATION_WIDTH 605 #define SLG_SAVELOCATION_WIDTH 605
#define SLG_SAVELOCATION_HEIGHT 30 #define SLG_SAVELOCATION_HEIGHT 30//46
#define SLG_FIRST_SAVED_SPOT_X iScreenWidthOffset + 17 #define SLG_FIRST_SAVED_SPOT_X iScreenWidthOffset + 17
#define SLG_FIRST_SAVED_SPOT_Y iScreenHeightOffset + 49 #define SLG_FIRST_SAVED_SPOT_Y iScreenHeightOffset + 49
#define SLG_GAP_BETWEEN_LOCATIONS 35 #define SLG_GAP_BETWEEN_LOCATIONS 35//47
#define SLG_DATE_OFFSET_X 13 #define SLG_DATE_OFFSET_X 13
#define SLG_DATE_OFFSET_Y 11 #define SLG_DATE_OFFSET_Y 11
#define SLG_SECTOR_OFFSET_X 95 #define SLG_SECTOR_OFFSET_X 95//105//114
#define SLG_SECTOR_OFFSET_Y SLG_DATE_OFFSET_Y #define SLG_SECTOR_OFFSET_Y SLG_DATE_OFFSET_Y
#define SLG_SECTOR_WIDTH 98 #define SLG_SECTOR_WIDTH 98
#define SLG_NUM_MERCS_OFFSET_X 196 #define SLG_NUM_MERCS_OFFSET_X 196//190//SLG_DATE_OFFSET_X
#define SLG_NUM_MERCS_OFFSET_Y SLG_DATE_OFFSET_Y #define SLG_NUM_MERCS_OFFSET_Y SLG_DATE_OFFSET_Y//26
#define SLG_BALANCE_OFFSET_X 260 #define SLG_BALANCE_OFFSET_X 260//SLG_SECTOR_OFFSET_X
#define SLG_BALANCE_OFFSET_Y SLG_DATE_OFFSET_Y #define SLG_BALANCE_OFFSET_Y SLG_DATE_OFFSET_Y//SLG_NUM_MERCS_OFFSET_Y
#define SLG_SAVE_GAME_DESC_X 318 #define SLG_SAVE_GAME_DESC_X 318//320//204
#define SLG_SAVE_GAME_DESC_Y SLG_DATE_OFFSET_Y #define SLG_SAVE_GAME_DESC_Y SLG_DATE_OFFSET_Y//SLG_DATE_OFFSET_Y + 7
#define SLG_TITLE_POS_X iScreenWidthOffset #define SLG_TITLE_POS_X iScreenWidthOffset
#define SLG_TITLE_POS_Y iScreenHeightOffset #define SLG_TITLE_POS_Y iScreenHeightOffset
@@ -211,6 +221,7 @@ void SelectedSaveRegionMovementCallBack(MOUSE_REGION * pRegion, INT32 reason );
MOUSE_REGION gSLSEntireScreenRegion; MOUSE_REGION gSLSEntireScreenRegion;
void SelectedSLSEntireRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason ); void SelectedSLSEntireRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason );
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// //
// Function Prototypes // Function Prototypes
@@ -1324,12 +1335,12 @@ BOOLEAN DisplaySaveGameEntry( INT8 bEntryID )//, UINT16 usPosY )
//make a string containing the extended options //make a string containing the extended options
swprintf( zMouseHelpTextString, L"%20s %22s %22s %22s", zDifString, swprintf( zMouseHelpTextString, L"%20s %22s %22s %22s", zDifString,
/*gzGIOScreenText[ GIO_TIMED_TURN_TITLE_TEXT + SaveGameHeader.sInitialGameOptions.fTurnTimeLimit + 1],*/ /*gzGIOScreenText[ GIO_TIMED_TURN_TITLE_TEXT + SaveGameHeader.sInitialGameOptions.fTurnTimeLimit + 1],*/
//Madd
SaveGameHeader.sInitialGameOptions.fIronManMode ? gzGIOScreenText[ GIO_IRON_MAN_TEXT ] : gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT ], //SaveGameHeader.sInitialGameOptions.fIronManMode ? gzGIOScreenText[ GIO_IRON_MAN_TEXT ] : gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT ],
SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_GOOD ? zSaveLoadText[ SLG_BR_GOOD_TEXT ] : (SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_GREAT ? zSaveLoadText[ SLG_BR_GREAT_TEXT ]: (SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_EXCELLENT ? zSaveLoadText[ SLG_BR_EXCELLENT_TEXT ]: zSaveLoadText[ SLG_BR_AWESOME_TEXT ])), SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_GOOD ? zSaveLoadText[ SLG_BR_GOOD_TEXT ] : (SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_GREAT ? zSaveLoadText[ SLG_BR_GREAT_TEXT ]: (SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_EXCELLENT ? zSaveLoadText[ SLG_BR_EXCELLENT_TEXT ]: zSaveLoadText[ SLG_BR_AWESOME_TEXT ])),
SaveGameHeader.sInitialGameOptions.fAirStrikes ? zSaveLoadText[ SLG_ADDITIONAL_GUNS ] : zSaveLoadText[ SLG_NORMAL_GUNS ], SaveGameHeader.sInitialGameOptions.fGunNut ? zSaveLoadText[ SLG_ADDITIONAL_GUNS ] : zSaveLoadText[ SLG_NORMAL_GUNS ],
SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_SCIFI ? zSaveLoadText[ SLG_SCIFI ] : (SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_PLATINUM ? zSaveLoadText[ SLG_PLATINUM ]: zSaveLoadText[ SLG_REALISTIC ]) ); SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_SCIFI ? zSaveLoadText[ SLG_SCIFI ] : (SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_PLATINUM ? zSaveLoadText[ SLG_PLATINUM ]: zSaveLoadText[ SLG_REALISTIC ]) );
@@ -341,8 +341,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0" CompileAs="0"/>
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
+1 -1
View File
@@ -4714,4 +4714,4 @@ BOOLEAN GetCurrentBattleSectorXYZAndReturnTRUEIfThereIsABattle( INT16 *psSectorX
void AutoBandageFinishedCallback( UINT8 ubResult ) void AutoBandageFinishedCallback( UINT8 ubResult )
{ {
SetupDoneInterface(); SetupDoneInterface();
} }
+3 -3
View File
@@ -312,9 +312,9 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent )
case EVENT_MAKE_CIV_GROUP_HOSTILE_ON_NEXT_SECTOR_ENTRANCE: case EVENT_MAKE_CIV_GROUP_HOSTILE_ON_NEXT_SECTOR_ENTRANCE:
MakeCivGroupHostileOnNextSectorEntrance( (UINT8)pEvent->uiParam ); MakeCivGroupHostileOnNextSectorEntrance( (UINT8)pEvent->uiParam );
break; break;
case EVENT_CHECK_FOR_AIR_RAID: // case EVENT_CHECK_FOR_AIR_RAID:
CheckForAndSetupAirRaid( ); // CheckForAndSetupAirRaid( );
break; // break;
case EVENT_BEGIN_AIR_RAID: case EVENT_BEGIN_AIR_RAID:
BeginAirRaid( ); BeginAirRaid( );
break; break;
+1 -1
View File
@@ -83,7 +83,7 @@ enum
EVENT_QUARTER_HOUR_UPDATE, EVENT_QUARTER_HOUR_UPDATE,
EVENT_MERC_MERC_WENT_UP_LEVEL_EMAIL_DELAY, EVENT_MERC_MERC_WENT_UP_LEVEL_EMAIL_DELAY,
EVENT_MERC_SITE_NEW_MERC_AVAILABLE, EVENT_MERC_SITE_NEW_MERC_AVAILABLE,
EVENT_CHECK_FOR_AIR_RAID, // EVENT_CHECK_FOR_AIR_RAID,
#ifdef CRIPPLED_VERSION #ifdef CRIPPLED_VERSION
EVENT_CRIPPLED_VERSION_END_GAME_CHECK, EVENT_CRIPPLED_VERSION_END_GAME_CHECK,
+1 -1
View File
@@ -840,4 +840,4 @@ void ReStartingGame()
gpCustomizableTimerCallback = NULL; gpCustomizableTimerCallback = NULL;
gubCheatLevel = STARTING_CHEAT_LEVEL; gubCheatLevel = STARTING_CHEAT_LEVEL;
} }
+2 -2
View File
@@ -1568,8 +1568,8 @@ BOOLEAN CommonTimeCompressionChecks( void )
return( TRUE ); return( TRUE );
} }
if ( gfInAirRaid ) // if ( gfInAirRaid )
return TRUE; // return TRUE;
return( FALSE ); return( FALSE );
} }
+1 -1
View File
@@ -681,7 +681,7 @@ void ProcessQueenCmdImplicationsOfDeath( SOLDIERTYPE *pSoldier )
{ {
INT32 iNumEnemiesInSector; INT32 iNumEnemiesInSector;
SECTORINFO *pSector; SECTORINFO *pSector;
UINT16 str[128]; // UINT16 str[128];
INT32 iMaxEnemyGroupSize = gGameExternalOptions.iMaxEnemyGroupSize; INT32 iMaxEnemyGroupSize = gGameExternalOptions.iMaxEnemyGroupSize;
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"QueenCommand"); DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"QueenCommand");
+1 -1
View File
@@ -5519,4 +5519,4 @@ GROUP* FindPendingGroupForGarrisonSector( UINT8 ubSectorID )
} }
} }
return NULL; return NULL;
} }
+31 -22
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="Strategic" Name="Strategic"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA" SccProjectName=""
SccLocalPath="..\..\..\ja2\build"> SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
@@ -20,7 +22,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\Laptop,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
@@ -33,7 +35,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0" CompileAs="2"
DisableSpecificWarnings="4292"/> DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
@@ -71,8 +73,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Tactical,\ja2\build\Laptop,\ja2\build\editor,\ja2\build\tactical" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Strategic All.h" PrecompiledHeaderThrough="Strategic All.h"
@@ -84,7 +86,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -121,8 +123,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Tactical,\ja2\build\Laptop,\ja2\build\editor,\ja2\build\tactical" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Strategic All.h" PrecompiledHeaderThrough="Strategic All.h"
@@ -134,7 +136,8 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -171,8 +174,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Tactical,\ja2\build\Laptop,\ja2\build\editor,\ja2\build\tactical" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Strategic All.h" PrecompiledHeaderThrough="Strategic All.h"
@@ -184,7 +187,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -222,7 +225,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\TileEngine,..\Utils,..\TacticalAI,..\Tactical,..\Laptop,..\Editor,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -237,7 +240,8 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -275,7 +279,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\TileEngine,..\Utils,..\TacticalAI,..\Tactical,..\Laptop,..\Editor,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -290,7 +294,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -328,8 +332,8 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\TileEngine,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Communications,\ja2\build\Tactical,\ja2\build\Laptop,\ja2\build\Editor" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
@@ -343,7 +347,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -380,8 +384,13 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\Laptop,.\" EnableIntrinsicFunctions="TRUE"
FavorSizeOrSpeed="1"
OptimizeForProcessor="3"
OptimizeForWindowsApplication="TRUE"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE" PreprocessorDefinitions="PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -395,7 +404,7 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
+6 -6
View File
@@ -3764,12 +3764,12 @@ void SetupNewStrategicGame( )
// Daily checks for E-mail from Enrico // Daily checks for E-mail from Enrico
AddEveryDayStrategicEvent( EVENT_ENRICO_MAIL, ENRICO_MAIL_TIME , 0 ); AddEveryDayStrategicEvent( EVENT_ENRICO_MAIL, ENRICO_MAIL_TIME , 0 );
if ( gGameOptions.fAirStrikes ) // if ( gGameOptions.fAirStrikes )
{ // {
//Daily check for an air raid // //Daily check for an air raid
AddEveryDayStrategicEvent( EVENT_CHECK_FOR_AIR_RAID, 360, 0 ); // AddEveryDayStrategicEvent( EVENT_CHECK_FOR_AIR_RAID, 360, 0 );
} // }
//
// Hourly update of all sorts of things // Hourly update of all sorts of things
AddPeriodStrategicEvent( EVENT_HOURLY_UPDATE, 60, 0 ); AddPeriodStrategicEvent( EVENT_HOURLY_UPDATE, 60, 0 );
AddPeriodStrategicEvent( EVENT_QUARTER_HOUR_UPDATE, 15, 0 ); AddPeriodStrategicEvent( EVENT_QUARTER_HOUR_UPDATE, 15, 0 );
+1 -1
View File
@@ -180,4 +180,4 @@ extern INT8 gbGreenToRegPromotions;
extern INT8 gbRegToElitePromotions; extern INT8 gbRegToElitePromotions;
extern INT8 gbMilitiaPromotions; extern INT8 gbMilitiaPromotions;
#endif #endif
+1 -1
View File
@@ -1590,4 +1590,4 @@ void EnemyCallInAirStrike (INT16 sSectorX, INT16 sSectorY)
ScheduleAirRaid( &AirRaidDef ); ScheduleAirRaid( &AirRaidDef );
return; return;
} }
+15 -15
View File
@@ -176,8 +176,8 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
// GENERIC HIT CROUCHED // GENERIC HIT CROUCHED
{"GENERIC HIT CROUCH" , 0, 80, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_HITSTART | ANIM_NONINTERRUPT | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_CROUCH, ANIM_CROUCH, -1}, {"GENERIC HIT CROUCH" , 0, 80, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_HITSTART | ANIM_NONINTERRUPT | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_CROUCH, ANIM_CROUCH, -1},
// STAND BURST // STAND BURST // Lesh: AniDelay, speed=0 for control it
{"STAND BURST SHOOT" , 0, 100, (FLOAT)0, ANIM_NORESTART | ANIM_STATIONARY | ANIM_TURNING | ANIM_RAISE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_NOCHANGE_WEAPON | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1}, {"STAND BURST SHOOT" , 0, 0, (FLOAT)0, ANIM_NORESTART | ANIM_STATIONARY | ANIM_TURNING | ANIM_RAISE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_NOCHANGE_WEAPON | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1},
// STANDING BURST HIT // STANDING BURST HIT
{"STAND BUTST HIT" , 0, 80, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_HITSTART | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON | ANIM_IGNORE_AUTOSTANCE, ANIM_STAND, ANIM_STAND, -1}, {"STAND BUTST HIT" , 0, 80, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_HITSTART | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON | ANIM_IGNORE_AUTOSTANCE, ANIM_STAND, ANIM_STAND, -1},
@@ -262,8 +262,8 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
{"JFK DEATHHIT B" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_HITWHENDOWN | ANIM_NONINTERRUPT | ANIM_NOSHOW_MARKER | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_PRONE, ANIM_PRONE, -1}, {"JFK DEATHHIT B" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_HITWHENDOWN | ANIM_NONINTERRUPT | ANIM_NOSHOW_MARKER | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_PRONE, ANIM_PRONE, -1},
// STAND BURST // STAND BURST // Lesh: AniDelay, speed=0 for control it
{"STAND BURST SPREAD" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT, ANIM_STAND, ANIM_STAND, -1}, {"STAND BURST SPREAD" , 0, 0, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT, ANIM_STAND, ANIM_STAND, -1},
// FALLOFF DEATH // FALLOFF DEATH
{"FALLOFF DEATH" , 0, 120, (FLOAT)0, ANIM_STATIONARY | ANIM_NONINTERRUPT | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_PRONE, ANIM_PRONE, -1}, {"FALLOFF DEATH" , 0, 120, (FLOAT)0, ANIM_STATIONARY | ANIM_NONINTERRUPT | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_PRONE, ANIM_PRONE, -1},
@@ -356,11 +356,11 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
//QUEEN MONSTER STATIONARY //QUEEN MONSTER STATIONARY
{"MONSTER_STATIONARY" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_NOMOVE_MARKER | ANIM_NO_EFFORT | ANIM_BREATH, ANIM_STAND, ANIM_STAND, -1}, {"MONSTER_STATIONARY" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_NOMOVE_MARKER | ANIM_NO_EFFORT | ANIM_BREATH, ANIM_STAND, ANIM_STAND, -1},
// CROUCHED BURST // CROUCHED BURST // Lesh: AniDelay, speed=0 for control it
{"CROUCHED BURST SHOOT" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_CROUCH, ANIM_CROUCH, -1}, {"CROUCHED BURST SHOOT" , 0, 0, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_CROUCH, ANIM_CROUCH, -1},
// PRONE BURST // PRONE BURST // Lesh: AniDelay, speed=0 for control it
{"PRONE BURST SHOOT" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_PRONE, ANIM_PRONE, -1}, {"PRONE BURST SHOOT" , 0, 0, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_PRONE, ANIM_PRONE, -1},
//180 //180
{"NOT USED 1" , 20, 20, (FLOAT)0.9, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_NO_EFFORT, ANIM_STAND, ANIM_STAND, -1}, {"NOT USED 1" , 20, 20, (FLOAT)0.9, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_NO_EFFORT, ANIM_STAND, ANIM_STAND, -1},
@@ -527,8 +527,8 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
// SHOOT_RIFLE_STAND LOW // SHOOT_RIFLE_STAND LOW
"SHOOT (R) STAND LOW" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_RAISE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1, "SHOOT (R) STAND LOW" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_RAISE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1,
// SHOOT_RIFLE_STAND LOW // SHOOT_RIFLE_STAND LOW // Lesh: AniDelay, speed=0 for control it
"BURST SHOOT (R) STAND LOW" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_RAISE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1, "BURST SHOOT (R) STAND LOW" , 0, 0, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_RAISE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1,
//LARVAE Breathing //LARVAE Breathing
"LARVAE BREATH" , 0, 250, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NORESTART | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_STAND, ANIM_STAND, -1, "LARVAE BREATH" , 0, 250, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NORESTART | ANIM_NO_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_STAND, ANIM_STAND, -1,
@@ -786,8 +786,8 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
// TANK SHOOT // TANK SHOOT
"TANK SHOOT" , 0, 200, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NOCHANGE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1, "TANK SHOOT" , 0, 200, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NOCHANGE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1,
// TANK SHOOT // TANK SHOOT // Lesh: AniDelay, speed=0 for control it
"TANK BURST" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NOCHANGE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1, "TANK BURST" , 0, 0, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NOCHANGE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1,
//Queen Slap //Queen Slap
"QUEEN SLAP" , 0, 120, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_FASTTURN | ANIM_NORESTART | ANIM_LIGHT_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_STAND, ANIM_STAND, -1, "QUEEN SLAP" , 0, 120, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_FASTTURN | ANIM_NORESTART | ANIM_LIGHT_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_STAND, ANIM_STAND, -1,
@@ -883,8 +883,8 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
// KID SKIPPING // KID SKIPPING
"KID SKIPPING", 0 , 70, (FLOAT)2.0, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_LIGHT_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_STAND, ANIM_STAND, -1, "KID SKIPPING", 0 , 70, (FLOAT)2.0, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_LIGHT_EFFORT | ANIM_NOCHANGE_WEAPON, ANIM_STAND, ANIM_STAND, -1,
// STAND BURST // STAND BURST // Lesh: AniDelay, speed=0 for control it
"STAND BURST SHOOT" , 0, 100, (FLOAT)0, ANIM_NORESTART | ANIM_STATIONARY | ANIM_TURNING | ANIM_RAISE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_NOCHANGE_WEAPON | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1, "STAND BURST SHOOT" , 0, 0, (FLOAT)0, ANIM_NORESTART | ANIM_STATIONARY | ANIM_TURNING | ANIM_RAISE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_NOCHANGE_WEAPON | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1,
//Attach string //Attach string
"Attach String" , 0, 70, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_FASTTURN | ANIM_NORESTART | ANIM_NONINTERRUPT | ANIM_LOWER_WEAPON | ANIM_LIGHT_EFFORT, ANIM_CROUCH, ANIM_CROUCH, -1, "Attach String" , 0, 70, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_FASTTURN | ANIM_NORESTART | ANIM_NONINTERRUPT | ANIM_LOWER_WEAPON | ANIM_LIGHT_EFFORT, ANIM_CROUCH, ANIM_CROUCH, -1,
@@ -3210,7 +3210,7 @@ INT8 GetBodyTypePaletteSubstitutionCode( SOLDIERTYPE *pSoldier, UINT8 ubBodyType
} }
// Check for cammo... // Check for cammo...
if ( ( pSoldier->bCamo + pSoldier->wornCamo ) > 0 ) if ( ( pSoldier->bCamo + pSoldier->wornCamo ) > 50 )
{ {
strcpy( zColFilename, "ANIMS\\camo.COL" ); strcpy( zColFilename, "ANIMS\\camo.COL" );
return( 1 ); return( 1 );
+19 -24
View File
@@ -529,14 +529,14 @@ DEALER_POSSIBLE_INV gGabbyInventory[MAXITEMS+1];// =
// //
// Frank ( Alcohol ) // Frank ( Alcohol )
// //
DEALER_POSSIBLE_INV gFrankInventory[MAXITEMS+1] = DEALER_POSSIBLE_INV gFrankInventory[MAXITEMS+1];// =
{ //{
{ BEER, 12 }, // { BEER, 12 },
{ WINE, 6 }, // { WINE, 6 },
{ ALCOHOL, 9 }, // { ALCOHOL, 9 },
//
{ LAST_DEALER_ITEM, NO_DEALER_ITEM }, //Last One // { LAST_DEALER_ITEM, NO_DEALER_ITEM }, //Last One
}; //};
// //
@@ -902,22 +902,6 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA
// the following staple items are always deemed highly suitable regardless of player's progress: // the following staple items are always deemed highly suitable regardless of player's progress:
switch (usItemIndex) switch (usItemIndex)
{ {
case CLIP38_6:
case CLIP9_15:
case CLIP9_30:
case CLIP357_6:
case CLIP357_9:
case CLIP45_7:
case CLIP45_30:
case CLIP12G_7:
case CLIP12G_7_BUCKSHOT:
case CLIP545_30_HP:
case CLIP556_30_HP:
case CLIP762W_10_HP:
case CLIP762W_30_HP:
case CLIP762N_5_HP:
case CLIP762N_20_HP:
case FIRSTAIDKIT: case FIRSTAIDKIT:
case MEDICKIT: case MEDICKIT:
case TOOLKIT: case TOOLKIT:
@@ -946,6 +930,9 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA
ubMinCoolness = HighestPlayerProgressPercentage() / 10; ubMinCoolness = HighestPlayerProgressPercentage() / 10;
ubMaxCoolness = ( HighestPlayerProgressPercentage() / 10 ) + 1; ubMaxCoolness = ( HighestPlayerProgressPercentage() / 10 ) + 1;
if ( bArmsDealer == -1 )
ubMinCoolness = 1;
//Madd: Bobby Ray's will sell higher coolness stuff if it's used, and may also have a better selection at the start of the game, depending on selection //Madd: Bobby Ray's will sell higher coolness stuff if it's used, and may also have a better selection at the start of the game, depending on selection
if ( bArmsDealer == -1 && gGameOptions.ubBobbyRay > BR_GOOD ) if ( bArmsDealer == -1 && gGameOptions.ubBobbyRay > BR_GOOD )
{ {
@@ -976,6 +963,14 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA
ubMinCoolness = max( 1, min( 9, ubMinCoolness ) ); ubMinCoolness = max( 1, min( 9, ubMinCoolness ) );
ubMaxCoolness = max( 2, min( 10, ubMaxCoolness ) ); ubMaxCoolness = max( 2, min( 10, ubMaxCoolness ) );
if ( bArmsDealer == -1 )
{
//Madd: BR's always sells ammo for its guns
if (Item[usItemIndex].usItemClass == IC_AMMO && ubItemCoolness <= ubMaxCoolness )
{
return(ITEM_SUITABILITY_ALWAYS);
}
}
// if item is too cool for current level of progress // if item is too cool for current level of progress
if (ubItemCoolness > ubMaxCoolness) if (ubItemCoolness > ubMaxCoolness)
+1 -1
View File
@@ -5430,4 +5430,4 @@ void SoldierStealItemFromSoldier( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent,
gpTempSoldier = pSoldier; gpTempSoldier = pSoldier;
gsTempGridno = sGridNo; gsTempGridno = sGridNo;
SetCustomizableTimerCallbackAndDelay( 1000, CheckForPickedOwnership, TRUE ); SetCustomizableTimerCallbackAndDelay( 1000, CheckForPickedOwnership, TRUE );
} }
+3 -3
View File
@@ -4528,12 +4528,12 @@ UINT32 UIHandleLCOnTerrain( UI_EVENT *pUIEvent )
if( usAnimState != INVALID_ANIMATION ) if( usAnimState != INVALID_ANIMATION )
{ {
gsCurrentActionPoints = GetAPsToReadyWeapon( pSoldier, usAnimState ) + AP_TO_AIM_TILE_IF_GETTING_READY; gsCurrentActionPoints = GetAPsToReadyWeapon( pSoldier, usAnimState );// Madd: removed the next part since it was deducting 2 extra aps that would not be deducted when readying the old way //+ AP_TO_AIM_TILE_IF_GETTING_READY;
} }
else if( pSoldier->sLastTarget != sXPos + (MAXCOL * sYPos ) ) else if( pSoldier->sLastTarget != sXPos + (MAXCOL * sYPos ) )
gsCurrentActionPoints = AP_TO_AIM_TILE_IF_ALREADY_READY; gsCurrentActionPoints = AP_TO_AIM_TILE_IF_ALREADY_READY;
else else
gsCurrentActionPoints = 0; gsCurrentActionPoints = 0;
gfUIHandleShowMoveGrid = TRUE; gfUIHandleShowMoveGrid = TRUE;
gsUIHandleShowMoveGridLocation = sXPos + (MAXCOL * sYPos ); gsUIHandleShowMoveGridLocation = sXPos + (MAXCOL * sYPos );
@@ -4604,7 +4604,7 @@ BOOLEAN MakeSoldierTurn( SOLDIERTYPE *pSoldier, INT16 sXPos, INT16 sYPos )
if( usAnimState != INVALID_ANIMATION ) if( usAnimState != INVALID_ANIMATION )
{ {
sAPCostToReady = GetAPsToReadyWeapon( pSoldier, usAnimState ); sAPCostToReady = GetAPsToReadyWeapon( pSoldier, usAnimState );
sAPCost = sAPCostToReady + AP_TO_AIM_TILE_IF_GETTING_READY; sAPCost = sAPCostToReady; // Madd: removed this part since it was costing too many aps to ready weapon -- see other comment //+ AP_TO_AIM_TILE_IF_GETTING_READY;
} }
else if( pSoldier->sLastTarget != sXPos + (MAXCOL * sYPos ) ) else if( pSoldier->sLastTarget != sXPos + (MAXCOL * sYPos ) )
sAPCost = AP_TO_AIM_TILE_IF_ALREADY_READY; sAPCost = AP_TO_AIM_TILE_IF_ALREADY_READY;
+99 -12
View File
@@ -1,4 +1,3 @@
// WANNE 2 <changed some lines>
#ifdef PRECOMPILEDHEADERS #ifdef PRECOMPILEDHEADERS
#include "Tactical All.h" #include "Tactical All.h"
#include "language defines.h" #include "language defines.h"
@@ -184,22 +183,24 @@
#define ITEM_FONT TINYFONT1 #define ITEM_FONT TINYFONT1
#define EXCEPTIONAL_DAMAGE 30 #define EXCEPTIONAL_DAMAGE 40
#define EXCEPTIONAL_WEIGHT 20 #define EXCEPTIONAL_WEIGHT 20
#define EXCEPTIONAL_RANGE 300 #define EXCEPTIONAL_RANGE 400
#define EXCEPTIONAL_MAGAZINE 30 #define EXCEPTIONAL_MAGAZINE 50
#define EXCEPTIONAL_AP_COST 7 #define EXCEPTIONAL_AP_COST 5
#define EXCEPTIONAL_BURST_SIZE 5 #define EXCEPTIONAL_BURST_SIZE 5
#define EXCEPTIONAL_RELIABILITY 2 #define EXCEPTIONAL_RELIABILITY 2
#define EXCEPTIONAL_REPAIR_EASE 2 #define EXCEPTIONAL_REPAIR_EASE 2
#define EXCEPTIONAL_ACCURACY 4
#define BAD_DAMAGE 23 #define BAD_DAMAGE 23
#define BAD_WEIGHT 45 #define BAD_WEIGHT 45
#define BAD_RANGE 150 #define BAD_RANGE 150
#define BAD_MAGAZINE 10 #define BAD_MAGAZINE 10
#define BAD_AP_COST 11 #define BAD_AP_COST 9
#define BAD_RELIABILITY -2 #define BAD_RELIABILITY -2
#define BAD_REPAIR_EASE -2 #define BAD_REPAIR_EASE -2
#define BAD_ACCURACY -1
#define KEYRING_X 487 #define KEYRING_X 487
#define KEYRING_Y (105 + INV_INTERFACE_START_Y) #define KEYRING_Y (105 + INV_INTERFACE_START_Y)
@@ -603,6 +604,15 @@ void GenerateProsString( UINT16 * zItemPros, OBJECTTYPE * pObject, UINT32 uiPixL
ubWeight += Item[ pObject->usGunAmmoItem ].ubWeight; ubWeight += Item[ pObject->usGunAmmoItem ].ubWeight;
} }
if (Weapon[usItem].bAccuracy >= EXCEPTIONAL_ACCURACY )
{
zTemp = Message[STR_ACCURATE];
if ( ! AttemptToAddSubstring( zItemPros, zTemp, &uiStringLength, uiPixLimit ) )
{
return;
}
}
if (Item[usItem].ubWeight <= EXCEPTIONAL_WEIGHT) if (Item[usItem].ubWeight <= EXCEPTIONAL_WEIGHT)
{ {
zTemp = Message[STR_LIGHT]; zTemp = Message[STR_LIGHT];
@@ -712,6 +722,15 @@ void GenerateConsString( UINT16 * zItemCons, OBJECTTYPE * pObject, UINT32 uiPixL
zItemCons[0] = 0; zItemCons[0] = 0;
if (Weapon[usItem].bAccuracy <= BAD_ACCURACY)
{
zTemp = Message[STR_INACCURATE];
if ( ! AttemptToAddSubstring( zItemCons, zTemp, &uiStringLength, uiPixLimit ) )
{
return;
}
}
// calculate the weight of the item plus ammunition but not including any attachments // calculate the weight of the item plus ammunition but not including any attachments
ubWeight = Item[ usItem ].ubWeight; ubWeight = Item[ usItem ].ubWeight;
if (Item[ usItem ].usItemClass == IC_GUN) if (Item[ usItem ].usItemClass == IC_GUN)
@@ -1063,6 +1082,37 @@ void INVRenderINVPanelItem( SOLDIERTYPE *pSoldier, INT16 sPocket, UINT8 fDirtyLe
{ {
// CHECK FOR COMPATIBILITY WITH MAGAZINES // CHECK FOR COMPATIBILITY WITH MAGAZINES
/* OLD VERSION OF GUN/AMMO MATCH HIGHLIGHTING
UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf;
UINT16 usLineColor;
if ( ( Item [ pSoldier->inv[ HANDPOS ].usItem ].usItemClass & IC_GUN ) && ( Item[ pObject->usItem ].usItemClass & IC_AMMO ) )
{
// CHECK
if (Weapon[pSoldier->inv[ HANDPOS ].usItem].ubCalibre == Magazine[Item[pObject->usItem].ubClassIndex].ubCalibre )
{
// IT's an OK calibre ammo, do something!
// Render Item with specific color
//fOutline = TRUE;
//sOutlineColor = Get16BPPColor( FROMRGB( 96, 104, 128 ) );
//sOutlineColor = Get16BPPColor( FROMRGB( 20, 20, 120 ) );
// Draw rectangle!
pDestBuf = LockVideoSurface( guiSAVEBUFFER, &uiDestPitchBYTES );
SetClippingRegionAndImageWidth( uiDestPitchBYTES, 0, 0, 640, 480 );
//usLineColor = Get16BPPColor( FROMRGB( 255, 255, 0 ) );
usLineColor = Get16BPPColor( FROMRGB( 230, 215, 196 ) );
RectangleDraw( TRUE, (sX+1), (sY+1), (sX + gSMInvData[ sPocket ].sWidth - 2 ),( sY + gSMInvData[ sPocket ].sHeight - 2 ), usLineColor, pDestBuf );
SetClippingRegionAndImageWidth( uiDestPitchBYTES, 0, 0, 640, 480 );
UnLockVideoSurface( guiSAVEBUFFER );
}
}
*/
if ( gbCompatibleAmmo[ sPocket ] ) if ( gbCompatibleAmmo[ sPocket ] )
{ {
fOutline = TRUE; fOutline = TRUE;
@@ -2212,6 +2262,11 @@ void CycleItemDescriptionItem( )
{ {
usOldItem--; usOldItem--;
while ( usOldItem > 0 && ( Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ))
{
usOldItem--;
}
if ( usOldItem < 0 ) if ( usOldItem < 0 )
{ {
usOldItem = MAXITEMS-1; usOldItem = MAXITEMS-1;
@@ -2225,6 +2280,11 @@ void CycleItemDescriptionItem( )
{ {
usOldItem = 0; usOldItem = 0;
} }
while (usOldItem < MAXITEMS && (Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ))
{
usOldItem++;
}
} }
CreateItem( (UINT16)usOldItem, 100, &( gpItemDescSoldier->inv[ HANDPOS ] ) ); CreateItem( (UINT16)usOldItem, 100, &( gpItemDescSoldier->inv[ HANDPOS ] ) );
@@ -2767,7 +2827,6 @@ void ItemDescAmmoCallback(GUI_BUTTON *btn,INT32 reason)
swprintf( (wchar_t *)pStr, L"0" ); swprintf( (wchar_t *)pStr, L"0" );
SpecifyButtonText( giItemDescAmmoButton, (UINT16 *)pStr ); SpecifyButtonText( giItemDescAmmoButton, (UINT16 *)pStr );
fItemDescDelete = TRUE; fItemDescDelete = TRUE;
} }
@@ -3069,6 +3128,13 @@ void RenderItemDescriptionBox( )
BltVideoObjectFromIndex( guiSAVEBUFFER, guiBullet, 0, MAP_BULLET_BURST_X + cnt * (BULLET_WIDTH/2 + 1), MAP_BULLET_BURST_Y, VO_BLT_SRCTRANSPARENCY, NULL ); BltVideoObjectFromIndex( guiSAVEBUFFER, guiBullet, 0, MAP_BULLET_BURST_X + cnt * (BULLET_WIDTH/2 + 1), MAP_BULLET_BURST_Y, VO_BLT_SRCTRANSPARENCY, NULL );
} }
} }
else if (GetAutofireShotsPerFiveAPs(gpItemDescObject) > 0 )
{
for ( cnt = 0; cnt < 10; cnt++ )
{
BltVideoObjectFromIndex( guiSAVEBUFFER, guiBullet, 0, MAP_BULLET_BURST_X + cnt * (BULLET_WIDTH/2 + 1), MAP_BULLET_BURST_Y, VO_BLT_SRCTRANSPARENCY, NULL );
}
}
} }
@@ -3193,7 +3259,7 @@ void RenderItemDescriptionBox( )
mprintf( gMapWeaponStats[ 1 ].sX + gsInvDescX, gMapWeaponStats[ 1 ].sY + gsInvDescY, L"%s", gWeaponStatsDesc[ 1 ] ); mprintf( gMapWeaponStats[ 1 ].sX + gsInvDescX, gMapWeaponStats[ 1 ].sY + gsInvDescY, L"%s", gWeaponStatsDesc[ 1 ] );
if (GetShotsPerBurst(gpItemDescObject) > 0) if (GetShotsPerBurst(gpItemDescObject) > 0 || GetAutofireShotsPerFiveAPs(gpItemDescObject)>0)
{ {
mprintf( gMapWeaponStats[ 8 ].sX + gsInvDescX, gMapWeaponStats[ 8 ].sY + gsInvDescY, L"%s", gWeaponStatsDesc[ 8 ] ); mprintf( gMapWeaponStats[ 8 ].sX + gsInvDescX, gMapWeaponStats[ 8 ].sY + gsInvDescY, L"%s", gWeaponStatsDesc[ 8 ] );
} }
@@ -3289,7 +3355,15 @@ void RenderItemDescriptionBox( )
FindFontRightCoordinates( (INT16)(gMapWeaponStats[ 6 ].sX + gsInvDescX + gMapWeaponStats[ 6 ].sValDx), (INT16)(gMapWeaponStats[ 6 ].sY + gsInvDescY ), ITEM_STATS_WIDTH ,ITEM_STATS_HEIGHT ,pStr, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates( (INT16)(gMapWeaponStats[ 6 ].sX + gsInvDescX + gMapWeaponStats[ 6 ].sValDx), (INT16)(gMapWeaponStats[ 6 ].sY + gsInvDescY ), ITEM_STATS_WIDTH ,ITEM_STATS_HEIGHT ,pStr, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY, pStr ); mprintf( usX, usY, pStr );
} }
else if (GetAutofireShotsPerFiveAPs(gpItemDescObject) > 0)
{
SetFontForeground( 5 );
swprintf( (wchar_t *)pStr, L"%2d", ubAttackAPs + CalcAPsToAutofire( DEFAULT_APS, gpItemDescObject, 3 ) );
FindFontRightCoordinates( (INT16)(gMapWeaponStats[ 6 ].sX + gsInvDescX + gMapWeaponStats[ 6 ].sValDx), (INT16)(gMapWeaponStats[ 6 ].sY + gsInvDescY ), ITEM_STATS_WIDTH ,ITEM_STATS_HEIGHT ,pStr, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY, pStr );
}
} }
else if ( gpItemDescObject->usItem == MONEY ) else if ( gpItemDescObject->usItem == MONEY )
{ {
@@ -3528,6 +3602,13 @@ void RenderItemDescriptionBox( )
BltVideoObjectFromIndex( guiSAVEBUFFER, guiBullet, 0, BULLET_BURST_X + cnt * (BULLET_WIDTH/2 + 1), BULLET_BURST_Y, VO_BLT_SRCTRANSPARENCY, NULL ); BltVideoObjectFromIndex( guiSAVEBUFFER, guiBullet, 0, BULLET_BURST_X + cnt * (BULLET_WIDTH/2 + 1), BULLET_BURST_Y, VO_BLT_SRCTRANSPARENCY, NULL );
} }
} }
else if ( GetAutofireShotsPerFiveAPs(gpItemDescObject) > 0 )
{
for ( cnt = 0; cnt < 10; cnt++ )
{
BltVideoObjectFromIndex( guiSAVEBUFFER, guiBullet, 0, BULLET_BURST_X + cnt * (BULLET_WIDTH/2 + 1), BULLET_BURST_Y, VO_BLT_SRCTRANSPARENCY, NULL );
}
}
} }
@@ -3643,7 +3724,7 @@ void RenderItemDescriptionBox( )
} }
mprintf( gWeaponStats[ 1 ].sX + gsInvDescX, gWeaponStats[ 1 ].sY + gsInvDescY, L"%s", gWeaponStatsDesc[ 1 ] ); mprintf( gWeaponStats[ 1 ].sX + gsInvDescX, gWeaponStats[ 1 ].sY + gsInvDescY, L"%s", gWeaponStatsDesc[ 1 ] );
if (GetShotsPerBurst(gpItemDescObject) > 0) if (GetShotsPerBurst(gpItemDescObject) > 0 || GetAutofireShotsPerFiveAPs(gpItemDescObject))
{ {
mprintf( gWeaponStats[ 8 ].sX + gsInvDescX, gWeaponStats[ 8 ].sY + gsInvDescY, L"%s", gWeaponStatsDesc[ 8 ] ); mprintf( gWeaponStats[ 8 ].sX + gsInvDescX, gWeaponStats[ 8 ].sY + gsInvDescY, L"%s", gWeaponStatsDesc[ 8 ] );
} }
@@ -3732,6 +3813,13 @@ void RenderItemDescriptionBox( )
FindFontRightCoordinates( (INT16)(gWeaponStats[ 6 ].sX + gsInvDescX + gWeaponStats[ 6 ].sValDx), (INT16)(gWeaponStats[ 6 ].sY + gsInvDescY ), ITEM_STATS_WIDTH, ITEM_STATS_HEIGHT, pStr, BLOCKFONT2, &usX, &usY ); FindFontRightCoordinates( (INT16)(gWeaponStats[ 6 ].sX + gsInvDescX + gWeaponStats[ 6 ].sValDx), (INT16)(gWeaponStats[ 6 ].sY + gsInvDescY ), ITEM_STATS_WIDTH, ITEM_STATS_HEIGHT, pStr, BLOCKFONT2, &usX, &usY );
mprintf( usX, usY, pStr ); mprintf( usX, usY, pStr );
} }
else if (GetAutofireShotsPerFiveAPs(gpItemDescObject)> 0)
{
SetFontForeground( 5 );
swprintf( (wchar_t *)pStr, L"%2d", ubAttackAPs + CalcAPsToBurst( DEFAULT_APS, gpItemDescObject ) );
FindFontRightCoordinates( (INT16)(gWeaponStats[ 6 ].sX + gsInvDescX + gWeaponStats[ 6 ].sValDx), (INT16)(gWeaponStats[ 6 ].sY + gsInvDescY ), ITEM_STATS_WIDTH, ITEM_STATS_HEIGHT, pStr, BLOCKFONT2, &usX, &usY );
mprintf( usX, usY, pStr );
}
} }
else if ( gpItemDescObject->usItem == MONEY ) else if ( gpItemDescObject->usItem == MONEY )
@@ -7203,8 +7291,7 @@ void GetHelpTextForItem( INT16 * pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldi
} }
} }
// The first tool tip is for rocket rifles if ( Item[ usItem ].usItemClass == IC_GUN && !Item[usItem].rocketlauncher && !Item[usItem].rocketrifle )
if ( !gGameOptions.fGunNut && Item[ usItem ].usItemClass == IC_GUN && !Item[usItem].rocketlauncher && !Item[usItem].rocketrifle )
{ {
swprintf( (wchar_t *)pStr, L"%s (%s) [%d%%]", ItemNames[ usItem ], AmmoCaliber[ Weapon[ usItem ].ubCalibre ], sValue ); swprintf( (wchar_t *)pStr, L"%s (%s) [%d%%]", ItemNames[ usItem ], AmmoCaliber[ Weapon[ usItem ].ubCalibre ], sValue );
} }
+25 -7
View File
@@ -995,7 +995,7 @@ void UpdateSMPanel( )
else else
{ {
// Enable some buttons! // Enable some buttons!
if ( IsGunAutofireCapable( gpSMCurrentMerc, HANDPOS ) || IsGunBurstCapable( gpSMCurrentMerc, HANDPOS , FALSE ) || IsGrenadeLauncherAttached ( &(gpSMCurrentMerc->inv[HANDPOS]) ) ) if ( ((IsGunAutofireCapable( gpSMCurrentMerc, HANDPOS ) || IsGunBurstCapable( gpSMCurrentMerc, HANDPOS , FALSE )) && !Weapon[gpSMCurrentMerc->inv[HANDPOS].usItem].NoSemiAuto ) || IsGrenadeLauncherAttached ( &(gpSMCurrentMerc->inv[HANDPOS]) ) )
{ {
EnableButton( iSMPanelButtons[ BURSTMODE_BUTTON ] ); EnableButton( iSMPanelButtons[ BURSTMODE_BUTTON ] );
} }
@@ -5988,9 +5988,18 @@ void HandleTacticalEffectsOfEquipmentChange( SOLDIERTYPE *pSoldier, UINT32 uiInv
// if in attached weapon mode and don't have weapon with GL attached in hand, reset weapon mode // if in attached weapon mode and don't have weapon with GL attached in hand, reset weapon mode
if ( (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )&& !IsGrenadeLauncherAttached( &(pSoldier->inv[ HANDPOS ]) ) ) if ( (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )&& !IsGrenadeLauncherAttached( &(pSoldier->inv[ HANDPOS ]) ) )
{ {
pSoldier->bWeaponMode = WM_NORMAL; if ( !Weapon[pSoldier->inv[ HANDPOS ].usItem].NoSemiAuto )
pSoldier->bDoBurst = FALSE; {
pSoldier->bDoAutofire = 0; pSoldier->bWeaponMode = WM_NORMAL;
pSoldier->bDoBurst = FALSE;
pSoldier->bDoAutofire = 0;
}
else
{
pSoldier->bWeaponMode = WM_AUTOFIRE;
pSoldier->bDoBurst = TRUE;
pSoldier->bDoAutofire = 1;
}
} }
// if he is loaded tactically // if he is loaded tactically
@@ -6016,9 +6025,18 @@ void HandleTacticalEffectsOfEquipmentChange( SOLDIERTYPE *pSoldier, UINT32 uiInv
// as a minimum // as a minimum
if ( (Item[ pSoldier->inv[ HANDPOS ].usItem ].usItemClass & IC_WEAPON) && GetShotsPerBurst(&pSoldier->inv[ HANDPOS ]) == 0 ) if ( (Item[ pSoldier->inv[ HANDPOS ].usItem ].usItemClass & IC_WEAPON) && GetShotsPerBurst(&pSoldier->inv[ HANDPOS ]) == 0 )
{ {
pSoldier->bDoBurst = FALSE; if ( !Weapon[pSoldier->inv[ HANDPOS ].usItem].NoSemiAuto )
pSoldier->bWeaponMode = WM_NORMAL; {
pSoldier->bDoAutofire = 0; pSoldier->bWeaponMode = WM_NORMAL;
pSoldier->bDoBurst = FALSE;
pSoldier->bDoAutofire = 0;
}
else
{
pSoldier->bWeaponMode = WM_AUTOFIRE;
pSoldier->bDoAutofire = 1;
pSoldier->bDoBurst = TRUE;
}
} }
} }
} }
+26 -17
View File
@@ -99,16 +99,16 @@ void InitArmyGunTypes(void)
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"InitArmyGunTypes set gun choice table"); DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"InitArmyGunTypes set gun choice table");
// depending on selection of the gun nut option // depending on selection of the gun nut option
if (gGameOptions.fGunNut) //if (gGameOptions.fGunNut)
{ //{
// use table of extended gun choices // use table of extended gun choices
pGunChoiceTable = &(gExtendedArmyGunChoices[0]); pGunChoiceTable = &(gExtendedArmyGunChoices[0]);
} //}
else //else
{ //{
// use table of regular gun choices // // use table of regular gun choices
pGunChoiceTable = &(gRegularArmyGunChoices[0]); // pGunChoiceTable = &(gRegularArmyGunChoices[0]);
} //}
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"InitArmyGunTypes pick a gun type"); DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"InitArmyGunTypes pick a gun type");
// for each gun category // for each gun category
@@ -429,7 +429,7 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
} }
bAmmoClips = (INT8)(3 + Random( 2 )); bAmmoClips = (INT8)(3 + Random( 2 ));
bGrenades = (INT8)(3 + Random( 3 )); bGrenades = (INT8)(2 + Random( 3 ));
if( ( bRating >= AVERAGE_ELITE_EQUIPMENT_RATING ) && ( Random( 100 ) < 75 ) ) if( ( bRating >= AVERAGE_ELITE_EQUIPMENT_RATING ) && ( Random( 100 ) < 75 ) )
{ {
@@ -794,28 +794,35 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC
usAttachIndex = 0; usAttachIndex = 0;
} }
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"ChooseWeaponForSoldierCreateStruct: Gun Created");
if( usScopeIndex > 0 ) if( usScopeIndex > 0 )
{ {
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create Scope %d",usScopeIndex));
CreateItem( usScopeIndex, 100, &Object ); CreateItem( usScopeIndex, 100, &Object );
Object.fFlags |= OBJECT_UNDROPPABLE; Object.fFlags |= OBJECT_UNDROPPABLE;
AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object ); AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object );
} }
if( usAttachIndex > 0 ) if( usAttachIndex > 0 )
{ {
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create Attachment %d",usAttachIndex));
CreateItem( usAttachIndex, 100, &Object ); CreateItem( usAttachIndex, 100, &Object );
Object.fFlags |= OBJECT_UNDROPPABLE; Object.fFlags |= OBJECT_UNDROPPABLE;
AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object ); AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object );
} }
if( usAttachIndex2 > 0 ) if( usAttachIndex2 > 0 )
{ {
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create 2nd Attachment %d",usAttachIndex2));
CreateItem( usAttachIndex2, 100, &Object ); CreateItem( usAttachIndex2, 100, &Object );
Object.fFlags |= OBJECT_UNDROPPABLE; Object.fFlags |= OBJECT_UNDROPPABLE;
AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object ); AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object );
} }
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Set bullets"));
//set bullets = to magsize including any attachments (c-mag adapters, etc) //set bullets = to magsize including any attachments (c-mag adapters, etc)
pp->Inv[ HANDPOS ].ubGunShotsLeft = GetMagSize(&pp->Inv[ HANDPOS ]); pp->Inv[ HANDPOS ].ubGunShotsLeft = GetMagSize(&pp->Inv[ HANDPOS ]);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: choose ammo"));
if( bAmmoClips ) if( bAmmoClips )
{ //We have a gun, so choose ammo clips { //We have a gun, so choose ammo clips
@@ -842,6 +849,7 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC
} }
//Ammo //Ammo
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: create ammo"));
if( bAmmoClips && usAmmoIndex ) if( bAmmoClips && usAmmoIndex )
{ {
CreateItems( usAmmoIndex, 100, bAmmoClips, &Object ); CreateItems( usAmmoIndex, 100, bAmmoClips, &Object );
@@ -849,6 +857,7 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC
PlaceObjectInSoldierCreateStruct( pp, &Object ); PlaceObjectInSoldierCreateStruct( pp, &Object );
} }
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: done"));
} }
void ChooseGrenadesForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bGrenades, INT8 bGrenadeClass, BOOLEAN fGrenadeLauncher ) void ChooseGrenadesForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bGrenades, INT8 bGrenadeClass, BOOLEAN fGrenadeLauncher )
@@ -2520,16 +2529,16 @@ UINT16 SelectStandardArmyGun( UINT8 uiGunLevel )
// decided to randomize it afterall instead of repeating the same weapon over and over // decided to randomize it afterall instead of repeating the same weapon over and over
// depending on selection of the gun nut option // depending on selection of the gun nut option
if (gGameOptions.fGunNut) //if (gGameOptions.fGunNut)
{ //{
// use table of extended gun choices // use table of extended gun choices
pGunChoiceTable = &(gExtendedArmyGunChoices[0]); pGunChoiceTable = &(gExtendedArmyGunChoices[0]);
} //}
else //else
{ //{
// use table of regular gun choices // // use table of regular gun choices
pGunChoiceTable = &(gRegularArmyGunChoices[0]); // pGunChoiceTable = &(gRegularArmyGunChoices[0]);
} //}
// choose one the of the possible gun choices // choose one the of the possible gun choices
uiChoice = Random(pGunChoiceTable[ uiGunLevel ].ubChoices); uiChoice = Random(pGunChoiceTable[ uiGunLevel ].ubChoices);
+1
View File
@@ -109,6 +109,7 @@ enum
SCOPE, SCOPE,
ATTACHMENTS, ATTACHMENTS,
KNIVES, KNIVES,
ENEMYAMMOTYPES,
MAX_ITEM_TYPES MAX_ITEM_TYPES
}; };
+4 -1
View File
@@ -367,7 +367,8 @@ typedef struct
INT16 magsizebonus; INT16 magsizebonus;
INT16 percentautofireapreduction; INT16 percentautofireapreduction;
INT16 autofirebonus; INT16 autofiretohitbonus;
INT16 APBonus;
INT16 rateoffirebonus; INT16 rateoffirebonus;
INT16 burstsizebonus; INT16 burstsizebonus;
INT16 bursttohitbonus; INT16 bursttohitbonus;
@@ -829,6 +830,8 @@ typedef enum
EXPLOSIVE, EXPLOSIVE,
EASY_MERGE, EASY_MERGE,
ELECTRONIC_MERGE, ELECTRONIC_MERGE,
USE_ITEM,
USE_ITEM_HARD
} MergeType; } MergeType;
extern UINT16 Merge[MAXITEMS+1][4]; extern UINT16 Merge[MAXITEMS+1][4];
+189 -18
View File
@@ -1176,10 +1176,10 @@ BOOLEAN ItemIsLegal( UINT16 usItemIndex )
if( !gGameOptions.fGunNut ) if( !gGameOptions.fGunNut )
{ {
//if the item is a gun, or ammo //if the item is a gun, or ammo
if( (Item[ usItemIndex ].usItemClass == IC_GUN) || (Item[ usItemIndex ].usItemClass == IC_AMMO )) //if( (Item[ usItemIndex ].usItemClass == IC_GUN) || (Item[ usItemIndex ].usItemClass == IC_AMMO )) //Madd: restriction removed
{ {
// and the item is only available with the extended guns // and the item is only available with the extended guns
if( ExtendedGunListGun( usItemIndex ) ) if( Item[usItemIndex].biggunlist )
{ {
return(FALSE); return(FALSE);
} }
@@ -3192,6 +3192,39 @@ BOOLEAN AttachObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pTargetObj, OBJECTTYP
switch( ubType ) switch( ubType )
{ {
case USE_ITEM:
case USE_ITEM_HARD:
// the merge will combine the two items
if ( pSoldier )
{
if ( ubType == USE_ITEM_HARD )
{
// requires a skill check, and gives experience
iCheckResult = SkillCheck( pSoldier, ATTACHING_SPECIAL_ITEM_CHECK, -30 );
if (iCheckResult < 0)
{
// could have a chance of detonation
// for now, damage both objects
DamageObj( pTargetObj, (INT8) -iCheckResult );
DamageObj( pAttachment, (INT8) -iCheckResult );
DoMercBattleSound( pSoldier, BATTLE_SOUND_CURSE1 );
return( FALSE );
}
StatChange( pSoldier, MECHANAMT, 25, FALSE );
StatChange( pSoldier, WISDOMAMT, 5, FALSE );
}
pTargetObj->usItem = usResult;
//AutoPlaceObject( pAttachment );
pTargetObj->ubWeight = CalculateObjectWeight( pTargetObj );
if (pSoldier->bTeam == gbPlayerNum)
{
DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
}
return TRUE;
}
else
return FALSE;
case COMBINE_POINTS: case COMBINE_POINTS:
// transfer points... // transfer points...
if ( Item[ pTargetObj->usItem ].usItemClass == IC_AMMO ) if ( Item[ pTargetObj->usItem ].usItemClass == IC_AMMO )
@@ -3451,6 +3484,25 @@ BOOLEAN PlaceObject( SOLDIERTYPE * pSoldier, INT8 bPos, OBJECTTYPE * pObj )
} }
} }
// Lesh: bugfix - replacing weapon in auto with another weapon w/o auto-mode
if (bPos == HANDPOS && Item[ pObj->usItem ].usItemClass == IC_GUN)
{
//Madd: added code for nosemiauto tag
if (!Weapon[ Item[pObj->usItem].ubClassIndex ].NoSemiAuto)
{
pSoldier->bWeaponMode = WM_NORMAL;
pSoldier->bDoBurst = FALSE;
pSoldier->bDoAutofire = FALSE;
}
else
{
pSoldier->bWeaponMode = WM_AUTOFIRE;
pSoldier->bDoBurst = TRUE;
pSoldier->bDoAutofire = TRUE;
}
}
// Lesh: end
ubSlotLimit = ItemSlotLimit( pObj->usItem, bPos ); ubSlotLimit = ItemSlotLimit( pObj->usItem, bPos );
pInSlot = &(pSoldier->inv[bPos]); pInSlot = &(pSoldier->inv[bPos]);
@@ -4272,17 +4324,22 @@ UINT16 MagazineClassIndexToItemType(UINT16 usMagIndex)
// Note: if any ammo items in the item table are separated from the main group, // Note: if any ammo items in the item table are separated from the main group,
// this function will have to be rewritten to scan the item table for an item // this function will have to be rewritten to scan the item table for an item
// with item class ammo, which has class index usMagIndex // with item class ammo, which has class index usMagIndex
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "MagazineClassIndexToItemType" ) );
for (usLoop = FIRST_AMMO; usLoop < MAXITEMS; usLoop++) for (usLoop = FIRST_AMMO; usLoop < MAXITEMS; usLoop++)
{ {
if ( Item[usLoop].usItemClass == 0 ) if ( Item[usLoop].usItemClass == 0 )
break;
if (Item[usLoop].ubClassIndex == usMagIndex)
{ {
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "MagazineClassIndexToItemType: breaking at index %d", usLoop ) );
break;
}
if (Item[usLoop].ubClassIndex == usMagIndex && Item[usLoop].usItemClass == IC_AMMO )
{
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "MagazineClassIndexToItemType: return %d", usLoop ) );
return( usLoop ); return( usLoop );
} }
} }
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "MagazineClassIndexToItemType: return none, got to %d", usLoop ) );
return(NONE); return(NONE);
} }
@@ -4292,6 +4349,7 @@ UINT16 DefaultMagazine( UINT16 usItem )
WEAPONTYPE * pWeapon; WEAPONTYPE * pWeapon;
UINT16 usLoop; UINT16 usLoop;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("DefaultMagazine: item = %d",usItem));
if (!(Item[usItem].usItemClass & IC_GUN)) if (!(Item[usItem].usItemClass & IC_GUN))
{ {
return( 0 ); return( 0 );
@@ -4302,14 +4360,17 @@ UINT16 DefaultMagazine( UINT16 usItem )
while ( Magazine[usLoop].ubCalibre != NOAMMO ) while ( Magazine[usLoop].ubCalibre != NOAMMO )
{ {
if (Magazine[usLoop].ubCalibre == pWeapon->ubCalibre && if (Magazine[usLoop].ubCalibre == pWeapon->ubCalibre &&
Magazine[usLoop].ubMagSize == pWeapon->ubMagSize) Magazine[usLoop].ubMagSize == pWeapon->ubMagSize &&
AmmoTypes[ Magazine[usLoop].ubAmmoType ].standardIssue )
{ {
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("DefaultMagazine: found at index %d",usLoop));
return(MagazineClassIndexToItemType(usLoop)); return(MagazineClassIndexToItemType(usLoop));
} }
usLoop++; usLoop++;
} }
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("DefaultMagazine: can't find any"));
return( 0 ); return( 0 );
} }
@@ -4363,13 +4424,14 @@ UINT16 FindReplacementMagazineIfNecessary( UINT16 usOldGun, UINT16 usOldAmmo, UI
} }
// increase this if any gun can have more types that this // increase this if any gun can have more types that this
#define MAX_AMMO_TYPES_PER_GUN 6 // MADD MARKER #define MAX_AMMO_TYPES_PER_GUN 24 // MADD MARKER
UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard ) UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
{ {
// Note: if any ammo items in the item table are separated from the main group, // Note: if any ammo items in the item table are separated from the main group,
// this function will have to be rewritten to scan the item table for an item // this function will have to be rewritten to scan the item table for an item
// with item class ammo, which has class index ubLoop // with item class ammo, which has class index ubLoop
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine (by index)"));
WEAPONTYPE * pWeapon; WEAPONTYPE * pWeapon;
UINT16 usLoop; UINT16 usLoop;
@@ -4393,7 +4455,22 @@ UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
{ {
// store it! (make sure array is big enough) // store it! (make sure array is big enough)
Assert(usPossibleMagCnt < MAX_AMMO_TYPES_PER_GUN); Assert(usPossibleMagCnt < MAX_AMMO_TYPES_PER_GUN);
usPossibleMagIndex[usPossibleMagCnt++] = usLoop; // Madd: check to see if allowed by army
if ( gArmyItemChoices[ENEMYAMMOTYPES].ubChoices > 0 )
{
for ( int i=0;i<gArmyItemChoices[ENEMYAMMOTYPES].ubChoices;i++ )
{
if ( gArmyItemChoices[ENEMYAMMOTYPES].bItemNo[i] == Magazine[usLoop].ubAmmoType )
{
usPossibleMagIndex[usPossibleMagCnt++] = usLoop;
break;
}
}
}
else
{
usPossibleMagIndex[usPossibleMagCnt++] = usLoop;
}
} }
usLoop++; usLoop++;
@@ -4409,7 +4486,7 @@ UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
if (usPossibleMagCnt == 1) if (usPossibleMagCnt == 1)
{ {
// use that, no choice // use that, no choice
return(MagazineClassIndexToItemType(usPossibleMagIndex[ 0 ] )); return(MagazineClassIndexToItemType( usPossibleMagIndex[ 0 ] ));
} }
else // multiple choices else // multiple choices
{ {
@@ -4417,6 +4494,8 @@ UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
if (Random(100) < ubPercentStandard) if (Random(100) < ubPercentStandard)
{ {
ubMagChosen = 0; ubMagChosen = 0;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine: ubMagChosen = %d",ubMagChosen ));
return( DefaultMagazine(usItem) );
} }
else else
{ {
@@ -4424,6 +4503,7 @@ UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
ubMagChosen = ( UINT8 ) (1 + Random(( UINT32 ) ( usPossibleMagCnt - 1 ))); ubMagChosen = ( UINT8 ) (1 + Random(( UINT32 ) ( usPossibleMagCnt - 1 )));
} }
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine: ubMagChosen = %d",ubMagChosen ));
return( MagazineClassIndexToItemType(usPossibleMagIndex[ ubMagChosen ] ) ); return( MagazineClassIndexToItemType(usPossibleMagIndex[ ubMagChosen ] ) );
} }
} }
@@ -4433,6 +4513,7 @@ UINT16 RandomMagazine( OBJECTTYPE * pGun, UINT8 ubPercentStandard )
// Note: if any ammo items in the item table are separated from the main group, // Note: if any ammo items in the item table are separated from the main group,
// this function will have to be rewritten to scan the item table for an item // this function will have to be rewritten to scan the item table for an item
// with item class ammo, which has class index ubLoop // with item class ammo, which has class index ubLoop
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine"));
WEAPONTYPE * pWeapon; WEAPONTYPE * pWeapon;
UINT16 usLoop; UINT16 usLoop;
@@ -4456,7 +4537,22 @@ UINT16 RandomMagazine( OBJECTTYPE * pGun, UINT8 ubPercentStandard )
{ {
// store it! (make sure array is big enough) // store it! (make sure array is big enough)
Assert(usPossibleMagCnt < MAX_AMMO_TYPES_PER_GUN); Assert(usPossibleMagCnt < MAX_AMMO_TYPES_PER_GUN);
usPossibleMagIndex[usPossibleMagCnt++] = usLoop; // Madd: check to see if allowed by army
if ( gArmyItemChoices[ENEMYAMMOTYPES].ubChoices > 0 )
{
for ( int i=0;i<gArmyItemChoices[ENEMYAMMOTYPES].ubChoices;i++ )
{
if ( gArmyItemChoices[ENEMYAMMOTYPES].bItemNo[i] == Magazine[usLoop].ubAmmoType )
{
usPossibleMagIndex[usPossibleMagCnt++] = usLoop;
break;
}
}
}
else
{
usPossibleMagIndex[usPossibleMagCnt++] = usLoop;
}
} }
usLoop++; usLoop++;
@@ -4480,6 +4576,8 @@ UINT16 RandomMagazine( OBJECTTYPE * pGun, UINT8 ubPercentStandard )
if (Random(100) < ubPercentStandard) if (Random(100) < ubPercentStandard)
{ {
ubMagChosen = 0; ubMagChosen = 0;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine: ubMagChosen = %d",ubMagChosen ));
return( DefaultMagazine(pGun->usItem) );
} }
else else
{ {
@@ -4487,6 +4585,7 @@ UINT16 RandomMagazine( OBJECTTYPE * pGun, UINT8 ubPercentStandard )
ubMagChosen = ( UINT8 ) (1 + Random(( UINT32 ) ( usPossibleMagCnt - 1 ))); ubMagChosen = ( UINT8 ) (1 + Random(( UINT32 ) ( usPossibleMagCnt - 1 )));
} }
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine: ubMagChosen = %d",ubMagChosen ));
return( MagazineClassIndexToItemType(usPossibleMagIndex[ ubMagChosen ] ) ); return( MagazineClassIndexToItemType(usPossibleMagIndex[ ubMagChosen ] ) );
} }
} }
@@ -5785,6 +5884,9 @@ INT16 GetItemAimBonus( const INVTYPE* pItem, INT32 iRange, UINT8 ubAimTime )
// reduce effective sight range by aimbonus% per extra aiming time AP // reduce effective sight range by aimbonus% per extra aiming time AP
// of the distance beyond minrangeforaimbonus. // of the distance beyond minrangeforaimbonus.
if ( pItem->aimbonus < 0)
ubAimTime = 1;
return ( pItem->aimbonus * ubAimTime * ( iRange - pItem->minrangeforaimbonus ) ) / 100; return ( pItem->aimbonus * ubAimTime * ( iRange - pItem->minrangeforaimbonus ) ) / 100;
} }
@@ -5804,6 +5906,56 @@ INT16 GetAimBonus( OBJECTTYPE * pObj, INT32 iRange, UINT8 ubAimTime )
return( bns ); return( bns );
} }
// Madd: check equipment for aim bonus (penalties)
INT16 GetGearAimBonus( SOLDIERTYPE * pSoldier, INT32 iRange, UINT8 ubAimTime )
{
INT16 bns=0;
for (int j = HELMETPOS; j <= HEAD2POS; j++)
{
bns += GetItemAimBonus( &Item[pSoldier->inv[j].usItem], iRange, ubAimTime );
for ( int i = 0; i < MAX_ATTACHMENTS; i++)
{
bns += GetItemAimBonus(&Item[pSoldier->inv[j].usAttachItem[i]],iRange,ubAimTime);
}
}
return( bns );
}
// Madd: check equipment for to hit bonus (penalties)
INT16 GetGearToHitBonus( SOLDIERTYPE * pSoldier )
{
INT16 bns=0;
for (int j = HELMETPOS; j <= HEAD2POS; j++)
{
bns += Item[pSoldier->inv[j].usItem].tohitbonus;
for ( int i = 0; i < MAX_ATTACHMENTS; i++)
{
bns += Item[pSoldier->inv[j].usAttachItem[i]].tohitbonus;
}
}
return( bns );
}
// Madd: check equipment for AP bonus (penalties)
INT16 GetGearAPBonus( SOLDIERTYPE * pSoldier )
{
INT16 bns=0;
for (int j = HELMETPOS; j <= HEAD2POS; j++)
{
bns += Item[pSoldier->inv[j].usItem].APBonus;
for ( int i = 0; i < MAX_ATTACHMENTS; i++)
{
bns += Item[pSoldier->inv[j].usAttachItem[i]].APBonus;
}
}
return( bns );
}
UINT32 FindRangeBonusAttachment( OBJECTTYPE * pObj ) UINT32 FindRangeBonusAttachment( OBJECTTYPE * pObj )
{ {
@@ -5825,7 +5977,9 @@ INT16 GetRangeBonus( OBJECTTYPE * pObj )
INT16 bns=0; INT16 bns=0;
bns = BonusReduce( Item[pObj->usItem].rangebonus, pObj->bStatus[0] ); bns = BonusReduce( Item[pObj->usItem].rangebonus, pObj->bStatus[0] );
bns += Item[pObj->usGunAmmoItem].rangebonus;
if ( pObj->ubGunShotsLeft > 0 )
bns += Item[pObj->usGunAmmoItem].rangebonus;
for (bLoop = 0; bLoop < MAX_ATTACHMENTS; bLoop++) for (bLoop = 0; bLoop < MAX_ATTACHMENTS; bLoop++)
{ {
@@ -5907,7 +6061,9 @@ INT16 GetDamageBonus( OBJECTTYPE * pObj )
INT16 bns=0; INT16 bns=0;
bns = BonusReduce( Item[pObj->usItem].damagebonus, pObj->bStatus[0] ); bns = BonusReduce( Item[pObj->usItem].damagebonus, pObj->bStatus[0] );
bns += Item[pObj->usGunAmmoItem].damagebonus ;
if ( pObj->ubGunShotsLeft > 0 )
bns += Item[pObj->usGunAmmoItem].damagebonus ;
for (bLoop = 0; bLoop < MAX_ATTACHMENTS; bLoop++) for (bLoop = 0; bLoop < MAX_ATTACHMENTS; bLoop++)
{ {
@@ -5999,18 +6155,22 @@ INT16 GetRateOfFireBonus( OBJECTTYPE * pObj )
return( bns ); return( bns );
} }
INT16 GetAutofireBonus( OBJECTTYPE * pObj ) INT16 GetAutoToHitBonus( OBJECTTYPE * pObj, BOOLEAN fProneStance )
{ {
INT8 bLoop;
INT16 bns=0; INT16 bns=0;
bns = BonusOnOff( Item[pObj->usItem].autofirebonus, pObj->bStatus[0] ); // Snap: bipod is effective only in the prone stance
bns += Item[pObj->usGunAmmoItem].autofirebonus ;
for (bLoop = 0; bLoop < MAX_ATTACHMENTS; bLoop++) if ( ! Item[pObj->usItem].bipod || fProneStance )
bns = BonusReduceMore( Item[pObj->usItem].autofiretohitbonus, pObj->bStatus[0] );
bns += Item[pObj->usGunAmmoItem].autofiretohitbonus ;
for (int i = 0; i < MAX_ATTACHMENTS; i++)
{ {
bns += BonusOnOff( Item[pObj->usAttachItem[bLoop]].autofirebonus, pObj->bAttachStatus[bLoop] ); if ( ! Item[pObj->usAttachItem[i]].bipod || fProneStance )
bns += BonusReduceMore( Item[pObj->usAttachItem[i]].autofiretohitbonus, pObj->bAttachStatus[i] );
} }
return( bns ); return( bns );
} }
@@ -6893,4 +7053,15 @@ void ApplyEquipmentBonuses(SOLDIERTYPE * pSoldier)
if ( newCamo > oldCamo && pSoldier->bTeam == OUR_TEAM ) if ( newCamo > oldCamo && pSoldier->bTeam == OUR_TEAM )
DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 ); DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
} }
}
UINT16 GetFirstExplosiveOfType(UINT16 expType)
{
for (int i=0;i<MAXITEMS;i++)
{
if ( (Item[i].usItemClass == IC_EXPLOSV || Item[i].usItemClass == IC_GRENADE) && Explosive[Item[i].ubClassIndex].ubType == expType )
return i;
}
return 0;
} }
+7 -1
View File
@@ -208,7 +208,7 @@ INT16 GetPercentAutofireAPReduction( OBJECTTYPE * pObj );
INT16 GetPercentBurstFireAPReduction( OBJECTTYPE * pObj ); INT16 GetPercentBurstFireAPReduction( OBJECTTYPE * pObj );
INT16 GetPercentReadyTimeAPReduction( OBJECTTYPE * pObj ); INT16 GetPercentReadyTimeAPReduction( OBJECTTYPE * pObj );
INT16 GetPercentReloadTimeAPReduction( OBJECTTYPE * pObj ); INT16 GetPercentReloadTimeAPReduction( OBJECTTYPE * pObj );
INT16 GetAutofireBonus( OBJECTTYPE * pObj ); INT16 GetAutoToHitBonus( OBJECTTYPE * pObj, BOOLEAN fProneStance = FALSE );
INT16 GetRateOfFireBonus( OBJECTTYPE * pObj ); INT16 GetRateOfFireBonus( OBJECTTYPE * pObj );
INT16 GetBurstSizeBonus( OBJECTTYPE * pObj ); INT16 GetBurstSizeBonus( OBJECTTYPE * pObj );
BOOLEAN HasFastBurst( OBJECTTYPE * pObj ); BOOLEAN HasFastBurst( OBJECTTYPE * pObj );
@@ -279,5 +279,11 @@ INT16 GetCamoBonus( OBJECTTYPE * pObj );
void ApplyEquipmentBonuses(SOLDIERTYPE * pSoldier); void ApplyEquipmentBonuses(SOLDIERTYPE * pSoldier);
INT16 GetGearAimBonus( SOLDIERTYPE * pSoldier, INT32 iRange, UINT8 ubAimTime);
INT16 GetGearToHitBonus( SOLDIERTYPE * pSoldier );
INT16 GetGearAPBonus( SOLDIERTYPE * pSoldier );
UINT16 GetFirstExplosiveOfType(UINT16 expType);
#endif #endif
+3 -2
View File
@@ -1304,7 +1304,8 @@ INT32 LineOfSightTest( FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX,
} while( (iCurrTileX == iOldTileX) && (iCurrTileY == iOldTileY) && (iLoop < iDistance)); } while( (iCurrTileX == iOldTileX) && (iCurrTileY == iOldTileY) && (iLoop < iDistance));
// leaving a tile, check to see if it had gas in it // leaving a tile, check to see if it had gas in it
if ( pMapElement->ubExtFlags[0] & (MAPELEMENT_EXT_SMOKE | MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS) ) // if ( pMapElement->ubExtFlags[0] & (MAPELEMENT_EXT_SMOKE | MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS) )
if ( pMapElement->ubExtFlags[0] & (MAPELEMENT_EXT_SMOKE | MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS | MAPELEMENT_EXT_BURNABLEGAS) )
{ {
if ( (pMapElement->ubExtFlags[0] & MAPELEMENT_EXT_SMOKE) && !fSmell ) if ( (pMapElement->ubExtFlags[0] & MAPELEMENT_EXT_SMOKE) && !fSmell )
{ {
@@ -4295,7 +4296,7 @@ void MoveBullet( INT32 iBullet )
OBJECTTYPE Object; OBJECTTYPE Object;
INT32 iKnifeGridNo; INT32 iKnifeGridNo;
CreateItem( THROWING_KNIFE, (INT8) pBullet->ubItemStatus, &Object ); CreateItem( pBullet->fromItem, (INT8) pBullet->ubItemStatus, &Object );
// by default knife at same tile as window // by default knife at same tile as window
iKnifeGridNo = (INT16) iGridNo; iKnifeGridNo = (INT16) iGridNo;
+33 -11
View File
@@ -119,7 +119,7 @@ INT32 giPauseAllAITimer = 0;
BOOLEAN sniperwarning; BOOLEAN sniperwarning;
BOOLEAN biggunwarning; BOOLEAN biggunwarning;
BOOLEAN airstrikeavailable; //BOOLEAN airstrikeavailable;
TacticalStatusType gTacticalStatus; TacticalStatusType gTacticalStatus;
@@ -2073,21 +2073,26 @@ BOOLEAN HandleGotoNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving, BOOLE
// bPosOfMask = NO_SLOT; // bPosOfMask = NO_SLOT;
//} //}
// TODO: Madd: This next section is pretty lame because it can't figure out which explosive was used to actually cause a gas effect
// so for now, the first explosive to use a gas effect decides the health and breath damage for all of the gasses of that type
// (this was hard coded before by the developers - i guess they figured they didn't need to look for the actual explosion item,
// since they only had one of each gas item?!?)
// anyway, it means that we can only have one set of health/breath damage values for each gas type, until someone has time
// to dig into this further and actually make it find the original item that caused the gas
if ( !AM_A_ROBOT( pSoldier ) ) if ( !AM_A_ROBOT( pSoldier ) )
{ {
if ( gpWorldLevelData[ pSoldier->sGridNo ].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_TEARGAS ) if ( gpWorldLevelData[ pSoldier->sGridNo ].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_TEARGAS )
{ {
if ( !(pSoldier->fHitByGasFlags & HIT_BY_TEARGAS) && bPosOfMask == NO_SLOT ) if ( !(pSoldier->fHitByGasFlags & HIT_BY_TEARGAS) && bPosOfMask == NO_SLOT )
{ {
// check for gas mask pExplosive = &( Explosive[ Item[ GetFirstExplosiveOfType(EXPLOSV_TEARGAS) ].ubClassIndex ]);
pExplosive = &(Explosive[ Item[ TEARGAS_GRENADE ].ubClassIndex ]);
} }
} }
if ( gpWorldLevelData[ pSoldier->sGridNo ].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_MUSTARDGAS ) if ( gpWorldLevelData[ pSoldier->sGridNo ].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_MUSTARDGAS )
{ {
if ( !(pSoldier->fHitByGasFlags & HIT_BY_MUSTARDGAS) && bPosOfMask == NO_SLOT ) if ( !(pSoldier->fHitByGasFlags & HIT_BY_MUSTARDGAS) && bPosOfMask == NO_SLOT )
{ {
pExplosive = &(Explosive[ Item[ MUSTARD_GRENADE ].ubClassIndex ]); pExplosive = &(Explosive[ Item[ GetFirstExplosiveOfType(EXPLOSV_MUSTGAS) ].ubClassIndex ]);
} }
} }
} }
@@ -2095,7 +2100,14 @@ BOOLEAN HandleGotoNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving, BOOLE
{ {
if ( !(pSoldier->fHitByGasFlags & HIT_BY_CREATUREGAS) ) // gas mask doesn't help vs creaturegas if ( !(pSoldier->fHitByGasFlags & HIT_BY_CREATUREGAS) ) // gas mask doesn't help vs creaturegas
{ {
pExplosive = &(Explosive[ Item[ SMALL_CREATURE_GAS ].ubClassIndex ]); pExplosive = &(Explosive[ Item[ GetFirstExplosiveOfType(EXPLOSV_CREATUREGAS) ].ubClassIndex ]);
}
}
if ( gpWorldLevelData[ pSoldier->sGridNo ].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_BURNABLEGAS )
{
if ( !(pSoldier->fHitByGasFlags & HIT_BY_BURNABLEGAS) )
{
pExplosive = &(Explosive[ Item[ GetFirstExplosiveOfType(EXPLOSV_BURNABLEGAS) ].ubClassIndex ]);
} }
} }
if ( pExplosive ) if ( pExplosive )
@@ -5576,14 +5588,14 @@ void SetEnemyPresence( )
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence: warnings = false")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence: warnings = false"));
sniperwarning = FALSE; sniperwarning = FALSE;
biggunwarning = FALSE; biggunwarning = FALSE;
airstrikeavailable = TRUE; // airstrikeavailable = TRUE;
} }
else else
{ {
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence: warnings = true")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence: warnings = true"));
sniperwarning = TRUE; sniperwarning = TRUE;
biggunwarning = TRUE; biggunwarning = TRUE;
airstrikeavailable = FALSE; // airstrikeavailable = FALSE;
} }
// Say quote... // Say quote...
@@ -7519,10 +7531,20 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( UINT8 ubID, BOOLEAN fCalledByAttacke
if ( pSoldier && (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )) if ( pSoldier && (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO ))
{ {
// change back to single shot if ( !Weapon[pSoldier->inv[HANDPOS].usItem].NoSemiAuto )
pSoldier->bWeaponMode = WM_NORMAL; {
pSoldier->bDoAutofire = 0; // change back to single shot
pSoldier->bDoBurst = 0; pSoldier->bWeaponMode = WM_NORMAL;
pSoldier->bDoAutofire = 0;
pSoldier->bDoBurst = 0;
}
else
{
// change back to autofire
pSoldier->bWeaponMode = WM_AUTOFIRE;
pSoldier->bDoAutofire = 1;
pSoldier->bDoBurst = TRUE;
}
DirtyMercPanelInterface(pSoldier, DIRTYLEVEL2 ); DirtyMercPanelInterface(pSoldier, DIRTYLEVEL2 );
} }
+3 -3
View File
@@ -362,10 +362,10 @@ void SetSoldierNeutral( SOLDIERTYPE * pSoldier );
extern BOOLEAN sniperwarning; extern BOOLEAN sniperwarning;
extern BOOLEAN biggunwarning; extern BOOLEAN biggunwarning;
extern BOOLEAN airstrikeavailable; //extern BOOLEAN airstrikeavailable;
void CheckForAndSetupAirRaid (); //void CheckForAndSetupAirRaid ();
void EnemyCallInAirStrike (INT16 sSectorX, INT16 sSectorY); //void EnemyCallInAirStrike (INT16 sSectorX, INT16 sSectorY);
// will a sam site under the players control shoot down an airraid? // will a sam site under the players control shoot down an airraid?
BOOLEAN WillAirRaidBeStopped( INT16 sSectorX, INT16 sSectorY ); BOOLEAN WillAirRaidBeStopped( INT16 sSectorX, INT16 sSectorY );
+5 -4
View File
@@ -882,6 +882,7 @@ UINT8 CalcAPsToBurst( INT8 bBaseActionPoints, OBJECTTYPE * pObj )
aps = (aps * 100) / (100 + GetAPReductionStatus(pObj) / (100/GetPercentAPReduction(pObj))); aps = (aps * 100) / (100 + GetAPReductionStatus(pObj) / (100/GetPercentAPReduction(pObj)));
}*/ }*/
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcAPsToBurst: before bonus aps = %d, std bonus = %d, burst bonus = %d", aps,GetPercentAPReduction(pObj),GetPercentBurstFireAPReduction(pObj)));
// Snap: do this a little differently: % reduction means // Snap: do this a little differently: % reduction means
// aps <- aps * ( 100 - red ) / 100 // aps <- aps * ( 100 - red ) / 100
aps = ( aps * ( 100 - GetPercentAPReduction(pObj) ) + 50 ) / 100; aps = ( aps * ( 100 - GetPercentAPReduction(pObj) ) + 50 ) / 100;
@@ -894,6 +895,7 @@ UINT8 CalcAPsToBurst( INT8 bBaseActionPoints, OBJECTTYPE * pObj )
if ( aps < 0 ) aps = 0; if ( aps < 0 ) aps = 0;
else if ( aps > AP_MAXIMUM ) aps = AP_MAXIMUM; else if ( aps > AP_MAXIMUM ) aps = AP_MAXIMUM;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcAPsToBurst: return aps = %d", aps));
return (UINT8) aps; return (UINT8) aps;
} }
@@ -930,18 +932,19 @@ UINT8 CalcAPsToAutofire( INT8 bBaseActionPoints, OBJECTTYPE * pObj, UINT8 bDoAut
// DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcAPsToAutofire: found reflex sight, aps = %d, # shots = %d",aps,pSoldier->bDoAutofire )); // DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcAPsToAutofire: found reflex sight, aps = %d, # shots = %d",aps,pSoldier->bDoAutofire ));
//} //}
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcAPsToAutoFire: before bonus aps = %d, std bonus = %d, auto bonus = %d", aps,GetPercentAPReduction(pObj),GetPercentAutofireAPReduction(pObj)));
aps = ( aps * ( 100 - GetPercentAPReduction(pObj) ) + 50 ) / 100; aps = ( aps * ( 100 - GetPercentAPReduction(pObj) ) + 50 ) / 100;
aps = __max( aps, ( autofireaps + 1 ) / 2 ); aps = __max( aps, ( autofireaps + 1 ) / 2 );
// Snap: extend the burst bonus to autofire as well? // Snap: extend the burst bonus to autofire as well?
aps = ( aps * ( 100 - GetPercentBurstFireAPReduction(pObj) ) + 50 ) / 100; aps = ( aps * ( 100 - GetPercentAutofireAPReduction(pObj) ) + 50 ) / 100;
if ( aps < 0 ) aps = 0; if ( aps < 0 ) aps = 0;
else if ( aps > AP_MAXIMUM ) aps = AP_MAXIMUM; else if ( aps > AP_MAXIMUM ) aps = AP_MAXIMUM;
} }
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcAPsToAutoFire: return aps = %d", aps));
return (UINT8) aps; return (UINT8) aps;
} }
@@ -1312,8 +1315,6 @@ UINT8 MinAPsToShootOrStab(SOLDIERTYPE *pSoldier, INT16 sGridNo, UINT8 ubAddTurni
// bFullAPs are BASE APs, which do not include APs caried over from the previous turn. // bFullAPs are BASE APs, which do not include APs caried over from the previous turn.
bFullAPs = CalcActionPoints( pSoldier ); bFullAPs = CalcActionPoints( pSoldier );
//bFullAPs = pSoldier->bInitialActionPoints;//CalcActionPoints( pSoldier ); //lal
// aim skill is the same whether we are using 1 or 2 guns // aim skill is the same whether we are using 1 or 2 guns
bAimSkill = CalcAimSkill( pSoldier, usItem ); bAimSkill = CalcAimSkill( pSoldier, usItem );
+17 -17
View File
@@ -198,7 +198,7 @@ void ResetRain()
void GenerateRainDropsList() void GenerateRainDropsList()
{ {
guiCurrMaxAmountOfRainDrops = (UINT32)BASE_MAXIMUM_DROPS * gbCurrentRainIntensity; guiCurrMaxAmountOfRainDrops = (UINT32)(BASE_MAXIMUM_DROPS * gbCurrentRainIntensity);
pRainDrops = (TRainDrop *)MemAlloc( sizeof( TRainDrop ) * guiCurrMaxAmountOfRainDrops ); pRainDrops = (TRainDrop *)MemAlloc( sizeof( TRainDrop ) * guiCurrMaxAmountOfRainDrops );
memset( pRainDrops, 0, sizeof( TRainDrop ) * guiCurrMaxAmountOfRainDrops ); memset( pRainDrops, 0, sizeof( TRainDrop ) * guiCurrMaxAmountOfRainDrops );
@@ -235,8 +235,8 @@ void CreateRainDrops()
BOOLEAN fLoopIsDone; BOOLEAN fLoopIsDone;
UINT32 uiIndRand; UINT32 uiIndRand;
fpCos = cos( DEGREE(fpCurrDropAngleOfFalling) ); fpCos = (FLOAT)(cos( DEGREE(fpCurrDropAngleOfFalling) ));
fpSin = sin( DEGREE(fpCurrDropAngleOfFalling) ); fpSin = (FLOAT)(sin( DEGREE(fpCurrDropAngleOfFalling) ));
if( fpCos ) if( fpCos )
fpAbsTg = fabs( fpSin / fpCos ); // take only absolute valuse fpAbsTg = fabs( fpSin / fpCos ); // take only absolute valuse
@@ -288,20 +288,20 @@ void CreateRainDrops()
if( uiIndex >= fpNumDropsToXBorder ) if( uiIndex >= fpNumDropsToXBorder )
{ {
pCurr->fpX = gRainRegion.left + Random( gRainRegion.right - gRainRegion.left ); pCurr->fpX = (FLOAT)(gRainRegion.left + Random( gRainRegion.right - gRainRegion.left ));
pCurr->fpY = gRainRegion.bottom - 1; pCurr->fpY = (FLOAT)(gRainRegion.bottom - 1);
} }
else if( fpCos > 0 ) else if( fpCos > 0 )
{ {
pCurr->fpX = gRainRegion.right - 1; pCurr->fpX = (FLOAT)(gRainRegion.right - 1);
pCurr->fpY = gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ); pCurr->fpY = (FLOAT)(gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ));
}else{ }else{
pCurr->fpX = 0; pCurr->fpX = 0;
pCurr->fpY = gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ); pCurr->fpY = (FLOAT)(gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ));
} }
}else{ }else{
pCurr->fpX = gRainRegion.left + Random( gRainRegion.right - gRainRegion.left ); pCurr->fpX = (FLOAT)(gRainRegion.left + Random( gRainRegion.right - gRainRegion.left ));
pCurr->fpY = gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ); pCurr->fpY = (FLOAT)(gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ));
} }
pCurr->uiAmountOfTicksToLive = 0; pCurr->uiAmountOfTicksToLive = 0;
@@ -405,7 +405,7 @@ void RenderRainOnSurface()
if( !pCurr->fAlive )continue; if( !pCurr->fAlive )continue;
LineDraw( TRUE, pCurr->fpX, pCurr->fpY, pCurr->fpX + pCurr->fpEndRelX, pCurr->fpY + pCurr->fpEndRelY, sDropsColor, pDestBuf ); LineDraw( TRUE, (int)pCurr->fpX, (int)pCurr->fpY, (int)pCurr->fpX + (int)pCurr->fpEndRelX, (int)(pCurr->fpY + pCurr->fpEndRelY), sDropsColor, pDestBuf );
} }
UnLockVideoSurface( guiRainRenderSurface ); UnLockVideoSurface( guiRainRenderSurface );
@@ -427,35 +427,35 @@ void GenerateRainMaximums()
fpMaxDropAngleOfFalling = 160; fpMaxDropAngleOfFalling = 160;
} }
fpCurrDropAngleOfFalling = fpMinDropAngleOfFalling + Random( fpMaxDropAngleOfFalling - fpMinDropAngleOfFalling ); fpCurrDropAngleOfFalling = fpMinDropAngleOfFalling + Random( (UINT32)(fpMaxDropAngleOfFalling - fpMinDropAngleOfFalling) );
fpMinDropLength = MIN_DROP_LENGTH + ADD_DROP_LENGTH_IF_STORM * ( gbCurrentRainIntensity - 1 ); fpMinDropLength = MIN_DROP_LENGTH + ADD_DROP_LENGTH_IF_STORM * ( gbCurrentRainIntensity - 1 );
fpMaxDropLength = fpMinDropLength + DROP_LENGTH_RANGE; fpMaxDropLength = fpMinDropLength + DROP_LENGTH_RANGE;
fpCurrDropLength = fpMinDropLength + Random( fpMaxDropLength - fpMinDropLength ); fpCurrDropLength = fpMinDropLength + Random( (UINT32)(fpMaxDropLength - fpMinDropLength) );
fpMinDropSpeed = BASE_DROP_SPEED * gbCurrentRainIntensity; fpMinDropSpeed = BASE_DROP_SPEED * gbCurrentRainIntensity;
fpMaxDropSpeed = fpMinDropSpeed + DROP_SPEED_RANGE; fpMaxDropSpeed = fpMinDropSpeed + DROP_SPEED_RANGE;
fpCurrDropSpeed = fpMinDropSpeed + Random( fpMaxDropSpeed - fpMinDropSpeed ); fpCurrDropSpeed = fpMinDropSpeed + Random( (UINT32)(fpMaxDropSpeed - fpMinDropSpeed) );
} }
void UpdateRainDropsProperities() void UpdateRainDropsProperities()
{ {
fpCurrDropAngleOfFalling += Random( 1000 * DROP_ANGLE_CHANGE_RATE * gbCurrentRainIntensity * 2 ) / 1000.0f - DROP_ANGLE_CHANGE_RATE * gbCurrentRainIntensity; fpCurrDropAngleOfFalling += Random( (UINT32)(1000 * DROP_ANGLE_CHANGE_RATE * gbCurrentRainIntensity * 2 )) / 1000.0f - DROP_ANGLE_CHANGE_RATE * gbCurrentRainIntensity;
fpCurrDropAngleOfFalling = max( fpMinDropAngleOfFalling, fpCurrDropAngleOfFalling ); fpCurrDropAngleOfFalling = max( fpMinDropAngleOfFalling, fpCurrDropAngleOfFalling );
fpCurrDropAngleOfFalling = min( fpMaxDropAngleOfFalling, fpCurrDropAngleOfFalling ); fpCurrDropAngleOfFalling = min( fpMaxDropAngleOfFalling, fpCurrDropAngleOfFalling );
fpCurrDropLength += Random( 1000 * DROP_LENGTH_CHANGE_RATE * 2 ) / 1000.0f - DROP_LENGTH_CHANGE_RATE; fpCurrDropLength += Random( (UINT32)(1000 * DROP_LENGTH_CHANGE_RATE * 2 )) / 1000.0f - DROP_LENGTH_CHANGE_RATE;
fpCurrDropLength = max( fpMinDropLength, fpCurrDropLength ); fpCurrDropLength = max( fpMinDropLength, fpCurrDropLength );
fpCurrDropLength = min( fpMaxDropLength, fpCurrDropLength ); fpCurrDropLength = min( fpMaxDropLength, fpCurrDropLength );
fpCurrDropSpeed += Random( 1000 * DROP_SPEED_CHANGE_RATE * 2 ) / 1000.0f - DROP_SPEED_CHANGE_RATE; fpCurrDropSpeed += Random( (UINT32)(1000 * DROP_SPEED_CHANGE_RATE * 2 )) / 1000.0f - DROP_SPEED_CHANGE_RATE;
fpCurrDropSpeed = max( fpMinDropSpeed, fpCurrDropSpeed ); fpCurrDropSpeed = max( fpMinDropSpeed, fpCurrDropSpeed );
fpCurrDropSpeed = min( fpMaxDropSpeed, fpCurrDropSpeed ); fpCurrDropSpeed = min( fpMaxDropSpeed, fpCurrDropSpeed );
+54 -1
View File
@@ -85,6 +85,14 @@
#include "overhead map.h" #include "overhead map.h"
#endif #endif
//turnspeed
UINT8 gubPlayerTurnSpeedUpFactor = 1;
UINT8 gubEnemyTurnSpeedUpFactor = 1;
UINT8 gubCreatureTurnSpeedUpFactor = 1;
UINT8 gubMilitiaTurnSpeedUpFactor = 1;
UINT8 gubCivTurnSpeedUpFactor = 1;
//turnspeed
extern INT16 DirIncrementer[8]; extern INT16 DirIncrementer[8];
#define PALETTEFILENAME "BINARYDATA\\ja2pal.dat" #define PALETTEFILENAME "BINARYDATA\\ja2pal.dat"
@@ -495,6 +503,8 @@ INT8 CalcActionPoints(SOLDIERTYPE *pSold)
//if (GameOption[INCREASEDAP] % 2 == 1) //if (GameOption[INCREASEDAP] % 2 == 1)
//points += AP_INCREASE; //points += AP_INCREASE;
//Madd: Add in AP Bonuses (Penalties) from worn gear
ubPoints += GetGearAPBonus ( pSold );
// Calculate bandage // Calculate bandage
bBandage = pSold->bLifeMax - pSold->bLife - pSold->bBleeding; bBandage = pSold->bLifeMax - pSold->bLife - pSold->bBleeding;
@@ -5715,6 +5725,19 @@ void CalculateSoldierAniSpeed( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pStatsSoldier
// here. Some animation, such as water-movement, have an ADDITIONAL speed // here. Some animation, such as water-movement, have an ADDITIONAL speed
switch( pSoldier->usAnimState ) switch( pSoldier->usAnimState )
{ {
// Lesh: bursting animation delay control begins
// Add your animation ID to control it
case STANDING_BURST:
case FIRE_STAND_BURST_SPREAD:
case FIRE_BURST_LOW_STAND:
case TANK_BURST:
case CROUCHED_BURST:
case PRONE_BURST:
pSoldier->sAniDelay = Weapon[Item[pSoldier->inv[HANDPOS].usItem].ubClassIndex].sAniDelay;
AdjustAniSpeed( pSoldier );
return;
// Lesh: end
case PRONE: case PRONE:
case STANDING: case STANDING:
@@ -5849,6 +5872,25 @@ void CalculateSoldierAniSpeed( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pStatsSoldier
} }
UINT8 GetSpeedUpFactor( )
{
switch( gTacticalStatus.ubCurrentTeam )
{
case OUR_TEAM:
return gubPlayerTurnSpeedUpFactor;
case ENEMY_TEAM:
return gubEnemyTurnSpeedUpFactor;
case CREATURE_TEAM:
return gubCreatureTurnSpeedUpFactor;
case MILITIA_TEAM:
return gubMilitiaTurnSpeedUpFactor;
case CIV_TEAM:
return gubCivTurnSpeedUpFactor;
}
return 1;
}
void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier ) void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier )
{ {
@@ -5895,6 +5937,11 @@ void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier )
//pSoldier->sAniDelay = 1000; //pSoldier->sAniDelay = 1000;
} }
if ( gTacticalStatus.uiFlags & TURNBASED && gTacticalStatus.uiFlags & INCOMBAT )
if( GetSpeedUpFactor() )
pSoldier->sAniDelay /= GetSpeedUpFactor();
else
pSoldier->sAniDelay = 0;
} }
@@ -9304,12 +9351,18 @@ void ReLoadSoldierAnimationDueToHandItemChange( SOLDIERTYPE *pSoldier, UINT16 us
// Shutoff burst.... // Shutoff burst....
// ( we could be on, then change gun that does not have burst ) // ( we could be on, then change gun that does not have burst )
if ( Weapon[ usNewItem ].ubShotsPerBurst == 0 ) if ( Weapon[ usNewItem ].ubShotsPerBurst == 0 && !Weapon[usNewItem].NoSemiAuto )
{ {
pSoldier->bDoBurst = FALSE; pSoldier->bDoBurst = FALSE;
pSoldier->bWeaponMode = WM_NORMAL; pSoldier->bWeaponMode = WM_NORMAL;
pSoldier->bDoAutofire = 0; pSoldier->bDoAutofire = 0;
} }
else if ( Weapon[usNewItem].NoSemiAuto )
{
pSoldier->bDoBurst = TRUE;
pSoldier->bWeaponMode = WM_AUTOFIRE;
pSoldier->bDoAutofire = 1;
}
if ( gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_FIREREADY ) if ( gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_FIREREADY )
{ {
+1
View File
@@ -331,6 +331,7 @@ enum
HIT_BY_TEARGAS = 0x01, HIT_BY_TEARGAS = 0x01,
HIT_BY_MUSTARDGAS = 0x02, HIT_BY_MUSTARDGAS = 0x02,
HIT_BY_CREATUREGAS = 0x04, HIT_BY_CREATUREGAS = 0x04,
HIT_BY_BURNABLEGAS = 0x08,
}; };
+4 -4
View File
@@ -216,8 +216,8 @@ BOOLEAN LoadMercProfiles(void)
char *pFileName3 = "BINARYDATA\\Prof3.dat"; char *pFileName3 = "BINARYDATA\\Prof3.dat";
char *pFileName4 = "BINARYDATA\\Prof4.dat"; char *pFileName4 = "BINARYDATA\\Prof4.dat";
UINT32 uiLoop, uiLoop2, uiLoop3; UINT32 uiLoop, uiLoop2;//, uiLoop3;
UINT16 usItem, usNewGun, usAmmo, usNewAmmo; UINT16 usItem;//, usNewGun, usAmmo, usNewAmmo;
UINT32 uiNumBytesRead; UINT32 uiNumBytesRead;
switch ( gGameOptions.ubDifficultyLevel) switch ( gGameOptions.ubDifficultyLevel)
@@ -275,7 +275,7 @@ BOOLEAN LoadMercProfiles(void)
// Setup face index value // Setup face index value
// Default is the ubCharNum // Default is the ubCharNum
gMercProfiles[uiLoop].ubFaceIndex = (UINT8)uiLoop; gMercProfiles[uiLoop].ubFaceIndex = (UINT8)uiLoop;
/*
if ( !gGameOptions.fGunNut ) if ( !gGameOptions.fGunNut )
{ {
@@ -311,7 +311,7 @@ BOOLEAN LoadMercProfiles(void)
} }
} // end of if not gun nut } // end of if not gun nut
*/
//ATE: Calculate some inital attractiveness values for buddy's inital equipment... //ATE: Calculate some inital attractiveness values for buddy's inital equipment...
// Look for gun and armour // Look for gun and armour
gMercProfiles[uiLoop].bMainGunAttractiveness = -1; gMercProfiles[uiLoop].bMainGunAttractiveness = -1;
+65 -1265
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -163,6 +163,7 @@ void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode )
// Check if this guy is able to be selected.... // Check if this guy is able to be selected....
if ( MercPtrs[ gusSelectedSoldier ]->bLife < OKLIFE ) if ( MercPtrs[ gusSelectedSoldier ]->bLife < OKLIFE )
{ {
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("StartPlayerTeamTurn: SelectNextAvailSoldier"));
SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] ); SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] );
} }
@@ -924,6 +925,7 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
// Select soldier.... // Select soldier....
if ( MercPtrs[ ubInterruptedSoldier ]->bLife < OKLIFE ) if ( MercPtrs[ ubInterruptedSoldier ]->bLife < OKLIFE )
{ {
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EndInterrupt: SelectNextAvailSoldier"));
SelectNextAvailSoldier( MercPtrs[ ubInterruptedSoldier ] ); SelectNextAvailSoldier( MercPtrs[ ubInterruptedSoldier ] );
} }
else else
+123 -42
View File
@@ -45,7 +45,7 @@
#endif #endif
//rain //rain
#define WEAPON_RELIABILITY_REDUCTION_PER_RAIN_INTENSITY 9 #define WEAPON_RELIABILITY_REDUCTION_PER_RAIN_INTENSITY 0
extern INT8 gbCurrentRainIntensity; extern INT8 gbCurrentRainIntensity;
//end rain //end rain
@@ -283,7 +283,7 @@ EXPLOSIVETYPE Explosive[MAXITEMS+1];// =
//}; //};
INT8 gzBurstSndStrings[MAXITEMS][30];// = INT8 gzBurstSndStrings[MAXITEMS*2][128];// =
//{ //{
// "", // NOAMMO // "", // NOAMMO
// "", // 38 // "", // 38
@@ -383,14 +383,18 @@ weaponStartElementHandle(void *userData, const char *name, const char **atts)
strcmp(name, "ubHitVolume") == 0 || strcmp(name, "ubHitVolume") == 0 ||
strcmp(name, "sSound") == 0 || strcmp(name, "sSound") == 0 ||
strcmp(name, "sBurstSound") == 0 || strcmp(name, "sBurstSound") == 0 ||
strcmp(name, "sSilencedBurstSound") == 0 ||
strcmp(name, "sReloadSound") == 0 || strcmp(name, "sReloadSound") == 0 ||
strcmp(name, "sLocknLoadSound") == 0 || strcmp(name, "sLocknLoadSound") == 0 ||
strcmp(name, "bBurstAP") == 0 || strcmp(name, "bBurstAP") == 0 ||
strcmp(name, "bAutofireShotsPerFiveAP") == 0 || strcmp(name, "bAutofireShotsPerFiveAP") == 0 ||
strcmp(name, "APsToReload") == 0 || strcmp(name, "APsToReload") == 0 ||
strcmp(name, "SwapClips") == 0 || strcmp(name, "SwapClips") == 0 ||
strcmp(name, "AutoPenalty") == 0 ||
strcmp(name, "NoSemiAuto") == 0 ||
strcmp(name, "MaxDistForMessyDeath") == 0 || strcmp(name, "MaxDistForMessyDeath") == 0 ||
strcmp(name, "SilencedSound") == 0)) strcmp(name, "SilencedSound") == 0 || // Lesh: add new field (OR operand)
strcmp(name, "BurstAniDelay") == 0)) // Lesh: add new field (field itself)
{ {
pData->curElement = WEAPON_ELEMENT_WEAPON_PROPERY; pData->curElement = WEAPON_ELEMENT_WEAPON_PROPERY;
@@ -545,6 +549,11 @@ weaponEndElementHandle(void *userData, const char *name)
pData->curElement = WEAPON_ELEMENT_WEAPON; pData->curElement = WEAPON_ELEMENT_WEAPON;
pData->curWeapon.sBurstSound = (UINT16) atol(pData->szCharData); pData->curWeapon.sBurstSound = (UINT16) atol(pData->szCharData);
} }
else if(strcmp(name, "sSilencedBurstSound") == 0)
{
pData->curElement = WEAPON_ELEMENT_WEAPON;
pData->curWeapon.sSilencedBurstSound = (UINT16) atol(pData->szCharData);
}
else if(strcmp(name, "sReloadSound") == 0) else if(strcmp(name, "sReloadSound") == 0)
{ {
pData->curElement = WEAPON_ELEMENT_WEAPON; pData->curElement = WEAPON_ELEMENT_WEAPON;
@@ -573,18 +582,36 @@ weaponEndElementHandle(void *userData, const char *name)
else if(strcmp(name, "SilencedSound") == 0) else if(strcmp(name, "SilencedSound") == 0)
{ {
pData->curElement = WEAPON_ELEMENT_WEAPON; pData->curElement = WEAPON_ELEMENT_WEAPON;
pData->curWeapon.silencedSound = (UINT8) atol(pData->szCharData); pData->curWeapon.silencedSound = (UINT16) atol(pData->szCharData);
} }
else if(strcmp(name, "SwapClips") == 0) else if(strcmp(name, "SwapClips") == 0)
{ {
pData->curElement = WEAPON_ELEMENT_WEAPON; pData->curElement = WEAPON_ELEMENT_WEAPON;
pData->curWeapon.swapClips = (UINT8) atol(pData->szCharData); pData->curWeapon.swapClips = (BOOLEAN) atol(pData->szCharData);
} }
else if(strcmp(name, "MaxDistForMessyDeath") == 0) else if(strcmp(name, "MaxDistForMessyDeath") == 0)
{ {
pData->curElement = WEAPON_ELEMENT_WEAPON; pData->curElement = WEAPON_ELEMENT_WEAPON;
pData->curWeapon.maxdistformessydeath = (UINT8) atol(pData->szCharData); pData->curWeapon.maxdistformessydeath = (UINT8) atol(pData->szCharData);
} }
else if(strcmp(name, "AutoPenalty") == 0)
{
pData->curElement = WEAPON_ELEMENT_WEAPON;
pData->curWeapon.AutoPenalty = (UINT8) atol(pData->szCharData);
}
else if(strcmp(name, "NoSemiAuto") == 0)
{
pData->curElement = WEAPON_ELEMENT_WEAPON;
pData->curWeapon.NoSemiAuto = (BOOLEAN) atol(pData->szCharData);
}
// Lesh: xmlreader must handle new field
else if(strcmp(name, "BurstAniDelay") == 0)
{
pData->curElement = WEAPON_ELEMENT_WEAPON;
pData->curWeapon.sAniDelay = (INT16) atol(pData->szCharData);
}
// Lesh: end
pData->maxReadDepth--; pData->maxReadDepth--;
} }
@@ -731,6 +758,7 @@ BOOLEAN ReadInWeaponStats(STR fileName)
FilePrintf(hFile,"\t\t<ubHitVolume>%d</ubHitVolume>\r\n", Weapon[cnt].ubHitVolume); FilePrintf(hFile,"\t\t<ubHitVolume>%d</ubHitVolume>\r\n", Weapon[cnt].ubHitVolume);
FilePrintf(hFile,"\t\t<sSound>%d</sSound>\r\n", Weapon[cnt].sSound); FilePrintf(hFile,"\t\t<sSound>%d</sSound>\r\n", Weapon[cnt].sSound);
FilePrintf(hFile,"\t\t<sBurstSound>%d</sBurstSound>\r\n", Weapon[cnt].sBurstSound); FilePrintf(hFile,"\t\t<sBurstSound>%d</sBurstSound>\r\n", Weapon[cnt].sBurstSound);
FilePrintf(hFile,"\t\t<sSilencedBurstSound>%d</sSilencedBurstSound>\r\n", Weapon[cnt].sSilencedBurstSound);
FilePrintf(hFile,"\t\t<sReloadSound>%d</sReloadSound>\r\n", Weapon[cnt].sReloadSound); FilePrintf(hFile,"\t\t<sReloadSound>%d</sReloadSound>\r\n", Weapon[cnt].sReloadSound);
FilePrintf(hFile,"\t\t<sLocknLoadSound>%d</sLocknLoadSound>\r\n", Weapon[cnt].sLocknLoadSound); FilePrintf(hFile,"\t\t<sLocknLoadSound>%d</sLocknLoadSound>\r\n", Weapon[cnt].sLocknLoadSound);
FilePrintf(hFile,"\t\t<bBurstAP>%d</bBurstAP>\r\n", Weapon[cnt].bBurstAP); FilePrintf(hFile,"\t\t<bBurstAP>%d</bBurstAP>\r\n", Weapon[cnt].bBurstAP);
@@ -827,10 +855,12 @@ BOOLEAN WriteWeaponStats()
FilePrintf(hFile,"\t\t<ubMagSize>%d</ubMagSize>\r\n", Weapon[cnt].ubMagSize); FilePrintf(hFile,"\t\t<ubMagSize>%d</ubMagSize>\r\n", Weapon[cnt].ubMagSize);
FilePrintf(hFile,"\t\t<usRange>%d</usRange>\r\n", Weapon[cnt].usRange); FilePrintf(hFile,"\t\t<usRange>%d</usRange>\r\n", Weapon[cnt].usRange);
FilePrintf(hFile,"\t\t<usReloadDelay>%d</usReloadDelay>\r\n", Weapon[cnt].usReloadDelay); FilePrintf(hFile,"\t\t<usReloadDelay>%d</usReloadDelay>\r\n", Weapon[cnt].usReloadDelay);
FilePrintf(hFile,"\t\t<BurstAniDelay>%d</BurstAniDelay>\r\n", Weapon[cnt].sAniDelay);
FilePrintf(hFile,"\t\t<ubAttackVolume>%d</ubAttackVolume>\r\n", Weapon[cnt].ubAttackVolume); FilePrintf(hFile,"\t\t<ubAttackVolume>%d</ubAttackVolume>\r\n", Weapon[cnt].ubAttackVolume);
FilePrintf(hFile,"\t\t<ubHitVolume>%d</ubHitVolume>\r\n", Weapon[cnt].ubHitVolume); FilePrintf(hFile,"\t\t<ubHitVolume>%d</ubHitVolume>\r\n", Weapon[cnt].ubHitVolume);
FilePrintf(hFile,"\t\t<sSound>%d</sSound>\r\n", Weapon[cnt].sSound); FilePrintf(hFile,"\t\t<sSound>%d</sSound>\r\n", Weapon[cnt].sSound);
FilePrintf(hFile,"\t\t<sBurstSound>%d</sBurstSound>\r\n", Weapon[cnt].sBurstSound); FilePrintf(hFile,"\t\t<sBurstSound>%d</sBurstSound>\r\n", Weapon[cnt].sBurstSound);
FilePrintf(hFile,"\t\t<sSilencedBurstSound>%d</sSilencedBurstSound>\r\n", Weapon[cnt].sSilencedBurstSound);
FilePrintf(hFile,"\t\t<sReloadSound>%d</sReloadSound>\r\n", Weapon[cnt].sReloadSound); FilePrintf(hFile,"\t\t<sReloadSound>%d</sReloadSound>\r\n", Weapon[cnt].sReloadSound);
FilePrintf(hFile,"\t\t<sLocknLoadSound>%d</sLocknLoadSound>\r\n", Weapon[cnt].sLocknLoadSound); FilePrintf(hFile,"\t\t<sLocknLoadSound>%d</sLocknLoadSound>\r\n", Weapon[cnt].sLocknLoadSound);
FilePrintf(hFile,"\t\t<SilencedSound>%d</SilencedSound>\r\n", Weapon[cnt].silencedSound ); FilePrintf(hFile,"\t\t<SilencedSound>%d</SilencedSound>\r\n", Weapon[cnt].silencedSound );
@@ -839,6 +869,8 @@ BOOLEAN WriteWeaponStats()
FilePrintf(hFile,"\t\t<APsToReload>%d</APsToReload>\r\n", Weapon[cnt].APsToReload); FilePrintf(hFile,"\t\t<APsToReload>%d</APsToReload>\r\n", Weapon[cnt].APsToReload);
FilePrintf(hFile,"\t\t<SwapClips>%d</SwapClips>\r\n", Weapon[cnt].swapClips ); FilePrintf(hFile,"\t\t<SwapClips>%d</SwapClips>\r\n", Weapon[cnt].swapClips );
FilePrintf(hFile,"\t\t<MaxDistForMessyDeath>%d</MaxDistForMessyDeath>\r\n", Weapon[cnt].maxdistformessydeath); FilePrintf(hFile,"\t\t<MaxDistForMessyDeath>%d</MaxDistForMessyDeath>\r\n", Weapon[cnt].maxdistformessydeath);
FilePrintf(hFile,"\t\t<AutoPenalty>%d</AutoPenalty>\r\n", Weapon[cnt].AutoPenalty);
FilePrintf(hFile,"\t\t<NoSemiAuto>%d</NoSemiAuto>\r\n", Weapon[cnt].NoSemiAuto);
@@ -924,7 +956,7 @@ INT32 EffectiveArmour( OBJECTTYPE * pObj )
iValue += iValue2; iValue += iValue2;
} }
return( iValue ); return( max(iValue,1) );
} }
INT32 ArmourPercent( SOLDIERTYPE * pSoldier ) INT32 ArmourPercent( SOLDIERTYPE * pSoldier )
@@ -993,7 +1025,7 @@ INT32 ExplosiveEffectiveArmour( OBJECTTYPE * pObj )
iValue += iValue2; iValue += iValue2;
} }
return( iValue ); return( max(iValue,1) );
} }
INT8 ArmourVersusExplosivesPercent( SOLDIERTYPE * pSoldier ) INT8 ArmourVersusExplosivesPercent( SOLDIERTYPE * pSoldier )
@@ -1064,7 +1096,6 @@ void AdjustImpactByHitLocation( INT32 iImpact, UINT8 ubHitLocation, INT32 * piNe
//rain //rain
extern INT8 gbCurrentRainIntensity; extern INT8 gbCurrentRainIntensity;
//end rain //end rain
BOOLEAN CheckForGunJam( SOLDIERTYPE * pSoldier ) BOOLEAN CheckForGunJam( SOLDIERTYPE * pSoldier )
{ {
OBJECTTYPE * pObj; OBJECTTYPE * pObj;
@@ -1096,7 +1127,7 @@ BOOLEAN CheckForGunJam( SOLDIERTYPE * pSoldier )
//iChance = iChance * (10 - Item[pObj->usItem].bReliability * 2) / 10; //iChance = iChance * (10 - Item[pObj->usItem].bReliability * 2) / 10;
//rain //rain
iChance = iChance * (10 - Item[pObj->usItem].bReliability * 2) / 10; // iChance = iChance * (10 - Item[pObj->usItem].bReliability * 2) / 10; // Madd: took it back out
//end rain //end rain
if (pSoldier->bDoBurst > 1) if (pSoldier->bDoBurst > 1)
@@ -1130,7 +1161,7 @@ BOOLEAN CheckForGunJam( SOLDIERTYPE * pSoldier )
else if (pObj->bGunAmmoStatus < 0) else if (pObj->bGunAmmoStatus < 0)
{ {
// try to unjam gun // try to unjam gun
iResult = SkillCheck( pSoldier, UNJAM_GUN_CHECK, (INT8) (Item[pObj->usItem].bReliability * 4) ); iResult = SkillCheck( pSoldier, UNJAM_GUN_CHECK, (INT8) ((Item[pObj->usItem].bReliability + Item[pObj->usGunAmmoItem].bReliability)* 4) );
if (iResult > 0) if (iResult > 0)
{ {
// yay! unjammed the gun // yay! unjammed the gun
@@ -1457,7 +1488,7 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT16 sTargetGridNo )
if( noisefactor < MAX_PERCENT_NOISE_VOLUME_FOR_SILENCED_SOUND || Weapon[ usItemNum ].ubAttackVolume <= 10 ) if( noisefactor < MAX_PERCENT_NOISE_VOLUME_FOR_SILENCED_SOUND || Weapon[ usItemNum ].ubAttackVolume <= 10 )
{ {
// Pick sound file baed on how many bullets we are going to fire... // Pick sound file baed on how many bullets we are going to fire...
sprintf( (char *)zBurstString, "SOUNDS\\WEAPONS\\SILENCER BURST %d.wav", pSoldier->bBulletsLeft ); sprintf( (char *)zBurstString, (const char*)gzBurstSndStrings[ Weapon[ usItemNum ].sSilencedBurstSound ], pSoldier->bBulletsLeft );
// Try playing sound... // Try playing sound...
pSoldier->iBurstSoundID = PlayJA2SampleFromFile( (STR8) zBurstString, RATE_11025, SoundVolume( HIGHVOLUME, pSoldier->sGridNo ), 1, SoundDir( pSoldier->sGridNo ) ); pSoldier->iBurstSoundID = PlayJA2SampleFromFile( (STR8) zBurstString, RATE_11025, SoundVolume( HIGHVOLUME, pSoldier->sGridNo ), 1, SoundDir( pSoldier->sGridNo ) );
@@ -1465,7 +1496,8 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT16 sTargetGridNo )
else else
{ {
// Pick sound file baed on how many bullets we are going to fire... // Pick sound file baed on how many bullets we are going to fire...
sprintf( (char *)zBurstString, "SOUNDS\\WEAPONS\\%s%d.wav", gzBurstSndStrings[ Weapon[ usItemNum ].ubCalibre ], pSoldier->bBulletsLeft ); // Lesh: changed next line
sprintf( (char *)zBurstString, (const char*)gzBurstSndStrings[ Weapon[ usItemNum ].sBurstSound ], pSoldier->bBulletsLeft );
INT8 volume = HIGHVOLUME; INT8 volume = HIGHVOLUME;
if ( noisefactor < 100 ) volume = (volume * noisefactor) / 100; if ( noisefactor < 100 ) volume = (volume * noisefactor) / 100;
@@ -1860,7 +1892,11 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT16 sTargetGridNo )
} }
// CJC: since jamming is no longer affected by reliability, increase chance of status going down for really unreliabile guns // CJC: since jamming is no longer affected by reliability, increase chance of status going down for really unreliabile guns
uiDepreciateTest = BASIC_DEPRECIATE_CHANCE + 3 * Item[ usItemNum ].bReliability; INT16 ammoReliability = 0; // Madd: ammo reliability affects gun
if ( Item[usItemNum].usItemClass == IC_GUN )
ammoReliability = Item[pSoldier->inv[pSoldier->ubAttackingHand].usItem].bReliability;
uiDepreciateTest = BASIC_DEPRECIATE_CHANCE + 3 * (Item[ usItemNum ].bReliability + ammoReliability);
if ( !PreRandom( uiDepreciateTest ) && ( pSoldier->inv[ pSoldier->ubAttackingHand ].bStatus[0] > 1) ) if ( !PreRandom( uiDepreciateTest ) && ( pSoldier->inv[ pSoldier->ubAttackingHand ].bStatus[0] > 1) )
{ {
@@ -2929,7 +2965,7 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT8 bWeaponStatus, UINT
if ( usStructureID == INVALID_STRUCTURE_ID ) if ( usStructureID == INVALID_STRUCTURE_ID )
{ {
// Add item // Add item
CreateItem( THROWING_KNIFE, bWeaponStatus, &Object ); CreateItem( usWeaponIndex, bWeaponStatus, &Object );
AddItemToPool( sGridNo, &Object, -1 , 0, 0, -1 ); AddItemToPool( sGridNo, &Object, -1 , 0, 0, -1 );
@@ -3209,7 +3245,7 @@ BOOLEAN InRange( SOLDIERTYPE *pSoldier, INT16 sGridNo )
if ( Item[ usInHand ].usItemClass == IC_THROWING_KNIFE ) if ( Item[ usInHand ].usItemClass == IC_THROWING_KNIFE )
{ {
// NB CalcMaxTossRange returns range in tiles, not in world units // NB CalcMaxTossRange returns range in tiles, not in world units
if ( sRange <= CalcMaxTossRange( pSoldier, THROWING_KNIFE, TRUE ) * CELL_X_SIZE ) if ( sRange <= CalcMaxTossRange( pSoldier, usInHand, TRUE ) * CELL_X_SIZE )
{ {
return( TRUE ); return( TRUE );
} }
@@ -3230,9 +3266,9 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
{ {
//SOLDIERTYPE *vicpSoldier; //SOLDIERTYPE *vicpSoldier;
SOLDIERTYPE * pTarget; SOLDIERTYPE * pTarget;
INT32 iChance, iRange, iSightRange, iMaxRange, iBonus; //, minRange;
//rain //rain
//INT32 iChance, iRange, iSightRange, iMaxRange, iBonus; //, minRange; //INT32 iScopeBonus;
INT32 iChance, iRange, iSightRange, iMaxRange, iScopeBonus, iBonus; //, minRange;
//end rain //end rain
INT32 iGunCondition, iMarksmanship; INT32 iGunCondition, iMarksmanship;
@@ -3347,36 +3383,43 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
} }
} }
//Madd: inherent weapon accuracy bonus
iChance += Weapon[usInHand].bAccuracy;
// if ( !(Item[ usInHand ].fFlags & ITEM_TWO_HANDED) ) // if ( !(Item[ usInHand ].fFlags & ITEM_TWO_HANDED) )
if ( !(Item[ usInHand ].twohanded ) ) if ( !(Item[ usInHand ].twohanded ) )
{ {
// SMGs are treated as pistols for these purpose except there is a -5 penalty;
if (Weapon[usInHand].ubWeaponClass == SMGCLASS)
{
iChance -= AIM_PENALTY_SMG;
}
/*
if (pSoldier->inv[SECONDHANDPOS].usItem == NOTHING) if (pSoldier->inv[SECONDHANDPOS].usItem == NOTHING)
{ {
// firing with pistol in right hand, and second hand empty. // firing with gun in right hand, and second hand empty (ie: no grenade, med kit or anything there)
iChance += AIM_BONUS_TWO_HANDED_PISTOL; // Madd: easier to fire pistol/smg w/one hand free, essentially this will make pistols a little bit more accurate, and hopefully still useful later in the game
if (Weapon[usInHand].ubWeaponClass == HANDGUNCLASS)
iChance += AIM_BONUS_TWO_HANDED_PISTOL;
} }
else */ else
if ( !HAS_SKILL_TRAIT( pSoldier, AMBIDEXT ) )
{ {
if ( IsValidSecondHandShot( pSoldier ) ) // Madd: harder to fire smgs w/something in other hand
// SMGs are treated as pistols for these purpose except there is a -5 penalty;
if (Weapon[usInHand].ubWeaponClass == SMGCLASS)
{ {
// penalty to aim when firing two pistols iChance -= AIM_PENALTY_SMG;
iChance -= AIM_PENALTY_DUAL_PISTOLS;
} }
/*
else if ( !HAS_SKILL_TRAIT( pSoldier, AMBIDEXT ) )
{ {
// penalty to aim with pistol being fired one-handed if ( IsValidSecondHandShot( pSoldier ) )
iChance -= AIM_PENALTY_ONE_HANDED_PISTOL; {
// penalty to aim when firing two pistols
iChance -= AIM_PENALTY_DUAL_PISTOLS;
}
/*
else
{
// penalty to aim with pistol being fired one-handed
iChance -= AIM_PENALTY_ONE_HANDED_PISTOL;
}
*/
} }
*/
} }
} }
@@ -3394,6 +3437,19 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
} }
iChance -= iPenalty; iChance -= iPenalty;
} }
else if ( pSoldier->bDoAutofire > 0 )
{
// Snap: bipod may reduce auto penalty
iPenalty = GetAutoPenalty(pInHand, gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE)
* (pSoldier->bDoBurst - 1);
// halve the penalty for people with the autofire trait
if ( HAS_SKILL_TRAIT( pSoldier, AUTO_WEAPS ) )
{
iPenalty /= 2 * NUM_SKILL_TRAITS( pSoldier, AUTO_WEAPS );
}
iChance -= iPenalty;
}
sDistVis = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sGridNo, 0, pSoldier ); sDistVis = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sGridNo, 0, pSoldier );
@@ -3497,7 +3553,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
//rain //rain
// reduce scope effectiveness when it's raining // reduce scope effectiveness when it's raining
iScopeBonus /= 1 + gbCurrentRainIntensity; // iScopeBonus /= 1 + gbCurrentRainIntensity; //madd: commented out -- didn't do anything but cause a warning :S
//end rain //end rain
// // reduce effective range by the bonus obtained from the scope // // reduce effective range by the bonus obtained from the scope
@@ -3537,18 +3593,26 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
//} //}
//Madd: Some gear can affect the to-hit bonus and the bonus from aiming
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcChanceToHitGun: before bonus - ubAimTime = %d, iSightRange = %d, iChance = %d ", ubAimTime, iSightRange, iChance));
iSightRange -= GetGearAimBonus ( pSoldier, iRange, ubAimTime );
iChance += GetGearToHitBonus ( pSoldier );
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcChanceToHitGun: after gear bonus - ubAimTime = %d, iSightRange = %d, iChance = %d ", ubAimTime, iSightRange, iChance));
// Reduce effective range by the aiming bonus (e.g. from sniper scope) // Reduce effective range by the aiming bonus (e.g. from sniper scope)
iSightRange -= GetAimBonus( pInHand, iRange, ubAimTime ); iSightRange -= GetAimBonus( pInHand, iRange, ubAimTime );
if (iSightRange < 1) if (iSightRange < 1)
{ {
iSightRange = 1; iSightRange = 1;
} }
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcChanceToHitGun: after scope bonus - ubAimTime = %d, iSightRange = %d, iChance = %d ", ubAimTime, iSightRange, iChance));
UINT8 bLightLevel = LightTrueLevel(sGridNo, pSoldier->bTargetLevel); UINT8 bLightLevel = LightTrueLevel(sGridNo, pSoldier->bTargetLevel);
// Apply flat to-hit bonus (e.g. from laser scope) // Apply flat to-hit bonus (e.g. from laser scope)
// Snap: If prone and range is good, apply bipod bonus here as well // Snap: If prone and range is good, apply bipod bonus here as well
iChance += GetToHitBonus( pInHand, iSightRange, bLightLevel, iChance += GetToHitBonus( pInHand, iSightRange, bLightLevel,
gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE && iRange > MIN_PRONE_RANGE ); gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE && iRange > MIN_PRONE_RANGE );
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcChanceToHitGun: after to hit bonus - ubAimTime = %d, iSightRange = %d, iChance = %d ", ubAimTime, iSightRange, iChance));
} }
// if aiming at the head, reduce chance to hit // if aiming at the head, reduce chance to hit
@@ -3838,6 +3902,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
} }
// NumMessage("ChanceToHit = ",chance); // NumMessage("ChanceToHit = ",chance);
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcChanceToHitGun: ichance = %d",iChance));
return (iChance); return (iChance);
} }
@@ -4920,13 +4985,13 @@ BOOLEAN IsGunWeaponModeCapable( SOLDIERTYPE *pSoldier, UINT8 ubHandPos , UINT8 b
switch(bWpnMode) switch(bWpnMode)
{ {
case WM_NORMAL: case WM_NORMAL:
return (pSoldier->inv[ ubHandPos ].usItem != NOTHING && Item[ pSoldier->inv[ ubHandPos ].usItem ].usItemClass & IC_WEAPON); // Check for being a weapon.... return (pSoldier->inv[ ubHandPos ].usItem != NOTHING && Item[ pSoldier->inv[ ubHandPos ].usItem ].usItemClass & IC_WEAPON && !Weapon[ pSoldier->inv[ ubHandPos ].usItem ].NoSemiAuto ); // Check for being a weapon....
case WM_BURST: case WM_BURST:
return IsGunBurstCapable(pSoldier, ubHandPos, FALSE); return IsGunBurstCapable(pSoldier, ubHandPos, FALSE);
case WM_AUTOFIRE: case WM_AUTOFIRE:
return (IsGunAutofireCapable(pSoldier, ubHandPos) && !Item[pSoldier->inv[ubHandPos].usItem].grenadelauncher ); return ((IsGunAutofireCapable(pSoldier, ubHandPos) || Weapon[ pSoldier->inv[ ubHandPos ].usItem ].NoSemiAuto )&& !Item[pSoldier->inv[ubHandPos].usItem].grenadelauncher );
case WM_ATTACHED_GL: case WM_ATTACHED_GL:
// return (FindAttachment( &(pSoldier->inv[ubHandPos]), UNDER_GLAUNCHER ) != ITEM_NOT_FOUND && FindLaunchableAttachment( &(pSoldier->inv[ubHandPos]), UNDER_GLAUNCHER ) != ITEM_NOT_FOUND ); // return (FindAttachment( &(pSoldier->inv[ubHandPos]), UNDER_GLAUNCHER ) != ITEM_NOT_FOUND && FindLaunchableAttachment( &(pSoldier->inv[ubHandPos]), UNDER_GLAUNCHER ) != ITEM_NOT_FOUND );
@@ -5272,10 +5337,14 @@ void ChangeWeaponMode( SOLDIERTYPE * pSoldier )
{ {
pSoldier->bWeaponMode++; pSoldier->bWeaponMode++;
if(pSoldier->bWeaponMode == NUM_WEAPON_MODES) if(pSoldier->bWeaponMode == NUM_WEAPON_MODES)
pSoldier->bWeaponMode = WM_NORMAL; {
if ( Weapon[pSoldier->inv[HANDPOS].usItem].NoSemiAuto )
pSoldier->bWeaponMode = WM_AUTOFIRE;
else
pSoldier->bWeaponMode = WM_NORMAL;
}
} }
while(IsGunWeaponModeCapable( pSoldier, HANDPOS, pSoldier->bWeaponMode ) == FALSE && pSoldier->bWeaponMode != WM_NORMAL); while(IsGunWeaponModeCapable( pSoldier, HANDPOS, pSoldier->bWeaponMode ) == FALSE && pSoldier->bWeaponMode != WM_NORMAL);
if (pSoldier->bWeaponMode == WM_AUTOFIRE || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO ) if (pSoldier->bWeaponMode == WM_AUTOFIRE || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )
{ {
@@ -5414,11 +5483,22 @@ UINT8 GetBurstPenalty( OBJECTTYPE *pObj, BOOLEAN fProneStance )
return Weapon[ pObj->usItem ].ubBurstPenalty - bns; return Weapon[ pObj->usItem ].ubBurstPenalty - bns;
} }
UINT8 GetAutoPenalty( OBJECTTYPE *pObj, BOOLEAN fProneStance )
{
// Snap: Make sure burst bonus does not exceed burst penalty!
INT16 bns = GetAutoToHitBonus(pObj, fProneStance);
if ( bns > Weapon[ pObj->usItem ].AutoPenalty ) {
return 0;
}
return Weapon[ pObj->usItem ].AutoPenalty - bns;
}
UINT8 GetAutofireShotsPerFiveAPs( OBJECTTYPE *pObj ) UINT8 GetAutofireShotsPerFiveAPs( OBJECTTYPE *pObj )
{ {
// DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("GetAutofireShotsPerFiveAPs")); // DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("GetAutofireShotsPerFiveAPs"));
return Weapon[ pObj->usItem ].bAutofireShotsPerFiveAP + GetAutofireBonus(pObj); return Weapon[ pObj->usItem ].bAutofireShotsPerFiveAP;
} }
UINT8 GetMagSize( OBJECTTYPE *pObj ) UINT8 GetMagSize( OBJECTTYPE *pObj )
@@ -5444,3 +5524,4 @@ INT8 GetAPsToReload( OBJECTTYPE *pObj )
( 100 - GetPercentReloadTimeAPReduction(pObj) ) + 50 ) / 100; ( 100 - GetPercentReloadTimeAPReduction(pObj) ) + 50 ) / 100;
} }
+9 -4
View File
@@ -178,7 +178,8 @@ enum
EXPLOSV_FLARE, EXPLOSV_FLARE,
EXPLOSV_NOISE, EXPLOSV_NOISE,
EXPLOSV_SMOKE, EXPLOSV_SMOKE,
EXPLOSV_CREATUREGAS, EXPLOSV_CREATUREGAS,
EXPLOSV_BURNABLEGAS,
}; };
#define AMMO_DAMAGE_ADJUSTMENT_BUCKSHOT( x ) (x / 4) #define AMMO_DAMAGE_ADJUSTMENT_BUCKSHOT( x ) (x / 4)
@@ -250,6 +251,7 @@ typedef struct
UINT8 ubHitVolume; UINT8 ubHitVolume;
UINT16 sSound; UINT16 sSound;
UINT16 sBurstSound; UINT16 sBurstSound;
UINT16 sSilencedBurstSound;
UINT16 sReloadSound; UINT16 sReloadSound;
UINT16 sLocknLoadSound; UINT16 sLocknLoadSound;
UINT8 bBurstAP; // Snap: Burst AP cost replaces bBaseAutofireCost UINT8 bBurstAP; // Snap: Burst AP cost replaces bBaseAutofireCost
@@ -259,12 +261,14 @@ typedef struct
UINT32 uiIndex; UINT32 uiIndex;
BOOLEAN swapClips; BOOLEAN swapClips;
UINT8 silencedSound; UINT16 silencedSound;
UINT8 APsToReload; UINT8 APsToReload;
UINT8 maxdistformessydeath; UINT8 maxdistformessydeath;
BOOLEAN NoSemiAuto;
UINT8 AutoPenalty;
INT16 sAniDelay; // Lesh: for burst animation delay
} WEAPONTYPE; } WEAPONTYPE;
typedef struct typedef struct
{ {
UINT8 ubCalibre; UINT8 ubCalibre;
@@ -302,7 +306,7 @@ extern WEAPONTYPE Weapon[ MAXITEMS ];
extern ARMOURTYPE Armour[MAXITEMS+1]; extern ARMOURTYPE Armour[MAXITEMS+1];
extern MAGTYPE Magazine[MAXITEMS+1]; extern MAGTYPE Magazine[MAXITEMS+1];
extern EXPLOSIVETYPE Explosive[MAXITEMS+1]; extern EXPLOSIVETYPE Explosive[MAXITEMS+1];
extern INT8 gzBurstSndStrings[MAXITEMS][30]; extern INT8 gzBurstSndStrings[MAXITEMS*2][128]; // Lesh: changed this
extern AMMOTYPE AmmoTypes[MAXITEMS]; extern AMMOTYPE AmmoTypes[MAXITEMS];
@@ -353,6 +357,7 @@ UINT8 GetDamage ( OBJECTTYPE *pObj );
UINT8 GetAutofireShotsPerFiveAPs( OBJECTTYPE *pObj ); UINT8 GetAutofireShotsPerFiveAPs( OBJECTTYPE *pObj );
UINT8 GetBaseAutoFireCost( OBJECTTYPE *pObj ); UINT8 GetBaseAutoFireCost( OBJECTTYPE *pObj );
UINT8 GetBurstPenalty( OBJECTTYPE *pObj, BOOLEAN fProneStance = FALSE ); UINT8 GetBurstPenalty( OBJECTTYPE *pObj, BOOLEAN fProneStance = FALSE );
UINT8 GetAutoPenalty( OBJECTTYPE *pObj, BOOLEAN fProneStance = FALSE );
UINT8 GetShotsPerBurst( OBJECTTYPE *pObj ); UINT8 GetShotsPerBurst( OBJECTTYPE *pObj );
UINT8 GetMagSize( OBJECTTYPE *pObj ); UINT8 GetMagSize( OBJECTTYPE *pObj );
BOOLEAN WeaponReady(SOLDIERTYPE * pSoldier); BOOLEAN WeaponReady(SOLDIERTYPE * pSoldier);
+3 -1
View File
@@ -415,7 +415,7 @@ void LoadWorldItemsFromMap( INT8 **hBuffer )
{ //no match, so don't add item to world { //no match, so don't add item to world
continue; continue;
} }
/*
if ( !gGameOptions.fGunNut ) if ( !gGameOptions.fGunNut )
{ {
UINT16 usReplacement; UINT16 usReplacement;
@@ -458,6 +458,8 @@ void LoadWorldItemsFromMap( INT8 **hBuffer )
} }
} }
} }
*/
} }
if( dummyItem.o.usItem == ACTION_ITEM && gfLoadPitsWithoutArming ) if( dummyItem.o.usItem == ACTION_ITEM && gfLoadPitsWithoutArming )
{ //if we are loading a pit, they are typically loaded without being armed. { //if we are loading a pit, they are typically loaded without being armed.
+6 -1
View File
@@ -57,6 +57,7 @@ typedef PARSE_STAGE;
#define BOBBYRAYSTRINGSFILENAME "BobbyRayStrings.xml" #define BOBBYRAYSTRINGSFILENAME "BobbyRayStrings.xml"
#define AMMOCALIBERSTRINGSFILENAME "AmmoCaliberStrings.xml" #define AMMOCALIBERSTRINGSFILENAME "AmmoCaliberStrings.xml"
#define SOUNDSFILENAME "Sounds.xml" #define SOUNDSFILENAME "Sounds.xml"
#define BURSTSOUNDSFILENAME "BurstSounds.xml"
#define CITYTABLEFILENAME "Cities.xml" #define CITYTABLEFILENAME "Cities.xml"
@@ -117,4 +118,8 @@ extern BOOLEAN ReadInSoundArray(STR fileName);
extern BOOLEAN ReadInAmmoTypeStats(STR fileName); extern BOOLEAN ReadInAmmoTypeStats(STR fileName);
extern BOOLEAN WriteAmmoTypeStats(); extern BOOLEAN WriteAmmoTypeStats();
#endif // Lesh: 2 lines added
extern BOOLEAN ReadInBurstSoundArray(STR fileName);
extern BOOLEAN WriteBurstSoundArray();
// Lesh: over
#endif
+345
View File
@@ -0,0 +1,345 @@
#ifdef PRECOMPILEDHEADERS
#include "Tactical All.h"
#else
#include "sgp.h"
#include "overhead types.h"
#include "Sound Control.h"
#include "Soldier Control.h"
#include "overhead.h"
#include "Event Pump.h"
#include "weapons.h"
#include "Animation Control.h"
#include "sys globals.h"
#include "Handle UI.h"
#include "Isometric Utils.h"
#include "worldman.h"
#include "math.h"
#include "points.h"
#include "ai.h"
#include "los.h"
#include "renderworld.h"
#include "opplist.h"
#include "interface.h"
#include "message.h"
#include "campaign.h"
#include "items.h"
#include "text.h"
#include "Soldier Profile.h"
#include "tile animation.h"
#include "Dialogue Control.h"
#include "SkillCheck.h"
#include "explosion control.h"
#include "Quests.h"
#include "Physics.h"
#include "Random.h"
#include "Vehicles.h"
#include "bullets.h"
#include "morale.h"
#include "meanwhile.h"
#include "SkillCheck.h"
#include "gamesettings.h"
#include "SaveLoadMap.h"
#include "Debug Control.h"
#include "expat.h"
#include "XML.h"
#endif
struct
{
PARSE_STAGE curElement;
INT8 szCharData[MAX_CHAR_DATA_LENGTH+1];
UINT32 maxArraySize;
UINT32 curIndex;
UINT32 currentDepth;
UINT32 maxReadDepth;
}
typedef ammoParseData;
static void XMLCALL
ammoStartElementHandle(void *userData, const char *name, const char **atts)
{
ammoParseData * pData = (ammoParseData *)userData;
if(pData->currentDepth <= pData->maxReadDepth) //are we reading this element?
{
if(strcmp(name, "AMMOLIST") == 0 && pData->curElement == ELEMENT_NONE)
{
pData->curElement = ELEMENT_LIST;
pData->maxReadDepth++; //we are not skipping this element
}
else if(strcmp(name, "AMMO") == 0 && pData->curElement == ELEMENT_LIST)
{
pData->curElement = ELEMENT;
pData->maxReadDepth++; //we are not skipping this element
pData->curIndex++;
}
else if(pData->curElement == ELEMENT &&
(strcmp(name, "AmmoCaliber") == 0 ||
strcmp(name, "BRCaliber") == 0 ))
{
pData->curElement = ELEMENT_PROPERTY;
pData->maxReadDepth++; //we are not skipping this element
}
pData->szCharData[0] = '\0';
}
pData->currentDepth++;
}
static void XMLCALL
ammoCharacterDataHandle(void *userData, const char *str, int len)
{
ammoParseData * pData = (ammoParseData *)userData;
if( (pData->currentDepth <= pData->maxReadDepth) &&
(strlen(pData->szCharData) < MAX_CHAR_DATA_LENGTH)
){
strncat(pData->szCharData,str,__min((unsigned int)len,MAX_CHAR_DATA_LENGTH-strlen(pData->szCharData)));
}
}
static void XMLCALL
ammoEndElementHandle(void *userData, const char *name)
{
char temp;
ammoParseData * pData = (ammoParseData *)userData;
if(pData->currentDepth <= pData->maxReadDepth) //we're at the end of an element that we've been reading
{
if(strcmp(name, "AMMOLIST") == 0)
{
pData->curElement = ELEMENT_NONE;
}
else if(strcmp(name, "AMMO") == 0)
{
pData->curElement = ELEMENT_LIST;
}
else if(strcmp(name, "AmmoCaliber") == 0)
{
pData->curElement = ELEMENT;
if(pData->curIndex < pData->maxArraySize)
{
for(int i=0;i<min((int)strlen(pData->szCharData),MAX_CHAR_DATA_LENGTH);i++)
{
temp = pData->szCharData[i];
AmmoCaliber[pData->curIndex][i] = temp;
}
}
}
else if(strcmp(name, "BRCaliber") == 0)
{
pData->curElement = ELEMENT;
if(pData->curIndex < pData->maxArraySize)
{
for(int i=0;i<min((int)strlen(pData->szCharData),MAX_CHAR_DATA_LENGTH);i++)
{
temp = pData->szCharData[i];
BobbyRayAmmoCaliber[pData->curIndex][i] = temp;
}
}
}
pData->maxReadDepth--;
}
pData->currentDepth--;
}
BOOLEAN ReadInAmmoStats(STR fileName)
{
HWFILE hFile;
UINT32 uiBytesRead;
UINT32 uiFSize;
CHAR8 * lpcBuffer;
XML_Parser parser = XML_ParserCreate(NULL);
ammoParseData pData;
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading AmmoStrings.xml" );
// Open ammos file
hFile = FileOpen( fileName, FILE_ACCESS_READ, FALSE );
if ( !hFile )
return( FALSE );
uiFSize = FileGetSize(hFile);
lpcBuffer = (CHAR8 *) MemAlloc(uiFSize+1);
//Read in block
if ( !FileRead( hFile, lpcBuffer, uiFSize, &uiBytesRead ) )
{
MemFree(lpcBuffer);
return( FALSE );
}
lpcBuffer[uiFSize] = 0; //add a null terminator
FileClose( hFile );
XML_SetElementHandler(parser, ammoStartElementHandle, ammoEndElementHandle);
XML_SetCharacterDataHandler(parser, ammoCharacterDataHandle);
memset(&pData,0,sizeof(pData));
pData.maxArraySize = MAXITEMS;
pData.curIndex = -1;
XML_SetUserData(parser, &pData);
if(!XML_Parse(parser, lpcBuffer, uiFSize, TRUE))
{
CHAR8 errorBuf[511];
sprintf(errorBuf, "XML Parser Error in AmmoStrings.xml: %s at line %d", XML_ErrorString(XML_GetErrorCode(parser)), XML_GetCurrentLineNumber(parser));
LiveMessage(errorBuf);
MemFree(lpcBuffer);
return FALSE;
}
MemFree(lpcBuffer);
XML_ParserFree(parser);
return( TRUE );
}
BOOLEAN WriteAmmoStats()
{
HWFILE hFile;
//Debug code; make sure that what we got from the file is the same as what's there
// Open a new file
hFile = FileOpen( "TABLEDATA\\Ammos out.xml", FILE_ACCESS_WRITE | FILE_CREATE_ALWAYS, FALSE );
if ( !hFile )
return( FALSE );
{
UINT32 cnt;
FilePrintf(hFile,"<AMMOLIST>\r\n");
for(cnt = 0;cnt < MAXITEMS;cnt++)
{
FilePrintf(hFile,"\t<AMMO>\r\n");
UINT16 * szRemainder = AmmoCaliber[cnt]; //the remaining string to be output (for making valid XML)
FilePrintf(hFile,"\t\t<AmmoCaliber>");
while(szRemainder[0] != '\0')
{
UINT32 uiCharLoc = strcspn(szRemainder,"&<>\'\"\0");
UINT16 invChar = szRemainder[uiCharLoc];
if(uiCharLoc)
{
szRemainder[uiCharLoc] = '\0';
FilePrintf(hFile,"%s",szRemainder);
szRemainder[uiCharLoc] = invChar;
}
szRemainder += uiCharLoc;
switch(invChar)
{
case '&':
FilePrintf(hFile,"&amp;");
szRemainder++;
break;
case '<':
FilePrintf(hFile,"&lt;");
szRemainder++;
break;
case '>':
FilePrintf(hFile,"&gt;");
szRemainder++;
break;
case '\'':
FilePrintf(hFile,"&apos;");
szRemainder++;
break;
case '\"':
FilePrintf(hFile,"&quot;");
szRemainder++;
break;
}
}
FilePrintf(hFile,"</AmmoCaliber>\r\n");
szRemainder = BobbyRayAmmoCaliber[cnt]; //the remaining string to be output (for making valid XML)
FilePrintf(hFile,"\t\t<BRCaliber>");
while(szRemainder[0] != '\0')
{
UINT32 uiCharLoc = strcspn(szRemainder,"&<>\'\"\0");
UINT16 invChar = szRemainder[uiCharLoc];
if(uiCharLoc)
{
szRemainder[uiCharLoc] = '\0';
FilePrintf(hFile,"%s",szRemainder);
szRemainder[uiCharLoc] = invChar;
}
szRemainder += uiCharLoc;
switch(invChar)
{
case '&':
FilePrintf(hFile,"&amp;");
szRemainder++;
break;
case '<':
FilePrintf(hFile,"&lt;");
szRemainder++;
break;
case '>':
FilePrintf(hFile,"&gt;");
szRemainder++;
break;
case '\'':
FilePrintf(hFile,"&apos;");
szRemainder++;
break;
case '\"':
FilePrintf(hFile,"&quot;");
szRemainder++;
break;
}
}
FilePrintf(hFile,"</BRCaliber>\r\n");
FilePrintf(hFile,"\t</AMMO>\r\n");
}
FilePrintf(hFile,"</AMMOLIST>\r\n");
}
FileClose( hFile );
return( TRUE );
}
+270
View File
@@ -0,0 +1,270 @@
#ifdef PRECOMPILEDHEADERS
#include "Tactical All.h"
#else
#include "sgp.h"
#include "overhead types.h"
#include "Sound Control.h"
#include "Soldier Control.h"
#include "overhead.h"
#include "Event Pump.h"
#include "weapons.h"
#include "Animation Control.h"
#include "sys globals.h"
#include "Handle UI.h"
#include "Isometric Utils.h"
#include "worldman.h"
#include "math.h"
#include "points.h"
#include "ai.h"
#include "los.h"
#include "renderworld.h"
#include "opplist.h"
#include "interface.h"
#include "message.h"
#include "campaign.h"
#include "items.h"
#include "text.h"
#include "Soldier Profile.h"
#include "tile animation.h"
#include "Dialogue Control.h"
#include "SkillCheck.h"
#include "explosion control.h"
#include "Quests.h"
#include "Physics.h"
#include "Random.h"
#include "Vehicles.h"
#include "bullets.h"
#include "morale.h"
#include "meanwhile.h"
#include "SkillCheck.h"
#include "gamesettings.h"
#include "SaveLoadMap.h"
#include "Debug Control.h"
#include "expat.h"
#include "XML.h"
#endif
struct
{
PARSE_STAGE curElement;
INT8 szCharData[MAX_CHAR_DATA_LENGTH+1];
UINT32 maxArraySize;
UINT32 curIndex;
UINT32 currentDepth;
UINT32 maxReadDepth;
}
typedef burstSoundParseData;
static void XMLCALL
burstSoundStartElementHandle(void *userData, const char *name, const char **atts)
{
burstSoundParseData * pData = (burstSoundParseData *)userData;
if(pData->currentDepth <= pData->maxReadDepth) //are we reading this element?
{
if(strcmp(name, "SOUNDLIST") == 0 && pData->curElement == ELEMENT_NONE)
{
pData->curElement = ELEMENT_LIST;
pData->maxReadDepth++; //we are not skipping this element
}
else if(strcmp(name, "SOUND") == 0 && pData->curElement == ELEMENT_LIST)
{
pData->curElement = ELEMENT;
pData->maxReadDepth++; //we are not skipping this element
pData->curIndex++;
}
pData->szCharData[0] = '\0';
}
pData->currentDepth++;
}
static void XMLCALL
burstSoundCharacterDataHandle(void *userData, const char *str, int len)
{
burstSoundParseData * pData = (burstSoundParseData *)userData;
if( (pData->currentDepth <= pData->maxReadDepth) &&
(strlen(pData->szCharData) < MAX_CHAR_DATA_LENGTH)
){
strncat(pData->szCharData,str,__min((unsigned int)len,MAX_CHAR_DATA_LENGTH-strlen(pData->szCharData)));
}
}
static void XMLCALL
burstSoundEndElementHandle(void *userData, const char *name)
{
burstSoundParseData * pData = (burstSoundParseData *)userData;
if(pData->currentDepth <= pData->maxReadDepth) //we're at the end of an element that we've been reading
{
if(strcmp(name, "SOUNDLIST") == 0)
{
pData->curElement = ELEMENT_NONE;
}
else if(strcmp(name, "SOUND") == 0)
{
pData->curElement = ELEMENT_LIST;
if(pData->curIndex < pData->maxArraySize)
{
char temp;
for(int i=0;i<min((int)strlen(pData->szCharData),128);i++)
{
temp = pData->szCharData[i];
gzBurstSndStrings[pData->curIndex][i] = temp;
}
}
}
pData->maxReadDepth--;
}
pData->currentDepth--;
}
BOOLEAN ReadInBurstSoundArray(STR fileName)
{
HWFILE hFile;
UINT32 uiBytesRead;
UINT32 uiFSize;
CHAR8 * lpcBuffer;
XML_Parser parser = XML_ParserCreate(NULL);
burstSoundParseData pData;
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, String("Loading %s",SOUNDSFILENAME ) );
// Open sounds file
hFile = FileOpen( fileName, FILE_ACCESS_READ, FALSE );
if ( !hFile )
return( FALSE );
uiFSize = FileGetSize(hFile);
lpcBuffer = (CHAR8 *) MemAlloc(uiFSize+1);
//Read in block
if ( !FileRead( hFile, lpcBuffer, uiFSize, &uiBytesRead ) )
{
MemFree(lpcBuffer);
return( FALSE );
}
lpcBuffer[uiFSize] = 0; //add a null terminator
FileClose( hFile );
XML_SetElementHandler(parser, burstSoundStartElementHandle, burstSoundEndElementHandle);
XML_SetCharacterDataHandler(parser, burstSoundCharacterDataHandle);
memset(&pData,0,sizeof(pData));
pData.maxArraySize = MAX_SAMPLES;
pData.curIndex = -1;
XML_SetUserData(parser, &pData);
if(!XML_Parse(parser, lpcBuffer, uiFSize, TRUE))
{
CHAR8 errorBuf[511];
sprintf(errorBuf, "XML Parser Error in %s.xml: %s at line %d", SOUNDSFILENAME, XML_ErrorString(XML_GetErrorCode(parser)), XML_GetCurrentLineNumber(parser));
LiveMessage(errorBuf);
MemFree(lpcBuffer);
return FALSE;
}
MemFree(lpcBuffer);
XML_ParserFree(parser);
return( TRUE );
}
BOOLEAN WriteBurstSoundArray()
{
HWFILE hFile;
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, String("WriteSoundArray"));
//Debug code; make sure that what we got from the file is the same as what's there
// Open a new file
hFile = FileOpen( "TABLEDATA\\BurstSounds out.xml", FILE_ACCESS_WRITE | FILE_CREATE_ALWAYS, FALSE );
if ( !hFile )
return( FALSE );
{
UINT32 cnt;
FilePrintf(hFile,"<SOUNDLIST>\r\n");
for(cnt = 0;cnt < 19;cnt++)
{
FilePrintf(hFile,"\t<SOUND>");
INT8 * szRemainder = gzBurstSndStrings[cnt]; //the remaining string to be output (for making valid XML)
while(szRemainder[0] != '\0')
{
UINT32 uiCharLoc = strcspn(szRemainder,"&<>\'\"\0");
char invChar = szRemainder[uiCharLoc];
if(uiCharLoc)
{
szRemainder[uiCharLoc] = '\0';
FilePrintf(hFile,"%s",szRemainder);
szRemainder[uiCharLoc] = invChar;
}
szRemainder += uiCharLoc;
switch(invChar)
{
case '&':
FilePrintf(hFile,"&amp;");
szRemainder++;
break;
case '<':
FilePrintf(hFile,"&lt;");
szRemainder++;
break;
case '>':
FilePrintf(hFile,"&gt;");
szRemainder++;
break;
case '\'':
FilePrintf(hFile,"&apos;");
szRemainder++;
break;
case '\"':
FilePrintf(hFile,"&quot;");
szRemainder++;
break;
}
}
// FilePrintf(hFile,"\t\t<SOUND>%s</SOUND>\r\n", szSoundEffects[cnt]);
FilePrintf(hFile,"</SOUND>\r\n");
}
FilePrintf(hFile,"</SOUNDLIST>\r\n");
}
FileClose( hFile );
return( TRUE );
}
+7
View File
@@ -1158,6 +1158,13 @@ INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir,
sDistVisible = __min( sDistVisible, 2 ); sDistVisible = __min( sDistVisible, 2 );
} }
} }
if ( gpWorldLevelData[ pSoldier->sGridNo ].ubExtFlags[ bLevel ] & MAPELEMENT_EXT_BURNABLEGAS )
{
{
// in FLAMETHERgas ; reduce max distance visible to 2 tiles at most
sDistVisible = __min( sDistVisible, 2 );
}
}
return(sDistVisible); return(sDistVisible);
} }
+17
View File
@@ -1702,6 +1702,10 @@ BOOLEAN InWaterGasOrSmoke( SOLDIERTYPE *pSoldier, INT16 sGridNo )
{ {
return( TRUE ); return( TRUE );
} }
if ( gpWorldLevelData[sGridNo].ubExtFlags[ pSoldier->bLevel ] & MAPELEMENT_EXT_BURNABLEGAS )
{
return( TRUE );
}
return(FALSE); return(FALSE);
} }
@@ -1722,6 +1726,10 @@ BOOLEAN InGasOrSmoke( SOLDIERTYPE *pSoldier, INT16 sGridNo )
{ {
return( TRUE ); return( TRUE );
} }
if ( gpWorldLevelData[sGridNo].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_BURNABLEGAS )
{
return( TRUE );
}
return(FALSE); return(FALSE);
} }
@@ -1740,6 +1748,10 @@ INT16 InWaterOrGas(SOLDIERTYPE *pSoldier, INT16 sGridNo)
{ {
return( TRUE ); return( TRUE );
} }
if ( gpWorldLevelData[sGridNo].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_BURNABLEGAS )
{
return( TRUE );
}
return(FALSE); return(FALSE);
} }
@@ -1752,6 +1764,10 @@ BOOLEAN InGas( SOLDIERTYPE *pSoldier, INT16 sGridNo )
{ {
return( TRUE ); return( TRUE );
} }
if ( gpWorldLevelData[sGridNo].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_BURNABLEGAS )
{
return( TRUE );
}
return(FALSE); return(FALSE);
} }
@@ -2350,6 +2366,7 @@ UINT8 SoldierDifficultyLevel( SOLDIERTYPE * pSoldier )
INT8 bDifficultyBase; INT8 bDifficultyBase;
INT8 bDifficulty; INT8 bDifficulty;
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("SoldierDifficultyLevel"));
// difficulty modifier ranges from 0 to 100 // difficulty modifier ranges from 0 to 100
// and we want to end up with a number between 0 and 4 (4=hardest) // and we want to end up with a number between 0 and 4 (4=hardest)
// to a base of 1, divide by 34 to get a range from 1 to 3 // to a base of 1, divide by 34 to get a range from 1 to 3
+50 -28
View File
@@ -164,8 +164,12 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN shootUns
#endif #endif
// calculate minimum action points required to shoot at this opponent // calculate minimum action points required to shoot at this opponent
ubMinAPcost = MinAPsToAttack(pSoldier,pOpponent->sGridNo,ADDTURNCOST); if ( !Weapon[pSoldier->usAttackingWeapon].NoSemiAuto )
//NumMessage("MinAPcost to shoot this opponent = ",ubMinAPcost); ubMinAPcost = MinAPsToAttack(pSoldier,pOpponent->sGridNo,ADDTURNCOST);
else
ubMinAPcost = CalcAPsToAutofire( CalcActionPoints( pSoldier ), &(pSoldier->inv[HANDPOS]), 3 );
//NumMessage("MinAPcost to shoot this opponent = ",ubMinAPcost);
// if we don't have enough APs left to shoot even a snap-shot at this guy // if we don't have enough APs left to shoot even a snap-shot at this guy
if (ubMinAPcost > pSoldier->bActionPoints) if (ubMinAPcost > pSoldier->bActionPoints)
@@ -252,31 +256,43 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN shootUns
} }
// consider the various aiming times // consider the various aiming times
for (ubAimTime = AP_MIN_AIM_ATTACK; ubAimTime <= ubMaxPossibleAimTime; ubAimTime++) if ( !Weapon[pSoldier->usAttackingWeapon].NoSemiAuto )
{ {
//HandleMyMouseCursor(KEYBOARDALSO); for (ubAimTime = AP_MIN_AIM_ATTACK; ubAimTime <= ubMaxPossibleAimTime; ubAimTime++)
{
//HandleMyMouseCursor(KEYBOARDALSO);
//NumMessage("ubAimTime = ",ubAimTime); //NumMessage("ubAimTime = ",ubAimTime);
ubChanceToHit = (UINT8) AICalcChanceToHitGun(pSoldier,pOpponent->sGridNo,ubAimTime, AIM_SHOT_TORSO); ubChanceToHit = (UINT8) AICalcChanceToHitGun(pSoldier,pOpponent->sGridNo,ubAimTime, AIM_SHOT_TORSO);
// ExtMen[pOpponent->ubID].haveStats = TRUE; // ExtMen[pOpponent->ubID].haveStats = TRUE;
//NumMessage("chance to Hit = ",ubChanceToHit); //NumMessage("chance to Hit = ",ubChanceToHit);
//sprintf((CHAR *)tempstr,"Vs. %s, at AimTime %d, ubChanceToHit = %d",ExtMen[pOpponent->ubID].name,ubAimTime,ubChanceToHit); //sprintf((CHAR *)tempstr,"Vs. %s, at AimTime %d, ubChanceToHit = %d",ExtMen[pOpponent->ubID].name,ubAimTime,ubChanceToHit);
//PopMessage(tempstr); //PopMessage(tempstr);
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime); iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
//NumMessage("hitRate = ",iHitRate); //NumMessage("hitRate = ",iHitRate);
// if aiming for this amount of time produces a better hit rate // if aiming for this amount of time produces a better hit rate
if (iHitRate > iBestHitRate) if (iHitRate > iBestHitRate)
{ {
iBestHitRate = iHitRate; iBestHitRate = iHitRate;
ubBestAimTime = ubAimTime; ubBestAimTime = ubAimTime;
ubBestChanceToHit = ubChanceToHit; ubBestChanceToHit = ubChanceToHit;
} }
} }
}
else
{
ubAimTime = AP_MIN_AIM_ATTACK;
ubChanceToHit = (UINT8) AICalcChanceToHitGun(pSoldier,pOpponent->sGridNo,ubAimTime, AIM_SHOT_TORSO);
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
iBestHitRate = iHitRate;
ubBestAimTime = ubAimTime;
ubBestChanceToHit = ubChanceToHit;
}
// if we can't get any kind of hit rate at all // if we can't get any kind of hit rate at all
if (iBestHitRate == 0) if (iBestHitRate == 0)
@@ -290,7 +306,7 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN shootUns
continue; // next opponent continue; // next opponent
// really limit knife throwing so it doesn't look wrong // really limit knife throwing so it doesn't look wrong
if ( Item[ pSoldier->usAttackingWeapon ].usItemClass == IC_THROWING_KNIFE && (ubChanceToReallyHit < 30 || ( PythSpacesAway( pSoldier->sGridNo, pOpponent->sGridNo ) > CalcMaxTossRange( pSoldier, THROWING_KNIFE, FALSE ) )))// Madd / 2 ) ) ) if ( Item[ pSoldier->usAttackingWeapon ].usItemClass == IC_THROWING_KNIFE && (ubChanceToReallyHit < 30 || ( PythSpacesAway( pSoldier->sGridNo, pOpponent->sGridNo ) > CalcMaxTossRange( pSoldier, pSoldier->usAttackingWeapon, FALSE ) )))// Madd / 2 ) ) )
continue; // don't bother... next opponent continue; // don't bother... next opponent
// calculate this opponent's threat value (factor in my cover from him) // calculate this opponent's threat value (factor in my cover from him)
@@ -805,9 +821,12 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
// if considering a gas/smoke grenade, check to see if there is such stuff already there! // if considering a gas/smoke grenade, check to see if there is such stuff already there!
if ( usGrenade ) if ( usGrenade )
{ {
// if ( gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & MAPELEMENT_EXT_SMOKE ||
// gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & (MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS) ||
// gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & MAPELEMENT_EXT_MUSTARDGAS)
if ( gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & MAPELEMENT_EXT_SMOKE || if ( gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & MAPELEMENT_EXT_SMOKE ||
gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & (MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS) || gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & (MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS | MAPELEMENT_EXT_BURNABLEGAS) ||
gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & MAPELEMENT_EXT_MUSTARDGAS) gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & MAPELEMENT_EXT_MUSTARDGAS || gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & MAPELEMENT_EXT_BURNABLEGAS)
{ {
continue; continue;
} }
@@ -1718,6 +1737,12 @@ INT32 EstimateThrowDamage( SOLDIERTYPE *pSoldier, UINT8 ubItemPos, SOLDIERTYPE *
} }
} }
if ( Explosive[ ubExplosiveIndex ].ubType == EXPLOSV_BURNABLEGAS )
{
// if target gridno is outdoors (where tear gas lasts only 1-2 turns)
if (gpWorldLevelData[sGridno].ubTerrainID != FLAT_FLOOR)
iBreathDamage /= 2; // reduce effective breath damage by 1/2
}
else if (iExplosDamage) else if (iExplosDamage)
{ {
// EXPLOSION DAMAGE is spread amongst locations // EXPLOSION DAMAGE is spread amongst locations
@@ -2337,9 +2362,6 @@ void CheckIfShotPossible(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN s
//if ( Weapon [pObj->usItem ].ubWeaponType != GUN_SN_RIFLE ) //if ( Weapon [pObj->usItem ].ubWeaponType != GUN_SN_RIFLE )
// return; // return;
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CheckIfShotPossible: checking for scope");
//check for sniper scope
// if it's in his holster, swap it into his hand temporarily // if it's in his holster, swap it into his hand temporarily
if (pBestShot->bWeaponIn != HANDPOS) if (pBestShot->bWeaponIn != HANDPOS)
{ {
@@ -2347,7 +2369,7 @@ void CheckIfShotPossible(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN s
RearrangePocket(pSoldier, HANDPOS, pBestShot->bWeaponIn, TEMPORARILY); RearrangePocket(pSoldier, HANDPOS, pBestShot->bWeaponIn, TEMPORARILY);
} }
if ( (!suppressionFire && IsScoped(pObj) && GunRange(pObj) > 30 ) || (suppressionFire && IsGunAutofireCapable(pSoldier,pBestShot->bWeaponIn ) && GetMagSize(pObj) > 30 && pObj->ubGunShotsLeft > 20 )) if ( (!suppressionFire && IsScoped(pObj) && !Weapon[pObj->usItem].NoSemiAuto && GunRange(pObj) > 30 ) || (suppressionFire && IsGunAutofireCapable(pSoldier,pBestShot->bWeaponIn ) && GetMagSize(pObj) > 30 && pObj->ubGunShotsLeft > 20 ))
{ {
// get the minimum cost to attack with this item // get the minimum cost to attack with this item
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CheckIfShotPossible: getting min aps"); DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CheckIfShotPossible: getting min aps");
+39 -14
View File
@@ -20,7 +20,7 @@
#include "pathai.h" #include "pathai.h"
#include "Render Fun.h" #include "Render Fun.h"
#include "Boxing.h" #include "Boxing.h"
#include "Air Raid.h" // #include "Air Raid.h"
#endif #endif
extern BOOLEAN InternalIsValidStance( SOLDIERTYPE *pSoldier, INT8 bDirection, INT8 bNewStance ); extern BOOLEAN InternalIsValidStance( SOLDIERTYPE *pSoldier, INT8 bDirection, INT8 bNewStance );
@@ -934,6 +934,11 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier)
case ATTACKSLAYONLY: break; case ATTACKSLAYONLY: break;
} }
//hide those suicidal militia on the roofs for better defensive positions
if ( pSoldier->bTeam == MILITIA_TEAM )
iChance += 20;
// reduce chance for any injury, less likely to hop up if hurt // reduce chance for any injury, less likely to hop up if hurt
iChance -= (pSoldier->bLifeMax - pSoldier->bLife); iChance -= (pSoldier->bLifeMax - pSoldier->bLife);
@@ -1500,6 +1505,9 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier)
// reduce chance if breath is down, less likely to wander around when tired // reduce chance if breath is down, less likely to wander around when tired
iChance -= (100 - pSoldier->bBreath); iChance -= (100 - pSoldier->bBreath);
//Madd: make militia less likely to go running headlong into trouble
if ( pSoldier->bTeam == MILITIA_TEAM )
iChance -= 30;
if ((INT16) PreRandom(100) < iChance ) if ((INT16) PreRandom(100) < iChance )
{ {
@@ -1738,7 +1746,11 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier)
} }
// reduce chance if breath is down, less likely to wander around when tired //Madd: make militia more likely to take cover
if ( pSoldier->bTeam == MILITIA_TEAM )
iChance += 20;
// reduce chance if breath is down, less likely to wander around when tired
iChance -= (100 - pSoldier->bBreath); iChance -= (100 - pSoldier->bBreath);
if ((INT16)PreRandom(100) < iChance) if ((INT16)PreRandom(100) < iChance)
@@ -2209,7 +2221,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK)
} }
while( pSoldier->bActionPoints - (BestShot.ubAPCost - BestShot.ubAimTime) > ubBurstAPs && while( pSoldier->bActionPoints - (BestShot.ubAPCost - BestShot.ubAimTime) > ubBurstAPs &&
pSoldier->inv[ pSoldier->ubAttackingHand ].ubGunShotsLeft >= pSoldier->bDoAutofire && pSoldier->inv[ pSoldier->ubAttackingHand ].ubGunShotsLeft >= pSoldier->bDoAutofire &&
GetBurstPenalty(&pSoldier->inv[ pSoldier->ubAttackingHand ], gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE)*pSoldier->bDoAutofire <= 80 ); GetAutoPenalty(&pSoldier->inv[ pSoldier->ubAttackingHand ], gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE)*pSoldier->bDoAutofire <= 80 );
pSoldier->bDoAutofire--; pSoldier->bDoAutofire--;
@@ -2236,7 +2248,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK)
} }
// suppression not possible, do something else // suppression not possible, do something else
} }
/*
// CALL IN AIR STRIKE & RADIO RED ALERT // CALL IN AIR STRIKE & RADIO RED ALERT
if ( !fCivilian && pSoldier->bTeam != MILITIA_TEAM && gGameOptions.fAirStrikes && airstrikeavailable && (pSoldier->bActionPoints >= AP_RADIO) && !WillAirRaidBeStopped(pSoldier->sSectorX,pSoldier->sSectorY)) if ( !fCivilian && pSoldier->bTeam != MILITIA_TEAM && gGameOptions.fAirStrikes && airstrikeavailable && (pSoldier->bActionPoints >= AP_RADIO) && !WillAirRaidBeStopped(pSoldier->sSectorX,pSoldier->sSectorY))
{ {
@@ -2293,7 +2305,7 @@ if ( !fCivilian && pSoldier->bTeam != MILITIA_TEAM && gGameOptions.fAirStrikes &
} }
} }
} }
*/
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"decideactionred: crouch and rest if running out of breath"); DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"decideactionred: crouch and rest if running out of breath");
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
@@ -2589,6 +2601,12 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"decideactionred: radio red alert?");
case AGGRESSIVE: bSeekPts += +1; bHelpPts += 0; bHidePts += -1; bWatchPts += 0; break; case AGGRESSIVE: bSeekPts += +1; bHelpPts += 0; bHidePts += -1; bWatchPts += 0; break;
case ATTACKSLAYONLY:bSeekPts += +1; bHelpPts += 0; bHidePts += -1; bWatchPts += 0; break; case ATTACKSLAYONLY:bSeekPts += +1; bHelpPts += 0; bHidePts += -1; bWatchPts += 0; break;
} }
//Madd: make militia less likely to go running headlong into trouble
if ( pSoldier->bTeam == MILITIA_TEAM )
{
bSeekPts += -1; bHelpPts += 0; bHidePts += +1; bWatchPts += +1;
}
} }
if (!gfTurnBasedAI) if (!gfTurnBasedAI)
@@ -3290,7 +3308,9 @@ INT8 DecideActionBlack(SOLDIERTYPE *pSoldier)
BOOLEAN fAllowCoverCheck = FALSE; BOOLEAN fAllowCoverCheck = FALSE;
// once we hit status black, reset flanking status DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"DecideActionBlack");
// once we hit status black, reset flanking status
//pSoldier->numFlanks = 0; //pSoldier->numFlanks = 0;
@@ -4144,7 +4164,7 @@ bCanAttack = FALSE;
} }
else else
{ {
iChance = (25 / (BestAttack.ubAimTime + 1)); iChance = (25 / max((BestAttack.ubAimTime + 1),1));
switch (pSoldier->bAttitude) switch (pSoldier->bAttitude)
{ {
case DEFENSIVE: iChance += -5; break; case DEFENSIVE: iChance += -5; break;
@@ -4162,6 +4182,7 @@ bCanAttack = FALSE;
// increase chance based on proximity and difficulty of enemy // increase chance based on proximity and difficulty of enemy
if ( PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) < 15 ) if ( PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) < 15 )
{ {
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("DecideActionBlack: check chance to burst"));
iChance += ( 15 - PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) ) * ( 1 + SoldierDifficultyLevel( pSoldier ) ); iChance += ( 15 - PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) ) * ( 1 + SoldierDifficultyLevel( pSoldier ) );
if ( pSoldier->bAttitude == ATTACKSLAYONLY ) if ( pSoldier->bAttitude == ATTACKSLAYONLY )
{ {
@@ -4190,8 +4211,8 @@ bCanAttack = FALSE;
if (IsGunAutofireCapable( pSoldier, BestAttack.bWeaponIn /*, FALSE*/ ) && if (IsGunAutofireCapable( pSoldier, BestAttack.bWeaponIn /*, FALSE*/ ) &&
!(Menptr[BestShot.ubOpponent].bLife < OKLIFE) && // don't burst at downed targets !(Menptr[BestShot.ubOpponent].bLife < OKLIFE) && // don't burst at downed targets
pSoldier->inv[BestAttack.bWeaponIn].ubGunShotsLeft > 1 && (( pSoldier->inv[BestAttack.bWeaponIn].ubGunShotsLeft > 1 &&
BestAttack.ubAimTime != BURSTING) BestAttack.ubAimTime != BURSTING ) || Weapon[pSoldier->inv[BestAttack.bWeaponIn].usItem].NoSemiAuto) )
{ {
pSoldier->bDoAutofire = 0; pSoldier->bDoAutofire = 0;
do do
@@ -4201,7 +4222,7 @@ bCanAttack = FALSE;
} }
while( pSoldier->bActionPoints - (BestAttack.ubAPCost - BestAttack.ubAimTime) > ubBurstAPs && while( pSoldier->bActionPoints - (BestAttack.ubAPCost - BestAttack.ubAimTime) > ubBurstAPs &&
pSoldier->inv[ pSoldier->ubAttackingHand ].ubGunShotsLeft >= pSoldier->bDoAutofire && pSoldier->inv[ pSoldier->ubAttackingHand ].ubGunShotsLeft >= pSoldier->bDoAutofire &&
GetBurstPenalty(&pSoldier->inv[ BestAttack.bWeaponIn ], gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE)*pSoldier->bDoAutofire <= 80); GetAutoPenalty(&pSoldier->inv[ BestAttack.bWeaponIn ], gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE)*pSoldier->bDoAutofire <= 80);
@@ -4217,7 +4238,7 @@ bCanAttack = FALSE;
} }
else else
{ {
iChance = (100 / (BestAttack.ubAimTime + 1)); iChance = (100 / max((BestAttack.ubAimTime + 1),1));
switch (pSoldier->bAttitude) switch (pSoldier->bAttitude)
{ {
case DEFENSIVE: iChance += -5; break; case DEFENSIVE: iChance += -5; break;
@@ -4236,6 +4257,7 @@ bCanAttack = FALSE;
// increase chance based on proximity and difficulty of enemy // increase chance based on proximity and difficulty of enemy
if ( PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) < 15 ) if ( PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) < 15 )
{ {
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("DecideActionBlack: check chance to autofire"));
iChance += ( 15 - PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) ) * ( 1 + SoldierDifficultyLevel( pSoldier ) ); iChance += ( 15 - PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) ) * ( 1 + SoldierDifficultyLevel( pSoldier ) );
if ( pSoldier->bAttitude == ATTACKSLAYONLY ) if ( pSoldier->bAttitude == ATTACKSLAYONLY )
{ {
@@ -4245,7 +4267,7 @@ bCanAttack = FALSE;
} }
} }
if ((INT32) PreRandom( 100 ) < iChance) if ((INT32) PreRandom( 100 ) < iChance || Weapon[pSoldier->inv[BestAttack.bWeaponIn].usItem].NoSemiAuto)
{ {
BestAttack.ubAimTime = AUTOFIRING + pSoldier->bDoAutofire; BestAttack.ubAimTime = AUTOFIRING + pSoldier->bDoAutofire;
BestAttack.ubAPCost = BestAttack.ubAPCost - BestAttack.ubAimTime + CalcAPsToAutofire( CalcActionPoints( pSoldier ), &(pSoldier->inv[BestAttack.bWeaponIn]), pSoldier->bDoAutofire ); BestAttack.ubAPCost = BestAttack.ubAPCost - BestAttack.ubAimTime + CalcAPsToAutofire( CalcActionPoints( pSoldier ), &(pSoldier->inv[BestAttack.bWeaponIn]), pSoldier->bDoAutofire );
@@ -4371,6 +4393,7 @@ bCanAttack = FALSE;
case ATTACKSLAYONLY:iChance += 30; break; case ATTACKSLAYONLY:iChance += 30; break;
} }
// increase chance based on proximity and difficulty of enemy // increase chance based on proximity and difficulty of enemy
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("DecideActionBlack: check chance to gl burst"));
iChance += ( 15 - PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) ) * ( 1 + SoldierDifficultyLevel( pSoldier ) ); iChance += ( 15 - PythSpacesAway( pSoldier->sGridNo, BestAttack.sTarget ) ) * ( 1 + SoldierDifficultyLevel( pSoldier ) );
} }
@@ -4619,8 +4642,10 @@ bCanAttack = FALSE;
// if there hasn't been an initial RED ALERT yet in this sector // if there hasn't been an initial RED ALERT yet in this sector
if ( !(gTacticalStatus.Team[pSoldier->bTeam].bAwareOfOpposition) || NeedToRadioAboutPanicTrigger() ) if ( !(gTacticalStatus.Team[pSoldier->bTeam].bAwareOfOpposition) || NeedToRadioAboutPanicTrigger() )
// since I'm at STATUS RED, I obviously know we're being invaded! { // since I'm at STATUS RED, I obviously know we're being invaded!
iChance = gbDiff[DIFF_RADIO_RED_ALERT][ SoldierDifficultyLevel( pSoldier ) ]; DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("DecideActionBlack: check chance to radio contact"));
iChance = gbDiff[DIFF_RADIO_RED_ALERT][ SoldierDifficultyLevel( pSoldier ) ];
}
else // subsequent radioing (only to update enemy positions, request help) else // subsequent radioing (only to update enemy positions, request help)
// base chance depends on how much new info we have to radio to the others // base chance depends on how much new info we have to radio to the others
iChance = 10 * WhatIKnowThatPublicDont(pSoldier,FALSE); // use 10 * for RED alert iChance = 10 * WhatIKnowThatPublicDont(pSoldier,FALSE); // use 10 * for RED alert
+6
View File
@@ -266,6 +266,8 @@ INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT8 ubOppID, INT16 sOppGridNo, INT8
INT32 CalcCoverValue(SOLDIERTYPE *pMe, INT16 sMyGridNo, INT32 iMyThreat, INT32 iMyAPsLeft, INT32 CalcCoverValue(SOLDIERTYPE *pMe, INT16 sMyGridNo, INT32 iMyThreat, INT32 iMyAPsLeft,
UINT32 uiThreatIndex, INT32 iRange, INT32 morale, INT32 *iTotalScale) UINT32 uiThreatIndex, INT32 iRange, INT32 morale, INT32 *iTotalScale)
{ {
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("CalcCoverValue"));
// all 32-bit integers for max. speed // all 32-bit integers for max. speed
INT32 iMyPosValue, iHisPosValue, iCoverValue; INT32 iMyPosValue, iHisPosValue, iCoverValue;
INT32 iReductionFactor, iThisScale; INT32 iReductionFactor, iThisScale;
@@ -523,6 +525,8 @@ UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT16 sGridNo )
INT16 FindBestNearbyCover(SOLDIERTYPE *pSoldier, INT32 morale, INT32 *piPercentBetter) INT16 FindBestNearbyCover(SOLDIERTYPE *pSoldier, INT32 morale, INT32 *piPercentBetter)
{ {
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("FindBestNearbyCover"));
// all 32-bit integers for max. speed // all 32-bit integers for max. speed
UINT32 uiLoop; UINT32 uiLoop;
INT32 iCurrentCoverValue, iCoverValue, iBestCoverValue; INT32 iCurrentCoverValue, iCoverValue, iBestCoverValue;
@@ -1648,6 +1652,8 @@ INT16 FindNearbyDarkerSpot( SOLDIERTYPE *pSoldier )
INT8 SearchForItems( SOLDIERTYPE * pSoldier, INT8 bReason, UINT16 usItem ) INT8 SearchForItems( SOLDIERTYPE * pSoldier, INT8 bReason, UINT16 usItem )
{ {
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("SearchForItems"));
INT32 iSearchRange; INT32 iSearchRange;
INT16 sMaxLeft, sMaxRight, sMaxUp, sMaxDown, sXOffset, sYOffset; INT16 sMaxLeft, sMaxRight, sMaxUp, sMaxDown, sXOffset, sYOffset;
INT16 sGridNo; INT16 sGridNo;
+31 -22
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="TacticalAI" Name="TacticalAI"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA" SccProjectName=""
SccLocalPath="..\..\..\ja2\build"> SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
@@ -21,8 +23,8 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\laptop" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
@@ -37,7 +39,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -75,7 +77,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\laptop,..\Standard Gaming Platform,..\,..\Tactical,..\Utils,..\TileEngine,..\strategic,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -91,7 +93,8 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -128,7 +131,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\Editor,..\strategic,..\Laptop,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
@@ -141,7 +144,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0" CompileAs="2"
DisableSpecificWarnings="4292"/> DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
@@ -179,8 +182,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\laptop" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="AI All.h" PrecompiledHeaderThrough="AI All.h"
@@ -192,7 +195,8 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -230,7 +234,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\Utils,..\TileEngine,..\strategic,..\laptop,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -246,7 +250,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -283,8 +287,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\laptop" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="AI All.h" PrecompiledHeaderThrough="AI All.h"
@@ -296,7 +300,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -333,8 +337,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\laptop" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="AI All.h" PrecompiledHeaderThrough="AI All.h"
@@ -346,7 +350,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -383,8 +387,13 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\Editor,..\strategic,..\Laptop,.\" EnableIntrinsicFunctions="TRUE"
FavorSizeOrSpeed="1"
OptimizeForProcessor="3"
OptimizeForWindowsApplication="TRUE"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE" PreprocessorDefinitions="PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -398,7 +407,7 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
+25 -2
View File
@@ -81,6 +81,7 @@ UINT8 ubTransKeyFrame[ NUM_EXP_TYPES ] =
1, 1,
1, 1,
1, 1,
1,
}; };
UINT8 ubDamageKeyFrame[ NUM_EXP_TYPES ] = UINT8 ubDamageKeyFrame[ NUM_EXP_TYPES ] =
@@ -94,6 +95,7 @@ UINT8 ubDamageKeyFrame[ NUM_EXP_TYPES ] =
18, 18,
18, 18,
18, 18,
18,
}; };
@@ -108,6 +110,7 @@ UINT32 uiExplosionSoundID[ NUM_EXP_TYPES ] =
AIR_ESCAPING_1, AIR_ESCAPING_1,
AIR_ESCAPING_1, AIR_ESCAPING_1,
AIR_ESCAPING_1, AIR_ESCAPING_1,
325,//TODO: Madd: hard coded for now -- we need to externalize explosion sounds, animations, etc. at some point in the near future
}; };
@@ -122,6 +125,7 @@ CHAR8 zBlastFilenames[][70] =
"TILECACHE\\TEAR_EXP.STI", "TILECACHE\\TEAR_EXP.STI",
"TILECACHE\\TEAR_EXP.STI", "TILECACHE\\TEAR_EXP.STI",
"TILECACHE\\MUST_EXP.STI", "TILECACHE\\MUST_EXP.STI",
"TILECACHE\\FLAM_EXP.STI",
}; };
CHAR8 sBlastSpeeds[] = CHAR8 sBlastSpeeds[] =
@@ -135,6 +139,8 @@ CHAR8 sBlastSpeeds[] =
80, 80,
80, 80,
80, 80,
80,
80,
}; };
#define BOMB_QUEUE_DELAY (1000 + Random( 500 ) ) #define BOMB_QUEUE_DELAY (1000 + Random( 500 ) )
@@ -1325,7 +1331,7 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN
return( fRecompileMovementCosts ); return( fRecompileMovementCosts );
} }
if ( pExplosive->ubType == EXPLOSV_CREATUREGAS ) if ( pExplosive->ubType == EXPLOSV_CREATUREGAS || pExplosive->ubType == EXPLOSV_BURNABLEGAS)
{ {
if ( pSoldier->uiStatusFlags & SOLDIER_MONSTER ) if ( pSoldier->uiStatusFlags & SOLDIER_MONSTER )
{ {
@@ -1337,6 +1343,12 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN
// already affected by creature gas this turn // already affected by creature gas this turn
return( fRecompileMovementCosts ); return( fRecompileMovementCosts );
} }
if ( sSubsequent && pSoldier->fHitByGasFlags & HIT_BY_BURNABLEGAS )
{
// already affected by BURNABLEGAS this turn
return( fRecompileMovementCosts );
}
} }
else // no gas mask help from creature attacks else // no gas mask help from creature attacks
// ATE/CJC: gas stuff // ATE/CJC: gas stuff
@@ -1446,6 +1458,9 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN
case EXPLOSV_MUSTGAS: case EXPLOSV_MUSTGAS:
pSoldier->fHitByGasFlags |= HIT_BY_MUSTARDGAS; pSoldier->fHitByGasFlags |= HIT_BY_MUSTARDGAS;
break; break;
case EXPLOSV_BURNABLEGAS:
pSoldier->fHitByGasFlags |= HIT_BY_BURNABLEGAS;
break;
default: default:
break; break;
} }
@@ -1502,6 +1517,13 @@ BOOLEAN ExpAffect( INT16 sBombGridNo, INT16 sGridNo, UINT32 uiDist, UINT16 usIte
fBlastEffect = FALSE; fBlastEffect = FALSE;
break; break;
case EXPLOSV_BURNABLEGAS:
fSmokeEffect = TRUE;
bSmokeEffectType = BURNABLEGAS_SMOKE_EFFECT;
fBlastEffect = FALSE;
break;
case EXPLOSV_TEARGAS: case EXPLOSV_TEARGAS:
fSmokeEffect = TRUE; fSmokeEffect = TRUE;
@@ -2118,6 +2140,7 @@ void SpreadEffect( INT16 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner,
{ {
case EXPLOSV_MUSTGAS: case EXPLOSV_MUSTGAS:
case EXPLOSV_BURNABLEGAS:
case EXPLOSV_TEARGAS: case EXPLOSV_TEARGAS:
case EXPLOSV_SMOKE: case EXPLOSV_SMOKE:
case EXPLOSV_CREATUREGAS: case EXPLOSV_CREATUREGAS:
@@ -3529,4 +3552,4 @@ void RemoveAllActiveTimedBombs( void )
} }
} while( iItemIndex != -1 ); } while( iItemIndex != -1 );
} }
+1 -1
View File
@@ -55,7 +55,7 @@ enum EXPLOSION_TYPES
TARGAS_EXP, TARGAS_EXP,
SMOKE_EXP, SMOKE_EXP,
MUSTARD_EXP, MUSTARD_EXP,
BURN_EXP,
NUM_EXP_TYPES NUM_EXP_TYPES
} ; } ;
+1 -1
View File
@@ -215,4 +215,4 @@ BOOLEAN SaveShadeTable( HVOBJECT pObj, UINT32 uiTileTypeIndex )
BOOLEAN DeleteShadeTableDir( ) BOOLEAN DeleteShadeTableDir( )
{ {
return( RemoveFileManDirectory( SHADE_TABLE_DIR, TRUE ) ); return( RemoveFileManDirectory( SHADE_TABLE_DIR, TRUE ) );
} }
+35
View File
@@ -109,6 +109,10 @@ INT8 FromWorldFlagsToSmokeType( UINT8 ubWorldFlags )
{ {
return( MUSTARDGAS_SMOKE_EFFECT ); return( MUSTARDGAS_SMOKE_EFFECT );
} }
else if ( ubWorldFlags & MAPELEMENT_EXT_BURNABLEGAS )
{
return( BURNABLEGAS_SMOKE_EFFECT );
}
else if ( ubWorldFlags & MAPELEMENT_EXT_CREATUREGAS ) else if ( ubWorldFlags & MAPELEMENT_EXT_CREATUREGAS )
{ {
return( CREATURE_SMOKE_EFFECT ); return( CREATURE_SMOKE_EFFECT );
@@ -139,6 +143,11 @@ UINT8 FromSmokeTypeToWorldFlags( INT8 bType )
return( MAPELEMENT_EXT_MUSTARDGAS ); return( MAPELEMENT_EXT_MUSTARDGAS );
break; break;
case BURNABLEGAS_SMOKE_EFFECT:
return( MAPELEMENT_EXT_BURNABLEGAS );
break;
case CREATURE_SMOKE_EFFECT: case CREATURE_SMOKE_EFFECT:
return( MAPELEMENT_EXT_CREATUREGAS ); return( MAPELEMENT_EXT_CREATUREGAS );
@@ -188,6 +197,13 @@ INT32 NewSmokeEffect( INT16 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner )
ubStartRadius = Explosive[ Item[ usItem ].ubClassIndex ].ubStartRadius; ubStartRadius = Explosive[ Item[ usItem ].ubClassIndex ].ubStartRadius;
break; break;
case EXPLOSV_BURNABLEGAS:
bSmokeEffectType = BURNABLEGAS_SMOKE_EFFECT;
ubDuration = Explosive[ Item[ usItem ].ubClassIndex ].ubDuration;
ubStartRadius = Explosive[ Item[ usItem ].ubClassIndex ].ubStartRadius;
break;
case EXPLOSV_TEARGAS: case EXPLOSV_TEARGAS:
bSmokeEffectType = TEARGAS_SMOKE_EFFECT; bSmokeEffectType = TEARGAS_SMOKE_EFFECT;
ubDuration = Explosive[ Item[ usItem ].ubClassIndex ].ubDuration; ubDuration = Explosive[ Item[ usItem ].ubClassIndex ].ubDuration;
@@ -377,6 +393,25 @@ void AddSmokeEffectToTile( INT32 iSmokeEffectID, INT8 bType, INT16 sGridNo, INT8
} }
break; break;
case BURNABLEGAS_SMOKE_EFFECT:
if ( !( gGameSettings.fOptions[ TOPTION_ANIMATE_SMOKE ] ) )
{
strcpy( AniParams.zCachedFile, "TILECACHE\\FLAMCHZE.STI" );
}
else
{
if ( fDissipating )
{
strcpy( AniParams.zCachedFile, "TILECACHE\\smalflam.STI" );
}
else
{
strcpy( AniParams.zCachedFile, "TILECACHE\\FLAMETH2.STI" );
}
}
break;
case CREATURE_SMOKE_EFFECT: case CREATURE_SMOKE_EFFECT:
if ( !( gGameSettings.fOptions[ TOPTION_ANIMATE_SMOKE ] ) ) if ( !( gGameSettings.fOptions[ TOPTION_ANIMATE_SMOKE ] ) )
+2 -1
View File
@@ -9,7 +9,8 @@ enum
NORMAL_SMOKE_EFFECT, NORMAL_SMOKE_EFFECT,
TEARGAS_SMOKE_EFFECT, TEARGAS_SMOKE_EFFECT,
MUSTARDGAS_SMOKE_EFFECT, MUSTARDGAS_SMOKE_EFFECT,
CREATURE_SMOKE_EFFECT, CREATURE_SMOKE_EFFECT,
BURNABLEGAS_SMOKE_EFFECT,
}; };
#define SMOKE_EFFECT_INDOORS 0x01 #define SMOKE_EFFECT_INDOORS 0x01
+4 -2
View File
@@ -540,8 +540,10 @@ void UpdateAniTiles( )
ubExpType = Explosive[ Item[ (UINT16)pNode->uiUserData ].ubClassIndex ].ubType; ubExpType = Explosive[ Item[ (UINT16)pNode->uiUserData ].ubClassIndex ].ubType;
if ( ubExpType == EXPLOSV_TEARGAS || ubExpType == EXPLOSV_MUSTGAS || // if ( ubExpType == EXPLOSV_TEARGAS || ubExpType == EXPLOSV_MUSTGAS ||
ubExpType == EXPLOSV_SMOKE ) // ubExpType == EXPLOSV_SMOKE )
if ( ubExpType == EXPLOSV_TEARGAS || ubExpType == EXPLOSV_MUSTGAS ||
ubExpType == EXPLOSV_SMOKE || ubExpType == EXPLOSV_BURNABLEGAS )
{ {
// Do sound.... // Do sound....
// PlayJA2Sample( AIR_ESCAPING_1, RATE_11025, SoundVolume( HIGHVOLUME, pNode->sGridNo ), 1, SoundDir( pNode->sGridNo ) ); // PlayJA2Sample( AIR_ESCAPING_1, RATE_11025, SoundVolume( HIGHVOLUME, pNode->sGridNo ), 1, SoundDir( pNode->sGridNo ) );
+2 -2
View File
@@ -556,10 +556,10 @@ UINT16 gNumTilesPerType[ NUMBEROFTILETYPES ] =
GUN5000 - GUN1 + 1, GUN5000 - GUN1 + 1,
P1ITEM5000 - P1ITEM1 + 1, P1ITEM5000 - P1ITEM1 + 1,
P2ITEM45 - P2ITEM1 + 1, P2ITEM5000 - P2ITEM1 + 1,
WINDOWSHATTER20 - WINDOWSHATTER1 + 1, WINDOWSHATTER20 - WINDOWSHATTER1 + 1,
P3ITEM16 - P3ITEM1 + 1, P3ITEM5000 - P3ITEM1 + 1,
BODYEXPLOSION15 - BODYEXPLOSION1 + 1, BODYEXPLOSION15 - BODYEXPLOSION1 + 1,
EXITTEXTURE35 - EXITTEXTURE1 + 1, EXITTEXTURE35 - EXITTEXTURE1 + 1,
+11
View File
@@ -2615,6 +2615,12 @@ enum TileDefines
P2ITEM43, P2ITEM43,
P2ITEM44, P2ITEM44,
P2ITEM45, P2ITEM45,
P2ITEM46,
P2ITEM47,
P2ITEM48,
P2ITEM49,
P2ITEM50,
P2ITEM5000 = P2ITEM50 + 4950,
WINDOWSHATTER1, WINDOWSHATTER1,
WINDOWSHATTER2, WINDOWSHATTER2,
@@ -2653,6 +2659,11 @@ enum TileDefines
P3ITEM14, P3ITEM14,
P3ITEM15, P3ITEM15,
P3ITEM16, P3ITEM16,
P3ITEM17,
P3ITEM18,
P3ITEM19,
P3ITEM20,
P3ITEM5000 = P3ITEM20 + 4980,
BODYEXPLOSION1, BODYEXPLOSION1,
BODYEXPLOSION2, BODYEXPLOSION2,
+39 -95
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="TileEngine" Name="TileEngine"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA" SccProjectName=""
SccLocalPath="..\..\..\ja2\build"> SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
@@ -20,8 +22,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Editor,\ja2\build\strategic,\ja2\build\Laptop" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="TileEngine All.h" PrecompiledHeaderThrough="TileEngine All.h"
@@ -33,7 +35,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -70,8 +72,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Editor,\ja2\build\strategic,\ja2\build\Laptop" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="TileEngine All.h" PrecompiledHeaderThrough="TileEngine All.h"
@@ -83,7 +85,8 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -121,8 +124,13 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions="/O2b2 " AdditionalOptions="/O2b2 "
Optimization="2" Optimization="2"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\strategic,..\Laptop,.\" EnableIntrinsicFunctions="TRUE"
FavorSizeOrSpeed="1"
OptimizeForProcessor="3"
OptimizeForWindowsApplication="TRUE"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE" PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -136,7 +144,7 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -175,7 +183,7 @@
AdditionalOptions="/O2b2 " AdditionalOptions="/O2b2 "
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\strategic,..\Laptop,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -190,12 +198,14 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile=".\Release with Debug\TileEngine.lib" OutputFile=".\Release with Debug\TileEngine.lib"
AdditionalLibraryDirectories=""
SuppressStartupBanner="TRUE"/> SuppressStartupBanner="TRUE"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
@@ -227,8 +237,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\build\TacticalAI,\ja2\build\Editor,\ja2\build\strategic,\ja2\build\Laptop" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="TileEngine All.h" PrecompiledHeaderThrough="TileEngine All.h"
@@ -240,7 +250,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -277,7 +287,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\strategic,..\Laptop,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
@@ -290,7 +300,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0" CompileAs="2"
DisableSpecificWarnings="4292"/> DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
@@ -330,7 +340,7 @@
AdditionalOptions="/O2b2 " AdditionalOptions="/O2b2 "
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\strategic,..\Laptop,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -345,7 +355,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -384,8 +394,8 @@
AdditionalOptions="/O2b2 " AdditionalOptions="/O2b2 "
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\build\tacticalai,\ja2\build\Editor,\ja2\build\strategic,\ja2\build\Laptop" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
@@ -399,7 +409,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -1409,79 +1419,7 @@
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="physics.cpp"> RelativePath=".\physics.cpp">
<FileConfiguration
Name="Demo Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Demo Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
</File> </File>
<File <File
RelativePath="pits.cpp"> RelativePath="pits.cpp">
@@ -3080,6 +3018,9 @@
<File <File
RelativePath="Exit Grids.h"> RelativePath="Exit Grids.h">
</File> </File>
<File
RelativePath=".\Explosion Control.h">
</File>
<File <File
RelativePath="Fog Of War.h"> RelativePath="Fog Of War.h">
</File> </File>
@@ -3095,6 +3036,9 @@
<File <File
RelativePath="Map Edgepoints.h"> RelativePath="Map Edgepoints.h">
</File> </File>
<File
RelativePath=".\physics.h">
</File>
<File <File
RelativePath="pits.h"> RelativePath="pits.h">
</File> </File>
+1 -1
View File
@@ -740,7 +740,7 @@ INT32 iDx, iDy;
Returns the light level at a particular level without fake lights Returns the light level at a particular level without fake lights
***************************************************************************************/ ***************************************************************************************/
UINT8 LightTrueLevel( INT16 sGridNo, INT8 bLevel ) UINT8 LightTrueLevel( INT16 sGridNo, INT16 bLevel )
{ {
LEVELNODE * pNode; LEVELNODE * pNode;
INT32 iSum; INT32 iSum;
+1 -1
View File
@@ -168,7 +168,7 @@ BOOLEAN CreateSoldierShadedPalette( SOLDIERTYPE *pSoldier, UINT32 uiBase, SGPPa
UINT16 CreateSoldierPaletteTables(SOLDIERTYPE *pSoldier, UINT32 uiType); UINT16 CreateSoldierPaletteTables(SOLDIERTYPE *pSoldier, UINT32 uiType);
// returns the true light value at a tile (ignoring fake/merc lights) // returns the true light value at a tile (ignoring fake/merc lights)
UINT8 LightTrueLevel( INT16 sGridNo, INT8 bLevel ); UINT8 LightTrueLevel( INT16 sGridNo, INT16 bLevel );
// system variables // system variables
extern LIGHT_NODE *pLightList[MAX_LIGHT_TEMPLATES]; extern LIGHT_NODE *pLightList[MAX_LIGHT_TEMPLATES];
+2 -3
View File
@@ -1694,11 +1694,10 @@ FLOAT CalculateObjectTrajectory( INT16 sTargetZ, OBJECTTYPE *pItem, vector_3 *vP
// WANNE 2 // WANNE 2
// Alrighty, move this beast until it dies.... // Alrighty, move this beast until it dies....
while( pObject->fAlive) while( pObject->fAlive )
{ {
//cnt = cnt + 1; //cnt = cnt + 1;
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CalculateObjectTrajectory: calling SIMULATEobject - this object never fucking dies!!!!"); DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CalculateObjectTrajectory: calling simulateobject - this object never fucking dies!!!!");
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3, String( "Counter: %d", cnt));
SimulateObject( pObject, (float)DELTA_T ); SimulateObject( pObject, (float)DELTA_T );
} }
+1 -1
View File
@@ -2862,7 +2862,7 @@ UINT32 cnt = 0;
pDestBuf = (UINT16 *)LockVideoSurface(guiRENDERBUFFER, &uiDestPitchBYTES); pDestBuf = (UINT16 *)LockVideoSurface(guiRENDERBUFFER, &uiDestPitchBYTES);
for ( cnt = 0; cnt < ( SCREEN_WIDTH * SCREEN_HEIGHT ); cnt++ ) for ( cnt = 0; cnt < (UINT32)( SCREEN_WIDTH * SCREEN_HEIGHT ); cnt++ )
{ {
// Get Z value // Get Z value
zVal = gpZBuffer[ cnt ]; zVal = gpZBuffer[ cnt ];
+3 -2
View File
@@ -95,12 +95,13 @@
#define MAPELEMENT_EXT_NOBURN_STRUCT 0x20 #define MAPELEMENT_EXT_NOBURN_STRUCT 0x20
#define MAPELEMENT_EXT_ROOFCODE_VISITED 0x40 #define MAPELEMENT_EXT_ROOFCODE_VISITED 0x40
#define MAPELEMENT_EXT_CREATUREGAS 0x80 #define MAPELEMENT_EXT_CREATUREGAS 0x80
#define MAPELEMENT_EXT_BURNABLEGAS 0x81
#define FIRST_LEVEL 0 #define FIRST_LEVEL 0
#define SECOND_LEVEL 1 #define SECOND_LEVEL 1
//#define ANY_SMOKE_EFFECT ( MAPELEMENT_EXT_CREATUREGAS | MAPELEMENT_EXT_SMOKE | MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS )
#define ANY_SMOKE_EFFECT ( MAPELEMENT_EXT_CREATUREGAS | MAPELEMENT_EXT_SMOKE | MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS ) #define ANY_SMOKE_EFFECT ( MAPELEMENT_EXT_CREATUREGAS | MAPELEMENT_EXT_SMOKE | MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS | MAPELEMENT_EXT_BURNABLEGAS )
typedef struct TAG_level_node typedef struct TAG_level_node
+1 -1
View File
@@ -25,7 +25,7 @@
#define GROUP_PLAYER 1000 #define GROUP_PLAYER 1000
#define GROUP_AMBIENT 0 #define GROUP_AMBIENT 0
#define MAX_SAMPLES 5000 #define MAX_SAMPLES 10000
// SOUNDS ENUMERATION // SOUNDS ENUMERATION
+2
View File
@@ -320,6 +320,8 @@ enum
STR_BLOODCATS_TURN, STR_BLOODCATS_TURN,
STR_AUTOFIRE, STR_AUTOFIRE,
STR_NO_AUTOFIRE, STR_NO_AUTOFIRE,
STR_ACCURATE,
STR_INACCURATE
}; };
#define LARGE_STRING_LENGTH 200 #define LARGE_STRING_LENGTH 200
+38 -317
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
Name="Utils" Name="Utils"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA" SccProjectName=""
SccLocalPath="..\..\..\ja2\build"> SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32"/> Name="Win32"/>
@@ -21,7 +23,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\TileEngine,..\strategic,..\editor,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -37,7 +39,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -74,7 +76,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\tacticalai,..\Editor,..\strategic,..\Laptop,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;_DEBUG;WIN32;_WINDOWS;JA2;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
@@ -87,7 +89,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0" CompileAs="2"
DisableSpecificWarnings="4292"/> DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
@@ -125,8 +127,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\ja2\build\communications,\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\editor" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Utils All.h" PrecompiledHeaderThrough="Utils All.h"
@@ -138,7 +140,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -175,8 +177,13 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\tacticalai,..\Editor,..\strategic,..\Laptop,.\" EnableIntrinsicFunctions="TRUE"
FavorSizeOrSpeed="1"
OptimizeForProcessor="3"
OptimizeForWindowsApplication="TRUE"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE" PreprocessorDefinitions="CALLBACKTIMER;PRECOMPILEDHEADERS;NDEBUG;WIN32;_WINDOWS;JA2;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -190,7 +197,7 @@
BrowseInformation="1" BrowseInformation="1"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -228,7 +235,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\TileEngine,..\strategic,..\editor,.\" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE" PreprocessorDefinitions="NDEBUG;RELEASE_WITH_DEBUG_INFO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -244,7 +251,8 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -281,8 +289,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\ja2\build\communications,\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\editor" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Utils All.h" PrecompiledHeaderThrough="Utils All.h"
@@ -294,7 +302,8 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -331,8 +340,8 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="\ja2\build\communications,\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\editor" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Utils All.h" PrecompiledHeaderThrough="Utils All.h"
@@ -344,7 +353,7 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="1" DebugInformationFormat="1"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -382,8 +391,8 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="\ja2\Build\Communications,\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\editor" AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS" PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE" StringPooling="TRUE"
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
@@ -398,7 +407,7 @@
WarningLevel="4" WarningLevel="4"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
DebugInformationFormat="3" DebugInformationFormat="3"
CompileAs="0"/> CompileAs="2"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
@@ -1783,79 +1792,7 @@
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="INIReader.cpp"> RelativePath=".\INIReader.cpp">
<FileConfiguration
Name="Demo Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Demo Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
</File> </File>
<File <File
RelativePath="MapUtility.cpp"> RelativePath="MapUtility.cpp">
@@ -3133,234 +3070,18 @@
</FileConfiguration> </FileConfiguration>
</File> </File>
<File <File
RelativePath="XML_Items.cpp"> RelativePath=".\XML_Strings.cpp">
<FileConfiguration
Name="Demo Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Demo Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
</File> </File>
<File <File
RelativePath="XML_Strings.cpp"> RelativePath=".\XML_Strings2.cpp">
<FileConfiguration
Name="Demo Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Demo Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
</File>
<File
RelativePath="XML_Strings2.cpp">
<FileConfiguration
Name="Demo Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Debug Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release with Debug Info|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Demo Bounds Checker|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release Demo|Win32">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
BrowseInformation="1"/>
</FileConfiguration>
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl;fi;fd"> Filter="h;hpp;hxx;hm;inl;fi;fd">
<File
RelativePath=".\_Ja25EnglishText.h">
</File>
<File <File
RelativePath="_Ja25GermanText.h"> RelativePath="_Ja25GermanText.h">
</File> </File>
@@ -3386,7 +3107,7 @@
RelativePath="Font Control.h"> RelativePath="Font Control.h">
</File> </File>
<File <File
RelativePath="INIReader.h"> RelativePath=".\INIReader.h">
</File> </File>
<File <File
RelativePath="message.h"> RelativePath="message.h">
+11 -4
View File
@@ -185,7 +185,8 @@ itemStartElementHandle(void *userData, const char *name, const char **atts)
strcmp(name, "MagSizeBonus") == 0 || strcmp(name, "MagSizeBonus") == 0 ||
strcmp(name, "PercentAutofireAPReduction") == 0 || strcmp(name, "PercentAutofireAPReduction") == 0 ||
strcmp(name, "PercentBurstFireAPReduction") == 0 || strcmp(name, "PercentBurstFireAPReduction") == 0 ||
strcmp(name, "AutoFireBonus") == 0 || strcmp(name, "AutoFireToHitBonus") == 0 ||
strcmp(name, "APBonus") == 0 ||
strcmp(name, "RateOfFireBonus") == 0 || strcmp(name, "RateOfFireBonus") == 0 ||
strcmp(name, "BurstSizeBonus") == 0 || strcmp(name, "BurstSizeBonus") == 0 ||
strcmp(name, "PercentReadyTimeAPReduction") == 0 || strcmp(name, "PercentReadyTimeAPReduction") == 0 ||
@@ -569,10 +570,15 @@ itemEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT; pData->curElement = ELEMENT;
pData->curItem.percentburstfireapreduction = (INT16) atol(pData->szCharData); pData->curItem.percentburstfireapreduction = (INT16) atol(pData->szCharData);
} }
else if(strcmp(name, "AutoFireBonus") == 0) else if(strcmp(name, "AutoFireToHitBonus") == 0)
{ {
pData->curElement = ELEMENT; pData->curElement = ELEMENT;
pData->curItem.autofirebonus = (INT16) atol(pData->szCharData); pData->curItem.autofiretohitbonus = (INT16) atol(pData->szCharData);
}
else if(strcmp(name, "APBonus") == 0)
{
pData->curElement = ELEMENT;
pData->curItem.APBonus = (INT16) atol(pData->szCharData);
} }
else if(strcmp(name, "RateOfFireBonus") == 0) else if(strcmp(name, "RateOfFireBonus") == 0)
{ {
@@ -1349,7 +1355,8 @@ BOOLEAN WriteItemStats()
FilePrintf(hFile,"\t\t<BurstSizeBonus>%d</BurstSizeBonus>\r\n", Item[cnt].burstsizebonus ); FilePrintf(hFile,"\t\t<BurstSizeBonus>%d</BurstSizeBonus>\r\n", Item[cnt].burstsizebonus );
FilePrintf(hFile,"\t\t<BestLaserRange>%d</BestLaserRange>\r\n", Item[cnt].bestlaserrange ); FilePrintf(hFile,"\t\t<BestLaserRange>%d</BestLaserRange>\r\n", Item[cnt].bestlaserrange );
FilePrintf(hFile,"\t\t<BurstToHitBonus>%d</BurstToHitBonus>\r\n", Item[cnt].bursttohitbonus ); FilePrintf(hFile,"\t\t<BurstToHitBonus>%d</BurstToHitBonus>\r\n", Item[cnt].bursttohitbonus );
FilePrintf(hFile,"\t\t<AutoFireBonus>%d</AutoFireBonus>\r\n", Item[cnt].autofirebonus ); FilePrintf(hFile,"\t\t<AutofireToHitBonus>%d</AutofireToHitBonus>\r\n", Item[cnt].autofiretohitbonus);
FilePrintf(hFile,"\t\t<APBonus>%d</APBonus>\r\n", Item[cnt].APBonus );
FilePrintf(hFile,"\t\t<PercentBurstFireAPReduction>%d</PercentBurstFireAPReduction>\r\n", Item[cnt].percentburstfireapreduction ); FilePrintf(hFile,"\t\t<PercentBurstFireAPReduction>%d</PercentBurstFireAPReduction>\r\n", Item[cnt].percentburstfireapreduction );
FilePrintf(hFile,"\t\t<PercentAutofireAPReduction>%d</PercentAutofireAPReduction>\r\n", Item[cnt].percentautofireapreduction ); FilePrintf(hFile,"\t\t<PercentAutofireAPReduction>%d</PercentAutofireAPReduction>\r\n", Item[cnt].percentautofireapreduction );
+7 -5
View File
@@ -297,6 +297,8 @@ UINT16 Message[][STRING_LENGTH] =
L"Bloodcats' turn", L"Bloodcats' turn",
L"full auto", L"full auto",
L"no full auto", L"no full auto",
L"accurate",
L"inaccurate",
}; };
@@ -3253,8 +3255,8 @@ STR16 zSaveLoadText[] =
L"Saving...", //When saving a game, a message box with this string appears on the screen L"Saving...", //When saving a game, a message box with this string appears on the screen
L"No Air Strikes", L"Tons of Guns",
L"Air Strikes", L"10 Tons of Guns",
L"Realistic style", L"Realistic style",
L"Sci Fi style", L"Sci Fi style",
@@ -3441,9 +3443,9 @@ STR16 gzGIOScreenText[] =
L"Realistic", L"Realistic",
L"Sci Fi", L"Sci Fi",
L"Platinum", L"Platinum",
L"Air Strikes", L"Items",
L"On", L"10 Tons of Guns",
L"Off", L"Tons of Guns",
L"Difficulty Level", L"Difficulty Level",
L"Novice", L"Novice",
L"Experienced", L"Experienced",
+13 -17
View File
@@ -222,7 +222,7 @@ void EnterTacticalScreen( )
guiTacticalLeaveScreen = FALSE; guiTacticalLeaveScreen = FALSE;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: setpositionsndsactive")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: setpositionsndsactive"));
SetPositionSndsActive( ); SetPositionSndsActive( );
// Set pending screen // Set pending screen
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: setpendingnewscreen")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: setpendingnewscreen"));
@@ -243,23 +243,16 @@ void EnterTacticalScreen( )
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: check our guy")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: check our guy"));
if ( !OK_CONTROLLABLE_MERC( MercPtrs[ gusSelectedSoldier ] ) ) if ( !OK_CONTROLLABLE_MERC( MercPtrs[ gusSelectedSoldier ] ) )
{ {
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: guy not controllable, select next")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: SelectNextAvailSoldier, merc not controllable"));
SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] ); SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] );
} }
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: who is selected? %d", gusSelectedSoldier));
// ATE: If the current guy is sleeping, change.... // ATE: If the current guy is sleeping, change....
if ( MercPtrs[ gusSelectedSoldier ] != NULL && MercPtrs[ gusSelectedSoldier ]->fMercAsleep ) if ( gusSelectedSoldier != NOBODY && MercPtrs[ gusSelectedSoldier ]->fMercAsleep )
{ {
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: guy asleep, select next")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: SelectNextAvailSoldier, merc asleep"));
SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] ); SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] );
} }
else if ( MercPtrs[ gusSelectedSoldier ] == NULL && gfInAirRaid ) //Madd - added to prevent air raid crash
{
for ( int i = 0; i < 20; i++ )
{
RemoveCharacterFromSquads(MercPtrs[i]);
AddCharacterToAnySquad(MercPtrs[i]);
}
}
} }
else else
{ {
@@ -281,6 +274,8 @@ void EnterTacticalScreen( )
//UpdateMercsInSector( gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); //UpdateMercsInSector( gWorldSectorX, gWorldSectorY, gbWorldSectorZ );
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: Init Interface"));
// Init interface ( ALWAYS TO TEAM PANEL. DEF changed it to go back to the previous panel ) // Init interface ( ALWAYS TO TEAM PANEL. DEF changed it to go back to the previous panel )
if( !gfTacticalPlacementGUIActive ) if( !gfTacticalPlacementGUIActive )
{ {
@@ -294,8 +289,8 @@ void EnterTacticalScreen( )
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: settacticalinterfaceflags")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: settacticalinterfaceflags"));
SetTacticalInterfaceFlags( 0 ); SetTacticalInterfaceFlags( 0 );
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: set default squad on sector entry"));
// set default squad on sector entry // set default squad on sector entry
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen:selectdefaultsquadonsectorentry"));
SetDefaultSquadOnSectorEntry( FALSE ); SetDefaultSquadOnSectorEntry( FALSE );
ExamineCurrentSquadLights( ); ExamineCurrentSquadLights( );
@@ -312,6 +307,7 @@ void EnterTacticalScreen( )
// Select current guy... // Select current guy...
//gfGameScreenLocateToSoldier = TRUE; //gfGameScreenLocateToSoldier = TRUE;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: check meanwhile"));
// Locate if in meanwhile... // Locate if in meanwhile...
if ( AreInMeanwhile( ) ) if ( AreInMeanwhile( ) )
{ {
@@ -323,14 +319,15 @@ void EnterTacticalScreen( )
InternalLocateGridNo( 4561, TRUE ); InternalLocateGridNo( 4561, TRUE );
} }
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: clear messages"));
// Clear tactical message q // Clear tactical message q
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen:cleartacticalmessagequeue"));
ClearTacticalMessageQueue( ); ClearTacticalMessageQueue( );
// ATE: Enable messages again... // ATE: Enable messages again...
EnableScrollMessages( ); EnableScrollMessages( );
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: done")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: done"));
} }
void LeaveTacticalScreen( UINT32 uiNewScreen ) void LeaveTacticalScreen( UINT32 uiNewScreen )
@@ -600,13 +597,12 @@ UINT32 MainGameScreenHandle(void)
HandleOverheadMap( ); HandleOverheadMap( );
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
/*
if ( !ARE_IN_FADE_IN( ) ) if ( !ARE_IN_FADE_IN( ) )
{ {
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("maingamescreenhandle: HandleAirRaid"));
HandleAirRaid( ); HandleAirRaid( );
} }
*/
if ( gfGameScreenLocateToSoldier ) if ( gfGameScreenLocateToSoldier )
{ {
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("maingamescreenhandle: tacticalscreenlocatetosoldier")); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("maingamescreenhandle: tacticalscreenlocatetosoldier"));