diff --git a/Content.Shared/Traits/Assorted/Components/NormalVisionComponent.cs b/Content.Shared/Traits/Assorted/Components/NormalVisionComponent.cs
new file mode 100644
index 00000000000..442bb6f0084
--- /dev/null
+++ b/Content.Shared/Traits/Assorted/Components/NormalVisionComponent.cs
@@ -0,0 +1,12 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Traits.Assorted.Components;
+
+///
+/// This is used for removing species specific vision traits
+///
+[RegisterComponent, NetworkedComponent]
+public sealed partial class NormalVisionComponent : Component
+{
+}
+
diff --git a/Content.Shared/Traits/Assorted/Systems/NormalVisionSystem.cs b/Content.Shared/Traits/Assorted/Systems/NormalVisionSystem.cs
new file mode 100644
index 00000000000..ee25bf364b9
--- /dev/null
+++ b/Content.Shared/Traits/Assorted/Systems/NormalVisionSystem.cs
@@ -0,0 +1,23 @@
+using Content.Shared.Abilities;
+using Content.Shared.Traits.Assorted.Components;
+
+namespace Content.Shared.Traits.Assorted.Systems;
+
+///
+/// This handles removing species-specific vision traits.
+///
+public sealed class NormalVisionSystem : EntitySystem
+{
+ ///
+ public override void Initialize()
+ {
+ SubscribeLocalEvent(OnStartup);
+ }
+
+
+ private void OnStartup(EntityUid uid, NormalVisionComponent component, ComponentInit args)
+ {
+ RemComp(uid);
+ RemComp(uid);
+ }
+}
diff --git a/Resources/Locale/en-US/customization/character-requirements.ftl b/Resources/Locale/en-US/customization/character-requirements.ftl
index b073bdb773f..e7bcf0669f7 100644
--- a/Resources/Locale/en-US/customization/character-requirements.ftl
+++ b/Resources/Locale/en-US/customization/character-requirements.ftl
@@ -9,7 +9,7 @@ character-species-requirement = You must {$inverted ->
character-trait-requirement = You must {$inverted ->
[true] not have
*[other] have
-} the trait [color=lightblue]{$trait}[/color]
+} the trait [color=lightblue]{$traits}[/color]
character-backpack-type-requirement = You must {$inverted ->
[true] not use
*[other] use
diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl
index e9163bdb548..96478015085 100644
--- a/Resources/Locale/en-US/traits/traits.ftl
+++ b/Resources/Locale/en-US/traits/traits.ftl
@@ -31,3 +31,9 @@ trait-description-SocialAnxiety = You are anxious when you speak and stutter.
trait-name-Snoring = Snoring
trait-description-Snoring = You will snore while sleeping.
+
+trait-name-NormalVisionHarpy = Trichromat Modification
+trait-description-NormalVisionHarpy = Your eyes have been modified by means of advanced medicine to see in the standard colors of Red, Green, and Blue.
+
+trait-name-NormalVisionVulpkanin = Trichromat Modification
+trait-description-NormalVisionVulpkanin = Your eyes have been modified by means of advanced medicine to see in the standard colors of Red, Green, and Blue.
diff --git a/Resources/Prototypes/DeltaV/Traits/altvision.yml b/Resources/Prototypes/DeltaV/Traits/altvision.yml
index d1980bc23ad..1257c1eeb09 100644
--- a/Resources/Prototypes/DeltaV/Traits/altvision.yml
+++ b/Resources/Prototypes/DeltaV/Traits/altvision.yml
@@ -2,6 +2,17 @@
id: UltraVision
category: Visual
points: -1
+ requirements:
+ - !type:CharacterSpeciesRequirement
+ inverted: true
+ species: Vulpkanin
+ - !type:CharacterSpeciesRequirement
+ inverted: true
+ species: Harpy
+ - !type:CharacterTraitRequirement
+ inverted: true
+ traits:
+ - DogVision
components:
- type: UltraVision
@@ -9,5 +20,16 @@
id: DogVision
category: Visual
points: -1
+ requirements:
+ - !type:CharacterSpeciesRequirement
+ inverted: true
+ species: Vulpkanin
+ - !type:CharacterSpeciesRequirement
+ inverted: true
+ species: Harpy
+ - !type:CharacterTraitRequirement
+ inverted: true
+ traits:
+ - UltraVision
components:
- type: DogVision
diff --git a/Resources/Prototypes/Traits/neutral.yml b/Resources/Prototypes/Traits/neutral.yml
index 3a3dc943cd7..86e12d20b34 100644
--- a/Resources/Prototypes/Traits/neutral.yml
+++ b/Resources/Prototypes/Traits/neutral.yml
@@ -21,3 +21,23 @@
- type: MothAccent
- type: ReplacementAccent
accent: dwarf
+
+- type: trait
+ id: NormalVisionHarpy
+ category: Visual
+ points: -1
+ requirements:
+ - !type:CharacterSpeciesRequirement
+ species: Harpy
+ components:
+ - type: NormalVision
+
+- type: trait
+ id: NormalVisionVulpkanin
+ category: Visual
+ points: -1
+ requirements:
+ - !type:CharacterSpeciesRequirement
+ species: Vulpkanin
+ components:
+ - type: NormalVision