diff --git a/code/modules/client/preference_setup/vore/01_ears.dm b/code/modules/client/preference_setup/vore/01_ears.dm
index 04bec4c2ee..5064aa58bd 100644
--- a/code/modules/client/preference_setup/vore/01_ears.dm
+++ b/code/modules/client/preference_setup/vore/01_ears.dm
@@ -7,10 +7,16 @@
// Define a place to save appearance in character setup
/datum/preferences
var/ear_style // Type of selected ear style
+ var/red_ear = 30 // Ear color. Goddarn dupe var names.
+ var/g_ear = 30 // Ear color
+ var/b_ear = 30 // Ear color
var/tail_style // Type of selected tail style
var/r_tail = 30 // Tail/Taur color
var/g_tail = 30 // Tail/Taur color
var/b_tail = 30 // Tail/Taur color
+ var/r_tail2 = 30 // For extra overlay.
+ var/g_tail2 = 30 // For extra overlay.
+ var/b_tail2 = 30 // For extra overlay.
var/dress_mob = TRUE
// Definition of the stuff for Ears
@@ -20,22 +26,40 @@
/datum/category_item/player_setup_item/vore/ears/load_character(var/savefile/S)
S["ear_style"] >> pref.ear_style
+ S["red_ear"] >> pref.red_ear
+ S["g_ear"] >> pref.g_ear
+ S["b_ear"] >> pref.b_ear
S["tail_style"] >> pref.tail_style
S["r_tail"] >> pref.r_tail
S["g_tail"] >> pref.g_tail
S["b_tail"] >> pref.b_tail
+ S["r_tail2"] >> pref.r_tail2
+ S["g_tail2"] >> pref.g_tail2
+ S["b_tail2"] >> pref.b_tail2
/datum/category_item/player_setup_item/vore/ears/save_character(var/savefile/S)
S["ear_style"] << pref.ear_style
+ S["red_ear"] << pref.red_ear
+ S["g_ear"] << pref.g_ear
+ S["b_ear"] << pref.b_ear
S["tail_style"] << pref.tail_style
S["r_tail"] << pref.r_tail
S["g_tail"] << pref.g_tail
S["b_tail"] << pref.b_tail
+ S["r_tail2"] << pref.r_tail2
+ S["g_tail2"] << pref.g_tail2
+ S["b_tail2"] << pref.b_tail2
/datum/category_item/player_setup_item/vore/ears/sanitize_character()
+ pref.red_ear = sanitize_integer(pref.red_ear, 0, 255, initial(pref.red_ear))
+ pref.g_ear = sanitize_integer(pref.g_ear, 0, 255, initial(pref.g_ear))
+ pref.b_ear = sanitize_integer(pref.b_ear, 0, 255, initial(pref.b_ear))
pref.r_tail = sanitize_integer(pref.r_tail, 0, 255, initial(pref.r_tail))
pref.g_tail = sanitize_integer(pref.g_tail, 0, 255, initial(pref.g_tail))
pref.b_tail = sanitize_integer(pref.b_tail, 0, 255, initial(pref.b_tail))
+ pref.r_tail2 = sanitize_integer(pref.r_tail2, 0, 255, initial(pref.r_tail2))
+ pref.g_tail2 = sanitize_integer(pref.g_tail2, 0, 255, initial(pref.g_tail2))
+ pref.b_tail2 = sanitize_integer(pref.b_tail2, 0, 255, initial(pref.b_tail2))
if(pref.ear_style)
pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style))
if(pref.tail_style)
@@ -43,10 +67,16 @@
/datum/category_item/player_setup_item/vore/ears/copy_to_mob(var/mob/living/carbon/human/character)
character.ear_style = ear_styles_list[pref.ear_style]
+ character.red_ear = pref.red_ear
+ character.b_ear = pref.b_ear
+ character.g_ear = pref.g_ear
character.tail_style = tail_styles_list[pref.tail_style]
character.r_tail = pref.r_tail
character.b_tail = pref.b_tail
character.g_tail = pref.g_tail
+ character.r_tail2 = pref.r_tail2
+ character.b_tail2 = pref.b_tail2
+ character.g_tail2 = pref.g_tail2
/datum/category_item/player_setup_item/vore/ears/content(var/mob/user)
. += "
VORE Station Settings
"
@@ -63,10 +93,15 @@
if(pref.ear_style && (pref.ear_style in ear_styles_list))
var/datum/sprite_accessory/ears/instance = ear_styles_list[pref.ear_style]
ear_display = instance.name
+
else if(pref.ear_style)
ear_display = "REQUIRES UPDATE"
. += "Ears
"
. += " Style: [ear_display]
"
+ if(ear_styles_list[pref.ear_style])
+ var/datum/sprite_accessory/ears/ear = ear_styles_list[pref.ear_style]
+ if (ear.do_colouration)
+ . += "Change Color
"
var/tail_display = "Normal"
if(pref.tail_style && (pref.tail_style in tail_styles_list))
@@ -81,6 +116,8 @@
var/datum/sprite_accessory/tail/T = tail_styles_list[pref.tail_style]
if (T.do_colouration)
. += "Change Color
"
+ if (T.extra_overlay)
+ . += "Change Secondary Color
"
/datum/category_item/player_setup_item/vore/ears/OnTopic(var/href,var/list/href_list, var/mob/user)
if(!CanUseTopic(user))
@@ -100,6 +137,15 @@
return TOPIC_REFRESH_UPDATE_PREVIEW
+ else if(href_list["ear_color"])
+ var/new_earc = input(user, "Choose your character's ear colour:", "Character Preference",
+ rgb(pref.red_ear, pref.g_ear, pref.b_ear)) as color|null
+ if(new_earc)
+ pref.red_ear = hex2num(copytext(new_earc, 2, 4))
+ pref.g_ear = hex2num(copytext(new_earc, 4, 6))
+ pref.b_ear = hex2num(copytext(new_earc, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
else if(href_list["tail_style"])
// Construct the list of names allowed for this user.
var/list/pretty_tail_styles = list("Normal" = null)
@@ -123,6 +169,15 @@
pref.b_tail = hex2num(copytext(new_tailc, 6, 8))
return TOPIC_REFRESH_UPDATE_PREVIEW
+ else if(href_list["tail_color2"])
+ var/new_tailc2 = input(user, "Choose your character's secondary tail/taur colour:", "Character Preference",
+ rgb(pref.r_tail2, pref.g_tail2, pref.b_tail2)) as color|null
+ if(new_tailc2)
+ pref.r_tail2 = hex2num(copytext(new_tailc2, 2, 4))
+ pref.g_tail2 = hex2num(copytext(new_tailc2, 4, 6))
+ pref.b_tail2 = hex2num(copytext(new_tailc2, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
else if(href_list["toggle_clothing"])
pref.dress_mob = !pref.dress_mob
return TOPIC_REFRESH_UPDATE_PREVIEW
diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm
index d7707e0937..bc52bd7175 100644
--- a/code/modules/client/preferences_vr.dm
+++ b/code/modules/client/preferences_vr.dm
@@ -1 +1,23 @@
-//File isn't currently being used.
\ No newline at end of file
+//File isn't currently being used.
+//It is now.
+/datum/preferences/update_preview_icon() // Lines up and un-overlaps character edit previews. Also un-splits taurs.
+ var/mob/living/carbon/human/dummy/mannequin/mannequin = get_mannequin(client_ckey)
+ mannequin.delete_inventory(TRUE)
+ dress_preview_mob(mannequin)
+
+ preview_icon = icon('icons/effects/effects.dmi', "nothing")
+ preview_icon.Scale(64+64, 16+32)
+
+ mannequin.dir = NORTH
+ var/icon/stamp = getFlatIcon(mannequin)
+ preview_icon.Blend(stamp, ICON_OVERLAY, 49, 9)
+
+ mannequin.dir = WEST
+ stamp = getFlatIcon(mannequin)
+ preview_icon.Blend(stamp, ICON_OVERLAY, 1, 9)
+
+ mannequin.dir = SOUTH
+ stamp = getFlatIcon(mannequin)
+ preview_icon.Blend(stamp, ICON_OVERLAY, 83, 9)
+
+ preview_icon.Scale(preview_icon.Width() * 2, preview_icon.Height() * 2) // Scaling here to prevent blurring in the browser.
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm
index 937bb63f58..791fc59c1c 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm
@@ -44,6 +44,20 @@
"Your overheated skin itches."
)
+ has_limbs = list(
+ BP_TORSO = list("path" = /obj/item/organ/external/chest),
+ BP_GROIN = list("path" = /obj/item/organ/external/groin),
+ BP_HEAD = list("path" = /obj/item/organ/external/head/vr/sergal),
+ BP_L_ARM = list("path" = /obj/item/organ/external/arm),
+ BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
+ BP_L_LEG = list("path" = /obj/item/organ/external/leg),
+ BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
+ BP_L_HAND = list("path" = /obj/item/organ/external/hand),
+ BP_R_HAND = list("path" = /obj/item/organ/external/hand/right),
+ BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
+ BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
+ )
+
/datum/species/akula
name = "Akula"
name_plural = "Akula"
@@ -133,7 +147,7 @@
/datum/species/hi_zoxxen
name = "Highlander Zorren"
name_plural = "Zorren"
- icobase = 'icons/mob/human_races/r_fox.dmi'
+ icobase = 'icons/mob/human_races/r_fox_vr.dmi'
deform = 'icons/mob/human_races/r_def_fox.dmi'
tail = "tail"
icobase_tail = 1
@@ -170,7 +184,7 @@
/datum/species/fl_zorren
name = "Flatland Zorren"
name_plural = "Zorren"
- icobase = 'icons/mob/human_races/r_fennec.dmi'
+ icobase = 'icons/mob/human_races/r_fennec_vr.dmi'
deform = 'icons/mob/human_races/r_def_fennec.dmi'
tail = "tail"
icobase_tail = 1
diff --git a/code/modules/organs/subtypes/standard_vr.dm b/code/modules/organs/subtypes/standard_vr.dm
new file mode 100644
index 0000000000..6ba220c6eb
--- /dev/null
+++ b/code/modules/organs/subtypes/standard_vr.dm
@@ -0,0 +1,58 @@
+//For custom heads with custom parts since the base code is restricted to a single icon file.
+
+/obj/item/organ/external/head/vr/get_icon()
+
+ ..()
+ overlays.Cut()
+ if(!owner || !owner.species)
+ return
+
+ for(var/M in markings)
+ var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
+ var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
+ mark_s.Blend(markings[M]["color"], ICON_ADD)
+ overlays |= mark_s //So when it's not on your body, it has icons
+ mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
+ icon_cache_key += "[M][markings[M]["color"]]"
+
+ if(owner.should_have_organ(O_EYES))//Moved on top of markings.
+ var/obj/item/organ/internal/eyes/eyes = owner.internal_organs_by_name[O_EYES]
+ if(eye_icon)
+ var/icon/eyes_icon = new/icon(eye_icons_vr, eye_icon_vr)
+ if(eyes)
+ eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD)
+ else
+ eyes_icon.Blend(rgb(128,0,0), ICON_ADD)
+ mob_icon.Blend(eyes_icon, ICON_OVERLAY)
+ overlays |= eyes_icon
+
+ if(owner.lip_style && (species && (species.appearance_flags & HAS_LIPS)))
+ var/icon/lip_icon = new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s")
+ overlays |= lip_icon
+ mob_icon.Blend(lip_icon, ICON_OVERLAY)
+
+ if(owner.f_style)
+ var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[owner.f_style]
+ if(facial_hair_style && facial_hair_style.species_allowed && (species.get_bodytype(owner) in facial_hair_style.species_allowed))
+ var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
+ if(facial_hair_style.do_colouration)
+ facial_s.Blend(rgb(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD)
+ overlays |= facial_s
+
+ if(owner.h_style && !(owner.head && (owner.head.flags_inv & BLOCKHEADHAIR)))
+ var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style]
+ if(hair_style && (species.get_bodytype(owner) in hair_style.species_allowed))
+ var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
+ if(hair_style.do_colouration && islist(h_col) && h_col.len >= 3)
+ hair_s.Blend(rgb(h_col[1], h_col[2], h_col[3]), ICON_ADD)
+ overlays |= hair_s
+
+ return mob_icon
+
+/obj/item/organ/external/head/vr
+ var/eye_icons_vr = 'icons/mob/human_face_vr.dmi'
+ var/eye_icon_vr = "blank_eyes"
+ eye_icon = "blank_eyes"
+
+/obj/item/organ/external/head/vr/sergal
+ eye_icon_vr = "eyes_sergal"
diff --git a/code/modules/vore/appearance/preferences_vr.dm b/code/modules/vore/appearance/preferences_vr.dm
index 9b52b03826..f9302e8ed0 100644
--- a/code/modules/vore/appearance/preferences_vr.dm
+++ b/code/modules/vore/appearance/preferences_vr.dm
@@ -11,10 +11,16 @@
// Horray Furries!
var/datum/sprite_accessory/ears/ear_style = null
+ var/red_ear = 30
+ var/g_ear = 30
+ var/b_ear = 30
var/datum/sprite_accessory/tail/tail_style = null
var/r_tail = 30
var/g_tail = 30
var/b_tail = 30
+ var/r_tail2 = 30
+ var/g_tail2 = 30
+ var/b_tail2 = 30
// Custom Species Name
var/custom_species
diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm
index 284531fdcd..d1dc6969a1 100644
--- a/code/modules/vore/appearance/sprite_accessories_vr.dm
+++ b/code/modules/vore/appearance/sprite_accessories_vr.dm
@@ -176,6 +176,35 @@
desc = ""
icon_state = "antlers"
+/datum/sprite_accessory/ears/otie
+ name = "otie, colorable"
+ desc = ""
+ icon_state = "otie"
+ do_colouration = 1
+
+/datum/sprite_accessory/ears/cow
+ name = "cow, horns"
+ desc = ""
+ icon_state = "cow"
+
+/datum/sprite_accessory/ears/cowc
+ name = "cow, horns, colorable"
+ desc = ""
+ icon_state = "cow-c"
+ do_colouration = 1
+
+/datum/sprite_accessory/ears/zears
+ name = "jagged ears"
+ desc = ""
+ icon_state = "zears"
+ do_colouration = 1
+
+/datum/sprite_accessory/ears/elfs
+ name = "elven ears"
+ desc = ""
+ icon_state = "elfs"
+ do_colouration = 1
+
// Special snowflake ears go below here.
/datum/sprite_accessory/ears/molenar_kitsune
@@ -267,7 +296,8 @@
var/show_species_tail = 0 // If false, do not render species' tail.
var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it
var/desc = "You should not see this..."
- var/ani_state //State when wagging/animated
+ var/ani_state // State when wagging/animated
+ var/extra_overlay_w // Wagging state for extra overlay
/datum/sprite_accessory/tail/invisible
name = "hide species-sprite tail"
@@ -321,6 +351,7 @@
desc = ""
icon_state = "stripeytail"
do_colouration = 1
+ extra_overlay = "stripeytail_mark"
/datum/sprite_accessory/tail/stripeytail_brown
name = "stripey taj, brown"
@@ -642,6 +673,7 @@
desc = ""
icon_state = "ringtail"
do_colouration = 1
+ extra_overlay = "ringtail_mark"
/datum/sprite_accessory/tail/holly
name = "tigress tail (Holly)"
@@ -662,6 +694,8 @@
icon_state = "curltail"
ani_state = "curltail_w"
do_colouration = 1
+ extra_overlay = "curltail_mark"
+ extra_overlay_w = "curltail_mark_w"
/datum/sprite_accessory/tail/shorttail
name = "shorttail (vwag)"
@@ -676,6 +710,8 @@
icon_state = "tigertail"
ani_state = "tigertail_w"
do_colouration = 1
+ extra_overlay = "tigertail_mark"
+ extra_overlay_w = "tigertail_mark_w"
/datum/sprite_accessory/tail/vulp_new
name = "new vulp tail (vwag)"
@@ -683,6 +719,21 @@
icon_state = "vulptail"
ani_state = "vulptail_w"
do_colouration = 1
+ extra_overlay = "vulptail_mark"
+ extra_overlay_w = "vulptail_mark_w"
+
+/datum/sprite_accessory/tail/otietail
+ name = "otie tail (vwag)"
+ desc = ""
+ icon_state = "otie"
+ ani_state = "otie_w"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/ztail
+ name = "jagged flufftail"
+ desc = ""
+ icon_state = "ztail"
+ do_colouration = 1
/datum/sprite_accessory/tail/shock
name = "pharoah hound tail (Shock Diamond)"
@@ -696,7 +747,6 @@
icon_state = "snaketail"
do_colouration = 1
-
//For all species tails. Includes haircolored tails.
/datum/sprite_accessory/tail/special
name = "Blank tail. Do not select."
@@ -889,10 +939,20 @@
name = "Wolf"
icon_state = "wolf_s"
+/datum/sprite_accessory/tail/taur/wolf/wolf_2c
+ name = "Wolf dual-color"
+ icon_state = "wolf_s"
+ extra_overlay = "wolf_markings"
+
/datum/sprite_accessory/tail/taur/naga
name = "Naga"
icon_state = "naga_s"
+/datum/sprite_accessory/tail/taur/naga/naga_2c
+ name = "Naga dual-color"
+ icon_state = "naga_s"
+ extra_overlay = "naga_markings"
+
/datum/sprite_accessory/tail/taur/horse
name = "Horse"
icon_state = "horse_s"
@@ -905,6 +965,11 @@
name = "Lizard"
icon_state = "lizard_s"
+/datum/sprite_accessory/tail/taur/lizard/lizard_2c
+ name = "Lizard dual-color"
+ icon_state = "lizard_s"
+ extra_overlay = "lizard_markings"
+
/datum/sprite_accessory/tail/taur/spider
name = "Spider"
icon_state = "spider_s"
@@ -917,10 +982,23 @@
name = "Feline"
icon_state = "feline_s"
+/datum/sprite_accessory/tail/taur/feline/feline_2c
+ name = "Feline dual-color"
+ icon_state = "feline_s"
+ extra_overlay = "feline_markings"
+
/datum/sprite_accessory/tail/taur/slug
name = "Slug"
icon_state = "slug_s"
+/*/datum/sprite_accessory/tail/taur/drake //Yeah hold that thought for a bit. These got no suit compatibility yet.
+ name = "Drake"
+ icon_state = "drake_s"
+
+/datum/sprite_accessory/tail/taur/otie
+ name = "Otie"
+ icon_state = "otie_s"*/
+
//wickedtemp: Chakat Tempest
/datum/sprite_accessory/tail/taur/feline/tempest
name = "Feline (wickedtemp)"
diff --git a/code/modules/vore/appearance/update_icons_vr.dm b/code/modules/vore/appearance/update_icons_vr.dm
index 94a64347a6..e66ceefa90 100644
--- a/code/modules/vore/appearance/update_icons_vr.dm
+++ b/code/modules/vore/appearance/update_icons_vr.dm
@@ -5,7 +5,7 @@
if(ear_style && !(head && (head.flags_inv & BLOCKHEADHAIR)))
var/icon/ears_s = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.icon_state)
if(ear_style.do_colouration)
- ears_s.Blend(rgb(src.r_hair, src.g_hair, src.b_hair), ear_style.color_blend_mode)
+ ears_s.Blend(rgb(src.red_ear, src.g_ear, src.b_ear), ear_style.color_blend_mode)
if(ear_style.extra_overlay)
var/icon/overlay = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.extra_overlay)
ears_s.Blend(overlay, ICON_OVERLAY)
@@ -27,8 +27,15 @@
tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode)
if(tail_style.extra_overlay)
var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay)
- tail_s.Blend(overlay, ICON_OVERLAY)
- qdel(overlay)
+ if(wagging && tail_style.ani_state)
+ overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay_w)
+ overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode)
+ tail_s.Blend(overlay, ICON_OVERLAY)
+ qdel(overlay)
+ else
+ overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode)
+ tail_s.Blend(overlay, ICON_OVERLAY)
+ qdel(overlay)
if(isTaurTail(tail_style))
return image(tail_s, "pixel_x" = -16)
diff --git a/code/modules/vore/eating/belly_vr.dm b/code/modules/vore/eating/belly_vr.dm
index 1cdf8297f9..4f47baf0bf 100644
--- a/code/modules/vore/eating/belly_vr.dm
+++ b/code/modules/vore/eating/belly_vr.dm
@@ -460,6 +460,27 @@
return
else if(prob(transferchance) && istype(transferlocation)) //Next, let's have it see if they end up getting into an even bigger mess then when they started.
+ var/location_found = 0
+ var/name_found = 0
+ for(var/I in owner.vore_organs)
+ var/datum/belly/B = owner.vore_organs[I]
+ if(B == transferlocation)
+ location_found = 1
+ break
+
+ if(!location_found)
+ for(var/I in owner.vore_organs)
+ var/datum/belly/B = owner.vore_organs[I]
+ if(B.name == transferlocation.name)
+ name_found = 1
+ transferlocation = B
+ break
+
+ if(!location_found && !name_found)
+ to_chat(owner, "Something went wrong with your belly transfer settings.")
+ transferlocation = null
+ return
+
R << "Your attempt to escape [name] has failed and your struggles only results in you sliding into [owner]'s [transferlocation]!"
owner << "Someone slid into your [transferlocation] due to their struggling inside your [name]!"
transfer_contents(R, transferlocation)
diff --git a/icons/mob/human_face_vr.dmi b/icons/mob/human_face_vr.dmi
index 489f80a6ce..ef8ba28753 100644
Binary files a/icons/mob/human_face_vr.dmi and b/icons/mob/human_face_vr.dmi differ
diff --git a/icons/mob/human_races/r_def_sergal.dmi b/icons/mob/human_races/r_def_sergal.dmi
index c43a5835f8..c39c2f6038 100644
Binary files a/icons/mob/human_races/r_def_sergal.dmi and b/icons/mob/human_races/r_def_sergal.dmi differ
diff --git a/icons/mob/human_races/r_fennec_vr.dmi b/icons/mob/human_races/r_fennec_vr.dmi
new file mode 100644
index 0000000000..d85bdb7e42
Binary files /dev/null and b/icons/mob/human_races/r_fennec_vr.dmi differ
diff --git a/icons/mob/human_races/r_fox_vr.dmi b/icons/mob/human_races/r_fox_vr.dmi
new file mode 100644
index 0000000000..7cf9c675b7
Binary files /dev/null and b/icons/mob/human_races/r_fox_vr.dmi differ
diff --git a/icons/mob/human_races/r_sergal.dmi b/icons/mob/human_races/r_sergal.dmi
index 1b2e73e861..316c2a015b 100644
Binary files a/icons/mob/human_races/r_sergal.dmi and b/icons/mob/human_races/r_sergal.dmi differ
diff --git a/icons/mob/taursuits_vr.dmi b/icons/mob/taursuits_vr.dmi
index 19a9a7ad2a..ae8a0a5442 100644
Binary files a/icons/mob/taursuits_vr.dmi and b/icons/mob/taursuits_vr.dmi differ
diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi
index ca6b724534..8a15b36a6c 100644
Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index 41cb5cfc71..f2eb525b26 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2025,6 +2025,7 @@
#include "code\modules\organs\subtypes\machine.dm"
#include "code\modules\organs\subtypes\seromi.dm"
#include "code\modules\organs\subtypes\standard.dm"
+#include "code\modules\organs\subtypes\standard_vr.dm"
#include "code\modules\organs\subtypes\unathi.dm"
#include "code\modules\organs\subtypes\unbreakable.dm"
#include "code\modules\organs\subtypes\vox.dm"