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 +}