From 99d44ee388f46f7dd18794c0d371458793bcaf7c Mon Sep 17 00:00:00 2001 From: Kara D Date: Sat, 19 Feb 2022 16:55:29 -0700 Subject: [PATCH] Fix follower recursion --- Content.Shared/Follower/Components/FollowedComponent.cs | 3 +++ Content.Shared/Follower/Components/FollowerComponent.cs | 2 ++ Content.Shared/Follower/FollowerSystem.cs | 7 ++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Follower/Components/FollowedComponent.cs b/Content.Shared/Follower/Components/FollowedComponent.cs index 6a3acead70..d8b2dd4d7f 100644 --- a/Content.Shared/Follower/Components/FollowedComponent.cs +++ b/Content.Shared/Follower/Components/FollowedComponent.cs @@ -1,13 +1,16 @@ using System.Collections.Generic; using Robust.Shared.Analyzers; using Robust.Shared.GameObjects; +using Robust.Shared.GameStates; namespace Content.Shared.Follower.Components; +// TODO properly network this and followercomp. /// /// Attached to entities that are currently being followed by a ghost. /// [RegisterComponent, Friend(typeof(FollowerSystem))] +[NetworkedComponent] public sealed class FollowedComponent : Component { public HashSet Following = new(); diff --git a/Content.Shared/Follower/Components/FollowerComponent.cs b/Content.Shared/Follower/Components/FollowerComponent.cs index 60174be561..9eddb86986 100644 --- a/Content.Shared/Follower/Components/FollowerComponent.cs +++ b/Content.Shared/Follower/Components/FollowerComponent.cs @@ -1,10 +1,12 @@ using Robust.Shared.Analyzers; using Robust.Shared.GameObjects; +using Robust.Shared.GameStates; namespace Content.Shared.Follower.Components; [RegisterComponent] [Friend(typeof(FollowerSystem))] +[NetworkedComponent] public sealed class FollowerComponent : Component { public EntityUid Following; diff --git a/Content.Shared/Follower/FollowerSystem.cs b/Content.Shared/Follower/FollowerSystem.cs index c7ae5d4e1d..0d358aac00 100644 --- a/Content.Shared/Follower/FollowerSystem.cs +++ b/Content.Shared/Follower/FollowerSystem.cs @@ -63,11 +63,16 @@ public sealed class FollowerSystem : EntitySystem /// The entity to be followed public void StartFollowingEntity(EntityUid follower, EntityUid entity) { + // No recursion for you + if (Transform(entity).ParentUid == follower) + return; + var followerComp = EnsureComp(follower); followerComp.Following = entity; var followedComp = EnsureComp(entity); - followedComp.Following.Add(follower); + if (!followedComp.Following.Add(follower)) + return; var xform = Transform(follower); xform.AttachParent(entity);