TemporaryBlindnessSystem.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Content.Shared.Eye.Blinding.Components;
  2. using Content.Shared.StatusEffect;
  3. namespace Content.Shared.Eye.Blinding.Systems;
  4. public sealed class TemporaryBlindnessSystem : EntitySystem
  5. {
  6. [ValidatePrototypeId<StatusEffectPrototype>]
  7. public const string BlindingStatusEffect = "TemporaryBlindness";
  8. [Dependency] private readonly BlindableSystem _blindableSystem = default!;
  9. public override void Initialize()
  10. {
  11. base.Initialize();
  12. SubscribeLocalEvent<TemporaryBlindnessComponent, ComponentStartup>(OnStartup);
  13. SubscribeLocalEvent<TemporaryBlindnessComponent, ComponentShutdown>(OnShutdown);
  14. SubscribeLocalEvent<TemporaryBlindnessComponent, CanSeeAttemptEvent>(OnBlindTrySee);
  15. }
  16. private void OnStartup(EntityUid uid, TemporaryBlindnessComponent component, ComponentStartup args)
  17. {
  18. _blindableSystem.UpdateIsBlind(uid);
  19. }
  20. private void OnShutdown(EntityUid uid, TemporaryBlindnessComponent component, ComponentShutdown args)
  21. {
  22. _blindableSystem.UpdateIsBlind(uid);
  23. }
  24. private void OnBlindTrySee(EntityUid uid, TemporaryBlindnessComponent component, CanSeeAttemptEvent args)
  25. {
  26. if (component.LifeStage <= ComponentLifeStage.Running)
  27. args.Cancel();
  28. }
  29. }