No pacifist or blind sec (#30777)

* no pacifist sec

* also block blindness

* Update warden.yml

* Update security_officer.yml

* Update head_of_security.yml

* Update security_cadet.yml

* Update detective.yml
This commit is contained in:
Ed
2024-08-19 14:42:55 +03:00
committed by GitHub
parent 015cf36469
commit 055dfe6f0b
3 changed files with 72 additions and 3 deletions

View File

@@ -0,0 +1,67 @@
using System.Diagnostics.CodeAnalysis;
using System.Text;
using Content.Shared.Humanoid.Prototypes;
using Content.Shared.Preferences;
using Content.Shared.Traits;
using JetBrains.Annotations;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Utility;
namespace Content.Shared.Roles;
/// <summary>
/// Requires a character to have, or not have, certain traits
/// </summary>
[UsedImplicitly]
[Serializable, NetSerializable]
public sealed partial class TraitsRequirement : JobRequirement
{
[DataField(required: true)]
public HashSet<ProtoId<TraitPrototype>> Traits = new();
public override bool Check(IEntityManager entManager,
IPrototypeManager protoManager,
HumanoidCharacterProfile? profile,
IReadOnlyDictionary<string, TimeSpan> playTimes,
[NotNullWhen(false)] out FormattedMessage? reason)
{
reason = new FormattedMessage();
if (profile is null) //the profile could be null if the player is a ghost. In this case we don't need to block the role selection for ghostrole
return true;
var sb = new StringBuilder();
sb.Append("[color=yellow]");
foreach (var t in Traits)
{
sb.Append(Loc.GetString(protoManager.Index(t).Name) + " ");
}
sb.Append("[/color]");
if (!Inverted)
{
reason = FormattedMessage.FromMarkupPermissive($"{Loc.GetString("role-timer-whitelisted-traits")}\n{sb}");
//at least one of
foreach (var trait in Traits)
{
if (profile.TraitPreferences.Contains(trait))
return true;
}
return false;
}
else
{
reason = FormattedMessage.FromMarkupPermissive($"{Loc.GetString("role-timer-blacklisted-traits")}\n{sb}");
foreach (var trait in Traits)
{
if (profile.TraitPreferences.Contains(trait))
return false;
}
}
return true;
}
}

View File

@@ -8,6 +8,8 @@ role-timer-age-to-old = Your character's age must be at most [color=yellow]{$age
role-timer-age-to-young = Your character's age must be at least [color=yellow]{$age}[/color] to play this role.
role-timer-whitelisted-species = Your character must be one of the following species to play this role:
role-timer-blacklisted-species = Your character must not be one of the following species to play this role:
role-timer-whitelisted-traits = Your character must have one of the following traits:
role-timer-blacklisted-traits = Your character must not have any of the following traits:
role-timer-locked = Locked (hover for details)

View File

@@ -4,9 +4,9 @@
description: job-description-detective
playTimeTracker: JobDetective
requirements:
- !type:DepartmentTimeRequirement
department: Security
time: 54000 # 15 hours
- !type:DepartmentTimeRequirement
department: Security
time: 54000 # 15 hours
startingGear: DetectiveGear
icon: "JobIconDetective"
supervisors: job-supervisors-hos