Files
wwdpublic/Content.Shared/Customization/Systems/CharacterRequirements.Misc.cs
SlamBamActionman 163ac8bc69 Lower in-round votekick requirements (#32953)
Initial commit

(cherry picked from commit b3190b89359ffe6e4e1d58e1c1ef69b8d7f70476)
2025-09-20 20:33:34 +03:00

58 lines
1.6 KiB
C#

using Content.Shared.Customization.Systems;
using Content.Shared.Mind;
using Content.Shared.Preferences;
using Content.Shared.Roles;
using JetBrains.Annotations;
using Robust.Shared.Configuration;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared.Customization.Systems;
/// <summary>
/// Requires the server to have a specific CVar value.
/// </summary>
[UsedImplicitly, Serializable, NetSerializable,]
public sealed partial class CVarRequirement : CharacterRequirement
{
[DataField("cvar", required: true)]
public string CVar;
[DataField(required: true)]
public string RequiredValue;
public override bool IsValid(
JobPrototype job,
HumanoidCharacterProfile profile,
IReadOnlyDictionary<string, TimeSpan> playTimes,
bool whitelisted,
IPrototype prototype,
IEntityManager entityManager,
IPrototypeManager prototypeManager,
IConfigurationManager configManager,
out string? reason,
int depth = 0,
MindComponent? mind = null
)
{
if (!configManager.IsCVarRegistered(CVar))
{
reason = null;
return true;
}
const string color = "lightblue";
var cvar = configManager.GetCVar(CVar);
var isValid = cvar.ToString()! == RequiredValue;
reason = Loc.GetString(
"character-cvar-requirement",
("inverted", Inverted),
("color", color),
("cvar", CVar),
("value", RequiredValue));
return isValid;
}
}