diff --git a/Content.Server/Corvax/Speech/Components/GrowlingAccentComponent.cs b/Content.Server/Corvax/Speech/Components/GrowlingAccentComponent.cs
new file mode 100644
index 00000000000..2e273c82782
--- /dev/null
+++ b/Content.Server/Corvax/Speech/Components/GrowlingAccentComponent.cs
@@ -0,0 +1,10 @@
+namespace Content.Server.Corvax.Speech.Components;
+
+///
+/// Rrrr!
+///
+[RegisterComponent]
+public sealed partial class GrowlingAccentComponent : Component
+{
+
+}
diff --git a/Content.Server/Corvax/Speech/EntitySystems/GrowlingAccentSystem.cs b/Content.Server/Corvax/Speech/EntitySystems/GrowlingAccentSystem.cs
new file mode 100644
index 00000000000..0eec58762de
--- /dev/null
+++ b/Content.Server/Corvax/Speech/EntitySystems/GrowlingAccentSystem.cs
@@ -0,0 +1,50 @@
+using System.Text.RegularExpressions;
+using Content.Server.Corvax.Speech.Components;
+using Content.Server.Speech;
+using Robust.Shared.Random;
+
+namespace Content.Server.Corvax.Speech.EntitySystems;
+
+public sealed class GrowlingAccentSystem : EntitySystem
+{
+ [Dependency] private readonly IRobustRandom _random = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+ SubscribeLocalEvent(OnAccent);
+ }
+
+ private void OnAccent(EntityUid uid, GrowlingAccentComponent component, AccentGetEvent args)
+ {
+ var message = args.Message;
+
+ // r => rrr
+ message = Regex.Replace(
+ message,
+ "r+",
+ _random.Pick(new List { "rr", "rrr" })
+ );
+ // R => RRR
+ message = Regex.Replace(
+ message,
+ "R+",
+ _random.Pick(new List { "RR", "RRR" })
+ );
+
+ // р => ррр
+ message = Regex.Replace(
+ message,
+ "р+",
+ _random.Pick(new List { "рр", "ррр" })
+ );
+ // Р => РРР
+ message = Regex.Replace(
+ message,
+ "Р+",
+ _random.Pick(new List { "РР", "РРР" })
+ );
+
+ args.Message = message;
+ }
+}
diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/corvax/body/organs/vulpkanin.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/corvax/body/organs/vulpkanin.ftl
new file mode 100644
index 00000000000..0ceb733b428
--- /dev/null
+++ b/Resources/Locale/en-US/ss14-ru/prototypes/corvax/body/organs/vulpkanin.ftl
@@ -0,0 +1,2 @@
+ent-OrganVulpkaninStomach = { ent-OrganAnimalStomach }
+ .desc = { ent-OrganAnimalStomach.desc }
diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/corvax/body/parts/vulpkanin.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/corvax/body/parts/vulpkanin.ftl
new file mode 100644
index 00000000000..472c66036c7
--- /dev/null
+++ b/Resources/Locale/en-US/ss14-ru/prototypes/corvax/body/parts/vulpkanin.ftl
@@ -0,0 +1,22 @@
+ent-PartVulpkanin = vulpkanin body part
+ .desc = { ent-BasePart.desc }
+ent-TorsoVulpkanin = vulpkanin torso
+ .desc = { ent-PartVulpkanin.desc }
+ent-HeadVulpkanin = vulpkanin head
+ .desc = { ent-PartVulpkanin.desc }
+ent-LeftArmVulpkanin = left vulpkanin arm
+ .desc = { ent-PartVulpkanin.desc }
+ent-RightArmVulpkanin = right vulpkanin arm
+ .desc = { ent-PartVulpkanin.desc }
+ent-LeftHandVulpkanin = left vulpkanin hand
+ .desc = { ent-PartVulpkanin.desc }
+ent-RightHandVulpkanin = right vulpkanin hand
+ .desc = { ent-PartVulpkanin.desc }
+ent-LeftLegVulpkanin = left vulpkanin leg
+ .desc = { ent-PartVulpkanin.desc }
+ent-RightLegVulpkanin = right vulpkanin leg
+ .desc = { ent-PartVulpkanin.desc }
+ent-LeftFootVulpkanin = left vulpkanin foot
+ .desc = { ent-PartVulpkanin.desc }
+ent-RightFootVulpkanin = right vulpkanin foot
+ .desc = { ent-PartVulpkanin.desc }
diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl
new file mode 100644
index 00000000000..2462d20d658
--- /dev/null
+++ b/Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl
@@ -0,0 +1,2 @@
+ent-MobVulpkanin = Urist McVulp
+ .desc = { ent-BaseMobVulpkanin.desc }
diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/mobs/species/vulpkanin.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/mobs/species/vulpkanin.ftl
new file mode 100644
index 00000000000..5376ef826c8
--- /dev/null
+++ b/Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/mobs/species/vulpkanin.ftl
@@ -0,0 +1,4 @@
+ent-BaseMobVulpkanin = Urist McVulp
+ .desc = { ent-BaseMobOrganic.desc }
+ent-MobVulpkaninDummy = Urist McHands
+ .desc = A dummy vulpkanin meant to be used in character setup.
diff --git a/Resources/Locale/ru-RU/corvax/markings/vulpkanin.ftl b/Resources/Locale/ru-RU/corvax/markings/vulpkanin.ftl
new file mode 100644
index 00000000000..ec9617b88e5
--- /dev/null
+++ b/Resources/Locale/ru-RU/corvax/markings/vulpkanin.ftl
@@ -0,0 +1,14 @@
+marking-PawSocks-pawsocks = Paw socks
+marking-PawSocks = Paw socks
+marking-FoxTail-vulp_tail = Fox tail
+marking-FoxTail = Fox tail
+marking-FoxEar-vulp_ear = Fox ear (outer)
+marking-FoxEar-vulp_ear_inner = Fox ear (inner)
+marking-FoxEar = Fox ear (inner)
+marking-WolfTail-wolf_tail = Wolf tail (base)
+marking-WolfTail-wolf_tail_inner = Wolf tail (tip)
+marking-WolfTail = Wolf tail (tip)
+marking-FoxBelly-vulp_belly-torso = Fox belly
+marking-FoxBelly = Fox belly
+marking-FoxSnout-vulp_face = Fox snout
+marking-FoxSnout = Fox snout
diff --git a/Resources/Locale/ru-RU/corvax/species/species.ftl b/Resources/Locale/ru-RU/corvax/species/species.ftl
new file mode 100644
index 00000000000..5ec7d16784e
--- /dev/null
+++ b/Resources/Locale/ru-RU/corvax/species/species.ftl
@@ -0,0 +1 @@
+species-name-vulpkanin = Вульпканин
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/organs/vulpkanin.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/organs/vulpkanin.ftl
new file mode 100644
index 00000000000..0ceb733b428
--- /dev/null
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/organs/vulpkanin.ftl
@@ -0,0 +1,2 @@
+ent-OrganVulpkaninStomach = { ent-OrganAnimalStomach }
+ .desc = { ent-OrganAnimalStomach.desc }
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/parts/vulpkanin.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/parts/vulpkanin.ftl
new file mode 100644
index 00000000000..7227c866062
--- /dev/null
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/parts/vulpkanin.ftl
@@ -0,0 +1,22 @@
+ent-PartVulpkanin = vulpkanin body part
+ .desc = { ent-BasePart.desc }
+ent-TorsoVulpkanin = vulpkanin torso
+ .desc = { ent-PartVulpkanin.desc }
+ent-HeadVulpkanin = vulpkanin head
+ .desc = { ent-PartVulpkanin.desc }
+ent-LeftArmVulpkanin = left vulpkanin arm
+ .desc = { ent-PartVulpkanin.desc }
+ent-RightArmVulpkanin = right vulpkanin arm
+ .desc = { ent-PartVulpkanin.desc }
+ent-LeftHandVulpkanin = left vulpkanin hand
+ .desc = { ent-PartVulpkanin.desc }
+ent-RightHandVulpkanin = right vulpkanin hand
+ .desc = { ent-PartVulpkanin.desc }
+ent-LeftLegVulpkanin = left vulpkanin leg
+ .desc = { ent-PartVulpkanin.desc }
+ent-RightLegVulpkanin = right vulpkanin leg
+ .desc = { ent-PartVulpkanin.desc }
+ent-LeftFootVulpkanin = left vulpkanin foot
+ .desc = { ent-PartVulpkanin.desc }
+ent-RightFootVulpkanin = right vulpkanin foot
+ .desc = { ent-PartVulpkanin.desc }
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl
new file mode 100644
index 00000000000..2462d20d658
--- /dev/null
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl
@@ -0,0 +1,2 @@
+ent-MobVulpkanin = Urist McVulp
+ .desc = { ent-BaseMobVulpkanin.desc }
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/species/vulpkanin.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/species/vulpkanin.ftl
new file mode 100644
index 00000000000..5376ef826c8
--- /dev/null
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/species/vulpkanin.ftl
@@ -0,0 +1,4 @@
+ent-BaseMobVulpkanin = Urist McVulp
+ .desc = { ent-BaseMobOrganic.desc }
+ent-MobVulpkaninDummy = Urist McHands
+ .desc = A dummy vulpkanin meant to be used in character setup.
diff --git a/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml
new file mode 100644
index 00000000000..fc0d5003cb1
--- /dev/null
+++ b/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml
@@ -0,0 +1,7 @@
+- type: entity
+ id: OrganVulpkaninStomach
+ parent: OrganAnimalStomach
+ noSpawn: true
+ components:
+ - type: Stomach
+ maxVolume: 50
diff --git a/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml
new file mode 100644
index 00000000000..5dc4bcef418
--- /dev/null
+++ b/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml
@@ -0,0 +1,125 @@
+# TODO: Add descriptions (many)
+# TODO BODY: Part damage
+- type: entity
+ id: PartVulpkanin
+ parent: [BaseItem, BasePart]
+ name: "vulpkanin body part"
+ abstract: true
+ components:
+ - type: Extractable
+ juiceSolution:
+ reagents:
+ - ReagentId: Fat
+ Quantity: 3
+ - ReagentId: Blood
+ Quantity: 10
+
+- type: entity
+ id: TorsoVulpkanin
+ name: "vulpkanin torso"
+ parent: [PartVulpkanin, BaseTorso]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "torso_m"
+ - type: Extractable
+ juiceSolution:
+ reagents:
+ - ReagentId: Fat
+ Quantity: 10
+ - ReagentId: Blood
+ Quantity: 20
+
+- type: entity
+ id: HeadVulpkanin
+ name: "vulpkanin head"
+ parent: [PartVulpkanin, BaseHead]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "head_m"
+ - type: Extractable
+ juiceSolution:
+ reagents:
+ - ReagentId: Fat
+ Quantity: 5
+ - ReagentId: Blood
+ Quantity: 10
+
+- type: entity
+ id: LeftArmVulpkanin
+ name: "left vulpkanin arm"
+ parent: [PartVulpkanin, BaseLeftArm]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_arm"
+
+- type: entity
+ id: RightArmVulpkanin
+ name: "right vulpkanin arm"
+ parent: [PartVulpkanin, BaseRightArm]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_arm"
+
+- type: entity
+ id: LeftHandVulpkanin
+ name: "left vulpkanin hand"
+ parent: [PartVulpkanin, BaseLeftHand]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_hand"
+
+- type: entity
+ id: RightHandVulpkanin
+ name: "right vulpkanin hand"
+ parent: [PartVulpkanin, BaseRightHand]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_hand"
+
+- type: entity
+ id: LeftLegVulpkanin
+ name: "left vulpkanin leg"
+ parent: [PartVulpkanin, BaseLeftLeg]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_leg"
+ - type: MovementBodyPart
+ walkSpeed : 2.7
+ sprintSpeed : 4.5
+
+- type: entity
+ id: RightLegVulpkanin
+ name: "right vulpkanin leg"
+ parent: [PartVulpkanin, BaseRightLeg]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_leg"
+ - type: MovementBodyPart
+ walkSpeed : 2.7
+ sprintSpeed : 4.5
+
+- type: entity
+ id: LeftFootVulpkanin
+ name: "left vulpkanin foot"
+ parent: [PartVulpkanin, BaseLeftFoot]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_foot"
+
+- type: entity
+ id: RightFootVulpkanin
+ name: "right vulpkanin foot"
+ parent: [PartVulpkanin, BaseRightFoot]
+ components:
+ - type: Sprite
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_foot"
diff --git a/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml
new file mode 100644
index 00000000000..3d1552ac81f
--- /dev/null
+++ b/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml
@@ -0,0 +1,49 @@
+- type: body
+ name: "vulpkanin"
+ id: Vulpkanin
+ root: torso
+ slots:
+ head:
+ part: HeadVulpkanin
+ connections:
+ - torso
+ organs:
+ brain: OrganHumanBrain
+ eyes: OrganHumanEyes
+ torso:
+ part: TorsoVulpkanin
+ organs:
+ heart: OrganAnimalHeart
+ lungs: OrganHumanLungs
+ stomach: OrganVulpkaninStomach
+ liver: OrganAnimalLiver
+ kidneys: OrganHumanKidneys
+ connections:
+ - left arm
+ - right arm
+ - left leg
+ - right leg
+ right arm:
+ part: RightArmVulpkanin
+ connections:
+ - right hand
+ left arm:
+ part: LeftArmVulpkanin
+ connections:
+ - left hand
+ right hand:
+ part: RightHandVulpkanin
+ left hand:
+ part: LeftHandVulpkanin
+ right leg:
+ part: RightLegVulpkanin
+ connections:
+ - right foot
+ left leg:
+ part: LeftLegVulpkanin
+ connections:
+ - left foot
+ right foot:
+ part: RightFootVulpkanin
+ left foot:
+ part: LeftFootVulpkanin
diff --git a/Resources/Prototypes/Corvax/Damage/modifier_sets.yml b/Resources/Prototypes/Corvax/Damage/modifier_sets.yml
new file mode 100644
index 00000000000..e6ada079303
--- /dev/null
+++ b/Resources/Prototypes/Corvax/Damage/modifier_sets.yml
@@ -0,0 +1,5 @@
+- type: damageModifierSet
+ id: Vulpkanin # Because of fur is more flammable and more resistant to cold.
+ coefficients:
+ Cold: 0.5
+ Heat: 1.5
diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml
new file mode 100644
index 00000000000..a4959585715
--- /dev/null
+++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml
@@ -0,0 +1,57 @@
+- type: marking
+ id: PawSocks
+ markingCategory: Overlay
+ bodyPart: RFoot #highest possible layer
+ speciesRestriction: [Vulpkanin]
+ sprites:
+ - sprite: Corvax/Mobs/Customization/vulpkanin.rsi
+ state: pawsocks
+
+- type: marking
+ id: FoxTail
+ bodyPart: Tail
+ markingCategory: Tail
+ speciesRestriction: [Vulpkanin]
+ sprites:
+ - sprite: Corvax/Mobs/Customization/vulpkanin.rsi
+ state: vulp_tail
+
+- type: marking
+ id: FoxEar
+ bodyPart: HeadTop
+ markingCategory: HeadTop
+ speciesRestriction: [Vulpkanin]
+ sprites:
+ - sprite: Corvax/Mobs/Customization/vulpkanin.rsi
+ state: vulp_ear
+ - sprite: Corvax/Mobs/Customization/vulpkanin.rsi
+ state: vulp_ear_inner
+
+- type: marking
+ id: WolfTail
+ bodyPart: Tail
+ markingCategory: Tail
+ speciesRestriction: [Vulpkanin]
+ sprites:
+ - sprite: Corvax/Mobs/Customization/vulpkanin.rsi
+ state: wolf_tail
+ - sprite: Corvax/Mobs/Customization/vulpkanin.rsi
+ state: wolf_tail_inner
+
+- type: marking
+ id: FoxBelly
+ bodyPart: Chest
+ markingCategory: Chest
+ speciesRestriction: [Vulpkanin]
+ sprites:
+ - sprite: Corvax/Mobs/Customization/vulpkanin.rsi
+ state: vulp_belly-torso
+
+- type: marking
+ id: FoxSnout
+ bodyPart: Snout
+ markingCategory: Snout
+ speciesRestriction: [Vulpkanin]
+ sprites:
+ - sprite: Corvax/Mobs/Customization/vulpkanin.rsi
+ state: vulp_face
diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml
new file mode 100644
index 00000000000..e917e972700
--- /dev/null
+++ b/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml
@@ -0,0 +1,5 @@
+- type: entity
+ save: false
+ name: Urist McVulp
+ parent: [BaseMobVulpkanin, BaseMob]
+ id: MobVulpkanin
diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml
new file mode 100644
index 00000000000..865ea14c5b9
--- /dev/null
+++ b/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml
@@ -0,0 +1,66 @@
+- type: entity
+ save: false
+ name: Urist McVulp
+ parent: BaseMobSpeciesOrganic
+ id: BaseMobVulpkanin
+ abstract: true
+ components:
+ - type: HumanoidAppearance
+ species: Vulpkanin
+ - type: Hunger # on 1.5x more
+ thresholds:
+ Overfed: 250
+ Okay: 200
+ Peckish: 150
+ Starving: 100
+ Dead: 0
+ baseDecayRate: 0.02
+ - type: Thirst # on 1.5x more
+ thresholds:
+ OverHydrated: 650
+ Okay: 500
+ Thirsty: 350
+ Parched: 200
+ Dead: 0
+ baseDecayRate: 0.15
+ - type: Icon
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: full
+ - type: Body
+ prototype: Vulpkanin
+ requiredLegs: 2
+ - type: Inventory
+ speciesId: digi
+ - type: ContentEye
+ targetZoom: "1.125, 1.125"
+ maxZoom: "1.125, 1.125"
+ - type: GrowlingAccent
+ - type: MeleeWeapon
+ animation: WeaponArcClaw
+ soundHit:
+ collection: AlienClaw
+ damage:
+ types:
+ Slash: 5
+ - type: LightweightDrunk
+ - type: Damageable
+ damageContainer: Biological
+ damageModifierSet: Vulpkanin
+ - type: Respirator
+ damage:
+ types:
+ Asphyxiation: 2.0
+ damageRecovery:
+ types:
+ Asphyxiation: -2.0
+
+- type: entity
+ save: false
+ name: Urist McHands
+ parent: MobHumanDummy
+ id: MobVulpkaninDummy
+ noSpawn: true
+ description: A dummy vulpkanin meant to be used in character setup.
+ components:
+ - type: HumanoidAppearance
+ species: Vulpkanin
diff --git a/Resources/Prototypes/Corvax/Species/vulpkanin.yml b/Resources/Prototypes/Corvax/Species/vulpkanin.yml
new file mode 100644
index 00000000000..e302075534b
--- /dev/null
+++ b/Resources/Prototypes/Corvax/Species/vulpkanin.yml
@@ -0,0 +1,141 @@
+- type: species
+ id: Vulpkanin
+ name: species-name-vulpkanin
+ roundStart: true
+ sponsorOnly: true # Corvax-Sponsors
+ prototype: MobVulpkanin
+ sprites: MobVulpkaninSprites
+ defaultSkinTone: "#eb943d"
+ markingLimits: MobVulpkaninMarkingLimits
+ dollPrototype: MobVulpkaninDummy
+ skinColoration: Hues
+
+- type: speciesBaseSprites
+ id: MobVulpkaninSprites
+ sprites:
+ Head: MobVulpkaninHead
+ Hair: MobHumanoidAnyMarking
+ FacialHair: MobHumanoidAnyMarking
+ Snout: MobHumanoidAnyMarking
+ Chest: MobVulpkaninTorso
+ HeadTop: MobHumanoidAnyMarking
+ HeadSide: MobHumanoidAnyMarking
+ Tail: MobHumanoidAnyMarking
+ Eyes: MobHumanoidEyes
+ LArm: MobVulpkaninLArm
+ RArm: MobVulpkaninRArm
+ LHand: MobVulpkaninLHand
+ RHand: MobVulpkaninRHand
+ LLeg: MobVulpkaninLLeg
+ RLeg: MobVulpkaninRLeg
+ LFoot: MobVulpkaninLFoot
+ RFoot: MobVulpkaninRFoot
+
+- type: markingPoints
+ id: MobVulpkaninMarkingLimits
+ points:
+ Hair:
+ points: 1
+ required: false
+ FacialHair:
+ points: 0
+ required: false
+ Tail:
+ points: 1
+ required: true
+ defaultMarkings: [ FoxTail ]
+ Snout:
+ points: 1
+ required: true
+ defaultMarkings: [ FoxSnout ]
+ HeadTop:
+ points: 1
+ required: true
+ defaultMarkings: [ FoxEar ]
+ HeadSide:
+ points: 1
+ required: false
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninHead
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: head_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninHeadMale
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: head_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninHeadFemale
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: head_f
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninTorso
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: torso_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninTorsoMale
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: torso_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninTorsoFemale
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: torso_f
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninLLeg
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: l_leg
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninLHand
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: l_hand
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninLArm
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: l_arm
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninLFoot
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: l_foot
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninRLeg
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: r_leg
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninRHand
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: r_hand
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninRArm
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: r_arm
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninRFoot
+ baseSprite:
+ sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ state: r_foot
diff --git a/Resources/Prototypes/Species/species_weights.yml b/Resources/Prototypes/Species/species_weights.yml
index 63c196b95d6..f1b05d66e8d 100644
--- a/Resources/Prototypes/Species/species_weights.yml
+++ b/Resources/Prototypes/Species/species_weights.yml
@@ -5,4 +5,5 @@
Human: 5
Reptilian: 4
SlimePerson: 4
+ Vulpkanin: 4 # Corvax-Vulp
Diona: 2
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/meta.json b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/meta.json
new file mode 100644
index 00000000000..1a7ad688b67
--- /dev/null
+++ b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/meta.json
@@ -0,0 +1,47 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from Occulus-Eris (https://github.com/Occulus-Server/Occulus-Eris)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "square",
+ "directions": 4
+ },
+ {
+ "name": "pawsocks",
+ "directions": 4
+ },
+ {
+ "name": "vulp_tail",
+ "directions": 4
+ },
+ {
+ "name": "vulp_ear",
+ "directions": 4
+ },
+ {
+ "name": "vulp_ear_inner",
+ "directions": 4
+ },
+ {
+ "name": "vulp_belly-torso",
+ "directions": 4
+ },
+ {
+ "name": "vulp_face",
+ "directions": 4
+ },
+ {
+ "name": "wolf_tail",
+ "directions": 4
+ },
+ {
+ "name": "wolf_tail_inner",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/pawsocks.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/pawsocks.png
new file mode 100644
index 00000000000..4799bf8754a
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/pawsocks.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/square.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/square.png
new file mode 100644
index 00000000000..f26e37a0e00
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/square.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_belly-torso.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_belly-torso.png
new file mode 100644
index 00000000000..aff25f7cfda
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_belly-torso.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_ear.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_ear.png
new file mode 100644
index 00000000000..c664da43262
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_ear.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_ear_inner.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_ear_inner.png
new file mode 100644
index 00000000000..fc55d230ff9
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_ear_inner.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_face.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_face.png
new file mode 100644
index 00000000000..aa7b23854ec
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_face.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_tail.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_tail.png
new file mode 100644
index 00000000000..0eb65f6a6d7
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/vulp_tail.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/wolf_tail.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/wolf_tail.png
new file mode 100644
index 00000000000..b173b850a19
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/wolf_tail.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/wolf_tail_inner.png b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/wolf_tail_inner.png
new file mode 100644
index 00000000000..78396894b9d
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Customization/vulpkanin.rsi/wolf_tail_inner.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/full.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/full.png
new file mode 100644
index 00000000000..a7f93dcec94
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/full.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/head_f.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/head_f.png
new file mode 100644
index 00000000000..837139fd3f9
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/head_f.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/head_m.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/head_m.png
new file mode 100644
index 00000000000..2703b43d9ad
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/head_m.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_arm.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_arm.png
new file mode 100644
index 00000000000..dc2bcf3213f
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_arm.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_foot.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_foot.png
new file mode 100644
index 00000000000..df434338e2c
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_foot.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_hand.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_hand.png
new file mode 100644
index 00000000000..99cfa5f0147
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_hand.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_leg.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_leg.png
new file mode 100644
index 00000000000..3bfbc5230cf
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/l_leg.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/meta.json b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/meta.json
new file mode 100644
index 00000000000..56d43aa0f9d
--- /dev/null
+++ b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/meta.json
@@ -0,0 +1,62 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from Occulus-Eris (https://github.com/Occulus-Server/Occulus-Eris) & modified by discord:kuro_0001 (388673708753027083)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "full"
+ },
+ {
+ "name": "head_f",
+ "directions": 4
+ },
+ {
+ "name": "head_m",
+ "directions": 4
+ },
+ {
+ "name": "l_arm",
+ "directions": 4
+ },
+ {
+ "name": "l_foot",
+ "directions": 4
+ },
+ {
+ "name": "l_hand",
+ "directions": 4
+ },
+ {
+ "name": "l_leg",
+ "directions": 4
+ },
+ {
+ "name": "r_arm",
+ "directions": 4
+ },
+ {
+ "name": "r_foot",
+ "directions": 4
+ },
+ {
+ "name": "r_hand",
+ "directions": 4
+ },
+ {
+ "name": "r_leg",
+ "directions": 4
+ },
+ {
+ "name": "torso_f",
+ "directions": 4
+ },
+ {
+ "name": "torso_m",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_arm.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_arm.png
new file mode 100644
index 00000000000..8d6a16a919e
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_arm.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_foot.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_foot.png
new file mode 100644
index 00000000000..9f95992e3e2
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_foot.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_hand.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_hand.png
new file mode 100644
index 00000000000..bf265c74f5c
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_hand.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_leg.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_leg.png
new file mode 100644
index 00000000000..91b6954175a
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/r_leg.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/torso_f.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/torso_f.png
new file mode 100644
index 00000000000..253eeb4e8f8
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/torso_f.png differ
diff --git a/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/torso_m.png b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/torso_m.png
new file mode 100644
index 00000000000..64c2f7be2da
Binary files /dev/null and b/Resources/Textures/Corvax/Mobs/Species/Vulpkanin/parts.rsi/torso_m.png differ