using Content.Shared.Popups; using Content.Shared.Xenoarchaeology.Artifact; using Content.Shared.Xenoarchaeology.Artifact.Components; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects; /// /// Restores durability on this artifact /// /// public sealed partial class ArtifactDurabilityRestoreEntityEffectsSystem : EntityEffectSystem { [Dependency] private readonly SharedXenoArtifactSystem _xenoArtifact = default!; protected override void Effect(Entity entity, ref EntityEffectEvent args) { var durability = args.Effect.RestoredDurability; foreach (var node in _xenoArtifact.GetActiveNodes(entity)) { _xenoArtifact.AdjustNodeDurability(node.Owner, durability); } } } /// /// Unlocks a node on this artifact. Only works this effect hasn't been applied before. /// /// public sealed partial class ArtifactUnlockEntityEffectSystem : EntityEffectSystem { [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedXenoArtifactSystem _xenoArtifact = default!; protected override void Effect(Entity entity, ref EntityEffectEvent args) { if (EnsureComp(entity, out var unlocking)) { if (unlocking.ArtifexiumApplied) return; _popup.PopupEntity(Loc.GetString("artifact-activation-artifexium"), entity, PopupType.Medium); } else { _xenoArtifact.TriggerXenoArtifact(entity, null, force: true); } _xenoArtifact.SetArtifexiumApplied((entity, unlocking), true); } } /// public sealed partial class ArtifactDurabilityRestore : EntityEffectBase { /// /// Amount of durability that will be restored per effect interaction. /// [DataField] public int RestoredDurability = 1; public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) => Loc.GetString("entity-effect-guidebook-artifact-durability-restore", ("restored", RestoredDurability)); } /// public sealed partial class ArtifactUnlock : EntityEffectBase { public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) => Loc.GetString("entity-effect-guidebook-artifact-unlock", ("chance", Probability)); }