diff --git a/Content.Server/_Impstation/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactExpressionTriggerComponent.cs b/Content.Server/_Impstation/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactExpressionTriggerComponent.cs
new file mode 100644
index 000000000000..e81e0357e2e1
--- /dev/null
+++ b/Content.Server/_Impstation/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactExpressionTriggerComponent.cs
@@ -0,0 +1,14 @@
+namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components;
+
+///
+/// Triggers when a nearby entity emotes
+///
+[RegisterComponent]
+public sealed partial class ArtifactExpressionTriggerComponent : Component
+{
+ ///
+ /// How close to the emote event the artifact has to be for it to trigger.
+ ///
+ [DataField("range")]
+ public float Range = 2f;
+}
diff --git a/Content.Server/_Impstation/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactExpressionTriggerSystem.cs b/Content.Server/_Impstation/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactExpressionTriggerSystem.cs
new file mode 100644
index 000000000000..bb2a5b91a5d2
--- /dev/null
+++ b/Content.Server/_Impstation/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactExpressionTriggerSystem.cs
@@ -0,0 +1,38 @@
+using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components;
+using Content.Server.Chat.Systems;
+namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems;
+
+public sealed class ArtifacExpressionTriggerSystem : EntitySystem
+{
+ [Dependency] private readonly ArtifactSystem _artifact = default!;
+
+ ///
+ public override void Initialize()
+ {
+ SubscribeLocalEvent(OnEmote);
+ }
+
+ private void OnEmote(EntityUid emoter, TransformComponent component, EmoteEvent args)
+ {
+ var emoterXform = Transform(emoter);
+
+ var toActivate = new List>();
+ var query = EntityQueryEnumerator();
+
+ while (query.MoveNext(out var uid, out var trigger, out var xform))
+ {
+ if (!emoterXform.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);
+ }
+ }
+}
diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl
index e7ad24347bb2..078a66e59390 100644
--- a/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl
+++ b/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl
@@ -45,6 +45,7 @@ artifact-trigger-hint-examine = Examination
artifact-trigger-hint-resurrection = Resurrection
artifact-trigger-hint-medical = Therapeutic chemicals
artifact-trigger-hint-funny = Slapstick comedy
+artifact-trigger-hint-expression = Expressiveness
artifact-trigger-hint-drink-classic-martini = Beverage "Classically shaken"
artifact-trigger-hint-drink-caffine = Beverage "Caffinated"
diff --git a/Resources/Prototypes/_Impstation/XenoArch/artifact_triggers.yml b/Resources/Prototypes/_Impstation/XenoArch/artifact_triggers.yml
index 77a1f98bd774..aecbf471b79d 100644
--- a/Resources/Prototypes/_Impstation/XenoArch/artifact_triggers.yml
+++ b/Resources/Prototypes/_Impstation/XenoArch/artifact_triggers.yml
@@ -1,3 +1,12 @@
+- type: artifactTrigger
+ id: TriggerExpression
+ targetDepth: 2
+ triggerProb: 0.5
+ triggerHint: artifact-trigger-hint-expression
+ components:
+ - type: ArtifactExpressionTrigger
+ range: 4
+
- type: artifactTrigger
id: TriggerResurrection
targetDepth: 4
@@ -22,6 +31,15 @@
components:
- type: ArtifactStunTrigger
+- type: artifactTrigger
+ id: TriggerExpressionDeep
+ targetDepth: 4
+ triggerProb: 0.7
+ triggerHint: artifact-trigger-hint-expression
+ components:
+ - type: ArtifactExpressionTrigger
+ range: 3
+
# Separate drinks into twenty chunks. one chunk has a total probability of 1/20, so all drinks together have same prob as normal trigger
# Some Chunks have multiple drinks (such as the tricky drink chunk)
@@ -388,13 +406,6 @@
- !type:ActivateArtifact
# Below exist to pad out the depth 4 triggers. Can remove some of those when we get more triggers implemented
-- type: artifactTrigger
- id: TriggerMusicDeep
- targetDepth: 4
- triggerHint: artifact-trigger-hint-music
- components:
- - type: ArtifactMusicTrigger
-
- type: artifactTrigger
id: TriggerExamineDeep
targetDepth: 4