1
0

OnHitSystem.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
  2. // SPDX-FileCopyrightText: 2025 Piras314 <p1r4s@proton.me>
  3. // SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
  4. //
  5. // SPDX-License-Identifier: AGPL-3.0-or-later
  6. using Content.Shared._Shitmed.Medical.Surgery;
  7. using Content.Shared._Shitmed.OnHit;
  8. using Content.Shared.Actions;
  9. using Content.Shared.DoAfter;
  10. using Robust.Shared.Prototypes;
  11. using Content.Shared.Cuffs.Components;
  12. using Content.Shared.Damage.Components;
  13. using Content.Shared.Weapons.Melee.Events;
  14. namespace Content.Server._Shitmed.OnHit;
  15. public sealed partial class OnHitSystem : SharedOnHitSystem
  16. {
  17. public override void Initialize()
  18. {
  19. SubscribeLocalEvent<CuffsOnHitComponent, CuffsOnHitDoAfter>(OnCuffsOnHitDoAfter);
  20. base.Initialize();
  21. }
  22. private void OnCuffsOnHitDoAfter(Entity<CuffsOnHitComponent> ent, ref CuffsOnHitDoAfter args)
  23. {
  24. if (!args.Args.Target.HasValue || args.Handled || args.Cancelled) return;
  25. var user = args.Args.User;
  26. var target = args.Args.Target.Value;
  27. if (!TryComp<CuffableComponent>(target, out var cuffable) || cuffable.Container.Count != 0)
  28. return;
  29. args.Handled = true;
  30. var handcuffs = SpawnNextToOrDrop(ent.Comp.HandcuffPrototype, args.User);
  31. if (!_cuffs.TryAddNewCuffs(target, user, handcuffs, cuffable))
  32. QueueDel(handcuffs);
  33. }
  34. }