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/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 4065201c08..7dd1af756d 100644
--- a/code/modules/vore/appearance/sprite_accessories_vr.dm
+++ b/code/modules/vore/appearance/sprite_accessories_vr.dm
@@ -910,6 +910,11 @@
name = "Wolf"
icon_state = "wolf_s"
+/datum/sprite_accessory/tail/taur/wolf_2c
+ name = "Wolf dual-color"
+ icon_state = "wolf_s"
+ extra_overlay = "wolfmarkings"
+
/datum/sprite_accessory/tail/taur/naga
name = "Naga"
icon_state = "naga_s"
@@ -942,13 +947,13 @@
name = "Slug"
icon_state = "slug_s"
-/datum/sprite_accessory/tail/taur/drake
+/*/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"
+ icon_state = "otie_s"*/
//wickedtemp: Chakat Tempest
/datum/sprite_accessory/tail/taur/feline/tempest
diff --git a/code/modules/vore/appearance/update_icons_vr.dm b/code/modules/vore/appearance/update_icons_vr.dm
index 94a64347a6..7bbd8b9972 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.r_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,6 +27,7 @@
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)
+ 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)
diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi
index e0ba59f30e..bf056755e2 100644
Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ
diff --git a/icons/mob/vore/taurs_vr.dmi b/icons/mob/vore/taurs_vr.dmi
index 91b3390ee4..1c7c135923 100644
Binary files a/icons/mob/vore/taurs_vr.dmi and b/icons/mob/vore/taurs_vr.dmi differ