Reregister ghost role when player ghosts while alive (#5956)
* Reregister ghost role when player ghosts while alive * Add ReregisterOnGhost property
This commit is contained in:
@@ -56,11 +56,18 @@ namespace Content.Server.Ghost.Roles.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadOnly)]
|
[ViewVariables(VVAccess.ReadOnly)]
|
||||||
public bool Taken { get; protected set; }
|
public bool Taken { get; set; }
|
||||||
|
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public uint Identifier { get; set; }
|
public uint Identifier { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reregisters the ghost role when the current player ghosts.
|
||||||
|
/// </summary>
|
||||||
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
[DataField("reregister")]
|
||||||
|
public bool ReregisterOnGhost { get; set; } = true;
|
||||||
|
|
||||||
protected override void Initialize()
|
protected override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using Content.Server.EUI;
|
|||||||
using Content.Server.Ghost.Components;
|
using Content.Server.Ghost.Components;
|
||||||
using Content.Server.Ghost.Roles.Components;
|
using Content.Server.Ghost.Roles.Components;
|
||||||
using Content.Server.Ghost.Roles.UI;
|
using Content.Server.Ghost.Roles.UI;
|
||||||
|
using Content.Server.Mind.Components;
|
||||||
using Content.Server.Players;
|
using Content.Server.Players;
|
||||||
using Content.Shared.Administration;
|
using Content.Shared.Administration;
|
||||||
using Content.Shared.GameTicking;
|
using Content.Shared.GameTicking;
|
||||||
@@ -42,6 +43,7 @@ namespace Content.Server.Ghost.Roles
|
|||||||
|
|
||||||
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
|
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
|
||||||
SubscribeLocalEvent<PlayerAttachedEvent>(OnPlayerAttached);
|
SubscribeLocalEvent<PlayerAttachedEvent>(OnPlayerAttached);
|
||||||
|
SubscribeLocalEvent<GhostRoleComponent, MindRemovedMessage>(OnMindRemoved);
|
||||||
|
|
||||||
_playerManager.PlayerStatusChanged += PlayerStatusChanged;
|
_playerManager.PlayerStatusChanged += PlayerStatusChanged;
|
||||||
}
|
}
|
||||||
@@ -200,6 +202,14 @@ namespace Content.Server.Ghost.Roles
|
|||||||
CloseEui(message.Player);
|
CloseEui(message.Player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnMindRemoved(EntityUid uid, GhostRoleComponent component, MindRemovedMessage args)
|
||||||
|
{
|
||||||
|
if (!component.ReregisterOnGhost)
|
||||||
|
return;
|
||||||
|
component.Taken = false;
|
||||||
|
RegisterGhostRole(component);
|
||||||
|
}
|
||||||
|
|
||||||
public void Reset(RoundRestartCleanupEvent ev)
|
public void Reset(RoundRestartCleanupEvent ev)
|
||||||
{
|
{
|
||||||
foreach (var session in _openUis.Keys)
|
foreach (var session in _openUis.Keys)
|
||||||
|
|||||||
Reference in New Issue
Block a user