diff --git a/code/game/jobs/job/z_all_jobs_vr.dm b/code/game/jobs/job/z_all_jobs_vr.dm
index 246f3c8bf4f..c0ac7023f65 100644
--- a/code/game/jobs/job/z_all_jobs_vr.dm
+++ b/code/game/jobs/job/z_all_jobs_vr.dm
@@ -12,6 +12,9 @@
spawn_positions = 3
alt_titles = list("Custodian", "Sanitation Technician", "Maid")
+/datum/job/librarian
+ alt_titles = list("Journalist", "Historian", "Writer")
+
/datum/job/officer
total_positions = 4
spawn_positions = 4
diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm
index 5107fd2d057..bb89caa603a 100644
--- a/code/modules/clothing/clothing_vr.dm
+++ b/code/modules/clothing/clothing_vr.dm
@@ -97,4 +97,13 @@
"Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi',
"Xenochimera" = 'icons/mob/species/tajaran/mask_vr.dmi'
)
-//"Spider" = 'icons/mob/species/spider/mask_vr.dmi' Add this later when they have custom mask sprites and everything.
\ No newline at end of file
+//"Spider" = 'icons/mob/species/spider/mask_vr.dmi' Add this later when they have custom mask sprites and everything.
+
+// Taur suits need to be shifted so its centered on their taur half.
+// TODO - Instead of just assuming this junk, shift some of the data onto the taur tail datum.
+/obj/item/clothing/suit/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0)
+ var/image/standing = ..()
+ if(icon_override && icon_override == 'icons/mob/taursuits_vr.dmi')
+ standing.pixel_x = -16
+ standing.layer = BODY_LAYER + 15 // 15 is above tail layer, so will not be covered by taurbody.
+ return standing
diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm
index 22a3c24d21e..0b6b9ea7af6 100644
--- a/code/modules/mob/living/carbon/human/emote_vr.dm
+++ b/code/modules/mob/living/carbon/human/emote_vr.dm
@@ -77,12 +77,10 @@
src << "You don't have a tail that supports this."
return 0
- if(setting != null)
- wagging = setting
- else
- wagging = !wagging
-
- update_tail_showing()
+ var/new_wagging = isnull(setting) ? !wagging : setting
+ if(new_wagging != wagging)
+ wagging = new_wagging
+ update_tail_showing()
return 1
/mob/living/carbon/human/proc/toggle_wing_vr(var/setting,var/message = 0)
@@ -91,12 +89,10 @@
src << "You don't have a tail that supports this."
return 0
- if(setting != null)
+ var/new_flapping = isnull(setting) ? !flapping : setting
+ if(new_flapping != flapping)
flapping = setting
- else
- flapping = !flapping
-
- update_wing_showing()
+ update_wing_showing()
return 1
/mob/living/carbon/human/verb/toggle_gender_identity_vr()
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 3b1bf3620a1..b02c0bb521f 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -121,6 +121,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
crash_with("CANARY: Old human update_icons_huds was called.")
/mob/living/carbon/human/update_transform()
+ /* VOREStation Edit START - TODO - Consider switching to icon_scale
// First, get the correct size.
var/desired_scale = icon_scale
@@ -129,6 +130,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
for(var/datum/modifier/M in modifiers)
if(!isnull(M.icon_scale_percent))
desired_scale *= M.icon_scale_percent
+ */
+ var/desired_scale = size_multiplier
+ //VOREStation Edit End
// Regular stuff again.
var/matrix/M = matrix()
@@ -247,7 +251,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
icon_key += "[rgb(part.s_col[1],part.s_col[2],part.s_col[3])]"
if(part.body_hair && part.h_col && part.h_col.len >= 3)
icon_key += "[rgb(part.h_col[1],part.h_col[2],part.h_col[3])]"
- icon_key += "[part.s_col_blend]"
+ //VOREStation Edit - Different way of tracking add/mult species
+ if(species.color_mult)
+ icon_key += "[ICON_MULTIPLY]"
+ else
+ icon_key += "[ICON_ADD]"
+ //VOREStation Edit End
else
icon_key += "#000000"
for(var/M in part.markings)
@@ -321,6 +330,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//tail
update_tail_showing()
+ update_wing_showing() // VOREStation Edit
/mob/living/carbon/human/proc/update_skin()
if(QDESTROYING(src))
@@ -403,7 +413,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(facial_hair_style && facial_hair_style.species_allowed && (src.species.get_bodytype(src) 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(r_facial, g_facial, b_facial), ICON_ADD)
+ facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_MULTIPLY) //VOREStation edit
face_standing.Blend(facial_s, ICON_OVERLAY)
@@ -418,6 +428,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
face_standing.Blend(hair_s, ICON_OVERLAY)
+ // VOREStation Edit - START
+ var/icon/ears_s = get_ears_overlay()
+ if (ears_s)
+ face_standing.Blend(ears_s, ICON_OVERLAY)
+ // VOREStation Edit - END
+
if(head_organ.nonsolid)
face_standing += rgb(,,,120)
@@ -708,6 +724,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
update_inv_w_uniform()
update_inv_shoes()
update_tail_showing()
+ update_wing_showing() // VOREStation Edit
if(!wear_suit)
return //No point, no suit.
@@ -757,6 +774,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//update whether handcuffs appears on our hud.
/mob/living/carbon/proc/update_hud_handcuffed()
+ if(QDESTROYING(src))
+ return
+
if(hud_used && hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
hud_used.l_hand_hud_object.update_icon()
hud_used.r_hand_hud_object.update_icon()
@@ -819,6 +839,16 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
return
remove_layer(TAIL_LAYER)
+
+ // VOREStation Edit - START
+ var/image/vr_tail_image = get_tail_image()
+ if(vr_tail_image)
+ vr_tail_image.layer = BODY_LAYER+TAIL_LAYER
+ overlays_standing[TAIL_LAYER] = vr_tail_image
+ apply_layer(TAIL_LAYER)
+ return
+ // VOREStation Edit - END
+
var/species_tail = species.get_tail(src) // Species tail icon_state prefix.
//This one is actually not that bad I guess.
@@ -834,9 +864,10 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(!tail_icon)
//generate a new one
var/species_tail_anim = species.get_tail_animation(src)
+ if(!species_tail_anim && species.icobase_tail) species_tail_anim = species.icobase //VOREStation Code - Allow override of file for non-animated tails
if(!species_tail_anim) species_tail_anim = 'icons/effects/species.dmi'
tail_icon = new/icon(species_tail_anim)
- tail_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
+ tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) // VOREStation edit
// The following will not work with animated tails.
var/use_species_tail = species.get_tail_hair(src)
if(use_species_tail)
@@ -900,6 +931,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
set_tail_state("[species.get_tail(src)]_idle[rand(0,9)]")
else
set_tail_state("[species.get_tail(src)]_static")
+ toggle_tail_vr(FALSE) //VOREStation Add - So tails stop when someone dies. TODO - Fix this hack ~Leshana
/mob/living/carbon/human/proc/animate_tail_stop()
if(QDESTROYING(src))
@@ -907,6 +939,20 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
set_tail_state("[species.get_tail(src)]_static")
+// VOREStation Edit - Wings! See update_icons_vr.dm for more wing procs
+/mob/living/carbon/human/proc/update_wing_showing()
+ if(QDESTROYING(src))
+ return
+
+ remove_layer(SUIT_LAYER)
+
+ var/image/vr_wing_image = get_wing_image()
+ if(vr_wing_image)
+ vr_wing_image = BODY_LAYER+WING_LAYER
+ overlays_standing[WING_LAYER] = vr_wing_image
+ apply_layer(WING_LAYER)
+// VOREStation Edit end
+
/mob/living/carbon/human/update_modifier_visuals()
if(QDESTROYING(src))
return
diff --git a/code/modules/mob/living/carbon/human/update_icons_vr.dm b/code/modules/mob/living/carbon/human/update_icons_vr.dm
index d17b686bf77..f30a407f799 100644
--- a/code/modules/mob/living/carbon/human/update_icons_vr.dm
+++ b/code/modules/mob/living/carbon/human/update_icons_vr.dm
@@ -1,3 +1,4 @@
+// WARNING - UNUSED PROC
/mob/living/carbon/human/proc/get_wing_icon()
if(QDESTROYING(src))
return
@@ -24,6 +25,7 @@
return wing_icon
+// WARNING - UNUSED PROC
/mob/living/carbon/human/proc/set_wing_state(var/t_state)
if(QDESTROYING(src))
return
@@ -35,23 +37,19 @@
return wing_overlay
return null
+// WARNING - UNUSED PROC
/mob/living/carbon/human/proc/animate_wing_reset(var/update_icons=1)
- if(QDESTROYING(src))
- return
-
if(stat != DEAD)
set_wing_state("[species.get_wing(src)]_idle[rand(0,9)]")
else
set_wing_state("[species.get_wing(src)]_static")
- toggle_wing_vr(0)
- if(update_icons)
- update_icons_layers()
+ toggle_wing_vr(FALSE)
/mob/living/carbon/human/proc/get_wing_image()
if(QDESTROYING(src))
return
- //If you are FBP with tail style and didn't set a custom one
+ //If you are FBP with wing style and didn't set a custom one
if(synthetic && synthetic.includes_wing && !wing_style)
var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing?
wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
@@ -67,23 +65,14 @@
return image(wing_s)
return null
-/mob/living/carbon/human/proc/update_wing_showing(var/update_icons=1)
+
+// TODO - Move this to where it should go ~Leshana
+/mob/proc/stop_flying()
if(QDESTROYING(src))
return
+ flying = FALSE
+ return 1
- overlays_standing[WING_LAYER] = null
-
- overlays_standing[WING_LAYER] = get_wing_image()
- if(overlays_standing[WING_LAYER])
- if(update_icons)
- update_icons_layers()
- return
-
-/mob/proc/stop_flying(var/update_icons=1)
- if(QDESTROYING(src))
- return
-
- flying = 0
-
- if(update_icons)
- update_icons_layers()
\ No newline at end of file
+/mob/living/carbon/human/stop_flying()
+ if((. = ..()))
+ update_wing_showing()
diff --git a/code/modules/vore/appearance/preferences_vr.dm b/code/modules/vore/appearance/preferences_vr.dm
index b037be9c2f5..8d5db2c6f22 100644
--- a/code/modules/vore/appearance/preferences_vr.dm
+++ b/code/modules/vore/appearance/preferences_vr.dm
@@ -24,7 +24,7 @@
var/r_tail2 = 30
var/g_tail2 = 30
var/b_tail2 = 30
- var/datum/sprite_accessory/tail/wing_style = null
+ var/datum/sprite_accessory/wing/wing_style = null
var/r_wing = 30
var/g_wing = 30
var/b_wing = 30
diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm
index 2d071a35751..ebac91a80c9 100644
--- a/code/modules/vore/appearance/sprite_accessories_vr.dm
+++ b/code/modules/vore/appearance/sprite_accessories_vr.dm
@@ -360,7 +360,7 @@
var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
var/extra_overlay // Icon state of an additional overlay to blend in.
var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings.
- var/show_species_tail = 1 // Just so
+ // var/show_species_tail = 1 // Just so // TODO - Seems not needed ~Leshana
var/desc = "You should not see this..."
var/ani_state // State when flapping/animated
var/extra_overlay_w // Flapping state for extra overlay