Merge pull request #17 from rftrdev/arc-missions

Expanded the ARC feature with missions: https://thepit.ja-galaxy-forum.com/index.php?t=msg&th=24884
This commit is contained in:
rftrdev
2022-11-07 00:37:16 -08:00
committed by GitHub
49 changed files with 3808 additions and 302 deletions
+119
View File
@@ -4157,6 +4157,125 @@ void LoadRebelCommandSettings()
gRebelCommandSettings.iFortificationsBonus = iniReader.ReadInteger("Rebel Command Settings", "FORTIFICATIONS_BONUS", 10, 0, 100);
// agent missions
gRebelCommandSettings.iMissionBaseCost = iniReader.ReadInteger("Rebel Command Settings", "MISSION_BASE_COST", 500, 100, 10000);
gRebelCommandSettings.iMissionAdditionalCost = iniReader.ReadInteger("Rebel Command Settings", "MISSION_ADDITIONAL_COST", 250, 0, 10000);
gRebelCommandSettings.iMissionPrepTime = iniReader.ReadInteger("Rebel Command Settings", "MISSION_PREPARATION_TIME", 24, 1, 168);
gRebelCommandSettings.iMissionRefreshTimeDays = iniReader.ReadInteger("Rebel Command Settings", "MISSION_REFRESH_TIME_DAYS", 2, 1, 7);
gRebelCommandSettings.iMinLoyaltyForMission = iniReader.ReadInteger("Rebel Command Settings", "MIN_LOYALTY_FOR_MISSION", 51, 0, 100);
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.iDisruptAsdSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "DISRUPT_ASD_SUCCESS_CHANCE", 50, 0, 100);
gRebelCommandSettings.fDisruptAsdIncomeReductionModifier = iniReader.ReadFloat("Rebel Command Settings", "DISRUPT_ASD_INCOME_MODIFIER", 0.5f, 0.f, 1.f);
gRebelCommandSettings.fDisruptAsdIncomeReductionModifier_Covert = iniReader.ReadFloat("Rebel Command Settings", "DISRUPT_ASD_INCOME_MODIFIER_COVERT", 0.5f, 0.f, 1.f);
gRebelCommandSettings.fDisruptAsdIncomeReductionModifier_Demolitions = iniReader.ReadFloat("Rebel Command Settings", "DISRUPT_ASD_INCOME_MODIFIER_DEMOLITIONS", 0.5f, 0.f, 1.f);
gRebelCommandSettings.fDisruptAsdIncomeReductionModifier_Nightops = iniReader.ReadFloat("Rebel Command Settings", "DISRUPT_ASD_INCOME_MODIFIER_NIGHTOPS", 0.5f, 0.f, 1.f);
gRebelCommandSettings.fDisruptAsdIncomeReductionModifier_Technician = iniReader.ReadFloat("Rebel Command Settings", "DISRUPT_ASD_INCOME_MODIFIER_TECHNICIAN", 0.5f, 0.f, 1.f);
gRebelCommandSettings.iDisruptAsdDuration = iniReader.ReadInteger("Rebel Command Settings", "DISRUPT_ASD_DURATION", 72, 0, 255);
gRebelCommandSettings.iDisruptAsdDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "DISRUPT_ASD_DURATION_BONUS_COVERT", 48, 0, 255);
gRebelCommandSettings.iDisruptAsdDuration_Bonus_Demolitions = iniReader.ReadInteger("Rebel Command Settings", "DISRUPT_ASD_DURATION_BONUS_DEMOLITIONS", 48, 0, 255);
gRebelCommandSettings.iDisruptAsdDuration_Bonus_Nightops = iniReader.ReadInteger("Rebel Command Settings", "DISRUPT_ASD_DURATION_BONUS_NIGHTOPS", 48, 0, 255);
gRebelCommandSettings.iDisruptAsdDuration_Bonus_Technician = iniReader.ReadInteger("Rebel Command Settings", "DISRUPT_ASD_DURATION_BONUS_TECHNICIAN", 48, 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.iSendSuppliesToTownSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "SEND_SUPPLIES_TO_TOWN_SUCCESS_CHANCE", 50, 0, 100);
gRebelCommandSettings.iSendSuppliesToTownDuration = iniReader.ReadInteger("Rebel Command Settings", "SEND_SUPPLIES_TO_TOWN_DURATION", 72, 0, 255);
gRebelCommandSettings.iSendSuppliesToTownLoyaltyGain = iniReader.ReadInteger("Rebel Command Settings", "SEND_SUPPLIES_TO_TOWN_LOYALTY_GAIN", 500, 1, 10000);
gRebelCommandSettings.iSendSuppliesToTownInterval = iniReader.ReadInteger("Rebel Command Settings", "SEND_SUPPLIES_TO_TOWN_INTERVAL", 6, 1, 24);
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);
gRebelCommandSettings.iSoldierBountiesKingpinSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_SUCCESS_CHANCE", 50, 0, 100);
gRebelCommandSettings.iSoldierBountiesKingpinDuration = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_DURATION", 24, 0, 255);
gRebelCommandSettings.iSoldierBountiesKingpinDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_DURATION_BONUS_COVERT", 24, 0, 255);
gRebelCommandSettings.iSoldierBountiesKingpinDuration_Bonus_Demolitions = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_DURATION_BONUS_DEMOLITIONS", 24, 0, 255);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Admin = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_ADMIN", 100, 0, 5000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Troop = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_TROOP", 100, 0, 5000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Elite = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_ELITE", 100, 0, 5000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Robot = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_ROBOT", 100, 0, 5000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Jeep = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_JEEP", 100, 0, 5000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Tank = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_TANK", 100, 0, 5000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Officer = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_OFFICER", 100, 0, 5000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Limit = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_LIMIT", 10000, 0, 30000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Limit_Demolitions = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_LIMIT_DEMOLITIONS", 10000, 0, 30000);
gRebelCommandSettings.iSoldierBountiesKingpinPayout_Limit_Snitch = iniReader.ReadInteger("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_LIMIT_SNITCH", 10000, 0, 30000);
gRebelCommandSettings.fSoldierBountiesKingpinPayout_Bonus_Covert = iniReader.ReadFloat("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_BONUS_COVERT", 1.1f, 0.f, 2.f);
gRebelCommandSettings.fSoldierBountiesKingpinPayout_Bonus_Deputy = iniReader.ReadFloat("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_BONUS_DEPUTY", 1.1f, 0.f, 2.f);
gRebelCommandSettings.fSoldierBountiesKingpinPayout_Bonus_Snitch = iniReader.ReadFloat("Rebel Command Settings", "SOLDIER_BOUNTIES_KINGPIN_PAYOUT_BONUS_SNITCH", 1.1f, 0.f, 2.f);
}
void FreeGameExternalOptions()
+120
View File
@@ -1842,6 +1842,126 @@ typedef struct
INT16 iFortificationsBonus;
// agent missions
INT32 iMissionBaseCost;
INT32 iMissionAdditionalCost;
INT16 iMissionPrepTime;
INT8 iMissionRefreshTimeDays;
INT8 iMinLoyaltyForMission;
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 iDisruptAsdSuccessChance;
FLOAT fDisruptAsdIncomeReductionModifier;
FLOAT fDisruptAsdIncomeReductionModifier_Covert;
FLOAT fDisruptAsdIncomeReductionModifier_Demolitions;
FLOAT fDisruptAsdIncomeReductionModifier_Nightops;
FLOAT fDisruptAsdIncomeReductionModifier_Technician;
UINT8 iDisruptAsdDuration;
UINT8 iDisruptAsdDuration_Bonus_Covert;
UINT8 iDisruptAsdDuration_Bonus_Demolitions;
UINT8 iDisruptAsdDuration_Bonus_Nightops;
UINT8 iDisruptAsdDuration_Bonus_Technician;
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 iSendSuppliesToTownSuccessChance;
UINT8 iSendSuppliesToTownDuration;
INT32 iSendSuppliesToTownLoyaltyGain;
INT8 iSendSuppliesToTownInterval;
INT8 iTrainMilitiaAnywhereSuccessChance;
INT8 iTrainMilitiaAnywhereMaxTrainers;
INT8 iTrainMilitiaAnywhereMaxTrainers_Teaching;
UINT8 iTrainMilitiaAnywhereDuration;
UINT8 iTrainMilitiaAnywhereDuration_Bonus_Covert;
UINT8 iTrainMilitiaAnywhereDuration_Bonus_Survival;
UINT8 iTrainMilitiaAnywhereDuration_Bonus_Teaching;
INT8 iSoldierBountiesKingpinSuccessChance;
UINT8 iSoldierBountiesKingpinDuration;
UINT8 iSoldierBountiesKingpinDuration_Bonus_Covert;
UINT8 iSoldierBountiesKingpinDuration_Bonus_Demolitions;
UINT16 iSoldierBountiesKingpinPayout_Admin;
UINT16 iSoldierBountiesKingpinPayout_Troop;
UINT16 iSoldierBountiesKingpinPayout_Elite;
UINT16 iSoldierBountiesKingpinPayout_Robot;
UINT16 iSoldierBountiesKingpinPayout_Jeep;
UINT16 iSoldierBountiesKingpinPayout_Tank;
UINT16 iSoldierBountiesKingpinPayout_Officer;
INT16 iSoldierBountiesKingpinPayout_Limit;
INT16 iSoldierBountiesKingpinPayout_Limit_Demolitions;
INT16 iSoldierBountiesKingpinPayout_Limit_Snitch;
FLOAT fSoldierBountiesKingpinPayout_Bonus_Covert;
FLOAT fSoldierBountiesKingpinPayout_Bonus_Deputy;
FLOAT fSoldierBountiesKingpinPayout_Bonus_Snitch;
} REBELCOMMAND_SETTINGS;
typedef struct
+1 -1
View File
@@ -57,6 +57,6 @@
CHAR8 czVersionNumber[16] = { "Build 22.11.04" }; //YY.MM.DD
CHAR16 zTrackingNumber[16] = { L"Z" };
CHAR16 zRevisionNumber[16] = { L"Revision 9404" };
CHAR16 zRevisionNumber[16] = { L"Revision 9405" };
// SAVE_GAME_VERSION is defined in header, change it there
+4
View File
@@ -1612,6 +1612,10 @@ void ProcessTransactionString(STR16 pString, FinanceUnitPtr pFinance)
case REBEL_COMMAND_SPENDING:
swprintf(pString, L"%s", pTransactionText[REBEL_COMMAND_SPENDING]);
break;
case REBEL_COMMAND_BOUNTY_PAYOUT:
swprintf(pString, L"%s", pTransactionText[REBEL_COMMAND_BOUNTY_PAYOUT]);
break;
}
}
+1
View File
@@ -62,6 +62,7 @@ enum
MINI_EVENT, // rftr: mini events
REBEL_COMMAND, // rftr: rebel command
REBEL_COMMAND_SPENDING, // rftr: rebel command
REBEL_COMMAND_BOUNTY_PAYOUT, // rftr: rebel command soldier bounties
TEXT_NUM_FINCANCES
};
+17 -3
View File
@@ -52,6 +52,7 @@
#include "Sound Control.h"
#include "renderworld.h"
#include "Isometric Utils.h"
#include "Rebel Command.h"
#endif
@@ -548,9 +549,22 @@ UINT32 ASDResourceCostMoney( UINT8 aType )
return gGameExternalOptions.gASDResource_Cost[aType];
}
INT32 GetStrategicAIResourceCount( UINT8 aType )
{
if (aType < 0 || aType >= ASD_RESOURCE_MAX)
return 0;
return gASDResource[aType];
}
// add resources to the AIs resource pool
void AddStrategicAIResources( UINT8 aType, INT32 aAmount )
{
if (aType == ASD_MONEY)
{
aAmount *= RebelCommand::GetASDIncomeModifier();
}
gASDResource[aType] = max( 0, gASDResource[aType] + aAmount );
if ( aType == ASD_HELI )
@@ -1500,7 +1514,7 @@ UINT32 ASDResourceCostFuel( UINT8 aType )
// if ASD has tanks, it can allow the queen to upgrade soldiers to tanks
BOOLEAN ASDSoldierUpgradeToTank( )
{
if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsTanks )
if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsTanks && RebelCommand::GetASDCanDeployUnits() )
{
if ( gASD_Flags & ASDFACT_TANK_UNLOCKED )
{
@@ -1517,7 +1531,7 @@ BOOLEAN ASDSoldierUpgradeToTank( )
BOOLEAN ASDSoldierUpgradeToJeep( )
{
if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsJeeps )
if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsJeeps && RebelCommand::GetASDCanDeployUnits() )
{
if ( gASD_Flags & ASDFACT_JEEP_UNLOCKED )
{
@@ -1534,7 +1548,7 @@ BOOLEAN ASDSoldierUpgradeToJeep( )
BOOLEAN ASDSoldierUpgradeToRobot( )
{
if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsRobots )
if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsRobots && RebelCommand::GetASDCanDeployUnits() )
{
if ( gASD_Flags & ASDFACT_ROBOT_UNLOCKED )
{
+2
View File
@@ -56,6 +56,8 @@ void SetASDFlag( UINT32 aFlag );
UINT32 ASDResourceDeliveryTime( UINT8 aType );
UINT32 ASDResourceCostMoney( UINT8 aType );
INT32 GetStrategicAIResourceCount( UINT8 aType );
// add resources to the AIs resource pool
void AddStrategicAIResources( UINT8 aType, INT32 aAmount );
+29 -10
View File
@@ -813,6 +813,11 @@ BOOLEAN BasicCanCharacterAssignment( SOLDIERTYPE * pSoldier, BOOLEAN fNotInComba
return( FALSE );
}
if (pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
{
return( FALSE );
}
return( TRUE );
}
@@ -1658,6 +1663,9 @@ BOOLEAN BasicCanCharacterTrainMilitia( SOLDIERTYPE *pSoldier )
// check if sam site
if( fSamSitePresent == FALSE )
{
if (RebelCommand::CanTrainMilitiaAnywhere())
return( TRUE );
// nope
return ( FALSE );
}
@@ -1971,6 +1979,9 @@ BOOLEAN CanCharacterTrainMilitia( SOLDIERTYPE *pSoldier )
}
}
if (RebelCommand::CanTrainMilitiaAnywhere() && GetTownIdForSector(pSoldier->sSectorX, pSoldier->sSectorY) == BLANK_SECTOR)
ubFacilityTrainersAllowed = RebelCommand::GetMaxTrainersForTrainMilitiaAnywhere();
// Count number of trainers already operating here
if ( CountMilitiaTrainersInSoldiersSector( pSoldier, TOWN_MILITIA ) >= ubFacilityTrainersAllowed )
{
@@ -2033,6 +2044,9 @@ BOOLEAN DoesSectorMercIsInHaveSufficientLoyaltyToTrainMilitia( SOLDIERTYPE *pSol
{
return( TRUE );
}
if (RebelCommand::CanTrainMilitiaAnywhere())
return(TRUE);
return( FALSE );
}
@@ -2085,7 +2099,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 )
@@ -2491,7 +2505,7 @@ BOOLEAN CanCharacterSleep( SOLDIERTYPE *pSoldier, BOOLEAN fExplainWhyNot )
}
// POW?
if( pSoldier->bAssignment == ASSIGNMENT_POW || pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
if( pSoldier->bAssignment == ASSIGNMENT_POW || pSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND )
{
return( FALSE );
}
@@ -2709,7 +2723,7 @@ INT8 CanCharacterSquad( SOLDIERTYPE *pSoldier, INT8 bSquadValue )
return ( CHARACTER_CANT_JOIN_SQUAD );
}
if ( pSoldier->bAssignment == ASSIGNMENT_POW || (pSoldier->bAssignment == ASSIGNMENT_MINIEVENT && pSoldier->ubHoursRemainingOnMiniEvent > 0))
if ( pSoldier->bAssignment == ASSIGNMENT_POW || (pSoldier->bAssignment == ASSIGNMENT_MINIEVENT && pSoldier->ubHoursRemainingOnMiniEvent > 0) || (pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND) )
{
// not allowed to be put on a squad
return( CHARACTER_CANT_JOIN_SQUAD );
@@ -5830,7 +5844,7 @@ void FatigueCharacter( SOLDIERTYPE *pSoldier )
}
// POW?
if( pSoldier->bAssignment == ASSIGNMENT_POW || pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
if( pSoldier->bAssignment == ASSIGNMENT_POW || pSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND )
{
return;
}
@@ -6136,7 +6150,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 +7913,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);
}
@@ -10708,7 +10723,7 @@ void HandleShadingOfLinesForAssignmentMenus( void )
}
// radio scan
if( pSoldier->CanUseRadio() )
if( BasicCanCharacterAssignment( pSoldier, TRUE ) && pSoldier->CanUseRadio() )
{
// unshade line
UnShadeStringInBox( ghAssignmentBox, ASSIGN_MENU_RADIO_SCAN );
@@ -16312,7 +16327,7 @@ void HandleRestFatigueAndSleepStatus( void )
continue;
}
if( ( pSoldier->bAssignment == ASSIGNMENT_POW ) || ( pSoldier->bAssignment == IN_TRANSIT ) || ( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) )
if( ( pSoldier->bAssignment == ASSIGNMENT_POW ) || ( pSoldier->bAssignment == IN_TRANSIT ) || ( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) || ( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) )
{
continue;
}
@@ -16461,7 +16476,7 @@ void HandleRestFatigueAndSleepStatus( void )
continue;
}
if( ( pSoldier->bAssignment == ASSIGNMENT_POW ) || ( pSoldier->bAssignment == IN_TRANSIT ) || ( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) )
if( ( pSoldier->bAssignment == ASSIGNMENT_POW ) || ( pSoldier->bAssignment == IN_TRANSIT ) || ( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) || ( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) )
{
continue;
}
@@ -19442,7 +19457,8 @@ BOOLEAN CanCharacterRepairAnotherSoldiersStuff( SOLDIERTYPE *pSoldier, SOLDIERTY
( AM_A_ROBOT( pSoldier ) ) ||
( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__EPC ) ||
( pOtherSoldier->bAssignment == ASSIGNMENT_DEAD ) ||
( pOtherSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) )
( pOtherSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) ||
( pOtherSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) )
{
return( FALSE );
}
@@ -20165,6 +20181,9 @@ BOOLEAN CanCharacterTrainMilitiaWithErrorReport( SOLDIERTYPE *pSoldier )
}
}
if (RebelCommand::CanTrainMilitiaAnywhere() && GetTownIdForSector(pSoldier->sSectorX, pSoldier->sSectorY) == BLANK_SECTOR)
ubFacilityTrainersAllowed = RebelCommand::GetMaxTrainersForTrainMilitiaAnywhere();
// If we are here, then TrainersAllowed > 0.
// Otherwise we'd have failed the BasicCanTrain check
if ( CountMilitiaTrainersInSoldiersSector( pSoldier, TOWN_MILITIA ) >= ubFacilityTrainersAllowed )
+1
View File
@@ -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,
};
+5
View File
@@ -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;
+2
View File
@@ -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
};
+1
View File
@@ -140,6 +140,7 @@ CHAR16 gEventName[NUMBER_OF_EVENT_TYPES_PLUS_ONE][40]={
L"bandit attack",
L"ArmyFinishTraining",
L"MiniEvent",
L"ARC_Event",
};
#endif
+2
View File
@@ -712,6 +712,7 @@ void HourlyStealUpdate()
&& pSoldier->bAssignment != IN_TRANSIT
&& pSoldier->bAssignment != ASSIGNMENT_POW
&& pSoldier->bAssignment != ASSIGNMENT_MINIEVENT
&& pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND
&& !( ( ( gWorldSectorX == pSoldier->sSectorX ) && ( gWorldSectorY == pSoldier->sSectorY ) && ( gbWorldSectorZ == pSoldier->bSectorZ ) ) && ( gTacticalStatus.fEnemyInSector || guiCurrentScreen == GAME_SCREEN ) ) )
{
UINT8 ubSectorId = SECTOR( pSoldier->sSectorX, pSoldier->sSectorY );
@@ -741,6 +742,7 @@ void HourlyStealUpdate()
&& pOtherSoldier->bAssignment != IN_TRANSIT
&& pOtherSoldier->bAssignment != ASSIGNMENT_POW
&& pOtherSoldier->bAssignment != ASSIGNMENT_MINIEVENT
&& pOtherSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND
&& !SPY_LOCATION( pOtherSoldier->bAssignment )
&& pOtherSoldier->bActive
&& !pOtherSoldier->flags.fMercAsleep
@@ -1795,6 +1795,7 @@ BOOLEAN AnyUsableRealMercenariesOnTeam( void )
( pSoldier->bAssignment != ASSIGNMENT_POW ) &&
( pSoldier->bAssignment != ASSIGNMENT_DEAD ) &&
( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) &&
( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) &&
( pSoldier->ubWhatKindOfMercAmI != MERC_TYPE__EPC ) )
{
return( TRUE );
+39
View File
@@ -49,6 +49,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 +845,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;
}
}
}
@@ -1328,6 +1365,7 @@ INT32 ShowAssignedTeam(INT16 sMapX, INT16 sMapY, INT32 iCount)
( pSoldier->bAssignment != IN_TRANSIT ) &&
( pSoldier->bAssignment != ASSIGNMENT_POW ) &&
( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) &&
( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) &&
( pSoldier->stats.bLife > 0 ) &&
( !PlayerIDGroupInMotion( pSoldier->ubGroupID ) ) )
{
@@ -6938,6 +6976,7 @@ BOOLEAN CanMercsScoutThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
( pSoldier->bAssignment == ASSIGNMENT_POW ) ||
( pSoldier->bAssignment == ASSIGNMENT_DEAD ) ||
( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) ||
( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) ||
( pSoldier->flags.fMercAsleep == TRUE ) ||
( pSoldier->stats.bLife < OKLIFE ) )
{
+4 -4
View File
@@ -1938,7 +1938,7 @@ void UpdateCharRegionHelpText( void )
pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ];
// health/energy/morale
if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT )
if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND )
{
if ( pSoldier->stats.bLife != 0 )
{
@@ -3713,7 +3713,7 @@ void SetUpMovingListsForSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ )
pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ];
if( ( pSoldier->bActive ) &&
( pSoldier->bAssignment != IN_TRANSIT ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && !SPY_LOCATION( pSoldier->bAssignment ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) &&
( pSoldier->bAssignment != IN_TRANSIT ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && !SPY_LOCATION( pSoldier->bAssignment ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) &&
( pSoldier->sSectorX == sSectorX ) && ( pSoldier->sSectorY == sSectorY ) && ( pSoldier->bSectorZ == sSectorZ ) )
{
if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
@@ -6063,8 +6063,8 @@ BOOLEAN CanCharacterMoveInStrategic( SOLDIERTYPE *pSoldier, INT8 *pbErrorNumber
return( FALSE );
}
// mini event?
if ( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
// mini event/rebel command?
if ( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND )
{
*pbErrorNumber = 29;
return( FALSE );
+1
View File
@@ -1532,6 +1532,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);
+1
View File
@@ -2376,6 +2376,7 @@ BOOLEAN PlayerMercInvolvedInThisCombat( SOLDIERTYPE *pSoldier )
pSoldier->bAssignment != ASSIGNMENT_POW &&
pSoldier->bAssignment != ASSIGNMENT_DEAD &&
pSoldier->bAssignment != ASSIGNMENT_MINIEVENT &&
pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND &&
!(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) &&
// Robot is involved if it has a valid controller with it, uninvolved otherwise
( !AM_A_ROBOT( pSoldier ) || ( pSoldier->ubRobotRemoteHolderID != NOBODY ) ) &&
+6 -1
View File
@@ -299,7 +299,7 @@ UINT16 NumPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, INT8 sSecto
// we test several conditions before we allow adding an opinion
// other merc must be active, have a profile, be someone else and not be in transit or dead
if ( pTeamSoldier->bActive && !pTeamSoldier->flags.fBetweenSectors && pTeamSoldier->stats.bLife > 0 && !(pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) &&
!(pTeamSoldier->bAssignment == IN_TRANSIT || pTeamSoldier->bAssignment == ASSIGNMENT_DEAD || pTeamSoldier->bAssignment == ASSIGNMENT_POW || pTeamSoldier->bAssignment == ASSIGNMENT_MINIEVENT) &&
!(pTeamSoldier->bAssignment == IN_TRANSIT || pTeamSoldier->bAssignment == ASSIGNMENT_DEAD || pTeamSoldier->bAssignment == ASSIGNMENT_POW || pTeamSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pTeamSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND) &&
(pTeamSoldier->sSectorX == sSectorX && pTeamSoldier->sSectorY == sSectorY && pTeamSoldier->bSectorZ == sSectorZ) )
{
++teammemberspresent;
@@ -2795,6 +2795,11 @@ void EnemyCapturesPlayerSoldier( SOLDIERTYPE *pSoldier )
return;
}
if (pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
{
return;
}
if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
{
return;
+2528 -181
View File
File diff suppressed because it is too large Load Diff
+81 -5
View File
@@ -1,14 +1,38 @@
#ifndef REBEL_COMMAND_H
#define REBEL_COMMAND_H
#include "CampaignStats.h"
#include "mapscreen.h"
#include "Soldier Control.h"
#include "Types.h"
#define REBEL_COMMAND_Z_OFFSET 9
#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;
// 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.
// extra bits are mission-specific
// 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 mission-specific
enum RebelCommandDirectives
{
@@ -49,6 +73,34 @@ enum RebelCommandAdminActions
RCAA_NUM_ACTIONS
};
enum RebelCommandAgentMissions
{
RCAM_NONE = -1,
RCAM_DEEP_DEPLOYMENT = 0,
RCAM_DISRUPT_ASD, // only available if ASD enabled
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_SEND_SUPPLIES_TO_TOWN, // ignores minimum loyalty requirement
RCAM_SOLDIER_BOUNTIES_KINGPIN,
RCAM_TRAIN_MILITIA_ANYWHERE,
RCAM_NUM_MISSIONS,
// ideas/unimplemented
RCAM_BOOST_TOWN_ADMIN_ACTIONS, // store agent location townid in extrabits
RCAM_PROCURE_ITEMS,
RCAM_MILITIA_SKILL_TRAITS, // should override militia skill traits ini option - split into multiple (weapon spec, bodybuilding, athletic, night ops)
RCAM_PURCHASE_SUPPLIES, // increase daily supply income, decrease daily $ income
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 +149,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 +167,11 @@ 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];
UINT16 cachedBountyPayout;
INT8 filler[19];
INT8 filler[15];
} SaveInfo;
extern SaveInfo rebelCommandSaveInfo;
@@ -122,6 +181,7 @@ void ExitWebsite();
void RenderWebsite();
void HandleWebsite();
// admin actions
void ApplyEnemyPenalties(SOLDIERTYPE* pSoldier);
void ApplyMilitiaBonuses(SOLDIERTYPE* pMilitia);
UINT8 GetApproximateEnemyLocationResolutionIndex();
@@ -139,17 +199,33 @@ FLOAT GetPathfindersSpeedBonus(UINT8 sector);
BOOLEAN NeutraliseRole(const SOLDIERTYPE* pSoldier);
void RaidMines(INT32 &playerIncome, INT32 &enemyIncome);
BOOLEAN ShowApproximateEnemyLocations();
void ShowWebsiteAvailableMessage();
// agent missions
void ApplySoldierBounty(const SOLDIERTYPE* pSoldier);
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);
BOOLEAN GetASDCanDeployUnits();
FLOAT GetASDIncomeModifier();
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
+5
View File
@@ -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 ));
+2 -1
View File
@@ -5475,7 +5475,7 @@ BOOLEAN TestForBloodcatAmbush( GROUP *pGroup )
{
if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) )
{
if ( MercPtrs[ i ]->sSectorX == pGroup->ubSectorX && MercPtrs[ i ]->sSectorY == pGroup->ubSectorY && MercPtrs[ i ]->bAssignment != ASSIGNMENT_POW && MercPtrs[ i ]->bAssignment != ASSIGNMENT_MINIEVENT && MercPtrs[ i ]->stats.bLife >= OKLIFE )
if ( MercPtrs[ i ]->sSectorX == pGroup->ubSectorX && MercPtrs[ i ]->sSectorY == pGroup->ubSectorY && MercPtrs[ i ]->bAssignment != ASSIGNMENT_POW && MercPtrs[ i ]->bAssignment != ASSIGNMENT_MINIEVENT && MercPtrs[i]->bAssignment != ASSIGNMENT_REBELCOMMAND && MercPtrs[ i ]->stats.bLife >= OKLIFE )
{
if( HAS_SKILL_TRAIT( MercPtrs[ i ], SCOUTING_NT ) && MercPtrs[ i ]->ubProfile != NO_PROFILE )
{
@@ -5880,6 +5880,7 @@ BOOLEAN GroupHasInTransitDeadOrPOWMercs( GROUP *pGroup )
if( ( pPlayer->pSoldier->bAssignment == IN_TRANSIT ) ||
( pPlayer->pSoldier->bAssignment == ASSIGNMENT_POW ) ||
( pPlayer->pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) ||
( pPlayer->pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) ||
SPY_LOCATION( pPlayer->pSoldier->bAssignment ) ||
( pPlayer->pSoldier->bAssignment == ASSIGNMENT_DEAD ) )
{
+2 -2
View File
@@ -279,7 +279,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 +1293,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 )
{
+16 -7
View File
@@ -2411,7 +2411,8 @@ void DrawCharBars( void )
if( ( pSoldier->stats.bLife == 0 ) ||
( pSoldier->bAssignment == ASSIGNMENT_DEAD ) ||
( pSoldier->bAssignment == ASSIGNMENT_POW ) ||
( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) )
( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) ||
( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) )
{
return;
}
@@ -2829,7 +2830,7 @@ void DrawCharHealth( INT16 sCharNum )
pSoldier = &Menptr[gCharactersList[sCharNum].usSolID];
if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT )
if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND )
{
// find starting X coordinate by centering all 3 substrings together, then print them separately (different colors)!
swprintf( sString, L"%d/%d", pSoldier->stats.bLife, pSoldier->stats.bLifeMax );
@@ -11328,7 +11329,7 @@ void TeamListInfoRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason )
fPlotForMilitia = FALSE;
// if not dead or POW, select his sector
if( ( pSoldier->stats.bLife > 0 ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ))//&& !SPY_LOCATION( pSoldier->bAssignment ) )
if( ( pSoldier->stats.bLife > 0 ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) )//&& !SPY_LOCATION( pSoldier->bAssignment ) )
{
ChangeSelectedMapSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ );
}
@@ -11384,7 +11385,7 @@ void TeamListInfoRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason )
fPlotForMilitia = FALSE;
// if not dead or POW, select his sector
if( ( pSoldier->stats.bLife > 0 ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && !SPY_LOCATION( pSoldier->bAssignment ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) )
if( ( pSoldier->stats.bLife > 0 ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && !SPY_LOCATION( pSoldier->bAssignment ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) )
{
ChangeSelectedMapSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ );
}
@@ -11567,7 +11568,7 @@ void TeamListAssignmentRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason )
fShownAssignmentMenu = FALSE;
// if not dead or POW, select his sector
if( ( pSoldier->stats.bLife > 0 ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) )
if( ( pSoldier->stats.bLife > 0 ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) )
{
ChangeSelectedMapSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ );
}
@@ -15115,6 +15116,7 @@ BOOLEAN MapCharacterHasAccessibleInventory( INT8 bCharNumber )
if( ( pSoldier->bAssignment == IN_TRANSIT ) ||
( pSoldier->bAssignment == ASSIGNMENT_POW ) ||
( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) ||
( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) ||
// Kaiden: Vehicle Inventory change - Commented the following line
// ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ||
// And added this instead:
@@ -15303,7 +15305,7 @@ BOOLEAN CanChangeSleepStatusForSoldier( SOLDIERTYPE *pSoldier )
// if a vehicle, robot, in transit, or a POW
if( ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) || AM_A_ROBOT( pSoldier ) ||
( pSoldier->bAssignment == IN_TRANSIT ) || ( pSoldier->bAssignment == ASSIGNMENT_POW ) || ( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) )
( pSoldier->bAssignment == IN_TRANSIT ) || ( pSoldier->bAssignment == ASSIGNMENT_POW ) || ( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) || ( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) )
{
// can't change the sleep status of such mercs
return ( FALSE );
@@ -15856,7 +15858,7 @@ INT16 CalcLocationValueForChar( INT32 iCounter )
pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ];
// don't reveal location of POWs!
if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT )
if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND )
{
sLocValue = SECTOR( pSoldier->sSectorX, pSoldier->sSectorY );
// underground: add 1000 per sublevel
@@ -15950,6 +15952,7 @@ BOOLEAN AnyMovableCharsInOrBetweenThisSector( INT16 sSectorX, INT16 sSectorY, IN
SPY_LOCATION( pSoldier->bAssignment ) ||
( pSoldier->bAssignment == ASSIGNMENT_DEAD ) ||
( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) ||
( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) ||
( pSoldier->stats.bLife == 0 ) )
{
continue;
@@ -16554,6 +16557,11 @@ void GetMapscreenMercLocationString( SOLDIERTYPE *pSoldier, CHAR16 sString[] )
// mini event - unknown location, use the same string as POWs
swprintf( sString, L"%s", pPOWStrings[ 1 ] );
}
else if (pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
{
// on a rebel command mission
swprintf( sString, L"%s%s*", pMapVertIndex[pSoldier->sSectorY], pMapHortIndex[pSoldier->sSectorX] );
}
else if ( SPY_LOCATION( pSoldier->bAssignment ) )
{
swprintf( pTempString, L"%s%s%s",
@@ -16594,6 +16602,7 @@ void GetMapscreenMercDestinationString( SOLDIERTYPE *pSoldier, CHAR16 sString[]
if( ( pSoldier->bAssignment == ASSIGNMENT_DEAD ) ||
( pSoldier->bAssignment == ASSIGNMENT_POW ) ||
( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT ) ||
( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) ||
SPY_LOCATION( pSoldier->bAssignment ) ||
( pSoldier->stats.bLife == 0 ) )
{
+2 -2
View File
@@ -5229,7 +5229,7 @@ BOOLEAN CanGoToTacticalInSector( INT16 sX, INT16 sY, UINT8 ubZ )
{
// ARM: now allows loading of sector with all mercs below OKLIFE as long as they're alive
if( ( pSoldier->bActive && pSoldier->stats.bLife ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) &&
( pSoldier->bAssignment != IN_TRANSIT ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) &&
( pSoldier->bAssignment != IN_TRANSIT ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) &&
( pSoldier->bAssignment != ASSIGNMENT_DEAD ) && !SoldierAboardAirborneHeli( pSoldier )
)
@@ -6402,7 +6402,7 @@ void HandleSlayDailyEvent( void )
}
// valid soldier?
if ( (pSoldier->bActive == FALSE) || (pSoldier->stats.bLife == 0) || (pSoldier->bAssignment == IN_TRANSIT) || (pSoldier->bAssignment == ASSIGNMENT_POW) || (pSoldier->bAssignment == ASSIGNMENT_MINIEVENT) )
if ( (pSoldier->bActive == FALSE) || (pSoldier->stats.bLife == 0) || (pSoldier->bAssignment == IN_TRANSIT) || (pSoldier->bAssignment == ASSIGNMENT_POW) || (pSoldier->bAssignment == ASSIGNMENT_MINIEVENT) || (pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND) )
{
// no
return;
+3 -2
View File
@@ -15,6 +15,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 +1009,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 ) );
+19 -1
View File
@@ -1515,6 +1515,9 @@ BOOLEAN DelayedTacticalCharacterDialogue( SOLDIERTYPE *pSoldier, UINT16 usQuoteN
if( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
return( FALSE );
if( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
return( FALSE );
return( CharacterDialogue( pSoldier->ubProfile, usQuoteNum, pSoldier->iFaceIndex, DIALOGUE_TACTICAL_UI, TRUE, TRUE ) );
}
@@ -1574,6 +1577,9 @@ BOOLEAN TacticalCharacterDialogueWithSpecialEventEx( SOLDIERTYPE *pSoldier, UINT
if( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
return( FALSE );
if( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
return( FALSE );
}
return( CharacterDialogueWithSpecialEventEx( pSoldier->ubProfile, usQuoteNum, pSoldier->iFaceIndex, DIALOGUE_TACTICAL_UI, TRUE, FALSE, uiFlag, uiData1, uiData2, uiData3 ) );
@@ -1625,6 +1631,9 @@ BOOLEAN TacticalCharacterDialogue( SOLDIERTYPE *pSoldier, UINT16 usQuoteNum )
if( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
return( FALSE );
if( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
return( FALSE );
// OK, let's check if this is the exact one we just played, if so, skip.
if ( pSoldier->ubProfile == gTacticalStatus.ubLastQuoteProfileNUm &&
usQuoteNum == gTacticalStatus.ubLastQuoteSaid )
@@ -1717,6 +1726,9 @@ BOOLEAN SnitchTacticalCharacterDialogue( SOLDIERTYPE *pSoldier, UINT16 usQuoteNu
if( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
return( FALSE );
if( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
return( FALSE );
// OK, let's check if this is the exact one we just played, if so, skip.
//if ( pSoldier->ubProfile == gTacticalStatus.ubLastQuoteProfileNUm &&
// usQuoteNum == gTacticalStatus.ubLastQuoteSaid )
@@ -1774,6 +1786,9 @@ BOOLEAN AdditionalTacticalCharacterDialogue_CallsLua( SOLDIERTYPE *pSoldier, UIN
if( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
return( FALSE );
if( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
return( FALSE );
if ( AM_AN_EPC( pSoldier ) && !( gMercProfiles[pSoldier->ubProfile].ubMiscFlags & PROFILE_MISC_FLAG_FORCENPCQUOTE ) )
return( FALSE );
@@ -1802,7 +1817,7 @@ void AdditionalTacticalCharacterDialogue_AllInSector(INT16 aSectorX, INT16 aSect
if ( pSoldier->stats.bLife >= OKLIFE && pSoldier->bActive &&
pSoldier->ubProfile != ausIgnoreProfile &&
pSoldier->sSectorX == aSectorX && pSoldier->sSectorY == aSectorY && pSoldier->bSectorZ == aSectorZ &&
pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT &&
pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND &&
(aAroundGridno == NOWHERE || PythSpacesAway( pSoldier->sGridNo, aAroundGridno ) <= aRadius ) &&
!pSoldier->flags.fBetweenSectors )
{
@@ -2105,6 +2120,9 @@ BOOLEAN ExecuteCharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32
if( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
return( FALSE );
if( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
return( FALSE );
// sleeping guys don't talk.. go to standby to talk
if( pSoldier->flags.fMercAsleep == TRUE )
{
+7 -2
View File
@@ -34,6 +34,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 +760,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 +768,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 +787,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 +796,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;
+4 -1
View File
@@ -960,6 +960,9 @@ BOOLEAN DynamicOpinionTacticalCharacterDialogue( DynamicOpinionSpeechEvent& aEve
if( pSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
return( FALSE );
if( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
return( FALSE );
CHAR16 gzQuoteStr[500];
// remove old box, in case that still exists
@@ -2020,7 +2023,7 @@ UINT8 GetFittingInterjectorProfile( UINT8 usEvent, UINT8 usProfileVictim, UINT8
for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ )
{
// only people that are here
if ( !pTeamSoldier->bActive || pTeamSoldier->bAssignment == IN_TRANSIT || pTeamSoldier->bAssignment == ASSIGNMENT_DEAD || pTeamSoldier->bAssignment == ASSIGNMENT_POW || pTeamSoldier->bAssignment == ASSIGNMENT_MINIEVENT )
if ( !pTeamSoldier->bActive || pTeamSoldier->bAssignment == IN_TRANSIT || pTeamSoldier->bAssignment == ASSIGNMENT_DEAD || pTeamSoldier->bAssignment == ASSIGNMENT_POW || pTeamSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pTeamSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND )
continue;
// if fSameSector is TRUE then the teammate must be in the same sector
+1 -1
View File
@@ -606,7 +606,7 @@ void HourlyFoodAutoDigestion( SOLDIERTYPE *pSoldier )
AddFoodpoints(pSoldier->bFoodLevel, powfoodadd);
}
// while on a minievent, assume that we can feed ourselves.. somehow
else if (pSoldier->bAssignment == ASSIGNMENT_MINIEVENT)
else if (pSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
{
const INT16 water = gGameExternalOptions.usFoodDigestionHourlyBaseDrink * gGameExternalOptions.sFoodDigestionAssignment;
const INT16 foodadd = water * gGameExternalOptions.usFoodDigestionHourlyBaseFood / max(1, gGameExternalOptions.usFoodDigestionHourlyBaseDrink);
+20 -6
View File
@@ -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);
}
+4
View File
@@ -66,6 +66,7 @@
#include "MilitiaIndividual.h" // added by Flugente
#include "Town Militia.h" // added by Flugente
#include "PreBattle Interface.h" // added by Flugente
#include "Rebel Command.h"
#endif
// anv: for enemy taunts
@@ -4198,6 +4199,9 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse )
}
}
// rftr: soldier bounty payout
RebelCommand::ApplySoldierBounty(pSoldier);
// Flugente: campaign stats
gCurrentIncident.AddStat( pSoldier, CAMPAIGNHISTORY_TYPE_KILL );
+1 -1
View File
@@ -6311,7 +6311,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1
// If anything other than on a squad or guard, make them guard....
if ( this->bTeam == gbPlayerNum )
{
if ( this->bAssignment >= ON_DUTY && this->bAssignment != ASSIGNMENT_POW && this->bAssignment != ASSIGNMENT_MINIEVENT )
if ( this->bAssignment >= ON_DUTY && this->bAssignment != ASSIGNMENT_POW && this->bAssignment != ASSIGNMENT_MINIEVENT && this->bAssignment != ASSIGNMENT_REBELCOMMAND)
{
if ( this->flags.fMercAsleep )
{
+8
View File
@@ -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);
+5
View File
@@ -1389,6 +1389,11 @@ BOOLEAN IsSquadInSector( SOLDIERTYPE *pSoldier, UINT8 ubSquad )
return( FALSE );
}
if( pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND)
{
return( FALSE );
}
if( SquadIsEmpty( ubSquad ) == TRUE )
{
return( TRUE );
+1 -1
View File
@@ -238,7 +238,7 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )//
pSoldier->stats.bLife >= OKLIFE &&
( pSoldier->bAssignment != MercPtrs[ gusSelectedSoldier ]->bAssignment ||
( pSoldier->bAssignment == VEHICLE && pSoldier->iVehicleId != MercPtrs[ gusSelectedSoldier ]->iVehicleId ) ) &&
pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_DEAD && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT
pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_DEAD && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND
&& !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) )
{ //KM: We need to determine if there are more than one squad (meaning other concious mercs in a different squad or assignment)
// These conditions were done to the best of my knowledge, so if there are other situations that require modification,
+1 -1
View File
@@ -6001,7 +6001,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy
continue; // skip
}
if ( bTeam == gbPlayerNum && (pSoldier->bAssignment == ASSIGNMENT_POW || pSoldier->bAssignment == ASSIGNMENT_MINIEVENT) )
if ( bTeam == gbPlayerNum && (pSoldier->bAssignment == ASSIGNMENT_POW || pSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND) )
{
// POWs should not be processed for noise
continue;
+2 -1
View File
@@ -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;
+11 -4
View File
@@ -41,6 +41,7 @@
#include "renderworld.h"//dnl ch45 051009
#include "merc entering.h"
#include "CampaignStats.h" // added by Flugente
#include "Rebel Command.h"
typedef struct MERCPLACEMENT
{
@@ -338,6 +339,7 @@ void InitTacticalPlacementGUI()
!( MercPtrs[ i ]->flags.uiStatusFlags & ( SOLDIER_VEHICLE ) ) && // ATE Ignore vehicles
MercPtrs[ i ]->bAssignment != ASSIGNMENT_POW &&
MercPtrs[ i ]->bAssignment != ASSIGNMENT_MINIEVENT &&
MercPtrs[ i ]->bAssignment != ASSIGNMENT_REBELCOMMAND &&
!( MercPtrs[i]->usSoldierFlagMask2 & SOLDIER_CONCEALINSERTION ) &&
MercPtrs[ i ]->bAssignment != IN_TRANSIT )
{
@@ -355,6 +357,7 @@ void InitTacticalPlacementGUI()
CurrentBattleSectorIs( MercPtrs[i]->sSectorX, MercPtrs[i]->sSectorY, MercPtrs[i]->bSectorZ ) &&
MercPtrs[ i ]->bAssignment != ASSIGNMENT_POW &&
MercPtrs[ i ]->bAssignment != ASSIGNMENT_MINIEVENT &&
MercPtrs[ i ]->bAssignment != ASSIGNMENT_REBELCOMMAND &&
!( MercPtrs[i]->usSoldierFlagMask2 & SOLDIER_CONCEALINSERTION ) &&
MercPtrs[ i ]->bAssignment != IN_TRANSIT &&
!( MercPtrs[ i ]->flags.uiStatusFlags & ( SOLDIER_VEHICLE ) ) ) // ATE Ignore vehicles
@@ -910,6 +913,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 +921,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 +929,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 +937,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 +1241,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;
}
+1
View File
@@ -3138,6 +3138,7 @@ extern STR16 szRebelCommandText[];
extern STR16 szRebelCommandHelpText[];
extern STR16 szRebelCommandAdminActionsText[];
extern STR16 szRebelCommandDirectivesText[];
extern STR16 szRebelCommandAgentMissionsText[];
extern STR16 szRobotText[];
enum {
+91 -8
View File
@@ -2480,7 +2480,8 @@ STR16 pAssignmentStrings[] =
L"掩埋尸体", //L"Burial",
L"管理", //L"Admin",
L"探索", //L"Explore"
L"事件" //L"Event" rftr: merc is on a mini event
L"事件", //L"Event" rftr: merc is on a mini event
L"Mission", // rftr: rebel command
};
@@ -4662,6 +4663,7 @@ STR16 pTransactionText[] =
L"微型事件", //L"Mini event", rftr: mini events
L"从反抗军司令部转移资金", //L"Funds transferred from rebel command", rftr: rebel command
L"资金转移到反抗军司令部", //L"Funds transferred to rebel command", rftr: rebel command
L"Bounty payout", // rftr: rebel command soldier bounties
};
STR16 pTransactionAlternateText[] =
@@ -11864,12 +11866,16 @@ STR16 gLbeStatsDesc[14] =
STR16 szRebelCommandText[] =
{
L"Arulco反抗军司令部 - 国家总览", //L"Arulco Rebel Command - National Overview",
L"Arulco反抗军司令部 - 地区总览", //L"Arulco Rebel Command - Regional Overview",
L"点击地区总览", //L"Switch to Regional Overview",
L"点击国家总览", //L"Switch to National Overview",
L"国家总览", //L"National Overview",
L"地区总览", //L"Regional Overview",
L"Mission Overview",
L"Select View:",
L"地区总览 (2)", //L"Regional (2)",
L"国家总览 (1)", //L"National (1)",
L"Mission (3)",
L"物资:", //L"Supplies:",
L"后勤物资", //L"Incoming Supplies",
L"Intel:",
L" /天", //L"/day",
L"当前项目", //L"Current Directive",
L"升级项目($%d", //L"Improve Directive ($%d)",
@@ -11927,17 +11933,68 @@ STR16 szRebelCommandText[] =
L"<", //L"<",
L">", //L">",
L"更改此指令操作将花费$%d并重置。确认支出?", //L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?",
L"Insufficient supplies! Admin Actions have been DISABLED.",
L"New missions will be available every %d hours.",
L"New missions are available at the A.R.C. website.",
L"Mission preparations in progress.",
L"Mission duration: %d days",
L"Chance of success: %d%s",
L"[REDACTED]",
L"Name: %s",
L"Location: %s",
L"Assignment: %s",
L"Contract: %d days",
L"Contract: %d hours",
L"Contract: ---",
L"Agent bonus:",
L"Chance of success +%d%s (%s)",
L"Deployment range +%d (%s)",
L"ASD Income -%2.0f%s (%s)",
L"Steal fuel; send to %s (%s)",
L"Destroy reserve units (%s)",
L"Time +%2.0f%s (%s)",
L"Vision -%2.0f%s (%s)",
L"Gear quality -%d (%s)",
L"Overall stats -%d (%s)",
L"Max trainers: %d (%s)",
L"Payout +%2.0f%s (%s)",
L"Payout limit increased to $%d (%s)",
L"Bonus for officers (%s)",
L"Bonus for vehicles (%s)",
L"Duration +%d hours (%s)",
L"Agent not in town",
L"Town loyalty too low",
L"Agent unavailable",
L"Agent contract expiring",
L"Can't use rebel agent",
L"Battle in progress",
L"Prepare Mission (%d supplies)",
L"View active mission effects",
L"View available mission list",
L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.",
L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.",
L"The cost of preparing a mission increases based on the number other missions either active or being prepared.",
L"New missions will be available on Day %d at 00:00.",
L"Active missions:",
L"%s - Preparing - Ready on Day %d, %02d:%02d",
L"%s - Active - Expires on Day %d, %02d:%02d",
L"[%s (%d supplies)]",
L"%s Send a rebel agent to prepare this mission?",
L"%s Send %s to prepare this mission? He will return in approximately %d hours.",
L"%s Send %s to prepare this mission? She will return in approximately %d hours.",
L"Mission \"%s\" is now in effect.",
L"Preparations for mission \"%s\" failed.",
L"Mission \"%s\" has expired and is no longer in effect.",
};
STR16 szRebelCommandHelpText[] =
{
L"|物|资\n \n食物、水、医疗用品、武器以及任何\n反抗军认为有用的物资。反抗军会自动收集。", //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"|后|勤|物|资\n \n反抗军每天都会自动收集物资。当你\n占领更多的城镇时,他们每天能够\n找到的物资补给量将会增加。", //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"|后|勤|物|资\n \n反抗军每天都会自动收集物资。当你\n占领更多的城镇时,他们每天能够\n找到的物资补给量将会增加。\n \n+%d (Base income)", //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"|当|前|项|目\n \n你可以选择反抗军优先进行的战略目标。\n当你选定好战略目标时,新的项目指令将生效。", //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"|指|挥|部\n \n指挥部一旦部署,就会负责处理\n该区域内的日常事务。包括支持当地人,制造\n反抗宣传,制定地区政策等等。", //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"|忠|诚|度\n \n许多行政命令的有效性取决于\n该地区的忠诚度,提高忠诚度\n能得到最大利益化。", //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"|最|高|忠|诚|度\n \n你需要说服当地人完全信任你。这可以\n通过为他们建立物资供应来实现,表明\n你打算改善他们的生活质量。", //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"|援|助|物|资\n \n将物资送到此处的反抗军手里,并允许\n他们根据需要使用。这将少量增加\n该地区的忠诚度,但是会略微增加制定\n该地区政策的成本。", //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"该管理行动只会作用到城镇区域。", //L"This Admin Action applies its bonus to town sectors only.", TODO.Translate
L"该管理行动会作用到城镇区域。\n和直接相邻的区域。", //L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.",
L"该管理行动会作用到城镇区域。\n1级覆盖周边1个区域。\n2级覆盖周边2个区域。", //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 +12023,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",
@@ -12030,6 +12087,32 @@ STR16 szRebelCommandDirectivesText[] =
L"升级此项将会增加每天志愿者人数。", //L"Improving this directive will increase the number of volunteers gained per day.",
};
STR16 szRebelCommandAgentMissionsText[] =
{
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"Disrupt ASD",
L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.",
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"Send Supplies",
L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.",
L"Soldier Bounties (Kingpin)",
L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.",
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"已经安装在机器人身上的武器不能替换。", //L"The robot's installed weapon cannot be changed.",
+91 -8
View File
@@ -2479,7 +2479,8 @@ STR16 pAssignmentStrings[] =
L"Burial",
L"Admin", // TODO.Translate
L"Explore", // TODO.Translate
L"Event"// rftr: merc is on a mini event // TODO: translate
L"Event",// rftr: merc is on a mini event // TODO: translate
L"Mission", // rftr: rebel command
};
@@ -4665,6 +4666,7 @@ STR16 pTransactionText[] =
L"Mini event", // rftr: mini events // TODO: translate
L"Funds transferred from rebel command", // rftr: rebel command
L"Funds transferred to rebel command", // rftr: rebel command
L"Bounty payout", // rftr: rebel command soldier bounties
};
STR16 pTransactionAlternateText[] =
@@ -11874,12 +11876,16 @@ STR16 gLbeStatsDesc[14] =
STR16 szRebelCommandText[] = // TODO.Translate
{
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)",
@@ -11937,17 +11943,68 @@ STR16 szRebelCommandText[] = // TODO.Translate
L"<",
L">",
L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?",
L"Insufficient supplies! Admin Actions have been DISABLED.",
L"New missions will be available every %d hours.",
L"New missions are available at the A.R.C. website.",
L"Mission preparations in progress.",
L"Mission duration: %d days",
L"Chance of success: %d%s",
L"[REDACTED]",
L"Name: %s",
L"Location: %s",
L"Assignment: %s",
L"Contract: %d days",
L"Contract: %d hours",
L"Contract: ---",
L"Agent bonus:",
L"Chance of success +%d%s (%s)",
L"Deployment range +%d (%s)",
L"ASD Income -%2.0f%s (%s)",
L"Steal fuel; send to %s (%s)",
L"Destroy reserve units (%s)",
L"Time +%2.0f%s (%s)",
L"Vision -%2.0f%s (%s)",
L"Gear quality -%d (%s)",
L"Overall stats -%d (%s)",
L"Max trainers: %d (%s)",
L"Payout +%2.0f%s (%s)",
L"Payout limit increased to $%d (%s)",
L"Bonus for officers (%s)",
L"Bonus for vehicles (%s)",
L"Duration +%d hours (%s)",
L"Agent not in town",
L"Town loyalty too low",
L"Agent unavailable",
L"Agent contract expiring",
L"Can't use rebel agent",
L"Battle in progress",
L"Prepare Mission (%d supplies)",
L"View active mission effects",
L"View available mission list",
L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.",
L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.",
L"The cost of preparing a mission increases based on the number other missions either active or being prepared.",
L"New missions will be available on Day %d at 00:00.",
L"Active missions:",
L"%s - Preparing - Ready on Day %d, %02d:%02d",
L"%s - Active - Expires on Day %d, %02d:%02d",
L"[%s (%d supplies)]",
L"%s Send a rebel agent to prepare this mission?",
L"%s Send %s to prepare this mission? He will return in approximately %d hours.",
L"%s Send %s to prepare this mission? She will return in approximately %d hours.",
L"Mission \"%s\" is now in effect.",
L"Preparations for mission \"%s\" failed.",
L"Mission \"%s\" has expired and is no longer in effect.",
};
STR16 szRebelCommandHelpText[] = // TODO.Translate
{
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.", //TODO.Translate
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.",
@@ -11976,7 +12033,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",
@@ -12040,6 +12097,32 @@ STR16 szRebelCommandDirectivesText[] = // TODO.Translate
L"Improving this directive will increase the number of volunteers gained per day.",
};
STR16 szRebelCommandAgentMissionsText[] =
{
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"Disrupt ASD",
L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.",
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"Send Supplies",
L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.",
L"Soldier Bounties (Kingpin)",
L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.",
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[] = // TODO: Translate
{
L"The robot's installed weapon cannot be changed.",
+91 -8
View File
@@ -2480,7 +2480,8 @@ STR16 pAssignmentStrings[] =
L"Burial",
L"Admin",
L"Explore",
L"Event"// rftr: merc is on a mini event
L"Event", // rftr: merc is on a mini event
L"Mission", // rftr: rebel command
};
@@ -4662,6 +4663,7 @@ STR16 pTransactionText[] =
L"Mini event", // rftr: mini events
L"Funds transferred from rebel command", // rftr: rebel command
L"Funds transferred to rebel command", // rftr: rebel command
L"Bounty payout", // rftr: rebel command soldier bounties
};
STR16 pTransactionAlternateText[] =
@@ -11864,12 +11866,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)",
@@ -11927,17 +11933,68 @@ STR16 szRebelCommandText[] =
L"<",
L">",
L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?",
L"Insufficient supplies! Admin Actions have been DISABLED.",
L"New missions will be available every %d hours.",
L"New missions are available at the A.R.C. website.",
L"Mission preparations in progress.",
L"Mission duration: %d days",
L"Chance of success: %d%s",
L"[REDACTED]",
L"Name: %s",
L"Location: %s",
L"Assignment: %s",
L"Contract: %d days",
L"Contract: %d hours",
L"Contract: ---",
L"Agent bonus:",
L"Chance of success +%d%s (%s)",
L"Deployment range +%d (%s)",
L"ASD Income -%2.0f%s (%s)",
L"Steal fuel; send to %s (%s)",
L"Destroy reserve units (%s)",
L"Time +%2.0f%s (%s)",
L"Vision -%2.0f%s (%s)",
L"Gear quality -%d (%s)",
L"Overall stats -%d (%s)",
L"Max trainers: %d (%s)",
L"Payout +%2.0f%s (%s)",
L"Payout limit increased to $%d (%s)",
L"Bonus for officers (%s)",
L"Bonus for vehicles (%s)",
L"Duration +%d hours (%s)",
L"Agent not in town",
L"Town loyalty too low",
L"Agent unavailable",
L"Agent contract expiring",
L"Can't use rebel agent",
L"Battle in progress",
L"Prepare Mission (%d supplies)",
L"View active mission effects",
L"View available mission list",
L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.",
L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.",
L"The cost of preparing a mission increases based on the number other missions either active or being prepared.",
L"New missions will be available on Day %d at 00:00.",
L"Active missions:",
L"%s - Preparing - Ready on Day %d, %02d:%02d",
L"%s - Active - Expires on Day %d, %02d:%02d",
L"[%s (%d supplies)]",
L"%s Send a rebel agent to prepare this mission?",
L"%s Send %s to prepare this mission? He will return in approximately %d hours.",
L"%s Send %s to prepare this mission? She will return in approximately %d hours.",
L"Mission \"%s\" is now in effect.",
L"Preparations for mission \"%s\" failed.",
L"Mission \"%s\" has expired and is no longer in effect.",
};
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 +12023,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 +12087,32 @@ STR16 szRebelCommandDirectivesText[] =
L"Improving this directive will increase the number of volunteers gained per day.",
};
STR16 szRebelCommandAgentMissionsText[] =
{
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"Disrupt ASD",
L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.",
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"Send Supplies",
L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.",
L"Soldier Bounties (Kingpin)",
L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.",
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.",
+91 -8
View File
@@ -2488,7 +2488,8 @@ STR16 pAssignmentStrings[] =
L"Burial",
L"Admin", // TODO.Translate
L"Explore", // TODO.Translate
L"Event"// rftr: merc is on a mini event // TODO: translate
L"Event",// rftr: merc is on a mini event // TODO: translate
L"Mission", // rftr: rebel command
};
@@ -4669,6 +4670,7 @@ STR16 pTransactionText[] =
L"Mini event", // rftr: mini events // TODO: translate
L"Funds transferred from rebel command", // rftr: rebel command
L"Funds transferred to rebel command", // rftr: rebel command
L"Bounty payout", // rftr: rebel command soldier bounties
};
STR16 pTransactionAlternateText[] =
@@ -11856,12 +11858,16 @@ STR16 gLbeStatsDesc[14] =
STR16 szRebelCommandText[] = // TODO.Translate
{
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)",
@@ -11919,17 +11925,68 @@ STR16 szRebelCommandText[] = // TODO.Translate
L"<",
L">",
L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?",
L"Insufficient supplies! Admin Actions have been DISABLED.",
L"New missions will be available every %d hours.",
L"New missions are available at the A.R.C. website.",
L"Mission preparations in progress.",
L"Mission duration: %d days",
L"Chance of success: %d%s",
L"[REDACTED]",
L"Name: %s",
L"Location: %s",
L"Assignment: %s",
L"Contract: %d days",
L"Contract: %d hours",
L"Contract: ---",
L"Agent bonus:",
L"Chance of success +%d%s (%s)",
L"Deployment range +%d (%s)",
L"ASD Income -%2.0f%s (%s)",
L"Steal fuel; send to %s (%s)",
L"Destroy reserve units (%s)",
L"Time +%2.0f%s (%s)",
L"Vision -%2.0f%s (%s)",
L"Gear quality -%d (%s)",
L"Overall stats -%d (%s)",
L"Max trainers: %d (%s)",
L"Payout +%2.0f%s (%s)",
L"Payout limit increased to $%d (%s)",
L"Bonus for officers (%s)",
L"Bonus for vehicles (%s)",
L"Duration +%d hours (%s)",
L"Agent not in town",
L"Town loyalty too low",
L"Agent unavailable",
L"Agent contract expiring",
L"Can't use rebel agent",
L"Battle in progress",
L"Prepare Mission (%d supplies)",
L"View active mission effects",
L"View available mission list",
L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.",
L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.",
L"The cost of preparing a mission increases based on the number other missions either active or being prepared.",
L"New missions will be available on Day %d at 00:00.",
L"Active missions:",
L"%s - Preparing - Ready on Day %d, %02d:%02d",
L"%s - Active - Expires on Day %d, %02d:%02d",
L"[%s (%d supplies)]",
L"%s Send a rebel agent to prepare this mission?",
L"%s Send %s to prepare this mission? He will return in approximately %d hours.",
L"%s Send %s to prepare this mission? She will return in approximately %d hours.",
L"Mission \"%s\" is now in effect.",
L"Preparations for mission \"%s\" failed.",
L"Mission \"%s\" has expired and is no longer in effect.",
};
STR16 szRebelCommandHelpText[] = // TODO.Translate
{
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.", //TODO.Translate
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.",
@@ -11958,7 +12015,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",
@@ -12022,6 +12079,32 @@ STR16 szRebelCommandDirectivesText[] = // TODO.Translate
L"Improving this directive will increase the number of volunteers gained per day.",
};
STR16 szRebelCommandAgentMissionsText[] =
{
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"Disrupt ASD",
L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.",
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"Send Supplies",
L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.",
L"Soldier Bounties (Kingpin)",
L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.",
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[] = // TODO: Translate
{
L"The robot's installed weapon cannot be changed.",
+91 -8
View File
@@ -2519,7 +2519,8 @@ STR16 pAssignmentStrings[] =
L"Burial",
L"Admin", // TODO.Translate
L"Explore", // TODO.Translate
L"Event"// rftr: merc is on a mini event // TODO: translate
L"Event",// rftr: merc is on a mini event // TODO: translate
L"Mission", // rftr: rebel command
};
STR16 pMilitiaString[] =
@@ -4667,6 +4668,7 @@ STR16 pTransactionText[] =
L"Mini event", // rftr: mini events // TODO: translate
L"Funds transferred from rebel command", // rftr: rebel command
L"Funds transferred to rebel command", // rftr: rebel command
L"Bounty payout", // rftr: rebel command soldier bounties
};
STR16 pTransactionAlternateText[] =
@@ -11778,12 +11780,16 @@ STR16 gLbeStatsDesc[14] =
STR16 szRebelCommandText[] = // TODO.Translate
{
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)",
@@ -11841,17 +11847,68 @@ STR16 szRebelCommandText[] = // TODO.Translate
L"<",
L">",
L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?",
L"Insufficient supplies! Admin Actions have been DISABLED.",
L"New missions will be available every %d hours.",
L"New missions are available at the A.R.C. website.",
L"Mission preparations in progress.",
L"Mission duration: %d days",
L"Chance of success: %d%s",
L"[REDACTED]",
L"Name: %s",
L"Location: %s",
L"Assignment: %s",
L"Contract: %d days",
L"Contract: %d hours",
L"Contract: ---",
L"Agent bonus:",
L"Chance of success +%d%s (%s)",
L"Deployment range +%d (%s)",
L"ASD Income -%2.0f%s (%s)",
L"Steal fuel; send to %s (%s)",
L"Destroy reserve units (%s)",
L"Time +%2.0f%s (%s)",
L"Vision -%2.0f%s (%s)",
L"Gear quality -%d (%s)",
L"Overall stats -%d (%s)",
L"Max trainers: %d (%s)",
L"Payout +%2.0f%s (%s)",
L"Payout limit increased to $%d (%s)",
L"Bonus for officers (%s)",
L"Bonus for vehicles (%s)",
L"Duration +%d hours (%s)",
L"Agent not in town",
L"Town loyalty too low",
L"Agent unavailable",
L"Agent contract expiring",
L"Can't use rebel agent",
L"Battle in progress",
L"Prepare Mission (%d supplies)",
L"View active mission effects",
L"View available mission list",
L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.",
L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.",
L"The cost of preparing a mission increases based on the number other missions either active or being prepared.",
L"New missions will be available on Day %d at 00:00.",
L"Active missions:",
L"%s - Preparing - Ready on Day %d, %02d:%02d",
L"%s - Active - Expires on Day %d, %02d:%02d",
L"[%s (%d supplies)]",
L"%s Send a rebel agent to prepare this mission?",
L"%s Send %s to prepare this mission? He will return in approximately %d hours.",
L"%s Send %s to prepare this mission? She will return in approximately %d hours.",
L"Mission \"%s\" is now in effect.",
L"Preparations for mission \"%s\" failed.",
L"Mission \"%s\" has expired and is no longer in effect.",
};
STR16 szRebelCommandHelpText[] = // TODO.Translate
{
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.", //TODO.Translate
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.",
@@ -11880,7 +11937,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",
@@ -11944,6 +12001,32 @@ STR16 szRebelCommandDirectivesText[] = // TODO.Translate
L"Improving this directive will increase the number of volunteers gained per day.",
};
STR16 szRebelCommandAgentMissionsText[] =
{
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"Disrupt ASD",
L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.",
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"Send Supplies",
L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.",
L"Soldier Bounties (Kingpin)",
L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.",
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[] = // TODO: Translate
{
L"The robot's installed weapon cannot be changed.",
+91 -8
View File
@@ -2474,7 +2474,8 @@ STR16 pAssignmentStrings[] =
L"Burial",
L"Admin", // TODO.Translate
L"Explore", // TODO.Translate
L"Event"// rftr: merc is on a mini event // TODO: translate
L"Event",// rftr: merc is on a mini event // TODO: translate
L"Mission", // rftr: rebel command
};
@@ -4659,6 +4660,7 @@ STR16 pTransactionText[] =
L"Mini event", // rftr: mini events // TODO: translate
L"Funds transferred from rebel command", // rftr: rebel command
L"Funds transferred to rebel command", // rftr: rebel command
L"Bounty payout", // rftr: rebel command soldier bounties
};
STR16 pTransactionAlternateText[] =
@@ -11865,12 +11867,16 @@ STR16 gLbeStatsDesc[14] =
STR16 szRebelCommandText[] = // TODO.Translate
{
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)",
@@ -11928,17 +11934,68 @@ STR16 szRebelCommandText[] = // TODO.Translate
L"<",
L">",
L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?",
L"Insufficient supplies! Admin Actions have been DISABLED.",
L"New missions will be available every %d hours.",
L"New missions are available at the A.R.C. website.",
L"Mission preparations in progress.",
L"Mission duration: %d days",
L"Chance of success: %d%s",
L"[REDACTED]",
L"Name: %s",
L"Location: %s",
L"Assignment: %s",
L"Contract: %d days",
L"Contract: %d hours",
L"Contract: ---",
L"Agent bonus:",
L"Chance of success +%d%s (%s)",
L"Deployment range +%d (%s)",
L"ASD Income -%2.0f%s (%s)",
L"Steal fuel; send to %s (%s)",
L"Destroy reserve units (%s)",
L"Time +%2.0f%s (%s)",
L"Vision -%2.0f%s (%s)",
L"Gear quality -%d (%s)",
L"Overall stats -%d (%s)",
L"Max trainers: %d (%s)",
L"Payout +%2.0f%s (%s)",
L"Payout limit increased to $%d (%s)",
L"Bonus for officers (%s)",
L"Bonus for vehicles (%s)",
L"Duration +%d hours (%s)",
L"Agent not in town",
L"Town loyalty too low",
L"Agent unavailable",
L"Agent contract expiring",
L"Can't use rebel agent",
L"Battle in progress",
L"Prepare Mission (%d supplies)",
L"View active mission effects",
L"View available mission list",
L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.",
L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.",
L"The cost of preparing a mission increases based on the number other missions either active or being prepared.",
L"New missions will be available on Day %d at 00:00.",
L"Active missions:",
L"%s - Preparing - Ready on Day %d, %02d:%02d",
L"%s - Active - Expires on Day %d, %02d:%02d",
L"[%s (%d supplies)]",
L"%s Send a rebel agent to prepare this mission?",
L"%s Send %s to prepare this mission? He will return in approximately %d hours.",
L"%s Send %s to prepare this mission? She will return in approximately %d hours.",
L"Mission \"%s\" is now in effect.",
L"Preparations for mission \"%s\" failed.",
L"Mission \"%s\" has expired and is no longer in effect.",
};
STR16 szRebelCommandHelpText[] = // TODO.Translate
{
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.", //TODO.Translate
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.",
@@ -11967,7 +12024,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",
@@ -12031,6 +12088,32 @@ STR16 szRebelCommandDirectivesText[] = // TODO.Translate
L"Improving this directive will increase the number of volunteers gained per day.",
};
STR16 szRebelCommandAgentMissionsText[] =
{
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"Disrupt ASD",
L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.",
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"Send Supplies",
L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.",
L"Soldier Bounties (Kingpin)",
L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.",
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[] = // TODO: Translate
{
L"The robot's installed weapon cannot be changed.",
+91 -8
View File
@@ -2486,7 +2486,8 @@ STR16 pAssignmentStrings[] =
L"Burial",
L"Admin", // TODO.Translate
L"Explore", // TODO.Translate
L"Event"// rftr: merc is on a mini event // TODO: translate
L"Event",// rftr: merc is on a mini event // TODO: translate
L"Mission", // rftr: rebel command
};
@@ -4670,6 +4671,7 @@ STR16 pTransactionText[] =
L"Mini event", // rftr: mini events // TODO: translate
L"Funds transferred from rebel command", // rftr: rebel command
L"Funds transferred to rebel command", // rftr: rebel command
L"Bounty payout", // rftr: rebel command soldier bounties
};
STR16 pTransactionAlternateText[] =
@@ -11878,12 +11880,16 @@ STR16 gLbeStatsDesc[14] =
STR16 szRebelCommandText[] = // TODO.Translate
{
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)",
@@ -11941,17 +11947,68 @@ STR16 szRebelCommandText[] = // TODO.Translate
L"<",
L">",
L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?",
L"Insufficient supplies! Admin Actions have been DISABLED.",
L"New missions will be available every %d hours.",
L"New missions are available at the A.R.C. website.",
L"Mission preparations in progress.",
L"Mission duration: %d days",
L"Chance of success: %d%s",
L"[REDACTED]",
L"Name: %s",
L"Location: %s",
L"Assignment: %s",
L"Contract: %d days",
L"Contract: %d hours",
L"Contract: ---",
L"Agent bonus:",
L"Chance of success +%d%s (%s)",
L"Deployment range +%d (%s)",
L"ASD Income -%2.0f%s (%s)",
L"Steal fuel; send to %s (%s)",
L"Destroy reserve units (%s)",
L"Time +%2.0f%s (%s)",
L"Vision -%2.0f%s (%s)",
L"Gear quality -%d (%s)",
L"Overall stats -%d (%s)",
L"Max trainers: %d (%s)",
L"Payout +%2.0f%s (%s)",
L"Payout limit increased to $%d (%s)",
L"Bonus for officers (%s)",
L"Bonus for vehicles (%s)",
L"Duration +%d hours (%s)",
L"Agent not in town",
L"Town loyalty too low",
L"Agent unavailable",
L"Agent contract expiring",
L"Can't use rebel agent",
L"Battle in progress",
L"Prepare Mission (%d supplies)",
L"View active mission effects",
L"View available mission list",
L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.",
L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.",
L"The cost of preparing a mission increases based on the number other missions either active or being prepared.",
L"New missions will be available on Day %d at 00:00.",
L"Active missions:",
L"%s - Preparing - Ready on Day %d, %02d:%02d",
L"%s - Active - Expires on Day %d, %02d:%02d",
L"[%s (%d supplies)]",
L"%s Send a rebel agent to prepare this mission?",
L"%s Send %s to prepare this mission? He will return in approximately %d hours.",
L"%s Send %s to prepare this mission? She will return in approximately %d hours.",
L"Mission \"%s\" is now in effect.",
L"Preparations for mission \"%s\" failed.",
L"Mission \"%s\" has expired and is no longer in effect.",
};
STR16 szRebelCommandHelpText[] = // TODO.Translate
{
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.", //TODO.Translate
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.",
@@ -11980,7 +12037,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",
@@ -12044,6 +12101,32 @@ STR16 szRebelCommandDirectivesText[] = // TODO.Translate
L"Improving this directive will increase the number of volunteers gained per day.",
};
STR16 szRebelCommandAgentMissionsText[] =
{
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"Disrupt ASD",
L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.",
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"Send Supplies",
L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.",
L"Soldier Bounties (Kingpin)",
L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.",
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[] = // TODO: Translate
{
L"The robot's installed weapon cannot be changed.",
+91 -8
View File
@@ -2480,7 +2480,8 @@ STR16 pAssignmentStrings[] =
L"Burial",
L"Admin", // TODO.Translate
L"Explore", // TODO.Translate
L"Event"// rftr: merc is on a mini event // TODO: translate
L"Event",// rftr: merc is on a mini event // TODO: translate
L"Mission", // rftr: rebel command
};
@@ -4662,6 +4663,7 @@ STR16 pTransactionText[] =
L"Mini event", // rftr: mini events // TODO: translate
L"Funds transferred from rebel command", // rftr: rebel command
L"Funds transferred to rebel command", // rftr: rebel command
L"Bounty payout", // rftr: rebel command soldier bounties
};
STR16 pTransactionAlternateText[] =
@@ -11859,12 +11861,16 @@ STR16 gLbeStatsDesc[14] =
STR16 szRebelCommandText[] = // TODO.Translate
{
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)",
@@ -11922,17 +11928,68 @@ STR16 szRebelCommandText[] = // TODO.Translate
L"<",
L">",
L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?",
L"Insufficient supplies! Admin Actions have been DISABLED.",
L"New missions will be available every %d hours.",
L"New missions are available at the A.R.C. website.",
L"Mission preparations in progress.",
L"Mission duration: %d days",
L"Chance of success: %d%s",
L"[REDACTED]",
L"Name: %s",
L"Location: %s",
L"Assignment: %s",
L"Contract: %d days",
L"Contract: %d hours",
L"Contract: ---",
L"Agent bonus:",
L"Chance of success +%d%s (%s)",
L"Deployment range +%d (%s)",
L"ASD Income -%2.0f%s (%s)",
L"Steal fuel; send to %s (%s)",
L"Destroy reserve units (%s)",
L"Time +%2.0f%s (%s)",
L"Vision -%2.0f%s (%s)",
L"Gear quality -%d (%s)",
L"Overall stats -%d (%s)",
L"Max trainers: %d (%s)",
L"Payout +%2.0f%s (%s)",
L"Payout limit increased to $%d (%s)",
L"Bonus for officers (%s)",
L"Bonus for vehicles (%s)",
L"Duration +%d hours (%s)",
L"Agent not in town",
L"Town loyalty too low",
L"Agent unavailable",
L"Agent contract expiring",
L"Can't use rebel agent",
L"Battle in progress",
L"Prepare Mission (%d supplies)",
L"View active mission effects",
L"View available mission list",
L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.",
L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.",
L"The cost of preparing a mission increases based on the number other missions either active or being prepared.",
L"New missions will be available on Day %d at 00:00.",
L"Active missions:",
L"%s - Preparing - Ready on Day %d, %02d:%02d",
L"%s - Active - Expires on Day %d, %02d:%02d",
L"[%s (%d supplies)]",
L"%s Send a rebel agent to prepare this mission?",
L"%s Send %s to prepare this mission? He will return in approximately %d hours.",
L"%s Send %s to prepare this mission? She will return in approximately %d hours.",
L"Mission \"%s\" is now in effect.",
L"Preparations for mission \"%s\" failed.",
L"Mission \"%s\" has expired and is no longer in effect.",
};
STR16 szRebelCommandHelpText[] = // TODO.Translate
{
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.", //TODO.Translate
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.",
@@ -11961,7 +12018,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",
@@ -12025,6 +12082,32 @@ STR16 szRebelCommandDirectivesText[] = // TODO.Translate
L"Improving this directive will increase the number of volunteers gained per day.",
};
STR16 szRebelCommandAgentMissionsText[] =
{
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"Disrupt ASD",
L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.",
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"Send Supplies",
L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.",
L"Soldier Bounties (Kingpin)",
L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.",
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[] = // TODO: Translate
{
L"The robot's installed weapon cannot be changed.",