2024-06-14 23:43:23 -04:00
|
|
|
using Content.Shared.Atmos.Components;
|
2023-08-04 14:53:07 +10:00
|
|
|
using Content.Shared.Damage.Components;
|
2023-03-23 11:57:15 -07:00
|
|
|
using Content.Shared.Damage.Systems;
|
2020-11-22 04:45:15 +01:00
|
|
|
|
2023-08-04 14:53:07 +10:00
|
|
|
namespace Content.Server.Damage.Systems;
|
|
|
|
|
|
|
|
|
|
public sealed class GodmodeSystem : SharedGodmodeSystem
|
2020-11-22 04:45:15 +01:00
|
|
|
{
|
2023-08-04 14:53:07 +10:00
|
|
|
public override void EnableGodmode(EntityUid uid, GodmodeComponent? godmode = null)
|
2020-11-22 04:45:15 +01:00
|
|
|
{
|
2023-08-04 14:53:07 +10:00
|
|
|
godmode ??= EnsureComp<GodmodeComponent>(uid);
|
2020-11-22 04:45:15 +01:00
|
|
|
|
2023-08-04 14:53:07 +10:00
|
|
|
base.EnableGodmode(uid, godmode);
|
2023-03-23 11:57:15 -07:00
|
|
|
|
2023-08-04 14:53:07 +10:00
|
|
|
if (TryComp<MovedByPressureComponent>(uid, out var moved))
|
2023-03-23 11:57:15 -07:00
|
|
|
{
|
2023-08-04 14:53:07 +10:00
|
|
|
godmode.WasMovedByPressure = moved.Enabled;
|
|
|
|
|
moved.Enabled = false;
|
2023-03-23 11:57:15 -07:00
|
|
|
}
|
2023-08-04 14:53:07 +10:00
|
|
|
}
|
2020-11-22 04:45:15 +01:00
|
|
|
|
2023-08-04 14:53:07 +10:00
|
|
|
public override void DisableGodmode(EntityUid uid, GodmodeComponent? godmode = null)
|
|
|
|
|
{
|
|
|
|
|
if (!Resolve(uid, ref godmode, false))
|
|
|
|
|
return;
|
2020-11-22 04:45:15 +01:00
|
|
|
|
2023-08-04 14:53:07 +10:00
|
|
|
base.DisableGodmode(uid, godmode);
|
2020-11-22 04:45:15 +01:00
|
|
|
|
2023-08-04 14:53:07 +10:00
|
|
|
if (godmode.Deleted)
|
|
|
|
|
return;
|
2023-03-29 01:59:59 +02:00
|
|
|
|
2023-08-04 14:53:07 +10:00
|
|
|
if (TryComp<MovedByPressureComponent>(uid, out var moved))
|
2020-11-22 04:45:15 +01:00
|
|
|
{
|
2023-08-04 14:53:07 +10:00
|
|
|
moved.Enabled = godmode.WasMovedByPressure;
|
2020-11-22 04:45:15 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|