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++"
Version="7.10"
Name="Editor"
SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA"
SccLocalPath="..\..\..\ja2\build">
SccProjectName=""
SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms>
<Platform
Name="Win32"/>
@@ -21,7 +23,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -35,7 +37,8 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -72,8 +75,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Editor All.h"
@@ -85,7 +88,8 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -122,8 +126,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Editor All.h"
@@ -135,7 +139,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -172,8 +176,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="JA2DEMO;_DEBUG;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="JA2DEMO;_DEBUG;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Editor All.h"
@@ -185,7 +189,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -222,8 +226,13 @@
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
AdditionalIncludeDirectories="..\Standard Gaming Platform,..\TileEngine,..\,..\Tactical,..\Utils,..\tacticalai,..\strategic,..\Laptop,.\"
GlobalOptimizations="TRUE"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -237,7 +246,7 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -275,8 +284,8 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
PreprocessorDefinitions="NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
@@ -289,7 +298,7 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -327,7 +336,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -341,7 +350,7 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -378,7 +387,7 @@
<Tool
Name="VCCLCompilerTool"
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"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
@@ -391,7 +400,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
+1 -1
View File
@@ -3098,4 +3098,4 @@ UINT8 GetCurrentSummaryVersion()
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_Y 9
#define GIO_DIF_SETTINGS_X iScreenWidthOffset + 20
#define GIO_DIF_SETTINGS_Y iScreenHeightOffset + 75
#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_Y GIO_DIF_SETTINGS_Y
#define GIO_BR_SETTING_WIDTH GIO_DIF_SETTINGS_WIDTH
#define GIO_IRON_MAN_SETTING_X iScreenWidthOffset + 20
#define GIO_IRON_MAN_SETTING_Y iScreenHeightOffset + 355
#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;
break;
}
/*
// JA2Gold: iron man buttons
usPosY = GIO_IRON_MAN_SETTING_Y - GIO_OFFSET_TO_TOGGLE_BOX_Y;
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
@@ -469,10 +467,11 @@ BOOLEAN EnterGIOScreen()
ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
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;
@@ -486,7 +485,7 @@ BOOLEAN EnterGIOScreen()
usPosY += GIO_GAP_BN_SETTINGS;
}
if( gGameOptions.fAirStrikes )
if( gGameOptions.fGunNut )
ButtonList[ guiGunOptionToggles[ GIO_GUN_NUT ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiGunOptionToggles[ GIO_REDUCED_GUNS ] ]->uiFlags |= BUTTON_CLICKED_ON;
@@ -568,9 +567,10 @@ BOOLEAN ExitGIOScreen()
for( cnt=0; cnt<NUM_BR_OPTIONS; cnt++)
RemoveButton( guiBROptionToggles[ cnt ] );
// JA2Gold: remove iron man buttons
/* // JA2Gold: remove iron man buttons
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
RemoveButton( guiGameSaveToggles[ cnt ] );
*/
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 );
// 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 );
usPosY = GIO_IRON_MAN_SETTING_Y+2;
@@ -736,6 +737,7 @@ BOOLEAN RenderGIOScreen()
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 );
*/
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;
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
{
RestoreExternBackgroundRect( GIO_IRON_MAN_SETTING_X+GIO_OFFSET_TO_TOGGLE_BOX, usPosY, 34, 29 );
usPosY += GIO_GAP_BN_SETTINGS;
}
*/
// Madd
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
// Madd
// gGameOptions.fGunNut = GetCurrentGunButtonSetting();
gGameOptions.fGunNut = TRUE;
gGameOptions.fAirStrikes = GetCurrentGunButtonSetting();
gGameOptions.fGunNut = GetCurrentGunButtonSetting();
gGameOptions.ubGameStyle = GetCurrentGameStyleButtonSetting();
gGameOptions.ubDifficultyLevel = GetCurrentDifficultyButtonSetting() + 1;
// JA2Gold: no more timed turns setting
//gGameOptions.fTurnTimeLimit = GetCurrentTimedTurnsButtonSetting();
gGameOptions.fIronManMode = GetCurrentGameSaveButtonSetting();
// JA2Gold: iron man
//gGameOptions.fIronManMode = GetCurrentGameSaveButtonSetting();
// Madd
gGameOptions.fIronManMode = FALSE;
switch ( GetCurrentBROptionButtonSetting() )
{
case GIO_BR_GOOD:
@@ -1326,9 +1327,7 @@ void ConfirmGioDifSettingMessageBoxCallBack( UINT8 bExitValue )
BOOLEAN DisplayMessageToUserAboutIronManMode()
{
// Madd
//UINT8 ubIronManMode = FALSE; // GetCurrentGameSaveButtonSetting();
UINT8 ubIronManMode = GetCurrentGameSaveButtonSetting();
UINT8 ubIronManMode = FALSE; // GetCurrentGameSaveButtonSetting();
//if the user has selected IRON MAN mode
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_GAME_SAVE_STYLE_TEXT ], gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT + gGameOptions.fIronManMode ] );
// Air Strikes Option
if( gGameOptions.fAirStrikes )
// Tons of Guns Option
if( gGameOptions.fGunNut )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_GUN_OPTIONS_TEXT ], gzGIOScreenText[ GIO_GUN_NUT_TEXT ] );
else
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
INT8 czVersionNumber[16] = { "Build 11.08.05" };
INT8 czVersionNumber[16] = { "Build 04.15.06" };
INT16 zTrackingNumber[16] = { L"Z" };
+11
View File
@@ -103,6 +103,14 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
if(!ReadInAmmoStats(fileName))
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);
strcat(fileName, ITEMSFILENAME);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
@@ -147,6 +155,9 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
if(!ReadInMergeStats(fileName))
return FALSE;
//if(!WriteMergeStats())
// return FALSE;
strcpy(fileName, directoryName);
strcat(fileName, ATTACHMENTCOMBOMERGESFILENAME);
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
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
EndProjectSection
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
EndProjectSection
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
EndProjectSection
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
EndProjectSection
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
EndProjectSection
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
EndProjectSection
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
EndProjectSection
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
EndProjectSection
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
{CB33540F-3AFF-4985-86FE-5E899B570133} = {CB33540F-3AFF-4985-86FE-5E899B570133}
{5C428253-7443-4C4B-A5F2-E079DA2E6933} = {5C428253-7443-4C4B-A5F2-E079DA2E6933}
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6} = {94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}
{262D8F88-8266-4B16-999E-B5C0B12EFF01} = {262D8F88-8266-4B16-999E-B5C0B12EFF01}
{F80B55A6-E228-4EB6-B915-4815E01CEA76} = {F80B55A6-E228-4EB6-B915-4815E01CEA76}
{FEE1FCB1-6A45-4247-A440-3561F33B16A3} = {FEE1FCB1-6A45-4247-A440-3561F33B16A3}
{4D15E8C7-9458-403C-A34B-15DF2CAF3277} = {4D15E8C7-9458-403C-A34B-15DF2CAF3277}
{6B1D57C9-A579-452E-8642-6ECF3E9FD399} = {6B1D57C9-A579-452E-8642-6ECF3E9FD399}
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5} = {F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82} = {E0E16C88-C352-4C37-AC27-BFF3FDF18E82}
{33CD085A-A03E-4D2C-970A-D69CD5466806} = {33CD085A-A03E-4D2C-970A-D69CD5466806}
{D76119D7-B5EB-4F61-BFB9-F582B06F889B} = {D76119D7-B5EB-4F61-BFB9-F582B06F889B}
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2} = {4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}
{2124B612-013E-492D-911C-B5737D60EEDF} = {2124B612-013E-492D-911C-B5737D60EEDF}
{1D052886-AE6B-437A-BE0C-D074CA940818} = {1D052886-AE6B-437A-BE0C-D074CA940818}
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32} = {97E691B8-7A39-4E86-B69A-BD6BD5C31F32}
EndProjectSection
EndProject
Global
@@ -55,150 +55,150 @@ Global
Release with Debug Info = Release with Debug Info
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{CB33540F-3AFF-4985-86FE-5E899B570133}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Bounds Checker.Build.0 = Bounds Checker|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Debug.ActiveCfg = Debug|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Debug.Build.0 = Debug|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Debug Demo.ActiveCfg = Debug Demo|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Debug Demo.Build.0 = Debug Demo|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.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
{CB33540F-3AFF-4985-86FE-5E899B570133}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release.ActiveCfg = Release|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release.Build.0 = Release|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release Demo.ActiveCfg = Release Demo|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.Release Demo.Build.0 = Release Demo|Win32
{CB33540F-3AFF-4985-86FE-5E899B570133}.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
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Bounds Checker.Build.0 = Bounds Checker|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Debug.ActiveCfg = Debug|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Debug.Build.0 = Debug|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Debug Demo.ActiveCfg = Debug Demo|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Debug Demo.Build.0 = Debug Demo|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.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
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release.ActiveCfg = Release|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release.Build.0 = Release|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release Demo.ActiveCfg = Release Demo|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.Release Demo.Build.0 = Release Demo|Win32
{FEE1FCB1-6A45-4247-A440-3561F33B16A3}.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
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Bounds Checker.Build.0 = Bounds Checker|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Debug.ActiveCfg = Debug|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Debug.Build.0 = Debug|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Debug Demo.ActiveCfg = Debug Demo|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Debug Demo.Build.0 = Debug Demo|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Demo Bounds Checker.ActiveCfg = Bounds Checker|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.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
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release.ActiveCfg = Release|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release.Build.0 = Release|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release Demo.ActiveCfg = Release Demo|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.Release Demo.Build.0 = Release Demo|Win32
{4D15E8C7-9458-403C-A34B-15DF2CAF3277}.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
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Bounds Checker.Build.0 = Bounds Checker|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Debug.ActiveCfg = Debug|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Debug.Build.0 = Debug|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Debug Demo.ActiveCfg = Debug Demo|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Debug Demo.Build.0 = Debug Demo|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.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
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release.ActiveCfg = Release|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release.Build.0 = Release|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release Demo.ActiveCfg = Release Demo|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.Release Demo.Build.0 = Release Demo|Win32
{5C428253-7443-4C4B-A5F2-E079DA2E6933}.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
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Bounds Checker.Build.0 = Bounds Checker|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Debug.ActiveCfg = Debug|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Debug.Build.0 = Debug|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Debug Demo.ActiveCfg = Debug Demo|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Debug Demo.Build.0 = Debug Demo|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.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
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release.ActiveCfg = Release|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release.Build.0 = Release|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release Demo.ActiveCfg = Release Demo|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.Release Demo.Build.0 = Release Demo|Win32
{F80B55A6-E228-4EB6-B915-4815E01CEA76}.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
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Bounds Checker.Build.0 = Bounds Checker|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Debug.ActiveCfg = Debug|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Debug.Build.0 = Debug|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Debug Demo.ActiveCfg = Debug Demo|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Debug Demo.Build.0 = Debug Demo|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.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
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release.ActiveCfg = Release|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release.Build.0 = Release|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release Demo.ActiveCfg = Release Demo|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.Release Demo.Build.0 = Release Demo|Win32
{94DA4574-7108-4CDA-B43F-DA83B1C3EDF6}.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
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Bounds Checker.Build.0 = Bounds Checker|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Debug.ActiveCfg = Debug|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Debug.Build.0 = Debug|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Debug Demo.ActiveCfg = Debug Demo|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Debug Demo.Build.0 = Debug Demo|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.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
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release.ActiveCfg = Release|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release.Build.0 = Release|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release Demo.ActiveCfg = Release Demo|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.Release Demo.Build.0 = Release Demo|Win32
{262D8F88-8266-4B16-999E-B5C0B12EFF01}.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
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Bounds Checker.Build.0 = Bounds Checker|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Debug.ActiveCfg = Debug|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Debug.Build.0 = Debug|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Debug Demo.ActiveCfg = Debug Demo|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Debug Demo.Build.0 = Debug Demo|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.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
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release.ActiveCfg = Release|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release.Build.0 = Release|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release Demo.ActiveCfg = Release Demo|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.Release Demo.Build.0 = Release Demo|Win32
{6B1D57C9-A579-452E-8642-6ECF3E9FD399}.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
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Bounds Checker.Build.0 = Bounds Checker|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Debug.ActiveCfg = Debug|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Debug.Build.0 = Debug|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Debug Demo.ActiveCfg = Debug Demo|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Debug Demo.Build.0 = Debug Demo|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.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
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release.ActiveCfg = Release|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release.Build.0 = Release|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release Demo.ActiveCfg = Release Demo|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.Release Demo.Build.0 = Release Demo|Win32
{0795F6E2-EE5C-48C5-AB6B-11E64B7533D4}.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
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Bounds Checker.Build.0 = Bounds Checker|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Debug.ActiveCfg = Debug|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Debug.Build.0 = Debug|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Debug Demo.ActiveCfg = Debug Demo|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Debug Demo.Build.0 = Debug Demo|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Release.ActiveCfg = Release|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Release.Build.0 = Release|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Release Demo.ActiveCfg = Release Demo|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Release Demo.Build.0 = Release Demo|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{33CD085A-A03E-4D2C-970A-D69CD5466806}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Bounds Checker.Build.0 = Bounds Checker|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Debug.ActiveCfg = Debug|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Debug.Build.0 = Debug|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Debug Demo.ActiveCfg = Debug Demo|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Debug Demo.Build.0 = Debug Demo|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release.ActiveCfg = Release|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release.Build.0 = Release|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release Demo.ActiveCfg = Release Demo|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release Demo.Build.0 = Release Demo|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{E0E16C88-C352-4C37-AC27-BFF3FDF18E82}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Bounds Checker.Build.0 = Bounds Checker|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Debug.ActiveCfg = Debug|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Debug.Build.0 = Debug|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Debug Demo.ActiveCfg = Debug Demo|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Debug Demo.Build.0 = Debug Demo|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Demo Bounds Checker.ActiveCfg = Bounds Checker|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Demo Bounds Checker.Build.0 = Bounds Checker|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Release.ActiveCfg = Release|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Release.Build.0 = Release|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Release Demo.ActiveCfg = Release Demo|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Release Demo.Build.0 = Release Demo|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{1D052886-AE6B-437A-BE0C-D074CA940818}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Bounds Checker.Build.0 = Bounds Checker|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Debug.ActiveCfg = Debug|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Debug.Build.0 = Debug|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Debug Demo.ActiveCfg = Debug Demo|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Debug Demo.Build.0 = Debug Demo|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release.ActiveCfg = Release|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release.Build.0 = Release|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release Demo.ActiveCfg = Release Demo|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release Demo.Build.0 = Release Demo|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{F10032C4-A6E5-44F7-A9BC-B76C46BA72D5}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Bounds Checker.Build.0 = Bounds Checker|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Debug.ActiveCfg = Debug|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Debug.Build.0 = Debug|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Debug Demo.ActiveCfg = Debug Demo|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Debug Demo.Build.0 = Debug Demo|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Release.ActiveCfg = Release|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Release.Build.0 = Release|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Release Demo.ActiveCfg = Release Demo|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Release Demo.Build.0 = Release Demo|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{2124B612-013E-492D-911C-B5737D60EEDF}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Bounds Checker.Build.0 = Bounds Checker|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Debug.ActiveCfg = Debug|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Debug.Build.0 = Debug|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Debug Demo.ActiveCfg = Debug Demo|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Debug Demo.Build.0 = Debug Demo|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release.ActiveCfg = Release|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release.Build.0 = Release|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release Demo.ActiveCfg = Release Demo|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release Demo.Build.0 = Release Demo|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{D76119D7-B5EB-4F61-BFB9-F582B06F889B}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Bounds Checker.Build.0 = Bounds Checker|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Debug.ActiveCfg = Debug|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Debug.Build.0 = Debug|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Debug Demo.ActiveCfg = Debug Demo|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Debug Demo.Build.0 = Debug Demo|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release.ActiveCfg = Release|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release.Build.0 = Release|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release Demo.ActiveCfg = Release Demo|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release Demo.Build.0 = Release Demo|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{97E691B8-7A39-4E86-B69A-BD6BD5C31F32}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Bounds Checker.Build.0 = Bounds Checker|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Debug.ActiveCfg = Debug|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Debug.Build.0 = Debug|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Debug Demo.ActiveCfg = Debug Demo|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Debug Demo.Build.0 = Debug Demo|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release.ActiveCfg = Release|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release.Build.0 = Release|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release Demo.ActiveCfg = Release Demo|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release Demo.Build.0 = Release Demo|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{4D4A4AF3-63D1-4C4B-81B5-3EFB3BD574F2}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Bounds Checker.ActiveCfg = Bounds Checker|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Bounds Checker.Build.0 = Bounds Checker|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Debug.ActiveCfg = Debug|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Debug.Build.0 = Debug|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Debug Demo.ActiveCfg = Debug Demo|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Debug Demo.Build.0 = Debug Demo|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Demo Bounds Checker.ActiveCfg = Demo Bounds Checker|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Demo Bounds Checker.Build.0 = Demo Bounds Checker|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Demo Release with Debug Info.ActiveCfg = Demo Release with Debug Info|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Demo Release with Debug Info.Build.0 = Demo Release with Debug Info|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release.ActiveCfg = Release|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release.Build.0 = Release|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release Demo.ActiveCfg = Release Demo|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release Demo.Build.0 = Release Demo|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release with Debug Info.ActiveCfg = Release with Debug Info|Win32
{32A550A8-FEBD-4F8D-8D62-6F97C63F83DA}.Release with Debug Info.Build.0 = Release with Debug Info|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
BIN
View File
Binary file not shown.
+57 -35
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++"
Version="7.10"
Name="ja2"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA"
SccLocalPath="..\..\ja2\build">
SccProjectName=""
SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms>
<Platform
Name="Win32"/>
@@ -20,7 +22,7 @@
<Tool
Name="VCCLCompilerTool"
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"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
@@ -33,14 +35,14 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
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"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
@@ -90,8 +92,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\Laptop"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="JA2 All.h"
@@ -103,15 +105,16 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib smackw32.lib mss32.lib"
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="d:\ja2demo\ja2.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Debug Demo/ja2.pdb"
GenerateMapFile="TRUE"
@@ -157,8 +160,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\Laptop"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="JA2 All.h"
@@ -170,15 +173,16 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib smackw32.lib mss32.lib"
OutputFile="..\..\ja2.exe"
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="d:\ja2demo\ja2.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Demo Bounds Checker/ja2.pdb"
GenerateMapFile="TRUE"
@@ -227,7 +231,7 @@
Optimization="2"
InlineFunctionExpansion="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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -242,15 +246,16 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib smackw32.lib mss32.lib"
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="d:\ja2demo\ja2.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE"
GenerateMapFile="TRUE"
MapFileName=".\Demo Release with Debug/ja2.map"
@@ -298,10 +303,11 @@
Optimization="2"
InlineFunctionExpansion="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"
StringPooling="TRUE"
RuntimeLibrary="0"
BufferSecurityCheck="FALSE"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="JA2 All.h"
@@ -310,21 +316,24 @@
ObjectFile=".\Release with Debug/"
ProgramDataBaseFileName=".\Release with Debug/"
BrowseInformation="1"
WarningLevel="4"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
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"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=""
IgnoreDefaultLibraryNames=""
GenerateDebugInformation="TRUE"
GenerateMapFile="TRUE"
MapFileName=".\Release with Debug/ja2_cvs.map"
MapFileName=".\Release with Debug/ja2.map"
SubSystem="2"
TargetMachine="1"/>
<Tool
@@ -366,8 +375,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\Laptop"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING"
AdditionalIncludeDirectories="&quot;.\Standard Gaming Platform&quot;;.\TileEngine;.\Tactical;.\Utils;.\TacticalAI;.\Editor;.\Strategic;.\laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="JA2 All.h"
@@ -379,15 +388,17 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="vtuneapi.lib winmm.lib smackw32.lib mss32.lib"
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="\ja2\ja2.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile=".\Bounds Checker/ja2.pdb"
GenerateMapFile="TRUE"
@@ -436,8 +447,8 @@
Optimization="2"
InlineFunctionExpansion="1"
OptimizeForProcessor="1"
AdditionalIncludeDirectories="\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Communications,.\Editor,.\Strategic,.\laptop"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
@@ -451,15 +462,16 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib smackw32.lib mss32.lib"
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib"
OutputFile="d:\ja2demo\ja2.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
IgnoreDefaultLibraryNames="libcmt"
GenerateDebugInformation="TRUE"
GenerateMapFile="TRUE"
MapFileName=".\Release Demo/ja2.map"
@@ -505,9 +517,13 @@
Name="VCCLCompilerTool"
AdditionalOptions="/O2b2 "
Optimization="2"
InlineFunctionExpansion="2"
OptimizeForProcessor="1"
AdditionalIncludeDirectories=".\Standard Gaming Platform,.\TileEngine,.\Tactical,.\Utils,.\TacticalAI,.\Editor,.\Strategic,.\laptop,.\"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="1"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -522,15 +538,18 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
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"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
IgnoreDefaultLibraryNames=""
GenerateMapFile="TRUE"
MapFileName=".\Release/ja2_cvs.map"
SubSystem="2"
@@ -2377,6 +2396,9 @@
<File
RelativePath="GameSettings.h">
</File>
<File
RelativePath=".\Init.h">
</File>
<File
RelativePath="JA2 All.h">
</File>
+4 -4
View File
@@ -1209,8 +1209,8 @@ void SetFirstLastPagesForNew( UINT32 uiClassMask )
UINT16 i;
INT16 sFirst = -1;
INT16 sLast = -1;
UINT8 ubPages=0;
UINT8 ubNumItems=0;
UINT16 ubPages=0;
UINT16 ubNumItems=0;
gubCurPage = 0;
@@ -1254,8 +1254,8 @@ void SetFirstLastPagesForUsed()
UINT16 i;
INT16 sFirst = -1;
INT16 sLast = -1;
UINT8 ubPages=0;
UINT8 ubNumItems=0;
UINT16 ubPages=0;
UINT16 ubNumItems=0;
gubCurPage = 0;
+1 -1
View File
@@ -1244,7 +1244,7 @@ void Print8CharacterOnlyString( void )
BOOLEAN CheckCharacterInputForEgg( void )
{
MERC_HIRE_STRUCT HireMercStruct;
// MERC_HIRE_STRUCT HireMercStruct;
#ifndef JA2BETAVERSION
return( FALSE );
+36 -96
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++"
Version="7.10"
Name="Laptop"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA"
SccLocalPath="..\..\..\ja2\build">
SccProjectName=""
SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms>
<Platform
Name="Win32"/>
@@ -21,7 +23,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -36,7 +38,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -74,7 +76,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -89,7 +91,8 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -126,8 +129,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Laptop All.h"
@@ -139,7 +142,8 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -177,8 +181,8 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
@@ -192,7 +196,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -229,8 +233,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Laptop All.h"
@@ -242,7 +246,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -279,8 +283,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Laptop All.h"
@@ -292,7 +296,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -329,8 +333,13 @@
<Tool
Name="VCCLCompilerTool"
Optimization="2"
GlobalOptimizations="TRUE"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -344,7 +353,7 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -381,7 +390,7 @@
<Tool
Name="VCCLCompilerTool"
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"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
@@ -394,7 +403,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
@@ -3505,79 +3514,7 @@
</FileConfiguration>
</File>
<File
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>
RelativePath=".\IMP Skill Trait.cpp">
</File>
<File
RelativePath="IMP Text System.cpp">
@@ -4811,7 +4748,7 @@
RelativePath="IMP Portraits.h">
</File>
<File
RelativePath="IMP Skill Trait.h">
RelativePath=".\IMP Skill Trait.h">
</File>
<File
RelativePath="IMP Text System.h">
@@ -4855,6 +4792,9 @@
<File
RelativePath="sirtech.h">
</File>
<File
RelativePath=".\Speck Quotes.h">
</File>
<File
RelativePath="Store Inventory.h">
</File>
+2 -1
View File
@@ -1812,7 +1812,7 @@ UINT32 LaptopScreenHandle()
if( gfStartMapScreenToLaptopTransition )
{
// 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.
//SGPRect SrcRect2, DstRect;
//INT32 iPercentage, iScalePercentage, iFactor;
@@ -2446,6 +2446,7 @@ BOOLEAN LeaveLapTopScreen( void )
if( !gfDontStartTransitionFromLaptop )
{
// 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;
//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
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 ;
RenderMercPopUpBoxFromIndex( iSaveLoadGameMessageBoxID, usPosX, iScreenHeightOffset + 160, FRAME_BUFFER );
@@ -4547,7 +4546,6 @@ BOOLEAN SaveGeneralInfo( HWFILE hFile )
extern UINT32 guiRainLoop;
//end rain
BOOLEAN LoadGeneralInfo( HWFILE hFile )
{
UINT32 uiNumBytesRead;
@@ -5471,4 +5469,4 @@ UINT32 CalcJA2EncryptionSet( SAVED_GAME_HEADER * pSaveGameHeader )
}
return( uiEncryptionSet );
}
}
+31 -20
View File
@@ -48,28 +48,36 @@ extern UINT32 guiBrokenSaveGameVersion;
//
//////////////////////////////////////////////////////
#define SAVE_LOAD_TITLE_FONT FONT14ARIAL
#define SAVE_LOAD_TITLE_COLOR FONT_MCOLOR_WHITE
#define SAVE_LOAD_NORMAL_FONT FONT12ARIAL
#define SAVE_LOAD_NORMAL_COLOR 2
#define SAVE_LOAD_NORMAL_SHADOW_COLOR 118
#define SAVE_LOAD_NORMAL_COLOR 2//FONT_MCOLOR_DKWHITE//2//FONT_MCOLOR_WHITE
#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_COLOR 2
#define SAVE_LOAD_QUICKSAVE_SHADOW_COLOR 189
#define SAVE_LOAD_QUICKSAVE_COLOR 2//FONT_MCOLOR_DKGRAY//FONT_MCOLOR_WHITE
#define SAVE_LOAD_QUICKSAVE_SHADOW_COLOR 189//248//2
#define SAVE_LOAD_EMPTYSLOT_FONT FONT12ARIAL
#define SAVE_LOAD_EMPTYSLOT_COLOR 2
#define SAVE_LOAD_EMPTYSLOT_SHADOW_COLOR 121
#define SAVE_LOAD_EMPTYSLOT_COLOR 2//125//FONT_MCOLOR_WHITE
#define SAVE_LOAD_EMPTYSLOT_SHADOW_COLOR 121//118
#define SAVE_LOAD_HIGHLIGHTED_FONT FONT12ARIAL
#define SAVE_LOAD_HIGHLIGHTED_COLOR FONT_MCOLOR_WHITE
#define SAVE_LOAD_HIGHLIGHTED_SHADOW_COLOR 2
#define SAVE_LOAD_SELECTED_FONT FONT12ARIAL
#define SAVE_LOAD_SELECTED_COLOR 2
#define SAVE_LOAD_SELECTED_SHADOW_COLOR 130
#define SAVE_LOAD_SELECTED_COLOR 2//145//FONT_MCOLOR_WHITE
#define SAVE_LOAD_SELECTED_SHADOW_COLOR 130//2
#define SAVE_LOAD_NUMBER_FONT FONT12ARIAL
#define SAVE_LOAD_NUMBER_COLOR FONT_MCOLOR_WHITE
@@ -78,26 +86,28 @@ extern UINT32 guiBrokenSaveGameVersion;
#define SLG_UNSELECTED_COLOR FONT_MCOLOR_DKWHITE
#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_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_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_WIDTH 98
#define SLG_NUM_MERCS_OFFSET_X 196
#define SLG_NUM_MERCS_OFFSET_Y SLG_DATE_OFFSET_Y
#define SLG_NUM_MERCS_OFFSET_X 196//190//SLG_DATE_OFFSET_X
#define SLG_NUM_MERCS_OFFSET_Y SLG_DATE_OFFSET_Y//26
#define SLG_BALANCE_OFFSET_X 260
#define SLG_BALANCE_OFFSET_Y SLG_DATE_OFFSET_Y
#define SLG_BALANCE_OFFSET_X 260//SLG_SECTOR_OFFSET_X
#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_Y SLG_DATE_OFFSET_Y
#define SLG_SAVE_GAME_DESC_X 318//320//204
#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_Y iScreenHeightOffset
@@ -211,6 +221,7 @@ void SelectedSaveRegionMovementCallBack(MOUSE_REGION * pRegion, INT32 reason );
MOUSE_REGION gSLSEntireScreenRegion;
void SelectedSLSEntireRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason );
//////////////////////////////////////////////////////
//
// Function Prototypes
@@ -1324,12 +1335,12 @@ BOOLEAN DisplaySaveGameEntry( INT8 bEntryID )//, UINT16 usPosY )
//make a string containing the extended options
swprintf( zMouseHelpTextString, L"%20s %22s %22s %22s", zDifString,
/*gzGIOScreenText[ GIO_TIMED_TURN_TITLE_TEXT + SaveGameHeader.sInitialGameOptions.fTurnTimeLimit + 1],*/
SaveGameHeader.sInitialGameOptions.fIronManMode ? gzGIOScreenText[ GIO_IRON_MAN_TEXT ] : gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT ],
//Madd
//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.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 ]) );
@@ -341,8 +341,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"
DisableSpecificWarnings="4292"/>
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
+1 -1
View File
@@ -4714,4 +4714,4 @@ BOOLEAN GetCurrentBattleSectorXYZAndReturnTRUEIfThereIsABattle( INT16 *psSectorX
void AutoBandageFinishedCallback( UINT8 ubResult )
{
SetupDoneInterface();
}
}
+3 -3
View File
@@ -312,9 +312,9 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent )
case EVENT_MAKE_CIV_GROUP_HOSTILE_ON_NEXT_SECTOR_ENTRANCE:
MakeCivGroupHostileOnNextSectorEntrance( (UINT8)pEvent->uiParam );
break;
case EVENT_CHECK_FOR_AIR_RAID:
CheckForAndSetupAirRaid( );
break;
// case EVENT_CHECK_FOR_AIR_RAID:
// CheckForAndSetupAirRaid( );
// break;
case EVENT_BEGIN_AIR_RAID:
BeginAirRaid( );
break;
+1 -1
View File
@@ -83,7 +83,7 @@ enum
EVENT_QUARTER_HOUR_UPDATE,
EVENT_MERC_MERC_WENT_UP_LEVEL_EMAIL_DELAY,
EVENT_MERC_SITE_NEW_MERC_AVAILABLE,
EVENT_CHECK_FOR_AIR_RAID,
// EVENT_CHECK_FOR_AIR_RAID,
#ifdef CRIPPLED_VERSION
EVENT_CRIPPLED_VERSION_END_GAME_CHECK,
+1 -1
View File
@@ -840,4 +840,4 @@ void ReStartingGame()
gpCustomizableTimerCallback = NULL;
gubCheatLevel = STARTING_CHEAT_LEVEL;
}
}
+2 -2
View File
@@ -1568,8 +1568,8 @@ BOOLEAN CommonTimeCompressionChecks( void )
return( TRUE );
}
if ( gfInAirRaid )
return TRUE;
// if ( gfInAirRaid )
// return TRUE;
return( FALSE );
}
+1 -1
View File
@@ -681,7 +681,7 @@ void ProcessQueenCmdImplicationsOfDeath( SOLDIERTYPE *pSoldier )
{
INT32 iNumEnemiesInSector;
SECTORINFO *pSector;
UINT16 str[128];
// UINT16 str[128];
INT32 iMaxEnemyGroupSize = gGameExternalOptions.iMaxEnemyGroupSize;
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"QueenCommand");
+1 -1
View File
@@ -5519,4 +5519,4 @@ GROUP* FindPendingGroupForGarrisonSector( UINT8 ubSectorID )
}
}
return NULL;
}
}
+31 -22
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++"
Version="7.10"
Name="Strategic"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA"
SccLocalPath="..\..\..\ja2\build">
SccProjectName=""
SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms>
<Platform
Name="Win32"/>
@@ -20,7 +22,7 @@
<Tool
Name="VCCLCompilerTool"
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"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
@@ -33,7 +35,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
@@ -71,8 +73,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Strategic All.h"
@@ -84,7 +86,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -121,8 +123,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Strategic All.h"
@@ -134,7 +136,8 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -171,8 +174,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Strategic All.h"
@@ -184,7 +187,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -222,7 +225,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -237,7 +240,8 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -275,7 +279,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -290,7 +294,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -328,8 +332,8 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
@@ -343,7 +347,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -380,8 +384,13 @@
<Tool
Name="VCCLCompilerTool"
Optimization="2"
GlobalOptimizations="TRUE"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -395,7 +404,7 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
+6 -6
View File
@@ -3764,12 +3764,12 @@ void SetupNewStrategicGame( )
// Daily checks for E-mail from Enrico
AddEveryDayStrategicEvent( EVENT_ENRICO_MAIL, ENRICO_MAIL_TIME , 0 );
if ( gGameOptions.fAirStrikes )
{
//Daily check for an air raid
AddEveryDayStrategicEvent( EVENT_CHECK_FOR_AIR_RAID, 360, 0 );
}
// if ( gGameOptions.fAirStrikes )
// {
// //Daily check for an air raid
// AddEveryDayStrategicEvent( EVENT_CHECK_FOR_AIR_RAID, 360, 0 );
// }
//
// Hourly update of all sorts of things
AddPeriodStrategicEvent( EVENT_HOURLY_UPDATE, 60, 0 );
AddPeriodStrategicEvent( EVENT_QUARTER_HOUR_UPDATE, 15, 0 );
+1 -1
View File
@@ -180,4 +180,4 @@ extern INT8 gbGreenToRegPromotions;
extern INT8 gbRegToElitePromotions;
extern INT8 gbMilitiaPromotions;
#endif
#endif
+1 -1
View File
@@ -1590,4 +1590,4 @@ void EnemyCallInAirStrike (INT16 sSectorX, INT16 sSectorY)
ScheduleAirRaid( &AirRaidDef );
return;
}
}
+15 -15
View File
@@ -176,8 +176,8 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
// 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},
// STAND BURST
{"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 // Lesh: AniDelay, speed=0 for control it
{"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
{"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},
// STAND BURST
{"STAND BURST SPREAD" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT, ANIM_STAND, ANIM_STAND, -1},
// STAND BURST // Lesh: AniDelay, speed=0 for control it
{"STAND BURST SPREAD" , 0, 0, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT, ANIM_STAND, ANIM_STAND, -1},
// FALLOFF DEATH
{"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
{"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 SHOOT" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_CROUCH, ANIM_CROUCH, -1},
// CROUCHED BURST // Lesh: AniDelay, speed=0 for control it
{"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 SHOOT" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_PRONE, ANIM_PRONE, -1},
// PRONE BURST // Lesh: AniDelay, speed=0 for control it
{"PRONE BURST SHOOT" , 0, 0, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_PRONE, ANIM_PRONE, -1},
//180
{"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 (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
"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,
// SHOOT_RIFLE_STAND LOW // Lesh: AniDelay, speed=0 for control it
"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 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" , 0, 200, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NOCHANGE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1,
// TANK SHOOT
"TANK BURST" , 0, 100, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NOCHANGE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_FIRE, ANIM_STAND, ANIM_STAND, -1,
// TANK SHOOT // Lesh: AniDelay, speed=0 for control it
"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" , 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", 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 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 // Lesh: AniDelay, speed=0 for control it
"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" , 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...
if ( ( pSoldier->bCamo + pSoldier->wornCamo ) > 0 )
if ( ( pSoldier->bCamo + pSoldier->wornCamo ) > 50 )
{
strcpy( zColFilename, "ANIMS\\camo.COL" );
return( 1 );
+19 -24
View File
@@ -529,14 +529,14 @@ DEALER_POSSIBLE_INV gGabbyInventory[MAXITEMS+1];// =
//
// Frank ( Alcohol )
//
DEALER_POSSIBLE_INV gFrankInventory[MAXITEMS+1] =
{
{ BEER, 12 },
{ WINE, 6 },
{ ALCOHOL, 9 },
{ LAST_DEALER_ITEM, NO_DEALER_ITEM }, //Last One
};
DEALER_POSSIBLE_INV gFrankInventory[MAXITEMS+1];// =
//{
// { BEER, 12 },
// { WINE, 6 },
// { ALCOHOL, 9 },
//
// { 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:
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 MEDICKIT:
case TOOLKIT:
@@ -946,6 +930,9 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA
ubMinCoolness = HighestPlayerProgressPercentage() / 10;
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
if ( bArmsDealer == -1 && gGameOptions.ubBobbyRay > BR_GOOD )
{
@@ -976,6 +963,14 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA
ubMinCoolness = max( 1, min( 9, ubMinCoolness ) );
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 (ubItemCoolness > ubMaxCoolness)
+1 -1
View File
@@ -5430,4 +5430,4 @@ void SoldierStealItemFromSoldier( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent,
gpTempSoldier = pSoldier;
gsTempGridno = sGridNo;
SetCustomizableTimerCallbackAndDelay( 1000, CheckForPickedOwnership, TRUE );
}
}
+3 -3
View File
@@ -4528,12 +4528,12 @@ UINT32 UIHandleLCOnTerrain( UI_EVENT *pUIEvent )
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 ) )
gsCurrentActionPoints = AP_TO_AIM_TILE_IF_ALREADY_READY;
else
gsCurrentActionPoints = 0;
gsCurrentActionPoints = 0;
gfUIHandleShowMoveGrid = TRUE;
gsUIHandleShowMoveGridLocation = sXPos + (MAXCOL * sYPos );
@@ -4604,7 +4604,7 @@ BOOLEAN MakeSoldierTurn( SOLDIERTYPE *pSoldier, INT16 sXPos, INT16 sYPos )
if( usAnimState != INVALID_ANIMATION )
{
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 ) )
sAPCost = AP_TO_AIM_TILE_IF_ALREADY_READY;
+99 -12
View File
@@ -1,4 +1,3 @@
// WANNE 2 <changed some lines>
#ifdef PRECOMPILEDHEADERS
#include "Tactical All.h"
#include "language defines.h"
@@ -184,22 +183,24 @@
#define ITEM_FONT TINYFONT1
#define EXCEPTIONAL_DAMAGE 30
#define EXCEPTIONAL_DAMAGE 40
#define EXCEPTIONAL_WEIGHT 20
#define EXCEPTIONAL_RANGE 300
#define EXCEPTIONAL_MAGAZINE 30
#define EXCEPTIONAL_AP_COST 7
#define EXCEPTIONAL_RANGE 400
#define EXCEPTIONAL_MAGAZINE 50
#define EXCEPTIONAL_AP_COST 5
#define EXCEPTIONAL_BURST_SIZE 5
#define EXCEPTIONAL_RELIABILITY 2
#define EXCEPTIONAL_REPAIR_EASE 2
#define EXCEPTIONAL_ACCURACY 4
#define BAD_DAMAGE 23
#define BAD_WEIGHT 45
#define BAD_RANGE 150
#define BAD_RANGE 150
#define BAD_MAGAZINE 10
#define BAD_AP_COST 11
#define BAD_AP_COST 9
#define BAD_RELIABILITY -2
#define BAD_REPAIR_EASE -2
#define BAD_ACCURACY -1
#define KEYRING_X 487
#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;
}
if (Weapon[usItem].bAccuracy >= EXCEPTIONAL_ACCURACY )
{
zTemp = Message[STR_ACCURATE];
if ( ! AttemptToAddSubstring( zItemPros, zTemp, &uiStringLength, uiPixLimit ) )
{
return;
}
}
if (Item[usItem].ubWeight <= EXCEPTIONAL_WEIGHT)
{
zTemp = Message[STR_LIGHT];
@@ -712,6 +722,15 @@ void GenerateConsString( UINT16 * zItemCons, OBJECTTYPE * pObject, UINT32 uiPixL
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
ubWeight = Item[ usItem ].ubWeight;
if (Item[ usItem ].usItemClass == IC_GUN)
@@ -1063,6 +1082,37 @@ void INVRenderINVPanelItem( SOLDIERTYPE *pSoldier, INT16 sPocket, UINT8 fDirtyLe
{
// 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 ] )
{
fOutline = TRUE;
@@ -2212,6 +2262,11 @@ void CycleItemDescriptionItem( )
{
usOldItem--;
while ( usOldItem > 0 && ( Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ))
{
usOldItem--;
}
if ( usOldItem < 0 )
{
usOldItem = MAXITEMS-1;
@@ -2225,6 +2280,11 @@ void CycleItemDescriptionItem( )
{
usOldItem = 0;
}
while (usOldItem < MAXITEMS && (Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ))
{
usOldItem++;
}
}
CreateItem( (UINT16)usOldItem, 100, &( gpItemDescSoldier->inv[ HANDPOS ] ) );
@@ -2767,7 +2827,6 @@ void ItemDescAmmoCallback(GUI_BUTTON *btn,INT32 reason)
swprintf( (wchar_t *)pStr, L"0" );
SpecifyButtonText( giItemDescAmmoButton, (UINT16 *)pStr );
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 );
}
}
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 ] );
if (GetShotsPerBurst(gpItemDescObject) > 0)
if (GetShotsPerBurst(gpItemDescObject) > 0 || GetAutofireShotsPerFiveAPs(gpItemDescObject)>0)
{
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);
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 )
{
@@ -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 );
}
}
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 ] );
if (GetShotsPerBurst(gpItemDescObject) > 0)
if (GetShotsPerBurst(gpItemDescObject) > 0 || GetAutofireShotsPerFiveAPs(gpItemDescObject))
{
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 );
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 )
@@ -7203,8 +7291,7 @@ void GetHelpTextForItem( INT16 * pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldi
}
}
// The first tool tip is for rocket rifles
if ( !gGameOptions.fGunNut && Item[ usItem ].usItemClass == IC_GUN && !Item[usItem].rocketlauncher && !Item[usItem].rocketrifle )
if ( 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 );
}
+25 -7
View File
@@ -995,7 +995,7 @@ void UpdateSMPanel( )
else
{
// 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 ] );
}
@@ -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 ( (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;
pSoldier->bDoBurst = FALSE;
pSoldier->bDoAutofire = 0;
if ( !Weapon[pSoldier->inv[ HANDPOS ].usItem].NoSemiAuto )
{
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
@@ -6016,9 +6025,18 @@ void HandleTacticalEffectsOfEquipmentChange( SOLDIERTYPE *pSoldier, UINT32 uiInv
// as a minimum
if ( (Item[ pSoldier->inv[ HANDPOS ].usItem ].usItemClass & IC_WEAPON) && GetShotsPerBurst(&pSoldier->inv[ HANDPOS ]) == 0 )
{
pSoldier->bDoBurst = FALSE;
pSoldier->bWeaponMode = WM_NORMAL;
pSoldier->bDoAutofire = 0;
if ( !Weapon[pSoldier->inv[ HANDPOS ].usItem].NoSemiAuto )
{
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");
// depending on selection of the gun nut option
if (gGameOptions.fGunNut)
{
//if (gGameOptions.fGunNut)
//{
// use table of extended gun choices
pGunChoiceTable = &(gExtendedArmyGunChoices[0]);
}
else
{
// use table of regular gun choices
pGunChoiceTable = &(gRegularArmyGunChoices[0]);
}
//}
//else
//{
// // use table of regular gun choices
// pGunChoiceTable = &(gRegularArmyGunChoices[0]);
//}
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"InitArmyGunTypes pick a gun type");
// for each gun category
@@ -429,7 +429,7 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
}
bAmmoClips = (INT8)(3 + Random( 2 ));
bGrenades = (INT8)(3 + Random( 3 ));
bGrenades = (INT8)(2 + Random( 3 ));
if( ( bRating >= AVERAGE_ELITE_EQUIPMENT_RATING ) && ( Random( 100 ) < 75 ) )
{
@@ -794,28 +794,35 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC
usAttachIndex = 0;
}
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"ChooseWeaponForSoldierCreateStruct: Gun Created");
if( usScopeIndex > 0 )
{
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create Scope %d",usScopeIndex));
CreateItem( usScopeIndex, 100, &Object );
Object.fFlags |= OBJECT_UNDROPPABLE;
AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object );
}
if( usAttachIndex > 0 )
{
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create Attachment %d",usAttachIndex));
CreateItem( usAttachIndex, 100, &Object );
Object.fFlags |= OBJECT_UNDROPPABLE;
AttachObject( NULL, &(pp->Inv[ HANDPOS ]), &Object );
}
if( usAttachIndex2 > 0 )
{
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: Create 2nd Attachment %d",usAttachIndex2));
CreateItem( usAttachIndex2, 100, &Object );
Object.fFlags |= OBJECT_UNDROPPABLE;
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)
pp->Inv[ HANDPOS ].ubGunShotsLeft = GetMagSize(&pp->Inv[ HANDPOS ]);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: choose ammo"));
if( bAmmoClips )
{ //We have a gun, so choose ammo clips
@@ -842,6 +849,7 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC
}
//Ammo
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: create ammo"));
if( bAmmoClips && usAmmoIndex )
{
CreateItems( usAmmoIndex, 100, bAmmoClips, &Object );
@@ -849,6 +857,7 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC
PlaceObjectInSoldierCreateStruct( pp, &Object );
}
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ChooseWeaponForSoldierCreateStruct: done"));
}
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
// depending on selection of the gun nut option
if (gGameOptions.fGunNut)
{
//if (gGameOptions.fGunNut)
//{
// use table of extended gun choices
pGunChoiceTable = &(gExtendedArmyGunChoices[0]);
}
else
{
// use table of regular gun choices
pGunChoiceTable = &(gRegularArmyGunChoices[0]);
}
//}
//else
//{
// // use table of regular gun choices
// pGunChoiceTable = &(gRegularArmyGunChoices[0]);
//}
// choose one the of the possible gun choices
uiChoice = Random(pGunChoiceTable[ uiGunLevel ].ubChoices);
+1
View File
@@ -109,6 +109,7 @@ enum
SCOPE,
ATTACHMENTS,
KNIVES,
ENEMYAMMOTYPES,
MAX_ITEM_TYPES
};
+4 -1
View File
@@ -367,7 +367,8 @@ typedef struct
INT16 magsizebonus;
INT16 percentautofireapreduction;
INT16 autofirebonus;
INT16 autofiretohitbonus;
INT16 APBonus;
INT16 rateoffirebonus;
INT16 burstsizebonus;
INT16 bursttohitbonus;
@@ -829,6 +830,8 @@ typedef enum
EXPLOSIVE,
EASY_MERGE,
ELECTRONIC_MERGE,
USE_ITEM,
USE_ITEM_HARD
} MergeType;
extern UINT16 Merge[MAXITEMS+1][4];
+189 -18
View File
@@ -1176,10 +1176,10 @@ BOOLEAN ItemIsLegal( UINT16 usItemIndex )
if( !gGameOptions.fGunNut )
{
//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
if( ExtendedGunListGun( usItemIndex ) )
if( Item[usItemIndex].biggunlist )
{
return(FALSE);
}
@@ -3192,6 +3192,39 @@ BOOLEAN AttachObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pTargetObj, OBJECTTYP
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:
// transfer points...
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 );
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,
// this function will have to be rewritten to scan the item table for an item
// with item class ammo, which has class index usMagIndex
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "MagazineClassIndexToItemType" ) );
for (usLoop = FIRST_AMMO; usLoop < MAXITEMS; usLoop++)
{
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 );
}
}
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "MagazineClassIndexToItemType: return none, got to %d", usLoop ) );
return(NONE);
}
@@ -4292,6 +4349,7 @@ UINT16 DefaultMagazine( UINT16 usItem )
WEAPONTYPE * pWeapon;
UINT16 usLoop;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("DefaultMagazine: item = %d",usItem));
if (!(Item[usItem].usItemClass & IC_GUN))
{
return( 0 );
@@ -4302,14 +4360,17 @@ UINT16 DefaultMagazine( UINT16 usItem )
while ( Magazine[usLoop].ubCalibre != NOAMMO )
{
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));
}
usLoop++;
}
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("DefaultMagazine: can't find any"));
return( 0 );
}
@@ -4363,13 +4424,14 @@ UINT16 FindReplacementMagazineIfNecessary( UINT16 usOldGun, UINT16 usOldAmmo, UI
}
// 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 )
{
// 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
// with item class ammo, which has class index ubLoop
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine (by index)"));
WEAPONTYPE * pWeapon;
UINT16 usLoop;
@@ -4393,7 +4455,22 @@ UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
{
// store it! (make sure array is big enough)
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++;
@@ -4409,7 +4486,7 @@ UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
if (usPossibleMagCnt == 1)
{
// use that, no choice
return(MagazineClassIndexToItemType(usPossibleMagIndex[ 0 ] ));
return(MagazineClassIndexToItemType( usPossibleMagIndex[ 0 ] ));
}
else // multiple choices
{
@@ -4417,6 +4494,8 @@ UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
if (Random(100) < ubPercentStandard)
{
ubMagChosen = 0;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine: ubMagChosen = %d",ubMagChosen ));
return( DefaultMagazine(usItem) );
}
else
{
@@ -4424,6 +4503,7 @@ UINT16 RandomMagazine( UINT16 usItem, UINT8 ubPercentStandard )
ubMagChosen = ( UINT8 ) (1 + Random(( UINT32 ) ( usPossibleMagCnt - 1 )));
}
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine: ubMagChosen = %d",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,
// this function will have to be rewritten to scan the item table for an item
// with item class ammo, which has class index ubLoop
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine"));
WEAPONTYPE * pWeapon;
UINT16 usLoop;
@@ -4456,7 +4537,22 @@ UINT16 RandomMagazine( OBJECTTYPE * pGun, UINT8 ubPercentStandard )
{
// store it! (make sure array is big enough)
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++;
@@ -4480,6 +4576,8 @@ UINT16 RandomMagazine( OBJECTTYPE * pGun, UINT8 ubPercentStandard )
if (Random(100) < ubPercentStandard)
{
ubMagChosen = 0;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine: ubMagChosen = %d",ubMagChosen ));
return( DefaultMagazine(pGun->usItem) );
}
else
{
@@ -4487,6 +4585,7 @@ UINT16 RandomMagazine( OBJECTTYPE * pGun, UINT8 ubPercentStandard )
ubMagChosen = ( UINT8 ) (1 + Random(( UINT32 ) ( usPossibleMagCnt - 1 )));
}
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("RandomMagazine: ubMagChosen = %d",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
// of the distance beyond minrangeforaimbonus.
if ( pItem->aimbonus < 0)
ubAimTime = 1;
return ( pItem->aimbonus * ubAimTime * ( iRange - pItem->minrangeforaimbonus ) ) / 100;
}
@@ -5804,6 +5906,56 @@ INT16 GetAimBonus( OBJECTTYPE * pObj, INT32 iRange, UINT8 ubAimTime )
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 )
{
@@ -5825,7 +5977,9 @@ INT16 GetRangeBonus( OBJECTTYPE * pObj )
INT16 bns=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++)
{
@@ -5907,7 +6061,9 @@ INT16 GetDamageBonus( OBJECTTYPE * pObj )
INT16 bns=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++)
{
@@ -5999,18 +6155,22 @@ INT16 GetRateOfFireBonus( OBJECTTYPE * pObj )
return( bns );
}
INT16 GetAutofireBonus( OBJECTTYPE * pObj )
INT16 GetAutoToHitBonus( OBJECTTYPE * pObj, BOOLEAN fProneStance )
{
INT8 bLoop;
INT16 bns=0;
bns = BonusOnOff( Item[pObj->usItem].autofirebonus, pObj->bStatus[0] );
bns += Item[pObj->usGunAmmoItem].autofirebonus ;
// Snap: bipod is effective only in the prone stance
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 );
}
@@ -6893,4 +7053,15 @@ void ApplyEquipmentBonuses(SOLDIERTYPE * pSoldier)
if ( newCamo > oldCamo && pSoldier->bTeam == OUR_TEAM )
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 GetPercentReadyTimeAPReduction( OBJECTTYPE * pObj );
INT16 GetPercentReloadTimeAPReduction( OBJECTTYPE * pObj );
INT16 GetAutofireBonus( OBJECTTYPE * pObj );
INT16 GetAutoToHitBonus( OBJECTTYPE * pObj, BOOLEAN fProneStance = FALSE );
INT16 GetRateOfFireBonus( OBJECTTYPE * pObj );
INT16 GetBurstSizeBonus( OBJECTTYPE * pObj );
BOOLEAN HasFastBurst( OBJECTTYPE * pObj );
@@ -279,5 +279,11 @@ INT16 GetCamoBonus( OBJECTTYPE * pObj );
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
+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));
// 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 )
{
@@ -4295,7 +4296,7 @@ void MoveBullet( INT32 iBullet )
OBJECTTYPE Object;
INT32 iKnifeGridNo;
CreateItem( THROWING_KNIFE, (INT8) pBullet->ubItemStatus, &Object );
CreateItem( pBullet->fromItem, (INT8) pBullet->ubItemStatus, &Object );
// by default knife at same tile as window
iKnifeGridNo = (INT16) iGridNo;
+33 -11
View File
@@ -119,7 +119,7 @@ INT32 giPauseAllAITimer = 0;
BOOLEAN sniperwarning;
BOOLEAN biggunwarning;
BOOLEAN airstrikeavailable;
//BOOLEAN airstrikeavailable;
TacticalStatusType gTacticalStatus;
@@ -2073,21 +2073,26 @@ BOOLEAN HandleGotoNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving, BOOLE
// 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 ( gpWorldLevelData[ pSoldier->sGridNo ].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_TEARGAS )
{
if ( !(pSoldier->fHitByGasFlags & HIT_BY_TEARGAS) && bPosOfMask == NO_SLOT )
{
// check for gas mask
pExplosive = &(Explosive[ Item[ TEARGAS_GRENADE ].ubClassIndex ]);
pExplosive = &( Explosive[ Item[ GetFirstExplosiveOfType(EXPLOSV_TEARGAS) ].ubClassIndex ]);
}
}
if ( gpWorldLevelData[ pSoldier->sGridNo ].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_MUSTARDGAS )
{
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
{
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 )
@@ -5576,14 +5588,14 @@ void SetEnemyPresence( )
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence: warnings = false"));
sniperwarning = FALSE;
biggunwarning = FALSE;
airstrikeavailable = TRUE;
// airstrikeavailable = TRUE;
}
else
{
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence: warnings = true"));
sniperwarning = TRUE;
biggunwarning = TRUE;
airstrikeavailable = FALSE;
// airstrikeavailable = FALSE;
}
// 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 ))
{
// change back to single shot
pSoldier->bWeaponMode = WM_NORMAL;
pSoldier->bDoAutofire = 0;
pSoldier->bDoBurst = 0;
if ( !Weapon[pSoldier->inv[HANDPOS].usItem].NoSemiAuto )
{
// change back to single shot
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 );
}
+3 -3
View File
@@ -362,10 +362,10 @@ void SetSoldierNeutral( SOLDIERTYPE * pSoldier );
extern BOOLEAN sniperwarning;
extern BOOLEAN biggunwarning;
extern BOOLEAN airstrikeavailable;
//extern BOOLEAN airstrikeavailable;
void CheckForAndSetupAirRaid ();
void EnemyCallInAirStrike (INT16 sSectorX, INT16 sSectorY);
//void CheckForAndSetupAirRaid ();
//void EnemyCallInAirStrike (INT16 sSectorX, INT16 sSectorY);
// will a sam site under the players control shoot down an airraid?
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)));
}*/
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
// aps <- aps * ( 100 - red ) / 100
aps = ( aps * ( 100 - GetPercentAPReduction(pObj) ) + 50 ) / 100;
@@ -894,6 +895,7 @@ UINT8 CalcAPsToBurst( INT8 bBaseActionPoints, OBJECTTYPE * pObj )
if ( aps < 0 ) aps = 0;
else if ( aps > AP_MAXIMUM ) aps = AP_MAXIMUM;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcAPsToBurst: return aps = %d", 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: before bonus aps = %d, std bonus = %d, auto bonus = %d", aps,GetPercentAPReduction(pObj),GetPercentAutofireAPReduction(pObj)));
aps = ( aps * ( 100 - GetPercentAPReduction(pObj) ) + 50 ) / 100;
aps = __max( aps, ( autofireaps + 1 ) / 2 );
// 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;
else if ( aps > AP_MAXIMUM ) aps = AP_MAXIMUM;
}
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcAPsToAutoFire: return aps = %d", 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 = CalcActionPoints( pSoldier );
//bFullAPs = pSoldier->bInitialActionPoints;//CalcActionPoints( pSoldier ); //lal
// aim skill is the same whether we are using 1 or 2 guns
bAimSkill = CalcAimSkill( pSoldier, usItem );
+17 -17
View File
@@ -198,7 +198,7 @@ void ResetRain()
void GenerateRainDropsList()
{
guiCurrMaxAmountOfRainDrops = (UINT32)BASE_MAXIMUM_DROPS * gbCurrentRainIntensity;
guiCurrMaxAmountOfRainDrops = (UINT32)(BASE_MAXIMUM_DROPS * gbCurrentRainIntensity);
pRainDrops = (TRainDrop *)MemAlloc( sizeof( TRainDrop ) * guiCurrMaxAmountOfRainDrops );
memset( pRainDrops, 0, sizeof( TRainDrop ) * guiCurrMaxAmountOfRainDrops );
@@ -235,8 +235,8 @@ void CreateRainDrops()
BOOLEAN fLoopIsDone;
UINT32 uiIndRand;
fpCos = cos( DEGREE(fpCurrDropAngleOfFalling) );
fpSin = sin( DEGREE(fpCurrDropAngleOfFalling) );
fpCos = (FLOAT)(cos( DEGREE(fpCurrDropAngleOfFalling) ));
fpSin = (FLOAT)(sin( DEGREE(fpCurrDropAngleOfFalling) ));
if( fpCos )
fpAbsTg = fabs( fpSin / fpCos ); // take only absolute valuse
@@ -288,20 +288,20 @@ void CreateRainDrops()
if( uiIndex >= fpNumDropsToXBorder )
{
pCurr->fpX = gRainRegion.left + Random( gRainRegion.right - gRainRegion.left );
pCurr->fpY = gRainRegion.bottom - 1;
pCurr->fpX = (FLOAT)(gRainRegion.left + Random( gRainRegion.right - gRainRegion.left ));
pCurr->fpY = (FLOAT)(gRainRegion.bottom - 1);
}
else if( fpCos > 0 )
{
pCurr->fpX = gRainRegion.right - 1;
pCurr->fpY = gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top );
pCurr->fpX = (FLOAT)(gRainRegion.right - 1);
pCurr->fpY = (FLOAT)(gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ));
}else{
pCurr->fpX = 0;
pCurr->fpY = gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top );
pCurr->fpY = (FLOAT)(gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ));
}
}else{
pCurr->fpX = gRainRegion.left + Random( gRainRegion.right - gRainRegion.left );
pCurr->fpY = gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top );
pCurr->fpX = (FLOAT)(gRainRegion.left + Random( gRainRegion.right - gRainRegion.left ));
pCurr->fpY = (FLOAT)(gRainRegion.top + Random( gRainRegion.bottom - gRainRegion.top ));
}
pCurr->uiAmountOfTicksToLive = 0;
@@ -405,7 +405,7 @@ void RenderRainOnSurface()
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 );
@@ -427,35 +427,35 @@ void GenerateRainMaximums()
fpMaxDropAngleOfFalling = 160;
}
fpCurrDropAngleOfFalling = fpMinDropAngleOfFalling + Random( fpMaxDropAngleOfFalling - fpMinDropAngleOfFalling );
fpCurrDropAngleOfFalling = fpMinDropAngleOfFalling + Random( (UINT32)(fpMaxDropAngleOfFalling - fpMinDropAngleOfFalling) );
fpMinDropLength = MIN_DROP_LENGTH + ADD_DROP_LENGTH_IF_STORM * ( gbCurrentRainIntensity - 1 );
fpMaxDropLength = fpMinDropLength + DROP_LENGTH_RANGE;
fpCurrDropLength = fpMinDropLength + Random( fpMaxDropLength - fpMinDropLength );
fpCurrDropLength = fpMinDropLength + Random( (UINT32)(fpMaxDropLength - fpMinDropLength) );
fpMinDropSpeed = BASE_DROP_SPEED * gbCurrentRainIntensity;
fpMaxDropSpeed = fpMinDropSpeed + DROP_SPEED_RANGE;
fpCurrDropSpeed = fpMinDropSpeed + Random( fpMaxDropSpeed - fpMinDropSpeed );
fpCurrDropSpeed = fpMinDropSpeed + Random( (UINT32)(fpMaxDropSpeed - fpMinDropSpeed) );
}
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 = 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 = 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 = min( fpMaxDropSpeed, fpCurrDropSpeed );
+54 -1
View File
@@ -85,6 +85,14 @@
#include "overhead map.h"
#endif
//turnspeed
UINT8 gubPlayerTurnSpeedUpFactor = 1;
UINT8 gubEnemyTurnSpeedUpFactor = 1;
UINT8 gubCreatureTurnSpeedUpFactor = 1;
UINT8 gubMilitiaTurnSpeedUpFactor = 1;
UINT8 gubCivTurnSpeedUpFactor = 1;
//turnspeed
extern INT16 DirIncrementer[8];
#define PALETTEFILENAME "BINARYDATA\\ja2pal.dat"
@@ -495,6 +503,8 @@ INT8 CalcActionPoints(SOLDIERTYPE *pSold)
//if (GameOption[INCREASEDAP] % 2 == 1)
//points += AP_INCREASE;
//Madd: Add in AP Bonuses (Penalties) from worn gear
ubPoints += GetGearAPBonus ( pSold );
// Calculate bandage
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
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 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 )
{
@@ -5895,6 +5937,11 @@ void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier )
//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....
// ( 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->bWeaponMode = WM_NORMAL;
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 )
{
+1
View File
@@ -331,6 +331,7 @@ enum
HIT_BY_TEARGAS = 0x01,
HIT_BY_MUSTARDGAS = 0x02,
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 *pFileName4 = "BINARYDATA\\Prof4.dat";
UINT32 uiLoop, uiLoop2, uiLoop3;
UINT16 usItem, usNewGun, usAmmo, usNewAmmo;
UINT32 uiLoop, uiLoop2;//, uiLoop3;
UINT16 usItem;//, usNewGun, usAmmo, usNewAmmo;
UINT32 uiNumBytesRead;
switch ( gGameOptions.ubDifficultyLevel)
@@ -275,7 +275,7 @@ BOOLEAN LoadMercProfiles(void)
// Setup face index value
// Default is the ubCharNum
gMercProfiles[uiLoop].ubFaceIndex = (UINT8)uiLoop;
/*
if ( !gGameOptions.fGunNut )
{
@@ -311,7 +311,7 @@ BOOLEAN LoadMercProfiles(void)
}
} // end of if not gun nut
*/
//ATE: Calculate some inital attractiveness values for buddy's inital equipment...
// Look for gun and armour
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....
if ( MercPtrs[ gusSelectedSoldier ]->bLife < OKLIFE )
{
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("StartPlayerTeamTurn: SelectNextAvailSoldier"));
SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] );
}
@@ -924,6 +925,7 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
// Select soldier....
if ( MercPtrs[ ubInterruptedSoldier ]->bLife < OKLIFE )
{
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EndInterrupt: SelectNextAvailSoldier"));
SelectNextAvailSoldier( MercPtrs[ ubInterruptedSoldier ] );
}
else
+123 -42
View File
@@ -45,7 +45,7 @@
#endif
//rain
#define WEAPON_RELIABILITY_REDUCTION_PER_RAIN_INTENSITY 9
#define WEAPON_RELIABILITY_REDUCTION_PER_RAIN_INTENSITY 0
extern INT8 gbCurrentRainIntensity;
//end rain
@@ -283,7 +283,7 @@ EXPLOSIVETYPE Explosive[MAXITEMS+1];// =
//};
INT8 gzBurstSndStrings[MAXITEMS][30];// =
INT8 gzBurstSndStrings[MAXITEMS*2][128];// =
//{
// "", // NOAMMO
// "", // 38
@@ -383,14 +383,18 @@ weaponStartElementHandle(void *userData, const char *name, const char **atts)
strcmp(name, "ubHitVolume") == 0 ||
strcmp(name, "sSound") == 0 ||
strcmp(name, "sBurstSound") == 0 ||
strcmp(name, "sSilencedBurstSound") == 0 ||
strcmp(name, "sReloadSound") == 0 ||
strcmp(name, "sLocknLoadSound") == 0 ||
strcmp(name, "bBurstAP") == 0 ||
strcmp(name, "bAutofireShotsPerFiveAP") == 0 ||
strcmp(name, "APsToReload") == 0 ||
strcmp(name, "SwapClips") == 0 ||
strcmp(name, "AutoPenalty") == 0 ||
strcmp(name, "NoSemiAuto") == 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;
@@ -545,6 +549,11 @@ weaponEndElementHandle(void *userData, const char *name)
pData->curElement = WEAPON_ELEMENT_WEAPON;
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)
{
pData->curElement = WEAPON_ELEMENT_WEAPON;
@@ -573,18 +582,36 @@ weaponEndElementHandle(void *userData, const char *name)
else if(strcmp(name, "SilencedSound") == 0)
{
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)
{
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)
{
pData->curElement = WEAPON_ELEMENT_WEAPON;
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--;
}
@@ -731,6 +758,7 @@ BOOLEAN ReadInWeaponStats(STR fileName)
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<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<sLocknLoadSound>%d</sLocknLoadSound>\r\n", Weapon[cnt].sLocknLoadSound);
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<usRange>%d</usRange>\r\n", Weapon[cnt].usRange);
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<ubHitVolume>%d</ubHitVolume>\r\n", Weapon[cnt].ubHitVolume);
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<sSilencedBurstSound>%d</sSilencedBurstSound>\r\n", Weapon[cnt].sSilencedBurstSound);
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<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<SwapClips>%d</SwapClips>\r\n", Weapon[cnt].swapClips );
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;
}
return( iValue );
return( max(iValue,1) );
}
INT32 ArmourPercent( SOLDIERTYPE * pSoldier )
@@ -993,7 +1025,7 @@ INT32 ExplosiveEffectiveArmour( OBJECTTYPE * pObj )
iValue += iValue2;
}
return( iValue );
return( max(iValue,1) );
}
INT8 ArmourVersusExplosivesPercent( SOLDIERTYPE * pSoldier )
@@ -1064,7 +1096,6 @@ void AdjustImpactByHitLocation( INT32 iImpact, UINT8 ubHitLocation, INT32 * piNe
//rain
extern INT8 gbCurrentRainIntensity;
//end rain
BOOLEAN CheckForGunJam( SOLDIERTYPE * pSoldier )
{
OBJECTTYPE * pObj;
@@ -1096,7 +1127,7 @@ BOOLEAN CheckForGunJam( SOLDIERTYPE * pSoldier )
//iChance = iChance * (10 - Item[pObj->usItem].bReliability * 2) / 10;
//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
if (pSoldier->bDoBurst > 1)
@@ -1130,7 +1161,7 @@ BOOLEAN CheckForGunJam( SOLDIERTYPE * pSoldier )
else if (pObj->bGunAmmoStatus < 0)
{
// 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)
{
// 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 )
{
// 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...
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
{
// 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;
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
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) )
{
@@ -2929,7 +2965,7 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT8 bWeaponStatus, UINT
if ( usStructureID == INVALID_STRUCTURE_ID )
{
// Add item
CreateItem( THROWING_KNIFE, bWeaponStatus, &Object );
CreateItem( usWeaponIndex, bWeaponStatus, &Object );
AddItemToPool( sGridNo, &Object, -1 , 0, 0, -1 );
@@ -3209,7 +3245,7 @@ BOOLEAN InRange( SOLDIERTYPE *pSoldier, INT16 sGridNo )
if ( Item[ usInHand ].usItemClass == IC_THROWING_KNIFE )
{
// 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 );
}
@@ -3230,9 +3266,9 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
{
//SOLDIERTYPE *vicpSoldier;
SOLDIERTYPE * pTarget;
INT32 iChance, iRange, iSightRange, iMaxRange, iBonus; //, minRange;
//rain
//INT32 iChance, iRange, iSightRange, iMaxRange, iBonus; //, minRange;
INT32 iChance, iRange, iSightRange, iMaxRange, iScopeBonus, iBonus; //, minRange;
//INT32 iScopeBonus;
//end rain
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 ].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)
{
// firing with pistol in right hand, and second hand empty.
iChance += AIM_BONUS_TWO_HANDED_PISTOL;
// firing with gun in right hand, and second hand empty (ie: no grenade, med kit or anything there)
// 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 */
if ( !HAS_SKILL_TRAIT( pSoldier, AMBIDEXT ) )
else
{
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_DUAL_PISTOLS;
iChance -= AIM_PENALTY_SMG;
}
/*
else
if ( !HAS_SKILL_TRAIT( pSoldier, AMBIDEXT ) )
{
// penalty to aim with pistol being fired one-handed
iChance -= AIM_PENALTY_ONE_HANDED_PISTOL;
if ( IsValidSecondHandShot( pSoldier ) )
{
// 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;
}
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 );
@@ -3497,7 +3553,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
//rain
// 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
// // 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)
iSightRange -= GetAimBonus( pInHand, iRange, ubAimTime );
if (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);
// Apply flat to-hit bonus (e.g. from laser scope)
// Snap: If prone and range is good, apply bipod bonus here as well
iChance += GetToHitBonus( pInHand, iSightRange, bLightLevel,
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
@@ -3838,6 +3902,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, UINT16 sGridNo, UINT8 ubAimTime
}
// NumMessage("ChanceToHit = ",chance);
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CalcChanceToHitGun: ichance = %d",iChance));
return (iChance);
}
@@ -4920,13 +4985,13 @@ BOOLEAN IsGunWeaponModeCapable( SOLDIERTYPE *pSoldier, UINT8 ubHandPos , UINT8 b
switch(bWpnMode)
{
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:
return IsGunBurstCapable(pSoldier, ubHandPos, FALSE);
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:
// 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++;
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);
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;
}
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 )
{
// DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("GetAutofireShotsPerFiveAPs"));
return Weapon[ pObj->usItem ].bAutofireShotsPerFiveAP + GetAutofireBonus(pObj);
return Weapon[ pObj->usItem ].bAutofireShotsPerFiveAP;
}
UINT8 GetMagSize( OBJECTTYPE *pObj )
@@ -5444,3 +5524,4 @@ INT8 GetAPsToReload( OBJECTTYPE *pObj )
( 100 - GetPercentReloadTimeAPReduction(pObj) ) + 50 ) / 100;
}
+9 -4
View File
@@ -178,7 +178,8 @@ enum
EXPLOSV_FLARE,
EXPLOSV_NOISE,
EXPLOSV_SMOKE,
EXPLOSV_CREATUREGAS,
EXPLOSV_CREATUREGAS,
EXPLOSV_BURNABLEGAS,
};
#define AMMO_DAMAGE_ADJUSTMENT_BUCKSHOT( x ) (x / 4)
@@ -250,6 +251,7 @@ typedef struct
UINT8 ubHitVolume;
UINT16 sSound;
UINT16 sBurstSound;
UINT16 sSilencedBurstSound;
UINT16 sReloadSound;
UINT16 sLocknLoadSound;
UINT8 bBurstAP; // Snap: Burst AP cost replaces bBaseAutofireCost
@@ -259,12 +261,14 @@ typedef struct
UINT32 uiIndex;
BOOLEAN swapClips;
UINT8 silencedSound;
UINT16 silencedSound;
UINT8 APsToReload;
UINT8 maxdistformessydeath;
BOOLEAN NoSemiAuto;
UINT8 AutoPenalty;
INT16 sAniDelay; // Lesh: for burst animation delay
} WEAPONTYPE;
typedef struct
{
UINT8 ubCalibre;
@@ -302,7 +306,7 @@ extern WEAPONTYPE Weapon[ MAXITEMS ];
extern ARMOURTYPE Armour[MAXITEMS+1];
extern MAGTYPE Magazine[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];
@@ -353,6 +357,7 @@ UINT8 GetDamage ( OBJECTTYPE *pObj );
UINT8 GetAutofireShotsPerFiveAPs( OBJECTTYPE *pObj );
UINT8 GetBaseAutoFireCost( OBJECTTYPE *pObj );
UINT8 GetBurstPenalty( OBJECTTYPE *pObj, BOOLEAN fProneStance = FALSE );
UINT8 GetAutoPenalty( OBJECTTYPE *pObj, BOOLEAN fProneStance = FALSE );
UINT8 GetShotsPerBurst( OBJECTTYPE *pObj );
UINT8 GetMagSize( OBJECTTYPE *pObj );
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
continue;
}
/*
if ( !gGameOptions.fGunNut )
{
UINT16 usReplacement;
@@ -458,6 +458,8 @@ void LoadWorldItemsFromMap( INT8 **hBuffer )
}
}
}
*/
}
if( dummyItem.o.usItem == ACTION_ITEM && gfLoadPitsWithoutArming )
{ //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 AMMOCALIBERSTRINGSFILENAME "AmmoCaliberStrings.xml"
#define SOUNDSFILENAME "Sounds.xml"
#define BURSTSOUNDSFILENAME "BurstSounds.xml"
#define CITYTABLEFILENAME "Cities.xml"
@@ -117,4 +118,8 @@ extern BOOLEAN ReadInSoundArray(STR fileName);
extern BOOLEAN ReadInAmmoTypeStats(STR fileName);
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 );
}
}
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);
}
+17
View File
@@ -1702,6 +1702,10 @@ BOOLEAN InWaterGasOrSmoke( SOLDIERTYPE *pSoldier, INT16 sGridNo )
{
return( TRUE );
}
if ( gpWorldLevelData[sGridNo].ubExtFlags[ pSoldier->bLevel ] & MAPELEMENT_EXT_BURNABLEGAS )
{
return( TRUE );
}
return(FALSE);
}
@@ -1722,6 +1726,10 @@ BOOLEAN InGasOrSmoke( SOLDIERTYPE *pSoldier, INT16 sGridNo )
{
return( TRUE );
}
if ( gpWorldLevelData[sGridNo].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_BURNABLEGAS )
{
return( TRUE );
}
return(FALSE);
}
@@ -1740,6 +1748,10 @@ INT16 InWaterOrGas(SOLDIERTYPE *pSoldier, INT16 sGridNo)
{
return( TRUE );
}
if ( gpWorldLevelData[sGridNo].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_BURNABLEGAS )
{
return( TRUE );
}
return(FALSE);
}
@@ -1752,6 +1764,10 @@ BOOLEAN InGas( SOLDIERTYPE *pSoldier, INT16 sGridNo )
{
return( TRUE );
}
if ( gpWorldLevelData[sGridNo].ubExtFlags[pSoldier->bLevel] & MAPELEMENT_EXT_BURNABLEGAS )
{
return( TRUE );
}
return(FALSE);
}
@@ -2350,6 +2366,7 @@ UINT8 SoldierDifficultyLevel( SOLDIERTYPE * pSoldier )
INT8 bDifficultyBase;
INT8 bDifficulty;
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("SoldierDifficultyLevel"));
// difficulty modifier ranges from 0 to 100
// 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
+50 -28
View File
@@ -164,8 +164,12 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN shootUns
#endif
// calculate minimum action points required to shoot at this opponent
ubMinAPcost = MinAPsToAttack(pSoldier,pOpponent->sGridNo,ADDTURNCOST);
//NumMessage("MinAPcost to shoot this opponent = ",ubMinAPcost);
if ( !Weapon[pSoldier->usAttackingWeapon].NoSemiAuto )
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 (ubMinAPcost > pSoldier->bActionPoints)
@@ -252,31 +256,43 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN shootUns
}
// consider the various aiming times
for (ubAimTime = AP_MIN_AIM_ATTACK; ubAimTime <= ubMaxPossibleAimTime; ubAimTime++)
{
//HandleMyMouseCursor(KEYBOARDALSO);
if ( !Weapon[pSoldier->usAttackingWeapon].NoSemiAuto )
{
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);
// ExtMen[pOpponent->ubID].haveStats = TRUE;
//NumMessage("chance to Hit = ",ubChanceToHit);
ubChanceToHit = (UINT8) AICalcChanceToHitGun(pSoldier,pOpponent->sGridNo,ubAimTime, AIM_SHOT_TORSO);
// ExtMen[pOpponent->ubID].haveStats = TRUE;
//NumMessage("chance to Hit = ",ubChanceToHit);
//sprintf((CHAR *)tempstr,"Vs. %s, at AimTime %d, ubChanceToHit = %d",ExtMen[pOpponent->ubID].name,ubAimTime,ubChanceToHit);
//PopMessage(tempstr);
//sprintf((CHAR *)tempstr,"Vs. %s, at AimTime %d, ubChanceToHit = %d",ExtMen[pOpponent->ubID].name,ubAimTime,ubChanceToHit);
//PopMessage(tempstr);
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
//NumMessage("hitRate = ",iHitRate);
iHitRate = (pSoldier->bActionPoints * ubChanceToHit) / (ubRawAPCost + ubAimTime);
//NumMessage("hitRate = ",iHitRate);
// if aiming for this amount of time produces a better hit rate
if (iHitRate > iBestHitRate)
{
iBestHitRate = iHitRate;
ubBestAimTime = ubAimTime;
ubBestChanceToHit = ubChanceToHit;
}
}
// if aiming for this amount of time produces a better hit rate
if (iHitRate > iBestHitRate)
{
iBestHitRate = iHitRate;
ubBestAimTime = ubAimTime;
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 (iBestHitRate == 0)
@@ -290,7 +306,7 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN shootUns
continue; // next opponent
// 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
// 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 ( 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 ||
gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & (MAPELEMENT_EXT_TEARGAS | MAPELEMENT_EXT_MUSTARDGAS) ||
gpWorldLevelData[ sGridNo ].ubExtFlags[ bOpponentLevel[ubLoop] ] & 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_BURNABLEGAS)
{
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)
{
// 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 )
// 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 (pBestShot->bWeaponIn != HANDPOS)
{
@@ -2347,7 +2369,7 @@ void CheckIfShotPossible(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot, BOOLEAN s
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
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CheckIfShotPossible: getting min aps");
+39 -14
View File
@@ -20,7 +20,7 @@
#include "pathai.h"
#include "Render Fun.h"
#include "Boxing.h"
#include "Air Raid.h"
// #include "Air Raid.h"
#endif
extern BOOLEAN InternalIsValidStance( SOLDIERTYPE *pSoldier, INT8 bDirection, INT8 bNewStance );
@@ -934,6 +934,11 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier)
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
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
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 )
{
@@ -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);
if ((INT16)PreRandom(100) < iChance)
@@ -2209,7 +2221,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK)
}
while( pSoldier->bActionPoints - (BestShot.ubAPCost - BestShot.ubAimTime) > ubBurstAPs &&
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--;
@@ -2236,7 +2248,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK)
}
// suppression not possible, do something else
}
/*
// 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))
{
@@ -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");
////////////////////////////////////////////////////////////////////////
@@ -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 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)
@@ -3290,7 +3308,9 @@ INT8 DecideActionBlack(SOLDIERTYPE *pSoldier)
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;
@@ -4144,7 +4164,7 @@ bCanAttack = FALSE;
}
else
{
iChance = (25 / (BestAttack.ubAimTime + 1));
iChance = (25 / max((BestAttack.ubAimTime + 1),1));
switch (pSoldier->bAttitude)
{
case DEFENSIVE: iChance += -5; break;
@@ -4162,6 +4182,7 @@ bCanAttack = FALSE;
// increase chance based on proximity and difficulty of enemy
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 ) );
if ( pSoldier->bAttitude == ATTACKSLAYONLY )
{
@@ -4190,8 +4211,8 @@ bCanAttack = FALSE;
if (IsGunAutofireCapable( pSoldier, BestAttack.bWeaponIn /*, FALSE*/ ) &&
!(Menptr[BestShot.ubOpponent].bLife < OKLIFE) && // don't burst at downed targets
pSoldier->inv[BestAttack.bWeaponIn].ubGunShotsLeft > 1 &&
BestAttack.ubAimTime != BURSTING)
(( pSoldier->inv[BestAttack.bWeaponIn].ubGunShotsLeft > 1 &&
BestAttack.ubAimTime != BURSTING ) || Weapon[pSoldier->inv[BestAttack.bWeaponIn].usItem].NoSemiAuto) )
{
pSoldier->bDoAutofire = 0;
do
@@ -4201,7 +4222,7 @@ bCanAttack = FALSE;
}
while( pSoldier->bActionPoints - (BestAttack.ubAPCost - BestAttack.ubAimTime) > ubBurstAPs &&
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
{
iChance = (100 / (BestAttack.ubAimTime + 1));
iChance = (100 / max((BestAttack.ubAimTime + 1),1));
switch (pSoldier->bAttitude)
{
case DEFENSIVE: iChance += -5; break;
@@ -4236,6 +4257,7 @@ bCanAttack = FALSE;
// increase chance based on proximity and difficulty of enemy
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 ) );
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.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;
}
// 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 ) );
}
@@ -4619,8 +4642,10 @@ bCanAttack = FALSE;
// if there hasn't been an initial RED ALERT yet in this sector
if ( !(gTacticalStatus.Team[pSoldier->bTeam].bAwareOfOpposition) || NeedToRadioAboutPanicTrigger() )
// since I'm at STATUS RED, I obviously know we're being invaded!
iChance = gbDiff[DIFF_RADIO_RED_ALERT][ SoldierDifficultyLevel( pSoldier ) ];
{ // since I'm at STATUS RED, I obviously know we're being invaded!
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)
// 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
+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,
UINT32 uiThreatIndex, INT32 iRange, INT32 morale, INT32 *iTotalScale)
{
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("CalcCoverValue"));
// all 32-bit integers for max. speed
INT32 iMyPosValue, iHisPosValue, iCoverValue;
INT32 iReductionFactor, iThisScale;
@@ -523,6 +525,8 @@ UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT16 sGridNo )
INT16 FindBestNearbyCover(SOLDIERTYPE *pSoldier, INT32 morale, INT32 *piPercentBetter)
{
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("FindBestNearbyCover"));
// all 32-bit integers for max. speed
UINT32 uiLoop;
INT32 iCurrentCoverValue, iCoverValue, iBestCoverValue;
@@ -1648,6 +1652,8 @@ INT16 FindNearbyDarkerSpot( SOLDIERTYPE *pSoldier )
INT8 SearchForItems( SOLDIERTYPE * pSoldier, INT8 bReason, UINT16 usItem )
{
DebugMsg(TOPIC_JA2AI,DBG_LEVEL_3,String("SearchForItems"));
INT32 iSearchRange;
INT16 sMaxLeft, sMaxRight, sMaxUp, sMaxDown, sXOffset, sYOffset;
INT16 sGridNo;
+31 -22
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++"
Version="7.10"
Name="TacticalAI"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA"
SccLocalPath="..\..\..\ja2\build">
SccProjectName=""
SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms>
<Platform
Name="Win32"/>
@@ -21,8 +23,8 @@
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\laptop"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
@@ -37,7 +39,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -75,7 +77,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -91,7 +93,8 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -128,7 +131,7 @@
<Tool
Name="VCCLCompilerTool"
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"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
@@ -141,7 +144,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
@@ -179,8 +182,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\laptop"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="AI All.h"
@@ -192,7 +195,8 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -230,7 +234,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -246,7 +250,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -283,8 +287,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\laptop"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="AI All.h"
@@ -296,7 +300,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -333,8 +337,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\Utils,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\laptop"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\Utils;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="AI All.h"
@@ -346,7 +350,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -383,8 +387,13 @@
<Tool
Name="VCCLCompilerTool"
Optimization="2"
GlobalOptimizations="TRUE"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -398,7 +407,7 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
+25 -2
View File
@@ -81,6 +81,7 @@ UINT8 ubTransKeyFrame[ NUM_EXP_TYPES ] =
1,
1,
1,
1,
};
UINT8 ubDamageKeyFrame[ NUM_EXP_TYPES ] =
@@ -94,6 +95,7 @@ UINT8 ubDamageKeyFrame[ NUM_EXP_TYPES ] =
18,
18,
18,
18,
};
@@ -108,6 +110,7 @@ UINT32 uiExplosionSoundID[ NUM_EXP_TYPES ] =
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\\MUST_EXP.STI",
"TILECACHE\\FLAM_EXP.STI",
};
CHAR8 sBlastSpeeds[] =
@@ -135,6 +139,8 @@ CHAR8 sBlastSpeeds[] =
80,
80,
80,
80,
80,
};
#define BOMB_QUEUE_DELAY (1000 + Random( 500 ) )
@@ -1325,7 +1331,7 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN
return( fRecompileMovementCosts );
}
if ( pExplosive->ubType == EXPLOSV_CREATUREGAS )
if ( pExplosive->ubType == EXPLOSV_CREATUREGAS || pExplosive->ubType == EXPLOSV_BURNABLEGAS)
{
if ( pSoldier->uiStatusFlags & SOLDIER_MONSTER )
{
@@ -1337,6 +1343,12 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN
// already affected by creature gas this turn
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
// ATE/CJC: gas stuff
@@ -1446,6 +1458,9 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN
case EXPLOSV_MUSTGAS:
pSoldier->fHitByGasFlags |= HIT_BY_MUSTARDGAS;
break;
case EXPLOSV_BURNABLEGAS:
pSoldier->fHitByGasFlags |= HIT_BY_BURNABLEGAS;
break;
default:
break;
}
@@ -1502,6 +1517,13 @@ BOOLEAN ExpAffect( INT16 sBombGridNo, INT16 sGridNo, UINT32 uiDist, UINT16 usIte
fBlastEffect = FALSE;
break;
case EXPLOSV_BURNABLEGAS:
fSmokeEffect = TRUE;
bSmokeEffectType = BURNABLEGAS_SMOKE_EFFECT;
fBlastEffect = FALSE;
break;
case EXPLOSV_TEARGAS:
fSmokeEffect = TRUE;
@@ -2118,6 +2140,7 @@ void SpreadEffect( INT16 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner,
{
case EXPLOSV_MUSTGAS:
case EXPLOSV_BURNABLEGAS:
case EXPLOSV_TEARGAS:
case EXPLOSV_SMOKE:
case EXPLOSV_CREATUREGAS:
@@ -3529,4 +3552,4 @@ void RemoveAllActiveTimedBombs( void )
}
} while( iItemIndex != -1 );
}
}
+1 -1
View File
@@ -55,7 +55,7 @@ enum EXPLOSION_TYPES
TARGAS_EXP,
SMOKE_EXP,
MUSTARD_EXP,
BURN_EXP,
NUM_EXP_TYPES
} ;
+1 -1
View File
@@ -215,4 +215,4 @@ BOOLEAN SaveShadeTable( HVOBJECT pObj, UINT32 uiTileTypeIndex )
BOOLEAN DeleteShadeTableDir( )
{
return( RemoveFileManDirectory( SHADE_TABLE_DIR, TRUE ) );
}
}
+35
View File
@@ -109,6 +109,10 @@ INT8 FromWorldFlagsToSmokeType( UINT8 ubWorldFlags )
{
return( MUSTARDGAS_SMOKE_EFFECT );
}
else if ( ubWorldFlags & MAPELEMENT_EXT_BURNABLEGAS )
{
return( BURNABLEGAS_SMOKE_EFFECT );
}
else if ( ubWorldFlags & MAPELEMENT_EXT_CREATUREGAS )
{
return( CREATURE_SMOKE_EFFECT );
@@ -139,6 +143,11 @@ UINT8 FromSmokeTypeToWorldFlags( INT8 bType )
return( MAPELEMENT_EXT_MUSTARDGAS );
break;
case BURNABLEGAS_SMOKE_EFFECT:
return( MAPELEMENT_EXT_BURNABLEGAS );
break;
case CREATURE_SMOKE_EFFECT:
return( MAPELEMENT_EXT_CREATUREGAS );
@@ -188,6 +197,13 @@ INT32 NewSmokeEffect( INT16 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner )
ubStartRadius = Explosive[ Item[ usItem ].ubClassIndex ].ubStartRadius;
break;
case EXPLOSV_BURNABLEGAS:
bSmokeEffectType = BURNABLEGAS_SMOKE_EFFECT;
ubDuration = Explosive[ Item[ usItem ].ubClassIndex ].ubDuration;
ubStartRadius = Explosive[ Item[ usItem ].ubClassIndex ].ubStartRadius;
break;
case EXPLOSV_TEARGAS:
bSmokeEffectType = TEARGAS_SMOKE_EFFECT;
ubDuration = Explosive[ Item[ usItem ].ubClassIndex ].ubDuration;
@@ -377,6 +393,25 @@ void AddSmokeEffectToTile( INT32 iSmokeEffectID, INT8 bType, INT16 sGridNo, INT8
}
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:
if ( !( gGameSettings.fOptions[ TOPTION_ANIMATE_SMOKE ] ) )
+2 -1
View File
@@ -9,7 +9,8 @@ enum
NORMAL_SMOKE_EFFECT,
TEARGAS_SMOKE_EFFECT,
MUSTARDGAS_SMOKE_EFFECT,
CREATURE_SMOKE_EFFECT,
CREATURE_SMOKE_EFFECT,
BURNABLEGAS_SMOKE_EFFECT,
};
#define SMOKE_EFFECT_INDOORS 0x01
+4 -2
View File
@@ -540,8 +540,10 @@ void UpdateAniTiles( )
ubExpType = Explosive[ Item[ (UINT16)pNode->uiUserData ].ubClassIndex ].ubType;
if ( ubExpType == EXPLOSV_TEARGAS || ubExpType == EXPLOSV_MUSTGAS ||
ubExpType == EXPLOSV_SMOKE )
// if ( ubExpType == EXPLOSV_TEARGAS || ubExpType == EXPLOSV_MUSTGAS ||
// ubExpType == EXPLOSV_SMOKE )
if ( ubExpType == EXPLOSV_TEARGAS || ubExpType == EXPLOSV_MUSTGAS ||
ubExpType == EXPLOSV_SMOKE || ubExpType == EXPLOSV_BURNABLEGAS )
{
// Do sound....
// 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,
P1ITEM5000 - P1ITEM1 + 1,
P2ITEM45 - P2ITEM1 + 1,
P2ITEM5000 - P2ITEM1 + 1,
WINDOWSHATTER20 - WINDOWSHATTER1 + 1,
P3ITEM16 - P3ITEM1 + 1,
P3ITEM5000 - P3ITEM1 + 1,
BODYEXPLOSION15 - BODYEXPLOSION1 + 1,
EXITTEXTURE35 - EXITTEXTURE1 + 1,
+11
View File
@@ -2615,6 +2615,12 @@ enum TileDefines
P2ITEM43,
P2ITEM44,
P2ITEM45,
P2ITEM46,
P2ITEM47,
P2ITEM48,
P2ITEM49,
P2ITEM50,
P2ITEM5000 = P2ITEM50 + 4950,
WINDOWSHATTER1,
WINDOWSHATTER2,
@@ -2653,6 +2659,11 @@ enum TileDefines
P3ITEM14,
P3ITEM15,
P3ITEM16,
P3ITEM17,
P3ITEM18,
P3ITEM19,
P3ITEM20,
P3ITEM5000 = P3ITEM20 + 4980,
BODYEXPLOSION1,
BODYEXPLOSION2,
+39 -95
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++"
Version="7.10"
Name="TileEngine"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA"
SccLocalPath="..\..\..\ja2\build">
SccProjectName=""
SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms>
<Platform
Name="Win32"/>
@@ -20,8 +22,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="TileEngine All.h"
@@ -33,7 +35,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -70,8 +72,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="TileEngine All.h"
@@ -83,7 +85,8 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -121,8 +124,13 @@
Name="VCCLCompilerTool"
AdditionalOptions="/O2b2 "
Optimization="2"
GlobalOptimizations="TRUE"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -136,7 +144,7 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -175,7 +183,7 @@
AdditionalOptions="/O2b2 "
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -190,12 +198,14 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Release with Debug\TileEngine.lib"
AdditionalLibraryDirectories=""
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"/>
@@ -227,8 +237,8 @@
<Tool
Name="VCCLCompilerTool"
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"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\;..\Tactical;..\Utils;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="TileEngine All.h"
@@ -240,7 +250,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -277,7 +287,7 @@
<Tool
Name="VCCLCompilerTool"
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"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
@@ -290,7 +300,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
@@ -330,7 +340,7 @@
AdditionalOptions="/O2b2 "
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -345,7 +355,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -384,8 +394,8 @@
AdditionalOptions="/O2b2 "
Optimization="2"
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"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
@@ -399,7 +409,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -1409,79 +1419,7 @@
</FileConfiguration>
</File>
<File
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>
RelativePath=".\physics.cpp">
</File>
<File
RelativePath="pits.cpp">
@@ -3080,6 +3018,9 @@
<File
RelativePath="Exit Grids.h">
</File>
<File
RelativePath=".\Explosion Control.h">
</File>
<File
RelativePath="Fog Of War.h">
</File>
@@ -3095,6 +3036,9 @@
<File
RelativePath="Map Edgepoints.h">
</File>
<File
RelativePath=".\physics.h">
</File>
<File
RelativePath="pits.h">
</File>
+1 -1
View File
@@ -740,7 +740,7 @@ INT32 iDx, iDy;
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;
INT32 iSum;
+1 -1
View File
@@ -168,7 +168,7 @@ BOOLEAN CreateSoldierShadedPalette( SOLDIERTYPE *pSoldier, UINT32 uiBase, SGPPa
UINT16 CreateSoldierPaletteTables(SOLDIERTYPE *pSoldier, UINT32 uiType);
// 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
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
// Alrighty, move this beast until it dies....
while( pObject->fAlive)
while( pObject->fAlive )
{
//cnt = cnt + 1;
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CalculateObjectTrajectory: calling SIMULATEobject - this object never fucking dies!!!!");
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3, String( "Counter: %d", cnt));
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CalculateObjectTrajectory: calling simulateobject - this object never fucking dies!!!!");
SimulateObject( pObject, (float)DELTA_T );
}
+1 -1
View File
@@ -2862,7 +2862,7 @@ UINT32 cnt = 0;
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
zVal = gpZBuffer[ cnt ];
+3 -2
View File
@@ -95,12 +95,13 @@
#define MAPELEMENT_EXT_NOBURN_STRUCT 0x20
#define MAPELEMENT_EXT_ROOFCODE_VISITED 0x40
#define MAPELEMENT_EXT_CREATUREGAS 0x80
#define MAPELEMENT_EXT_BURNABLEGAS 0x81
#define FIRST_LEVEL 0
#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
+1 -1
View File
@@ -25,7 +25,7 @@
#define GROUP_PLAYER 1000
#define GROUP_AMBIENT 0
#define MAX_SAMPLES 5000
#define MAX_SAMPLES 10000
// SOUNDS ENUMERATION
+2
View File
@@ -320,6 +320,8 @@ enum
STR_BLOODCATS_TURN,
STR_AUTOFIRE,
STR_NO_AUTOFIRE,
STR_ACCURATE,
STR_INACCURATE
};
#define LARGE_STRING_LENGTH 200
+38 -317
View File
@@ -3,8 +3,10 @@
ProjectType="Visual C++"
Version="7.10"
Name="Utils"
SccProjectName="&quot;$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build&quot;, AVAAAAAA"
SccLocalPath="..\..\..\ja2\build">
SccProjectName=""
SccAuxPath=""
SccLocalPath=""
SccProvider="">
<Platforms>
<Platform
Name="Win32"/>
@@ -21,7 +23,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -37,7 +39,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -74,7 +76,7 @@
<Tool
Name="VCCLCompilerTool"
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"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
@@ -87,7 +89,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
@@ -125,8 +127,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\ja2\build\communications,\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\editor"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Utils All.h"
@@ -138,7 +140,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -175,8 +177,13 @@
<Tool
Name="VCCLCompilerTool"
Optimization="2"
GlobalOptimizations="TRUE"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -190,7 +197,7 @@
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="TRUE"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -228,7 +235,7 @@
Name="VCCLCompilerTool"
Optimization="2"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
@@ -244,7 +251,8 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292;4189"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -281,8 +289,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\ja2\build\communications,\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\editor"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;_VTUNE_PROFILING;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Utils All.h"
@@ -294,7 +302,8 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"
DisableSpecificWarnings="4292"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -331,8 +340,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="\ja2\build\communications,\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\editor"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
AdditionalIncludeDirectories="&quot;..\Standard Gaming Platform&quot;;..\TileEngine;..\;..\Tactical;..\tacticalai;..\Editor;..\strategic;..\Laptop;.\"
PreprocessorDefinitions="_DEBUG;BOUNDS_CHECKER;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS;XML_STATIC;CINTERFACE"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Utils All.h"
@@ -344,7 +353,7 @@
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="1"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -382,8 +391,8 @@
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="\ja2\Build\Communications,\Standard Gaming Platform,\ja2\Build,\ja2\Build\Tactical,\ja2\Build\TileEngine,\ja2\build\strategic,\ja2\build\editor"
PreprocessorDefinitions="RELEASE_WITH_DEBUG_INFO;NDEBUG;JA2DEMO;CALLBACKTIMER;WIN32;_WINDOWS;JA2;PRECOMPILEDHEADERS"
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"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
@@ -398,7 +407,7 @@
WarningLevel="4"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
CompileAs="2"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
@@ -1783,79 +1792,7 @@
</FileConfiguration>
</File>
<File
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>
RelativePath=".\INIReader.cpp">
</File>
<File
RelativePath="MapUtility.cpp">
@@ -3133,234 +3070,18 @@
</FileConfiguration>
</File>
<File
RelativePath="XML_Items.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>
RelativePath=".\XML_Strings.cpp">
</File>
<File
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
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>
RelativePath=".\XML_Strings2.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;fi;fd">
<File
RelativePath=".\_Ja25EnglishText.h">
</File>
<File
RelativePath="_Ja25GermanText.h">
</File>
@@ -3386,7 +3107,7 @@
RelativePath="Font Control.h">
</File>
<File
RelativePath="INIReader.h">
RelativePath=".\INIReader.h">
</File>
<File
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, "PercentAutofireAPReduction") == 0 ||
strcmp(name, "PercentBurstFireAPReduction") == 0 ||
strcmp(name, "AutoFireBonus") == 0 ||
strcmp(name, "AutoFireToHitBonus") == 0 ||
strcmp(name, "APBonus") == 0 ||
strcmp(name, "RateOfFireBonus") == 0 ||
strcmp(name, "BurstSizeBonus") == 0 ||
strcmp(name, "PercentReadyTimeAPReduction") == 0 ||
@@ -569,10 +570,15 @@ itemEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT;
pData->curItem.percentburstfireapreduction = (INT16) atol(pData->szCharData);
}
else if(strcmp(name, "AutoFireBonus") == 0)
else if(strcmp(name, "AutoFireToHitBonus") == 0)
{
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)
{
@@ -1349,7 +1355,8 @@ BOOLEAN WriteItemStats()
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<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<PercentAutofireAPReduction>%d</PercentAutofireAPReduction>\r\n", Item[cnt].percentautofireapreduction );
+7 -5
View File
@@ -297,6 +297,8 @@ UINT16 Message[][STRING_LENGTH] =
L"Bloodcats' turn",
L"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"No Air Strikes",
L"Air Strikes",
L"Tons of Guns",
L"10 Tons of Guns",
L"Realistic style",
L"Sci Fi style",
@@ -3441,9 +3443,9 @@ STR16 gzGIOScreenText[] =
L"Realistic",
L"Sci Fi",
L"Platinum",
L"Air Strikes",
L"On",
L"Off",
L"Items",
L"10 Tons of Guns",
L"Tons of Guns",
L"Difficulty Level",
L"Novice",
L"Experienced",
+13 -17
View File
@@ -222,7 +222,7 @@ void EnterTacticalScreen( )
guiTacticalLeaveScreen = FALSE;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: setpositionsndsactive"));
SetPositionSndsActive( );
SetPositionSndsActive( );
// Set pending screen
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"));
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 ] );
}
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: who is selected? %d", gusSelectedSoldier));
// 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 ] );
}
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
{
@@ -281,6 +274,8 @@ void EnterTacticalScreen( )
//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 )
if( !gfTacticalPlacementGUIActive )
{
@@ -294,8 +289,8 @@ void EnterTacticalScreen( )
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: settacticalinterfaceflags"));
SetTacticalInterfaceFlags( 0 );
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: set default squad on sector entry"));
// set default squad on sector entry
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen:selectdefaultsquadonsectorentry"));
SetDefaultSquadOnSectorEntry( FALSE );
ExamineCurrentSquadLights( );
@@ -312,6 +307,7 @@ void EnterTacticalScreen( )
// Select current guy...
//gfGameScreenLocateToSoldier = TRUE;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: check meanwhile"));
// Locate if in meanwhile...
if ( AreInMeanwhile( ) )
{
@@ -323,14 +319,15 @@ void EnterTacticalScreen( )
InternalLocateGridNo( 4561, TRUE );
}
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: clear messages"));
// Clear tactical message q
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen:cleartacticalmessagequeue"));
ClearTacticalMessageQueue( );
// ATE: Enable messages again...
EnableScrollMessages( );
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: done"));
}
void LeaveTacticalScreen( UINT32 uiNewScreen )
@@ -600,13 +597,12 @@ UINT32 MainGameScreenHandle(void)
HandleOverheadMap( );
return( GAME_SCREEN );
}
/*
if ( !ARE_IN_FADE_IN( ) )
{
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("maingamescreenhandle: HandleAirRaid"));
HandleAirRaid( );
}
*/
if ( gfGameScreenLocateToSoldier )
{
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("maingamescreenhandle: tacticalscreenlocatetosoldier"));