Fixes ghost pointing.
- Ensures VisibilityComponent on entities with GhostComponent, sets visibility layer correctly. - Fixes wrong bitflag operation comparison
This commit is contained in:
@@ -59,11 +59,10 @@ namespace Content.Server.Ghost
|
||||
private void OnGhostStartup(EntityUid uid, GhostComponent component, ComponentStartup args)
|
||||
{
|
||||
// Allow this entity to be seen by other ghosts.
|
||||
if (component.Owner.TryGetComponent(out VisibilityComponent? visibility))
|
||||
{
|
||||
var visibility = component.Owner.EnsureComponent<VisibilityComponent>();
|
||||
|
||||
visibility.Layer |= (int) VisibilityFlags.Ghost;
|
||||
visibility.Layer &= ~(int) VisibilityFlags.Normal;
|
||||
}
|
||||
|
||||
if (component.Owner.TryGetComponent(out EyeComponent? eye))
|
||||
{
|
||||
|
||||
@@ -136,7 +136,7 @@ namespace Content.Server.Pointing.EntitySystems
|
||||
{
|
||||
var ent = playerSession.ContentData()?.Mind?.CurrentEntity;
|
||||
|
||||
if (ent is null || (!ent.TryGetComponent<EyeComponent>(out var eyeComp) || (eyeComp.VisibilityMask & layer) != 0))
|
||||
if (ent is null || (!ent.TryGetComponent<EyeComponent>(out var eyeComp) || (eyeComp.VisibilityMask & layer) == 0))
|
||||
return false;
|
||||
|
||||
return ent.Transform.MapPosition.InRange(player.Transform.MapPosition, PointingRange);
|
||||
|
||||
4
Resources/Changelog/Parts/ghost.yml
Normal file
4
Resources/Changelog/Parts/ghost.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: Zumorica
|
||||
changes:
|
||||
- type: Fix
|
||||
message: Fixes ghost pointing arrows being seen by mere mortals.
|
||||
Reference in New Issue
Block a user