diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index ea8ceb93c95..80ef5983e3e 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -36,6 +36,7 @@
#define NO_BLOOD 1
#define NO_BREATHE 2
+#define UNENCUNBERED 4
#define RAD_ABSORB 8
#define NO_SCAN 16
#define NO_PAIN 32
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index fe67a21a779..d2159243dad 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -165,11 +165,11 @@
src.DB_species_unlock("Plasmaman",100)
return
if("7")
- if(karma <50)
+ if(karma <15)
usr << "You do not have enough karma!"
return
else
- src.DB_species_unlock("Vulpkanin",50)
+ src.DB_species_unlock("Vulpkanin",15)
return
if(href_list["KarmaRefund"])
var/type = href_list["KarmaRefundType"]
diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm
index db0f6790913..dbb89ff27a6 100644
--- a/code/modules/karma/karma.dm
+++ b/code/modules/karma/karma.dm
@@ -202,7 +202,7 @@ You've gained [totalkarma] total karma in your time here.
"}
Unlock Vox -- 45KP
Unlock Slime People -- 45KP
Unlock Plasmaman -- 100KP
- Unlock Vulpkanin -- 50KP
+ Unlock Vulpkanin -- 15KP
"}
if (2) // Karma Refunds
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 8890ac9c94a..142dba40d9f 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -55,6 +55,9 @@
if(status_flags & IGNORESLOWDOWN) // make sure this is always at the end so we don't have ignore slowdown getting ignored itself
tally = 0
+ if(species && species.flags & UNENCUNBERED)
+ tally = 0
+
if(status_flags & GOTTAGOFAST)
tally -= 1
if(status_flags & GOTTAGOREALLYFAST)
diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm
index 4fc95ba0c22..d8f5a771553 100644
--- a/code/modules/mob/living/carbon/species.dm
+++ b/code/modules/mob/living/carbon/species.dm
@@ -421,7 +421,6 @@
tail = "vulptail"
unarmed_type = /datum/unarmed_attack/claws
darksight = 8
- slowdown = -1
brute_mod = 1.1
burn_mod = 1.1
@@ -431,7 +430,7 @@
to the degree it can cause conflict with more rigorous and strict authorities. They speak a guttural language known as 'Canilunzt' \
which has a heavy emphasis on utilizing tail positioning and ear twitches to communicate intent."
- flags = HAS_LIPS | HAS_UNDERWEAR | IS_WHITELISTED
+ flags = HAS_LIPS | HAS_UNDERWEAR | UNENCUNBERED | IS_WHITELISTED
bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING
dietflags = DIET_OMNI
diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm
index 4f8c7c4f7a1..cb9489ebc0d 100644
--- a/code/modules/mob/new_player/sprite_accessories.dm
+++ b/code/modules/mob/new_player/sprite_accessories.dm
@@ -666,26 +666,78 @@
icon_state = "bald"
species_allowed = list("Vulpkanin")
- vulp_hair_short
+ vulp_hair_kajam
name = "Kajam"
icon_state = "kajam"
species_allowed = list("Vulpkanin")
- vulp_hair_long
+ vulp_hair_keid
name = "Keid"
icon_state = "keid"
species_allowed = list("Vulpkanin")
- vulp_hair_fluffy
+ vulp_hair_adhara
name = "Adhara"
icon_state = "adhara"
species_allowed = list("Vulpkanin")
- vulp_hair_ponytail
+ vulp_hair_kleeia
name = "Kleeia"
icon_state = "kleeia"
species_allowed = list("Vulpkanin")
+ vulp_hair_mizar
+ name = "Mizar"
+ icon_state = "mizar"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_apollo
+ name = "Apollo"
+ icon_state = "apollo"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_belle
+ name = "Belle"
+ icon_state = "belle"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_bun
+ name = "Bun"
+ icon_state = "bun"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_jagged
+ name = "Jagged"
+ icon_state = "jagged"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_curl
+ name = "Curl"
+ icon_state = "curl"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_hawk
+ name = "Hawk"
+ icon_state = "hawk"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_anita
+ name = "Anita"
+ icon_state = "anita"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_short
+ name = "Short"
+ icon_state = "short"
+ species_allowed = list("Vulpkanin")
+
+ vulp_hair_spike
+ name = "Spike"
+ icon_state = "spike"
+ species_allowed = list("Vulpkanin")
+
+//Vox
+
vox_quills_short
name = "Short Vox Quills"
icon_state = "vox_shortquills"
@@ -794,6 +846,48 @@
icon_state = "facial_smallstache"
species_allowed = list("Tajaran")
+//Vulpkanin
+
+ vulp_blaze
+ name = "Blaze"
+ icon_state = "vulp_facial_blaze"
+ species_allowed = list("Vulpkanin")
+
+ vulp_vulpine
+ name = "Vulpine"
+ icon_state = "vulp_facial_vulpine"
+ species_allowed = list("Vulpkanin")
+
+ vulp_earfluff
+ name = "Earfluff"
+ icon_state = "vulp_facial_earfluff"
+ species_allowed = list("Vulpkanin")
+
+ vulp_mask
+ name = "Mask"
+ icon_state = "vulp_facial_mask"
+ species_allowed = list("Vulpkanin")
+
+ vulp_patch
+ name = "Patch"
+ icon_state = "vulp_facial_patch"
+ species_allowed = list("Vulpkanin")
+
+ vulp_ruff
+ name = "Ruff"
+ icon_state = "vulp_facial_ruff"
+ species_allowed = list("Vulpkanin")
+
+ vulp_kita
+ name = "Kita"
+ icon_state = "vulp_facial_kita"
+ species_allowed = list("Vulpkanin")
+
+ vulp_swift
+ name = "Swift"
+ icon_state = "vulp_facial_swift"
+ species_allowed = list("Vulpkanin")
+
//skin styles - WIP
//going to have to re-integrate this with surgery
//let the icon_state hold an icon preview for now
diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi
index 2a1ee5d5568..aeb56ce9067 100644
Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ
diff --git a/icons/mob/human_races/r_vulpkanin.dmi b/icons/mob/human_races/r_vulpkanin.dmi
index 6f2c8df3dca..014955f53ee 100644
Binary files a/icons/mob/human_races/r_vulpkanin.dmi and b/icons/mob/human_races/r_vulpkanin.dmi differ