TeslaCoilSystem.cs 930 B

123456789101112131415161718192021222324252627282930
  1. using Content.Server.Power.Components;
  2. using Content.Server.Power.EntitySystems;
  3. using Content.Server.Tesla.Components;
  4. using Content.Server.Lightning;
  5. namespace Content.Server.Tesla.EntitySystems;
  6. /// <summary>
  7. /// Generates electricity from lightning bolts
  8. /// </summary>
  9. public sealed class TeslaCoilSystem : EntitySystem
  10. {
  11. [Dependency] private readonly BatterySystem _battery = default!;
  12. public override void Initialize()
  13. {
  14. base.Initialize();
  15. SubscribeLocalEvent<TeslaCoilComponent, HitByLightningEvent>(OnHitByLightning);
  16. }
  17. //When struck by lightning, charge the internal battery
  18. private void OnHitByLightning(Entity<TeslaCoilComponent> coil, ref HitByLightningEvent args)
  19. {
  20. if (TryComp<BatteryComponent>(coil, out var batteryComponent))
  21. {
  22. _battery.SetCharge(coil, batteryComponent.CurrentCharge + coil.Comp.ChargeFromLightning);
  23. }
  24. }
  25. }