6
StarHorizon_Public/Content.Server/_DV/RoundEnd/RoundEndSystem.Pacified.cs
2025-08-05 10:00:54 +03:00

62 lines
1.9 KiB
C#

using Content.Server.Explosion.Components;
using Content.Server.GameTicking;
using Content.Shared.CombatMode;
using Content.Shared.CombatMode.Pacification;
using Content.Shared._DV.CCVars;
using Content.Shared.Explosion.Components;
using Content.Shared.Flash.Components;
using Content.Shared.Store.Components;
using Robust.Shared.Configuration;
namespace Content.Server._DV.RoundEnd;
public sealed class PacifiedRoundEnd : EntitySystem
{
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
private bool _enabled;
public override void Initialize()
{
base.Initialize();
_configurationManager.OnValueChanged(DCCVars.RoundEndPacifist, v => _enabled = v, true);
SubscribeLocalEvent<RoundEndTextAppendEvent>(OnRoundEnded);
}
private void OnRoundEnded(RoundEndTextAppendEvent ev)
{
if (!_enabled)
return;
var harmQuery = EntityQueryEnumerator<CombatModeComponent>();
while (harmQuery.MoveNext(out var uid, out _))
{
EnsureComp<PacifiedComponent>(uid);
}
var explosiveQuery = EntityQueryEnumerator<ExplosiveComponent>();
while (explosiveQuery.MoveNext(out var uid, out _))
{
RemComp<ExplosiveComponent>(uid);
}
var grenadeQuery = EntityQueryEnumerator<OnUseTimerTriggerComponent>();
while (grenadeQuery.MoveNext(out var uid, out _))
{
RemComp<OnUseTimerTriggerComponent>(uid);
}
var flashQuery = EntityQueryEnumerator<FlashComponent>();
while (flashQuery.MoveNext(out var uid, out _))
{
RemComp<FlashComponent>(uid);
}
var uplinkQuery = EntityQueryEnumerator<StoreComponent>();
while (uplinkQuery.MoveNext(out var uid, out _))
{
RemComp<StoreComponent>(uid);
}
}
}