mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-06-09 15:06:34 +02:00
e8f4975f46
* changeling-gain-DNA * review * Return IsUniqueDevour * oops * Update SharedChangelingIdentitySystem.cs * Store data in ChangelingIdentityData + fixes List of changes: - Whether an identity granted devour is now tracked in ChangelingIdentityData - Made devoured shutdown cleanup again - Made server set the mind to null if it never found one, instead of being invalid Fixes: - Fixed name being networked as empty if original was deleted --------- Co-authored-by: ScarKy0 <scarky0@onet.eu>
46 lines
1.4 KiB
C#
46 lines
1.4 KiB
C#
using Content.Shared.Changeling.Components;
|
|
using Content.Shared.Changeling.Systems;
|
|
using Robust.Shared.GameStates;
|
|
|
|
namespace Content.Server.Changeling.Systems;
|
|
|
|
public sealed class ChangelingIdentitySystem : SharedChangelingIdentitySystem
|
|
{
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
SubscribeLocalEvent<ChangelingIdentityComponent, ComponentGetState>(OnGetState);
|
|
}
|
|
|
|
private void OnGetState(Entity<ChangelingIdentityComponent> entity, ref ComponentGetState args)
|
|
{
|
|
List<ChangelingNetworkedIdentityData> sentIdentities = new();
|
|
|
|
foreach (var identity in entity.Comp.ConsumedIdentities)
|
|
{
|
|
ChangelingNetworkedIdentityData netData = new()
|
|
{
|
|
Identity = GetNetEntity(identity.Identity),
|
|
Original = GetNetEntity(identity.Original),
|
|
OriginalJob = identity.OriginalJob,
|
|
OriginalName = identity.OriginalName,
|
|
Starting = identity.Starting,
|
|
GrantedDna = identity.GrantedDna,
|
|
};
|
|
|
|
sentIdentities.Add(netData);
|
|
}
|
|
|
|
var current = entity.Comp.CurrentIdentity;
|
|
|
|
var netCurrent = GetNetEntity(current);
|
|
|
|
args.State = new ChangelingIdentityComponentState(
|
|
sentIdentities,
|
|
netCurrent,
|
|
entity.Comp.IdentityCloningSettings,
|
|
entity.Comp.MaxStoredDisguises);
|
|
}
|
|
}
|