using Content.Server.GameTicking;
using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems;
+using Content.Shared.Roles;
using Content.Shared.Traits;
using Content.Shared.Whitelist;
using Robust.Shared.Prototypes;
// When the player is spawned in, add all trait components selected during character creation
private void OnPlayerSpawnComplete(PlayerSpawnCompleteEvent args)
{
+ // Check if player's job allows to apply traits
+ if (args.JobId == null ||
+ !_prototypeManager.TryIndex<JobPrototype>(args.JobId ?? string.Empty, out var protoJob) ||
+ !protoJob.ApplyTraits)
+ {
+ return;
+ }
+
foreach (var traitId in args.Profile.TraitPreferences)
{
if (!_prototypeManager.TryIndex<TraitPrototype>(traitId, out var traitPrototype))
[DataField("playTimeTracker", required: true, customTypeSerializer: typeof(PrototypeIdSerializer<PlayTimeTrackerPrototype>))]
public string PlayTimeTracker { get; private set; } = string.Empty;
+ /// <summary>
+ /// Who is the supervisor for this job.
+ /// </summary>
[DataField("supervisors")]
public string Supervisors { get; private set; } = "nobody";
[ViewVariables(VVAccess.ReadOnly)]
public string? LocalizedDescription => Description is null ? null : Loc.GetString(Description);
+ /// <summary>
+ /// Requirements for the job.
+ /// </summary>
[DataField, Access(typeof(SharedRoleSystem), Other = AccessPermissions.None)]
public HashSet<JobRequirement>? Requirements;
+ /// <summary>
+ /// When true - the station will have anouncement about arrival of this player.
+ /// </summary>
[DataField("joinNotifyCrew")]
public bool JoinNotifyCrew { get; private set; } = false;
+ /// <summary>
+ /// When true - the player will recieve a message about importancy of their job.
+ /// </summary>
[DataField("requireAdminNotify")]
public bool RequireAdminNotify { get; private set; } = false;
+ /// <summary>
+ /// Should this job appear in preferences menu?
+ /// </summary>
[DataField("setPreference")]
public bool SetPreference { get; private set; } = true;
+ /// <summary>
+ /// Should the selected traits be applied for this job?
+ /// </summary>
+ [DataField]
+ public bool ApplyTraits { get; private set; } = true;
+
/// <summary>
/// Whether this job should show in the ID Card Console.
/// If set to null, it will default to SetPreference's value.