Files
wwdpublic/Content.Server/_Shitmed/Cybernetics/CyberneticsSystem.cs
gluesniffler 2a33691a1c Ports Shitmed Updates From Goob (#1387)
Lots of stuff. Also moved everything I could to the _Shitmed namespace
as I do in Goob. Will make future ports way faster

# Changelog
🆑 Mocho
- add: Added some fun organs and other thingies, check out the Goob PRs
if you want more details.
- fix: Fixed tons of issues with shitmed. Too many for the changelog in
fact.

(cherry picked from commit 3c9db94102cb25b28a83d51ac8d659fa31fe7d12)
2025-01-13 23:01:51 +03:00

56 lines
1.8 KiB
C#

using Content.Server.Emp;
using Content.Shared.Body.Part;
using Content.Shared.Body.Organ;
using Content.Shared._Shitmed.Body.Organ;
using Content.Shared._Shitmed.Body.Events;
using Content.Shared._Shitmed.Cybernetics;
namespace Content.Server._Shitmed.Cybernetics;
internal sealed class CyberneticsSystem : EntitySystem
{
public override void Initialize()
{
SubscribeLocalEvent<CyberneticsComponent, EmpPulseEvent>(OnEmpPulse);
SubscribeLocalEvent<CyberneticsComponent, EmpDisabledRemoved>(OnEmpDisabledRemoved);
}
private void OnEmpPulse(Entity<CyberneticsComponent> cyberEnt, ref EmpPulseEvent ev)
{
if (!cyberEnt.Comp.Disabled)
{
ev.Affected = true;
ev.Disabled = true;
cyberEnt.Comp.Disabled = true;
if (HasComp<OrganComponent>(cyberEnt))
{
var disableEvent = new OrganEnableChangedEvent(false);
RaiseLocalEvent(cyberEnt, ref disableEvent);
}
else if (HasComp<BodyPartComponent>(cyberEnt))
{
var disableEvent = new BodyPartEnableChangedEvent(false);
RaiseLocalEvent(cyberEnt, ref disableEvent);
}
}
}
private void OnEmpDisabledRemoved(Entity<CyberneticsComponent> cyberEnt, ref EmpDisabledRemoved ev)
{
if (cyberEnt.Comp.Disabled)
{
cyberEnt.Comp.Disabled = false;
if (HasComp<OrganComponent>(cyberEnt))
{
var enableEvent = new OrganEnableChangedEvent(true);
RaiseLocalEvent(cyberEnt, ref enableEvent);
}
else if (HasComp<BodyPartComponent>(cyberEnt))
{
var enableEvent = new BodyPartEnableChangedEvent(true);
RaiseLocalEvent(cyberEnt, ref enableEvent);
}
}
}
}