mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
Initial commit - SVN checkpoint to git branch
This commit is contained in:
@@ -4157,6 +4157,84 @@ void LoadRebelCommandSettings()
|
||||
|
||||
gRebelCommandSettings.iFortificationsBonus = iniReader.ReadInteger("Rebel Command Settings", "FORTIFICATIONS_BONUS", 10, 0, 100);
|
||||
|
||||
// agent missions
|
||||
gRebelCommandSettings.iDeepDeploymentSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_SUCCESS_CHANCE", 50, 0, 100);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeNS = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_NS", 200, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeEW = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_EW", 350, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeNS_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_NS_BONUS_COVERT", 50, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeEW_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_EW_BONUS_COVERT" , 15, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeNS_Bonus_Scouting = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_NS_BONUS_SCOUTING" , 25, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeEW_Bonus_Scouting = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_EW_BONUS_SCOUTING" , 40, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeNS_Bonus_Stealthy = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_NS_BONUS_STEALTHY" , 15, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeEW_Bonus_Stealthy = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_EW_BONUS_STEALTHY" , 30, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeNS_Bonus_Survival = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_NS_BONUS_SURVIVAL" , 15, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentRangeEW_Bonus_Survival = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_RANGE_EW_BONUS_SURVIVAL" , 30, 0, 1000);
|
||||
gRebelCommandSettings.iDeepDeploymentDuration = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_DURATION" , 72, 0, 255);
|
||||
gRebelCommandSettings.iDeepDeploymentDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_DURATION_BONUS_COVERT" , 24, 0, 255);
|
||||
gRebelCommandSettings.iDeepDeploymentDuration_Bonus_Scouting = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_DURATION_BONUS_SCOUTING" , 48, 0, 255);
|
||||
gRebelCommandSettings.iDeepDeploymentDuration_Bonus_Stealthy = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_DURATION_BONUS_STEALTHY" , 36, 0, 255);
|
||||
gRebelCommandSettings.iDeepDeploymentDuration_Bonus_Survival = iniReader.ReadInteger("Rebel Command Settings", "DEEP_DEPLOYMENT_DURATION_BONUS_SURVIVAL" , 36, 0, 255);
|
||||
|
||||
gRebelCommandSettings.iGetEnemyMovementTargetsSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "STRATEGIC_INTEL_SUCCESS_CHANCE", 50, 0, 100);
|
||||
gRebelCommandSettings.iGetEnemyMovementTargetsDuration = iniReader.ReadInteger("Rebel Command Settings", "STRATEGIC_INTEL_DURATION", 72, 0, 255);
|
||||
gRebelCommandSettings.iGetEnemyMovementTargetsDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "STRATEGIC_INTEL_DURATION_BONUS_COVERT", 48, 0, 255);
|
||||
gRebelCommandSettings.iGetEnemyMovementTargetsDuration_Bonus_Radio = iniReader.ReadInteger("Rebel Command Settings", "STRATEGIC_INTEL_DURATION_BONUS_RADIO", 48, 0, 255);
|
||||
|
||||
gRebelCommandSettings.iImproveLocalShopsSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "IMPROVE_LOCAL_SHOPS_SUCCESS_CHANCE", 50, 0, 100);
|
||||
gRebelCommandSettings.iImproveLocalShopsDuration = iniReader.ReadInteger("Rebel Command Settings", "IMPROVE_LOCAL_SHOPS_DURATION", 72, 0, 255);
|
||||
|
||||
gRebelCommandSettings.iReduceStrategicDecisionSpeedSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_SUCCESS_CHANCE", 50, 0, 100);
|
||||
gRebelCommandSettings.fReduceStrategicDecisionSpeedModifier = iniReader.ReadFloat("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_MODIFIER", 1.1f, 1.f, 10.f);
|
||||
gRebelCommandSettings.fReduceStrategicDecisionSpeedModifier_Covert = iniReader.ReadFloat("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_MODIFIER_BONUS_COVERT", 1.25f, 1.f, 10.f);
|
||||
gRebelCommandSettings.fReduceStrategicDecisionSpeedModifier_Deputy = iniReader.ReadFloat("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_MODIFIER_BONUS_DEPUTY", 1.25f, 1.f, 10.f);
|
||||
gRebelCommandSettings.fReduceStrategicDecisionSpeedModifier_Snitch = iniReader.ReadFloat("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_MODIFIER_BONUS_SNITCH", 1.25f, 1.f, 10.f);
|
||||
gRebelCommandSettings.iReduceStrategicDecisionSpeedDuration = iniReader.ReadInteger("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_DURATION", 72, 0, 255);
|
||||
gRebelCommandSettings.iReduceStrategicDecisionSpeedDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_DURATION_BONUS_COVERT", 24, 0, 255);
|
||||
gRebelCommandSettings.iReduceStrategicDecisionSpeedDuration_Bonus_Deputy = iniReader.ReadInteger("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_DURATION_BONUS_DEPUTY", 24, 0, 255);
|
||||
gRebelCommandSettings.iReduceStrategicDecisionSpeedDuration_Bonus_Snitch = iniReader.ReadInteger("Rebel Command Settings", "SLOWER_STRATEGIC_DECISIONS_DURATION_BONUS_SNITCH", 24, 0, 255);
|
||||
|
||||
gRebelCommandSettings.iReduceUnalertedEnemyVisionSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "LOWER_READINESS_SUCCESS_CHANCE", 50, 0, 100);
|
||||
gRebelCommandSettings.fReduceUnlaertedEnemyVisionModifier = iniReader.ReadFloat("Rebel Command Settings", "LOWER_READINESS_MODIFIER", 0.15f, 0.f, 1.f);
|
||||
gRebelCommandSettings.fReduceUnlaertedEnemyVisionModifier_Covert = iniReader.ReadFloat("Rebel Command Settings", "LOWER_READINESS_MODIFIER_COVERT", 0.15f, 0.f, 1.f);
|
||||
gRebelCommandSettings.fReduceUnlaertedEnemyVisionModifier_Radio = iniReader.ReadFloat("Rebel Command Settings", "LOWER_READINESS_MODIFIER_RADIO", 0.15f, 0.f, 1.f);
|
||||
gRebelCommandSettings.fReduceUnlaertedEnemyVisionModifier_Stealthy = iniReader.ReadFloat("Rebel Command Settings", "LOWER_READINESS_MODIFIER_STEALTHY", 0.15f, 0.f, 1.f);
|
||||
gRebelCommandSettings.iReduceUnalertedEnemyVisionDuration = iniReader.ReadInteger("Rebel Command Settings", "LOWER_READINESS_DURATION", 72, 0, 255);
|
||||
gRebelCommandSettings.iReduceUnalertedEnemyVisionDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "LOWER_READINESS_DURATION_BONUS_COVERT", 72, 0, 255);
|
||||
gRebelCommandSettings.iReduceUnalertedEnemyVisionDuration_Bonus_Radio = iniReader.ReadInteger("Rebel Command Settings", "LOWER_READINESS_DURATION_BONUS_RADIO", 72, 0, 255);
|
||||
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_SUCCESS_CHANCE", 50, 0, 100);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentModifier = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_MODIFIER", 10, 0, 100);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentModifier_Auto_Weapons = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_MODIFIER_AUTO_WEAPONS", 10, 0, 100);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentModifier_Covert = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_MODIFIER_COVERT", 10, 0, 100);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentModifier_Demolitions = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_MODIFIER_DEMOLITIONS", 10, 0, 100);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentModifier_Gunslinger = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_MODIFIER_GUNSLINGER", 10, 0, 100);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentModifier_Ranger = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_MODIFIER_RANGER", 10, 0, 100);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentModifier_Sniper = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_MODIFIER_SNIPER", 10, 0, 100);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentDuration = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_DURATION", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentDuration_Bonus_Auto_Weapons = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_DURATION_BONUS_AUTO_WEAPONS", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_DURATION_BONUS_COVERT", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentDuration_Bonus_Demolitions = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_DURATION_BONUS_DEMOLITIONS", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentDuration_Bonus_Gunslinger = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_DURATION_BONUS_GUNSLINGER", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentDuration_Bonus_Ranger = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_DURATION_BONUS_RANGER", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageInfantryEquipmentDuration_Bonus_Sniper = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_EQUIPMENT_DURATION_BONUS_SNIPER", 72, 0, 255);
|
||||
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_SUCCESS_CHANCE", 50, 0, 100);
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsStatLoss = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_STAT_LOSS", 20, 0, 100);
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsStatLoss_Covert = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_STAT_LOSS_COVERT", 20, 0, 100);
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsStatLoss_Demolitions = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_STAT_LOSS_DEMOLITIONS", 20, 0, 100);
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsStatLoss_Heavy_Weapons = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_STAT_LOSS_HEAVY_WEAPONS", 20, 0, 100);
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsDuration = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_DURATION", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_DURATION_BONUS_COVERT", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsDuration_Bonus_Demolitions = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_DURATION_BONUS_DEMOLITIONS", 72, 0, 255);
|
||||
gRebelCommandSettings.iSabotageMechanicalUnitsDuration_Bonus_Heavy_Weapons = iniReader.ReadInteger("Rebel Command Settings", "SABOTAGE_VEHICLES_DURATION_BONUS_HEAVY_WEAPONS", 72, 0, 255);
|
||||
|
||||
gRebelCommandSettings.iTrainMilitiaAnywhereSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "TRAIN_MILITIA_ANYWHERE_SUCCESS_CHANCE", 50, 0, 100);
|
||||
gRebelCommandSettings.iTrainMilitiaAnywhereMaxTrainers = iniReader.ReadInteger("Rebel Command Settings", "TRAIN_MILITIA_ANYWHERE_MAX_TRAINERS", 1, 1, 4);
|
||||
gRebelCommandSettings.iTrainMilitiaAnywhereMaxTrainers_Teaching = iniReader.ReadInteger("Rebel Command Settings", "TRAIN_MILITIA_ANYWHERE_MAX_TRAINERS_TEACHING", 1, 1, 4);
|
||||
gRebelCommandSettings.iTrainMilitiaAnywhereDuration = iniReader.ReadInteger("Rebel Command Settings", "TRAIN_MILITIA_ANYWHERE_DURATION", 72, 0, 255);;
|
||||
gRebelCommandSettings.iTrainMilitiaAnywhereDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "TRAIN_MILITIA_ANYWHERE_DURATION_BONUS_COVERT", 72, 0, 255);;
|
||||
gRebelCommandSettings.iTrainMilitiaAnywhereDuration_Bonus_Survival = iniReader.ReadInteger("Rebel Command Settings", "TRAIN_MILITIA_ANYWHERE_DURATION_BONUS_SURVIVAL", 72, 0, 255);;
|
||||
gRebelCommandSettings.iTrainMilitiaAnywhereDuration_Bonus_Teaching = iniReader.ReadInteger("Rebel Command Settings", "TRAIN_MILITIA_ANYWHERE_DURATION_BONUS_TEACHING", 72, 0, 255);;
|
||||
}
|
||||
|
||||
void FreeGameExternalOptions()
|
||||
|
||||
@@ -1842,6 +1842,85 @@ typedef struct
|
||||
|
||||
INT16 iFortificationsBonus;
|
||||
|
||||
// agent missions
|
||||
INT8 iDeepDeploymentSuccessChance;
|
||||
INT16 iDeepDeploymentRangeNS;
|
||||
INT16 iDeepDeploymentRangeEW;
|
||||
INT16 iDeepDeploymentRangeNS_Bonus_Covert;
|
||||
INT16 iDeepDeploymentRangeEW_Bonus_Covert;
|
||||
INT16 iDeepDeploymentRangeNS_Bonus_Scouting;
|
||||
INT16 iDeepDeploymentRangeEW_Bonus_Scouting;
|
||||
INT16 iDeepDeploymentRangeNS_Bonus_Stealthy;
|
||||
INT16 iDeepDeploymentRangeEW_Bonus_Stealthy;
|
||||
INT16 iDeepDeploymentRangeNS_Bonus_Survival;
|
||||
INT16 iDeepDeploymentRangeEW_Bonus_Survival;
|
||||
UINT8 iDeepDeploymentDuration;
|
||||
UINT8 iDeepDeploymentDuration_Bonus_Covert;
|
||||
UINT8 iDeepDeploymentDuration_Bonus_Scouting;
|
||||
UINT8 iDeepDeploymentDuration_Bonus_Stealthy;
|
||||
UINT8 iDeepDeploymentDuration_Bonus_Survival;
|
||||
|
||||
INT8 iGetEnemyMovementTargetsSuccessChance;
|
||||
UINT8 iGetEnemyMovementTargetsDuration;
|
||||
UINT8 iGetEnemyMovementTargetsDuration_Bonus_Covert;
|
||||
UINT8 iGetEnemyMovementTargetsDuration_Bonus_Radio;
|
||||
|
||||
INT8 iImproveLocalShopsSuccessChance;
|
||||
UINT8 iImproveLocalShopsDuration;
|
||||
|
||||
INT8 iReduceStrategicDecisionSpeedSuccessChance;
|
||||
FLOAT fReduceStrategicDecisionSpeedModifier;
|
||||
FLOAT fReduceStrategicDecisionSpeedModifier_Covert;
|
||||
FLOAT fReduceStrategicDecisionSpeedModifier_Deputy;
|
||||
FLOAT fReduceStrategicDecisionSpeedModifier_Snitch;
|
||||
UINT8 iReduceStrategicDecisionSpeedDuration;
|
||||
UINT8 iReduceStrategicDecisionSpeedDuration_Bonus_Covert;
|
||||
UINT8 iReduceStrategicDecisionSpeedDuration_Bonus_Deputy;
|
||||
UINT8 iReduceStrategicDecisionSpeedDuration_Bonus_Snitch;
|
||||
|
||||
INT8 iReduceUnalertedEnemyVisionSuccessChance;
|
||||
FLOAT fReduceUnlaertedEnemyVisionModifier;
|
||||
FLOAT fReduceUnlaertedEnemyVisionModifier_Covert;
|
||||
FLOAT fReduceUnlaertedEnemyVisionModifier_Radio;
|
||||
FLOAT fReduceUnlaertedEnemyVisionModifier_Stealthy;
|
||||
UINT8 iReduceUnalertedEnemyVisionDuration;
|
||||
UINT8 iReduceUnalertedEnemyVisionDuration_Bonus_Covert;
|
||||
UINT8 iReduceUnalertedEnemyVisionDuration_Bonus_Radio;
|
||||
|
||||
INT8 iSabotageInfantryEquipmentSuccessChance;
|
||||
INT8 iSabotageInfantryEquipmentModifier;
|
||||
INT8 iSabotageInfantryEquipmentModifier_Auto_Weapons;
|
||||
INT8 iSabotageInfantryEquipmentModifier_Covert;
|
||||
INT8 iSabotageInfantryEquipmentModifier_Demolitions;
|
||||
INT8 iSabotageInfantryEquipmentModifier_Gunslinger;
|
||||
INT8 iSabotageInfantryEquipmentModifier_Ranger;
|
||||
INT8 iSabotageInfantryEquipmentModifier_Sniper;
|
||||
UINT8 iSabotageInfantryEquipmentDuration;
|
||||
UINT8 iSabotageInfantryEquipmentDuration_Bonus_Auto_Weapons;
|
||||
UINT8 iSabotageInfantryEquipmentDuration_Bonus_Covert;
|
||||
UINT8 iSabotageInfantryEquipmentDuration_Bonus_Demolitions;
|
||||
UINT8 iSabotageInfantryEquipmentDuration_Bonus_Gunslinger;
|
||||
UINT8 iSabotageInfantryEquipmentDuration_Bonus_Ranger;
|
||||
UINT8 iSabotageInfantryEquipmentDuration_Bonus_Sniper;
|
||||
|
||||
INT8 iSabotageMechanicalUnitsSuccessChance;
|
||||
INT8 iSabotageMechanicalUnitsStatLoss;
|
||||
INT8 iSabotageMechanicalUnitsStatLoss_Covert;
|
||||
INT8 iSabotageMechanicalUnitsStatLoss_Demolitions;
|
||||
INT8 iSabotageMechanicalUnitsStatLoss_Heavy_Weapons;
|
||||
UINT8 iSabotageMechanicalUnitsDuration;
|
||||
UINT8 iSabotageMechanicalUnitsDuration_Bonus_Covert;
|
||||
UINT8 iSabotageMechanicalUnitsDuration_Bonus_Demolitions;
|
||||
UINT8 iSabotageMechanicalUnitsDuration_Bonus_Heavy_Weapons;
|
||||
|
||||
INT8 iTrainMilitiaAnywhereSuccessChance;
|
||||
INT8 iTrainMilitiaAnywhereMaxTrainers;
|
||||
INT8 iTrainMilitiaAnywhereMaxTrainers_Teaching;
|
||||
UINT8 iTrainMilitiaAnywhereDuration;
|
||||
UINT8 iTrainMilitiaAnywhereDuration_Bonus_Covert;
|
||||
UINT8 iTrainMilitiaAnywhereDuration_Bonus_Survival;
|
||||
UINT8 iTrainMilitiaAnywhereDuration_Bonus_Teaching;
|
||||
|
||||
} REBELCOMMAND_SETTINGS;
|
||||
|
||||
typedef struct
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#pragma optimize("",off)
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Strategic All.h"
|
||||
#include "GameSettings.h"
|
||||
@@ -1658,6 +1659,9 @@ BOOLEAN BasicCanCharacterTrainMilitia( SOLDIERTYPE *pSoldier )
|
||||
// check if sam site
|
||||
if( fSamSitePresent == FALSE )
|
||||
{
|
||||
if (RebelCommand::CanTrainMilitiaAnywhere())
|
||||
return( TRUE );
|
||||
|
||||
// nope
|
||||
return ( FALSE );
|
||||
}
|
||||
@@ -1971,6 +1975,9 @@ BOOLEAN CanCharacterTrainMilitia( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
}
|
||||
|
||||
if (RebelCommand::CanTrainMilitiaAnywhere())
|
||||
ubFacilityTrainersAllowed = RebelCommand::GetMaxTrainersForTrainMilitiaAnywhere();
|
||||
|
||||
// Count number of trainers already operating here
|
||||
if ( CountMilitiaTrainersInSoldiersSector( pSoldier, TOWN_MILITIA ) >= ubFacilityTrainersAllowed )
|
||||
{
|
||||
@@ -2033,6 +2040,9 @@ BOOLEAN DoesSectorMercIsInHaveSufficientLoyaltyToTrainMilitia( SOLDIERTYPE *pSol
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
if (RebelCommand::CanTrainMilitiaAnywhere())
|
||||
return(TRUE);
|
||||
|
||||
return( FALSE );
|
||||
}
|
||||
@@ -2085,7 +2095,7 @@ BOOLEAN IsMilitiaTrainableFromSoldiersSectorMaxed( SOLDIERTYPE *pSoldier, INT8 i
|
||||
// is there a town really here
|
||||
if( bTownId == BLANK_SECTOR )
|
||||
{
|
||||
fSamSitePresent = IsThisSectorASAMSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ );
|
||||
fSamSitePresent = IsThisSectorASAMSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) || RebelCommand::CanTrainMilitiaAnywhere();
|
||||
|
||||
// if there is a sam site here
|
||||
if( fSamSitePresent )
|
||||
@@ -6136,7 +6146,8 @@ void HandleTrainingInSector( INT16 sMapX, INT16 sMapY, INT8 bZ )
|
||||
}
|
||||
|
||||
// check if we're doing a sector where militia can be trained
|
||||
if( ( (StrategicMap[CALCULATE_STRATEGIC_INDEX(sMapX, sMapY) ].bNameId != BLANK_SECTOR ) || ( fSamSiteInSector == TRUE ) ) && (bZ == 0) )
|
||||
const BOOL canTrainMilitiaAnywhere = RebelCommand::CanTrainMilitiaAnywhere();
|
||||
if( (canTrainMilitiaAnywhere || (StrategicMap[CALCULATE_STRATEGIC_INDEX(sMapX, sMapY) ].bNameId != BLANK_SECTOR ) || ( fSamSiteInSector == TRUE ) ) && (bZ == 0) )
|
||||
{
|
||||
// init town trainer list
|
||||
memset( TownTrainer, 0, sizeof( TownTrainer ) );
|
||||
@@ -7898,7 +7909,7 @@ BOOLEAN TrainTownInSector( SOLDIERTYPE *pTrainer, INT16 sMapX, INT16 sMapY, INT1
|
||||
|
||||
// get town index
|
||||
ubTownId = StrategicMap[CALCULATE_STRATEGIC_INDEX(pTrainer->sSectorX, pTrainer->sSectorY ) ].bNameId;
|
||||
if( fSamSiteInSector == FALSE )
|
||||
if( fSamSiteInSector == FALSE && !RebelCommand::CanTrainMilitiaAnywhere())
|
||||
{
|
||||
AssertNE(ubTownId, BLANK_SECTOR);
|
||||
}
|
||||
@@ -20165,6 +20176,9 @@ BOOLEAN CanCharacterTrainMilitiaWithErrorReport( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
}
|
||||
|
||||
if (RebelCommand::CanTrainMilitiaAnywhere())
|
||||
ubFacilityTrainersAllowed = RebelCommand::GetMaxTrainersForTrainMilitiaAnywhere();
|
||||
|
||||
// If we are here, then TrainersAllowed > 0.
|
||||
// Otherwise we'd have failed the BasicCanTrain check
|
||||
if ( CountMilitiaTrainersInSoldiersSector( pSoldier, TOWN_MILITIA ) >= ubFacilityTrainersAllowed )
|
||||
|
||||
@@ -100,6 +100,7 @@ enum
|
||||
ADMINISTRATION, // merc boosts the effectiveness of other mercs
|
||||
EXPLORATION, // merc searches the sector for undiscovered items
|
||||
ASSIGNMENT_MINIEVENT,
|
||||
ASSIGNMENT_REBELCOMMAND,
|
||||
NUM_ASSIGNMENTS,
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include "Player Command.h" // added by Flugente
|
||||
#include "LuaInitNPCs.h" // added by Flugente
|
||||
#include "MiniEvents.h"
|
||||
#include "Rebel Command.h"
|
||||
#endif
|
||||
|
||||
#include "connect.h"
|
||||
@@ -680,6 +681,10 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent )
|
||||
CheckMiniEvents(pEvent->uiParam);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVENT_REBELCOMMAND:
|
||||
RebelCommand::HandleStrategicEvent(pEvent->uiParam);
|
||||
break;
|
||||
}
|
||||
gfPreventDeletionOfAnyEvent = fOrigPreventFlag;
|
||||
return TRUE;
|
||||
|
||||
@@ -152,6 +152,8 @@ enum
|
||||
|
||||
EVENT_MINIEVENT,
|
||||
|
||||
EVENT_REBELCOMMAND,
|
||||
|
||||
NUMBER_OF_EVENT_TYPES_PLUS_ONE,
|
||||
NUMBER_OF_EVENT_TYPES = NUMBER_OF_EVENT_TYPES_PLUS_ONE - 1
|
||||
};
|
||||
|
||||
@@ -140,6 +140,7 @@ CHAR16 gEventName[NUMBER_OF_EVENT_TYPES_PLUS_ONE][40]={
|
||||
L"bandit attack",
|
||||
L"ArmyFinishTraining",
|
||||
L"MiniEvent",
|
||||
L"ARC_Event",
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#pragma optimize("",off)
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Strategic All.h"
|
||||
#include "GameSettings.h"
|
||||
@@ -49,6 +50,7 @@
|
||||
#include "Map Screen Interface Map Inventory.h" // added by Flugente
|
||||
#include "LuaInitNPCs.h" // added by Flugente
|
||||
#include "Game Event Hook.h" // added by Flugente
|
||||
#include "Rebel Command.h"
|
||||
#endif
|
||||
|
||||
#include "Quests.h"
|
||||
@@ -844,6 +846,42 @@ void fillMapColoursForVisitedSectors(INT32(&colorMap)[ MAXIMUM_VALID_Y_COORDINAT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (RebelCommand::ShowEnemyMovementTargets())
|
||||
{
|
||||
const auto targetColor = MAP_SHADE_LT_RED;
|
||||
GROUP* pGroup = gpGroupList;
|
||||
|
||||
while (pGroup)
|
||||
{
|
||||
if (pGroup->usGroupTeam == ENEMY_TEAM)
|
||||
{
|
||||
const UINT8 intention = pGroup->pEnemyGroup->ubIntention;
|
||||
if (intention == STAGING
|
||||
|| intention == REINFORCEMENTS
|
||||
|| intention == PURSUIT
|
||||
|| intention == ASSAULT)
|
||||
{
|
||||
WAYPOINT* wp = pGroup->pWaypoints;
|
||||
|
||||
while (wp)
|
||||
{
|
||||
if (wp->next == nullptr)
|
||||
break;
|
||||
|
||||
wp = wp->next;
|
||||
}
|
||||
|
||||
if (GetSectorFlagStatus(wp->x-1, wp->y-1, (UINT8)iCurrentMapSectorZ, SF_ALREADY_VISITED))
|
||||
{
|
||||
colorMap[wp->y-1][wp->x-1] = targetColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pGroup = pGroup->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1529,6 +1529,7 @@ void MiniEventsLua(UINT32 eventId)
|
||||
&& pSoldier->stats.bLife > 0
|
||||
&& pSoldier->bAssignment != IN_TRANSIT
|
||||
&& pSoldier->bAssignment != ASSIGNMENT_POW
|
||||
&& pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND
|
||||
&& !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE))
|
||||
{
|
||||
gAllMercs.push_back(pSoldier);
|
||||
|
||||
+1787
-133
File diff suppressed because it is too large
Load Diff
@@ -6,9 +6,43 @@
|
||||
#include "Types.h"
|
||||
|
||||
#define REBEL_COMMAND_MAX_ACTIONS_PER_REGION 6
|
||||
#define NUM_ARC_AGENT_SLOTS 2
|
||||
|
||||
namespace RebelCommand
|
||||
{
|
||||
// applies to RegionSaveInfo.actionLevels: use the MSB as the active flag since I don't expect it to be used otherwise
|
||||
constexpr UINT8 ADMIN_ACTION_ACTIVE_BIT = 1 << 7;
|
||||
|
||||
// for rebelCommandSaveInfo.uBitMask
|
||||
// requirement breakdown
|
||||
// 1 bit for notification toggle
|
||||
// 5 * 4 bits for random mission selection (2off, 2def) = 32 choices each
|
||||
// need some bits to track mission area (friendly/hostile? num towns?)
|
||||
// remaining bits to track up/downgrades?
|
||||
// some should be ASD specific?
|
||||
// can we not do this and just check strategic events? GetAllStrategicEventsOfType(). could be costly. iterates over event LL on each call
|
||||
// can we cache in-flight events on load? no real need to save this, right?
|
||||
//constexpr UINT64 AGENT_NOTIFICATION_BIT = 1 << 0;
|
||||
|
||||
// the FIRST and SECOND strategic events share the same type (EVENT_REBELCOMMAND - no need to have multiple types yet, I think...)
|
||||
// so the 32-bit int will have to block out information for both events
|
||||
// FIRST EVENT BREAKDOWN
|
||||
// A######B CCCCCCCC DDDDDDDD EEEEEEEE
|
||||
// A (1 bit) - always 0 to indicate that this is the FIRST event (ie, keeping a merc busy for a set duration)
|
||||
// B (1 bit) - 0 if the player sent a generic rebel agent, 1 if the player sent one of their own mercs
|
||||
// C (8 bit) - the profile number of the merc that was sent. invalid if B == 0
|
||||
// D (8 bit) - the mission ID. should match up with RebelCommandAgentMissions enum
|
||||
// E (8 bit) - the mission duration, in hours. if 0, mission failed.
|
||||
// the rest of the bits depend on the mission?
|
||||
//
|
||||
|
||||
// SECOND EVENT BREAKDOWN
|
||||
// A####### #######B CCCCCCCC DDDDDDDD
|
||||
// A (1 bit) - always 1 to indicate that this is the SECOND event (ie, this event fires when the mission bonus expires)
|
||||
// B (1 bit) - 0 if the player sent a generic rebel agent, 1 if the player sent one of their own mercs
|
||||
// C (8 bit) - the profile number of the merc that was sent. invalid if B == 0
|
||||
// D (8 bit) - the mission ID. should match up with RebelCommandAgentMissions enum
|
||||
// extra bits are for ???????????
|
||||
|
||||
enum RebelCommandDirectives
|
||||
{
|
||||
@@ -49,6 +83,36 @@ enum RebelCommandAdminActions
|
||||
RCAA_NUM_ACTIONS
|
||||
};
|
||||
|
||||
enum RebelCommandAgentMissions
|
||||
{
|
||||
RCAM_NONE = -1,
|
||||
RCAM_DEEP_DEPLOYMENT = 0,
|
||||
RCAM_GET_ENEMY_MOVEMENT_TARGETS, // aka Strategic Intel
|
||||
RCAM_IMPROVE_LOCAL_SHOPS,
|
||||
RCAM_REDUCE_STRATEGIC_DECISION_SPEED, // aka Slower Strategic Decisions
|
||||
RCAM_REDUCE_UNALERTED_ENEMY_VISION, // aka Lower Readiness
|
||||
RCAM_SABOTAGE_INFANTRY_EQUIPMENT, // aka Sabotage Equipment
|
||||
RCAM_SABOTAGE_MECHANICAL_UNITS, // aka Sabotage Vehicles
|
||||
RCAM_TRAIN_MILITIA_ANYWHERE,
|
||||
|
||||
RCAM_NUM_MISSIONS,
|
||||
|
||||
// ideas/unimplemented - rename some?
|
||||
// need to have permanent and temporary boons
|
||||
RCAM_SEND_SUPPLIES_TO_TOWN,
|
||||
RCAM_BOOST_TOWN_ADMIN_ACTIONS,
|
||||
RCAM_PROCURE_ITEMS,
|
||||
RCAM_MILITIA_SKILL_TRAITS, // should override militia skill traits ini option - split into multiple (weapon spec, bodybuilding, athletic, night ops)
|
||||
RCAM_OBSERVE_SECTORS, // ??? competes with scouts?
|
||||
RCAM_PURCHASE_SUPPLIES, // increase daily supply income, decrease daily $ income
|
||||
RCAM_SABOTAGE_ASD, // see ASD.cpp for things that can be played with
|
||||
RCAM_SABOTAGE_MINE,
|
||||
RCAM_REDUCE_ENEMY_POOL, // need to make sure enemy pool is not infinite // giReinforcementPool, also gfUnlimitedTroops = zDiffSetting[gGameOptions.ubDifficultyLevel].bUnlimitedPoolOfTroops;
|
||||
// militia/mercs get bonus vision (???)
|
||||
// share vision with civilians?
|
||||
|
||||
};
|
||||
|
||||
enum RegionAdminStatus
|
||||
{
|
||||
RAS_NONE,
|
||||
@@ -97,8 +161,13 @@ typedef struct RegionSaveInfo
|
||||
UINT8 actionLevels[REBEL_COMMAND_MAX_ACTIONS_PER_REGION];
|
||||
UINT8 ubMaxLoyalty;
|
||||
|
||||
BOOLEAN IsActive(UINT8 index) { return (actionLevels[index] & ADMIN_ACTION_ACTIVE_BIT) == 0; }
|
||||
// rftr: I know these fly in the face of convention, but I'm lazy and this preserves savegame compatibility without needing to add any additional code
|
||||
void SetActive(UINT8 index) { actionLevels[index] &= ~ADMIN_ACTION_ACTIVE_BIT; } // active bit value = 0
|
||||
void SetInactive(UINT8 index) { actionLevels[index] |= ADMIN_ACTION_ACTIVE_BIT; } // inactive bit value = 1
|
||||
INT32 GetAdminDeployCost(INT16 numAdminTeams) { return 10 * numAdminTeams * numAdminTeams; };
|
||||
INT32 GetAdminReactivateCost(INT16 numAdminTeams) { return GetAdminDeployCost(numAdminTeams) / 4; };
|
||||
UINT8 GetLevel(INT16 index) { return actionLevels[index] & ~ADMIN_ACTION_ACTIVE_BIT; }
|
||||
} RegionSaveInfo;
|
||||
|
||||
typedef struct SaveInfo
|
||||
@@ -110,9 +179,10 @@ typedef struct SaveInfo
|
||||
INT32 iActiveDirective;
|
||||
INT32 iSelectedDirective;
|
||||
INT8 iMilitiaStatsLevel;
|
||||
UINT8 uSupplyDropCount;
|
||||
UINT8 uSupplyDropCount; // keeping this around for compatibility with old saves
|
||||
INT8 availableMissions[NUM_ARC_AGENT_SLOTS];
|
||||
|
||||
INT8 filler[19];
|
||||
INT8 filler[17];
|
||||
} SaveInfo;
|
||||
|
||||
extern SaveInfo rebelCommandSaveInfo;
|
||||
@@ -122,6 +192,7 @@ void ExitWebsite();
|
||||
void RenderWebsite();
|
||||
void HandleWebsite();
|
||||
|
||||
// admin actions
|
||||
void ApplyEnemyPenalties(SOLDIERTYPE* pSoldier);
|
||||
void ApplyMilitiaBonuses(SOLDIERTYPE* pMilitia);
|
||||
UINT8 GetApproximateEnemyLocationResolutionIndex();
|
||||
@@ -139,17 +210,30 @@ FLOAT GetPathfindersSpeedBonus(UINT8 sector);
|
||||
BOOLEAN NeutraliseRole(const SOLDIERTYPE* pSoldier);
|
||||
void RaidMines(INT32 &playerIncome, INT32 &enemyIncome);
|
||||
BOOLEAN ShowApproximateEnemyLocations();
|
||||
void ShowWebsiteAvailableMessage();
|
||||
|
||||
// agent missions
|
||||
void ApplyEnemyMechanicalUnitPenalties(SOLDIERTYPE* pSoldier);
|
||||
void ApplyMilitiaTraits(SOLDIERTYPE* pSoldier);
|
||||
void ApplyVisionModifier(const SOLDIERTYPE* pSoldier, INT32& sight);
|
||||
BOOLEAN CanAssignTraitsToMilitia();
|
||||
BOOLEAN CanTrainMilitiaAnywhere();
|
||||
UINT8 GetMaxTrainersForTrainMilitiaAnywhere();
|
||||
INT16 GetAdditionalDeployRange(const UINT8 insertionCode);
|
||||
INT8 GetEnemyEquipmentCoolnessModifier();
|
||||
INT8 GetEnemyEquipmentStatusModifier(const INT8 initialStatus);
|
||||
UINT8 GetMerchantCoolnessBonus();
|
||||
FLOAT GetStrategicDecisionSpeedModifier();
|
||||
void HandleStrategicEvent(const UINT32 eventParam);
|
||||
BOOLEAN ShowEnemyMovementTargets();
|
||||
|
||||
void DailyUpdate();
|
||||
void HourlyUpdate();
|
||||
void Init();
|
||||
void ShowWebsiteAvailableMessage();
|
||||
BOOLEAN Load(HWFILE file);
|
||||
BOOLEAN Save(HWFILE file);
|
||||
|
||||
}
|
||||
|
||||
//BOOLEAN LoadRebelCommand( HWFILE file ) { return RebelCommand::Load( file ); }
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "Map Information.h"
|
||||
#include "interface dialogue.h"
|
||||
#include "ASD.h" // added by Flugente
|
||||
#include "Rebel Command.h"
|
||||
#endif
|
||||
|
||||
#include "GameInitOptionsScreen.h"
|
||||
@@ -1198,6 +1199,8 @@ void InitStrategicAI()
|
||||
dEnemyGeneralsSpeedupFactor = max( 0.5f, dEnemyGeneralsSpeedupFactor - gStrategicStatus.usVIPsLeft * gGameExternalOptions.fEnemyGeneralStrategicDecisionSpeedBonus );
|
||||
}
|
||||
|
||||
dEnemyGeneralsSpeedupFactor *= RebelCommand::GetStrategicDecisionSpeedModifier();
|
||||
|
||||
giReinforcementPool = zDiffSetting[gGameOptions.ubDifficultyLevel].iQueensInitialPoolOfTroops;
|
||||
giForcePercentage = zDiffSetting[gGameOptions.ubDifficultyLevel].iInitialGarrisonPercentages;
|
||||
giArmyAlertness = zDiffSetting[gGameOptions.ubDifficultyLevel].iEnemyStartingAlertLevel;
|
||||
@@ -3456,6 +3459,8 @@ void EvaluateQueenSituation()
|
||||
{
|
||||
dEnemyGeneralsSpeedupFactor = max( 0.5f, dEnemyGeneralsSpeedupFactor - gStrategicStatus.usVIPsLeft * gGameExternalOptions.fEnemyGeneralStrategicDecisionSpeedBonus );
|
||||
}
|
||||
|
||||
dEnemyGeneralsSpeedupFactor *= RebelCommand::GetStrategicDecisionSpeedModifier();
|
||||
|
||||
uiOffset += dEnemyGeneralsSpeedupFactor * (zDiffSetting[gGameOptions.ubDifficultyLevel].iBaseDelayInMinutesBetweenEvaluations + Random( zDiffSetting[gGameOptions.ubDifficultyLevel].iEvaluationDelayVariance ));
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#pragma optimize("",off)
|
||||
#include "builddefines.h"
|
||||
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
@@ -279,7 +280,7 @@ void TownMilitiaTrainingCompleted( SOLDIERTYPE *pTrainer, INT16 sMapX, INT16 sMa
|
||||
|
||||
if( ubTownId == BLANK_SECTOR )
|
||||
{
|
||||
Assert( IsThisSectorASAMSector( sMapX, sMapY, 0 ) );
|
||||
Assert( IsThisSectorASAMSector( sMapX, sMapY, 0 ) || RebelCommand::CanTrainMilitiaAnywhere() );
|
||||
}
|
||||
|
||||
// force tactical to update militia status
|
||||
@@ -1293,7 +1294,7 @@ BOOLEAN IsSAMSiteFullOfMilitia( INT16 sSectorX, INT16 sSectorY, INT8 iMilitiaTyp
|
||||
INT32 iMaxMilitiaPerSector = gGameExternalOptions.iMaxMilitiaPerSector;
|
||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Militia5");
|
||||
// check if SAM site is ours?
|
||||
fSamSitePresent = IsThisSectorASAMSector( sSectorX, sSectorY, 0 );
|
||||
fSamSitePresent = IsThisSectorASAMSector(sSectorX, sSectorY, 0) || RebelCommand::CanTrainMilitiaAnywhere();
|
||||
|
||||
if( fSamSitePresent == FALSE )
|
||||
{
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#pragma optimize("",off)
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Tactical All.h"
|
||||
#else
|
||||
@@ -15,6 +16,7 @@
|
||||
#include "Random.h"
|
||||
#include "Shopkeeper Interface.h"
|
||||
#include "connect.h"
|
||||
#include "Rebel Command.h"
|
||||
#endif
|
||||
|
||||
//forward declarations of common classes to eliminate includes
|
||||
@@ -1008,8 +1010,8 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA
|
||||
// WDS - Improve Tony's and Devin's inventory like BR's
|
||||
// Tony has the better stuff sooner (than Bobby R's)
|
||||
if (bArmsDealer >= 0) {
|
||||
ubMinCoolness += armsDealerInfo[bArmsDealer].addToCoolness;
|
||||
ubMaxCoolness += armsDealerInfo[bArmsDealer].addToCoolness;
|
||||
ubMinCoolness += armsDealerInfo[bArmsDealer].addToCoolness + RebelCommand::GetMerchantCoolnessBonus();
|
||||
ubMaxCoolness += armsDealerInfo[bArmsDealer].addToCoolness + RebelCommand::GetMerchantCoolnessBonus();
|
||||
ubMinCoolness = max( armsDealerInfo[bArmsDealer].minCoolness, min( 9, ubMinCoolness ) );
|
||||
// silversurfer: max coolness should never be lower than min coolness!
|
||||
//ubMaxCoolness = max( 2, min( armsDealerInfo[bArmsDealer].maxCoolness, ubMaxCoolness ) );
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#pragma optimize("",off)
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "AI All.h"
|
||||
#include "DisplayCover.h"
|
||||
@@ -34,6 +35,7 @@
|
||||
#include "UI Cursors.h"
|
||||
#include "soldier profile type.h"
|
||||
#include "Interface Cursors.h" // added by Flugente for UICursorDefines
|
||||
#include "Rebel Command.h"
|
||||
#endif
|
||||
|
||||
//forward declarations of common classes to eliminate includes
|
||||
@@ -759,7 +761,7 @@ void CalculateCoverFromSoldier( SOLDIERTYPE* pFromSoldier, const INT32& sTargetG
|
||||
{
|
||||
const UINT8& ubStance = animArr[i];
|
||||
|
||||
INT32 usAdjustedSight;
|
||||
INT32 usAdjustedSight = 0;
|
||||
|
||||
if (pToSoldier == NULL) {
|
||||
usAdjustedSight = usSightLimit;
|
||||
@@ -767,6 +769,8 @@ void CalculateCoverFromSoldier( SOLDIERTYPE* pFromSoldier, const INT32& sTargetG
|
||||
usAdjustedSight = usSightLimit + usSightLimit * GetSightAdjustment( pToSoldier, GetStealth(pToSoldier), GetSightAdjustmentBasedOnLBE(pToSoldier), sTargetGridNo, (INT8) fRoof, ubStance ) /100;
|
||||
}
|
||||
|
||||
RebelCommand::ApplyVisionModifier(pFromSoldier, usAdjustedSight);
|
||||
|
||||
if ( SoldierToVirtualSoldierLineOfSightTest( pFromSoldier, sTargetGridNo, (INT8) fRoof, ubStance, FALSE, usAdjustedSight ) != 0 )
|
||||
{
|
||||
if ( bOverlayType > i ) bOverlayType = i;
|
||||
@@ -784,7 +788,7 @@ static void CalculateCoverFromEnemySoldier(SOLDIERTYPE* pFromSoldier, const INT3
|
||||
{
|
||||
const UINT8& ubStance = animArr[i];
|
||||
|
||||
INT32 usAdjustedSight;
|
||||
INT32 usAdjustedSight = 0;
|
||||
|
||||
if (pToSoldier == nullptr) {
|
||||
usAdjustedSight = usSightLimit;
|
||||
@@ -793,6 +797,8 @@ static void CalculateCoverFromEnemySoldier(SOLDIERTYPE* pFromSoldier, const INT3
|
||||
usAdjustedSight = usSightLimit + usSightLimit * GetSightAdjustment(pToSoldier, ToSoldierStealth, ToSoldierLBeSightAdjustment, sTargetGridNo, (INT8)fRoof, ubStance) / 100;
|
||||
}
|
||||
|
||||
RebelCommand::ApplyVisionModifier(pFromSoldier, usAdjustedSight);
|
||||
|
||||
if (SoldierToVirtualSoldierLineOfSightTest(pFromSoldier, sTargetGridNo, (INT8)fRoof, ubStance, FALSE, usAdjustedSight) != 0)
|
||||
{
|
||||
if (bOverlayType > i) bOverlayType = i;
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "message.h"
|
||||
#include "Tactical Save.h" // added by Flugente
|
||||
#include "Soldier macros.h" // added by Flugente
|
||||
#include "Rebel Command.h"
|
||||
#endif
|
||||
extern WorldItems gAllWorldItems;
|
||||
|
||||
@@ -276,6 +277,10 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
||||
|
||||
// SANDRO - new behaviour of progress setting
|
||||
bEquipmentModifier = bEquipmentRating + ( ( CalcDifficultyModifier( bSoldierClass ) / 10 ) - 5 );
|
||||
|
||||
if (bSoldierClass >= SOLDIER_CLASS_ADMINISTRATOR && bSoldierClass <= SOLDIER_CLASS_ARMY)
|
||||
bEquipmentModifier += RebelCommand::GetEnemyEquipmentCoolnessModifier();
|
||||
|
||||
switch( gGameOptions.ubProgressSpeedOfItemsChoices )
|
||||
{
|
||||
case ITEM_PROGRESS_VERY_SLOW:
|
||||
@@ -943,6 +948,8 @@ void ChooseWeaponForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bWeaponC
|
||||
// don't allow it to be lower than marksmanship, we don't want it to affect their chances of hitting
|
||||
bStatus = (INT8)max( pp->bMarksmanship, bStatus );
|
||||
|
||||
// ... unless we've done something to ruin their gear
|
||||
bStatus = RebelCommand::GetEnemyEquipmentStatusModifier(bStatus);
|
||||
|
||||
CreateItem( usGunIndex, bStatus, &(pp->Inv[ HANDPOS ]) );
|
||||
pp->Inv[ HANDPOS ].fFlags |= OBJECT_UNDROPPABLE;
|
||||
@@ -1457,6 +1464,7 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
||||
//INVTYPE *pItem;
|
||||
//UINT16 usRandom;
|
||||
UINT16 usItem = 0, usHelmetItem = 0, usVestItem = 0, usLeggingsItem = 0;
|
||||
INT8 bStatus = 0;
|
||||
//UINT16 usNumMatches;
|
||||
//INT8 bOrigVestClass = bVestClass;
|
||||
|
||||
@@ -1494,7 +1502,8 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
||||
if(!gGameExternalOptions.fSoldiersWearAnyArmour) usHelmetItem = PickARandomItem(HELMET, pp->ubSoldierClass, bHelmetClass );
|
||||
if ( usHelmetItem > 0 && Item[usHelmetItem].usItemClass == IC_ARMOUR && !(pp->Inv[ HELMETPOS ].fFlags & OBJECT_NO_OVERWRITE) && Armour[ Item[usHelmetItem].ubClassIndex ].ubArmourClass == ARMOURCLASS_HELMET )
|
||||
{
|
||||
CreateItem( usHelmetItem, (INT8)(70+Random(31)), &(pp->Inv[ HELMETPOS ]) );
|
||||
bStatus = RebelCommand::GetEnemyEquipmentStatusModifier(70 + Random(31));
|
||||
CreateItem( usHelmetItem, bStatus, &(pp->Inv[ HELMETPOS ]) );
|
||||
pp->Inv[ HELMETPOS ].fFlags |= OBJECT_UNDROPPABLE;
|
||||
|
||||
// roll to see if he gets an attachment, too. Higher chance the higher his entitled helmet class is
|
||||
@@ -1503,7 +1512,8 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
||||
UINT16 usAttachment = PickARandomAttachment(ARMOURATTACHMENT, pp->ubSoldierClass, usHelmetItem, bHelmetClass, FALSE);
|
||||
if ( usAttachment > 0 )
|
||||
{
|
||||
CreateItem( usAttachment, (INT8)(70+Random(31)), &gTempObject );
|
||||
bStatus = RebelCommand::GetEnemyEquipmentStatusModifier(70 + Random(31));
|
||||
CreateItem( usAttachment, bStatus, &gTempObject );
|
||||
gTempObject.fFlags |= OBJECT_UNDROPPABLE;
|
||||
pp->Inv[ HELMETPOS ].AttachObject( NULL, &gTempObject, FALSE );
|
||||
}
|
||||
@@ -1567,7 +1577,8 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
||||
if(!gGameExternalOptions.fSoldiersWearAnyArmour) usVestItem = PickARandomItem(VEST, pp->ubSoldierClass, bVestClass );
|
||||
if ( usVestItem > 0 && Item[usVestItem].usItemClass == IC_ARMOUR && !(pp->Inv[ VESTPOS ].fFlags & OBJECT_NO_OVERWRITE) && Armour[ Item[usVestItem].ubClassIndex ].ubArmourClass == ARMOURCLASS_VEST )
|
||||
{
|
||||
CreateItem( usVestItem, (INT8)(70+Random(31)), &(pp->Inv[ VESTPOS ]) );
|
||||
bStatus = RebelCommand::GetEnemyEquipmentStatusModifier(70 + Random(31));
|
||||
CreateItem( usVestItem, bStatus, &(pp->Inv[ VESTPOS ]) );
|
||||
pp->Inv[ VESTPOS ].fFlags |= OBJECT_UNDROPPABLE;
|
||||
|
||||
// roll to see if he gets a CERAMIC PLATES, too. Higher chance the higher his entitled vest class is
|
||||
@@ -1576,7 +1587,8 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
||||
UINT16 usAttachment = PickARandomAttachment(ARMOURATTACHMENT, pp->ubSoldierClass, usVestItem, bVestClass, FALSE);
|
||||
if ( usAttachment > 0 )
|
||||
{
|
||||
CreateItem( usAttachment, (INT8)(70+Random(31)), &gTempObject );
|
||||
bStatus = RebelCommand::GetEnemyEquipmentStatusModifier(70 + Random(31));
|
||||
CreateItem( usAttachment, bStatus, &gTempObject );
|
||||
gTempObject.fFlags |= OBJECT_UNDROPPABLE;
|
||||
pp->Inv[ VESTPOS ].AttachObject( NULL, &gTempObject, FALSE );
|
||||
}
|
||||
@@ -1661,7 +1673,8 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
||||
if(!gGameExternalOptions.fSoldiersWearAnyArmour) usLeggingsItem = PickARandomItem(LEGS, pp->ubSoldierClass, bLeggingsClass );
|
||||
if ( usLeggingsItem > 0 && Item[usLeggingsItem].usItemClass == IC_ARMOUR && !(pp->Inv[ LEGPOS ].fFlags & OBJECT_NO_OVERWRITE) && Armour[ Item[usLeggingsItem].ubClassIndex ].ubArmourClass == ARMOURCLASS_LEGGINGS )
|
||||
{
|
||||
CreateItem( usLeggingsItem, (INT8)(70+Random(31)), &(pp->Inv[ LEGPOS ]) );
|
||||
bStatus = RebelCommand::GetEnemyEquipmentStatusModifier(70 + Random(31));
|
||||
CreateItem( usLeggingsItem, bStatus, &(pp->Inv[ LEGPOS ]) );
|
||||
pp->Inv[ LEGPOS ].fFlags |= OBJECT_UNDROPPABLE;
|
||||
|
||||
// roll to see if he gets an attachment, too. Higher chance the higher his entitled Leggings class is
|
||||
@@ -1670,7 +1683,8 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
||||
UINT16 usAttachment = PickARandomAttachment(ARMOURATTACHMENT, pp->ubSoldierClass, usLeggingsItem, bLeggingsClass, FALSE);
|
||||
if ( usAttachment > 0 )
|
||||
{
|
||||
CreateItem( usAttachment, (INT8)(70+Random(31)), &gTempObject );
|
||||
bStatus = RebelCommand::GetEnemyEquipmentStatusModifier(70 + Random(31));
|
||||
CreateItem( usAttachment, bStatus, &gTempObject );
|
||||
gTempObject.fFlags |= OBJECT_UNDROPPABLE;
|
||||
pp->Inv[ LEGPOS ].AttachObject( NULL, &gTempObject, FALSE);
|
||||
}
|
||||
|
||||
@@ -1837,6 +1837,8 @@ BOOLEAN TacticalCopySoldierFromCreateStruct( SOLDIERTYPE *pSoldier, SOLDIERCREAT
|
||||
RebelCommand::ApplyMilitiaBonuses(pSoldier);
|
||||
if ((SOLDIER_CLASS_ENEMY(pSoldier->ubSoldierClass) || pSoldier->ubSoldierClass == SOLDIER_CLASS_BANDIT))
|
||||
RebelCommand::ApplyEnemyPenalties(pSoldier);
|
||||
if (pCreateStruct->bTeam == ENEMY_TEAM && (ENEMYROBOT(pCreateStruct) || ARMED_VEHICLE(pCreateStruct)))
|
||||
RebelCommand::ApplyEnemyMechanicalUnitPenalties(pSoldier);
|
||||
|
||||
// Flugente: enemy roles
|
||||
if ( gGameExternalOptions.fEnemyRoles && gGameExternalOptions.fEnemyOfficers && SOLDIER_CLASS_ENEMY( pSoldier->ubSoldierClass ) )
|
||||
@@ -3223,6 +3225,8 @@ SOLDIERTYPE* TacticalCreateEnemyTank()
|
||||
// Flugente: why would a vehicle's armour depend on game progress? Always give them 100 HP
|
||||
pSoldier->stats.bLifeMax = 100;
|
||||
pSoldier->stats.bLife = pSoldier->stats.bLifeMax;
|
||||
|
||||
RebelCommand::ApplyEnemyMechanicalUnitPenalties(pSoldier);
|
||||
}
|
||||
|
||||
return( pSoldier );
|
||||
@@ -3263,6 +3267,8 @@ SOLDIERTYPE* TacticalCreateEnemyJeep( )
|
||||
// Flugente: why would a vehicle's armour depend on game progress? Always give them 100 HP
|
||||
pSoldier->stats.bLifeMax = 100;
|
||||
pSoldier->stats.bLife = pSoldier->stats.bLifeMax;
|
||||
|
||||
RebelCommand::ApplyEnemyMechanicalUnitPenalties(pSoldier);
|
||||
}
|
||||
|
||||
return(pSoldier);
|
||||
@@ -3303,6 +3309,8 @@ SOLDIERTYPE* TacticalCreateEnemyRobot()
|
||||
|
||||
pSoldier->stats.bLifeMax = 80;
|
||||
pSoldier->stats.bLife = pSoldier->stats.bLifeMax;
|
||||
|
||||
RebelCommand::ApplyEnemyMechanicalUnitPenalties(pSoldier);
|
||||
}
|
||||
|
||||
return(pSoldier);
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "strategicmap.h"
|
||||
#include "worldman.h"
|
||||
#include "PreBattle Interface.h" // added by Flugente
|
||||
#include "Rebel Command.h"
|
||||
#endif
|
||||
|
||||
#include "connect.h"
|
||||
@@ -1401,7 +1402,7 @@ INT32 SearchForClosestPrimaryMapEdgepoint(INT32 sGridNo, UINT8 ubInsertionCode,
|
||||
break;
|
||||
}
|
||||
// WANNE - MP: Center
|
||||
if ( ( (is_networked || GetEnemyEncounterCode() == ENEMY_AMBUSH_DEPLOYMENT_CODE ) && ubInsertionCode == INSERTION_CODE_CENTER) || ubInsertionCode == INSERTION_CODE_CHOPPER )
|
||||
if ( ( (is_networked || GetEnemyEncounterCode() == ENEMY_AMBUSH_DEPLOYMENT_CODE ) && ubInsertionCode == INSERTION_CODE_CENTER) || ubInsertionCode == INSERTION_CODE_CHOPPER || (RebelCommand::GetAdditionalDeployRange(ubInsertionCode) > 0) )
|
||||
{
|
||||
InitCenterEdgepoint( ubInsertionCode == INSERTION_CODE_CENTER );
|
||||
psArray = gps1stCenterEdgepointArray;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#pragma optimize("",off)
|
||||
#include "builddefines.h"
|
||||
|
||||
// WANNE 2 <changed some lines>
|
||||
@@ -41,6 +42,7 @@
|
||||
#include "renderworld.h"//dnl ch45 051009
|
||||
#include "merc entering.h"
|
||||
#include "CampaignStats.h" // added by Flugente
|
||||
#include "Rebel Command.h"
|
||||
|
||||
typedef struct MERCPLACEMENT
|
||||
{
|
||||
@@ -910,6 +912,7 @@ void RenderTacticalPlacementGUI()
|
||||
if(sWorldScreenY <= PLACEMENT_OFFSET)
|
||||
{
|
||||
sY = (PLACEMENT_OFFSET - sWorldScreenY) / 5;
|
||||
sY += RebelCommand::GetAdditionalDeployRange(INSERTION_CODE_NORTH)/5;
|
||||
gTPClipRect.iTop += sY;
|
||||
}
|
||||
break;
|
||||
@@ -917,6 +920,7 @@ void RenderTacticalPlacementGUI()
|
||||
if((sWorldScreenX + NORMAL_MAP_SCREEN_WIDTH) >= (MAPWIDTH - PLACEMENT_OFFSET))
|
||||
{
|
||||
sX = ((sWorldScreenX + NORMAL_MAP_SCREEN_WIDTH) - (MAPWIDTH - PLACEMENT_OFFSET)) / 5;
|
||||
sX += RebelCommand::GetAdditionalDeployRange(INSERTION_CODE_EAST)/5;
|
||||
gTPClipRect.iRight -= sX;
|
||||
}
|
||||
break;
|
||||
@@ -924,6 +928,7 @@ void RenderTacticalPlacementGUI()
|
||||
if((sWorldScreenY + NORMAL_MAP_SCREEN_HEIGHT) >= (MAPHEIGHT - PLACEMENT_OFFSET))
|
||||
{
|
||||
sY = ((sWorldScreenY + NORMAL_MAP_SCREEN_HEIGHT) - (MAPHEIGHT - PLACEMENT_OFFSET)) / 5;
|
||||
sY += RebelCommand::GetAdditionalDeployRange(INSERTION_CODE_SOUTH)/5;
|
||||
gTPClipRect.iBottom -= sY;
|
||||
}
|
||||
break;
|
||||
@@ -931,6 +936,7 @@ void RenderTacticalPlacementGUI()
|
||||
if(sWorldScreenX <= PLACEMENT_OFFSET)
|
||||
{
|
||||
sX = (PLACEMENT_OFFSET - sWorldScreenX) / 5;
|
||||
sX += RebelCommand::GetAdditionalDeployRange(INSERTION_CODE_WEST)/5;
|
||||
gTPClipRect.iLeft += sX;
|
||||
}
|
||||
break;
|
||||
@@ -1234,19 +1240,19 @@ void TacticalPlacementHandle()
|
||||
switch(gMercPlacement[gbCursorMercID].ubStrategicInsertionCode)
|
||||
{
|
||||
case INSERTION_CODE_NORTH:
|
||||
if(sWorldScreenY <= PLACEMENT_OFFSET)
|
||||
if(sWorldScreenY <= (PLACEMENT_OFFSET + RebelCommand::GetAdditionalDeployRange(INSERTION_CODE_NORTH)))
|
||||
gfValidCursor = TRUE;
|
||||
break;
|
||||
case INSERTION_CODE_EAST:
|
||||
if(sWorldScreenX >= (MAPWIDTH - PLACEMENT_OFFSET))
|
||||
if(sWorldScreenX >= ((MAPWIDTH - PLACEMENT_OFFSET - RebelCommand::GetAdditionalDeployRange(INSERTION_CODE_EAST))))
|
||||
gfValidCursor = TRUE;
|
||||
break;
|
||||
case INSERTION_CODE_SOUTH:
|
||||
if(sWorldScreenY >= (MAPHEIGHT - PLACEMENT_OFFSET))
|
||||
if(sWorldScreenY >= ((MAPHEIGHT - PLACEMENT_OFFSET - RebelCommand::GetAdditionalDeployRange(INSERTION_CODE_SOUTH))))
|
||||
gfValidCursor = TRUE;
|
||||
break;
|
||||
case INSERTION_CODE_WEST:
|
||||
if(sWorldScreenX <= PLACEMENT_OFFSET)
|
||||
if(sWorldScreenX <= (PLACEMENT_OFFSET + RebelCommand::GetAdditionalDeployRange(INSERTION_CODE_WEST)))
|
||||
gfValidCursor = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3138,6 +3138,7 @@ extern STR16 szRebelCommandText[];
|
||||
extern STR16 szRebelCommandHelpText[];
|
||||
extern STR16 szRebelCommandAdminActionsText[];
|
||||
extern STR16 szRebelCommandDirectivesText[];
|
||||
extern STR16 szRebelCommandAgentMissionsText[];
|
||||
|
||||
extern STR16 szRobotText[];
|
||||
enum {
|
||||
|
||||
+35
-35
@@ -290,7 +290,7 @@ STR16 pEncyclopediaFilterCharText[] =
|
||||
{//major char filter button text
|
||||
//..L"------v"
|
||||
L"全部",//All
|
||||
L"A.I.M",
|
||||
L"A.I.M.",
|
||||
L"MERC",
|
||||
L"RPC",
|
||||
L"NPC",
|
||||
@@ -4218,7 +4218,7 @@ STR16 pHelicopterEtaStrings[] =
|
||||
L"Skyrider",
|
||||
L"着陆点",
|
||||
L"直升机严重受损,必须降落在敌军领地!", // warning that the sector the helicopter is going to use for refueling is under enemy control ->
|
||||
L"直升机将直接返回基地,你希望在此之前放下乘客吗?",
|
||||
L"直升机将直接返回基地,你希望在此之前丢下乘客吗?",
|
||||
L"剩余燃料:",
|
||||
L"到加油站距离:",
|
||||
};
|
||||
@@ -5097,7 +5097,7 @@ STR16 pLaptopIcons[] =
|
||||
|
||||
STR16 pBookMarkStrings[] =
|
||||
{
|
||||
L"A.I.M",
|
||||
L"A.I.M.",
|
||||
L"Bobby Ray's",
|
||||
L"I.M.P",
|
||||
L"M.E.R.C",
|
||||
@@ -7030,7 +7030,7 @@ STR16 pMessageStrings[] =
|
||||
L"磁盘空间不足。只有%sMB可用空间,《铁血联盟2》需要%sMB。",
|
||||
L"从AIM雇佣了%s。", //"Hired %s from AIM",
|
||||
L"%s抓住了%s。", //"%s has caught %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item.
|
||||
L"%s使用了(拾取)%s。", //L"%s has taken %s。",
|
||||
L"%s使用了%s。", //L"%s has taken %s。",
|
||||
L"%s没有医疗技能", //"%s has no medical skill",//'Merc name' has no medical skill.
|
||||
|
||||
//CDRom errors (such as ejecting CD while attempting to read the CD)
|
||||
@@ -11369,19 +11369,19 @@ STR16 szIMPGearPocketText[] =
|
||||
L"选择背心", // L"Select vest",
|
||||
L"选择裤子", //L"Select pants",
|
||||
L"选择头部装备", //L"Select face gear",
|
||||
L"选择头部装备", //L"Select face gear",
|
||||
L"选择头部装备", // L"Select face gear",
|
||||
|
||||
L"选择主武器", //L"Select main gun",
|
||||
L"选择副武器", //L"Select sidearm",
|
||||
L"选择主枪", // L"Select main gun",
|
||||
L"选择手枪", //L"Select sidearm",
|
||||
|
||||
L"选择LBE背心", //L"Select LBE vest",
|
||||
L"选择左LBE枪套", //L"Select left LBE holster",
|
||||
L"选择右LBE枪套", //L"Select right LBE holster",
|
||||
L"选择LBE皮套", //L"Select left LBE holster",
|
||||
L"选择LBE皮套", //L"Select right LBE holster",
|
||||
L"选择LBE战斗包", //L"Select LBE combat pack",
|
||||
L"选择LBE背包", //L"Select LBE backpack",
|
||||
|
||||
L"选择发射器/步枪", //L"Select launcher / rifle",
|
||||
L"选择近战武器", //L"Select melee weapon",
|
||||
L"Select launcher / rifle",
|
||||
L"选择武器", //L"Select melee weapon",
|
||||
|
||||
L"选择附加物品", //L"Select additional items", //BIGPOCK1POS
|
||||
L"选择附加物品", //L"Select additional items",
|
||||
@@ -11390,28 +11390,28 @@ STR16 szIMPGearPocketText[] =
|
||||
L"选择附加物品", //L"Select additional items",
|
||||
L"选择附加物品", //L"Select additional items",
|
||||
L"选择附加物品", //L"Select additional items",
|
||||
L"选择医疗套件", //L"Select medkit",MEDPOCK1POS
|
||||
L"选择医疗套件", //L"Select medkit",
|
||||
L"选择医疗套件", //L"Select medkit",
|
||||
L"选择医疗套件", //L"Select medkit",
|
||||
L"选择主武器弹药", //L"Select main gun ammo",SMALLPOCK1POS
|
||||
L"选择主武器弹药", //L"Select main gun ammo",
|
||||
L"选择主武器弹药", //L"Select main gun ammo",
|
||||
L"选择主武器弹药", //L"Select main gun ammo",
|
||||
L"选择主武器弹药", //L"Select main gun ammo",
|
||||
L"选择发射器/枪弹药", //L"Select launcher / rifle ammo",SMALLPOCK6POS
|
||||
L"选择发射器/枪弹药", //L"Select launcher / rifle ammo",
|
||||
L"选择发射器/枪弹药", //L"Select launcher / rifle ammo",
|
||||
L"选择发射器/枪弹药", //L"Select launcher / rifle ammo",
|
||||
L"选择发射器/枪弹药", //L"Select launcher / rifle ammo",
|
||||
L"选择配枪弹药", //L"Select sidearm ammo",SMALLPOCK11POS
|
||||
L"选择配枪弹药", //L"Select sidearm ammo",
|
||||
L"选择配枪弹药", //L"Select sidearm ammo",
|
||||
L"选择配枪弹药", //L"Select sidearm ammo",
|
||||
L"选择配枪弹药", //L"Select sidearm ammo",
|
||||
L"选择配枪弹药", //L"Select sidearm ammo",
|
||||
L"选择配枪弹药", //L"Select sidearm ammo",
|
||||
L"选择配枪弹药", //L"Select sidearm ammo",
|
||||
L"Select medkit", //MEDPOCK1POS
|
||||
L"Select medkit",
|
||||
L"Select medkit",
|
||||
L"Select medkit",
|
||||
L"Select main gun ammo", //SMALLPOCK1POS
|
||||
L"Select main gun ammo",
|
||||
L"Select main gun ammo",
|
||||
L"Select main gun ammo",
|
||||
L"Select main gun ammo",
|
||||
L"Select launcher / rifle ammo", //SMALLPOCK6POS
|
||||
L"Select launcher / rifle ammo",
|
||||
L"Select launcher / rifle ammo",
|
||||
L"Select launcher / rifle ammo",
|
||||
L"Select launcher / rifle ammo",
|
||||
L"Select sidearm ammo", //SMALLPOCK11POS
|
||||
L"Select sidearm ammo",
|
||||
L"Select sidearm ammo",
|
||||
L"Select sidearm ammo",
|
||||
L"Select sidearm ammo",
|
||||
L"Select sidearm ammo",
|
||||
L"Select sidearm ammo",
|
||||
L"Select sidearm ammo",
|
||||
L"选择附加物品", //L"Select additional items", //SMALLPOCK19POS
|
||||
L"选择附加物品", //L"Select additional items",
|
||||
L"选择附加物品", //L"Select additional items",
|
||||
@@ -11424,7 +11424,7 @@ STR16 szIMPGearPocketText[] =
|
||||
L"选择附加物品", //L"Select additional items",
|
||||
L"选择附加物品", //L"Select additional items",
|
||||
L"选择附加物品", //L"Select additional items", //SMALLPOCK30POS
|
||||
L"左键单击选择项目/右键单击关闭窗口", //L"Left click to select item / Right click to close window",
|
||||
L"Left click to select item / Right click to close window",
|
||||
};
|
||||
|
||||
STR16 szMilitiaStrategicMovementText[] =
|
||||
@@ -11966,7 +11966,7 @@ STR16 szRebelCommandAdminActionsText[] =
|
||||
L"民兵武器库", //L"Militia Warehouses",
|
||||
L"在偏远地区建造仓库,让反抗军为民兵储备武器。提供每日民兵资源。", //L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.",
|
||||
L"税务局", //L"Regional Taxes",
|
||||
L"从当地人那里筹集资金来帮助你。这是一种永久的行为。增加每日收入,但地区忠诚度会逐日下降。", //L"Collect money from the locals to assist your efforts. This is a permanent action. Increases daily income, but regional loyalty falls daily.",
|
||||
L"从当地人那里筹集资金来帮助你。增加每日收入,但地区忠诚度会逐日下降。", //L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.",
|
||||
L"民间援助", //L"Civilian Aid",
|
||||
L"指派一些反抗军直接协助和支持该地区的平民。增加每天志愿者的总数。", //L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.",
|
||||
L"私人佣兵团", //L"Merc Support",
|
||||
|
||||
@@ -11976,7 +11976,7 @@ STR16 szRebelCommandAdminActionsText[] = // TODO.Translate
|
||||
L"Militia Warehouses",
|
||||
L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.",
|
||||
L"Regional Taxes",
|
||||
L"Collect money from the locals to assist your efforts. This is a permanent action. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Civilian Aid",
|
||||
L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.",
|
||||
L"Merc Support",
|
||||
|
||||
+32
-7
@@ -11864,12 +11864,16 @@ STR16 gLbeStatsDesc[14] =
|
||||
|
||||
STR16 szRebelCommandText[] =
|
||||
{
|
||||
L"Arulco Rebel Command - National Overview",
|
||||
L"Arulco Rebel Command - Regional Overview",
|
||||
L"Switch to Regional Overview",
|
||||
L"Switch to National Overview",
|
||||
L"National Overview",
|
||||
L"Regional Overview",
|
||||
L"Mission Overview",
|
||||
L"Select View:",
|
||||
L"Regional (2)",
|
||||
L"National (1)",
|
||||
L"Mission (3)",
|
||||
L"Supplies:",
|
||||
L"Incoming Supplies",
|
||||
L"Intel:",
|
||||
L"/day",
|
||||
L"Current Directive",
|
||||
L"Improve Directive ($%d)",
|
||||
@@ -11932,12 +11936,11 @@ STR16 szRebelCommandText[] =
|
||||
STR16 szRebelCommandHelpText[] =
|
||||
{
|
||||
L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.",
|
||||
L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.",
|
||||
L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)",
|
||||
L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.",
|
||||
L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.",
|
||||
L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.",
|
||||
L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.",
|
||||
L"|G|r|a|n|t |S|u|p|p|l|i|e|s\n \nSend supplies to the admin team here and allow them to use them\nas needed. This will increase the region's loyalty by a small amount\neach time you do this. However, doing this will slightly increase\nthe cost of enacting regional policies.",
|
||||
L"This Admin Action applies its bonus to town sectors only.",
|
||||
L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.",
|
||||
L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.",
|
||||
@@ -11966,7 +11969,7 @@ STR16 szRebelCommandAdminActionsText[] =
|
||||
L"Militia Warehouses",
|
||||
L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.",
|
||||
L"Regional Taxes",
|
||||
L"Collect money from the locals to assist your efforts. This is a permanent action. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Civilian Aid",
|
||||
L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.",
|
||||
L"Merc Support",
|
||||
@@ -12030,6 +12033,28 @@ STR16 szRebelCommandDirectivesText[] =
|
||||
L"Improving this directive will increase the number of volunteers gained per day.",
|
||||
};
|
||||
|
||||
STR16 szRebelCommandAgentMissionsText[] =
|
||||
{
|
||||
L"New missions will be available every 48 hours.",
|
||||
L"A mission is currently active.",
|
||||
L"Deep Deployment",
|
||||
L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.",
|
||||
L"Strategic Intel",
|
||||
L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.",
|
||||
L"Improve Local Shops",
|
||||
L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.",
|
||||
L"Slow Strategic Decisions",
|
||||
L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.",
|
||||
L"Lower Readiness",
|
||||
L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.",
|
||||
L"Sabotage Equipment",
|
||||
L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.",
|
||||
L"Sabotage Vehicles",
|
||||
L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.",
|
||||
L"Train Militia Anywhere",
|
||||
L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.",
|
||||
};
|
||||
|
||||
STR16 szRobotText[] =
|
||||
{
|
||||
L"The robot's installed weapon cannot be changed.",
|
||||
|
||||
@@ -11958,7 +11958,7 @@ STR16 szRebelCommandAdminActionsText[] = // TODO.Translate
|
||||
L"Militia Warehouses",
|
||||
L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.",
|
||||
L"Regional Taxes",
|
||||
L"Collect money from the locals to assist your efforts. This is a permanent action. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Civilian Aid",
|
||||
L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.",
|
||||
L"Merc Support",
|
||||
|
||||
@@ -11880,7 +11880,7 @@ STR16 szRebelCommandAdminActionsText[] = // TODO.Translate
|
||||
L"Militia Warehouses",
|
||||
L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.",
|
||||
L"Regional Taxes",
|
||||
L"Collect money from the locals to assist your efforts. This is a permanent action. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Civilian Aid",
|
||||
L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.",
|
||||
L"Merc Support",
|
||||
|
||||
@@ -11967,7 +11967,7 @@ STR16 szRebelCommandAdminActionsText[] = // TODO.Translate
|
||||
L"Militia Warehouses",
|
||||
L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.",
|
||||
L"Regional Taxes",
|
||||
L"Collect money from the locals to assist your efforts. This is a permanent action. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Civilian Aid",
|
||||
L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.",
|
||||
L"Merc Support",
|
||||
|
||||
@@ -11980,7 +11980,7 @@ STR16 szRebelCommandAdminActionsText[] = // TODO.Translate
|
||||
L"Militia Warehouses",
|
||||
L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.",
|
||||
L"Regional Taxes",
|
||||
L"Collect money from the locals to assist your efforts. This is a permanent action. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Civilian Aid",
|
||||
L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.",
|
||||
L"Merc Support",
|
||||
|
||||
@@ -11961,7 +11961,7 @@ STR16 szRebelCommandAdminActionsText[] = // TODO.Translate
|
||||
L"Militia Warehouses",
|
||||
L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.",
|
||||
L"Regional Taxes",
|
||||
L"Collect money from the locals to assist your efforts. This is a permanent action. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.",
|
||||
L"Civilian Aid",
|
||||
L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.",
|
||||
L"Merc Support",
|
||||
|
||||
Reference in New Issue
Block a user