FaxecuteSystem.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Content.Shared.Damage;
  2. using Content.Shared.Popups;
  3. using Content.Shared.Fax.Components;
  4. namespace Content.Shared.Fax.Systems;
  5. /// <summary>
  6. /// System for handling execution of a mob within fax when copy or send attempt is made.
  7. /// </summary>
  8. public sealed class FaxecuteSystem : EntitySystem
  9. {
  10. [Dependency] private readonly DamageableSystem _damageable = default!;
  11. [Dependency] private readonly SharedPopupSystem _popupSystem = default!;
  12. public override void Initialize()
  13. {
  14. base.Initialize();
  15. }
  16. public void Faxecute(EntityUid uid, FaxMachineComponent component, DamageOnFaxecuteEvent? args = null)
  17. {
  18. var sendEntity = component.PaperSlot.Item;
  19. if (sendEntity == null)
  20. return;
  21. if (!TryComp<FaxecuteComponent>(uid, out var faxecute))
  22. return;
  23. var damageSpec = faxecute.Damage;
  24. _damageable.TryChangeDamage(sendEntity, damageSpec);
  25. _popupSystem.PopupEntity(Loc.GetString("fax-machine-popup-error", ("target", uid)), uid, PopupType.LargeCaution);
  26. return;
  27. }
  28. }