Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[X2WOTCCommunityPromotionScreen.CPS_MCM_Defaults]
VERSION_CFG=3
VERSION_CFG=4

; SHOW_UNREACHED_PERKS=false
; SHOW_UNREACHED_PERKS_MODE=0
; DISABLE_TRAINING_CENTER_REQUIREMENT=false
; DISABLE_NEWCLASS_POPUPS=false
; DISABLE_COMINT_POPUPS=false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@ ModName="Community Promotion Screen"
PageTitle="Community Promotion Screen"
GroupHeader="General Settings"

SHOW_UNREACHED_PERKS_Label = "Display perks from unreached ranks"
SHOW_UNREACHED_PERKS_Tip = "Normally you cannot preview perks from soldiers' future ranks. You can remove this restriction here."
SHOW_UNREACHED_PERKS_MODE_Label = "Perks on unreached ranks"
SHOW_UNREACHED_PERKS_MODE_Tip = "Normally you cannot preview perks from soldiers' future ranks. You can remove this restriction here."
SHOW_UNREACHED_PERKS_MODE_Strings[0] = "Hide All"
SHOW_UNREACHED_PERKS_MODE_Strings[1] = "Hide Training Center Perks"
SHOW_UNREACHED_PERKS_MODE_Strings[2] = "Show All"

SHOW_INVENTORY_SLOT_Label = "Display inventory slot"
SHOW_INVENTORY_SLOT_Tip = "Toggles the display of the inventory slot to which the ability is attached to. Keep in mind the ability being attached to a slot does not always mean the ability will work only with items in that inventory slot."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,11 @@ ModName="Community Promotion Screen"
PageTitle="Community Promotion Screen"
GroupHeader="Общие настройки"

SHOW_UNREACHED_PERKS_Label = "Показывать способности на недостигнутых рангах"
SHOW_UNREACHED_PERKS_Tip = "Обычно вы не можете знать способности бойцов заранее. Эта опция позволяет убрать это ограничение."
SHOW_UNREACHED_PERKS_MODE_Label = "Cпособности на недостигнутых рангах"
SHOW_UNREACHED_PERKS_MODE_Tip = "Обычно вы не можете знать способности бойцов заранее. Эта опция позволяет убрать это ограничение."
SHOW_UNREACHED_PERKS_MODE_Strings[0] = "Скрывать все"
SHOW_UNREACHED_PERKS_MODE_Strings[1] = "Скрывать способности Центра подготовки"
SHOW_UNREACHED_PERKS_MODE_Strings[2] = "Показывать все"

SHOW_INVENTORY_SLOT_Label = "Показывать слот экипировки"
SHOW_INVENTORY_SLOT_Tip = "Переключает отображение слота экипировки к которому привязана способность. Имейте в виду, что привязка способности не всегда означает что способность работает только с предметами в этом слоте."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ class CPS_MCM_Defaults extends object config(X2WOTCCommunityPromotionScreen_DEFA
var config int VERSION_CFG;

var config bool SHOW_INVENTORY_SLOT;
var config bool SHOW_UNREACHED_PERKS;
var config int SHOW_UNREACHED_PERKS_MODE; // Issue #69
var config bool DISABLE_TRAINING_CENTER_REQUIREMENT;
var config bool DISABLE_NEWCLASS_POPUPS;
var config bool DISABLE_COMINT_POPUPS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,25 @@ var localized string GroupHeader;
`include(X2WOTCCommunityPromotionScreen\Src\ModConfigMenuAPI\MCM_API_Includes.uci)

`MCM_API_AutoCheckBoxVars(SHOW_INVENTORY_SLOT);
`MCM_API_AutoCheckBoxVars(SHOW_UNREACHED_PERKS);
`MCM_API_AutoCheckBoxVars(DISABLE_TRAINING_CENTER_REQUIREMENT);
`MCM_API_AutoCheckBoxVars(DISABLE_NEWCLASS_POPUPS);
`MCM_API_AutoCheckBoxVars(DISABLE_COMINT_POPUPS);
`MCM_API_AutoIndexDropdownVars(ABILITY_TREE_PLANNER_MODE);

// Single line for Issue #69
`MCM_API_AutoIndexDropdownVars(SHOW_UNREACHED_PERKS_MODE);

`include(X2WOTCCommunityPromotionScreen\Src\ModConfigMenuAPI\MCM_API_CfgHelpers.uci)

`MCM_API_AutoCheckBoxFns(SHOW_INVENTORY_SLOT, 3);
`MCM_API_AutoCheckBoxFns(SHOW_UNREACHED_PERKS, 1);
`MCM_API_AutoCheckBoxFns(DISABLE_TRAINING_CENTER_REQUIREMENT, 1);
`MCM_API_AutoCheckBoxFns(DISABLE_NEWCLASS_POPUPS, 1);
`MCM_API_AutoCheckBoxFns(DISABLE_COMINT_POPUPS, 1);
`MCM_API_AutoIndexDropdownFns(ABILITY_TREE_PLANNER_MODE, 2);

// Single line for Issue #69
`MCM_API_AutoIndexDropdownFns(SHOW_UNREACHED_PERKS_MODE, 4);

event OnInit(UIScreen Screen)
{
`MCM_API_Register(Screen, ClientModCallback);
Expand All @@ -42,10 +46,12 @@ simulated function ClientModCallback(MCM_API_Instance ConfigAPI, int GameMode)
Page.EnableResetButton(ResetButtonClicked);

Group = Page.AddGroup('Group', GroupHeader);
`MCM_API_AutoAddCheckBox(Group, SHOW_UNREACHED_PERKS, /* Issue #53 */ SHOW_UNREACHED_PERKS_ChangeHandler);

// Issue #69
Group.AddDropdown('SHOW_UNREACHED_PERKS_MODE', SHOW_UNREACHED_PERKS_MODE_Label, SHOW_UNREACHED_PERKS_MODE_Tip, SHOW_UNREACHED_PERKS_MODE_Strings, SHOW_UNREACHED_PERKS_MODE_Strings[SHOW_UNREACHED_PERKS_MODE], SHOW_UNREACHED_PERKS_MODE_SaveHandler, SHOW_UNREACHED_PERKS_MODE_ChangeHandler);

// Issue #53
Group.AddDropdown('ABILITY_TREE_PLANNER_MODE', ABILITY_TREE_PLANNER_MODE_Label, ABILITY_TREE_PLANNER_MODE_Tip, ABILITY_TREE_PLANNER_MODE_Strings, ABILITY_TREE_PLANNER_MODE_Strings[ABILITY_TREE_PLANNER_MODE], ABILITY_TREE_PLANNER_MODE_SaveHandler).SetEditable(SHOW_UNREACHED_PERKS);
Group.AddDropdown('ABILITY_TREE_PLANNER_MODE', ABILITY_TREE_PLANNER_MODE_Label, ABILITY_TREE_PLANNER_MODE_Tip, ABILITY_TREE_PLANNER_MODE_Strings, ABILITY_TREE_PLANNER_MODE_Strings[ABILITY_TREE_PLANNER_MODE], ABILITY_TREE_PLANNER_MODE_SaveHandler).SetEditable(SHOW_UNREACHED_PERKS_MODE != 0);

`MCM_API_AutoAddCheckBox(Group, SHOW_INVENTORY_SLOT);
`MCM_API_AutoAddCheckBox(Group, DISABLE_TRAINING_CENTER_REQUIREMENT);
Expand All @@ -56,18 +62,19 @@ simulated function ClientModCallback(MCM_API_Instance ConfigAPI, int GameMode)
}

// Start Issue #53
simulated function SHOW_UNREACHED_PERKS_ChangeHandler(MCM_API_Setting _Setting, bool _SettingValue)
simulated function SHOW_UNREACHED_PERKS_MODE_ChangeHandler(MCM_API_Setting _Setting, string _SettingValue)
{
SHOW_UNREACHED_PERKS = _SettingValue;
// Lock the ABILITY_TREE_PLANNER_MODE if SHOW_UNREACHED_PERKS is disabled.
_Setting.GetParentGroup().GetSettingByName('ABILITY_TREE_PLANNER_MODE').SetEditable(SHOW_UNREACHED_PERKS);
SHOW_UNREACHED_PERKS_MODE = SHOW_UNREACHED_PERKS_MODE_Strings.Find(_SettingValue);

// Unlock / lock the ABILITY_TREE_PLANNER_MODE depending on if unreached perks are shown or not.
_Setting.GetParentGroup().GetSettingByName('ABILITY_TREE_PLANNER_MODE').SetEditable(SHOW_UNREACHED_PERKS_MODE > 0);
}
// End Issue #53

simulated function LoadSavedSettings()
{
SHOW_INVENTORY_SLOT = `GETMCMVAR(SHOW_INVENTORY_SLOT);
SHOW_UNREACHED_PERKS = `GETMCMVAR(SHOW_UNREACHED_PERKS);
SHOW_UNREACHED_PERKS_MODE = `GETMCMVAR(SHOW_UNREACHED_PERKS_MODE); // Issue #69
DISABLE_TRAINING_CENTER_REQUIREMENT = `GETMCMVAR(DISABLE_TRAINING_CENTER_REQUIREMENT);
DISABLE_NEWCLASS_POPUPS = `GETMCMVAR(DISABLE_NEWCLASS_POPUPS);
DISABLE_COMINT_POPUPS = `GETMCMVAR(DISABLE_COMINT_POPUPS);
Expand All @@ -77,7 +84,7 @@ simulated function LoadSavedSettings()
simulated function ResetButtonClicked(MCM_API_SettingsPage Page)
{
`MCM_API_AutoReset(SHOW_INVENTORY_SLOT);
`MCM_API_AutoReset(SHOW_UNREACHED_PERKS);
`MCM_API_AutoIndexReset(SHOW_UNREACHED_PERKS_MODE);
`MCM_API_AutoReset(DISABLE_TRAINING_CENTER_REQUIREMENT);
`MCM_API_AutoReset(DISABLE_NEWCLASS_POPUPS);
`MCM_API_AutoReset(DISABLE_COMINT_POPUPS);
Expand All @@ -88,7 +95,7 @@ simulated function SaveButtonClicked(MCM_API_SettingsPage Page)
{
// Start Issue #53
// Disable the ABILITY_TREE_PLANNER_MODE if SHOW_UNREACHED_PERKS is disabled.
if (!SHOW_UNREACHED_PERKS)
if (SHOW_UNREACHED_PERKS_MODE == 0)
{
ABILITY_TREE_PLANNER_MODE = 0;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,12 @@ function bool UpdateAbilityIcons_Override(out CPS_UIArmory_PromotionHeroColumn C
local bool bHasColumnAbility, bConnectToNextAbility;
local string AbilityName, AbilityIcon, BGColor, FGColor;

// Start variables for Issue #69
local CPSAbilityMetaInfo MetaInfo;
local bool bUnreachedRankPerk;
local bool bHidePerk;
// End variables for Issue #69

AbilityTemplateManager = class'X2AbilityTemplateManager'.static.GetAbilityTemplateManager();
Unit = GetUnit();

Expand All @@ -423,6 +429,7 @@ function bool UpdateAbilityIcons_Override(out CPS_UIArmory_PromotionHeroColumn C
MaxPosition = Max(AbilityTree.Length - NUM_ABILITIES_PER_COLUMN, MaxPosition);

Column.AbilityNames.Length = 0;
bUnreachedRankPerk = Column.Rank >= Unit.GetRank();

for (iAbility = Position; iAbility < Position + NUM_ABILITIES_PER_COLUMN; iAbility++)
{
Expand All @@ -441,9 +448,27 @@ function bool UpdateAbilityIcons_Override(out CPS_UIArmory_PromotionHeroColumn C
{
Column.AbilityNames.AddItem(AbilityTemplate.DataName);
}

FillAbilityMetaInfo(MetaInfo, Unit, Column.Rank, iAbility, AbilityTemplate.DataName);

switch (`GETMCMVAR(SHOW_UNREACHED_PERKS_MODE))
{
// Hide Training Center perks. All of them are hidden if the Training Center is not built or if the perk is higher than current rank.
case 1:
bHidePerk = !MetaInfo.bClassAbility && (!bCanSpendAP || bUnreachedRankPerk);
break;
// Always show all perks.
case 2:
bHidePerk = false;
break;
// Hide all perks from unreached ranks. Training Center perks are always hidden until Training Center is constructed.
case 0:
default:
bHidePerk = bUnreachedRankPerk || !MetaInfo.bClassAbility && !bCanSpendAP;
break;
}

// The unit is not yet at the rank needed for this column
if (!`GETMCMVAR(SHOW_UNREACHED_PERKS) && Column.Rank >= Unit.GetRank())
if (bHidePerk)
{
AbilityName = class'UIUtilities_Text'.static.GetColoredText(m_strAbilityLockedTitle, eUIState_Disabled);
AbilityIcon = class'UIUtilities_Image'.const.UnknownAbilityIcon;
Expand Down Expand Up @@ -484,7 +509,7 @@ function bool UpdateAbilityIcons_Override(out CPS_UIArmory_PromotionHeroColumn C
// If so, turn on the connection arrow between them
//if (Column.Rank < (class'X2ExperienceConfig'.static.GetMaxRank() - 2) && Unit.GetRank() > (Column.Rank + 1))
//if (Column.Rank < (Columns.Length - 2) && (Unit.GetRank() > (Column.Rank + 1) || `GETMCMVAR(SHOW_UNREACHED_PERKS))) // Issue #61 - always connect abilities if "Show unreached perks" is enabled.
if (Column.Rank < (Unit.AbilityTree.Length - 1) && (Unit.GetRank() > (Column.Rank + 1) || `GETMCMVAR(SHOW_UNREACHED_PERKS))) // Issue #74 - do not check for prereqs beyond the units ability tree.
if (Column.Rank < (Unit.AbilityTree.Length - 1) && (Unit.GetRank() > (Column.Rank + 1) || `GETMCMVAR(SHOW_UNREACHED_PERKS_MODE) > 0)) // Issue #74 - do not check for prereqs beyond the units ability tree.
{
bConnectToNextAbility = false;
NextRankTree = Unit.GetRankAbilities(Column.Rank + 1);
Expand Down Expand Up @@ -1200,10 +1225,15 @@ function PreviewAbility(int Rank, int Branch)
local name PrereqAbilityName;
// Variable for Issue #128
local string MutuallyExclusiveNames;
local bool bHidePerk;
local bool bUnreachedRankPerk;

// Variable for Issue #55
local string SlotName;

// Variable for Issue #69
local CPSAbilityMetaInfo MetaInfo;

// NPSBDP Patch
Branch += Position;

Expand All @@ -1217,8 +1247,29 @@ function PreviewAbility(int Rank, int Branch)
{
AbilityCost = class'UIUtilities_Text'.static.GetColoredText(AbilityCost, eUIState_Bad);
}

AbilityTree = Unit.GetRankAbilities(Rank);
FillAbilityMetaInfo(MetaInfo, Unit, Rank, Branch, AbilityTree[Branch].AbilityName);
bUnreachedRankPerk = Rank >= Unit.GetRank();

switch (`GETMCMVAR(SHOW_UNREACHED_PERKS_MODE))
{
// Hide Training Center perks. All of them are hidden if the Training Center is not built or if the perk is higher than current rank.
case 1:
bHidePerk = !MetaInfo.bClassAbility && (!bCanSpendAP || bUnreachedRankPerk);
break;
// Always show all perks.
case 2:
bHidePerk = false;
break;
// Hide all perks from unreached ranks. Training Center perks are always hidden until Training Center is constructed.
case 0:
default:
bHidePerk = bUnreachedRankPerk || !MetaInfo.bClassAbility && !bCanSpendAP;
break;
}

if (!`GETMCMVAR(SHOW_UNREACHED_PERKS) && Rank >= Unit.GetRank())
if (bHidePerk)
{
AbilityIcon = class'UIUtilities_Image'.const.LockedAbilityIcon;
AbilityName = class'UIUtilities_Text'.static.GetColoredText(m_strAbilityLockedTitle, eUIState_Disabled);
Expand All @@ -1232,7 +1283,6 @@ function PreviewAbility(int Rank, int Branch)
else
{
AbilityTemplateManager = class'X2AbilityTemplateManager'.static.GetAbilityTemplateManager();
AbilityTree = Unit.GetRankAbilities(Rank);
AbilityTemplate = AbilityTemplateManager.FindAbilityTemplate(AbilityTree[Branch].AbilityName);

if (AbilityTemplate != none)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ static final function Update_ViewLockedSkills_UISL()
CDO = UIScreenListener(class'XComEngine'.static.GetClassDefaultObjectByName('Main_ViewLockedSkillsWotc'));
if (CDO != none)
{
if (`GETMCMVAR(SHOW_UNREACHED_PERKS))
if (`GETMCMVAR(SHOW_UNREACHED_PERKS_MODE) > 0)
{
CDO.ScreenClass = class'UIScreen_Dummy';
}
Expand Down