Makes wings their own seperate entity on char setup

This commit is contained in:
killer653
2017-08-10 07:12:22 -04:00
parent 10eb527473
commit a2f346df0f
20 changed files with 299 additions and 73 deletions
+7
View File
@@ -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)
+15 -1
View File
@@ -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)
+7
View File
@@ -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))
@@ -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)
. += "<h2>VORE Station Settings</h2>"
@@ -119,6 +142,20 @@
if (T.extra_overlay)
. += "<a href='?src=\ref[src];tail_color2=1'>Change Secondary Color</a> <font face='fixedsys' size='3' color='#[num2hex(pref.r_tail2, 2)][num2hex(pref.g_tail2, 2)][num2hex(pref.b_tail2, 2)]'><table style='display:inline;' bgcolor='#[num2hex(pref.r_tail2, 2)][num2hex(pref.g_tail2, 2)][num2hex(pref.b_tail2)]'><tr><td>__</td></tr></table> </font><br>"
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"
. += "<b>Wing</b><br>"
. += " Style: <a href='?src=\ref[src];wing_style=1'>[wing_display]</a><br>"
if(wing_styles_list[pref.wing_style])
var/datum/sprite_accessory/wing/T = wing_styles_list[pref.wing_style]
if (T.do_colouration)
. += "<a href='?src=\ref[src];wing_color=1'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(pref.r_wing, 2)][num2hex(pref.g_wing, 2)][num2hex(pref.b_wing, 2)]'><table style='display:inline;' bgcolor='#[num2hex(pref.r_wing, 2)][num2hex(pref.g_wing, 2)][num2hex(pref.b_wing)]'><tr><td>__</td></tr></table> </font><br>"
/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
@@ -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 << "<span class='warning'>You don't have a tail that supports this.</span>"
return 0
if(setting != null)
flapping = setting
else
flapping = !flapping
update_wing_showing()
return 1
@@ -4,4 +4,5 @@
b_skin = 179
var/wagging = 0 //UGH.
var/flapping = 0
var/vantag_pref = VANTAG_NONE //What's my status?
@@ -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
@@ -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
//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
@@ -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
@@ -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()
@@ -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
+1
View File
@@ -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 /////////////////
+8
View File
@@ -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)
@@ -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
@@ -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 = ""
@@ -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)))
@@ -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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+2
View File
@@ -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"