diff --git a/Editor/Editor.vcproj b/Editor/Editor.vcproj index cd1b70f6..fb017068 100644 --- a/Editor/Editor.vcproj +++ b/Editor/Editor.vcproj @@ -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=""> @@ -21,7 +23,7 @@ Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\TileEngine,..\Utils,..\TacticalAI,..\Tactical,..\strategic,.\" + AdditionalIncludeDirectories=""..\Standard Gaming Platform";..\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"/> + CompileAs="2" + DisableSpecificWarnings="4292"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> diff --git a/Editor/Sector Summary.cpp b/Editor/Sector Summary.cpp index b4d5fe74..b8dddce8 100644 --- a/Editor/Sector Summary.cpp +++ b/Editor/Sector Summary.cpp @@ -3098,4 +3098,4 @@ UINT8 GetCurrentSummaryVersion() return 0; } -#endif +#endif \ No newline at end of file diff --git a/GameInitOptionsScreen.cpp b/GameInitOptionsScreen.cpp index da7c717d..2926b28a 100644 --- a/GameInitOptionsScreen.cpp +++ b/GameInitOptionsScreen.cpp @@ -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; cntuiFlags |= 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

Build Log

---------------------Configuration: TileEngine - Win32 Release-------------------- +--------------------Configuration: ja2 - Win32 Release with Debug Info--------------------

Command Lines

-Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP58.tmp" with contents +Creating temporary file "C:\DOCUME~1\JONATH~1\LOCALS~1\Temp\RSP351.tmp" with contents [ -/nologo /MT /W3 /GX /O2 /I "..\Standard Gaming Platform" /I "..\\" /I "..\Tactical" /I "..\Utils" /I "..\tacticalai" /I "..\Editor" /I "..\strategic" /I "..\Laptop" /I ".\\" /D "CALLBACKTIMER" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /FR"Release/" /Fp"Release/TileEngine.pch" /YX"TileEngine All.h" /Fo"Release/" /Fd"Release/" /FD /O2b2 /c -"C:\ja2\build\TileEngine\Ambient Control.cpp" -"C:\ja2\build\TileEngine\Buildings.cpp" -"C:\ja2\build\TileEngine\environment.cpp" -"C:\ja2\build\TileEngine\Exit Grids.cpp" -"C:\ja2\build\TileEngine\Explosion Control.cpp" -"C:\ja2\build\TileEngine\Fog Of War.cpp" -"C:\ja2\build\TileEngine\Interactive Tiles.cpp" -"C:\ja2\build\TileEngine\Isometric Utils.cpp" -"C:\ja2\build\TileEngine\LightEffects.cpp" -"C:\ja2\build\TileEngine\lighting.cpp" -"C:\ja2\build\TileEngine\Map Edgepoints.cpp" -"C:\ja2\build\TileEngine\overhead map.cpp" -"C:\ja2\build\TileEngine\phys math.cpp" -"C:\ja2\build\TileEngine\physics.cpp" -"C:\ja2\build\TileEngine\pits.cpp" -"C:\ja2\build\TileEngine\Radar Screen.cpp" -"C:\ja2\build\TileEngine\Render Dirty.cpp" -"C:\ja2\build\TileEngine\Render Fun.cpp" -"C:\ja2\build\TileEngine\renderworld.cpp" -"C:\ja2\build\TileEngine\SaveLoadMap.cpp" -"C:\ja2\build\TileEngine\Shade Table Util.cpp" -"C:\ja2\build\TileEngine\Simple Render Utils.cpp" -"C:\ja2\build\TileEngine\Smell.cpp" -"C:\ja2\build\TileEngine\SmokeEffects.cpp" -"C:\ja2\build\TileEngine\structure.cpp" -"C:\ja2\build\TileEngine\sysutil.cpp" -"C:\ja2\build\TileEngine\Tactical Placement GUI.cpp" -"C:\ja2\build\TileEngine\Tile Animation.cpp" -"C:\ja2\build\TileEngine\Tile Cache.cpp" -"C:\ja2\build\TileEngine\Tile Surface.cpp" -"C:\ja2\build\TileEngine\TileDat.cpp" -"C:\ja2\build\TileEngine\tiledef.cpp" -"C:\ja2\build\TileEngine\WorldDat.cpp" -"C:\ja2\build\TileEngine\worlddef.cpp" -"C:\ja2\build\TileEngine\worldman.cpp" +libexpatMT.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib winmm.lib smackw32.lib mss32.lib /nologo /subsystem:windows /profile /map:"Release with Debug/ja2_cvs.map" /debug /machine:I386 /out:"..\ja2_cvs.exe" +".\Release with Debug\_Ja25GermanText.obj" +".\Release with Debug\aniviewscreen.obj" +".\Release with Debug\Credits.obj" +".\Release with Debug\Cursors.obj" +".\Release with Debug\Fade Screen.obj" +".\Release with Debug\GameInitOptionsScreen.obj" +".\Release with Debug\gameloop.obj" +".\Release with Debug\gamescreen.obj" +".\Release with Debug\GameSettings.obj" +".\Release with Debug\GameVersion.obj" +".\Release with Debug\HelpScreen.obj" +".\Release with Debug\Init.obj" +".\Release with Debug\Intro.obj" +".\Release with Debug\JA2 Splash.obj" +".\Release with Debug\jascreens.obj" +".\Release with Debug\Loading Screen.obj" +".\Release with Debug\MainMenuScreen.obj" +".\Release with Debug\MessageBoxScreen.obj" +".\Release with Debug\Options Screen.obj" +".\Release with Debug\SaveLoadGame.obj" +".\Release with Debug\SaveLoadScreen.obj" +".\Release with Debug\SCREENS.obj" +".\Release with Debug\Sys Globals.obj" +".\Release with Debug\ja2.res" +".\TileEngine\Release with Debug\TileEngine.lib" +".\Standard Gaming Platform\Release with Debug Info\Standard Gaming Platform.lib" +".\Tactical\Release with Debug\Tactical.lib" +".\Utils\Release with Debug\Utils.lib" +".\TacticalAI\Release with Debug\TacticalAI.lib" +".\Editor\Release with Debug\Editor.lib" +".\Laptop\Release with Debug\Laptop.lib" +".\Strategic\Release with Debug\Strategic.lib" ] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP58.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP59.tmp" with contents -[ -/nologo /out:"Release\TileEngine.lib" -".\Release\Ambient Control.obj" -.\Release\Buildings.obj -.\Release\environment.obj -".\Release\Exit Grids.obj" -".\Release\Explosion Control.obj" -".\Release\Fog Of War.obj" -".\Release\Interactive Tiles.obj" -".\Release\Isometric Utils.obj" -.\Release\LightEffects.obj -.\Release\lighting.obj -".\Release\Map Edgepoints.obj" -".\Release\overhead map.obj" -".\Release\phys math.obj" -.\Release\physics.obj -.\Release\pits.obj -".\Release\Radar Screen.obj" -".\Release\Render Dirty.obj" -".\Release\Render Fun.obj" -.\Release\renderworld.obj -.\Release\SaveLoadMap.obj -".\Release\Shade Table Util.obj" -".\Release\Simple Render Utils.obj" -.\Release\Smell.obj -.\Release\SmokeEffects.obj -.\Release\structure.obj -.\Release\sysutil.obj -".\Release\Tactical Placement GUI.obj" -".\Release\Tile Animation.obj" -".\Release\Tile Cache.obj" -".\Release\Tile Surface.obj" -.\Release\TileDat.obj -.\Release\tiledef.obj -.\Release\WorldDat.obj -.\Release\worlddef.obj -.\Release\worldman.obj -] -Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP59.tmp" +Creating command line "link.exe @C:\DOCUME~1\JONATH~1\LOCALS~1\Temp\RSP351.tmp"

Output Window

-Compiling... -Ambient Control.cpp -GENERATED PCH FOR TILEENGINE PROJECT. -Buildings.cpp -environment.cpp -Exit Grids.cpp -Explosion Control.cpp -Fog Of War.cpp -Interactive Tiles.cpp -Isometric Utils.cpp -LightEffects.cpp -lighting.cpp -Map Edgepoints.cpp -overhead map.cpp -phys math.cpp -physics.cpp -pits.cpp -Radar Screen.cpp -Render Dirty.cpp -Render Fun.cpp -renderworld.cpp -SaveLoadMap.cpp -Shade Table Util.cpp -Simple Render Utils.cpp -Smell.cpp -SmokeEffects.cpp -structure.cpp -sysutil.cpp -Tactical Placement GUI.cpp -Tile Animation.cpp -Tile Cache.cpp -Tile Surface.cpp -TileDat.cpp -tiledef.cpp -WorldDat.cpp -worlddef.cpp -worldman.cpp -Creating library... -

---------------------Configuration: Standard Gaming Platform - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5A.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /I "..\\" /I "..\TileEngine" /I "..\Tactical" /I "..\Utils" /I "..\strategic" /I ".\\" /D "NO_ZLIB" /D "JA2_PRECOMPILED_HEADERS" /D "NO_ZLIB_COMPRESSION" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /FR".\Release/" /Fp".\Release/Standard Gaming Platform.pch" /YX"JA2 SGP ALL.H" /Fo".\Release/" /Fd".\Release/" /FD /c -"C:\ja2\build\Standard Gaming Platform\Button Sound Control.cpp" -"C:\ja2\build\Standard Gaming Platform\Button System.cpp" -"C:\ja2\build\Standard Gaming Platform\Container.cpp" -"C:\ja2\build\Standard Gaming Platform\Cursor Control.cpp" -"C:\ja2\build\Standard Gaming Platform\DbMan.cpp" -"C:\ja2\build\Standard Gaming Platform\DirectDraw Calls.cpp" -"C:\ja2\build\Standard Gaming Platform\DirectX Common.cpp" -"C:\ja2\build\Standard Gaming Platform\English.cpp" -"C:\ja2\build\Standard Gaming Platform\ExceptionHandling.cpp" -"C:\ja2\build\Standard Gaming Platform\FileCat.cpp" -"C:\ja2\build\Standard Gaming Platform\FileMan.cpp" -"C:\ja2\build\Standard Gaming Platform\Font.cpp" -"C:\ja2\build\Standard Gaming Platform\himage.cpp" -"C:\ja2\build\Standard Gaming Platform\impTGA.cpp" -"C:\ja2\build\Standard Gaming Platform\input.cpp" -"C:\ja2\build\Standard Gaming Platform\Install.cpp" -"C:\ja2\build\Standard Gaming Platform\LibraryDataBase.cpp" -"C:\ja2\build\Standard Gaming Platform\line.cpp" -"C:\ja2\build\Standard Gaming Platform\MemMan.cpp" -"C:\ja2\build\Standard Gaming Platform\mousesystem.cpp" -"C:\ja2\build\Standard Gaming Platform\Mutex Manager.cpp" -"C:\ja2\build\Standard Gaming Platform\PCX.cpp" -"C:\ja2\build\Standard Gaming Platform\Random.cpp" -"C:\ja2\build\Standard Gaming Platform\readdir.cpp" -"C:\ja2\build\Standard Gaming Platform\RegInst.cpp" -"C:\ja2\build\Standard Gaming Platform\sgp.cpp" -"C:\ja2\build\Standard Gaming Platform\shading.cpp" -"C:\ja2\build\Standard Gaming Platform\soundman.cpp" -"C:\ja2\build\Standard Gaming Platform\STCI.cpp" -"C:\ja2\build\Standard Gaming Platform\stringicmp.cpp" -"C:\ja2\build\Standard Gaming Platform\timer.cpp" -"C:\ja2\build\Standard Gaming Platform\video.cpp" -"C:\ja2\build\Standard Gaming Platform\vobject.cpp" -"C:\ja2\build\Standard Gaming Platform\vobject_blitters.cpp" -"C:\ja2\build\Standard Gaming Platform\vsurface.cpp" -"C:\ja2\build\Standard Gaming Platform\WinFont.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5A.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5B.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /I "..\\" /I "..\TileEngine" /I "..\Tactical" /I "..\Utils" /I "..\strategic" /I ".\\" /D "NO_ZLIB" /D "JA2_PRECOMPILED_HEADERS" /D "NO_ZLIB_COMPRESSION" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /D "_DEBUG" /FR".\Release/" /Fp".\Release/Standard Gaming Platform.pch" /YX"JA2 SGP ALL.H" /Fo".\Release/" /Fd".\Release/" /FD /c -"C:\ja2\build\Standard Gaming Platform\DEBUG.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5B.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5C.tmp" with contents -[ -/nologo /out:".\Release\Standard Gaming Platform.lib" -".\Release\Button Sound Control.obj" -".\Release\Button System.obj" -".\Release\Container.obj" -".\Release\Cursor Control.obj" -".\Release\DbMan.obj" -".\Release\DEBUG.obj" -".\Release\DirectDraw Calls.obj" -".\Release\DirectX Common.obj" -".\Release\English.obj" -".\Release\ExceptionHandling.obj" -".\Release\FileCat.obj" -".\Release\FileMan.obj" -".\Release\Font.obj" -".\Release\himage.obj" -".\Release\impTGA.obj" -".\Release\input.obj" -".\Release\Install.obj" -".\Release\LibraryDataBase.obj" -".\Release\line.obj" -".\Release\MemMan.obj" -".\Release\mousesystem.obj" -".\Release\Mutex Manager.obj" -".\Release\PCX.obj" -".\Release\Random.obj" -".\Release\readdir.obj" -".\Release\RegInst.obj" -".\Release\sgp.obj" -".\Release\shading.obj" -".\Release\soundman.obj" -".\Release\STCI.obj" -".\Release\stringicmp.obj" -".\Release\timer.obj" -".\Release\video.obj" -".\Release\vobject.obj" -".\Release\vobject_blitters.obj" -".\Release\vsurface.obj" -".\Release\WinFont.obj" -".\ddraw.lib" -] -Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5C.tmp" -

Output Window

-Compiling... -Button Sound Control.cpp -GENERATED PCH FOR JA2 SGP PROJECT. -Button System.cpp -Container.cpp -Cursor Control.cpp -DbMan.cpp -DirectDraw Calls.cpp -DirectX Common.cpp -GENERATED PCH FOR JA2 SGP PROJECT. -English.cpp -GENERATED PCH FOR JA2 SGP PROJECT. -ExceptionHandling.cpp -FileCat.cpp -FileMan.cpp -GENERATED PCH FOR JA2 SGP PROJECT. -Font.cpp -himage.cpp -impTGA.cpp -input.cpp -Install.cpp -LibraryDataBase.cpp -line.cpp -MemMan.cpp -mousesystem.cpp -GENERATED PCH FOR JA2 SGP PROJECT. -Mutex Manager.cpp -PCX.cpp -Random.cpp -readdir.cpp -RegInst.cpp -GENERATED PCH FOR JA2 SGP PROJECT. -sgp.cpp -shading.cpp -soundman.cpp -TEMP! -STCI.cpp -stringicmp.cpp -timer.cpp -GENERATED PCH FOR JA2 SGP PROJECT. -video.cpp -vobject.cpp -vobject_blitters.cpp -vsurface.cpp -WinFont.cpp -Compiling... -DEBUG.cpp -GENERATED PCH FOR JA2 SGP PROJECT. -Creating library... -

---------------------Configuration: Tactical - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5D.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /I "..\Standard Gaming Platform" /I "..\TileEngine" /I "..\\" /I "..\Utils" /I "..\tacticalai" /I "..\Editor" /I "..\strategic" /I "..\Laptop" /I ".\\" /D "CALLBACKTIMER" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /FR"Release/" /Fp"Release/Tactical.pch" /YX"Tactical All.h" /Fo"Release/" /Fd"Release/" /FD /c -"C:\ja2\build\Tactical\Air Raid.cpp" -"C:\ja2\build\Tactical\Animation Cache.cpp" -"C:\ja2\build\Tactical\Animation Control.cpp" -"C:\ja2\build\Tactical\Animation Data.cpp" -"C:\ja2\build\Tactical\Arms Dealer Init.cpp" -"C:\ja2\build\Tactical\ArmsDealerInvInit.cpp" -"C:\ja2\build\Tactical\Auto Bandage.cpp" -"C:\ja2\build\Tactical\Boxing.cpp" -"C:\ja2\build\Tactical\bullets.cpp" -"C:\ja2\build\Tactical\Campaign.cpp" -"C:\ja2\build\Tactical\Civ Quotes.cpp" -"C:\ja2\build\Tactical\Dialogue Control.cpp" -"C:\ja2\build\Tactical\DisplayCover.cpp" -"C:\ja2\build\Tactical\Drugs And Alcohol.cpp" -"C:\ja2\build\Tactical\End Game.cpp" -"C:\ja2\build\Tactical\Enemy Soldier Save.cpp" -"C:\ja2\build\Tactical\Faces.cpp" -"C:\ja2\build\Tactical\fov.cpp" -"C:\ja2\build\Tactical\GAP.cpp" -"C:\ja2\build\Tactical\Handle Doors.cpp" -"C:\ja2\build\Tactical\Handle Items.cpp" -"C:\ja2\build\Tactical\Handle UI Plan.cpp" -"C:\ja2\build\Tactical\Handle UI.cpp" -"C:\ja2\build\Tactical\Interface Control.cpp" -"C:\ja2\build\Tactical\Interface Cursors.cpp" -"C:\ja2\build\Tactical\Interface Dialogue.cpp" -"C:\ja2\build\Tactical\Interface Items.cpp" -"C:\ja2\build\Tactical\Interface Panels.cpp" -"C:\ja2\build\Tactical\Interface Utils.cpp" -"C:\ja2\build\Tactical\Interface.cpp" -"C:\ja2\build\Tactical\Inventory Choosing.cpp" -"C:\ja2\build\Tactical\Items.cpp" -"C:\ja2\build\Tactical\Keys.cpp" -"C:\ja2\build\Tactical\Map Information.cpp" -"C:\ja2\build\Tactical\Merc Entering.cpp" -"C:\ja2\build\Tactical\Merc Hiring.cpp" -"C:\ja2\build\Tactical\Militia Control.cpp" -"C:\ja2\build\Tactical\Morale.cpp" -"C:\ja2\build\Tactical\opplist.cpp" -"C:\ja2\build\Tactical\Overhead.cpp" -"C:\ja2\build\Tactical\PATHAI.cpp" -"C:\ja2\build\Tactical\Points.cpp" -"C:\ja2\build\Tactical\QARRAY.cpp" -"C:\ja2\build\Tactical\Real Time Input.cpp" -"C:\ja2\build\Tactical\Rotting Corpses.cpp" -"C:\ja2\build\Tactical\ShopKeeper Interface.cpp" -"C:\ja2\build\Tactical\SkillCheck.cpp" -"C:\ja2\build\Tactical\Soldier Add.cpp" -"C:\ja2\build\Tactical\Soldier Ani.cpp" -"C:\ja2\build\Tactical\Soldier Control.cpp" -"C:\ja2\build\Tactical\Soldier Create.cpp" -"C:\ja2\build\Tactical\Soldier Find.cpp" -"C:\ja2\build\Tactical\Soldier Init List.cpp" -"C:\ja2\build\Tactical\Soldier Profile.cpp" -"C:\ja2\build\Tactical\Soldier Tile.cpp" -"C:\ja2\build\Tactical\Spread Burst.cpp" -"C:\ja2\build\Tactical\Squads.cpp" -"C:\ja2\build\Tactical\Strategic Exit GUI.cpp" -"C:\ja2\build\Tactical\Structure Wrap.cpp" -"C:\ja2\build\Tactical\Tactical Save.cpp" -"C:\ja2\build\Tactical\Tactical Turns.cpp" -"C:\ja2\build\Tactical\TeamTurns.cpp" -"C:\ja2\build\Tactical\Turn Based Input.cpp" -"C:\ja2\build\Tactical\UI Cursors.cpp" -"C:\ja2\build\Tactical\Vehicles.cpp" -"C:\ja2\build\Tactical\Weapons.cpp" -"C:\ja2\build\Tactical\World Items.cpp" -"C:\ja2\build\Tactical\XML_Armour.cpp" -"C:\ja2\build\Tactical\XML_AttachmentInfo.cpp" -"C:\ja2\build\Tactical\XML_Attachments.cpp" -"C:\ja2\build\Tactical\XML_BurstSoundStrings.cpp" -"C:\ja2\build\Tactical\XML_ComboMergeInfo.cpp" -"C:\ja2\build\Tactical\XML_CompatibleFaceItems.cpp" -"C:\ja2\build\Tactical\XML_EnemyItemChoice.cpp" -"C:\ja2\build\Tactical\XML_EnemyWeaponChoice.cpp" -"C:\ja2\build\Tactical\XML_Explosive.cpp" -"C:\ja2\build\Tactical\XML_IMPItemChoices.cpp" -"C:\ja2\build\Tactical\XML_IncompatibleAttachments.cpp" -"C:\ja2\build\Tactical\XML_Launchable.cpp" -"C:\ja2\build\Tactical\XML_Magazine.cpp" -"C:\ja2\build\Tactical\XML_Merge.cpp" -"C:\ja2\build\Tactical\XML_Sounds.cpp" -"C:\ja2\build\Tactical\XML_TonyInventory.cpp" -"C:\ja2\build\Tactical\XML_AmmoTypes.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5D.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5E.tmp" with contents -[ -/nologo /MT /W3 /GX /Od /I "..\Standard Gaming Platform" /I "..\TileEngine" /I "..\\" /I "..\Utils" /I "..\tacticalai" /I "..\Editor" /I "..\strategic" /I "..\Laptop" /I ".\\" /D "CALLBACKTIMER" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /FR"Release/" /Fp"Release/Tactical.pch" /YX"Tactical All.h" /Fo"Release/" /Fd"Release/" /FD /c -"C:\ja2\build\Tactical\LOS.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5E.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5F.tmp" with contents -[ -/nologo /out:"Release\Tactical.lib" -".\Release\Air Raid.obj" -".\Release\Animation Cache.obj" -".\Release\Animation Control.obj" -".\Release\Animation Data.obj" -".\Release\Arms Dealer Init.obj" -.\Release\ArmsDealerInvInit.obj -".\Release\Auto Bandage.obj" -.\Release\Boxing.obj -.\Release\bullets.obj -.\Release\Campaign.obj -".\Release\Civ Quotes.obj" -".\Release\Dialogue Control.obj" -.\Release\DisplayCover.obj -".\Release\Drugs And Alcohol.obj" -".\Release\End Game.obj" -".\Release\Enemy Soldier Save.obj" -.\Release\Faces.obj -.\Release\fov.obj -.\Release\GAP.obj -".\Release\Handle Doors.obj" -".\Release\Handle Items.obj" -".\Release\Handle UI Plan.obj" -".\Release\Handle UI.obj" -".\Release\Interface Control.obj" -".\Release\Interface Cursors.obj" -".\Release\Interface Dialogue.obj" -".\Release\Interface Items.obj" -".\Release\Interface Panels.obj" -".\Release\Interface Utils.obj" -.\Release\Interface.obj -".\Release\Inventory Choosing.obj" -.\Release\Items.obj -.\Release\Keys.obj -.\Release\LOS.obj -".\Release\Map Information.obj" -".\Release\Merc Entering.obj" -".\Release\Merc Hiring.obj" -".\Release\Militia Control.obj" -.\Release\Morale.obj -.\Release\opplist.obj -.\Release\Overhead.obj -.\Release\PATHAI.obj -.\Release\Points.obj -.\Release\QARRAY.obj -".\Release\Real Time Input.obj" -".\Release\Rotting Corpses.obj" -".\Release\ShopKeeper Interface.obj" -.\Release\SkillCheck.obj -".\Release\Soldier Add.obj" -".\Release\Soldier Ani.obj" -".\Release\Soldier Control.obj" -".\Release\Soldier Create.obj" -".\Release\Soldier Find.obj" -".\Release\Soldier Init List.obj" -".\Release\Soldier Profile.obj" -".\Release\Soldier Tile.obj" -".\Release\Spread Burst.obj" -.\Release\Squads.obj -".\Release\Strategic Exit GUI.obj" -".\Release\Structure Wrap.obj" -".\Release\Tactical Save.obj" -".\Release\Tactical Turns.obj" -.\Release\TeamTurns.obj -".\Release\Turn Based Input.obj" -".\Release\UI Cursors.obj" -.\Release\Vehicles.obj -.\Release\Weapons.obj -".\Release\World Items.obj" -.\Release\XML_Armour.obj -.\Release\XML_AttachmentInfo.obj -.\Release\XML_Attachments.obj -.\Release\XML_BurstSoundStrings.obj -.\Release\XML_ComboMergeInfo.obj -.\Release\XML_CompatibleFaceItems.obj -.\Release\XML_EnemyItemChoice.obj -.\Release\XML_EnemyWeaponChoice.obj -.\Release\XML_Explosive.obj -.\Release\XML_IMPItemChoices.obj -.\Release\XML_IncompatibleAttachments.obj -.\Release\XML_Launchable.obj -.\Release\XML_Magazine.obj -.\Release\XML_Merge.obj -.\Release\XML_Sounds.obj -.\Release\XML_TonyInventory.obj -.\Release\XML_AmmoTypes.obj -] -Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP5F.tmp" -

Output Window

-Compiling... -Air Raid.cpp -GENERATED PCH FOR TACTICAL PROJECT. -Animation Cache.cpp -Animation Control.cpp -Animation Data.cpp -Arms Dealer Init.cpp -ArmsDealerInvInit.cpp -Auto Bandage.cpp -Boxing.cpp -bullets.cpp -Campaign.cpp -Civ Quotes.cpp -Dialogue Control.cpp -DisplayCover.cpp -GENERATED PCH FOR TACTICAL AI PROJECT. -Drugs And Alcohol.cpp -GENERATED PCH FOR TACTICAL PROJECT. -End Game.cpp -Enemy Soldier Save.cpp -Faces.cpp -fov.cpp -GAP.cpp -Handle Doors.cpp -Handle Items.cpp -Handle UI Plan.cpp -Handle UI.cpp -Interface Control.cpp -Interface Cursors.cpp -Interface Dialogue.cpp -Interface Items.cpp -Interface Panels.cpp -Interface Utils.cpp -Interface.cpp -Inventory Choosing.cpp -Items.cpp -Keys.cpp -Map Information.cpp -Merc Entering.cpp -Merc Hiring.cpp -Militia Control.cpp -Morale.cpp -opplist.cpp -Overhead.cpp -PATHAI.cpp -Points.cpp -QARRAY.cpp -Real Time Input.cpp -Rotting Corpses.cpp -ShopKeeper Interface.cpp -SkillCheck.cpp -Soldier Add.cpp -Soldier Ani.cpp -Soldier Control.cpp -Soldier Create.cpp -Soldier Find.cpp -Soldier Init List.cpp -Soldier Profile.cpp -Soldier Tile.cpp -Spread Burst.cpp -Squads.cpp -Strategic Exit GUI.cpp -Structure Wrap.cpp -Tactical Save.cpp -Tactical Turns.cpp -TeamTurns.cpp -Turn Based Input.cpp -UI Cursors.cpp -Vehicles.cpp -Weapons.cpp -World Items.cpp -XML_Armour.cpp -XML_AttachmentInfo.cpp -XML_Attachments.cpp -XML_BurstSoundStrings.cpp -XML_ComboMergeInfo.cpp -XML_CompatibleFaceItems.cpp -XML_EnemyItemChoice.cpp -XML_EnemyWeaponChoice.cpp -XML_Explosive.cpp -XML_IMPItemChoices.cpp -XML_IncompatibleAttachments.cpp -XML_Launchable.cpp -XML_Magazine.cpp -XML_Merge.cpp -XML_Sounds.cpp -XML_TonyInventory.cpp -XML_AmmoTypes.cpp -Compiling... -LOS.cpp -GENERATED PCH FOR TACTICAL PROJECT. -Creating library... -

---------------------Configuration: Utils - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP60.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /I "..\Standard Gaming Platform" /I "..\TileEngine" /I "..\\" /I "..\Tactical" /I "..\tacticalai" /I "..\Editor" /I "..\strategic" /I "..\Laptop" /I ".\\" /D "CALLBACKTIMER" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /FR"Release/" /Fp"Release/Utils.pch" /YX"Utils All.h" /Fo"Release/" /Fd"Release/" /FD /c -"C:\ja2\build\Utils\_DutchText.cpp" -"C:\ja2\build\Utils\_EnglishText.cpp" -"C:\ja2\build\Utils\_FrenchText.cpp" -"C:\ja2\build\Utils\_GermanText.cpp" -"C:\ja2\build\Utils\_ItalianText.cpp" -"C:\ja2\build\Utils\_Ja25EnglishText.cpp" -"C:\ja2\build\Utils\_Ja25GermanText.cpp" -"C:\ja2\build\Utils\_PolishText.cpp" -"C:\ja2\build\Utils\_RussianText.cpp" -"C:\ja2\build\Utils\Animated ProgressBar.cpp" -"C:\ja2\build\Utils\Cinematics.cpp" -"C:\ja2\build\Utils\Cursors.cpp" -"C:\ja2\build\Utils\Debug Control.cpp" -"C:\ja2\build\Utils\dsutil.cpp" -"C:\ja2\build\Utils\Encrypted File.cpp" -"C:\ja2\build\Utils\Event Manager.cpp" -"C:\ja2\build\Utils\Event Pump.cpp" -"C:\ja2\build\Utils\Font Control.cpp" -"C:\ja2\build\Utils\INIReader.cpp" -"C:\ja2\build\Utils\MapUtility.cpp" -"C:\ja2\build\Utils\MercTextBox.cpp" -"C:\ja2\build\Utils\message.cpp" -"C:\ja2\build\Utils\Multi Language Graphic Utils.cpp" -"C:\ja2\build\Utils\Multilingual Text Code Generator.cpp" -"C:\ja2\build\Utils\Music Control.cpp" -"C:\ja2\build\Utils\PopUpBox.cpp" -"C:\ja2\build\Utils\Quantize Wrap.cpp" -"C:\ja2\build\Utils\Quantize.cpp" -"C:\ja2\build\Utils\Slider.cpp" -"C:\ja2\build\Utils\Sound Control.cpp" -"C:\ja2\build\Utils\STIConvert.cpp" -"C:\ja2\build\Utils\Text Input.cpp" -"C:\ja2\build\Utils\Text Utils.cpp" -"C:\ja2\build\Utils\Timer Control.cpp" -"C:\ja2\build\Utils\Utilities.cpp" -"C:\ja2\build\Utils\WordWrap.cpp" -"C:\ja2\build\Utils\XML_Items.cpp" -"C:\ja2\build\Utils\XML_Strings.cpp" -"C:\ja2\build\Utils\XML_Strings2.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP60.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP61.tmp" with contents -[ -/nologo /out:"Release\Utils.lib" -.\Release\_DutchText.obj -.\Release\_EnglishText.obj -.\Release\_FrenchText.obj -.\Release\_GermanText.obj -.\Release\_ItalianText.obj -.\Release\_Ja25EnglishText.obj -.\Release\_Ja25GermanText.obj -.\Release\_PolishText.obj -.\Release\_RussianText.obj -".\Release\Animated ProgressBar.obj" -.\Release\Cinematics.obj -.\Release\Cursors.obj -".\Release\Debug Control.obj" -.\Release\dsutil.obj -".\Release\Encrypted File.obj" -".\Release\Event Manager.obj" -".\Release\Event Pump.obj" -".\Release\Font Control.obj" -.\Release\INIReader.obj -.\Release\MapUtility.obj -.\Release\MercTextBox.obj -.\Release\message.obj -".\Release\Multi Language Graphic Utils.obj" -".\Release\Multilingual Text Code Generator.obj" -".\Release\Music Control.obj" -.\Release\PopUpBox.obj -".\Release\Quantize Wrap.obj" -.\Release\Quantize.obj -.\Release\Slider.obj -".\Release\Sound Control.obj" -.\Release\STIConvert.obj -".\Release\Text Input.obj" -".\Release\Text Utils.obj" -".\Release\Timer Control.obj" -.\Release\Utilities.obj -.\Release\WordWrap.obj -.\Release\XML_Items.obj -.\Release\XML_Strings.obj -.\Release\XML_Strings2.obj -] -Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP61.tmp" -

Output Window

-Compiling... -_DutchText.cpp -GENERATED PCH FOR UTILS PROJECT. -_EnglishText.cpp -GENERATED PCH FOR UTILS PROJECT. -_FrenchText.cpp -_GermanText.cpp -_ItalianText.cpp -GENERATED PCH FOR UTILS PROJECT. -_Ja25EnglishText.cpp -GENERATED PCH FOR UTILS PROJECT. -_Ja25GermanText.cpp -_PolishText.cpp -GENERATED PCH FOR UTILS PROJECT. -_RussianText.cpp -Animated ProgressBar.cpp -GENERATED PCH FOR UTILS PROJECT. -Cinematics.cpp -Cursors.cpp -GENERATED PCH FOR UTILS PROJECT. -Debug Control.cpp -dsutil.cpp -Encrypted File.cpp -Event Manager.cpp -Event Pump.cpp -Font Control.cpp -INIReader.cpp -MapUtility.cpp -GENERATED PCH FOR UTILS PROJECT. -MercTextBox.cpp -message.cpp -Multi Language Graphic Utils.cpp -GENERATED PCH FOR UTILS PROJECT. -Multilingual Text Code Generator.cpp -Music Control.cpp -GENERATED PCH FOR UTILS PROJECT. -PopUpBox.cpp -Quantize Wrap.cpp -Quantize.cpp -Slider.cpp -GENERATED PCH FOR UTILS PROJECT. -Sound Control.cpp -STIConvert.cpp -Text Input.cpp -Text Utils.cpp -Timer Control.cpp -Utilities.cpp -WordWrap.cpp -XML_Items.cpp -GENERATED PCH FOR TACTICAL PROJECT. -XML_Strings.cpp -XML_Strings2.cpp -Creating library... -

---------------------Configuration: TacticalAI - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP62.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /I "..\Standard Gaming Platform" /I "..\TileEngine" /I "..\\" /I "..\Tactical" /I "..\Utils" /I "..\Editor" /I "..\strategic" /I "..\Laptop" /I ".\\" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /FR"Release/" /Fp"Release/TacticalAI.pch" /YX"AI All.h" /Fo"Release/" /Fd"Release/" /FD /c -"C:\ja2\build\TacticalAI\AIList.cpp" -"C:\ja2\build\TacticalAI\AIMain.cpp" -"C:\ja2\build\TacticalAI\AIUtils.cpp" -"C:\ja2\build\TacticalAI\Attacks.cpp" -"C:\ja2\build\TacticalAI\CreatureDecideAction.cpp" -"C:\ja2\build\TacticalAI\DecideAction.cpp" -"C:\ja2\build\TacticalAI\FindLocations.cpp" -"C:\ja2\build\TacticalAI\Knowledge.cpp" -"C:\ja2\build\TacticalAI\Medical.cpp" -"C:\ja2\build\TacticalAI\Movement.cpp" -"C:\ja2\build\TacticalAI\NPC.cpp" -"C:\ja2\build\TacticalAI\PanicButtons.cpp" -"C:\ja2\build\TacticalAI\QuestDebug.cpp" -"C:\ja2\build\TacticalAI\Realtime.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP62.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP63.tmp" with contents -[ -/nologo /out:"Release\TacticalAI.lib" -.\Release\AIList.obj -.\Release\AIMain.obj -.\Release\AIUtils.obj -.\Release\Attacks.obj -.\Release\CreatureDecideAction.obj -.\Release\DecideAction.obj -.\Release\FindLocations.obj -.\Release\Knowledge.obj -.\Release\Medical.obj -.\Release\Movement.obj -.\Release\NPC.obj -.\Release\PanicButtons.obj -.\Release\QuestDebug.obj -.\Release\Realtime.obj -] -Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP63.tmp" -

Output Window

-Compiling... -AIList.cpp -GENERATED PCH FOR TACTICAL AI PROJECT. -AIMain.cpp -AIUtils.cpp -Attacks.cpp -CreatureDecideAction.cpp -DecideAction.cpp -FindLocations.cpp -Knowledge.cpp -Medical.cpp -Movement.cpp -NPC.cpp -PanicButtons.cpp -QuestDebug.cpp -Realtime.cpp -Creating library... -

---------------------Configuration: Editor - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP64.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /Ob2 /I "..\Standard Gaming Platform" /I "..\TileEngine" /I "..\\" /I "..\Tactical" /I "..\Utils" /I "..\tacticalai" /I "..\strategic" /I "..\Laptop" /I ".\\" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /FR"Release/" /Fp"Release/Editor.pch" /YX"Editor All.h" /Fo"Release/" /Fd"Release/" /FD /c -"C:\ja2\build\Editor\Cursor Modes.cpp" -"C:\ja2\build\Editor\edit_sys.cpp" -"C:\ja2\build\Editor\Editor Callbacks.cpp" -"C:\ja2\build\Editor\Editor Modes.cpp" -"C:\ja2\build\Editor\Editor Taskbar Creation.cpp" -"C:\ja2\build\Editor\Editor Taskbar Utils.cpp" -"C:\ja2\build\Editor\Editor Undo.cpp" -"C:\ja2\build\Editor\EditorBuildings.cpp" -"C:\ja2\build\Editor\EditorItems.cpp" -"C:\ja2\build\Editor\EditorMapInfo.cpp" -"C:\ja2\build\Editor\EditorMercs.cpp" -"C:\ja2\build\Editor\EditorTerrain.cpp" -"C:\ja2\build\Editor\editscreen.cpp" -"C:\ja2\build\Editor\Item Statistics.cpp" -"C:\ja2\build\Editor\LoadScreen.cpp" -"C:\ja2\build\Editor\messagebox.cpp" -"C:\ja2\build\Editor\newsmooth.cpp" -"C:\ja2\build\Editor\popupmenu.cpp" -"C:\ja2\build\Editor\Road Smoothing.cpp" -"C:\ja2\build\Editor\Sector Summary.cpp" -"C:\ja2\build\Editor\selectwin.cpp" -"C:\ja2\build\Editor\SmartMethod.cpp" -"C:\ja2\build\Editor\smooth.cpp" -"C:\ja2\build\Editor\Smoothing Utils.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP64.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP65.tmp" with contents -[ -/nologo /out:"Release\Editor.lib" -".\Release\Cursor Modes.obj" -.\Release\edit_sys.obj -".\Release\Editor Callbacks.obj" -".\Release\Editor Modes.obj" -".\Release\Editor Taskbar Creation.obj" -".\Release\Editor Taskbar Utils.obj" -".\Release\Editor Undo.obj" -.\Release\EditorBuildings.obj -.\Release\EditorItems.obj -.\Release\EditorMapInfo.obj -.\Release\EditorMercs.obj -.\Release\EditorTerrain.obj -.\Release\editscreen.obj -".\Release\Item Statistics.obj" -.\Release\LoadScreen.obj -.\Release\messagebox.obj -.\Release\newsmooth.obj -.\Release\popupmenu.obj -".\Release\Road Smoothing.obj" -".\Release\Sector Summary.obj" -.\Release\selectwin.obj -.\Release\SmartMethod.obj -.\Release\smooth.obj -".\Release\Smoothing Utils.obj" -] -Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP65.tmp" -

Output Window

-Compiling... -Cursor Modes.cpp -edit_sys.cpp -Editor Callbacks.cpp -Editor Modes.cpp -Editor Taskbar Creation.cpp -Editor Taskbar Utils.cpp -Editor Undo.cpp -EditorBuildings.cpp -EditorItems.cpp -EditorMapInfo.cpp -EditorMercs.cpp -EditorTerrain.cpp -editscreen.cpp -Item Statistics.cpp -LoadScreen.cpp -messagebox.cpp -newsmooth.cpp -popupmenu.cpp -Road Smoothing.cpp -Sector Summary.cpp -selectwin.cpp -SmartMethod.cpp -smooth.cpp -Smoothing Utils.cpp -Creating library... -

---------------------Configuration: Laptop - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP66.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /I "..\Standard Gaming Platform" /I "..\TileEngine" /I "..\\" /I "..\Tactical" /I "..\Utils" /I "..\tacticalai" /I "..\Editor" /I "..\strategic" /I ".\\" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /FR"Release/" /Fp"Release/Laptop.pch" /YX"Laptop All.h" /Fo"Release/" /Fd"Release/" /FD /c -"C:\ja2\build\Laptop\aim.cpp" -"C:\ja2\build\Laptop\AimArchives.cpp" -"C:\ja2\build\Laptop\AimFacialIndex.cpp" -"C:\ja2\build\Laptop\AimHistory.cpp" -"C:\ja2\build\Laptop\AimLinks.cpp" -"C:\ja2\build\Laptop\AimMembers.cpp" -"C:\ja2\build\Laptop\AimPolicies.cpp" -"C:\ja2\build\Laptop\AimSort.cpp" -"C:\ja2\build\Laptop\BobbyR.cpp" -"C:\ja2\build\Laptop\BobbyRAmmo.cpp" -"C:\ja2\build\Laptop\BobbyRArmour.cpp" -"C:\ja2\build\Laptop\BobbyRGuns.cpp" -"C:\ja2\build\Laptop\BobbyRMailOrder.cpp" -"C:\ja2\build\Laptop\BobbyRMisc.cpp" -"C:\ja2\build\Laptop\BobbyRShipments.cpp" -"C:\ja2\build\Laptop\BobbyRUsed.cpp" -"C:\ja2\build\Laptop\BrokenLink.cpp" -"C:\ja2\build\Laptop\CharProfile.cpp" -"C:\ja2\build\Laptop\email.cpp" -"C:\ja2\build\Laptop\files.cpp" -"C:\ja2\build\Laptop\finances.cpp" -"C:\ja2\build\Laptop\florist Cards.cpp" -"C:\ja2\build\Laptop\florist Gallery.cpp" -"C:\ja2\build\Laptop\florist Order Form.cpp" -"C:\ja2\build\Laptop\florist.cpp" -"C:\ja2\build\Laptop\funeral.cpp" -"C:\ja2\build\Laptop\history.cpp" -"C:\ja2\build\Laptop\IMP AboutUs.cpp" -"C:\ja2\build\Laptop\IMP Attribute Entrance.cpp" -"C:\ja2\build\Laptop\IMP Attribute Finish.cpp" -"C:\ja2\build\Laptop\IMP Attribute Selection.cpp" -"C:\ja2\build\Laptop\IMP Begin Screen.cpp" -"C:\ja2\build\Laptop\IMP Compile Character.cpp" -"C:\ja2\build\Laptop\IMP Confirm.cpp" -"C:\ja2\build\Laptop\IMP Finish.cpp" -"C:\ja2\build\Laptop\IMP HomePage.cpp" -"C:\ja2\build\Laptop\IMP MainPage.cpp" -"C:\ja2\build\Laptop\IMP Personality Entrance.cpp" -"C:\ja2\build\Laptop\IMP Personality Finish.cpp" -"C:\ja2\build\Laptop\IMP Personality Quiz.cpp" -"C:\ja2\build\Laptop\IMP Portraits.cpp" -"C:\ja2\build\Laptop\IMP Skill Trait.cpp" -"C:\ja2\build\Laptop\IMP Text System.cpp" -"C:\ja2\build\Laptop\IMP Voices.cpp" -"C:\ja2\build\Laptop\IMPVideoObjects.cpp" -"C:\ja2\build\Laptop\insurance Comments.cpp" -"C:\ja2\build\Laptop\insurance Contract.cpp" -"C:\ja2\build\Laptop\insurance Info.cpp" -"C:\ja2\build\Laptop\insurance.cpp" -"C:\ja2\build\Laptop\laptop.cpp" -"C:\ja2\build\Laptop\mercs Account.cpp" -"C:\ja2\build\Laptop\mercs Files.cpp" -"C:\ja2\build\Laptop\mercs No Account.cpp" -"C:\ja2\build\Laptop\mercs.cpp" -"C:\ja2\build\Laptop\personnel.cpp" -"C:\ja2\build\Laptop\sirtech.cpp" -"C:\ja2\build\Laptop\Store Inventory.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP66.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP67.tmp" with contents -[ -/nologo /out:"Release\Laptop.lib" -.\Release\aim.obj -.\Release\AimArchives.obj -.\Release\AimFacialIndex.obj -.\Release\AimHistory.obj -.\Release\AimLinks.obj -.\Release\AimMembers.obj -.\Release\AimPolicies.obj -.\Release\AimSort.obj -.\Release\BobbyR.obj -.\Release\BobbyRAmmo.obj -.\Release\BobbyRArmour.obj -.\Release\BobbyRGuns.obj -.\Release\BobbyRMailOrder.obj -.\Release\BobbyRMisc.obj -.\Release\BobbyRShipments.obj -.\Release\BobbyRUsed.obj -.\Release\BrokenLink.obj -.\Release\CharProfile.obj -.\Release\email.obj -.\Release\files.obj -.\Release\finances.obj -".\Release\florist Cards.obj" -".\Release\florist Gallery.obj" -".\Release\florist Order Form.obj" -.\Release\florist.obj -.\Release\funeral.obj -.\Release\history.obj -".\Release\IMP AboutUs.obj" -".\Release\IMP Attribute Entrance.obj" -".\Release\IMP Attribute Finish.obj" -".\Release\IMP Attribute Selection.obj" -".\Release\IMP Begin Screen.obj" -".\Release\IMP Compile Character.obj" -".\Release\IMP Confirm.obj" -".\Release\IMP Finish.obj" -".\Release\IMP HomePage.obj" -".\Release\IMP MainPage.obj" -".\Release\IMP Personality Entrance.obj" -".\Release\IMP Personality Finish.obj" -".\Release\IMP Personality Quiz.obj" -".\Release\IMP Portraits.obj" -".\Release\IMP Skill Trait.obj" -".\Release\IMP Text System.obj" -".\Release\IMP Voices.obj" -.\Release\IMPVideoObjects.obj -".\Release\insurance Comments.obj" -".\Release\insurance Contract.obj" -".\Release\insurance Info.obj" -.\Release\insurance.obj -.\Release\laptop.obj -".\Release\mercs Account.obj" -".\Release\mercs Files.obj" -".\Release\mercs No Account.obj" -.\Release\mercs.obj -.\Release\personnel.obj -.\Release\sirtech.obj -".\Release\Store Inventory.obj" -] -Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP67.tmp" -

Output Window

-Compiling... -aim.cpp -GENERATED PCH FOR LAPTOP PROJECT. -AimArchives.cpp -AimFacialIndex.cpp -AimHistory.cpp -AimLinks.cpp -AimMembers.cpp -AimPolicies.cpp -AimSort.cpp -BobbyR.cpp -BobbyRAmmo.cpp -BobbyRArmour.cpp -BobbyRGuns.cpp -BobbyRMailOrder.cpp -BobbyRMisc.cpp -BobbyRShipments.cpp -BobbyRUsed.cpp -BrokenLink.cpp -CharProfile.cpp -email.cpp -files.cpp -finances.cpp -florist Cards.cpp -florist Gallery.cpp -florist Order Form.cpp -florist.cpp -funeral.cpp -history.cpp -IMP AboutUs.cpp -IMP Attribute Entrance.cpp -IMP Attribute Finish.cpp -IMP Attribute Selection.cpp -IMP Begin Screen.cpp -IMP Compile Character.cpp -IMP Confirm.cpp -IMP Finish.cpp -IMP HomePage.cpp -IMP MainPage.cpp -IMP Personality Entrance.cpp -IMP Personality Finish.cpp -IMP Personality Quiz.cpp -IMP Portraits.cpp -IMP Skill Trait.cpp -IMP Text System.cpp -IMP Voices.cpp -IMPVideoObjects.cpp -insurance Comments.cpp -insurance Contract.cpp -insurance Info.cpp -insurance.cpp -laptop.cpp -mercs Account.cpp -mercs Files.cpp -mercs No Account.cpp -mercs.cpp -personnel.cpp -sirtech.cpp -Store Inventory.cpp -Creating library... -

---------------------Configuration: Strategic - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP68.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /I "..\Standard Gaming Platform" /I "..\TileEngine" /I "..\\" /I "..\Tactical" /I "..\Utils" /I "..\tacticalai" /I "..\Editor" /I "..\Laptop" /I ".\\" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /FR"Release/" /Fp"Release/Strategic.pch" /YX"Strategic All.h" /Fo"Release/" /Fd"Release/" /FD /c -"C:\ja2\build\Strategic\AI Viewer.cpp" -"C:\ja2\build\Strategic\Assignments.cpp" -"C:\ja2\build\Strategic\Auto Resolve.cpp" -"C:\ja2\build\Strategic\Campaign Init.cpp" -"C:\ja2\build\Strategic\Creature Spreading.cpp" -"C:\ja2\build\Strategic\Game Clock.cpp" -"C:\ja2\build\Strategic\Game Event Hook.cpp" -"C:\ja2\build\Strategic\Game Events.cpp" -"C:\ja2\build\Strategic\Game Init.cpp" -"C:\ja2\build\Strategic\Hourly Update.cpp" -"C:\ja2\build\Strategic\Map Screen Helicopter.cpp" -"C:\ja2\build\Strategic\Map Screen Interface Border.cpp" -"C:\ja2\build\Strategic\Map Screen Interface Bottom.cpp" -"C:\ja2\build\Strategic\Map Screen Interface Map Inventory.cpp" -"C:\ja2\build\Strategic\Map Screen Interface Map.cpp" -"C:\ja2\build\Strategic\Map Screen Interface TownMine Info.cpp" -"C:\ja2\build\Strategic\Map Screen Interface.cpp" -"C:\ja2\build\Strategic\mapscreen.cpp" -"C:\ja2\build\Strategic\Meanwhile.cpp" -"C:\ja2\build\Strategic\Merc Contract.cpp" -"C:\ja2\build\Strategic\Player Command.cpp" -"C:\ja2\build\Strategic\PreBattle Interface.cpp" -"C:\ja2\build\Strategic\Queen Command.cpp" -"C:\ja2\build\Strategic\Quest Debug System.cpp" -"C:\ja2\build\Strategic\Quests.cpp" -"C:\ja2\build\Strategic\QuestText.cpp" -"C:\ja2\build\Strategic\Scheduling.cpp" -"C:\ja2\build\Strategic\Strategic AI.cpp" -"C:\ja2\build\Strategic\Strategic Event Handler.cpp" -"C:\ja2\build\Strategic\Strategic Merc Handler.cpp" -"C:\ja2\build\Strategic\Strategic Mines.cpp" -"C:\ja2\build\Strategic\Strategic Movement Costs.cpp" -"C:\ja2\build\Strategic\Strategic Movement.cpp" -"C:\ja2\build\Strategic\Strategic Pathing.cpp" -"C:\ja2\build\Strategic\Strategic Status.cpp" -"C:\ja2\build\Strategic\Strategic Town Loyalty.cpp" -"C:\ja2\build\Strategic\strategic town reputation.cpp" -"C:\ja2\build\Strategic\Strategic Turns.cpp" -"C:\ja2\build\Strategic\strategic.cpp" -"C:\ja2\build\Strategic\strategicmap.cpp" -"C:\ja2\build\Strategic\Town Militia.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP68.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP69.tmp" with contents -[ -/nologo /out:"Release\Strategic.lib" -".\Release\AI Viewer.obj" -.\Release\Assignments.obj -".\Release\Auto Resolve.obj" -".\Release\Campaign Init.obj" -".\Release\Creature Spreading.obj" -".\Release\Game Clock.obj" -".\Release\Game Event Hook.obj" -".\Release\Game Events.obj" -".\Release\Game Init.obj" -".\Release\Hourly Update.obj" -".\Release\Map Screen Helicopter.obj" -".\Release\Map Screen Interface Border.obj" -".\Release\Map Screen Interface Bottom.obj" -".\Release\Map Screen Interface Map Inventory.obj" -".\Release\Map Screen Interface Map.obj" -".\Release\Map Screen Interface TownMine Info.obj" -".\Release\Map Screen Interface.obj" -.\Release\mapscreen.obj -.\Release\Meanwhile.obj -".\Release\Merc Contract.obj" -".\Release\Player Command.obj" -".\Release\PreBattle Interface.obj" -".\Release\Queen Command.obj" -".\Release\Quest Debug System.obj" -.\Release\Quests.obj -.\Release\QuestText.obj -.\Release\Scheduling.obj -".\Release\Strategic AI.obj" -".\Release\Strategic Event Handler.obj" -".\Release\Strategic Merc Handler.obj" -".\Release\Strategic Mines.obj" -".\Release\Strategic Movement Costs.obj" -".\Release\Strategic Movement.obj" -".\Release\Strategic Pathing.obj" -".\Release\Strategic Status.obj" -".\Release\Strategic Town Loyalty.obj" -".\Release\strategic town reputation.obj" -".\Release\Strategic Turns.obj" -.\Release\strategic.obj -.\Release\strategicmap.obj -".\Release\Town Militia.obj" -] -Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP69.tmp" -

Output Window

-Compiling... -AI Viewer.cpp -GENERATED PCH FOR STRATEGIC PROJECT. -Assignments.cpp -Auto Resolve.cpp -Campaign Init.cpp -Creature Spreading.cpp -Game Clock.cpp -Game Event Hook.cpp -Game Events.cpp -Game Init.cpp -Hourly Update.cpp -Map Screen Helicopter.cpp -Map Screen Interface Border.cpp -Map Screen Interface Bottom.cpp -Map Screen Interface Map Inventory.cpp -Map Screen Interface Map.cpp -Map Screen Interface TownMine Info.cpp -Map Screen Interface.cpp -mapscreen.cpp -Meanwhile.cpp -Merc Contract.cpp -Player Command.cpp -PreBattle Interface.cpp -Queen Command.cpp -Quest Debug System.cpp -Quests.cpp -QuestText.cpp -Scheduling.cpp -Strategic AI.cpp -Strategic Event Handler.cpp -Strategic Merc Handler.cpp -Strategic Mines.cpp -Strategic Movement Costs.cpp -Strategic Movement.cpp -Strategic Pathing.cpp -Strategic Status.cpp -Strategic Town Loyalty.cpp -strategic town reputation.cpp -Strategic Turns.cpp -strategic.cpp -strategicmap.cpp -Town Militia.cpp -Creating library... -

---------------------Configuration: ja2 - Win32 Release-------------------- -

-

Command Lines

-Creating command line "rc.exe /l 0x409 /fo"Release/ja2.res" /i "Res" /i ".\Res" /d "NDEBUG" "C:\ja2\build\Res\ja2.rc"" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6A.tmp" with contents -[ -/nologo /G5 /MT /W3 /GX /Zi /O2 /Ob2 /I ".\Standard Gaming Platform" /I ".\TileEngine" /I ".\Tactical" /I ".\Utils" /I ".\TacticalAI" /I ".\Editor" /I ".\Strategic" /I ".\laptop" /I ".\\" /D "CALLBACKTIMER" /D "PRECOMPILEDHEADERS" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "JA2" /D "XML_STATIC" /D "CINTERFACE" /FR"Release/" /Fp"Release/JA2.pch" /YX"JA2 All.h" /Fo"Release/" /Fd"Release/" /FD /O2b2 /c -"C:\ja2\build\Utils\_Ja25GermanText.cpp" -"C:\ja2\build\aniviewscreen.cpp" -"C:\ja2\build\Credits.cpp" -"C:\ja2\build\Utils\Cursors.cpp" -"C:\ja2\build\Fade Screen.cpp" -"C:\ja2\build\GameInitOptionsScreen.cpp" -"C:\ja2\build\gameloop.cpp" -"C:\ja2\build\gamescreen.cpp" -"C:\ja2\build\GameSettings.cpp" -"C:\ja2\build\GameVersion.cpp" -"C:\ja2\build\HelpScreen.cpp" -"C:\ja2\build\Init.cpp" -"C:\ja2\build\Intro.cpp" -"C:\ja2\build\JA2 Splash.cpp" -"C:\ja2\build\jascreens.cpp" -"C:\ja2\build\Loading Screen.cpp" -"C:\ja2\build\MainMenuScreen.cpp" -"C:\ja2\build\MessageBoxScreen.cpp" -"C:\ja2\build\Options Screen.cpp" -"C:\ja2\build\SaveLoadGame.cpp" -"C:\ja2\build\SaveLoadScreen.cpp" -"C:\ja2\build\SCREENS.cpp" -"C:\ja2\build\Sys Globals.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6A.tmp" -Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6B.tmp" with contents -[ -libexpatMT.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib winmm.lib smackw32.lib mss32.lib /nologo /subsystem:windows /profile /map:"Release/ja2_cvs.map" /machine:I386 /out:"..\ja2_cvs.exe" -.\Release\_Ja25GermanText.obj -.\Release\aniviewscreen.obj -.\Release\Credits.obj -.\Release\Cursors.obj -".\Release\Fade Screen.obj" -.\Release\GameInitOptionsScreen.obj -.\Release\gameloop.obj -.\Release\gamescreen.obj -.\Release\GameSettings.obj -.\Release\GameVersion.obj -.\Release\HelpScreen.obj -.\Release\Init.obj -.\Release\Intro.obj -".\Release\JA2 Splash.obj" -.\Release\jascreens.obj -".\Release\Loading Screen.obj" -.\Release\MainMenuScreen.obj -.\Release\MessageBoxScreen.obj -".\Release\Options Screen.obj" -.\Release\SaveLoadGame.obj -.\Release\SaveLoadScreen.obj -.\Release\SCREENS.obj -".\Release\Sys Globals.obj" -.\Release\ja2.res -.\TileEngine\Release\TileEngine.lib -".\Standard Gaming Platform\Release\Standard Gaming Platform.lib" -.\Tactical\Release\Tactical.lib -.\Utils\Release\Utils.lib -.\TacticalAI\Release\TacticalAI.lib -.\Editor\Release\Editor.lib -.\Laptop\Release\Laptop.lib -.\Strategic\Release\Strategic.lib -] -Creating command line "link.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6B.tmp" -

Output Window

-Compiling resources... -Compiling... -_Ja25GermanText.cpp -GENERATED PCH FOR UTILS PROJECT. -aniviewscreen.cpp -GENERATED PCH FOR JA2 PROJECT. -Credits.cpp -Cursors.cpp -GENERATED PCH FOR UTILS PROJECT. -Fade Screen.cpp -GENERATED PCH FOR JA2 PROJECT. -GameInitOptionsScreen.cpp -gameloop.cpp -gamescreen.cpp -GameSettings.cpp -GameVersion.cpp -HelpScreen.cpp -Init.cpp -Intro.cpp -JA2 Splash.cpp -jascreens.cpp -Loading Screen.cpp -MainMenuScreen.cpp -MessageBoxScreen.cpp -Options Screen.cpp -SaveLoadGame.cpp -SaveLoadScreen.cpp -SCREENS.cpp -Sys Globals.cpp Linking... -LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF

Results

-ja2_cvs.exe - 0 error(s), 1 warning(s) +ja2_cvs.exe - 0 error(s), 0 warning(s) diff --git a/JA2.sln b/JA2.sln index b9e9920f..e37dbaab 100644 --- a/JA2.sln +++ b/JA2.sln @@ -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 diff --git a/JA2.suo b/JA2.suo index ccabe3bc..e63e23a2 100644 Binary files a/JA2.suo and b/JA2.suo differ diff --git a/JA2.vcproj b/JA2.vcproj index 5de4515d..b3577a3c 100644 --- a/JA2.vcproj +++ b/JA2.vcproj @@ -3,8 +3,10 @@ ProjectType="Visual C++" Version="7.10" Name="ja2" - SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA" - SccLocalPath="..\..\ja2\build"> + SccProjectName="" + SccAuxPath="" + SccLocalPath="" + SccProvider=""> @@ -20,7 +22,7 @@ + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2" + DisableSpecificWarnings="4292;4189"/> + CompileAs="2" + DisableSpecificWarnings="4292"/> + CompileAs="2"/> + CompileAs="2" + DisableSpecificWarnings="4292"/> + + diff --git a/Laptop/BobbyRGuns.cpp b/Laptop/BobbyRGuns.cpp index 141cce4c..86f5af33 100644 --- a/Laptop/BobbyRGuns.cpp +++ b/Laptop/BobbyRGuns.cpp @@ -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; diff --git a/Laptop/IMP Begin Screen.cpp b/Laptop/IMP Begin Screen.cpp index 4aff5b2f..efca9fb4 100644 --- a/Laptop/IMP Begin Screen.cpp +++ b/Laptop/IMP Begin Screen.cpp @@ -1244,7 +1244,7 @@ void Print8CharacterOnlyString( void ) BOOLEAN CheckCharacterInputForEgg( void ) { - MERC_HIRE_STRUCT HireMercStruct; +// MERC_HIRE_STRUCT HireMercStruct; #ifndef JA2BETAVERSION return( FALSE ); diff --git a/Laptop/Laptop.vcproj b/Laptop/Laptop.vcproj index 937eb4c6..ec266e0a 100644 --- a/Laptop/Laptop.vcproj +++ b/Laptop/Laptop.vcproj @@ -3,8 +3,10 @@ ProjectType="Visual C++" Version="7.10" Name="Laptop" - SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA" - SccLocalPath="..\..\..\ja2\build"> + SccProjectName="" + SccAuxPath="" + SccLocalPath="" + SccProvider=""> @@ -21,7 +23,7 @@ Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\TileEngine,..\Utils,..\TacticalAI,..\Editor,..\Tactical,..\strategic,.\" + AdditionalIncludeDirectories=""..\Standard Gaming Platform";..\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"/> + CompileAs="2" + DisableSpecificWarnings="4292;4189"/> + CompileAs="2" + DisableSpecificWarnings="4292"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> @@ -3505,79 +3514,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\IMP Skill Trait.cpp"> @@ -4811,7 +4748,7 @@ RelativePath="IMP Portraits.h"> + RelativePath=".\IMP Skill Trait.h"> @@ -4855,6 +4792,9 @@ + + diff --git a/Laptop/laptop.cpp b/Laptop/laptop.cpp index 41f75a30..316c3941 100644 --- a/Laptop/laptop.cpp +++ b/Laptop/laptop.cpp @@ -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; diff --git a/Res/ja2.aps b/Res/ja2.aps index 06012e76..4e5fea90 100644 Binary files a/Res/ja2.aps and b/Res/ja2.aps differ diff --git a/SaveLoadGame.cpp b/SaveLoadGame.cpp index e9501312..130399e5 100644 --- a/SaveLoadGame.cpp +++ b/SaveLoadGame.cpp @@ -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 ); -} +} \ No newline at end of file diff --git a/SaveLoadScreen.cpp b/SaveLoadScreen.cpp index aa52081b..3c5c2fc1 100644 --- a/SaveLoadScreen.cpp +++ b/SaveLoadScreen.cpp @@ -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 ]) ); diff --git a/Standard Gaming Platform/Standard Gaming Platform.vcproj b/Standard Gaming Platform/Standard Gaming Platform.vcproj index 706637a5..0e98bfcd 100644 --- a/Standard Gaming Platform/Standard Gaming Platform.vcproj +++ b/Standard Gaming Platform/Standard Gaming Platform.vcproj @@ -341,8 +341,7 @@ WarningLevel="3" SuppressStartupBanner="TRUE" DebugInformationFormat="1" - CompileAs="0" - DisableSpecificWarnings="4292"/> + CompileAs="0"/> 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; diff --git a/Strategic/Game Event Hook.h b/Strategic/Game Event Hook.h index 051c92a5..4bd6afcd 100644 --- a/Strategic/Game Event Hook.h +++ b/Strategic/Game Event Hook.h @@ -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, diff --git a/Strategic/Game Init.cpp b/Strategic/Game Init.cpp index 0bcfa42c..fb894678 100644 --- a/Strategic/Game Init.cpp +++ b/Strategic/Game Init.cpp @@ -840,4 +840,4 @@ void ReStartingGame() gpCustomizableTimerCallback = NULL; gubCheatLevel = STARTING_CHEAT_LEVEL; -} +} \ No newline at end of file diff --git a/Strategic/Map Screen Interface Bottom.cpp b/Strategic/Map Screen Interface Bottom.cpp index 39b641e0..11bf4b50 100644 --- a/Strategic/Map Screen Interface Bottom.cpp +++ b/Strategic/Map Screen Interface Bottom.cpp @@ -1568,8 +1568,8 @@ BOOLEAN CommonTimeCompressionChecks( void ) return( TRUE ); } - if ( gfInAirRaid ) - return TRUE; +// if ( gfInAirRaid ) +// return TRUE; return( FALSE ); } diff --git a/Strategic/Queen Command.cpp b/Strategic/Queen Command.cpp index af69a6bd..2abbccb1 100644 --- a/Strategic/Queen Command.cpp +++ b/Strategic/Queen Command.cpp @@ -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"); diff --git a/Strategic/Strategic AI.cpp b/Strategic/Strategic AI.cpp index 71c37c33..bd94efcb 100644 --- a/Strategic/Strategic AI.cpp +++ b/Strategic/Strategic AI.cpp @@ -5519,4 +5519,4 @@ GROUP* FindPendingGroupForGarrisonSector( UINT8 ubSectorID ) } } return NULL; -} +} \ No newline at end of file diff --git a/Strategic/Strategic.vcproj b/Strategic/Strategic.vcproj index b7b3a15f..28bc512d 100644 --- a/Strategic/Strategic.vcproj +++ b/Strategic/Strategic.vcproj @@ -3,8 +3,10 @@ ProjectType="Visual C++" Version="7.10" Name="Strategic" - SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA" - SccLocalPath="..\..\..\ja2\build"> + SccProjectName="" + SccAuxPath="" + SccLocalPath="" + SccProvider=""> @@ -20,7 +22,7 @@ @@ -71,8 +73,8 @@ + CompileAs="2"/> + CompileAs="2" + DisableSpecificWarnings="4292"/> + CompileAs="2"/> + CompileAs="2" + DisableSpecificWarnings="4292;4189"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> bCamo + pSoldier->wornCamo ) > 0 ) + if ( ( pSoldier->bCamo + pSoldier->wornCamo ) > 50 ) { strcpy( zColFilename, "ANIMS\\camo.COL" ); return( 1 ); diff --git a/Tactical/ArmsDealerInvInit.cpp b/Tactical/ArmsDealerInvInit.cpp index b12735ba..e3780d33 100644 --- a/Tactical/ArmsDealerInvInit.cpp +++ b/Tactical/ArmsDealerInvInit.cpp @@ -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) diff --git a/Tactical/Handle Items.cpp b/Tactical/Handle Items.cpp index 95d83224..0456c32f 100644 --- a/Tactical/Handle Items.cpp +++ b/Tactical/Handle Items.cpp @@ -5430,4 +5430,4 @@ void SoldierStealItemFromSoldier( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, gpTempSoldier = pSoldier; gsTempGridno = sGridNo; SetCustomizableTimerCallbackAndDelay( 1000, CheckForPickedOwnership, TRUE ); -} +} \ No newline at end of file diff --git a/Tactical/Handle UI.cpp b/Tactical/Handle UI.cpp index f581ebe8..90551f6e 100644 --- a/Tactical/Handle UI.cpp +++ b/Tactical/Handle UI.cpp @@ -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; diff --git a/Tactical/Interface Items.cpp b/Tactical/Interface Items.cpp index 3ea6e414..78e899a6 100644 --- a/Tactical/Interface Items.cpp +++ b/Tactical/Interface Items.cpp @@ -1,4 +1,3 @@ -// WANNE 2 #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 ); } diff --git a/Tactical/Interface Panels.cpp b/Tactical/Interface Panels.cpp index 11aef347..fdd80b26 100644 --- a/Tactical/Interface Panels.cpp +++ b/Tactical/Interface Panels.cpp @@ -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; + } } } } \ No newline at end of file diff --git a/Tactical/Inventory Choosing.cpp b/Tactical/Inventory Choosing.cpp index 8e7c20ed..1e6bddf1 100644 --- a/Tactical/Inventory Choosing.cpp +++ b/Tactical/Inventory Choosing.cpp @@ -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); diff --git a/Tactical/Inventory Choosing.h b/Tactical/Inventory Choosing.h index 2a261fa6..29b07daa 100644 --- a/Tactical/Inventory Choosing.h +++ b/Tactical/Inventory Choosing.h @@ -109,6 +109,7 @@ enum SCOPE, ATTACHMENTS, KNIVES, + ENEMYAMMOTYPES, MAX_ITEM_TYPES }; diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h index 4197bab4..54eddec6 100644 --- a/Tactical/Item Types.h +++ b/Tactical/Item Types.h @@ -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]; diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index e165ad5d..9875093b 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -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 0 ) + { + for ( int i=0;iusItem) ); } 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;iubExtFlags[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; diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 47b3a569..9bbd62af 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -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 ); } diff --git a/Tactical/Overhead.h b/Tactical/Overhead.h index 0cd99adc..f80c442e 100644 --- a/Tactical/Overhead.h +++ b/Tactical/Overhead.h @@ -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 ); diff --git a/Tactical/Points.cpp b/Tactical/Points.cpp index 23629d59..ed174d41 100644 --- a/Tactical/Points.cpp +++ b/Tactical/Points.cpp @@ -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 ); diff --git a/Tactical/Rain.cpp b/Tactical/Rain.cpp index 7d7bec46..ea360f59 100644 --- a/Tactical/Rain.cpp +++ b/Tactical/Rain.cpp @@ -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 ); diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index b744321f..63ea5038 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -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 ) { diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index a92f81b2..3f382acb 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -331,6 +331,7 @@ enum HIT_BY_TEARGAS = 0x01, HIT_BY_MUSTARDGAS = 0x02, HIT_BY_CREATUREGAS = 0x04, + HIT_BY_BURNABLEGAS = 0x08, }; diff --git a/Tactical/Soldier Profile.cpp b/Tactical/Soldier Profile.cpp index 069b4c5c..f9a8493b 100644 --- a/Tactical/Soldier Profile.cpp +++ b/Tactical/Soldier Profile.cpp @@ -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; diff --git a/Tactical/Tactical.vcproj b/Tactical/Tactical.vcproj index 8afab9f1..8521eb70 100644 --- a/Tactical/Tactical.vcproj +++ b/Tactical/Tactical.vcproj @@ -3,8 +3,10 @@ ProjectType="Visual C++" Version="7.10" Name="Tactical" - SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA" - SccLocalPath="..\..\..\ja2\build"> + SccProjectName="" + SccAuxPath="" + SccLocalPath="" + SccProvider=""> @@ -20,8 +22,8 @@ + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2" + DisableSpecificWarnings="4292"/> + CompileAs="2" + DisableSpecificWarnings="4292;4189"/> + CompileAs="2"/> @@ -380,9 +384,14 @@ + CompileAs="2"/> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_AmmoStrings.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_AmmoTypes.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_Armour.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_AttachmentInfo.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_Attachments.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_BurstSounds.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_ComboMergeInfo.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_CompatibleFaceItems.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_EnemyItemChoice.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_EnemyWeaponChoice.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_Explosive.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_IMPItemChoices.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_IncompatibleAttachments.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath="..\Utils\XML_Items.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_Launchable.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_Magazine.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_Merge.cpp"> + + + + + + @@ -6837,6 +5631,9 @@ + + @@ -6900,6 +5697,9 @@ + + @@ -6964,7 +5764,7 @@ RelativePath="World Items.h"> + RelativePath=".\XML.h"> 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 diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 9ccd0894..d41ad077 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -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%d\r\n", Weapon[cnt].ubHitVolume); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sSound); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sBurstSound); + FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sSilencedBurstSound); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sReloadSound); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sLocknLoadSound); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].bBurstAP); @@ -827,10 +855,12 @@ BOOLEAN WriteWeaponStats() FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].ubMagSize); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].usRange); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].usReloadDelay); + FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sAniDelay); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].ubAttackVolume); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].ubHitVolume); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sSound); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sBurstSound); + FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sSilencedBurstSound); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sReloadSound); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].sLocknLoadSound); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].silencedSound ); @@ -839,6 +869,8 @@ BOOLEAN WriteWeaponStats() FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].APsToReload); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].swapClips ); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].maxdistformessydeath); + FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].AutoPenalty); + FilePrintf(hFile,"\t\t%d\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; } + diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 880d78ad..32cf36e6 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -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); diff --git a/Tactical/World Items.cpp b/Tactical/World Items.cpp index 386d993a..07097093 100644 --- a/Tactical/World Items.cpp +++ b/Tactical/World Items.cpp @@ -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. diff --git a/Tactical/XML.h b/Tactical/XML.h index 2f68f0b5..f168a32f 100644 --- a/Tactical/XML.h +++ b/Tactical/XML.h @@ -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 \ No newline at end of file diff --git a/Tactical/XML_AmmoStrings.cpp b/Tactical/XML_AmmoStrings.cpp new file mode 100644 index 00000000..9f40e913 --- /dev/null +++ b/Tactical/XML_AmmoStrings.cpp @@ -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;iszCharData),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;iszCharData),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,"\r\n"); + for(cnt = 0;cnt < MAXITEMS;cnt++) + { + FilePrintf(hFile,"\t\r\n"); + + UINT16 * szRemainder = AmmoCaliber[cnt]; //the remaining string to be output (for making valid XML) + + FilePrintf(hFile,"\t\t"); + 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,"&"); + szRemainder++; + break; + + case '<': + FilePrintf(hFile,"<"); + szRemainder++; + break; + + case '>': + FilePrintf(hFile,">"); + szRemainder++; + break; + + case '\'': + FilePrintf(hFile,"'"); + szRemainder++; + break; + + case '\"': + FilePrintf(hFile,"""); + szRemainder++; + break; + } + } + FilePrintf(hFile,"\r\n"); + + + szRemainder = BobbyRayAmmoCaliber[cnt]; //the remaining string to be output (for making valid XML) + + FilePrintf(hFile,"\t\t"); + 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,"&"); + szRemainder++; + break; + + case '<': + FilePrintf(hFile,"<"); + szRemainder++; + break; + + case '>': + FilePrintf(hFile,">"); + szRemainder++; + break; + + case '\'': + FilePrintf(hFile,"'"); + szRemainder++; + break; + + case '\"': + FilePrintf(hFile,"""); + szRemainder++; + break; + } + } + FilePrintf(hFile,"\r\n"); + + + FilePrintf(hFile,"\t\r\n"); + } + FilePrintf(hFile,"\r\n"); + } + FileClose( hFile ); + + return( TRUE ); +} \ No newline at end of file diff --git a/Tactical/XML_BurstSounds.cpp b/Tactical/XML_BurstSounds.cpp new file mode 100644 index 00000000..04728eed --- /dev/null +++ b/Tactical/XML_BurstSounds.cpp @@ -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;iszCharData),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,"\r\n"); + for(cnt = 0;cnt < 19;cnt++) + { + FilePrintf(hFile,"\t"); + + 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,"&"); + szRemainder++; + break; + + case '<': + FilePrintf(hFile,"<"); + szRemainder++; + break; + + case '>': + FilePrintf(hFile,">"); + szRemainder++; + break; + + case '\'': + FilePrintf(hFile,"'"); + szRemainder++; + break; + + case '\"': + FilePrintf(hFile,"""); + szRemainder++; + break; + } + } + +// FilePrintf(hFile,"\t\t%s\r\n", szSoundEffects[cnt]); + + FilePrintf(hFile,"\r\n"); + } + FilePrintf(hFile,"\r\n"); + } + FileClose( hFile ); + + return( TRUE ); +} + diff --git a/Tactical/opplist.cpp b/Tactical/opplist.cpp index 692d5caf..5ae2d064 100644 --- a/Tactical/opplist.cpp +++ b/Tactical/opplist.cpp @@ -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); } diff --git a/TacticalAI/AIUtils.cpp b/TacticalAI/AIUtils.cpp index 004667b6..f3d22475 100644 --- a/TacticalAI/AIUtils.cpp +++ b/TacticalAI/AIUtils.cpp @@ -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 diff --git a/TacticalAI/Attacks.cpp b/TacticalAI/Attacks.cpp index 58e529ed..24f3b4dc 100644 --- a/TacticalAI/Attacks.cpp +++ b/TacticalAI/Attacks.cpp @@ -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"); diff --git a/TacticalAI/DecideAction.cpp b/TacticalAI/DecideAction.cpp index 01b19bc6..1cf32066 100644 --- a/TacticalAI/DecideAction.cpp +++ b/TacticalAI/DecideAction.cpp @@ -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 diff --git a/TacticalAI/FindLocations.cpp b/TacticalAI/FindLocations.cpp index d629e4cf..0db54efe 100644 --- a/TacticalAI/FindLocations.cpp +++ b/TacticalAI/FindLocations.cpp @@ -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; diff --git a/TacticalAI/TacticalAI.vcproj b/TacticalAI/TacticalAI.vcproj index 4b59eaba..18b76045 100644 --- a/TacticalAI/TacticalAI.vcproj +++ b/TacticalAI/TacticalAI.vcproj @@ -3,8 +3,10 @@ ProjectType="Visual C++" Version="7.10" Name="TacticalAI" - SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA" - SccLocalPath="..\..\..\ja2\build"> + SccProjectName="" + SccAuxPath="" + SccLocalPath="" + SccProvider=""> @@ -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=""..\Standard Gaming Platform";..\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"/> + CompileAs="2" + DisableSpecificWarnings="4292;4189"/> @@ -179,8 +182,8 @@ + CompileAs="2" + DisableSpecificWarnings="4292"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2"/> 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 ); -} +} \ No newline at end of file diff --git a/TileEngine/Explosion Control.h b/TileEngine/Explosion Control.h index 54f8dbb4..1f914601 100644 --- a/TileEngine/Explosion Control.h +++ b/TileEngine/Explosion Control.h @@ -55,7 +55,7 @@ enum EXPLOSION_TYPES TARGAS_EXP, SMOKE_EXP, MUSTARD_EXP, - + BURN_EXP, NUM_EXP_TYPES } ; diff --git a/TileEngine/Shade Table Util.cpp b/TileEngine/Shade Table Util.cpp index 1d7bc47d..1867a1d5 100644 --- a/TileEngine/Shade Table Util.cpp +++ b/TileEngine/Shade Table Util.cpp @@ -215,4 +215,4 @@ BOOLEAN SaveShadeTable( HVOBJECT pObj, UINT32 uiTileTypeIndex ) BOOLEAN DeleteShadeTableDir( ) { return( RemoveFileManDirectory( SHADE_TABLE_DIR, TRUE ) ); -} +} \ No newline at end of file diff --git a/TileEngine/SmokeEffects.cpp b/TileEngine/SmokeEffects.cpp index 8f837d16..1253fe54 100644 --- a/TileEngine/SmokeEffects.cpp +++ b/TileEngine/SmokeEffects.cpp @@ -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 ] ) ) diff --git a/TileEngine/SmokeEffects.h b/TileEngine/SmokeEffects.h index b0af04ee..d2ddd5e2 100644 --- a/TileEngine/SmokeEffects.h +++ b/TileEngine/SmokeEffects.h @@ -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 diff --git a/TileEngine/Tile Animation.cpp b/TileEngine/Tile Animation.cpp index 6a03cad8..b1c84153 100644 --- a/TileEngine/Tile Animation.cpp +++ b/TileEngine/Tile Animation.cpp @@ -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 ) ); diff --git a/TileEngine/TileDat.cpp b/TileEngine/TileDat.cpp index 2e853333..8ee3a561 100644 --- a/TileEngine/TileDat.cpp +++ b/TileEngine/TileDat.cpp @@ -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, diff --git a/TileEngine/TileDat.h b/TileEngine/TileDat.h index 8820dbe7..30edb004 100644 --- a/TileEngine/TileDat.h +++ b/TileEngine/TileDat.h @@ -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, diff --git a/TileEngine/TileEngine.vcproj b/TileEngine/TileEngine.vcproj index 9167cac9..651a2610 100644 --- a/TileEngine/TileEngine.vcproj +++ b/TileEngine/TileEngine.vcproj @@ -3,8 +3,10 @@ ProjectType="Visual C++" Version="7.10" Name="TileEngine" - SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA" - SccLocalPath="..\..\..\ja2\build"> + SccProjectName="" + SccAuxPath="" + SccLocalPath="" + SccProvider=""> @@ -20,8 +22,8 @@ + CompileAs="2"/> + CompileAs="2" + DisableSpecificWarnings="4292"/> + CompileAs="2"/> + CompileAs="2" + DisableSpecificWarnings="4292;4189"/> @@ -227,8 +237,8 @@ + CompileAs="2"/> @@ -330,7 +340,7 @@ AdditionalOptions="/O2b2 " Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\Utils,..\tacticalai,..\Editor,..\strategic,..\Laptop,.\" + AdditionalIncludeDirectories=""..\Standard Gaming Platform";..\;..\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"/> + CompileAs="2"/> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\physics.cpp"> @@ -3080,6 +3018,9 @@ + + @@ -3095,6 +3036,9 @@ + + diff --git a/TileEngine/lighting.cpp b/TileEngine/lighting.cpp index edc2dacd..5fac760f 100644 --- a/TileEngine/lighting.cpp +++ b/TileEngine/lighting.cpp @@ -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; diff --git a/TileEngine/lighting.h b/TileEngine/lighting.h index 0ffca117..582dcc3b 100644 --- a/TileEngine/lighting.h +++ b/TileEngine/lighting.h @@ -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]; diff --git a/TileEngine/physics.cpp b/TileEngine/physics.cpp index 2cd67691..e006d5ed 100644 --- a/TileEngine/physics.cpp +++ b/TileEngine/physics.cpp @@ -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 ); } diff --git a/TileEngine/renderworld.cpp b/TileEngine/renderworld.cpp index 9eaddcdf..35a2cb0e 100644 --- a/TileEngine/renderworld.cpp +++ b/TileEngine/renderworld.cpp @@ -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 ]; diff --git a/TileEngine/worlddef.h b/TileEngine/worlddef.h index b80f1d41..81b036b0 100644 --- a/TileEngine/worlddef.h +++ b/TileEngine/worlddef.h @@ -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 diff --git a/Utils/Sound Control.h b/Utils/Sound Control.h index 2d4a5c81..8f2161a1 100644 --- a/Utils/Sound Control.h +++ b/Utils/Sound Control.h @@ -25,7 +25,7 @@ #define GROUP_PLAYER 1000 #define GROUP_AMBIENT 0 -#define MAX_SAMPLES 5000 +#define MAX_SAMPLES 10000 // SOUNDS ENUMERATION diff --git a/Utils/Text.h b/Utils/Text.h index fbd2d92d..2cd56b3b 100644 --- a/Utils/Text.h +++ b/Utils/Text.h @@ -320,6 +320,8 @@ enum STR_BLOODCATS_TURN, STR_AUTOFIRE, STR_NO_AUTOFIRE, + STR_ACCURATE, + STR_INACCURATE }; #define LARGE_STRING_LENGTH 200 diff --git a/Utils/Utils.vcproj b/Utils/Utils.vcproj index ebc7c52e..3baae2e1 100644 --- a/Utils/Utils.vcproj +++ b/Utils/Utils.vcproj @@ -3,8 +3,10 @@ ProjectType="Visual C++" Version="7.10" Name="Utils" - SccProjectName=""$/Jagged Alliance 2/Development/Programming/Jagged Alliance 2/Build", AVAAAAAA" - SccLocalPath="..\..\..\ja2\build"> + SccProjectName="" + SccAuxPath="" + SccLocalPath="" + SccProvider=""> @@ -21,7 +23,7 @@ Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\Standard Gaming Platform,..\,..\Tactical,..\TileEngine,..\strategic,..\editor,.\" + AdditionalIncludeDirectories=""..\Standard Gaming Platform";..\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"/> @@ -125,8 +127,8 @@ + CompileAs="2"/> + CompileAs="2"/> + CompileAs="2" + DisableSpecificWarnings="4292;4189"/> + CompileAs="2" + DisableSpecificWarnings="4292"/> + CompileAs="2"/> + CompileAs="2"/> - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\INIReader.cpp"> @@ -3133,234 +3070,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_Strings.cpp"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + RelativePath=".\XML_Strings2.cpp"> + + @@ -3386,7 +3107,7 @@ RelativePath="Font Control.h"> + RelativePath=".\INIReader.h"> diff --git a/Utils/XML_Items.cpp b/Utils/XML_Items.cpp index 3ff93adb..7a17e001 100644 --- a/Utils/XML_Items.cpp +++ b/Utils/XML_Items.cpp @@ -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%d\r\n", Item[cnt].burstsizebonus ); FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].bestlaserrange ); FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].bursttohitbonus ); - FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].autofirebonus ); + FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].autofiretohitbonus); + FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].APBonus ); FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].percentburstfireapreduction ); FilePrintf(hFile,"\t\t%d\r\n", Item[cnt].percentautofireapreduction ); diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 911658e4..01749d58 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -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", diff --git a/gamescreen.cpp b/gamescreen.cpp index d0ceccac..9611481f 100644 --- a/gamescreen.cpp +++ b/gamescreen.cpp @@ -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"));