using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components;
using Content.Shared.Mobs;
namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems;
public sealed class ArtifactDeathTriggerSystem : EntitySystem
{
[Dependency] private readonly ArtifactSystem _artifact = default!;
///
public override void Initialize()
{
SubscribeLocalEvent(OnMobStateChanged);
}
private void OnMobStateChanged(MobStateChangedEvent ev)
{
if (ev.NewMobState != MobState.Dead)
return;
var deathXform = Transform(ev.Target);
var toActivate = new List>();
var query = EntityQueryEnumerator();
while (query.MoveNext(out var uid, out var trigger, out var xform))
{
if (!deathXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance))
continue;
if (distance > trigger.Range)
continue;
toActivate.Add((uid, trigger));
}
foreach (var a in toActivate)
{
_artifact.TryActivateArtifact(a);
}
}
}