using System.Linq; using Content.Shared.Ghost; using Content.Shared.Humanoid; using Content.Shared.StatusIcon.Components; using Content.Shared.Zombies; using Robust.Client.GameObjects; namespace Content.Client.Zombies; public sealed class ZombieSystem : EntitySystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnCanDisplayStatusIcons); SubscribeLocalEvent(OnCanDisplayStatusIcons); } private void OnStartup(EntityUid uid, ZombieComponent component, ComponentStartup args) { if (HasComp(uid)) return; if (!TryComp(uid, out var sprite)) return; for (var i = 0; i < sprite.AllLayers.Count(); i++) { sprite.LayerSetColor(i, component.SkinColor); } } /// /// Determines whether a player should be able to see the StatusIcon for zombies. /// private void OnCanDisplayStatusIcons(EntityUid uid, ZombieComponent component, ref CanDisplayStatusIconsEvent args) { if (HasComp(args.User) || HasComp(args.User) || HasComp(args.User)) return; if (component.IconVisibleToGhost && HasComp(args.User)) return; args.Cancelled = true; } private void OnCanDisplayStatusIcons(EntityUid uid, InitialInfectedComponent component, ref CanDisplayStatusIconsEvent args) { if (HasComp(args.User) && !HasComp(args.User)) return; if (component.IconVisibleToGhost && HasComp(args.User)) return; args.Cancelled = true; } }