SurgeryToolConditionsSystem.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // SPDX-FileCopyrightText: 2024 deltanedas <39013340+deltanedas@users.noreply.github.com>
  2. // SPDX-FileCopyrightText: 2024 deltanedas <@deltanedas:kde.org>
  3. // SPDX-FileCopyrightText: 2024 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
  4. // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
  5. //
  6. // SPDX-License-Identifier: AGPL-3.0-or-later
  7. using Content.Shared.Item.ItemToggle.Components;
  8. using Content.Shared.Popups;
  9. using Content.Shared.Smoking;
  10. using Content.Shared.Weapons.Ranged;
  11. using Content.Shared.Weapons.Ranged.Components;
  12. using Content.Shared.Weapons.Ranged.Events;
  13. namespace Content.Shared._Shitmed.Medical.Surgery.Tools;
  14. /// <summary>
  15. /// Prevents using esword or welder when off, laser when no charges.
  16. /// </summary>
  17. public sealed class SurgeryToolConditionsSystem : EntitySystem
  18. {
  19. [Dependency] private readonly SharedPopupSystem _popup = default!;
  20. public override void Initialize()
  21. {
  22. base.Initialize();
  23. SubscribeLocalEvent<ItemToggleComponent, SurgeryToolUsedEvent>(OnToggleUsed);
  24. SubscribeLocalEvent<GunComponent, SurgeryToolUsedEvent>(OnGunUsed);
  25. }
  26. private void OnToggleUsed(Entity<ItemToggleComponent> ent, ref SurgeryToolUsedEvent args)
  27. {
  28. if (ent.Comp.Activated)
  29. return;
  30. _popup.PopupEntity(Loc.GetString("surgery-tool-turn-on"), ent, args.User);
  31. args.Cancelled = true;
  32. }
  33. private void OnGunUsed(Entity<GunComponent> ent, ref SurgeryToolUsedEvent args)
  34. {
  35. var coords = Transform(args.User).Coordinates;
  36. var ev = new TakeAmmoEvent(1, new List<(EntityUid? Entity, IShootable Shootable)>(), coords, args.User);
  37. if (ev.Ammo.Count > 0)
  38. return;
  39. _popup.PopupEntity(Loc.GetString("surgery-tool-reload"), ent, args.User);
  40. args.Cancelled = true;
  41. }
  42. }