GhettoSurgerySystem.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
  2. // SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com>
  3. // SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org>
  4. //
  5. // SPDX-License-Identifier: AGPL-3.0-or-later
  6. using Content.Server.Kitchen.Components;
  7. using Content.Shared._Shitmed.Medical.Surgery.Tools;
  8. using Robust.Shared.Audio;
  9. namespace Content.Server._Shitmed.Medical.Surgery;
  10. /// <summary>
  11. /// Makes all sharp things usable for incisions and sawing through bones, though worse than any other kind of ghetto analogue.
  12. /// </summary>
  13. public sealed partial class GhettoSurgerySystem : EntitySystem
  14. {
  15. public override void Initialize()
  16. {
  17. base.Initialize();
  18. SubscribeLocalEvent<SharpComponent, MapInitEvent>(OnSharpInit);
  19. SubscribeLocalEvent<SharpComponent, ComponentShutdown>(OnSharpShutdown);
  20. }
  21. private void OnSharpInit(Entity<SharpComponent> ent, ref MapInitEvent args)
  22. {
  23. if (EnsureComp<SurgeryToolComponent>(ent, out var tool))
  24. {
  25. ent.Comp.HadSurgeryTool = true;
  26. }
  27. else
  28. {
  29. tool.StartSound = new SoundPathSpecifier("/Audio/_Shitmed/Medical/Surgery/scalpel1.ogg");
  30. tool.EndSound = new SoundPathSpecifier("/Audio/_Shitmed/Medical/Surgery/scalpel2.ogg");
  31. Dirty(ent.Owner, tool);
  32. }
  33. if (EnsureComp<ScalpelComponent>(ent, out var scalpel))
  34. {
  35. ent.Comp.HadScalpel = true;
  36. }
  37. else
  38. {
  39. scalpel.Speed = 0.3f;
  40. Dirty(ent.Owner, scalpel);
  41. }
  42. if (EnsureComp<BoneSawComponent>(ent, out var saw))
  43. {
  44. ent.Comp.HadBoneSaw = true;
  45. }
  46. else
  47. {
  48. saw.Speed = 0.2f;
  49. Dirty(ent.Owner, saw);
  50. }
  51. }
  52. private void OnSharpShutdown(Entity<SharpComponent> ent, ref ComponentShutdown args)
  53. {
  54. if (!ent.Comp.HadSurgeryTool)
  55. RemComp<SurgeryToolComponent>(ent);
  56. if (!ent.Comp.HadScalpel)
  57. RemComp<ScalpelComponent>(ent);
  58. if (!ent.Comp.HadBoneSaw)
  59. RemComp<BoneSawComponent>(ent);
  60. }
  61. }