From 5831a8705aea99fb874506ed88fd3c756d657380 Mon Sep 17 00:00:00 2001 From: Leshana Date: Thu, 15 Mar 2018 22:53:48 -0400 Subject: [PATCH] Fixup wings and custom vorestation tails to the new update_icons() system. Adjust taur suits. Keep some job alt titles. --- code/game/jobs/job/z_all_jobs_vr.dm | 3 ++ code/modules/clothing/clothing_vr.dm | 11 +++- .../mob/living/carbon/human/emote_vr.dm | 18 +++---- .../mob/living/carbon/human/update_icons.dm | 52 +++++++++++++++++-- .../living/carbon/human/update_icons_vr.dm | 37 +++++-------- .../modules/vore/appearance/preferences_vr.dm | 2 +- .../vore/appearance/sprite_accessories_vr.dm | 2 +- 7 files changed, 84 insertions(+), 41 deletions(-) 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