using Content.Server.Xenoarchaeology.XenoArtifacts.Events; using Content.Shared.Item; using Content.Shared.Xenoarchaeology.XenoArtifacts; using Robust.Server.GameObjects; using Robust.Shared.Random; using Robust.Shared.Timing; namespace Content.Server.Xenoarchaeology.XenoArtifacts; public sealed class RandomArtifactSpriteSystem : EntitySystem { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IGameTiming _time = default!; [Dependency] private readonly AppearanceSystem _appearance = default!; [Dependency] private readonly SharedItemSystem _item = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnActivated); } public override void Update(float frameTime) { base.Update(frameTime); var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var component, out var appearance)) { if (component.ActivationStart == null) continue; var timeDif = _time.CurTime - component.ActivationStart.Value; if (timeDif.Seconds >= component.ActivationTime) { _appearance.SetData(uid, SharedArtifactsVisuals.IsActivated, false, appearance); component.ActivationStart = null; } } } private void OnMapInit(EntityUid uid, RandomArtifactSpriteComponent component, MapInitEvent args) { var randomSprite = _random.Next(component.MinSprite, component.MaxSprite + 1); _appearance.SetData(uid, SharedArtifactsVisuals.SpriteIndex, randomSprite); _item.SetHeldPrefix(uid, "ano" + randomSprite.ToString("D2")); //set item artifact inhands } private void OnActivated(EntityUid uid, RandomArtifactSpriteComponent component, ArtifactActivatedEvent args) { _appearance.SetData(uid, SharedArtifactsVisuals.IsActivated, true); component.ActivationStart = _time.CurTime; } }