diff --git a/Content.Client/_DEN/Lobby/UI/Traits/EntityTraitSelector.xaml.cs b/Content.Client/_DEN/Lobby/UI/Traits/EntityTraitSelector.xaml.cs index fa60ce13c2..6bbe3b8287 100644 --- a/Content.Client/_DEN/Lobby/UI/Traits/EntityTraitSelector.xaml.cs +++ b/Content.Client/_DEN/Lobby/UI/Traits/EntityTraitSelector.xaml.cs @@ -137,8 +137,18 @@ private static string ConstructTooltipDescription(EntityTraitPrototype trait, return tooltipString; } - public void SetInvalid(bool invalid) + public void UpdateAppearance(bool invalid) { - SelectorCheckbox.Label.FontColorOverride = invalid ? Color.Red : null; + if (_trait is null) + return; + var valid = SharedPlayerRequirementManager.CheckRequirements(GetContext(), _trait.Requirements); + SelectorCheckbox.Disabled = !valid && !Preference; + Color? fontColor = null; + if (invalid) + fontColor = Color.Red; + else if (!valid) + fontColor = Color.Gray; + + SelectorCheckbox.Label.FontColorOverride = fontColor; } } diff --git a/Content.Client/_DEN/Lobby/UI/Traits/TraitCategoryBox.xaml.cs b/Content.Client/_DEN/Lobby/UI/Traits/TraitCategoryBox.xaml.cs index 32926df911..c99aa5d5da 100644 --- a/Content.Client/_DEN/Lobby/UI/Traits/TraitCategoryBox.xaml.cs +++ b/Content.Client/_DEN/Lobby/UI/Traits/TraitCategoryBox.xaml.cs @@ -72,7 +72,7 @@ public void SetCategory(TraitCategoryPrototype category) var tooManySelected = TotalCost > category.MaxTraitPoints; foreach (var selector in _selectors) - selector.SetInvalid(tooManySelected); + selector.UpdateAppearance(tooManySelected); } else CategoryMaxTraitLabel.Visible = false; diff --git a/Content.Shared/_DEN/Requirements/Managers/SharedPlayerRequirementManager.cs b/Content.Shared/_DEN/Requirements/Managers/SharedPlayerRequirementManager.cs index 26175b955d..de0974008e 100644 --- a/Content.Shared/_DEN/Requirements/Managers/SharedPlayerRequirementManager.cs +++ b/Content.Shared/_DEN/Requirements/Managers/SharedPlayerRequirementManager.cs @@ -63,9 +63,9 @@ public static bool CheckRequirement(PlayerRequirementContext context, IPlayerReq // Check the actual requirement, now. if (!requirement.CheckRequirement(context)) - return false; + return requirement.Inverted; - return true; + return !requirement.Inverted; } ///