Fixes ghost pointing.

- Ensures VisibilityComponent on entities with GhostComponent, sets visibility layer correctly.
- Fixes wrong bitflag operation comparison
This commit is contained in:
Vera Aguilera Puerto
2021-09-30 13:57:01 +02:00
parent 3e17a298b2
commit fcb23627eb
3 changed files with 9 additions and 6 deletions

View File

@@ -59,11 +59,10 @@ namespace Content.Server.Ghost
private void OnGhostStartup(EntityUid uid, GhostComponent component, ComponentStartup args) private void OnGhostStartup(EntityUid uid, GhostComponent component, ComponentStartup args)
{ {
// Allow this entity to be seen by other ghosts. // 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.Ghost;
visibility.Layer &= ~(int) VisibilityFlags.Normal; visibility.Layer &= ~(int) VisibilityFlags.Normal;
}
if (component.Owner.TryGetComponent(out EyeComponent? eye)) if (component.Owner.TryGetComponent(out EyeComponent? eye))
{ {

View File

@@ -136,7 +136,7 @@ namespace Content.Server.Pointing.EntitySystems
{ {
var ent = playerSession.ContentData()?.Mind?.CurrentEntity; 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 false;
return ent.Transform.MapPosition.InRange(player.Transform.MapPosition, PointingRange); return ent.Transform.MapPosition.InRange(player.Transform.MapPosition, PointingRange);

View File

@@ -0,0 +1,4 @@
author: Zumorica
changes:
- type: Fix
message: Fixes ghost pointing arrows being seen by mere mortals.