Fix warden being and qm being not considered head for tot kill head objective (#32721)
* fixed warden being and qm being not considered head for traitor kill head objective * fixed hypothetical warden traitor not getting disk objective * change suggested by deltanedas * cleanup * cleanup * fix * changed as suggested * removed a dot in the comment * removed an empty line * reformulation
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
using Content.Server.Objectives.Components;
|
using Content.Server.Objectives.Components;
|
||||||
|
using Content.Server.Revolutionary.Components;
|
||||||
using Content.Server.Shuttles.Systems;
|
using Content.Server.Shuttles.Systems;
|
||||||
using Content.Shared.CCVar;
|
using Content.Shared.CCVar;
|
||||||
using Content.Shared.Mind;
|
using Content.Shared.Mind;
|
||||||
using Content.Shared.Objectives.Components;
|
using Content.Shared.Objectives.Components;
|
||||||
using Content.Shared.Roles.Jobs;
|
|
||||||
using Robust.Shared.Configuration;
|
using Robust.Shared.Configuration;
|
||||||
using Robust.Shared.Random;
|
using Robust.Shared.Random;
|
||||||
|
|
||||||
@@ -17,7 +17,6 @@ public sealed class KillPersonConditionSystem : EntitySystem
|
|||||||
[Dependency] private readonly EmergencyShuttleSystem _emergencyShuttle = default!;
|
[Dependency] private readonly EmergencyShuttleSystem _emergencyShuttle = default!;
|
||||||
[Dependency] private readonly IConfigurationManager _config = default!;
|
[Dependency] private readonly IConfigurationManager _config = default!;
|
||||||
[Dependency] private readonly IRobustRandom _random = default!;
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
[Dependency] private readonly SharedJobSystem _job = default!;
|
|
||||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||||
[Dependency] private readonly TargetObjectiveSystem _target = default!;
|
[Dependency] private readonly TargetObjectiveSystem _target = default!;
|
||||||
|
|
||||||
@@ -86,11 +85,10 @@ public sealed class KillPersonConditionSystem : EntitySystem
|
|||||||
}
|
}
|
||||||
|
|
||||||
var allHeads = new List<EntityUid>();
|
var allHeads = new List<EntityUid>();
|
||||||
foreach (var mind in allHumans)
|
foreach (var person in allHumans)
|
||||||
{
|
{
|
||||||
// RequireAdminNotify used as a cheap way to check for command department
|
if (TryComp<MindComponent>(person, out var mind) && mind.OwnedEntity is { } ent && HasComp<CommandStaffComponent>(ent))
|
||||||
if (_job.MindTryGetJob(mind, out var prototype) && prototype.RequireAdminNotify)
|
allHeads.Add(person);
|
||||||
allHeads.Add(mind);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (allHeads.Count == 0)
|
if (allHeads.Count == 0)
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
using Content.Server.Objectives.Components;
|
using Content.Server.Objectives.Components;
|
||||||
|
using Content.Server.Revolutionary.Components;
|
||||||
using Content.Shared.Objectives.Components;
|
using Content.Shared.Objectives.Components;
|
||||||
using Content.Shared.Roles.Jobs;
|
|
||||||
|
|
||||||
namespace Content.Server.Objectives.Systems;
|
namespace Content.Server.Objectives.Systems;
|
||||||
|
|
||||||
public sealed class NotCommandRequirementSystem : EntitySystem
|
public sealed class NotCommandRequirementSystem : EntitySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly SharedJobSystem _job = default!;
|
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
@@ -20,8 +18,7 @@ public sealed class NotCommandRequirementSystem : EntitySystem
|
|||||||
if (args.Cancelled)
|
if (args.Cancelled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// cheap equivalent to checking that job department is command, since all command members require admin notification when leaving
|
if (args.Mind.OwnedEntity is { } ent && HasComp<CommandStaffComponent>(ent))
|
||||||
if (_job.MindTryGetJob(args.MindId, out var prototype) && prototype.RequireAdminNotify)
|
|
||||||
args.Cancelled = true;
|
args.Cancelled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
using Content.Server.GameTicking.Rules;
|
|
||||||
|
|
||||||
namespace Content.Server.Revolutionary.Components;
|
namespace Content.Server.Revolutionary.Components;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Given to heads at round start for Revs. Used for tracking if heads died or not.
|
/// Given to heads at round start. Used for assigning traitors to kill heads and for revs to check if the heads died or not.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[RegisterComponent, Access(typeof(RevolutionaryRuleSystem))]
|
[RegisterComponent]
|
||||||
public sealed partial class CommandStaffComponent : Component
|
public sealed partial class CommandStaffComponent : Component
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
weight: 10
|
weight: 10
|
||||||
startingGear: QuartermasterGear
|
startingGear: QuartermasterGear
|
||||||
icon: "JobIconQuarterMaster"
|
icon: "JobIconQuarterMaster"
|
||||||
|
requireAdminNotify: true
|
||||||
supervisors: job-supervisors-captain
|
supervisors: job-supervisors-captain
|
||||||
canBeAntag: false
|
canBeAntag: false
|
||||||
access:
|
access:
|
||||||
|
|||||||
Reference in New Issue
Block a user