diff --git a/CommunityPromotionScreen.XCOM_sln b/CommunityPromotionScreen.XCOM_sln
index 1a1fa3e..25891a3 100644
--- a/CommunityPromotionScreen.XCOM_sln
+++ b/CommunityPromotionScreen.XCOM_sln
@@ -3,15 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# XCOM ModBuddy Solution File, Format Version 11.00
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{5DAE07AF-E217-45C1-8DE7-FF99D6011E8A}") = "CommunityPromotionScreen", "CommunityPromotionScreen\CommunityPromotionScreen.x2proj", "{27E16B1C-44A5-4518-BE0A-B4E0A73E3343}"
+Project("{5DAE07AF-E217-45C1-8DE7-FF99D6011E8A}") = "CommunityPromotionScreen", "CommunityPromotionScreen\CommunityPromotionScreen.x2proj", "{7206D3A7-2E8B-4241-8BE4-CBE9AA5DD185}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Default|XCOM 2 = Default|XCOM 2
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {27E16B1C-44A5-4518-BE0A-B4E0A73E3343}.Default|XCOM 2.ActiveCfg = Default|XCOM 2
- {27E16B1C-44A5-4518-BE0A-B4E0A73E3343}.Default|XCOM 2.Build.0 = Default|XCOM 2
+ {7206D3A7-2E8B-4241-8BE4-CBE9AA5DD185}.Default|XCOM 2.ActiveCfg = Default|XCOM 2
+ {7206D3A7-2E8B-4241-8BE4-CBE9AA5DD185}.Default|XCOM 2.Build.0 = Default|XCOM 2
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/CommunityPromotionScreen/CommunityPromotionScreen.x2proj b/CommunityPromotionScreen/CommunityPromotionScreen.x2proj
index 8908fa9..9677562 100644
--- a/CommunityPromotionScreen/CommunityPromotionScreen.x2proj
+++ b/CommunityPromotionScreen/CommunityPromotionScreen.x2proj
@@ -19,6 +19,9 @@
Content
+
+ Content
+
diff --git a/CommunityPromotionScreen/Localization/NewPromotionScreenbyDefault.int b/CommunityPromotionScreen/Localization/NewPromotionScreenbyDefault.int
new file mode 100644
index 0000000..41277f6
--- /dev/null
+++ b/CommunityPromotionScreen/Localization/NewPromotionScreenbyDefault.int
@@ -0,0 +1,2 @@
+[NPSBDP_UIArmory_PromotionHero]
+m_strMutuallyExclusive="Mutually exclusive with:"
\ No newline at end of file
diff --git a/CommunityPromotionScreen/Src/NewPromotionScreenbyDefault/Classes/NPSBDP_UIArmory_PromotionHero.uc b/CommunityPromotionScreen/Src/NewPromotionScreenbyDefault/Classes/NPSBDP_UIArmory_PromotionHero.uc
index c965592..d6ee573 100644
--- a/CommunityPromotionScreen/Src/NewPromotionScreenbyDefault/Classes/NPSBDP_UIArmory_PromotionHero.uc
+++ b/CommunityPromotionScreen/Src/NewPromotionScreenbyDefault/Classes/NPSBDP_UIArmory_PromotionHero.uc
@@ -27,6 +27,8 @@ var int Position, MaxPosition;
var int AdjustXOffset;
+var localized string m_strMutuallyExclusive;
+
simulated function OnInit()
{
super.OnInit();
@@ -637,6 +639,8 @@ function PreviewAbility(int Rank, int Branch)
local array AbilityTree;
local string AbilityIcon, AbilityName, AbilityDesc, AbilityHint, AbilityCost, CostLabel, APLabel, PrereqAbilityNames;
local name PrereqAbilityName;
+ // Variable for Issue #128
+ local string MutuallyExclusiveNames;
// NPSBDP Patch
Branch += Position;
@@ -687,24 +691,48 @@ function PreviewAbility(int Rank, int Branch)
{
// Look back to the previous rank and check to see if that ability is a prereq for this one
// If so, display a message warning the player that there is a prereq
+ // Start Issue #128
foreach AbilityTemplate.PrerequisiteAbilities(PrereqAbilityName)
{
- PreviousAbilityTemplate = AbilityTemplateManager.FindAbilityTemplate(PrereqAbilityName);
- if (PreviousAbilityTemplate != none && !Unit.HasSoldierAbility(PrereqAbilityName))
+ if (InStr(PrereqAbilityName, class'UIArmory_PromotionHero'.default.MutuallyExclusivePrefix) == 0)
+ {
+ PreviousAbilityTemplate = AbilityTemplateManager.FindAbilityTemplate(
+ name(Mid(PrereqAbilityName, Len(class'UIArmory_PromotionHero'.default.MutuallyExclusivePrefix))));
+ if (PreviousAbilityTemplate != none )
+ {
+ if (MutuallyExclusiveNames != "")
+ {
+ MutuallyExclusiveNames $= ", ";
+ }
+ MutuallyExclusiveNames $= PreviousAbilityTemplate.LocFriendlyName;
+ }
+ }
+ else
{
- if (PrereqAbilityNames != "")
+ PreviousAbilityTemplate = AbilityTemplateManager.FindAbilityTemplate(PrereqAbilityName);
+ if (PreviousAbilityTemplate != none && !Unit.HasSoldierAbility(PrereqAbilityName))
{
- PrereqAbilityNames $= ", ";
+ if (PrereqAbilityNames != "")
+ {
+ PrereqAbilityNames $= ", ";
+ }
+ PrereqAbilityNames $= PreviousAbilityTemplate.LocFriendlyName;
}
- PrereqAbilityNames $= PreviousAbilityTemplate.LocFriendlyName;
}
}
PrereqAbilityNames = class'UIUtilities_Text'.static.FormatCommaSeparatedNouns(PrereqAbilityNames);
+ MutuallyExclusiveNames = class'UIUtilities_Text'.static.FormatCommaSeparatedNouns(MutuallyExclusiveNames);
+
+ if (MutuallyExclusiveNames != "")
+ {
+ AbilityDesc = class'UIUtilities_Text'.static.GetColoredText(m_strMutuallyExclusive @ MutuallyExclusiveNames, eUIState_Warning) $ "\n" $ AbilityDesc;
+ }
if (PrereqAbilityNames != "")
{
AbilityDesc = class'UIUtilities_Text'.static.GetColoredText(m_strPrereqAbility @ PrereqAbilityNames, eUIState_Warning) $ "\n" $ AbilityDesc;
}
+ // End Issue #128
}
}
else
@@ -1169,4 +1197,4 @@ static function string GetClassSummary(XComGameState_Unit Unit)
}
return Unit.GetSoldierClassTemplate().ClassSummary;
-}
\ No newline at end of file
+}