@@ -27,6 +27,8 @@ var int Position, MaxPosition;
2727
2828var int AdjustXOffset ;
2929
30+ var localized string m_strMutuallyExclusive ;
31+
3032simulated function OnInit ()
3133{
3234 super .OnInit ();
@@ -637,6 +639,8 @@ function PreviewAbility(int Rank, int Branch)
637639 local array <SoldierClassAbilityType > AbilityTree ;
638640 local string AbilityIcon , AbilityName , AbilityDesc , AbilityHint , AbilityCost , CostLabel , APLabel , PrereqAbilityNames ;
639641 local name PrereqAbilityName ;
642+ // Variable for Issue #128
643+ local string MutuallyExclusiveNames ;
640644
641645 // NPSBDP Patch
642646 Branch += Position ;
@@ -687,24 +691,48 @@ function PreviewAbility(int Rank, int Branch)
687691 {
688692 // Look back to the previous rank and check to see if that ability is a prereq for this one
689693 // If so, display a message warning the player that there is a prereq
694+ // Start Issue #128
690695 foreach AbilityTemplate .PrerequisiteAbilities (PrereqAbilityName )
691696 {
692- PreviousAbilityTemplate = AbilityTemplateManager .FindAbilityTemplate (PrereqAbilityName );
693- if (PreviousAbilityTemplate != none && !Unit .HasSoldierAbility (PrereqAbilityName ))
697+ if (InStr (PrereqAbilityName , class 'UIArmory_PromotionHero' .default .MutuallyExclusivePrefix ) == 0 )
698+ {
699+ PreviousAbilityTemplate = AbilityTemplateManager .FindAbilityTemplate (
700+ name (Mid (PrereqAbilityName , Len (class 'UIArmory_PromotionHero' .default .MutuallyExclusivePrefix ))));
701+ if (PreviousAbilityTemplate != none )
702+ {
703+ if (MutuallyExclusiveNames != "" )
704+ {
705+ MutuallyExclusiveNames $ = ", " ;
706+ }
707+ MutuallyExclusiveNames $ = PreviousAbilityTemplate .LocFriendlyName ;
708+ }
709+ }
710+ else
694711 {
695- if (PrereqAbilityNames != "" )
712+ PreviousAbilityTemplate = AbilityTemplateManager .FindAbilityTemplate (PrereqAbilityName );
713+ if (PreviousAbilityTemplate != none && !Unit .HasSoldierAbility (PrereqAbilityName ))
696714 {
697- PrereqAbilityNames $ = ", " ;
715+ if (PrereqAbilityNames != "" )
716+ {
717+ PrereqAbilityNames $ = ", " ;
718+ }
719+ PrereqAbilityNames $ = PreviousAbilityTemplate .LocFriendlyName ;
698720 }
699- PrereqAbilityNames $ = PreviousAbilityTemplate .LocFriendlyName ;
700721 }
701722 }
702723 PrereqAbilityNames = class 'UIUtilities_Text' .static .FormatCommaSeparatedNouns (PrereqAbilityNames );
724+ MutuallyExclusiveNames = class 'UIUtilities_Text' .static .FormatCommaSeparatedNouns (MutuallyExclusiveNames );
725+
726+ if (MutuallyExclusiveNames != "" )
727+ {
728+ AbilityDesc = class 'UIUtilities_Text' .static .GetColoredText (m_strMutuallyExclusive @ MutuallyExclusiveNames , eUIState_Warning ) $ "\n " $ AbilityDesc ;
729+ }
703730
704731 if (PrereqAbilityNames != "" )
705732 {
706733 AbilityDesc = class 'UIUtilities_Text' .static .GetColoredText (m_strPrereqAbility @ PrereqAbilityNames , eUIState_Warning ) $ "\n " $ AbilityDesc ;
707734 }
735+ // End Issue #128
708736 }
709737 }
710738 else
@@ -1169,4 +1197,4 @@ static function string GetClassSummary(XComGameState_Unit Unit)
11691197 }
11701198
11711199 return Unit.GetSoldierClassTemplate().ClassSummary;
1172- }
1200+ }
0 commit comments