1
0

RadiationPulseSystem.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. using Content.Shared.Radiation.Components;
  2. using Robust.Shared.Spawners;
  3. using Robust.Shared.Timing;
  4. namespace Content.Shared.Radiation.Systems;
  5. public sealed class RadiationPulseSystem : EntitySystem
  6. {
  7. [Dependency] private readonly IGameTiming _timing = default!;
  8. public override void Initialize()
  9. {
  10. base.Initialize();
  11. SubscribeLocalEvent<RadiationPulseComponent, ComponentStartup>(OnStartup);
  12. }
  13. private void OnStartup(EntityUid uid, RadiationPulseComponent component, ComponentStartup args)
  14. {
  15. component.StartTime = _timing.RealTime;
  16. // try to get despawn time or keep default duration time
  17. if (TryComp<TimedDespawnComponent>(uid, out var despawn))
  18. {
  19. component.VisualDuration = despawn.Lifetime;
  20. }
  21. // try to get radiation range or keep default visual range
  22. if (TryComp<RadiationSourceComponent>(uid, out var radSource))
  23. {
  24. component.VisualRange = radSource.Intensity / radSource.Slope;
  25. }
  26. }
  27. }