diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index 4680bf9254..225c32aa48 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -4,6 +4,7 @@ var/global/list/ear_styles_list = list() // Stores /datum/sprite_accessory/ears indexed by type var/global/list/tail_styles_list = list() // Stores /datum/sprite_accessory/tail indexed by type +var/global/list/wing_styles_list = list() // Stores /datum/sprite_accessory/wing indexed by type var/global/list/negative_traits = list() // Negative custom species traits, indexed by path var/global/list/neutral_traits = list() // Neutral custom species traits, indexed by path var/global/list/positive_traits = list() // Positive custom species traits, indexed by path @@ -127,6 +128,12 @@ var/global/list/tf_egg_types = list( var/datum/sprite_accessory/tail/instance = new path() tail_styles_list[path] = instance + // Custom Wings + paths = typesof(/datum/sprite_accessory/wing) - /datum/sprite_accessory/wing + for(var/path in paths) + var/datum/sprite_accessory/wing/instance = new path() + wing_styles_list[path] = instance + // Custom species traits paths = typesof(/datum/trait) - /datum/trait for(var/path in paths) diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index e13f50075a..eb340f83d6 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -39,7 +39,11 @@ #define DNA_UI_TAIL_R 20 #define DNA_UI_TAIL_G 21 #define DNA_UI_TAIL_B 22 -#define DNA_UI_LENGTH 22 // Update this when you add something, or you WILL break shit. +#define DNA_UI_WING_STYLE 23 //VOREStation Edit +#define DNA_UI_WING_R 24 //VOREStation Edit +#define DNA_UI_WING_G 25 //VOREStation Edit +#define DNA_UI_WING_B 26 //VOREStation Edit +#define DNA_UI_LENGTH 26 // Update this when you add something, or you WILL break shit. //VOREStation Edit to 26 #define DNA_SE_LENGTH 27 // For later: @@ -160,6 +164,11 @@ var/global/list/datum/dna/gene/dna_genes[0] if(character.tail_style) tail_style = tail_styles_list.Find(character.tail_style.type) + // Demi Wings + var/wing_style = 0 + if(character.wing_style) + wing_style = wing_styles_list.Find(character.wing_style.type) + // Playerscale (This assumes list is sorted big->small) var/size_multiplier = player_sizes_list.len // If fail to find, take smallest for(var/N in player_sizes_list) @@ -179,11 +188,16 @@ var/global/list/datum/dna/gene/dna_genes[0] SetUIValueRange(DNA_UI_EAR_STYLE, ear_style + 1, ear_styles_list.len + 1, 1) SetUIValueRange(DNA_UI_TAIL_STYLE, tail_style + 1, tail_styles_list.len + 1, 1) SetUIValueRange(DNA_UI_PLAYERSCALE, size_multiplier, player_sizes_list.len, 1) + SetUIValueRange(DNA_UI_WING_STYLE, wing_style + 1, wing_styles_list.len + 1, 1) SetUIValueRange(DNA_UI_TAIL_R, character.r_tail, 255, 1) SetUIValueRange(DNA_UI_TAIL_G, character.g_tail, 255, 1) SetUIValueRange(DNA_UI_TAIL_B, character.b_tail, 255, 1) + SetUIValueRange(DNA_UI_WING_R, character.r_wing, 255, 1) + SetUIValueRange(DNA_UI_WING_G, character.g_wing, 255, 1) + SetUIValueRange(DNA_UI_WING_B, character.b_wing, 255, 1) + // VORE Station Edit End SetUIValueRange(DNA_UI_HAIR_R, character.r_hair, 255, 1) diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index 662a522d4a..156c98e52f 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -189,6 +189,13 @@ else if((0 < tail) && (tail <= tail_styles_list.len)) H.tail_style = tail_styles_list[tail_styles_list[tail]] + //Wing + var/wing = dna.GetUIValueRange(DNA_UI_WING_STYLE, wing_styles_list.len + 1) - 1 + if(wing <= 1) + H.wing_style = null + else if((0 < wing) && (wing <= wing_styles_list.len)) + H.wing_style = wing_styles_list[wing_styles_list[wing]] + // Playerscale var/size = dna.GetUIValueRange(DNA_UI_PLAYERSCALE, player_sizes_list.len) if((0 < size) && (size <= player_sizes_list.len)) diff --git a/code/modules/client/preference_setup/vore/01_ears.dm b/code/modules/client/preference_setup/vore/01_ears.dm index 5064aa58bd..100eb8d372 100644 --- a/code/modules/client/preference_setup/vore/01_ears.dm +++ b/code/modules/client/preference_setup/vore/01_ears.dm @@ -17,6 +17,10 @@ var/r_tail2 = 30 // For extra overlay. var/g_tail2 = 30 // For extra overlay. var/b_tail2 = 30 // For extra overlay. + var/wing_style // Type of selected wing style + var/r_wing = 30 // Wing color + var/g_wing = 30 // Wing color + var/b_wing = 30 // Wing color var/dress_mob = TRUE // Definition of the stuff for Ears @@ -36,6 +40,10 @@ S["r_tail2"] >> pref.r_tail2 S["g_tail2"] >> pref.g_tail2 S["b_tail2"] >> pref.b_tail2 + S["wing_style"] >> pref.wing_style + S["r_wing"] >> pref.r_wing + S["g_wing"] >> pref.g_wing + S["b_wing"] >> pref.b_wing /datum/category_item/player_setup_item/vore/ears/save_character(var/savefile/S) S["ear_style"] << pref.ear_style @@ -49,6 +57,10 @@ S["r_tail2"] << pref.r_tail2 S["g_tail2"] << pref.g_tail2 S["b_tail2"] << pref.b_tail2 + S["wing_style"] << pref.wing_style + S["r_wing"] << pref.r_wing + S["g_wing"] << pref.g_wing + S["b_wing"] << pref.b_wing /datum/category_item/player_setup_item/vore/ears/sanitize_character() pref.red_ear = sanitize_integer(pref.red_ear, 0, 255, initial(pref.red_ear)) @@ -60,10 +72,15 @@ 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)) + pref.r_wing = sanitize_integer(pref.r_wing, 0, 255, initial(pref.r_wing)) + pref.g_wing = sanitize_integer(pref.g_wing, 0, 255, initial(pref.g_wing)) + pref.b_wing = sanitize_integer(pref.b_wing, 0, 255, initial(pref.b_wing)) if(pref.ear_style) pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style)) if(pref.tail_style) pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style)) + if(pref.wing_style) + pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style)) /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] @@ -77,6 +94,12 @@ character.r_tail2 = pref.r_tail2 character.b_tail2 = pref.b_tail2 character.g_tail2 = pref.g_tail2 + character.wing_style = wing_styles_list[pref.wing_style] + character.r_wing = pref.r_wing + character.b_wing = pref.b_wing + character.g_wing = pref.g_wing + + /datum/category_item/player_setup_item/vore/ears/content(var/mob/user) . += "

VORE Station Settings

" @@ -119,6 +142,20 @@ if (T.extra_overlay) . += "Change Secondary Color
__

" + var/wing_display = "Normal" + if(pref.wing_style && (pref.wing_style in wing_styles_list)) + var/datum/sprite_accessory/wing/instance = wing_styles_list[pref.wing_style] + wing_display = instance.name + else if(pref.wing_style) + wing_display = "REQUIRES UPDATE" + . += "Wing
" + . += " Style: [wing_display]
" + + if(wing_styles_list[pref.wing_style]) + var/datum/sprite_accessory/wing/T = wing_styles_list[pref.wing_style] + if (T.do_colouration) + . += "Change Color
__

" + /datum/category_item/player_setup_item/vore/ears/OnTopic(var/href,var/list/href_list, var/mob/user) if(!CanUseTopic(user)) return TOPIC_NOACTION @@ -178,6 +215,29 @@ pref.b_tail2 = hex2num(copytext(new_tailc2, 6, 8)) return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["wing_style"]) + // Construct the list of names allowed for this user. + var/list/pretty_wing_styles = list("Normal" = null) + for(var/path in wing_styles_list) + var/datum/sprite_accessory/wing/instance = wing_styles_list[path] + if((!instance.ckeys_allowed) || (user.ckey in instance.ckeys_allowed)) + pretty_wing_styles[instance.name] = path + + // Present choice to user + var/selection = input(user, "Pick wings", "Character Preference") as null|anything in pretty_wing_styles + pref.wing_style = pretty_wing_styles[selection] + + return TOPIC_REFRESH_UPDATE_PREVIEW + + else if(href_list["wing_color"]) + var/new_wingc = input(user, "Choose your character's wing colour:", "Character Preference", + rgb(pref.r_wing, pref.g_wing, pref.b_wing)) as color|null + if(new_wingc) + pref.r_wing = hex2num(copytext(new_wingc, 2, 4)) + pref.g_wing = hex2num(copytext(new_wingc, 4, 6)) + pref.b_wing = hex2num(copytext(new_wingc, 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/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index b001a4ca7b..dba378a338 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -7,6 +7,12 @@ message = "[wagging ? "starts" : "stops"] wagging their tail." else return 1 + if ("vflap") + if(toggle_wing_vr(message = 1)) + m_type = 1 + message = "[flapping ? "starts" : "stops"] flapping their wings." + else + return 1 if ("mlem") message = "mlems [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue up over [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] nose. Mlem." m_type = 1 @@ -102,3 +108,17 @@ update_tail_showing() return 1 + +/mob/living/carbon/human/proc/toggle_wing_vr(var/setting,var/message = 0) + if(!wing_style || !wing_style.ani_state) + if(message) + src << "You don't have a tail that supports this." + return 0 + + if(setting != null) + flapping = setting + else + flapping = !flapping + + update_wing_showing() + return 1 diff --git a/code/modules/mob/living/carbon/human/human_defines_vr.dm b/code/modules/mob/living/carbon/human/human_defines_vr.dm index 2f3f423681..fabc19d584 100644 --- a/code/modules/mob/living/carbon/human/human_defines_vr.dm +++ b/code/modules/mob/living/carbon/human/human_defines_vr.dm @@ -4,4 +4,5 @@ b_skin = 179 var/wagging = 0 //UGH. + var/flapping = 0 var/vantag_pref = VANTAG_NONE //What's my status? diff --git a/code/modules/mob/living/carbon/human/species/species_getters_vr.dm b/code/modules/mob/living/carbon/human/species/species_getters_vr.dm new file mode 100644 index 0000000000..4ba9305acc --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/species_getters_vr.dm @@ -0,0 +1,7 @@ + +/datum/species/proc/get_wing_hair(var/mob/living/carbon/human/H) //I have no idea what this is even used for other than teshari, but putting it in just in case. + return wing_hair //Since the tail has it. +/datum/species/proc/get_wing(var/mob/living/carbon/human/H) + return wing +/datum/species/proc/get_wing_animation(var/mob/living/carbon/human/H) + return wing_animation \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm index 3772bf8470..7e330ad2af 100644 --- a/code/modules/mob/living/carbon/human/species/species_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_vr.dm @@ -9,4 +9,10 @@ //This is so that if a race is using the chimera revive they can't use it more than once. //Shouldn't really be seen in play too often, but it's case an admin event happens and they give a non chimera the chimera revive. Only one person can use the chimera revive at a time per race. - //var/reviving = 0 //commented out 'cause moved to mob \ No newline at end of file + //var/reviving = 0 //commented out 'cause moved to mob + holder_type = /obj/item/weapon/holder/micro //This allows you to pick up crew + min_age = 18 + var/wing_hair + var/wing + var/wing_animation + var/icobase_wing \ 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 8398e9f7bd..0bef1972b8 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 @@ -331,8 +331,3 @@ gluttonous = 0 spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED min_age = 18 - -/datum/species - holder_type = /obj/item/weapon/holder/micro //This allows you to pick up crew - min_age = 18 - diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 877dff5ece..ad7d7be356 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -135,7 +135,8 @@ Please contact me on #coderbus IRC. ~Carn x #define FIRE_LAYER 27 //If you're on fire #define WATER_LAYER 28 //If you're submerged in water. #define TARGETED_LAYER 29 //BS12: Layer for the target overlay from weapon targeting system -#define TOTAL_LAYERS 30 +#define WING_LAYER 30 //VOREStation edit. Simply move this up a number if things are added. +#define TOTAL_LAYERS 31 //VOREStation edit. Add it to the number polaris has but +1 to accomidate the wing_layer. ////////////////////////////////// /mob/living/carbon/human @@ -338,6 +339,7 @@ var/global/list/damage_icon_parts = list() //tail update_tail_showing(0) + update_wing_showing(0) //VOREStation edit //UNDERWEAR OVERLAY /mob/living/carbon/human/proc/update_underwear(var/update_icons=1) @@ -836,6 +838,7 @@ var/global/list/damage_icon_parts = list() update_inv_w_uniform(0) update_inv_shoes(0) update_tail_showing(0) + update_wing_showing(0)//VOREStation Edit if(update_icons) update_icons() diff --git a/code/modules/mob/living/carbon/human/update_icons_vr.dm b/code/modules/mob/living/carbon/human/update_icons_vr.dm new file mode 100644 index 0000000000..b440cf0f00 --- /dev/null +++ b/code/modules/mob/living/carbon/human/update_icons_vr.dm @@ -0,0 +1,65 @@ +/mob/living/carbon/human/proc/get_wing_icon() + var/icon_key = "[species.get_race_key(src)][r_skin][g_skin][b_skin][r_hair][g_hair][b_hair]" + var/icon/wing_icon = wing_icon_cache[icon_key] + if(!wing_icon) + //generate a new one + var/species_wing_anim = species.get_wing_animation(src) + if(species.icobase_wing) species_wing_anim = species.icobase + if(!species_wing_anim) species_wing_anim = 'icons/effects/species.dmi' + wing_icon = new/icon(species_wing_anim) + if(species.color_mult) + wing_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_MULTIPLY) + else + wing_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) + // The following will not work with animated wings. + var/use_species_wing = species.get_wing_hair(src) + if(use_species_wing) + var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_wing(src)]_[use_species_wing]") + hair_icon.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD) + wing_icon.Blend(hair_icon, ICON_OVERLAY) + wing_icon_cache[icon_key] = wing_icon + + return wing_icon + +/mob/living/carbon/human/proc/set_wing_state(var/t_state) + var/image/wing_overlay = overlays_standing[WING_LAYER] + + if(wing_overlay && species.get_wing_animation(src)) + wing_overlay.icon_state = t_state + return wing_overlay + return null + +/mob/living/carbon/human/proc/animate_wing_reset(var/update_icons=1) + 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() + +/mob/living/carbon/human/proc/get_wing_image() + //If you are FBP with tail 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) + return image(wing_s) + + //If you have custom wings selected + if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL)) + var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = flapping && wing_style.ani_state ? wing_style.ani_state : wing_style.icon_state) + if(wing_style.do_colouration) + wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode) + return image(wing_s) + else + return image(wing_s) + return null + +/mob/living/carbon/human/proc/update_wing_showing(var/update_icons=1) + overlays_standing[WING_LAYER] = null + + overlays_standing[WING_LAYER] = get_wing_image() + if(overlays_standing[WING_LAYER]) + if(update_icons) + update_icons() + return diff --git a/code/modules/organs/robolimbs_vr.dm b/code/modules/organs/robolimbs_vr.dm index cd5eb27674..9bc38581a5 100644 --- a/code/modules/organs/robolimbs_vr.dm +++ b/code/modules/organs/robolimbs_vr.dm @@ -1,5 +1,6 @@ /datum/robolimb var/includes_tail //Cyberlimbs dmi includes a tail sprite to wear. + var/includes_wing //Cyberlimbs dmi includes a wing sprite to wear. var/list/whitelisted_to //List of ckeys that are allowed to pick this in charsetup. //////////////// For-specific-character fluff ones ///////////////// diff --git a/code/modules/resleeving/designer.dm b/code/modules/resleeving/designer.dm index 598eb7b8d0..a69e3a574c 100644 --- a/code/modules/resleeving/designer.dm +++ b/code/modules/resleeving/designer.dm @@ -109,6 +109,14 @@ temp["colorHref"] = "tail_color" styles["Tail"] = temp + temp = list("styleHref" = "wing_style", "style" = "Normal") + if(mannequin.wing_style) + temp["style"] = mannequin.wing_style.name + if(mannequin.wing_style.do_colouration) + temp["color"] = MOB_HEX_COLOR(mannequin, wing) + temp["colorHref"] = "wing_color" + styles["Tail"] = temp + temp = list("styleHref" = "hair_style", "style" = mannequin.h_style) if(mannequin.species && (mannequin.species.appearance_flags & HAS_HAIR_COLOR)) temp["color"] = MOB_HEX_COLOR(mannequin, hair) diff --git a/code/modules/vore/appearance/preferences_vr.dm b/code/modules/vore/appearance/preferences_vr.dm index f9302e8ed0..1a5e3129c9 100644 --- a/code/modules/vore/appearance/preferences_vr.dm +++ b/code/modules/vore/appearance/preferences_vr.dm @@ -21,6 +21,10 @@ var/r_tail2 = 30 var/g_tail2 = 30 var/b_tail2 = 30 + var/datum/sprite_accessory/tail/wing_style = null + var/r_wing = 30 + var/g_wing = 30 + var/b_wing = 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 573b5a02b4..974ff209f5 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -279,6 +279,80 @@ icon_state = "alurane-ears" ckeys_allowed = list("natje") +/* +//////////////////////////// +/ =--------------------= / +/ == Wing Definitions == / +/ =--------------------= / +//////////////////////////// +*/ +/datum/sprite_accessory/wing + name = "You should not see this..." + icon = 'icons/mob/vore/wings_vr.dmi' + do_colouration = 0 //Set to 1 to enable coloration using the tail color. + + 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/desc = "You should not see this..." + var/ani_state // State when flapping/animated + var/extra_overlay_w // Flapping state for extra overlay + +/datum/sprite_accessory/wing/moth + name = "moth wings" + desc = "" + icon_state = "moth" + +/datum/sprite_accessory/wing/mothc + name = "moth wings, colorable" + desc = "" + icon_state = "moth" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/feathered + name = "feathered wings, colorable" + desc = "" + icon_state = "feathered" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/bat_black + name = "bat wings, black" + desc = "" + icon_state = "bat-black" + +/datum/sprite_accessory/wing/bat_color + name = "bat wings, colorable" + desc = "" + icon_state = "bat-color" + do_colouration = 1 + +/datum/sprite_accessory/wing/bat_red + name = "bat wings, red" + desc = "" + icon_state = "bat-red" + +/datum/sprite_accessory/wing/harpywings + name = "harpy wings, colorable" + desc = "" + icon_state = "harpywings" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/feathered + name = "feathered wings, colorable" + desc = "" + icon_state = "feathered" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/beewings + name = "bee wings" + desc = "" + icon_state = "beewings" + /* //////////////////////////// / =--------------------= / @@ -364,18 +438,6 @@ icon_state = "bunny" do_colouration = 1 -/datum/sprite_accessory/tail/mothc - name = "moth wings, colorable" - desc = "" - icon_state = "moth" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/moth - name = "moth wings" - desc = "" - icon_state = "moth" - /datum/sprite_accessory/tail/bear_brown name = "bear, brown" desc = "" @@ -452,53 +514,48 @@ icon_state = "fantail" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - +/* /datum/sprite_accessory/tail/faintailwings name = "avian fantail, colorable (+wings)" desc = "" icon_state= "fantailwings" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - +*/ /datum/sprite_accessory/tail/wagtail name = "avian wagtail, colorable" desc = "" icon_state = "wagtail" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - +/* /datum/sprite_accessory/tail/wagtailwings name = "avian wagtail, colorable (+wings)" desc = "" icon_state = "wagtailwings" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - +*/ /datum/sprite_accessory/tail/crossfox name = "cross fox" desc = "" icon_state = "crossfox" - +/* /datum/sprite_accessory/tail/bee name = "bee thorax (+wings)" desc = "" icon_state = "bee" - +*/ /datum/sprite_accessory/tail/beethorax name = "bee thorax" desc = "" icon_state = "beethorax" -/datum/sprite_accessory/tail/beewings - name = "bee wings" - desc = "" - icon_state = "beewings" - -/datum/sprite_accessory/tail/moth_full +/datum/sprite_accessory/tail/moth_full //I'll... Let this one stay. The antenna itself isn't a big enough thing to be standalone. name = "moth antenna and wings" desc = "" icon_state = "moth_full" - +/* /datum/sprite_accessory/tail/succubus_purple name = "succubus, purple (+wings)" desc = "" @@ -513,45 +570,26 @@ name = "succubus, black (+wings)" desc = "" icon_state = "succubus-black" - +*/ /datum/sprite_accessory/tail/doublekitsune name = "double kitsune tail, colorable" desc = "" icon_state = "doublekitsune" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - +/* /datum/sprite_accessory/tail/succubus_color name = "succubus, colorable (+wings)" desc = "" icon_state = "succubus-black" do_colouration = 1 - +*/ /datum/sprite_accessory/tail/spade_color name = "spade-tail (colorable)" desc = "" icon_state = "spadetail-black" do_colouration = 1 -/datum/sprite_accessory/tail/bat_black - name = "bat wings, black" - desc = "" - icon_state = "bat-black" - show_species_tail = 1 - -/datum/sprite_accessory/tail/bat_color - name = "bat wings, colorable" - desc = "" - icon_state = "bat-color" - show_species_tail = 1 - do_colouration = 1 - -/datum/sprite_accessory/tail/bat_red - name = "bat wings, red" - desc = "" - icon_state = "bat-red" - show_species_tail = 1 - /datum/sprite_accessory/tail/snag name = "xenomorph tail w/ backplate" desc = "" @@ -568,21 +606,13 @@ icon_state = "molenar-kitsune" ckeys_allowed = list("molenar") -/datum/sprite_accessory/tail/harpywings - name = "harpy wings, colorable" - desc = "" - icon_state = "harpywings" - do_colouration = 1 - show_species_tail = 1 - color_blend_mode = ICON_MULTIPLY - /datum/sprite_accessory/tail/liquidfirefly_gazer name = "gazer eyestalks" desc = "" icon_state = "liquidfirefly-eyestalks" //ckeys_allowed = list("liquidfirefly","seiga") //At request. -/datum/sprite_accessory/tail/miria_fluffdragon +/datum/sprite_accessory/tail/miria_fluffdragon //Fluff tails with wings stay under tails. name = "fluffdragon wings+tail (Miria Masters)" desc = "" icon_state = "miria-fluffdragontail" @@ -655,14 +685,6 @@ ani_state = "ketraitail_w" //ckeys_allowed = list("ketrai") //They requested it to be enabled for everyone. -/datum/sprite_accessory/tail/feathered - name = "feathered wings, colorable" - desc = "" - icon_state = "feathered" - show_species_tail = 1 - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - /datum/sprite_accessory/tail/redpanda name = "red panda" desc = "" diff --git a/code/modules/vore/appearance/update_icons_vr.dm b/code/modules/vore/appearance/update_icons_vr.dm index e66ceefa90..43ace3859b 100644 --- a/code/modules/vore/appearance/update_icons_vr.dm +++ b/code/modules/vore/appearance/update_icons_vr.dm @@ -1,5 +1,5 @@ - #define isTaurTail(A) istype(A, /datum/sprite_accessory/tail/taur) +var/global/list/wing_icon_cache = list() /mob/living/carbon/human/proc/get_ears_overlay() if(ear_style && !(head && (head.flags_inv & BLOCKHEADHAIR))) diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 717103524b..186fdfbee0 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -525,6 +525,7 @@ if(TFchance == 1) if(P.species != O.species || P.tail_style != O.tail_style || P.custom_species != O.custom_species || P.ear_style != O.ear_style) P.tail_style = O.tail_style + P.wing_style = O.wing_style P.ear_style = O.ear_style P.species = O.species P.custom_species = O.custom_species @@ -594,6 +595,7 @@ P.g_skin = O.g_skin P.b_skin = O.b_skin P.tail_style = O.tail_style + P.wing_style = O.wing_style P.r_tail = O.r_tail P.g_tail = O.g_tail P.b_tail = O.b_tail @@ -631,6 +633,7 @@ var/mob/living/carbon/human/O = owner P.tail_style = O.tail_style + P.wing_style = O.wing_style P.ear_style = O.ear_style P.species = O.species P.custom_species = O.custom_species @@ -724,6 +727,7 @@ P.g_skin = O.g_skin P.b_skin = O.b_skin P.tail_style = O.tail_style + P.wing_style = O.wing_style P.r_tail = O.r_tail P.g_tail = O.g_tail P.b_tail = O.b_tail diff --git a/icons/mob/vore/taurs_vr.dmi b/icons/mob/vore/taurs_vr.dmi index eb0559a717..e09ff39775 100644 Binary files a/icons/mob/vore/taurs_vr.dmi and b/icons/mob/vore/taurs_vr.dmi differ diff --git a/icons/mob/vore/wings_vr.dmi b/icons/mob/vore/wings_vr.dmi new file mode 100644 index 0000000000..ff9ad121d6 Binary files /dev/null and b/icons/mob/vore/wings_vr.dmi differ diff --git a/vorestation.dme b/vorestation.dme index e9b9e99e4c..0d0103d460 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1798,9 +1798,11 @@ #include "code\modules\mob\living\carbon\human\stripping.dm" #include "code\modules\mob\living\carbon\human\unarmed_attack.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm" +#include "code\modules\mob\living\carbon\human\update_icons_vr.dm" #include "code\modules\mob\living\carbon\human\species\species.dm" #include "code\modules\mob\living\carbon\human\species\species_attack.dm" #include "code\modules\mob\living\carbon\human\species\species_getters.dm" +#include "code\modules\mob\living\carbon\human\species\species_getters_vr.dm" #include "code\modules\mob\living\carbon\human\species\species_helpers.dm" #include "code\modules\mob\living\carbon\human\species\species_hud.dm" #include "code\modules\mob\living\carbon\human\species\species_shapeshift.dm"