Ghost roles create new minds, better tracking of roles at round end screen (#5175)
* Ghost roles now get new Minds
* Some round start/end button stuff
* Mind tracking for better round end reports
* Make traitor kill objectives use mind CharacterName rather than actual occupied entity ("kill brain" prevention)
* Transition over to EntityUid for mind stuff because that's the only way to do it
* BrainSystem fix for PR rebase
This commit is contained in:
@@ -4,6 +4,7 @@ using Content.Server.EUI;
|
||||
using Content.Server.Ghost.Components;
|
||||
using Content.Server.Ghost.Roles.Components;
|
||||
using Content.Server.Ghost.Roles.UI;
|
||||
using Content.Server.Players;
|
||||
using Content.Shared.GameTicking;
|
||||
using Content.Shared.Ghost.Roles;
|
||||
using Content.Shared.Ghost;
|
||||
@@ -14,6 +15,7 @@ using Robust.Shared.Console;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.ViewVariables;
|
||||
using Robust.Shared.Utility;
|
||||
using Robust.Shared.Enums;
|
||||
|
||||
namespace Content.Server.Ghost.Roles
|
||||
@@ -153,6 +155,24 @@ namespace Content.Server.Ghost.Roles
|
||||
CloseEui(player);
|
||||
}
|
||||
|
||||
public void GhostRoleInternalCreateMindAndTransfer(IPlayerSession player, EntityUid roleUid, EntityUid mob, GhostRoleComponent? role = null)
|
||||
{
|
||||
if (!Resolve(roleUid, ref role)) return;
|
||||
|
||||
var contentData = player.ContentData();
|
||||
|
||||
DebugTools.AssertNotNull(contentData);
|
||||
|
||||
var newMind = new Mind.Mind(player.UserId)
|
||||
{
|
||||
CharacterName = EntityManager.GetComponent<MetaDataComponent>(mob).EntityName
|
||||
};
|
||||
newMind.AddRole(new GhostRoleMarkerRole(newMind, role.RoleName));
|
||||
|
||||
newMind.ChangeOwningPlayer(player.UserId);
|
||||
newMind.TransferTo(mob);
|
||||
}
|
||||
|
||||
public GhostRoleInfo[] GetGhostRolesInfo()
|
||||
{
|
||||
var roles = new GhostRoleInfo[_ghostRoles.Count];
|
||||
|
||||
Reference in New Issue
Block a user