HeartSystem.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // SPDX-FileCopyrightText: 2024 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
  2. // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
  3. //
  4. // SPDX-License-Identifier: AGPL-3.0-or-later
  5. using Content.Shared.Body.Events;
  6. using Content.Server.Body.Components;
  7. using Content.Shared.Body.Systems;
  8. using Content.Shared._Shitmed.Body.Organ;
  9. using Content.Server._Shitmed.DelayedDeath;
  10. namespace Content.Server._Shitmed.Body.Organ;
  11. public sealed class HeartSystem : EntitySystem
  12. {
  13. [Dependency] private readonly SharedBodySystem _bodySystem = default!;
  14. public override void Initialize()
  15. {
  16. base.Initialize();
  17. SubscribeLocalEvent<HeartComponent, OrganAddedToBodyEvent>(HandleAddition);
  18. SubscribeLocalEvent<HeartComponent, OrganRemovedFromBodyEvent>(HandleRemoval);
  19. }
  20. private void HandleRemoval(EntityUid uid, HeartComponent _, ref OrganRemovedFromBodyEvent args)
  21. {
  22. if (TerminatingOrDeleted(uid) || TerminatingOrDeleted(args.OldBody))
  23. return;
  24. // TODO: Add some form of very violent bleeding effect.
  25. EnsureComp<DelayedDeathComponent>(args.OldBody);
  26. }
  27. private void HandleAddition(EntityUid uid, HeartComponent _, ref OrganAddedToBodyEvent args)
  28. {
  29. if (TerminatingOrDeleted(uid) || TerminatingOrDeleted(args.Body))
  30. return;
  31. if (_bodySystem.TryGetBodyOrganEntityComps<BrainComponent>(args.Body, out var _))
  32. RemComp<DelayedDeathComponent>(args.Body);
  33. }
  34. // Shitmed-End
  35. }