Skip to content

Commit 778efcd

Browse files
authored
Merge pull request #9 from X2CommunityCore/mutually-exclusive-abilities
Support mutually exclusive abilities (#4)
2 parents 40bc233 + daaf5f5 commit 778efcd

File tree

4 files changed

+42
-9
lines changed

4 files changed

+42
-9
lines changed

CommunityPromotionScreen.XCOM_sln

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00
33
# XCOM ModBuddy Solution File, Format Version 11.00
44
VisualStudioVersion = 12.0.21005.1
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{5DAE07AF-E217-45C1-8DE7-FF99D6011E8A}") = "CommunityPromotionScreen", "CommunityPromotionScreen\CommunityPromotionScreen.x2proj", "{27E16B1C-44A5-4518-BE0A-B4E0A73E3343}"
6+
Project("{5DAE07AF-E217-45C1-8DE7-FF99D6011E8A}") = "CommunityPromotionScreen", "CommunityPromotionScreen\CommunityPromotionScreen.x2proj", "{7206D3A7-2E8B-4241-8BE4-CBE9AA5DD185}"
77
EndProject
88
Global
99
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1010
Default|XCOM 2 = Default|XCOM 2
1111
EndGlobalSection
1212
GlobalSection(ProjectConfigurationPlatforms) = postSolution
13-
{27E16B1C-44A5-4518-BE0A-B4E0A73E3343}.Default|XCOM 2.ActiveCfg = Default|XCOM 2
14-
{27E16B1C-44A5-4518-BE0A-B4E0A73E3343}.Default|XCOM 2.Build.0 = Default|XCOM 2
13+
{7206D3A7-2E8B-4241-8BE4-CBE9AA5DD185}.Default|XCOM 2.ActiveCfg = Default|XCOM 2
14+
{7206D3A7-2E8B-4241-8BE4-CBE9AA5DD185}.Default|XCOM 2.Build.0 = Default|XCOM 2
1515
EndGlobalSection
1616
GlobalSection(SolutionProperties) = preSolution
1717
HideSolutionNode = FALSE

CommunityPromotionScreen/CommunityPromotionScreen.x2proj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
<Content Include="Config\XComPromotionUIMod.ini">
2020
<SubType>Content</SubType>
2121
</Content>
22+
<Content Include="Localization\NewPromotionScreenbyDefault.int">
23+
<SubType>Content</SubType>
24+
</Content>
2225
<Content Include="ReadMe.txt" />
2326
<Content Include="ModPreview.jpg" />
2427
<Content Include="Config\XComEditor.ini" />
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[NPSBDP_UIArmory_PromotionHero]
2+
m_strMutuallyExclusive="Mutually exclusive with:"

CommunityPromotionScreen/Src/NewPromotionScreenbyDefault/Classes/NPSBDP_UIArmory_PromotionHero.uc

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ var int Position, MaxPosition;
2727

2828
var int AdjustXOffset;
2929

30+
var localized string m_strMutuallyExclusive;
31+
3032
simulated 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

Comments
 (0)