New feature (by rftr): Arulco Rebel Command (ARC)

Improve you cities and overall campaign by choosing out of several upgrades

Requires GameDir >= r2613

For more info, see https://thepit.ja-galaxy-forum.com/index.php?t=msg&th=24884&start=0&

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9153 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2021-08-22 19:00:09 +00:00
parent d1ec359600
commit eca080f0f9
44 changed files with 3925 additions and 36 deletions
+5 -1
View File
@@ -76,6 +76,7 @@
#include "ASD.h" // added by Flugente
#include "Strategic AI.h"
#include "MiniEvents.h"
#include "Rebel Command.h"
#endif
#include <vector>
#include <queue>
@@ -6214,7 +6215,7 @@ void HandleTrainingInSector( INT16 sMapX, INT16 sMapY, INT8 bZ )
// a normal training session costs gGameExternalOptions.iMilitiaTrainingCost * gGameExternalOptions.iRegularCostModifier
// it promotes gGameExternalOptions.iTrainingSquadSize militia with gGameExternalOptions.usIndividualMilitia_PromotionPoints_To_Regular points each
// thus a point costs gGameExternalOptions.iMilitiaTrainingCost * gGameExternalOptions.iRegularCostModifier / ( gGameExternalOptions.iTrainingSquadSize * gGameExternalOptions.usIndividualMilitia_PromotionPoints_To_Regular) points
FLOAT costperpoint = (FLOAT)( gGameExternalOptions.iMilitiaTrainingCost * gGameExternalOptions.iRegularCostModifier / ( gGameExternalOptions.iTrainingSquadSize * gGameExternalOptions.usIndividualMilitia_PromotionPoints_To_Regular ) );
FLOAT costperpoint = (FLOAT)( RebelCommand::GetMilitiaTrainingCostModifier() * gGameExternalOptions.iMilitiaTrainingCost * gGameExternalOptions.iRegularCostModifier / ( gGameExternalOptions.iTrainingSquadSize * gGameExternalOptions.usIndividualMilitia_PromotionPoints_To_Regular ) );
FLOAT totalcost = drillpoints * costperpoint;
@@ -9209,6 +9210,9 @@ INT16 GetTownTrainPtsForCharacter( SOLDIERTYPE *pTrainer, UINT16 *pusMaxPts )
sTrainingBonus += gGameExternalOptions.ubRpcBonusToTrainMilitia;
}
// apply training bonus from rebel command
sTrainingBonus += RebelCommand::GetMilitiaTrainingSpeedBonus();
// HEADROCK HAM 3.5: Training bonus given by local facilities
if (pTrainer->bSectorZ == 0)
{
+8
View File
@@ -72,6 +72,7 @@
#include "CampaignStats.h" // added by Flugente
#include "DynamicDialogue.h" // added by Flugente
#include "MilitiaIndividual.h" // added by Flugente
#include "Rebel Command.h"
#endif
#include "Reinforcement.h"
@@ -2191,6 +2192,13 @@ void CreateAutoResolveInterface()
ubRegMilitia = MilitiaInSectorOfRank( gpAR->ubSectorX, gpAR->ubSectorY, REGULAR_MILITIA );
ubGreenMilitia = MilitiaInSectorOfRank( gpAR->ubSectorX, gpAR->ubSectorY, GREEN_MILITIA );
// see if we get any bonus militia from nearby towns
UINT8 bonusGreenMilitia = 0, bonusRegularMilitia = 0, bonusEliteMilitia = 0;
RebelCommand::GetBonusMilitia(gpAR->ubSectorX, gpAR->ubSectorY, bonusGreenMilitia, bonusRegularMilitia, bonusEliteMilitia, FALSE); // no need to create a group for autoresolve as we're just increasing local militia pop
ubEliteMilitia += bonusEliteMilitia;
ubRegMilitia += bonusRegularMilitia;
ubGreenMilitia += bonusGreenMilitia;
// This block should be unnecessary. If the counts do not line up, there is a bug.
#if 0
while( ubEliteMilitia + ubRegMilitia + ubGreenMilitia < gpAR->ubCivs )
+3
View File
@@ -63,6 +63,7 @@
#include "PMC.h" // added by Flugente
#include "ASD.h" // added by Flugente
#include "MiniEvents.h"
#include "Rebel Command.h"
#endif
#include "Vehicles.h"
@@ -821,6 +822,8 @@ fFirstTimeInMapScreen = TRUE;
InitMiniEvents();
RebelCommand::Init();
return( TRUE );
}
+3
View File
@@ -26,6 +26,7 @@
#include "Isometric Utils.h" // added by Flugente for NOWHERE
#include "strategic.h" // added by Flugente
#include "message.h" // added by Flugente for ScreenMsg(...)
#include "Rebel Command.h"
#endif
#include "Luaglobal.h"
@@ -156,6 +157,8 @@ CHAR16 zString[128];
HourlyDrugUpdate();
RebelCommand::HourlyUpdate();
// WANNE: This check should avoid the resaving of a loaded auto-save game, when entering tactical
BOOLEAN doAutoSave = TRUE;
if (lastLoadedSaveGameDay == GetWorldDay() && lastLoadedSaveGameHour == GetWorldHour() )
File diff suppressed because it is too large Load Diff
+146
View File
@@ -0,0 +1,146 @@
#ifndef REBEL_COMMAND_H
#define REBEL_COMMAND_H
#include "mapscreen.h"
#include "Soldier Control.h"
#include "Types.h"
#define REBEL_COMMAND_MAX_ACTIONS_PER_REGION 6
namespace RebelCommand
{
enum RebelCommandDirectives
{
RCD_NONE = -1,
RCD_GATHER_SUPPLIES = 0,
RCD_SUPPORT_MILITIA,
RCD_TRAIN_MILITIA,
RCD_CREATE_PROPAGANDA,
RCD_ELITE_MILITIA,
RCD_HVT_STRIKES,
RCD_SPOTTERS,
RCD_RAID_MINES,
RCD_NUM_DIRECTIVES
};
enum RebelCommandAdminActions
{
RCAA_NONE = -1,
RCAA_SUPPLY_LINE = 0,
RCAA_REBEL_RADIO,
RCAA_SAFEHOUSES,
RCAA_SUPPLY_DISRUPTION,
RCAA_SCOUTS,
RCAA_DEAD_DROPS,
RCAA_SMUGGLERS,
RCAA_WAREHOUSES,
RCAA_TAXES,
RCAA_ASSIST_CIVILIANS,
RCAA_MERC_SUPPORT,
RCAA_MINING_POLICY,
RCAA_NUM_ACTIONS
};
enum RegionAdminStatus
{
RAS_NONE,
RAS_ACTIVE,
RAS_INACTIVE
};
typedef struct Directive {
std::vector<INT32> iCostToImprove;
std::vector<FLOAT> fValue1;
std::vector<FLOAT> fValue2;
INT32 GetCostToImprove(INT8 currentLevel) { return iCostToImprove[currentLevel]; }
FLOAT GetValue1(INT8 currentLevel) { return fValue1[currentLevel]; }
FLOAT GetValue2(INT8 currentLevel) { return fValue2[currentLevel]; }
} Directive;
typedef struct AdminAction {
FLOAT fValue1;
FLOAT fValue2;
FLOAT fValue3;
} AdminAction;
typedef struct Info {
std::vector<Directive> directives;
std::vector<AdminAction> adminActions;
} Info;
extern Info info;
typedef struct DirectiveSaveInfo {
INT8 iLevel = 0;
RebelCommandDirectives id = RCD_NONE;
BOOLEAN CanImprove() { return id != RCD_NONE && (size_t)iLevel < info.directives[id].iCostToImprove.size() && info.directives[id].GetCostToImprove(iLevel); }
void Improve() { iLevel++; }
INT32 GetCostToImprove() { return info.directives[id].GetCostToImprove(iLevel); }
FLOAT GetValue1() { return info.directives[id].GetValue1(iLevel); }
FLOAT GetValue2() { return info.directives[id].GetValue2(iLevel); }
} DirectiveSaveInfo;
typedef struct RegionSaveInfo
{
RegionAdminStatus adminStatus = RAS_NONE;
RebelCommandAdminActions actions[REBEL_COMMAND_MAX_ACTIONS_PER_REGION] = { RCAA_SUPPLY_LINE, RCAA_NONE, RCAA_NONE, RCAA_NONE, RCAA_NONE, RCAA_NONE, };
UINT8 actionLevels[REBEL_COMMAND_MAX_ACTIONS_PER_REGION] = { 0, 0, 0, 0, 0, 0 };
UINT8 ubMaxLoyalty = 50;
INT32 GetAdminDeployCost(INT16 numAdminTeams) { return 10 * numAdminTeams * numAdminTeams; };
INT32 GetAdminReactivateCost(INT16 numAdminTeams) { return GetAdminDeployCost(numAdminTeams) / 4; };
} RegionSaveInfo;
typedef struct SaveInfo
{
RegionSaveInfo regions[MAX_TOWNS];
DirectiveSaveInfo directives[20];
INT32 iSupplies = 0;
INT32 iActiveDirective = RCD_GATHER_SUPPLIES;
INT32 iSelectedDirective = RCD_GATHER_SUPPLIES;
INT8 iMilitiaStatsLevel = 0;
INT8 filler[20];
} SaveInfo;
extern SaveInfo rebelCommandSaveInfo;
BOOLEAN EnterWebsite();
void ExitWebsite();
void RenderWebsite();
void HandleWebsite();
void ApplyEnemyPenalties(SOLDIERTYPE* pSoldier);
void ApplyMilitiaBonuses(SOLDIERTYPE* pMilitia);
UINT8 GetApproximateEnemyLocationResolutionIndex();
FLOAT GetAssignmentBonus(INT16 x, INT16 y);
INT32 GetMiningPolicyBonus(INT16 townId);
void GetBonusMilitia(INT16 x, INT16 y, UINT8& green, UINT8& regular, UINT8& elite, BOOLEAN createGroup);
FLOAT GetLoyaltyGainModifier();
UINT8 GetMaxTownLoyalty(INT8 townId);
INT16 GetMilitiaTrainingSpeedBonus();
FLOAT GetMilitiaTrainingCostModifier();
FLOAT GetMilitiaUpkeepCostModifier();
BOOLEAN NeutraliseRole(const SOLDIERTYPE* pSoldier);
void RaidMines(INT32 &playerIncome, INT32 &enemyIncome);
BOOLEAN ShowApproximateEnemyLocations();
void ShowWebsiteAvailableMessage();
void DailyUpdate();
void HourlyUpdate();
void Init();
BOOLEAN Load(HWFILE file);
BOOLEAN Save(HWFILE file);
}
//BOOLEAN LoadRebelCommand( HWFILE file ) { return RebelCommand::Load( file ); }
#endif
+1
View File
@@ -228,4 +228,5 @@
#include "Debug Control.h"
#include "expat.h"
#include "MiniEvents.h"
#include "Rebel Command.h"
#endif
+3
View File
@@ -30,6 +30,7 @@
#include "Town Militia.h" // added by Flugente
#include "Campaign.h" // added by Flugente
#include "Strategic AI.h"
#include "Rebel Command.h"
#endif
#include "Luaglobal.h"
@@ -741,6 +742,8 @@ void HandleNPCSystemEvent( UINT32 uiEvent )
{
EndQuest( QUEST_FOOD_ROUTE, 10, MAP_ROW_A );
SetFactTrue( FACT_FOOD_QUEST_OVER );
RebelCommand::ShowWebsiteAvailableMessage();
}
break;
case NPC_ACTION_DELAYED_MAKE_BRENDA_LEAVE:
+12 -7
View File
@@ -23,6 +23,7 @@
#include "history.h"
#include "Facilities.h"
#include "ASD.h" // added by Flugente
#include "Rebel Command.h"
#endif
#include "GameInitOptionsScreen.h"
@@ -693,8 +694,7 @@ void HandleIncomeFromMines( void )
INT32 iIncome = 0;
INT32 iIncome_Enemy = 0; // Flugente: new AI gets money from mines
// HEADROCK HAM 3.6: Modifier from Facilities
INT32 iFacilityModifier = 0;
INT32 iModifier = 0;
// mine each mine, check if we own it and such
for ( INT8 bCounter = 0; bCounter < MAX_NUMBER_OF_MINES; ++bCounter )
@@ -702,10 +702,12 @@ void HandleIncomeFromMines( void )
if ( PlayerControlsMine( bCounter ) )
{
// HEADROCK HAM 3.6: Add facility modifier as a percentage
iFacilityModifier = 100 + MineIncomeModifierFromFacility( bCounter );
// add rebel command bonus
iModifier = 100 + MineIncomeModifierFromFacility( bCounter ) + RebelCommand::GetMiningPolicyBonus(gMineStatus[bCounter].bAssociatedTown);
// mine this mine
iIncome += (MineAMine( bCounter ) * iFacilityModifier) / 100;
iIncome += (MineAMine( bCounter ) * iModifier) / 100;
}
else
{
@@ -718,6 +720,8 @@ void HandleIncomeFromMines( void )
iIncome = (iIncome * gGameExternalOptions.usMineIncomePercentage) / 100;
iIncome_Enemy = (iIncome_Enemy * gGameExternalOptions.usMineIncomePercentage) / 100;
RebelCommand::RaidMines(iIncome, iIncome_Enemy);
if( iIncome )
{
AddTransactionToPlayersBook( DEPOSIT_FROM_SILVER_MINE, 0, GetWorldTotalMin( ), iIncome );
@@ -736,7 +740,7 @@ UINT32 PredictDailyIncomeFromAMine( INT8 bMineIndex, BOOLEAN fIncludeFacilities
// (miner loyalty, % town controlled, monster infestation level, and current max removal rate may all in fact change)
UINT32 uiAmtExtracted = 0;
// HEADROCK HAM 3.6: Facilities can now modify income
INT32 iFacilityModifier = 0;
INT32 iModifier = 0;
if(PlayerControlsMine(bMineIndex))
{
@@ -752,8 +756,9 @@ UINT32 PredictDailyIncomeFromAMine( INT8 bMineIndex, BOOLEAN fIncludeFacilities
if (bMineIndex && fIncludeFacilities)
{
// HEADROCK HAM 3.6: Facility modifier applied as a percentage
iFacilityModifier = 100 + MineIncomeModifierFromFacility( bMineIndex );
uiAmtExtracted = (uiAmtExtracted * iFacilityModifier) / 100;
// add rebel command bonus
iModifier = 100 + MineIncomeModifierFromFacility( bMineIndex ) + RebelCommand::GetMiningPolicyBonus(gMineStatus[bMineIndex].bAssociatedTown);
uiAmtExtracted = (uiAmtExtracted * iModifier) / 100;
}
}
+7 -1
View File
@@ -38,6 +38,7 @@
#include "Facilities.h"
#include "CampaignStats.h" // added by Flugente
#include "DynamicDialogue.h" // added by Flugente
#include "Rebel Command.h"
#endif
#include "Luaglobal.h"
@@ -293,7 +294,6 @@ void IncrementTownLoyalty( INT8 bTownId, UINT32 uiLoyaltyIncrease )
UINT32 uiRemainingIncrement;
INT16 sThisIncrement;
AssertGE (bTownId, BLANK_SECTOR);
AssertLT (bTownId, NUM_TOWNS);
@@ -303,6 +303,9 @@ void IncrementTownLoyalty( INT8 bTownId, UINT32 uiLoyaltyIncrease )
return;
}
// if rebel command is enabled, apply gain modifier
uiLoyaltyIncrease *= RebelCommand::GetLoyaltyGainModifier();
// modify loyalty change by town's individual attitude toward rebelling (20 is typical)
uiLoyaltyIncrease *= (5 * gubTownRebelSentiment[ bTownId ]);
uiLoyaltyIncrease /= 100;
@@ -394,6 +397,9 @@ void UpdateTownLoyaltyRating( INT8 bTownId )
ubMaxLoyalty = MAX_LOYALTY_VALUE;
}
// if playing with rebel command, limit max loyalty
ubMaxLoyalty = min(ubMaxLoyalty, RebelCommand::GetMaxTownLoyalty(bTownId));
// check if we'd be going over the max
if( (gTownLoyalty[ bTownId ].ubRating + sRatingChange ) >= ubMaxLoyalty )
{
+3
View File
@@ -183,6 +183,9 @@ INT32 GetNumberOfWholeTownsUnderControl( void );
// is all the sectors of this town under control by the player
INT32 IsTownUnderCompleteControlByPlayer( INT8 bTownId );
// are all town sectors under control by the enemy
INT32 IsTownUnderCompleteControlByEnemy(INT8 bTownId);
// used when monsters attack a town sector without going through tactical and they win
void AdjustLoyaltyForCivsEatenByMonsters( INT16 sSectorX, INT16 sSectorY, UINT8 ubHowMany, BOOLEAN aBandits );
+8
View File
@@ -474,6 +474,10 @@
RelativePath=".\QuestText.h"
>
</File>
<File
RelativePath=".\Rebel Command.h"
>
</File>
<File
RelativePath=".\Reinforcement.h"
>
@@ -688,6 +692,10 @@
RelativePath=".\Quests.cpp"
>
</File>
<File
RelativePath=".\Rebel Command.cpp"
>
</File>
<File
RelativePath=".\Reinforcement.cpp"
>
+8
View File
@@ -474,6 +474,10 @@
RelativePath="QuestText.h"
>
</File>
<File
RelativePath="Rebel Command.h"
>
</File>
<File
RelativePath="Reinforcement.h"
>
@@ -686,6 +690,10 @@
RelativePath="Quests.cpp"
>
</File>
<File
RelativePath="Rebel Command.cpp"
>
</File>
<File
RelativePath="Reinforcement.cpp"
>
+2
View File
@@ -57,6 +57,7 @@
<ClInclude Include="Quest Debug System.h" />
<ClInclude Include="Quests.h" />
<ClInclude Include="QuestText.h" />
<ClInclude Include="Rebel Command.h" />
<ClInclude Include="Reinforcement.h" />
<ClInclude Include="Scheduling.h" />
<ClInclude Include="Strategic AI.h" />
@@ -111,6 +112,7 @@
<ClCompile Include="Queen Command.cpp" />
<ClCompile Include="Quest Debug System.cpp" />
<ClCompile Include="Quests.cpp" />
<ClCompile Include="Rebel Command.cpp" />
<ClCompile Include="Reinforcement.cpp" />
<ClCompile Include="Scheduling.cpp" />
<ClCompile Include="Strategic AI.cpp" />
+8 -2
View File
@@ -105,7 +105,10 @@
<ClInclude Include="QuestText.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Reinforcement.h">
<ClInclude Include="Rebel Command.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Reinforcement.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Scheduling.h">
@@ -263,7 +266,10 @@
<ClCompile Include="Quests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Reinforcement.cpp">
<ClCompile Include="Rebel Command.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Reinforcement.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Scheduling.cpp">
+2
View File
@@ -57,6 +57,7 @@
<ClInclude Include="Quest Debug System.h" />
<ClInclude Include="Quests.h" />
<ClInclude Include="QuestText.h" />
<ClInclude Include="Rebel Command.h" />
<ClInclude Include="Reinforcement.h" />
<ClInclude Include="Scheduling.h" />
<ClInclude Include="Strategic AI.h" />
@@ -111,6 +112,7 @@
<ClCompile Include="Queen Command.cpp" />
<ClCompile Include="Quest Debug System.cpp" />
<ClCompile Include="Quests.cpp" />
<ClCompile Include="Rebel Command.cpp" />
<ClCompile Include="Reinforcement.cpp" />
<ClCompile Include="Scheduling.cpp" />
<ClCompile Include="Strategic AI.cpp" />
+8 -2
View File
@@ -99,7 +99,10 @@
<ClInclude Include="QuestText.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Reinforcement.h">
<ClInclude Include="Rebel Command.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Reinforcement.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Scheduling.h">
@@ -257,7 +260,10 @@
<ClCompile Include="Quests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Reinforcement.cpp">
<ClCompile Include="Rebel Command.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Reinforcement.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Scheduling.cpp">
+4 -2
View File
@@ -50,13 +50,14 @@
<ClInclude Include="Merc Contract.h" />
<ClInclude Include="MilitiaIndividual.h" />
<ClInclude Include="MilitiaSquads.h" />
<ClInclude Include="MiniEvents.h" />
<ClInclude Include="MiniEvents.h" />
<ClInclude Include="Player Command.h" />
<ClInclude Include="PreBattle Interface.h" />
<ClInclude Include="Queen Command.h" />
<ClInclude Include="Quest Debug System.h" />
<ClInclude Include="Quests.h" />
<ClInclude Include="QuestText.h" />
<ClInclude Include="Rebel Command.h" />
<ClInclude Include="Reinforcement.h" />
<ClInclude Include="Scheduling.h" />
<ClInclude Include="Strategic AI.h" />
@@ -105,12 +106,13 @@
<ClCompile Include="Merc Contract.cpp" />
<ClCompile Include="MilitiaIndividual.cpp" />
<ClCompile Include="MilitiaSquads.cpp" />
<ClCompile Include="MiniEvents.cpp" />
<ClCompile Include="MiniEvents.cpp" />
<ClCompile Include="Player Command.cpp" />
<ClCompile Include="PreBattle Interface.cpp" />
<ClCompile Include="Queen Command.cpp" />
<ClCompile Include="Quest Debug System.cpp" />
<ClCompile Include="Quests.cpp" />
<ClCompile Include="Rebel Command.cpp" />
<ClCompile Include="Reinforcement.cpp" />
<ClCompile Include="Scheduling.cpp" />
<ClCompile Include="Strategic AI.cpp" />
+2
View File
@@ -77,6 +77,7 @@
<ClInclude Include="Quest Debug System.h" />
<ClInclude Include="Quests.h" />
<ClInclude Include="QuestText.h" />
<ClInclude Include="Rebel Command.h" />
<ClInclude Include="Reinforcement.h" />
<ClInclude Include="Scheduling.h" />
<ClInclude Include="Strategic AI.h" />
@@ -131,6 +132,7 @@
<ClCompile Include="Queen Command.cpp" />
<ClCompile Include="Quest Debug System.cpp" />
<ClCompile Include="Quests.cpp" />
<ClCompile Include="Rebel Command.cpp" />
<ClCompile Include="Reinforcement.cpp" />
<ClCompile Include="Scheduling.cpp" />
<ClCompile Include="Strategic AI.cpp" />
+5 -4
View File
@@ -34,6 +34,7 @@
#include "MilitiaIndividual.h" // added by Flugente
#include "Campaign.h" // added by Flugente
#include "message.h" // added by Flugente
#include "Rebel Command.h"
#endif
// HEADROCK HAM 3: include these files so that a militia trainer's Effective Leadership can be determined. Used
@@ -832,7 +833,7 @@ BOOLEAN ServeNextFriendlySectorInTown( INT16 *sNeighbourX, INT16 *sNeighbourY )
void HandleInterfaceMessageForCostOfTrainingMilitia( SOLDIERTYPE *pSoldier )
{
INT32 iMilitiaTrainingCost = gGameExternalOptions.iMilitiaTrainingCost;
INT32 iMilitiaTrainingCost = gGameExternalOptions.iMilitiaTrainingCost * RebelCommand::GetMilitiaTrainingCostModifier();
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia2");
CHAR16 sString[ 128 ];
@@ -937,7 +938,7 @@ void HandleInterfaceMessageForContinuingTrainingMilitia( SOLDIERTYPE *pSoldier )
INT32 iCounter = 0;
INT32 iMinLoyaltyToTrain = gGameExternalOptions.iMinLoyaltyToTrain;
INT32 iMilitiaTrainingCost = gGameExternalOptions.iMilitiaTrainingCost;
INT32 iMilitiaTrainingCost = gGameExternalOptions.iMilitiaTrainingCost * RebelCommand::GetMilitiaTrainingCostModifier();
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia3");
@@ -1642,7 +1643,7 @@ void ContinueTrainingInThisSector( UINT8 ubMilitiaType )
void PayForTrainingInSector( UINT8 ubSector )
{
INT32 iMilitiaTrainingCost = gGameExternalOptions.iMilitiaTrainingCost;
INT32 iMilitiaTrainingCost = gGameExternalOptions.iMilitiaTrainingCost * RebelCommand::GetMilitiaTrainingCostModifier();
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia6");
INT32 CostMultiplyer = 0;
@@ -2083,7 +2084,7 @@ UINT32 CalcMilitiaUpkeep( void )
}
}
return uiTotalPayment;
return uiTotalPayment * RebelCommand::GetMilitiaUpkeepCostModifier();
}
// Flugente: our militia volunteer pool is limited