- Added options for delaying veteran militia training and mobile militia training. - Added cost modifiers to promoting green militia to regular and promoting regular to veteran.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@595 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
AcyForsythe
2006-10-08 05:31:39 +00:00
parent d855a34473
commit 50f6bb35ed
11 changed files with 246 additions and 117 deletions
+4
View File
@@ -485,6 +485,8 @@ void LoadGameExternalOptions()
//gGameExternalOptions.gfUseAutoSave = iniReader.ReadBoolean("JA2 Gameplay Settings","USE_AUTO_SAVE",FALSE); //gGameExternalOptions.gfUseAutoSave = iniReader.ReadBoolean("JA2 Gameplay Settings","USE_AUTO_SAVE",FALSE);
// Militia settings // Militia settings
gGameExternalOptions.guiAllowMilitiaGroupsDelay = iniReader.ReadInteger("JA2 Gameplay Settings","ALLOW_MILITIA_MOBILE_DELAY",1);
gGameExternalOptions.guiTrainVeteranMilitiaDelay = iniReader.ReadInteger("JA2 Gameplay Settings","TRAIN_VETERAN_MILITIA_DELAY",1);
gGameExternalOptions.gfTrainVeteranMilitia = iniReader.ReadBoolean("JA2 Gameplay Settings","TRAIN_VETERAN_MILITIA",FALSE); gGameExternalOptions.gfTrainVeteranMilitia = iniReader.ReadBoolean("JA2 Gameplay Settings","TRAIN_VETERAN_MILITIA",FALSE);
gGameExternalOptions.gfAllowMilitiaGroups = iniReader.ReadBoolean("JA2 Gameplay Settings","ALLOW_MILITIA_MOBILE_GROUPS",FALSE); gGameExternalOptions.gfAllowMilitiaGroups = iniReader.ReadBoolean("JA2 Gameplay Settings","ALLOW_MILITIA_MOBILE_GROUPS",FALSE);
gGameExternalOptions.gfmusttrainroaming = iniReader.ReadBoolean("JA2 Gameplay Settings","MUST_TRAIN_MOBILE_MILITIA",FALSE); gGameExternalOptions.gfmusttrainroaming = iniReader.ReadBoolean("JA2 Gameplay Settings","MUST_TRAIN_MOBILE_MILITIA",FALSE);
@@ -502,6 +504,8 @@ void LoadGameExternalOptions()
gGameExternalOptions.iTrainingSquadSize = iniReader.ReadInteger("JA2 Gameplay Settings","MAX_TRAINING_SQUAD_SIZE",10); gGameExternalOptions.iTrainingSquadSize = iniReader.ReadInteger("JA2 Gameplay Settings","MAX_TRAINING_SQUAD_SIZE",10);
gGameExternalOptions.iMilitiaTrainingCost = iniReader.ReadInteger("JA2 Gameplay Settings","MILITIA_TRAINING_COST",750); gGameExternalOptions.iMilitiaTrainingCost = iniReader.ReadInteger("JA2 Gameplay Settings","MILITIA_TRAINING_COST",750);
gGameExternalOptions.iMilitiaCostModifier = iniReader.ReadInteger("JA2 Gameplay Settings","MILITIA_COST_MODIFIER",3); gGameExternalOptions.iMilitiaCostModifier = iniReader.ReadInteger("JA2 Gameplay Settings","MILITIA_COST_MODIFIER",3);
gGameExternalOptions.iRegularCostModifier = iniReader.ReadInteger("JA2 Gameplay Settings","REGULAR_COST_MODIFIER",1);
gGameExternalOptions.iVeteranCostModifier = iniReader.ReadInteger("JA2 Gameplay Settings","VETERAN_COST_MODIFIER",2);
gGameExternalOptions.iMinLoyaltyToTrain = iniReader.ReadInteger("JA2 Gameplay Settings","MIN_LOYALTY_TO_TRAIN",20); gGameExternalOptions.iMinLoyaltyToTrain = iniReader.ReadInteger("JA2 Gameplay Settings","MIN_LOYALTY_TO_TRAIN",20);
//Assignment Settings (training, repairing, doctoring, etc) //Assignment Settings (training, repairing, doctoring, etc)
+4
View File
@@ -156,6 +156,8 @@ typedef struct
INT32 iTrainingSquadSize; INT32 iTrainingSquadSize;
INT32 iMilitiaTrainingCost; INT32 iMilitiaTrainingCost;
INT32 iMilitiaCostModifier; INT32 iMilitiaCostModifier;
INT32 iRegularCostModifier;
INT32 iVeteranCostModifier;
INT32 iMinLoyaltyToTrain; INT32 iMinLoyaltyToTrain;
INT32 iMaxEnemyGroupSize; INT32 iMaxEnemyGroupSize;
@@ -221,6 +223,8 @@ typedef struct
BOOLEAN gfAllowReinforcementsOnlyInCity; BOOLEAN gfAllowReinforcementsOnlyInCity;
UINT32 guiBaseQueenPoolIncrement; UINT32 guiBaseQueenPoolIncrement;
UINT32 guiAllowMilitiaGroupsDelay;
UINT32 guiTrainVeteranMilitiaDelay;
UINT32 guiCreateEachNHours; UINT32 guiCreateEachNHours;
UINT32 guiDivOfOriginalMilitia; UINT32 guiDivOfOriginalMilitia;
UINT32 guiMinMilitiaSquadSize; UINT32 guiMinMilitiaSquadSize;
BIN
View File
Binary file not shown.
+41 -43
View File
@@ -6,7 +6,7 @@
--------------------Configuration: TileEngine - Win32 Release-------------------- --------------------Configuration: TileEngine - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP63.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD0.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 /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\Ambient Control.cpp"
@@ -46,8 +46,8 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP63.tmp" with content
"C:\JA2\Build\TileEngine\worldman.cpp" "C:\JA2\Build\TileEngine\worldman.cpp"
"C:\JA2\Build\TileEngine\XML_ExplosionData.cpp" "C:\JA2\Build\TileEngine\XML_ExplosionData.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP63.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD0.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP64.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD1.tmp" with contents
[ [
/nologo /out:"Release\TileEngine.lib" /nologo /out:"Release\TileEngine.lib"
".\Release\Ambient Control.obj" ".\Release\Ambient Control.obj"
@@ -87,7 +87,7 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP64.tmp" with content
.\Release\worldman.obj .\Release\worldman.obj
.\Release\XML_ExplosionData.obj .\Release\XML_ExplosionData.obj
] ]
Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP64.tmp" Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD1.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
Ambient Control.cpp Ambient Control.cpp
@@ -132,7 +132,7 @@ Creating library...
--------------------Configuration: Standard Gaming Platform - Win32 Release-------------------- --------------------Configuration: Standard Gaming Platform - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP65.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD2.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 /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 Sound Control.cpp"
@@ -172,14 +172,14 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP65.tmp" with content
"C:\JA2\Build\Standard Gaming Platform\vsurface.cpp" "C:\JA2\Build\Standard Gaming Platform\vsurface.cpp"
"C:\JA2\Build\Standard Gaming Platform\WinFont.cpp" "C:\JA2\Build\Standard Gaming Platform\WinFont.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP65.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD2.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP66.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD3.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 /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" "C:\JA2\Build\Standard Gaming Platform\DEBUG.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP66.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD3.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP67.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD4.tmp" with contents
[ [
/nologo /out:".\Release\Standard Gaming Platform.lib" /nologo /out:".\Release\Standard Gaming Platform.lib"
".\Release\Button Sound Control.obj" ".\Release\Button Sound Control.obj"
@@ -221,7 +221,7 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP67.tmp" with content
".\Release\WinFont.obj" ".\Release\WinFont.obj"
".\ddraw.lib" ".\ddraw.lib"
] ]
Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP67.tmp" Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD4.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
Button Sound Control.cpp Button Sound Control.cpp
@@ -275,7 +275,7 @@ Creating library...
--------------------Configuration: Tactical - Win32 Release-------------------- --------------------Configuration: Tactical - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP68.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD5.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 /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\Air Raid.cpp"
@@ -372,14 +372,14 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP68.tmp" with content
"C:\JA2\Build\Tactical\XML_Sounds.cpp" "C:\JA2\Build\Tactical\XML_Sounds.cpp"
"C:\JA2\Build\Tactical\XML_TonyInventory.cpp" "C:\JA2\Build\Tactical\XML_TonyInventory.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP68.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD5.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP69.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD6.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 /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" "C:\JA2\Build\Tactical\LOS.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP69.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD6.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6A.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD7.tmp" with contents
[ [
/nologo /out:"Release\Tactical.lib" /nologo /out:"Release\Tactical.lib"
".\Release\Air Raid.obj" ".\Release\Air Raid.obj"
@@ -477,7 +477,7 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6A.tmp" with content
.\Release\XML_Sounds.obj .\Release\XML_Sounds.obj
.\Release\XML_TonyInventory.obj .\Release\XML_TonyInventory.obj
] ]
Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6A.tmp" Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD7.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
Air Raid.cpp Air Raid.cpp
@@ -586,7 +586,7 @@ Creating library...
--------------------Configuration: Utils - Win32 Release-------------------- --------------------Configuration: Utils - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6B.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD8.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 /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\_DutchText.cpp"
@@ -629,8 +629,8 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6B.tmp" with content
"C:\JA2\Build\Utils\XML_Strings.cpp" "C:\JA2\Build\Utils\XML_Strings.cpp"
"C:\JA2\Build\Utils\XML_Strings2.cpp" "C:\JA2\Build\Utils\XML_Strings2.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6B.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD8.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6C.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD9.tmp" with contents
[ [
/nologo /out:"Release\Utils.lib" /nologo /out:"Release\Utils.lib"
.\Release\_DutchText.obj .\Release\_DutchText.obj
@@ -673,7 +673,7 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6C.tmp" with content
.\Release\XML_Strings.obj .\Release\XML_Strings.obj
.\Release\XML_Strings2.obj .\Release\XML_Strings2.obj
] ]
Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6C.tmp" Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPD9.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
_DutchText.cpp _DutchText.cpp
@@ -732,7 +732,7 @@ Creating library...
--------------------Configuration: TacticalAI - Win32 Release-------------------- --------------------Configuration: TacticalAI - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6D.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDA.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 /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\AIList.cpp"
@@ -750,8 +750,8 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6D.tmp" with content
"C:\JA2\Build\TacticalAI\QuestDebug.cpp" "C:\JA2\Build\TacticalAI\QuestDebug.cpp"
"C:\JA2\Build\TacticalAI\Realtime.cpp" "C:\JA2\Build\TacticalAI\Realtime.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6D.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDA.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6E.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDB.tmp" with contents
[ [
/nologo /out:"Release\TacticalAI.lib" /nologo /out:"Release\TacticalAI.lib"
.\Release\AIList.obj .\Release\AIList.obj
@@ -769,7 +769,7 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6E.tmp" with content
.\Release\QuestDebug.obj .\Release\QuestDebug.obj
.\Release\Realtime.obj .\Release\Realtime.obj
] ]
Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6E.tmp" Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDB.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
AIList.cpp AIList.cpp
@@ -792,7 +792,7 @@ Creating library...
--------------------Configuration: Editor - Win32 Release-------------------- --------------------Configuration: Editor - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6F.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDC.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 /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\Cursor Modes.cpp"
@@ -820,8 +820,8 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6F.tmp" with content
"C:\JA2\Build\Editor\smooth.cpp" "C:\JA2\Build\Editor\smooth.cpp"
"C:\JA2\Build\Editor\Smoothing Utils.cpp" "C:\JA2\Build\Editor\Smoothing Utils.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP6F.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDC.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP70.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDD.tmp" with contents
[ [
/nologo /out:"Release\Editor.lib" /nologo /out:"Release\Editor.lib"
".\Release\Cursor Modes.obj" ".\Release\Cursor Modes.obj"
@@ -849,11 +849,10 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP70.tmp" with content
.\Release\smooth.obj .\Release\smooth.obj
".\Release\Smoothing Utils.obj" ".\Release\Smoothing Utils.obj"
] ]
Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP70.tmp" Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDD.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
Cursor Modes.cpp Cursor Modes.cpp
GENERATED PCH FOR EDITOR PROJECT.
edit_sys.cpp edit_sys.cpp
Editor Callbacks.cpp Editor Callbacks.cpp
Editor Modes.cpp Editor Modes.cpp
@@ -882,7 +881,7 @@ Creating library...
--------------------Configuration: Laptop - Win32 Release-------------------- --------------------Configuration: Laptop - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP71.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDE.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 /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\aim.cpp"
@@ -943,8 +942,8 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP71.tmp" with content
"C:\JA2\Build\Laptop\sirtech.cpp" "C:\JA2\Build\Laptop\sirtech.cpp"
"C:\JA2\Build\Laptop\Store Inventory.cpp" "C:\JA2\Build\Laptop\Store Inventory.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP71.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDE.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP72.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDF.tmp" with contents
[ [
/nologo /out:"Release\Laptop.lib" /nologo /out:"Release\Laptop.lib"
.\Release\aim.obj .\Release\aim.obj
@@ -1005,7 +1004,7 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP72.tmp" with content
.\Release\sirtech.obj .\Release\sirtech.obj
".\Release\Store Inventory.obj" ".\Release\Store Inventory.obj"
] ]
Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP72.tmp" Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPDF.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
aim.cpp aim.cpp
@@ -1071,7 +1070,7 @@ Creating library...
--------------------Configuration: Strategic - Win32 Release-------------------- --------------------Configuration: Strategic - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP73.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPE0.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 /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\AI Viewer.cpp"
@@ -1118,8 +1117,8 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP73.tmp" with content
"C:\JA2\Build\Strategic\strategicmap.cpp" "C:\JA2\Build\Strategic\strategicmap.cpp"
"C:\JA2\Build\Strategic\Town Militia.cpp" "C:\JA2\Build\Strategic\Town Militia.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP73.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPE0.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP74.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPE1.tmp" with contents
[ [
/nologo /out:"Release\Strategic.lib" /nologo /out:"Release\Strategic.lib"
".\Release\AI Viewer.obj" ".\Release\AI Viewer.obj"
@@ -1166,7 +1165,7 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP74.tmp" with content
.\Release\strategicmap.obj .\Release\strategicmap.obj
".\Release\Town Militia.obj" ".\Release\Town Militia.obj"
] ]
Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP74.tmp" Creating command line "link.exe -lib @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPE1.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
AI Viewer.cpp AI Viewer.cpp
@@ -1219,7 +1218,7 @@ Creating library...
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating command line "rc.exe /l 0x409 /fo"Release/ja2.res" /i "Res" /i ".\Res" /d "NDEBUG" "C:\JA2\Build\Res\ja2.rc"" 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\RSP75.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPE2.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 /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\Utils\_Ja25GermanText.cpp"
@@ -1246,8 +1245,8 @@ Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP75.tmp" with content
"C:\JA2\Build\SCREENS.cpp" "C:\JA2\Build\SCREENS.cpp"
"C:\JA2\Build\Sys Globals.cpp" "C:\JA2\Build\Sys Globals.cpp"
] ]
Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP75.tmp" Creating command line "cl.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPE2.tmp"
Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP76.tmp" with contents Creating temporary file "C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPE3.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" 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\_Ja25GermanText.obj
@@ -1284,7 +1283,7 @@ libexpatMT.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advap
.\Laptop\Release\Laptop.lib .\Laptop\Release\Laptop.lib
.\Strategic\Release\Strategic.lib .\Strategic\Release\Strategic.lib
] ]
Creating command line "link.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSP76.tmp" Creating command line "link.exe @C:\DOCUME~1\Owner\LOCALS~1\Temp\RSPE3.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling resources... Compiling resources...
Compiling... Compiling...
@@ -1307,7 +1306,6 @@ Init.cpp
Intro.cpp Intro.cpp
JA2 Splash.cpp JA2 Splash.cpp
jascreens.cpp jascreens.cpp
C:\JA2\Build\jascreens.cpp(269) : warning C4101: 'str' : unreferenced local variable
Loading Screen.cpp Loading Screen.cpp
MainMenuScreen.cpp MainMenuScreen.cpp
MessageBoxScreen.cpp MessageBoxScreen.cpp
@@ -1322,7 +1320,7 @@ LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF
<h3>Results</h3> <h3>Results</h3>
ja2_cvs.exe - 0 error(s), 2 warning(s) ja2_cvs.exe - 0 error(s), 1 warning(s)
</pre> </pre>
</body> </body>
</html> </html>
+23 -18
View File
@@ -1100,7 +1100,9 @@ BOOLEAN BasicCanCharacterTrainMilitia( SOLDIERTYPE *pSoldier )
BOOLEAN CanCharacterTrainMilitia( SOLDIERTYPE *pSoldier ) BOOLEAN CanCharacterTrainMilitia( SOLDIERTYPE *pSoldier )
{ {
if (gGameExternalOptions.gfmusttrainroaming) if (gGameExternalOptions.gfmusttrainroaming
&& (GetWorldDay( ) >= gGameExternalOptions.guiAllowMilitiaGroupsDelay)
&& (!IsThisSectorASAMSector(pSoldier->sSectorX,pSoldier->sSectorY,0 )))
{ {
if( BasicCanCharacterTrainMilitia( pSoldier ) && if( BasicCanCharacterTrainMilitia( pSoldier ) &&
MilitiaTrainingAllowedInSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) && MilitiaTrainingAllowedInSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) &&
@@ -1120,7 +1122,7 @@ BOOLEAN CanCharacterTrainMilitia( SOLDIERTYPE *pSoldier )
if( BasicCanCharacterTrainMilitia( pSoldier ) && if( BasicCanCharacterTrainMilitia( pSoldier ) &&
MilitiaTrainingAllowedInSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) && MilitiaTrainingAllowedInSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) &&
DoesSectorMercIsInHaveSufficientLoyaltyToTrainMilitia( pSoldier ) && DoesSectorMercIsInHaveSufficientLoyaltyToTrainMilitia( pSoldier ) &&
( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier ) == FALSE ) && ( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier,ELITE_MILITIA ) == FALSE ) &&
( CountMilitiaTrainersInSoldiersSector( pSoldier ) < gGameExternalOptions.ubMaxMilitiaTrainersPerSector ) ) ( CountMilitiaTrainersInSoldiersSector( pSoldier ) < gGameExternalOptions.ubMaxMilitiaTrainersPerSector ) )
{ {
return( TRUE ); return( TRUE );
@@ -1211,7 +1213,7 @@ INT8 CountMilitiaTrainersInSoldiersSector( SOLDIERTYPE * pSoldier )
BOOLEAN IsMilitiaTrainableFromSoldiersSectorMaxed( SOLDIERTYPE *pSoldier ) BOOLEAN IsMilitiaTrainableFromSoldiersSectorMaxed( SOLDIERTYPE *pSoldier, INT8 iMilitiaType )
{ {
INT8 bTownId = 0; INT8 bTownId = 0;
BOOLEAN fSamSitePresent = FALSE; BOOLEAN fSamSitePresent = FALSE;
@@ -1232,18 +1234,17 @@ BOOLEAN IsMilitiaTrainableFromSoldiersSectorMaxed( SOLDIERTYPE *pSoldier )
// if there is a sam site here // if there is a sam site here
if( fSamSitePresent ) if( fSamSitePresent )
{ {
if( IsSAMSiteFullOfMilitia( pSoldier->sSectorX, pSoldier->sSectorY ) ) if( IsSAMSiteFullOfMilitia( pSoldier->sSectorX, pSoldier->sSectorY,iMilitiaType ) )
{ {
return( TRUE ); return( TRUE );
} }
return( FALSE ); return( FALSE );
} }
return( FALSE ); return( FALSE );
} }
// this considers *ALL* safe sectors of the town, not just the one soldier is in // this considers *ALL* safe sectors of the town, not just the one soldier is in
if( IsTownFullMilitia( bTownId ) ) if( IsTownFullMilitia( bTownId, iMilitiaType ) )
{ {
// town is full of militia // town is full of militia
return( TRUE ); return( TRUE );
@@ -7332,6 +7333,7 @@ void TrainingMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason )
INT8 bTownId; INT8 bTownId;
CHAR16 sString[ 128 ]; CHAR16 sString[ 128 ];
CHAR16 sStringA[ 128 ]; CHAR16 sStringA[ 128 ];
BOOLEAN fCanTrainMilitia = TRUE;
pSoldier = GetSelectedAssignSoldier( FALSE ); pSoldier = GetSelectedAssignSoldier( FALSE );
@@ -7396,10 +7398,18 @@ void TrainingMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason )
// Kaiden: Roaming Militia Training: // Kaiden: Roaming Militia Training:
// Added to the if test here: if(IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier, ELITE_MILITIA ))
// && (!gGameExternalOptions.gfmusttrainroaming) if (!gGameExternalOptions.gfmusttrainroaming)
fCanTrainMilitia = FALSE;
else if (GetWorldDay( ) < gGameExternalOptions.guiAllowMilitiaGroupsDelay)
fCanTrainMilitia = FALSE;
else if (IsThisSectorASAMSector(pSoldier->sSectorX,pSoldier->sSectorY,0 ))
fCanTrainMilitia = FALSE;
else
fCanTrainMilitia = TRUE;
if( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier ) && (!gGameExternalOptions.gfmusttrainroaming))
if(!fCanTrainMilitia)
{ {
if( bTownId == BLANK_SECTOR ) if( bTownId == BLANK_SECTOR )
{ {
@@ -7417,11 +7427,6 @@ void TrainingMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason )
break; break;
} }
if ( CountMilitiaTrainersInSoldiersSector( pSoldier ) >= gGameExternalOptions.ubMaxMilitiaTrainersPerSector ) if ( CountMilitiaTrainersInSoldiersSector( pSoldier ) >= gGameExternalOptions.ubMaxMilitiaTrainersPerSector )
{ {
swprintf( sString, gzLateLocalizedString[ 47 ], gGameExternalOptions.ubMaxMilitiaTrainersPerSector ); swprintf( sString, gzLateLocalizedString[ 47 ], gGameExternalOptions.ubMaxMilitiaTrainersPerSector );
+1 -1
View File
@@ -315,7 +315,7 @@ void ReEvaluateEveryonesNothingToDo();
void SetAssignmentForList( INT8 bAssignment, INT8 bParam ); void SetAssignmentForList( INT8 bAssignment, INT8 bParam );
// is this area maxed out on militia? // is this area maxed out on militia?
BOOLEAN IsMilitiaTrainableFromSoldiersSectorMaxed( SOLDIERTYPE *pSoldier ); BOOLEAN IsMilitiaTrainableFromSoldiersSectorMaxed( SOLDIERTYPE *pSoldier, INT8 iMilitiaType );
// function where we actually set someone's assignment so we can trap certain situations // function where we actually set someone's assignment so we can trap certain situations
void ChangeSoldiersAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment ); void ChangeSoldiersAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment );
+9 -2
View File
@@ -463,9 +463,15 @@ void UpdateMilitiaSquads(INT16 sMapX, INT16 sMapY )
// Removed the code from here and added the procedure call // Removed the code from here and added the procedure call
// If it's time, and this is a city sector create a new group. // If it's time, and this is a city sector create a new group.
// But only if we're not training our own. // But only if we're not training our own.
if( (!gGameExternalOptions.gfmusttrainroaming) && ( GetTownIdForSector( sMapX, sMapY ) != BLANK_SECTOR ) ) if( (!gGameExternalOptions.gfmusttrainroaming) && ( GetTownIdForSector( sMapX, sMapY ) != BLANK_SECTOR ) )
{ {
if( GetWorldHour() % gGameExternalOptions.guiCreateEachNHours )return; if (GetWorldDay( ) < gGameExternalOptions.guiAllowMilitiaGroupsDelay)
return;
if( GetWorldHour() % gGameExternalOptions.guiCreateEachNHours )
return;
CreateMilitiaSquads( sMapX, sMapY ); CreateMilitiaSquads( sMapX, sMapY );
} }
@@ -545,7 +551,8 @@ void UpdateMilitiaSquads(INT16 sMapX, INT16 sMapY )
// Kaiden: Roaming Militia Training: // Kaiden: Roaming Militia Training:
// If we're training roaming militia, // If we're training roaming militia,
// we'll get our squad from here: // we'll get our squad from here:
// Don't need to check for delay, as this function won't be
// called if there is a delay set.
void CreateMilitiaSquads(INT16 sMapX, INT16 sMapY ) void CreateMilitiaSquads(INT16 sMapX, INT16 sMapY )
{ {
UINT16 pMoveDir[4][3]; UINT16 pMoveDir[4][3];
+157 -46
View File
@@ -35,6 +35,8 @@ UINT8 gubTownSectorServerIndex = 0;
BOOLEAN gfYesNoPromptIsForContinue = FALSE; // this flag remembers whether we're starting new training, or continuing BOOLEAN gfYesNoPromptIsForContinue = FALSE; // this flag remembers whether we're starting new training, or continuing
INT32 giTotalCostOfTraining = 0; INT32 giTotalCostOfTraining = 0;
BOOLEAN gfAreWeTrainingMobile = FALSE; BOOLEAN gfAreWeTrainingMobile = FALSE;
BOOLEAN gfAreWePromotingGreen = FALSE;
BOOLEAN gfAreWePromotingRegular = FALSE;
//the completed list of sector soldiers for training militia //the completed list of sector soldiers for training militia
@@ -108,7 +110,9 @@ void TownMilitiaTrainingCompleted( SOLDIERTYPE *pTrainer, INT16 sMapX, INT16 sMa
// If we're not training roaming militia, // If we're not training roaming militia,
// then we will handle everything as normal. // then we will handle everything as normal.
if( (IsMilitiaTrainableFromSoldiersSectorMaxed( pTrainer )) && (gGameExternalOptions.gfmusttrainroaming)) if( (IsMilitiaTrainableFromSoldiersSectorMaxed( pTrainer, ELITE_MILITIA ))
&& (gGameExternalOptions.gfmusttrainroaming)
&&(GetWorldDay( ) >= gGameExternalOptions.guiAllowMilitiaGroupsDelay))
{ {
CreateMilitiaSquads(sMapX, sMapY ); CreateMilitiaSquads(sMapX, sMapY );
} }
@@ -182,7 +186,8 @@ void TownMilitiaTrainingCompleted( SOLDIERTYPE *pTrainer, INT16 sMapX, INT16 sMa
// Kaiden: Veteran militia training // Kaiden: Veteran militia training
// This is essentially copy/pasted from above // This is essentially copy/pasted from above
// But the names have been changed to protect the innocent // But the names have been changed to protect the innocent
if ((!fFoundOne) && (gGameExternalOptions.gfTrainVeteranMilitia)) if ((!fFoundOne) && (gGameExternalOptions.gfTrainVeteranMilitia)
&& (GetWorldDay( ) >= gGameExternalOptions.guiTrainVeteranMilitiaDelay))
{ {
// are there any REGULAR militia men in the training sector itself? // are there any REGULAR militia men in the training sector itself?
if (MilitiaInSectorOfRank(sMapX, sMapY, REGULAR_MILITIA) > 0) if (MilitiaInSectorOfRank(sMapX, sMapY, REGULAR_MILITIA) > 0)
@@ -573,18 +578,35 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia2");
// We want to charge more for Roaming // We want to charge more for Roaming
// get total cost // get total cost
if( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier ) && (gGameExternalOptions.gfmusttrainroaming)) if( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier, ELITE_MILITIA )
&& (gGameExternalOptions.gfmusttrainroaming)
&& (GetWorldDay( ) >= gGameExternalOptions.guiAllowMilitiaGroupsDelay))
{ {
giTotalCostOfTraining = (iMilitiaTrainingCost*gGameExternalOptions.iMilitiaCostModifier) * iNumberOfSectors; giTotalCostOfTraining = (iMilitiaTrainingCost*gGameExternalOptions.iMilitiaCostModifier) * iNumberOfSectors;
Assert( giTotalCostOfTraining > 0 ); Assert( giTotalCostOfTraining > 0 );
gfAreWeTrainingMobile = TRUE; gfAreWeTrainingMobile = TRUE;
} }
else if (IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier, REGULAR_MILITIA )
&& (gGameExternalOptions.gfTrainVeteranMilitia)
&& (GetWorldDay( ) >= gGameExternalOptions.guiTrainVeteranMilitiaDelay))
{
giTotalCostOfTraining = (iMilitiaTrainingCost*gGameExternalOptions.iVeteranCostModifier) * iNumberOfSectors;
Assert( giTotalCostOfTraining > 0 );
gfAreWePromotingRegular = TRUE;
}
else if (IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier, GREEN_MILITIA ))
{
giTotalCostOfTraining = (iMilitiaTrainingCost*gGameExternalOptions.iRegularCostModifier) * iNumberOfSectors;
Assert( giTotalCostOfTraining > 0 );
gfAreWePromotingGreen = TRUE;
}
else else
{ {
giTotalCostOfTraining = iMilitiaTrainingCost * iNumberOfSectors; giTotalCostOfTraining = iMilitiaTrainingCost * iNumberOfSectors;
Assert( giTotalCostOfTraining > 0 ); Assert( giTotalCostOfTraining > 0 );
} }
gfYesNoPromptIsForContinue = FALSE; gfYesNoPromptIsForContinue = FALSE;
if( LaptopSaveInfo.iCurrentBalance < giTotalCostOfTraining ) if( LaptopSaveInfo.iCurrentBalance < giTotalCostOfTraining )
@@ -637,6 +659,7 @@ void HandleInterfaceMessageForContinuingTrainingMilitia( SOLDIERTYPE *pSoldier )
INT16 sSectorX = 0, sSectorY = 0; INT16 sSectorX = 0, sSectorY = 0;
CHAR16 sStringB[ 128 ]; CHAR16 sStringB[ 128 ];
INT8 bTownId; INT8 bTownId;
BOOLEAN fIsFull = FALSE;
INT32 iMinLoyaltyToTrain = gGameExternalOptions.iMinLoyaltyToTrain; INT32 iMinLoyaltyToTrain = gGameExternalOptions.iMinLoyaltyToTrain;
@@ -667,9 +690,17 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia3");
// if ( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier ) ) // if ( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier ) )
// And we're not training mobile militia from a SAM Site // And we're not training mobile militia from a SAM Site
if ((IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier )) if (IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier, ELITE_MILITIA ))
&& ((!gGameExternalOptions.gfmusttrainroaming) if (!gGameExternalOptions.gfmusttrainroaming)
|| (IsThisSectorASAMSector(sSectorX,sSectorY,0 ))) ) fIsFull = TRUE;
else if (GetWorldDay( ) < gGameExternalOptions.guiAllowMilitiaGroupsDelay)
fIsFull = TRUE;
else if (IsThisSectorASAMSector(sSectorX,sSectorY,0 ))
fIsFull = TRUE;
else
fIsFull = FALSE;
if (fIsFull)
{ {
// we're full!!! go home! // we're full!!! go home!
bTownId = GetTownIdForSector( sSectorX, sSectorY ); bTownId = GetTownIdForSector( sSectorX, sSectorY );
@@ -688,47 +719,35 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia3");
DoContinueMilitiaTrainingMessageBox( sSectorX, sSectorY, sString, MSG_BOX_FLAG_OK, CantTrainMilitiaOkBoxCallback ); DoContinueMilitiaTrainingMessageBox( sSectorX, sSectorY, sString, MSG_BOX_FLAG_OK, CantTrainMilitiaOkBoxCallback );
return; return;
} }
/* else
{
if (( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier )) && (!gGameExternalOptions.gfmusttrainroaming))
{
// we're full!!! go home!
bTownId = GetTownIdForSector( sSectorX, sSectorY );
if ( bTownId == BLANK_SECTOR )
{
// wilderness SAM site
GetSectorIDString( sSectorX, sSectorY, 0, sStringB, TRUE );
void (*tempFptr)(INT16 , INT16 , INT8 , CHAR16 *, BOOLEAN) = GetSectorIDString;
swprintf( (wchar_t *)sString, (wchar_t *)pMilitiaConfirmStrings[ 10 ], sStringB, tempFptr, iMinLoyaltyToTrain );
}
else
{
// town
swprintf( (wchar_t *)sString, (wchar_t *)pMilitiaConfirmStrings[ 10 ], pTownNames[ bTownId ], iMinLoyaltyToTrain );
}
DoContinueMilitiaTrainingMessageBox( sSectorX, sSectorY, sString, MSG_BOX_FLAG_OK, CantTrainMilitiaOkBoxCallback );
return;
}
}*/
// Kaiden: Roaming Militia Training: // Kaiden: Roaming Militia Training:
// Charging more to train Roaming Militia // Charging more to train Roaming Militia
if ( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier ) && (gGameExternalOptions.gfmusttrainroaming)) // Also Charging more for promotions over Training
if( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier, ELITE_MILITIA )
&& (gGameExternalOptions.gfmusttrainroaming)
&&(GetWorldDay( ) >= gGameExternalOptions.guiAllowMilitiaGroupsDelay))
{ {
giTotalCostOfTraining = (iMilitiaTrainingCost*gGameExternalOptions.iMilitiaCostModifier); giTotalCostOfTraining = (iMilitiaTrainingCost*gGameExternalOptions.iMilitiaCostModifier);
gfAreWeTrainingMobile = TRUE; gfAreWeTrainingMobile = TRUE;
} }
else if (IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier, REGULAR_MILITIA )
&& (gGameExternalOptions.gfTrainVeteranMilitia)
&& (GetWorldDay( ) >= gGameExternalOptions.guiTrainVeteranMilitiaDelay))
{
giTotalCostOfTraining = (iMilitiaTrainingCost*gGameExternalOptions.iVeteranCostModifier);
gfAreWePromotingRegular = TRUE;
}
else if (IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier, GREEN_MILITIA ))
{
giTotalCostOfTraining = (iMilitiaTrainingCost*gGameExternalOptions.iRegularCostModifier);
gfAreWePromotingGreen = TRUE;
}
else else
{ {
// continue training always handles just one sector at a time giTotalCostOfTraining = (iMilitiaTrainingCost);
giTotalCostOfTraining = iMilitiaTrainingCost;
} }
// can player afford to continue training? // can player afford to continue training?
if( LaptopSaveInfo.iCurrentBalance < giTotalCostOfTraining ) if( LaptopSaveInfo.iCurrentBalance < giTotalCostOfTraining )
{ {
@@ -889,15 +908,15 @@ BOOLEAN CanNearbyMilitiaScoutThisSector( INT16 sSectorX, INT16 sSectorY )
return( FALSE ); return( FALSE );
} }
BOOLEAN IsTownFullMilitia( INT8 bTownId ) BOOLEAN IsTownFullMilitia( INT8 bTownId, INT8 iMilitiaType )
{ {
INT32 iMaxMilitiaPerSector = gGameExternalOptions.iMaxMilitiaPerSector; INT32 iMaxMilitiaPerSector = gGameExternalOptions.iMaxMilitiaPerSector;
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia4");
INT32 iCounter = 0; INT32 iCounter = 0;
INT16 sSectorX = 0, sSectorY = 0; INT16 sSectorX = 0, sSectorY = 0;
INT32 iNumberOfMilitia = 0; INT32 iNumberOfMilitia = 0;
INT32 iMaxNumber = 0; INT32 iMaxNumber = 0;
BOOLEAN fIncreaseCost = FALSE;
while( pTownNamesList[ iCounter ] != 0 ) while( pTownNamesList[ iCounter ] != 0 )
{ {
@@ -910,15 +929,42 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia4");
// if sector is ours get number of militia here // if sector is ours get number of militia here
if( SectorOursAndPeaceful( sSectorX, sSectorY, 0 ) ) if( SectorOursAndPeaceful( sSectorX, sSectorY, 0 ) )
{ {
//Kaiden: Checking for Price Hikes.
if (iMilitiaType == GREEN_MILITIA)
{
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, GREEN_MILITIA );
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA );
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA );
iMaxNumber += iMaxMilitiaPerSector;
if (MilitiaInSectorOfRank( sSectorX, sSectorY, GREEN_MILITIA ) > 0)
fIncreaseCost = TRUE;
}
else if (iMilitiaType == REGULAR_MILITIA)
{
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA );
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA );
iMaxNumber += iMaxMilitiaPerSector;
if (MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA ) > 0)
fIncreaseCost = TRUE;
}
//Kaiden: OK So iMilitiaType should be ELITE_MILITIA
// and we're just checking sectors for purposes
// of training mobile militia or ending training
// don't count GREEN militia, they can be trained into regulars first // don't count GREEN militia, they can be trained into regulars first
// Kaiden: Veteran Militia Training: // Kaiden: Veteran Militia Training:
// And we don't count regulars either if we're training veterans // And we don't count regulars either if we're training veterans
if (gGameExternalOptions.gfTrainVeteranMilitia) if (gGameExternalOptions.gfTrainVeteranMilitia && (iMilitiaType == ELITE_MILITIA)
&& (GetWorldDay( ) >= gGameExternalOptions.guiTrainVeteranMilitiaDelay))
{ {
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA ); iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA );
iMaxNumber += iMaxMilitiaPerSector; iMaxNumber += iMaxMilitiaPerSector;
} }
else else if (iMilitiaType == ELITE_MILITIA)
{ {
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA ); iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA );
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA ); iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA );
@@ -930,6 +976,24 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia4");
iCounter++; iCounter++;
} }
if (iMilitiaType == GREEN_MILITIA)
{
if (( iNumberOfMilitia == iMaxNumber ) && (fIncreaseCost))
return( TRUE );
else
return( FALSE );
}
else if (iMilitiaType == REGULAR_MILITIA)
{
if (( iNumberOfMilitia == iMaxNumber ) && (fIncreaseCost))
return( TRUE );
else
return( FALSE );
}
// now check the number of militia // now check the number of militia
if ( iMaxNumber > iNumberOfMilitia ) if ( iMaxNumber > iNumberOfMilitia )
{ {
@@ -939,7 +1003,7 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia4");
return( TRUE ); return( TRUE );
} }
BOOLEAN IsSAMSiteFullOfMilitia( INT16 sSectorX, INT16 sSectorY ) BOOLEAN IsSAMSiteFullOfMilitia( INT16 sSectorX, INT16 sSectorY, INT8 iMilitiaType )
{ {
BOOLEAN fSamSitePresent = FALSE; BOOLEAN fSamSitePresent = FALSE;
INT32 iNumberOfMilitia = 0; INT32 iNumberOfMilitia = 0;
@@ -956,16 +1020,47 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia5");
if( SectorOursAndPeaceful( sSectorX, sSectorY, 0 ) ) if( SectorOursAndPeaceful( sSectorX, sSectorY, 0 ) )
{ {
//Kaiden: If we're checking for specific Militia for Price Hikes:
if (iMilitiaType == GREEN_MILITIA)
{
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, GREEN_MILITIA );
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA );
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA );
if (( iNumberOfMilitia == iMaxMilitiaPerSector) &&
(MilitiaInSectorOfRank( sSectorX, sSectorY, GREEN_MILITIA ) > 0))
return( TRUE );
else
return( FALSE );
}
else if (iMilitiaType == REGULAR_MILITIA)
{
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA );
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA );
if (( iNumberOfMilitia == iMaxMilitiaPerSector) &&
(MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA ) > 0))
return( TRUE );
else
return( FALSE );
}
// Kaiden: Ok we're not checking for militia promotions now,
// so MilitiaType should be ELITE_MILITIA for purposes
// of training Roaming or not.
// don't count GREEN militia, they can be trained into regulars first // don't count GREEN militia, they can be trained into regulars first
// Kaiden: Veteran Militia Training: // Kaiden: Veteran Militia Training:
// And we don't count regulars either if we're training veterans // And we don't count regulars either if we're training veterans
if (gGameExternalOptions.gfTrainVeteranMilitia) if (gGameExternalOptions.gfTrainVeteranMilitia && (iMilitiaType == ELITE_MILITIA)
&& (GetWorldDay( ) >= gGameExternalOptions.guiTrainVeteranMilitiaDelay))
{ {
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA ); iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA );
iMaxNumber += iMaxMilitiaPerSector; iMaxNumber += iMaxMilitiaPerSector;
} }
else else if (iMilitiaType == ELITE_MILITIA)
{ {
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA ); iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, REGULAR_MILITIA );
iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA ); iNumberOfMilitia += MilitiaInSectorOfRank( sSectorX, sSectorY, ELITE_MILITIA );
@@ -1250,19 +1345,35 @@ void PayForTrainingInSector( UINT8 ubSector )
INT32 iMilitiaTrainingCost = gGameExternalOptions.iMilitiaTrainingCost; INT32 iMilitiaTrainingCost = gGameExternalOptions.iMilitiaTrainingCost;
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia6"); DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia6");
Assert( SectorInfo[ ubSector ].fMilitiaTrainingPaid == FALSE ); Assert( SectorInfo[ ubSector ].fMilitiaTrainingPaid == FALSE );
INT32 CostMultiplyer = 0;
// spend the money // spend the money
// Kaiden: Roaming Militia Training: // Kaiden: Roaming Militia Training:
// Charging more to train Roaming Militia // Charging more to train Roaming Militia
// Or for promotions.
if ( gfAreWeTrainingMobile) if ( gfAreWeTrainingMobile)
{ {
AddTransactionToPlayersBook( TRAIN_TOWN_MILITIA, ubSector, GetWorldTotalMin(), -( iMilitiaTrainingCost*gGameExternalOptions.iMilitiaCostModifier ) ); CostMultiplyer = gGameExternalOptions.iMilitiaCostModifier;
gfAreWeTrainingMobile = FALSE; gfAreWeTrainingMobile = FALSE;
} }
else if ( gfAreWePromotingGreen)
{
CostMultiplyer = gGameExternalOptions.iRegularCostModifier;
gfAreWePromotingGreen = FALSE;
}
else if ( gfAreWePromotingRegular)
{
CostMultiplyer = gGameExternalOptions.iVeteranCostModifier;
gfAreWePromotingRegular = FALSE;
}
else else
{ {
AddTransactionToPlayersBook( TRAIN_TOWN_MILITIA, ubSector, GetWorldTotalMin(), -( iMilitiaTrainingCost ) ); CostMultiplyer = 1;
} }
AddTransactionToPlayersBook( TRAIN_TOWN_MILITIA, ubSector, GetWorldTotalMin(), -( iMilitiaTrainingCost*CostMultiplyer ) );
// mark this sector sectors as being paid up // mark this sector sectors as being paid up
SectorInfo[ ubSector ].fMilitiaTrainingPaid = TRUE; SectorInfo[ ubSector ].fMilitiaTrainingPaid = TRUE;
+2 -2
View File
@@ -61,9 +61,9 @@ void HandleMilitiaStatusInCurrentMapBeforeLoadingNewMap( void );
BOOLEAN CanNearbyMilitiaScoutThisSector( INT16 sSectorX, INT16 sSectorY ); BOOLEAN CanNearbyMilitiaScoutThisSector( INT16 sSectorX, INT16 sSectorY );
// is the town militia full? // is the town militia full?
BOOLEAN IsTownFullMilitia( INT8 bTownId ); BOOLEAN IsTownFullMilitia( INT8 bTownId, INT8 iMilitiaType );
// is the SAM site full of militia? // is the SAM site full of militia?
BOOLEAN IsSAMSiteFullOfMilitia( INT16 sSectorX, INT16 sSectorY ); BOOLEAN IsSAMSiteFullOfMilitia( INT16 sSectorX, INT16 sSectorY, INT8 iMilitiaType );
// now that town training is complete, handle the continue boxes // now that town training is complete, handle the continue boxes
+2 -2
View File
@@ -4,13 +4,13 @@
#include "Language Defines.h" #include "Language Defines.h"
// Beta version // Beta version
#define JA2BETAVERSION //#define JA2BETAVERSION
// Normal test version // Normal test version
// #define JA2TESTVERSION // #define JA2TESTVERSION
// If we want to include the editor // If we want to include the editor
#define JA2EDITOR //#define JA2EDITOR
#ifdef _DEBUG #ifdef _DEBUG
#ifndef JA2TESTVERSION #ifndef JA2TESTVERSION
+2 -2
View File
@@ -286,7 +286,7 @@ UINT32 ErrorScreenHandle(void)
mprintf( 50, 255, L"%S", gubErrorText ); mprintf( 50, 255, L"%S", gubErrorText );
SetFontForeground( FONT_LTRED ); SetFontForeground( FONT_LTRED );
/*
#ifdef JA2BETAVERSION #ifdef JA2BETAVERSION
if( gubAssertString[0] ) if( gubAssertString[0] )
@@ -295,7 +295,7 @@ UINT32 ErrorScreenHandle(void)
DisplayWrappedString( 50, 270, 560, 2, FONT12ARIAL, FONT_RED, str, FONT_BLACK, TRUE, LEFT_JUSTIFIED ); DisplayWrappedString( 50, 270, 560, 2, FONT12ARIAL, FONT_RED, str, FONT_BLACK, TRUE, LEFT_JUSTIFIED );
} }
#endif #endif
*/
if ( !fFirstTime ) if ( !fFirstTime )
{ {
DebugMsg(TOPIC_JA2, DBG_LEVEL_0, String( "Runtime Error: %s ", gubErrorText ) ); DebugMsg(TOPIC_JA2, DBG_LEVEL_0, String( "Runtime Error: %s ", gubErrorText ) );