Remove Aghosts from "Warp to Most Followed" (#41448)

* init

* review
This commit is contained in:
ScarKy0
2025-11-16 00:18:11 +01:00
committed by GitHub
parent 409ef02871
commit cee38b7bfe
4 changed files with 15 additions and 3 deletions

View File

@@ -333,7 +333,8 @@ namespace Content.Server.Ghost
if (_followerSystem.GetMostGhostFollowed() is not {} target)
return;
WarpTo(uid, target);
// If there is a ghostnado happening you almost definitely wanna join it, so we automatically follow instead of just warping.
_followerSystem.StartFollowingEntity(uid, target);
}
private void WarpTo(EntityUid uid, EntityUid target)

View File

@@ -35,6 +35,7 @@ public sealed class FollowerSystem : EntitySystem
[Dependency] private readonly ISharedAdminManager _adminManager = default!;
private static readonly ProtoId<TagPrototype> ForceableFollowTag = "ForceableFollow";
private static readonly ProtoId<TagPrototype> PreventGhostnadoWarpTag = "NotGhostnadoWarpable";
public override void Initialize()
{
@@ -320,11 +321,17 @@ public sealed class FollowerSystem : EntitySystem
var query = EntityQueryEnumerator<FollowerComponent, GhostComponent, ActorComponent>();
while (query.MoveNext(out _, out var follower, out _, out var actor))
{
// Exclude admins
// Don't count admin followers so that players cannot notice if admins are in stealth mode and following someone.
if (_adminManager.IsAdmin(actor.PlayerSession))
continue;
var followed = follower.Following;
// If the followed entity cannot be ghostnado'd to, we don't count it.
// Used for making admins not warpable to, but IsAdmin isn't used for cases where the admin wants to be followed, for example during events.
if (_tagSystem.HasTag(followed, PreventGhostnadoWarpTag))
continue;
// Add new entry or increment existing
followedEnts.TryGetValue(followed, out var currentValue);
followedEnts[followed] = currentValue + 1;

View File

@@ -16,6 +16,7 @@
- SilentStorageUser
- PreventAccessLogging
- AllowBiomeLoading
- NotGhostnadoWarpable
- type: Input
context: "aghost"
- type: Ghost

View File

@@ -987,6 +987,9 @@
- type: Tag
id: NoConsoleSound # Blacklist on BaseComputer, StationMap. Tagged entity will not make sound when opening the UI.
- type: Tag
id: NotGhostnadoWarpable # Prevents the entity from being selected via "Warp to most followed" ghost warp
- type: Tag
id: NozzleBackTank # Used by WeaponSprayNozzle to find a tagged entity for supplying ammo.