Revert "Kaleidoscope, Toolbox (#7608)"

This reverts commit a68014a9ae.
This commit is contained in:
atermonera
2020-09-26 11:57:34 -07:00
parent 444f793788
commit eadb08bf9f
62 changed files with 33 additions and 4354 deletions
+1 -25
View File
@@ -472,7 +472,7 @@
message = "points to [M]."
else
m_type = 1
if("crack")
if(!restrained())
message = "cracks [T.his] knuckles."
@@ -799,27 +799,3 @@
HTML +="<a href='?src=\ref[src];flavor_change=done'>\[Done\]</a>"
HTML += "<tt>"
src << browse(HTML, "window=flavor_changes;size=430x300")
/mob/living/carbon/human/proc/toggle_tail_vr(var/setting,var/message = 0)
if(!tail_style || !tail_style.ani_state)
if(message)
to_chat(src, "<span class='warning'>You don't have a tail that supports this.</span>")
return 0
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)
if(!wing_style || !wing_style.ani_state)
if(message)
to_chat(src, "<span class='warning'>You don't have a wingtype that supports this.</span>")
return 0
var/new_flapping = isnull(setting) ? !flapping : setting
if(new_flapping != flapping)
flapping = setting
update_wing_showing()
return 1
@@ -43,7 +43,7 @@
var/age = 30 //Player's age (pure fluff)
var/b_type = "A+" //Player's bloodtype
var/datum/robolimb/synthetic //If they are a synthetic (aka synthetic torso). Also holds the datum for the type of robolimb.
var/synthetic //If they are a synthetic (aka synthetic torso)
var/list/all_underwear = list()
var/list/all_underwear_metadata = list()
@@ -115,32 +115,3 @@
var/mob/living/carbon/human/vr_link = null
var/obj/machinery/machine_visual //machine that is currently applying visual effects to this mob. Only used for camera monitors currently.
// Horray Furries!
var/datum/sprite_accessory/ears/ear_style = null
var/r_ears = 30
var/g_ears = 30
var/b_ears = 30
var/r_ears2 = 30
var/g_ears2 = 30
var/b_ears2 = 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
var/datum/sprite_accessory/wing/wing_style = null
var/r_wing = 30
var/g_wing = 30
var/b_wing = 30
var/r_wing2 = 30
var/g_wing2 = 30
var/b_wing2 = 30
var/wagging = 0 //UGH.
var/flapping = 0
// Custom Species Name
var/custom_species
@@ -250,27 +250,6 @@
/datum/mob_descriptor/build
)
//This is used in character setup preview generation (prefences_setup.dm) and human mob
//rendering (update_icons.dm)
var/color_mult = 0
//This is for overriding tail rendering with a specific icon in icobase, for static
//tails only, since tails would wag when dead if you used this
var/icobase_tail = 0
var/wing_hair
var/wing
var/wing_animation
var/icobase_wing
var/wikilink = null //link to wiki page for species
var/icon_height = 32
var/agility = 20 //prob() to do agile things
/datum/species/proc/update_attack_types()
unarmed_attacks = list()
for(var/u_type in unarmed_types)
unarmed_attacks += new u_type()
/datum/species/New()
if(hud_type)
hud = new hud_type()
@@ -397,25 +376,8 @@
if(FEMALE)
t_him = "her"
//VOREStation Edit Start - Headpats and Handshakes.
if(H.zone_sel.selecting == "head")
H.visible_message( \
"<span class='notice'>[H] pats [target] on the head.</span>", \
"<span class='notice'>You pat [target] on the head.</span>", )
else if(H.zone_sel.selecting == "r_hand" || H.zone_sel.selecting == "l_hand")
H.visible_message( \
"<span class='notice'>[H] shakes [target]'s hand.</span>", \
"<span class='notice'>You shake [target]'s hand.</span>", )
//TFF 15/12/19 - Port nose booping from CHOMPStation
else if(H.zone_sel.selecting == "mouth")
H.visible_message( \
"<span class='notice'>[H] boops [target]'s nose.</span>", \
"<span class='notice'>You boop [target] on the nose.</span>", )
//VOREStation Edit End
else
H.visible_message("<span class='notice'>[H] hugs [target] to make [t_him] feel better!</span>", \
"<span class='notice'>You hug [target] to make [t_him] feel better!</span>")
H.visible_message("<span class='notice'>[H] hugs [target] to make [t_him] feel better!</span>", \
"<span class='notice'>You hug [target] to make [t_him] feel better!</span>")
/datum/species/proc/remove_inherent_verbs(var/mob/living/carbon/human/H)
if(inherent_verbs)
@@ -4,7 +4,6 @@
*/
var/global/list/human_icon_cache = list() //key is incredibly complex, see update_icons_body()
var/global/list/tail_icon_cache = list() //key is [species.race_key][r_skin][g_skin][b_skin]
var/global/list/wing_icon_cache = list() // See tail.
var/global/list/light_overlay_cache = list() //see make_worn_icon() on helmets
var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
@@ -87,13 +86,11 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
#define LEGCUFF_LAYER 25 //Same as handcuffs, for legcuffs
#define L_HAND_LAYER 26 //Left-hand item
#define R_HAND_LAYER 27 //Right-hand item
#define WING_LAYER 28 //Wings or protrusions over the suit.
#define TAIL_LAYER_ALT 29 //Modified tail-sprite layer. Tend to be larger.
#define MODIFIER_EFFECTS_LAYER 30 //Effects drawn by modifiers
#define FIRE_LAYER 31 //'Mob on fire' overlay layer
#define WATER_LAYER 32 //'Mob submerged' overlay layer
#define TARGETED_LAYER 33 //'Aimed at' overlay layer
#define TOTAL_LAYERS 33//<---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
#define MODIFIER_EFFECTS_LAYER 28 //Effects drawn by modifiers
#define FIRE_LAYER 29 //'Mob on fire' overlay layer
#define WATER_LAYER 30 //'Mob submerged' overlay layer
#define TARGETED_LAYER 31 //'Aimed at' overlay layer
#define TOTAL_LAYERS 31//<---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
//////////////////////////////////
/mob/living/carbon/human
@@ -183,7 +180,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
// blend the individual damage states with our icons
for(var/obj/item/organ/external/O in organs)
if(isnull(O) || O.is_stump() || O.is_hidden_by_tail())
if(isnull(O) || O.is_stump())
continue
O.update_icon()
@@ -255,29 +252,22 @@ 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])]"
if(species.color_mult)
icon_key += "[ICON_MULTIPLY]"
else
icon_key += "[ICON_ADD]"
icon_key += "[part.s_col_blend]"
else
icon_key += "#000000"
for(var/M in part.markings)
icon_key += "[M][part.markings[M]["color"]]"
if(part.robotic >= ORGAN_ROBOT)
icon_key += "2[part.model ? "-[part.model]": ""]"
robolimb_count++
if((part.robotic == ORGAN_ROBOT || part.robotic == ORGAN_LIFELIKE) && (part.organ_tag == BP_HEAD || part.organ_tag == BP_TORSO || part.organ_tag == BP_GROIN))
if(part.organ_tag == BP_HEAD || part.organ_tag == BP_TORSO || part.organ_tag == BP_GROIN)
robobody_count ++
else if(part.status & ORGAN_DEAD)
icon_key += "3"
else
icon_key += "1"
if(part.transparent)
icon_key += "_t"
icon_key = "[icon_key][husk ? 1 : 0][fat ? 1 : 0][hulk ? 1 : 0][skeleton ? 1 : 0]"
var/icon/base_icon
if(human_icon_cache[icon_key])
@@ -294,7 +284,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//That part makes left and right legs drawn topmost and lowermost when human looks WEST or EAST
//And no change in rendering for other parts (they icon_position is 0, so goes to 'else' part)
if(part.icon_position & (LEFT | RIGHT))
var/icon/temp2 = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi', icon_state = "blank")
var/icon/temp2 = new('icons/mob/human.dmi',"blank")
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
temp2.Insert(new/icon(temp,dir=SOUTH),dir=SOUTH)
if(!(part.icon_position & LEFT))
@@ -335,7 +325,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//tail
update_tail_showing()
update_wing_showing()
/mob/living/carbon/human/proc/update_skin()
if(QDESTROYING(src))
@@ -418,7 +407,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_MULTIPLY)
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
face_standing.Blend(facial_s, ICON_OVERLAY)
@@ -444,18 +433,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
face_standing.Blend(hair_s, ICON_OVERLAY)
if(head_organ.nonsolid || head_organ.transparent)
if(head_organ.nonsolid)
face_standing += rgb(,,,120)
var/icon/ears_s = get_ears_overlay()
if(ears_s)
face_standing.Blend(ears_s, ICON_OVERLAY)
if(istype(head_organ,/obj/item/organ/external/head/vr))
var/obj/item/organ/external/head/vr/head_organ_vr = head_organ
overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER, "pixel_y" = head_organ_vr.head_offset)
apply_layer(HAIR_LAYER)
return
overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER)
apply_layer(HAIR_LAYER)
@@ -595,12 +575,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
uniform_sprite = "[INV_W_UNIFORM_DEF_ICON].dmi"
//Build a uniform sprite
var/icon/c_mask = tail_style?.clip_mask
if(c_mask)
var/obj/item/clothing/suit/S = wear_suit
if((wear_suit?.flags_inv & HIDETAIL) || (istype(S) && S.taurized)) // Reasons to not mask: 1. If you're wearing a suit that hides the tail or if you're wearing a taurized suit.
c_mask = null
overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_w_uniform_str, default_icon = uniform_sprite, default_layer = UNIFORM_LAYER, clip_mask = c_mask)
overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_w_uniform_str, default_icon = uniform_sprite, default_layer = UNIFORM_LAYER)
apply_layer(UNIFORM_LAYER)
/mob/living/carbon/human/update_inv_wear_id()
@@ -682,11 +657,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(!shoes || (wear_suit && wear_suit.flags_inv & HIDESHOES) || (w_uniform && w_uniform.flags_inv & HIDESHOES))
return //Either nothing to draw, or it'd be hidden.
for(var/f in list(BP_L_FOOT, BP_R_FOOT))
var/obj/item/organ/external/foot/foot = get_organ(f)
if(istype(foot) && foot.is_hidden_by_tail()) //If either foot is hidden by the tail, don't render footwear.
return
//Allow for shoe layer toggle nonsense
var/shoe_layer = SHOES_LAYER
if(istype(shoes, /obj/item/clothing/shoes))
@@ -763,7 +733,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
update_inv_w_uniform()
update_inv_shoes()
update_tail_showing()
update_wing_showing()
if(!wear_suit)
return //No point, no suit.
@@ -778,13 +747,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
else
suit_sprite = "[INV_SUIT_DEF_ICON].dmi"
var/icon/c_mask = null
var/tail_is_rendered = (overlays_standing[TAIL_LAYER] || overlays_standing[TAIL_LAYER_ALT])
var/valid_clip_mask = tail_style?.clip_mask
if(tail_is_rendered && valid_clip_mask && !(istype(suit) && suit.taurized)) //Clip the lower half of the suit off using the tail's clip mask for taurs since taur bodies aren't hidden.
c_mask = valid_clip_mask
overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_wear_suit_str, default_icon = suit_sprite, default_layer = SUIT_LAYER, clip_mask = c_mask)
overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_wear_suit_str, default_icon = suit_sprite, default_layer = SUIT_LAYER)
apply_layer(SUIT_LAYER)
@@ -897,23 +860,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
return
remove_layer(TAIL_LAYER)
remove_layer(TAIL_LAYER_ALT) // Alt Tail Layer
var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER
var/image/vr_tail_image = get_tail_image()
if(vr_tail_image)
vr_tail_image.layer = BODY_LAYER+used_tail_layer
overlays_standing[used_tail_layer] = vr_tail_image
apply_layer(used_tail_layer)
return
var/species_tail = species.get_tail(src) // Species tail icon_state prefix.
//This one is actually not that bad I guess.
if(species_tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL))
var/icon/tail_s = get_tail_icon()
overlays_standing[used_tail_layer] = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+used_tail_layer) // Alt Tail Layer
overlays_standing[TAIL_LAYER] = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+TAIL_LAYER)
animate_tail_reset()
//TODO: Is this the appropriate place for this, and not on species...?
@@ -923,34 +875,31 @@ 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 //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), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
tail_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
// The following will not work with animated tails.
var/use_species_tail = species.get_tail_hair(src)
if(use_species_tail)
var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_tail(src)]_[use_species_tail]")
hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species.color_mult ? ICON_MULTIPLY : ICON_ADD) //Check for species color_mult
hair_icon.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
tail_icon.Blend(hair_icon, ICON_OVERLAY)
tail_icon_cache[icon_key] = tail_icon
return tail_icon
/mob/living/carbon/human/proc/set_tail_state(var/t_state)
var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // Alt Tail Layer
var/image/tail_overlay = overlays_standing[used_tail_layer]
var/image/tail_overlay = overlays_standing[TAIL_LAYER]
remove_layer(TAIL_LAYER)
remove_layer(TAIL_LAYER_ALT)
if(tail_overlay)
overlays_standing[used_tail_layer] = tail_overlay
overlays_standing[TAIL_LAYER] = tail_overlay
if(species.get_tail_animation(src))
tail_overlay.icon_state = t_state
. = tail_overlay
apply_layer(used_tail_layer)
apply_layer(TAIL_LAYER)
//Not really once, since BYOND can't do that.
//Update this if the ability to flick() images or make looping animation start at the first frame is ever added.
@@ -960,9 +909,8 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
return
var/t_state = "[species.get_tail(src)]_once"
var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // Alt Tail Layer
var/image/tail_overlay = overlays_standing[used_tail_layer] // Alt Tail Layer
var/image/tail_overlay = overlays_standing[TAIL_LAYER]
if(tail_overlay && tail_overlay.icon_state == t_state)
return //let the existing animation finish
@@ -970,7 +918,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(tail_overlay)
spawn(20)
//check that the animation hasn't changed in the meantime
if(overlays_standing[used_tail_layer] == tail_overlay && tail_overlay.icon_state == t_state) // Alt Tail Layer
if(overlays_standing[TAIL_LAYER] == tail_overlay && tail_overlay.icon_state == t_state)
animate_tail_stop()
/mob/living/carbon/human/proc/animate_tail_start()
@@ -993,7 +941,6 @@ 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) //So tails stop when someone dies. TODO - Fix this hack ~Leshana
/mob/living/carbon/human/proc/animate_tail_stop()
if(QDESTROYING(src))
@@ -1001,20 +948,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
set_tail_state("[species.get_tail(src)]_static")
// Wings! See update_icons_vr.dm for more wing procs
/mob/living/carbon/human/proc/update_wing_showing()
if(QDESTROYING(src))
return
remove_layer(WING_LAYER)
var/image/vr_wing_image = get_wing_image()
if(vr_wing_image)
vr_wing_image.layer = BODY_LAYER+WING_LAYER
overlays_standing[WING_LAYER] = vr_wing_image
apply_layer(WING_LAYER)
/mob/living/carbon/human/update_modifier_visuals()
if(QDESTROYING(src))
return
@@ -1080,89 +1013,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
overlays_standing[SURGERY_LAYER] = total
apply_layer(SURGERY_LAYER)
/mob/living/carbon/human/proc/get_wing_image()
if(QDESTROYING(src))
return
//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)
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)
if(wing_style.extra_overlay)
var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay)
overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
return image(wing_s)
/mob/living/carbon/human/proc/get_ears_overlay()
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_ears, src.g_ears, src.b_ears), 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)
overlay.Blend(rgb(src.r_ears2, src.g_ears2, src.b_ears2), ear_style.color_blend_mode)
ears_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
return ears_s
return null
/mob/living/carbon/human/proc/get_tail_image()
//If you are FBP with tail style and didn't set a custom one
var/datum/robolimb/model = isSynthetic()
if(istype(model) && model.includes_tail && !tail_style)
var/icon/tail_s = new/icon("icon" = synthetic.icon, "icon_state" = "tail")
tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
return image(tail_s)
//If you have a custom tail selected
if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !isTaurTail(tail_style)))
var/icon/tail_s = new/icon("icon" = tail_style.icon, "icon_state" = wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)
if(tail_style.do_colouration)
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)
if(wagging && tail_style.ani_state)
overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay_w)
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)
else
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)
if(isTaurTail(tail_style))
/* var/datum/sprite_accessory/tail/taur/taurtype = tail_style
if(taurtype.can_ride && !riding_datum)
riding_datum = new /datum/riding/taur(src)
verbs |= /mob/living/carbon/human/proc/taur_mount
verbs |= /mob/living/proc/toggle_rider_reins */
return image(tail_s, "pixel_x" = -16)
else
return image(tail_s)
return null
// TODO - Move this to where it should go ~Leshana
/mob/living/proc/stop_flying()
if(QDESTROYING(src))
return
flying = FALSE
return 1
/mob/living/carbon/human/stop_flying()
if((. = ..()))
update_wing_showing()
//Human Overlays Indexes/////////
#undef MUTATIONS_LAYER
#undef SKIN_LAYER
+1 -4
View File
@@ -71,7 +71,4 @@
var/looking_elsewhere = FALSE //If the mob's view has been relocated to somewhere else, like via a camera or with binocs
var/image/selected_image = null // Used for buildmode AI control stuff.
var/tail_alt = 0
var/flying = 0 // Allows flight
var/image/selected_image = null // Used for buildmode AI control stuff.
@@ -251,12 +251,8 @@
/datum/preferences/proc/update_preview_icon()
var/mob/living/carbon/human/dummy/mannequin/mannequin = get_mannequin(client_ckey)
if(!mannequin.dna) // Special handling for preview icons before SSAtoms has initailized.
mannequin.dna = new /datum/dna(null)
mannequin.delete_inventory(TRUE)
dress_preview_mob(mannequin)
mannequin.toggle_tail_vr(setting = TRUE)
mannequin.toggle_wing_vr(setting = TRUE)
COMPILE_OVERLAYS(mannequin)
preview_icon = icon('icons/effects/128x48.dmi', bgstate)
@@ -34,11 +34,6 @@
// Whether or not the accessory can be affected by colouration
var/do_colouration = 1
var/color_blend_mode = ICON_MULTIPLY // If checked.
// Ckey of person allowed to use this, if defined.
var/list/ckeys_allowed = null
var/apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings
/*
////////////////////////////
@@ -933,366 +928,6 @@
icon_state = "hair_ziegler"
flags = HAIR_TIEABLE
/datum/sprite_accessory/hair/astolfo
name = "Astolfo"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "hair_astolfo"
/datum/sprite_accessory/hair/awoohair
name = "Shoulder-length Messy"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "momijihair"
/datum/sprite_accessory/hair/braid
name = "Floorlength Braid"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "hair_braid"
/datum/sprite_accessory/hair/twindrills
name = "Twin Drills"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "hair_twincurl"
/datum/sprite_accessory/hair/ponytail6_fixed
name = "Ponytail 6.2"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "hair_ponytail6"
/datum/sprite_accessory/hair/una_hood
name = "Cobra Hood"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "soghun_hood"
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/hair/una_doublehorns
name = "Double Unathi Horns"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "soghun_dubhorns"
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/hair/taramaw
name = "Hairmaw (Liquidfirefly)"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "maw_hair"
ckeys_allowed = list("liquidfirefly")
do_colouration = 0
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/hair/citheronia_colorable
name = "Citheronia"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "citheronia_hair_c"
do_colouration = 1
/datum/sprite_accessory/hair/sergal_plain
name = "Sergal Plain"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "serg_plain"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/hair/sergal_medicore
name = "Sergal Medicore"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "serg_medicore"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/hair/sergal_tapered
name = "Sergal Tapered"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "serg_tapered"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/hair/sergal_fairytail
name = "Sergal Fairytail"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "serg_fairytail"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
// Vulpa stuffs
/datum/sprite_accessory/hair/vulp_hair_none
name = "None"
icon_state = "bald"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_kajam
name = "Kajam"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "kajam"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_keid
name = "Keid"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "keid"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_adhara
name = "Adhara"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "adhara"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_kleeia
name = "Kleeia"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "kleeia"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_mizar
name = "Mizar"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "mizar"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_apollo
name = "Apollo"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "apollo"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_belle
name = "Belle"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "belle"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_bun
name = "Vulp Bun"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "bun"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_jagged
name = "Jagged"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "jagged"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_curl
name = "Curl"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "curl"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_hawk
name = "Hawk"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "hawk"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_anita
name = "Anita"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "anita"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_short
name = "Short"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "short"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_spike
name = "Spike"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "spike"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
//xeno stuffs
/datum/sprite_accessory/hair/xeno_head_drone_color
name = "Drone dome"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "cxeno_drone"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
// figure this one out for better coloring
/datum/sprite_accessory/hair/xeno_head_sentinel_color
name = "Sentinal dome"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "cxeno_sentinel"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/xeno_head_queen_color
name = "Queen dome"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "cxeno_queen"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/xeno_head_hunter_color
name = "Hunter dome"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "cxeno_hunter"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/xeno_head_praetorian_color
name = "Praetorian dome"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "cxeno_praetorian"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
// Shadekin stuffs
/datum/sprite_accessory/hair/shadekin_hair_short
name = "Shadekin Short Hair"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "shadekin_short"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/shadekin_hair_poofy
name = "Shadekin Poofy Hair"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "shadekin_poofy"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/shadekin_hair_long
name = "Shadekin Long Hair"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "shadekin_long"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/hair/shadekin_hair_rivyr
name = "Rivyr Hair"
icon = 'icons/mob/human_face_alt.dmi'
icon_add = 'icons/mob/human_face_alt_add.dmi'
icon_state = "shadekin_rivyr"
ckeys_allowed = list("verysoft")
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/*
shaved
name = "Shaved"
icon_state = "bald"
gender = NEUTER
species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
*/
/datum/sprite_accessory/facial_hair/neck_fluff
name = "Neck Fluff"
icon = 'icons/mob/human_face_or_alt.dmi'
icon_state = "facial_neckfluff"
gender = NEUTER
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/facial_hair/vulp_none
name = "None"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "none"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/facial_hair/vulp_blaze
name = "Blaze"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "vulp_facial_blaze"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/facial_hair/vulp_vulpine
name = "Vulpine"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "vulp_facial_vulpine"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/facial_hair/vulp_earfluff
name = "Earfluff"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "vulp_facial_earfluff"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/facial_hair/vulp_mask
name = "Mask"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "vulp_facial_mask"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/facial_hair/vulp_patch
name = "Patch"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "vulp_facial_patch"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/facial_hair/vulp_ruff
name = "Ruff"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "vulp_facial_ruff"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/facial_hair/vulp_kita
name = "Kita"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "vulp_facial_kita"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/datum/sprite_accessory/facial_hair/vulp_swift
name = "Swift"
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "vulp_facial_swift"
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = NEUTER
/*
///////////////////////////////////
/ =---------------------------= /
@@ -1303,7 +938,6 @@ shaved
/datum/sprite_accessory/facial_hair
icon = 'icons/mob/Human_face.dmi'
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/facial_hair/shaved
name = "Shaved"
@@ -1492,23 +1126,23 @@ shaved
/datum/sprite_accessory/hair/skr_tentacle_veryshort
name = "Skrell Short Tentacles"
icon_state = "skrell_hair_short"
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
species_allowed = list(SPECIES_SKRELL)
gender = MALE
/datum/sprite_accessory/hair/skr_tentacle_short
name = "Skrell Average Tentacles"
icon_state = "skrell_hair_average"
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
species_allowed = list(SPECIES_SKRELL)
/datum/sprite_accessory/hair/skr_tentacle_average
name = "Skrell Long Tentacles"
icon_state = "skrell_hair_long"
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
species_allowed = list(SPECIES_SKRELL)
/datum/sprite_accessory/hair/skr_tentacle_verylong
name = "Skrell Very Long Tentacles"
icon_state = "skrell_hair_verylong"
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
species_allowed = list(SPECIES_SKRELL)
//Tajaran hairstyles
/datum/sprite_accessory/hair/taj_ears
@@ -1790,8 +1424,6 @@ shaved
//like Tajaran inner-ear coloring overlay stuff.
species_allowed = list()
color_blend_mode = ICON_ADD
var/body_parts = list() //A list of bodyparts this covers, in organ_tag defines
//Reminder: BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD
@@ -1,581 +0,0 @@
/*
////////////////////////////
/ =--------------------= /
/ == Ear Definitions == /
/ =--------------------= /
////////////////////////////
*/
/datum/sprite_accessory/ears
name = "You should not see this..."
icon = 'icons/mob/human_races/sprite_accessories/ears.dmi'
do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
var/extra_overlay // Icon state of an additional overlay to blend in.
var/desc = "You should not see this..."
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/ears/shadekin
name = "Shadekin Ears, colorable"
desc = ""
icon_state = "shadekin"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
apply_restrictions = TRUE
/datum/sprite_accessory/ears/taj_ears
name = "Tajaran Ears"
icon_state = "ears_plain"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
extra_overlay = "ears_plain-inner"
/datum/sprite_accessory/ears/taj_ears_tall
name = "Tajaran Tall Ears"
icon_state = "msai_plain"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
extra_overlay = "msai_plain-inner"
/datum/sprite_accessory/ears/squirrel_orange
name = "squirel, orange"
desc = ""
icon_state = "squirrel-orange"
/datum/sprite_accessory/ears/squirrel_red
name = "squirrel, red"
desc = ""
icon_state = "squirrel-red"
/datum/sprite_accessory/ears/bunny_white
name = "bunny, white"
desc = ""
icon_state = "bunny"
/datum/sprite_accessory/ears/bear_brown
name = "bear, brown"
desc = ""
icon_state = "bear-brown"
/datum/sprite_accessory/ears/bear_panda
name = "bear, panda"
desc = ""
icon_state = "panda"
/datum/sprite_accessory/ears/wolf_grey
name = "wolf, grey"
desc = ""
icon_state = "wolf-grey"
/datum/sprite_accessory/ears/wolf_green
name = "wolf, green"
desc = ""
icon_state = "wolf-green"
/datum/sprite_accessory/ears/wisewolf
name = "wolf, wise"
desc = ""
icon_state = "wolf-wise"
/datum/sprite_accessory/ears/mouse_grey
name = "mouse, grey"
desc = ""
icon_state = "mouse-grey"
/datum/sprite_accessory/ears/bee
name = "bee antennae"
desc = ""
icon_state = "bee"
/datum/sprite_accessory/ears/antennae
name = "antennae, colorable"
desc = ""
icon_state = "antennae"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/curly_bug
name = "curly antennae, colorable"
desc = ""
icon_state = "curly_bug"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/dual_robot
name = "synth antennae, colorable"
desc = ""
icon_state = "dual_robot_antennae"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/right_robot
name = "right synth, colorable"
desc = ""
icon_state = "right_robot_antennae"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/left_robot
name = "left synth, colorable"
desc = ""
icon_state = "left_robot_antennae"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/oni_h1
name = "oni horns"
desc = ""
icon_state = "oni-h1"
/datum/sprite_accessory/ears/oni_h1_c
name = "oni horns, colorable"
desc = ""
icon_state = "oni-h1_c"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/demon_horns1
name = "demon horns"
desc = ""
icon_state = "demon-horns1"
/datum/sprite_accessory/ears/demon_horns1_c
name = "demon horns, colorable"
desc = ""
icon_state = "demon-horns1_c"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/demon_horns2
name = "demon horns, colorable(outward)"
desc = ""
icon_state = "demon-horns2"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/dragon_horns
name = "dragon horns, colorable"
desc = ""
icon_state = "dragon-horns"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/foxears
name = "highlander zorren ears"
desc = ""
icon_state = "foxears"
/datum/sprite_accessory/ears/fenears
name = "flatland zorren ears"
desc = ""
icon_state = "fenears"
/datum/sprite_accessory/ears/sergal //Redundant
name = "Sergal ears"
icon_state = "serg_plain_s"
/datum/sprite_accessory/ears/foxearshc
name = "highlander zorren ears, colorable"
desc = ""
icon_state = "foxearshc"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/fenearshc
name = "flatland zorren ears, colorable"
desc = ""
icon_state = "fenearshc"
extra_overlay = "fenears-inner"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/sergalhc
name = "Sergal ears, colorable"
icon_state = "serg_plain_s"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/mousehc
name = "mouse, colorable"
desc = ""
icon_state = "mouse"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "mouseinner"
/datum/sprite_accessory/ears/mousehcno
name = "mouse, colorable, no inner"
desc = ""
icon_state = "mouse"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/wolfhc
name = "wolf, colorable"
desc = ""
icon_state = "wolf"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "wolfinner"
/datum/sprite_accessory/ears/bearhc
name = "bear, colorable"
desc = ""
icon_state = "bear"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/smallbear
name = "small bear"
desc = ""
icon_state = "smallbear"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/squirrelhc
name = "squirrel, colorable"
desc = ""
icon_state = "squirrel"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/kittyhc
name = "kitty, colorable"
desc = ""
icon_state = "kitty"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "kittyinner"
/datum/sprite_accessory/ears/bunnyhc
name = "bunny, colorable"
desc = ""
icon_state = "bunny"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/antlers
name = "antlers"
desc = ""
icon_state = "antlers"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/antlers_e
name = "antlers with ears"
desc = ""
icon_state = "cow-nohorns"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "antlers_mark"
/datum/sprite_accessory/ears/smallantlers
name = "small antlers"
desc = ""
icon_state = "smallantlers"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/smallantlers_e
name = "small antlers with ears"
desc = ""
icon_state = "smallantlers"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "deer"
/datum/sprite_accessory/ears/deer
name = "deer ears"
desc = ""
icon_state = "deer"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/cow
name = "cow, horns"
desc = ""
icon_state = "cow"
/datum/sprite_accessory/ears/cowc
name = "cow, horns, colorable"
desc = ""
icon_state = "cow-c"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/cow_nohorns
name = "cow, no horns"
desc = ""
icon_state = "cow-nohorns"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/caprahorns
name = "caprine horns"
desc = ""
icon_state = "caprahorns"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/otie
name = "otie, colorable"
desc = ""
icon_state = "otie"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "otie-inner"
/datum/sprite_accessory/ears/donkey
name = "donkey, colorable"
desc = ""
icon_state = "donkey"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "otie-inner"
/datum/sprite_accessory/ears/zears
name = "jagged ears"
desc = ""
icon_state = "zears"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/elfs
name = "elven ears"
desc = ""
icon_state = "elfs"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/ears/sleek
name = "sleek ears"
desc = ""
icon_state = "sleek"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/drake
name = "drake frills"
desc = ""
icon_state = "drake"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/vulp
name = "vulpkanin, dual-color"
desc = ""
icon_state = "vulp"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "vulp-inner"
/datum/sprite_accessory/ears/vulp_short
name = "vulpkanin short"
desc = ""
icon_state = "vulp_terrier"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/vulp_short_dc
name = "vulpkanin short, dual-color"
desc = ""
icon_state = "vulp_terrier"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "vulp_terrier-inner"
/datum/sprite_accessory/ears/vulp_jackal
name = "vulpkanin thin, dual-color"
desc = ""
icon_state = "vulp_jackal"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "vulp_jackal-inner"
/datum/sprite_accessory/ears/bunny_floppy
name = "floopy bunny ears (colorable)"
desc = ""
icon_state = "floppy_bun"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/teshari
name = "Teshari (colorable fluff)"
desc = ""
icon_state = "teshari"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "teshariinner"
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/ears/tesharihigh
name = "Teshari upper ears (colorable fluff)"
desc = ""
icon_state = "tesharihigh"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "tesharihighinner"
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/ears/tesharilow
name = "Teshari lower ears (colorable fluff)"
desc = ""
icon_state = "tesharilow"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "tesharilowinner"
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/ears/inkling
name = "colorable mature inkling hair"
desc = ""
icon = 'icons/mob/human_face_alt.dmi'
icon_state = "inkling-colorable"
color_blend_mode = ICON_MULTIPLY
do_colouration = 1
/datum/sprite_accessory/ears/large_dragon
name = "Large dragon horns"
desc = ""
icon_state = "big_liz"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
// Special snowflake ears go below here.
/datum/sprite_accessory/ears/molenar_kitsune
name = "quintail kitsune ears (Molenar)"
desc = ""
icon_state = "molenar-kitsune"
ckeys_allowed = list("molenar")
/datum/sprite_accessory/ears/lilimoth_antennae
name = "citheronia antennae (Kira72)"
desc = ""
icon_state = "lilimoth_antennae"
ckeys_allowed = list("kira72")
/datum/sprite_accessory/ears/molenar_deathclaw
name = "deathclaw ears (Molenar)"
desc = ""
icon_state = "molenar-deathclaw"
ckeys_allowed = list("molenar")
/datum/sprite_accessory/ears/miria_fluffdragon
name = "fluffdragon ears (Miria Masters)"
desc = ""
icon_state = "miria-fluffdragonears"
ckeys_allowed = list("miriamasters")
/datum/sprite_accessory/ears/miria_kitsune
name = "kitsune ears (Miria Masters)"
desc = ""
icon_state = "miria-kitsuneears"
ckeys_allowed = list("miriamasters")
/datum/sprite_accessory/ears/runac
name = "fennecsune ears (Runac)"
desc = ""
icon_state = "runac"
ckeys_allowed = list("rebcom1807")
/datum/sprite_accessory/ears/kerena
name = "wingwolf ears (Kerena)"
desc = ""
icon_state = "kerena"
ckeys_allowed = list("somekindofpony")
/datum/sprite_accessory/ears/rosey
name = "tritail kitsune ears (Rosey)"
desc = ""
icon_state = "rosey"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
ckeys_allowed = list("joey4298")
/datum/sprite_accessory/ears/aronai
name = "aronai ears/head (Aronai)"
desc = ""
icon_state = "aronai"
ckeys_allowed = list("arokha")
/datum/sprite_accessory/ears/holly
name = "tigress ears (Holly Sharp)"
desc = ""
icon_state = "tigressears"
ckeys_allowed = list("hoodoo")
/datum/sprite_accessory/ears/molenar_inkling
name = "teal mature inkling hair (Kari Akiren)"
desc = ""
icon_state = "molenar-tentacle"
ckeys_allowed = list("molenar")
/datum/sprite_accessory/ears/shock
name = "pharoah hound ears (Shock Diamond)"
desc = ""
icon_state = "shock"
ckeys_allowed = list("icowom","cameron653")
/datum/sprite_accessory/ears/alurane
name = "alurane ears/hair (Pumila)"
desc = ""
icon_state = "alurane-ears"
ckeys_allowed = list("natje")
/datum/sprite_accessory/ears/frost
name = "Frost antenna"
desc = ""
icon_state = "frosted_tips"
ckeys_allowed = list("tucker0666")
/datum/sprite_accessory/ears/sylv_pip
name = "sylveon ears and ribbons (Pip Shyner)"
desc = ""
icon_state = "pipears"
ckeys_allowed = list("phoaly")
/datum/sprite_accessory/ears/elf_caprine_colorable
name = "Caprine horns with pointy ears, colorable"
desc = ""
icon_state = "elfs"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "caprahorns"
/datum/sprite_accessory/ears/elf_oni_colorable
name = "oni horns with pointy ears, colorable"
desc = ""
icon_state = "elfs"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "oni-h1_c"
/datum/sprite_accessory/ears/elf_demon_colorable
name = "Demon horns with pointy ears, colorable"
desc = ""
icon_state = "elfs"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "demon-horns1_c"
/datum/sprite_accessory/ears/elf_demon_outwards_colorable
name = "Demon horns with pointy ears, outwards, colourable"
desc = ""
icon_state = "elfs"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "demon-horns2"
/datum/sprite_accessory/ears/elf_dragon_colorable
name = "Dragon horns with pointy ears, colourable"
desc = ""
icon_state = "elfs"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "dragon-horns"
@@ -1,572 +0,0 @@
/datum/sprite_accessory/marking/vr
icon = 'icons/mob/human_races/markings_alt.dmi'
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/marking/vr/vulp_belly
name = "belly fur (Vulp)"
icon_state = "vulp_belly"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
/datum/sprite_accessory/marking/vr/vulp_fullbelly
name = "full belly fur (Vulp)"
icon_state = "vulp_fullbelly"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
/datum/sprite_accessory/marking/vr/vulp_crest
name = "belly crest (Vulp)"
icon_state = "vulp_crest"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
/datum/sprite_accessory/marking/vr/vulp_nose
name = "nose (Vulp)"
icon_state = "vulp_nose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/vulp_short_nose
name = "nose, short (Vulp)"
icon_state = "vulp_short_nose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/snoutstripe
name = "snout stripe (Vulp)"
icon_state = "snoutstripe"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/vulp_face
name = "face (Vulp)"
icon_state = "vulp_face"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/vulp_facealt
name = "face, alt. (Vulp)"
icon_state = "vulp_facealt"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/vulp_earsface
name = "ears and face (Vulp)"
icon_state = "vulp_earsface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/vulp_all
name = "all head highlights (Vulp)"
icon_state = "vulp_all"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/sergal_full
name = "Sergal Markings"
icon_state = "sergal_full"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
species_allowed = list("Sergal")
/datum/sprite_accessory/marking/vr/sergal_full_female
name = "Sergal Markings (Female)"
icon_state = "sergal_full_female"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
species_allowed = list("Sergal")
/datum/sprite_accessory/marking/vr/monoeye
name = "Monoeye"
icon_state = "monoeye"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/spidereyes
name = "Spider Eyes"
icon_state = "spidereyes"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/sergaleyes
name = "Sergal Eyes"
icon_state = "eyes_sergal"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/brows
name = "Eyebrows"
icon_state = "brows"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/nevrean_female
name = "Female Nevrean beak"
icon_state = "nevrean_f"
body_parts = list(BP_HEAD)
color_blend_mode = ICON_MULTIPLY
gender = FEMALE
/datum/sprite_accessory/marking/vr/nevrean_male
name = "Male Nevrean beak"
icon_state = "nevrean_m"
body_parts = list(BP_HEAD)
color_blend_mode = ICON_MULTIPLY
gender = MALE
/datum/sprite_accessory/marking/vr/spots
name = "Spots"
icon_state = "spots"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
/datum/sprite_accessory/marking/vr/shaggy_mane
name = "Shaggy mane/feathers"
icon_state = "shaggy"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO)
/datum/sprite_accessory/marking/vr/jagged_teeth
name = "Jagged teeth"
icon_state = "jagged"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/blank_face
name = "Blank round face (use with monster mouth)"
icon_state = "blankface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/monster_mouth
name = "Monster mouth"
icon_state = "monster"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/saber_teeth
name = "Saber teeth"
icon_state = "saber"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/fangs
name = "Fangs"
icon_state = "fangs"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/tusks
name = "Tusks"
icon_state = "tusks"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/otie_face
name = "Otie face"
icon_state = "otieface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/otie_nose
name = "Otie nose"
icon_state = "otie_nose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/otienose_lite
name = "Short otie nose"
icon_state = "otienose_lite"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/backstripes
name = "Back stripes"
icon_state = "otiestripes"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/vr/belly_butt
name = "Belly and butt"
icon_state = "bellyandbutt"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_GROIN,BP_TORSO)
/datum/sprite_accessory/marking/vr/fingers_toes
name = "Fingers and toes"
icon_state = "fingerstoes"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND)
/datum/sprite_accessory/marking/vr/otie_socks
name = "Fingerless socks"
icon_state = "otiesocks"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
/datum/sprite_accessory/marking/vr/corvid_beak
name = "Corvid beak"
icon_state = "corvidbeak"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/corvid_belly
name = "Corvid belly"
icon_state = "corvidbelly"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_GROIN,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/vr/cow_body
name = "Cow markings"
icon_state = "cowbody"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/vr/cow_nose
name = "Cow nose"
icon_state = "cownose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/zmask
name = "Eye mask"
icon_state = "zmask"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/zbody
name = "Thick jagged stripes"
icon_state = "zbody"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG,BP_R_LEG,BP_GROIN,BP_TORSO)
/datum/sprite_accessory/marking/vr/znose
name = "Jagged snout"
icon_state = "znose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/otter_nose
name = "Otter nose"
icon_state = "otternose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/otter_face
name = "Otter face"
icon_state = "otterface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/deer_face
name = "Deer face"
icon_state = "deerface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/sharkface
name = "Akula snout"
icon_state = "sharkface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/sheppy_face
name = "Shepherd snout"
icon_state = "shepface"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/sheppy_back
name = "Shepherd back"
icon_state = "shepback"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
/datum/sprite_accessory/marking/vr/zorren_belly_male
name = "Zorren Male Torso"
icon_state = "zorren_belly"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
/datum/sprite_accessory/marking/vr/zorren_belly_female
name = "Zorren Female Torso"
icon_state = "zorren_belly_female"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO,BP_GROIN)
/datum/sprite_accessory/marking/vr/zorren_back_patch
name = "Zorren Back Patch"
icon_state = "zorren_backpatch"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO)
/datum/sprite_accessory/marking/vr/zorren_face_male
name = "Zorren Male Face"
icon_state = "zorren_face"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
gender = MALE
/datum/sprite_accessory/marking/vr/zorren_face_female
name = "Zorren Female Face"
icon_state = "zorren_face_female"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
gender = FEMALE
/datum/sprite_accessory/marking/vr/zorren_muzzle_male
name = "Zorren Male Muzzle"
icon_state = "zorren_muzzle"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
gender = MALE
/datum/sprite_accessory/marking/vr/zorren_muzzle_female
name = "Zorren Female Muzzle"
icon_state = "zorren_muzzle_female"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
gender = FEMALE
/datum/sprite_accessory/marking/vr/zorren_socks
name = "Zorren Socks"
icon_state = "zorren_socks"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
/datum/sprite_accessory/marking/vr/zorren_longsocks
name = "Zorren Longsocks"
icon_state = "zorren_longsocks"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
/datum/sprite_accessory/marking/vr/tesh_feathers
name = "Teshari Feathers"
icon_state = "tesh-feathers"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND)
/datum/sprite_accessory/marking/vr/harpy_feathers
name = "Rapala leg Feather"
icon_state = "harpy-feathers"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG,BP_R_LEG)
/datum/sprite_accessory/marking/vr/harpy_legs
name = "Rapala leg coloring"
icon_state = "harpy-leg"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
/datum/sprite_accessory/marking/vr/chooves
name = "Cloven hooves"
icon_state = "chooves"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT)
/datum/sprite_accessory/marking/vr/alurane
name = "Alurane Body"
icon_state = "alurane"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
ckeys_allowed = list("natje")
/datum/sprite_accessory/marking/vr/body_tone
name = "Body toning (for emergency contrast loss)"
icon_state = "btone"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
/datum/sprite_accessory/marking/vr/gloss
name = "Full body gloss"
icon_state = "gloss"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/vr/eboop_panels
name = "Eggnerd FBP panels"
icon_state = "eboop"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/vr/osocks_rarm
name = "Modular Longsock (right arm)"
icon_state = "osocks"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_ARM,BP_R_HAND)
/datum/sprite_accessory/marking/vr/osocks_larm
name = "Modular Longsock (left arm)"
icon_state = "osocks"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_ARM,BP_L_HAND)
/datum/sprite_accessory/marking/vr/osocks_rleg
name = "Modular Longsock (right leg)"
icon_state = "osocks"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_FOOT,BP_R_LEG)
/datum/sprite_accessory/marking/vr/osocks_lleg
name = "Modular Longsock (left leg)"
icon_state = "osocks"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_L_LEG)
/datum/sprite_accessory/marking/vr/animeeyesinner
name = "Anime Eyes Inner"
icon_state = "animeeyesinner"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/animeeyesouter
name = "Anime Eyes Outer"
icon_state = "animeeyesouter"
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/panda_eye_marks
name = "Panda Eye Markings"
icon_state = "eyes_panda"
body_parts = list(BP_HEAD)
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/marking/vr/catwomantorso
name = "Catwoman chest stripes"
icon_state = "catwomanchest"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_TORSO)
/datum/sprite_accessory/marking/vr/catwomangroin
name = "Catwoman groin stripes"
icon_state = "catwomangroin"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_GROIN)
/datum/sprite_accessory/marking/vr/catwoman_rleg
name = "Catwoman right leg stripes"
icon_state = "catwomanright"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_LEG)
/datum/sprite_accessory/marking/vr/catwoman_lleg
name = "Catwoman left leg stripes"
icon_state = "catwomanleft"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG)
/datum/sprite_accessory/marking/vr/teshi_small_feathers
name = "Teshari small wingfeathers"
icon_state = "teshi_sf"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND,BP_TORSO)
/datum/sprite_accessory/marking/vr/spirit_lights
name = "Ward - Spirit FBP Lights"
icon_state = "lights"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/vr/spirit_lights_body
name = "Ward - Spirit FBP Lights (body)"
icon_state = "lights"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO)
/datum/sprite_accessory/marking/vr/spirit_lights_head
name = "Ward - Spirit FBP Lights (head)"
icon_state = "lights"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/spirit_panels
name = "Ward - Spirit FBP Panels"
icon_state = "panels"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
/datum/sprite_accessory/marking/vr/spirit_panels_body
name = "Ward - Spirit FBP Panels (body)"
icon_state = "panels"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
/datum/sprite_accessory/marking/vr/spirit_panels_head
name = "Ward - Spirit FBP Panels (head)"
icon_state = "panels"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/tentacle_head
name = "Squid Head"
icon_state = "tentaclehead"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/tentacle_mouth
name = "Tentacle Mouth"
icon_state = "tentaclemouth"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/rosette
name = "Rosettes"
icon_state = "rosette"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
/*
werewolf_nose
name = "Werewolf nose"
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
icon_state = "werewolf_nose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
species_allowed = list(SPECIES_WEREBEAST)
werewolf_face
name = "Werewolf face"
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
icon_state = "werewolf"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
species_allowed = list(SPECIES_WEREBEAST)
werewolf_belly
name = "Werewolf belly"
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
icon_state = "werewolf"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_GROIN,BP_TORSO)
species_allowed = list(SPECIES_WEREBEAST)
werewolf_socks
name = "Werewolf socks"
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
icon_state = "werewolf"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
species_allowed = list(SPECIES_WEREBEAST)
shadekin_snoot
name = "Shadekin Snoot"
icon_state = "shadekin-snoot"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
*/
/datum/sprite_accessory/marking/vr/taj_nose_alt
name = "Nose Color, alt. (Taj)"
icon_state = "taj_nosealt"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/talons
name = "Talons"
icon_state = "talons"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
/datum/sprite_accessory/marking/vr/claws
name = "Claws"
icon_state = "claws"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_HAND,BP_R_HAND)
/datum/sprite_accessory/marking/vr/equine_snout //Why the long face? Works best with sergal bodytype.
name = "Equine Snout"
icon_state = "donkey"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/equine_nose
name = "Equine Nose"
icon_state = "dnose"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
File diff suppressed because it is too large Load Diff
@@ -1,655 +0,0 @@
/*
/datum/riding/taur
keytype = /obj/item/weapon/material/twohanded/fluff/riding_crop // Crack!
nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs.
key_name = "a riding crop" // What the 'keys' for the thing being rided on would be called.
only_one_driver = TRUE // If true, only the person in 'front' (first on list of riding mobs) can drive.
/datum/riding/taur/handle_vehicle_layer()
if(ridden.has_buckled_mobs())
ridden.layer = initial(ridden.layer)
else
var/mob/living/L = ridden
if(!(istype(L) && (L.status_flags & HIDING)))
ridden.layer = initial(ridden.layer)
/datum/riding/taur/ride_check(mob/living/M)
var/mob/living/L = ridden
if(L.stat)
force_dismount(M)
return FALSE
return TRUE
/datum/riding/taur/force_dismount(mob/M)
. = ..()
ridden.visible_message("<span class='notice'>[M] stops riding [ridden]!</span>")
//Hoooo boy.
/datum/riding/taur/get_offsets(pass_index) // list(dir = x, y, layer)
var/mob/living/L = ridden
var/scale = L.size_multiplier
var/list/values = list(
"[NORTH]" = list(0, 8*scale, ABOVE_MOB_LAYER),
"[SOUTH]" = list(0, 8*scale, BELOW_MOB_LAYER),
"[EAST]" = list(-10*scale, 8*scale, ABOVE_MOB_LAYER),
"[WEST]" = list(10*scale, 8*scale, ABOVE_MOB_LAYER))
return values
//Human overrides for taur riding
/mob/living/carbon/human
max_buckled_mobs = 1 //Yeehaw
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
/mob/living/carbon/human/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE)
if(forced)
return ..() // Skip our checks
if(!isTaurTail(tail_style))
return FALSE
else
var/datum/sprite_accessory/tail/taur/taurtype = tail_style
if(!taurtype.can_ride)
return FALSE
if(lying)
return FALSE
if(!ishuman(M))
return FALSE
if(M in buckled_mobs)
return FALSE
if(M.size_multiplier > size_multiplier * 1.2)
to_chat(M,"<span class='warning'>This isn't a pony show! You need to be bigger for them to ride.</span>")
return FALSE
if(M.loc != src.loc)
if(M.Adjacent(src))
M.forceMove(get_turf(src))
var/mob/living/carbon/human/H = M
if(isTaurTail(H.tail_style))
to_chat(src,"<span class='warning'>Too many legs. TOO MANY LEGS!!</span>")
return FALSE
. = ..()
if(.)
buckled_mobs[M] = "riding"
/mob/living/carbon/human/MouseDrop_T(mob/living/M, mob/living/user) //Prevention for forced relocation caused by can_buckle. Base proc has no other use.
return
/mob/living/carbon/human/proc/taur_mount(var/mob/living/M in living_mobs(1))
set name = "Taur Mount/Dismount"
set category = "Abilities"
set desc = "Let people ride on you."
if(LAZYLEN(buckled_mobs))
var/datum/riding/R = riding_datum
for(var/rider in buckled_mobs)
R.force_dismount(rider)
return
if (stat != CONSCIOUS)
return
if(!can_buckle || !istype(M) || !M.Adjacent(src) || M.buckled)
return
if(buckle_mob(M))
visible_message("<span class='notice'>[M] starts riding [name]!</span>")
/mob/living/carbon/human/attack_hand(mob/user as mob)
if(LAZYLEN(buckled_mobs))
//We're getting off!
if(user in buckled_mobs)
riding_datum.force_dismount(user)
//We're kicking everyone off!
if(user == src)
for(var/rider in buckled_mobs)
riding_datum.force_dismount(rider)
else
. = ..()
*/
/*
////////////////////////////
/ =--------------------= /
/ == Taur Definitions == /
/ =--------------------= /
////////////////////////////
*/
// Taur sprites are now a subtype of tail since they are mutually exclusive anyway.
/datum/sprite_accessory/tail/taur
name = "You should not see this..."
icon = 'icons/mob/human_races/sprite_accessories/taurs.dmi'
do_colouration = 1 // Yes color, using tail color
color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY
var/icon/suit_sprites = null //File for suit sprites, if any.
var/icon/under_sprites = null
var/icon_sprite_tag // This is where we put stuff like _Horse, so we can assign icons easier.
var/can_ride = 1 //whether we're real rideable taur or just in that category. Not used on Polaris.
//Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to
//duplicate all the messages, and it starts getting awkward. These are singletons, anyway!
/*
//Messages to owner when stepping on/over
var/msg_owner_help_walk = "You carefully step over %prey."
var/msg_owner_help_run = "You carefully step over %prey."
var/msg_owner_harm_walk = "You methodically place your foot down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
var/msg_owner_harm_run = "You carelessly step down onto %prey, crushing them!"
var/msg_owner_disarm_walk = "You firmly push your foot down on %prey, painfully but harmlessly pinning them to the ground!"
var/msg_owner_disarm_run = "You quickly push %prey to the ground with your foot!"
var/msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
var/msg_owner_grab_success = "You pin %prey down onto the floor with your foot and curl your toes up around their body, trapping them inbetween them!"
//Messages to prey when stepping on/over
var/msg_prey_help_walk = "%owner steps over you carefully!"
var/msg_prey_help_run = "%owner steps over you carefully!"
var/msg_prey_harm_walk = "%owner methodically places their foot upon your body, slowly applying pressure, crushing you against the floor below!"
var/msg_prey_harm_run = "%owner steps carelessly on your body, crushing you!"
var/msg_prey_disarm_walk = "%owner firmly pushes their foot down on you, quite painfully but harmlessly pinning you to the ground!"
var/msg_prey_disarm_run = "%owner pushes you down to the ground with their foot!"
var/msg_prey_grab_fail = "%owner steps down and squishes you with their foot, forcing you down to the ground!"
var/msg_prey_grab_success = "%owner pins you down to the floor with their foot and curls their toes up around your body, trapping you inbetween them!"
//Messages for smalls moving under larges
var/msg_owner_stepunder = "%owner runs between your legs." //Weird becuase in the case this is used, %owner is the 'bumper' (src)
var/msg_prey_stepunder = "You run between %prey's legs." //Same, inverse
*/
hide_body_parts = list(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT) //Exclude pelvis just in case.
clip_mask_icon = 'icons/mob/human_races/sprite_accessories/taurs.dmi'
clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
// Species-unique long tails/taurhalves
// Tails/taurhalves for everyone
/datum/sprite_accessory/tail/taur/wolf
name = "Wolf (Taur)"
icon_state = "wolf_s"
under_sprites = 'icons/mob/taursuits_wolf.dmi'
suit_sprites = 'icons/mob/taursuits_wolf.dmi'
icon_sprite_tag = "wolf"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/fatwolf
name = "Fat Wolf (Taur)"
icon_state = "fatwolf_s"
icon_sprite_tag = "wolf" //This could be modified later.
/datum/sprite_accessory/tail/taur/wolf/wolf_2c
name = "Wolf dual-color (Taur)"
icon_state = "wolf_s"
extra_overlay = "wolf_markings"
//icon_sprite_tag = "wolf2c"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c
name = "Fat Wolf dual-color (Taur)"
icon_state = "fatwolf_s"
extra_overlay = "fatwolf_markings"
//icon_sprite_tag = "fatwolf2c"
/datum/sprite_accessory/tail/taur/wolf/synthwolf
name = "SynthWolf dual-color (Taur)"
icon_state = "synthwolf_s"
extra_overlay = "synthwolf_markings"
//icon_sprite_tag = "synthwolf"
/datum/sprite_accessory/tail/taur/naga
name = "Naga (Taur)"
icon_state = "naga_s"
suit_sprites = 'icons/mob/taursuits_naga.dmi'
//icon_sprite_tag = "naga"
/*
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
msg_owner_help_run = "You carefully slither around %prey."
msg_prey_help_run = "%owner's huge tail slithers past beside you!"
msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!"
msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!"
msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!"
msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!"
msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!"
msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!"
msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!"
msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!"
msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!"
msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!"
msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!"
msg_prey_stepunder = "You jump over %prey's thick tail."
msg_owner_stepunder = "%owner bounds over your tail."
*/
/datum/sprite_accessory/tail/taur/naga/naga_2c
name = "Naga dual-color (Taur)"
icon_state = "naga_s"
extra_overlay = "naga_markings"
//icon_sprite_tag = "naga2c"
/datum/sprite_accessory/tail/taur/horse
name = "Horse (Taur)"
icon_state = "horse_s"
under_sprites = 'icons/mob/taursuits_horse.dmi'
suit_sprites = 'icons/mob/taursuits_horse.dmi'
icon_sprite_tag = "horse"
/*
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
*/
/datum/sprite_accessory/tail/taur/horse/synthhorse
name = "SynthHorse dual-color (Taur)"
icon_state = "synthhorse_s"
extra_overlay = "synthhorse_markings"
//icon_sprite_tag = "synthhorse"
/datum/sprite_accessory/tail/taur/cow
name = "Cow (Taur)"
icon_state = "cow_s"
suit_sprites = 'icons/mob/taursuits_cow.dmi'
icon_sprite_tag = "cow"
/*
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
*/
/datum/sprite_accessory/tail/taur/deer
name = "Deer dual-color (Taur)"
icon_state = "deer_s"
extra_overlay = "deer_markings"
suit_sprites = 'icons/mob/taursuits_deer.dmi'
icon_sprite_tag = "deer"
/*
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
*/
/datum/sprite_accessory/tail/taur/lizard
name = "Lizard (Taur)"
icon_state = "lizard_s"
suit_sprites = 'icons/mob/taursuits_lizard.dmi'
icon_sprite_tag = "lizard"
/datum/sprite_accessory/tail/taur/lizard/lizard_2c
name = "Lizard dual-color (Taur)"
icon_state = "lizard_s"
extra_overlay = "lizard_markings"
//icon_sprite_tag = "lizard2c"
/datum/sprite_accessory/tail/taur/lizard/synthlizard
name = "SynthLizard dual-color (Taur)"
icon_state = "synthlizard_s"
extra_overlay = "synthlizard_markings"
//icon_sprite_tag = "synthlizard"
/datum/sprite_accessory/tail/taur/spider
name = "Spider (Taur)"
icon_state = "spider_s"
suit_sprites = 'icons/mob/taursuits_spider.dmi'
icon_sprite_tag = "spider"
/*
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
*/
/datum/sprite_accessory/tail/taur/tents
name = "Tentacles (Taur)"
icon_state = "tent_s"
icon_sprite_tag = "tentacle"
can_ride = 0
/*
msg_prey_stepunder = "You run between %prey's tentacles."
msg_owner_stepunder = "%owner runs between your tentacles."
msg_owner_disarm_run = "You quickly push %prey to the ground with some of your tentacles!"
msg_prey_disarm_run = "%owner pushes you down to the ground with some of their tentacles!"
msg_owner_disarm_walk = "You push down on %prey with some of your tentacles, pinning them down firmly under you!"
msg_prey_disarm_walk = "%owner pushes down on you with some of their tentacles, pinning you down firmly below them!"
msg_owner_harm_run = "Your tentacles carelessly slide past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their tentacles!"
msg_owner_harm_walk = "Your tentacles methodically apply pressure on %prey's body, crushing them against the floor below!"
msg_prey_harm_walk = "%owner's thick tentacles methodically apply pressure on your body, crushing you into the floor below!"
msg_owner_grab_success = "You slide over %prey with your tentacles, smushing them against the ground before wrapping one up around them, trapping them within the tight confines of your tentacles!"
msg_prey_grab_success = "%owner slides over you with their tentacles, smushing you against the ground before wrapping one up around you, trapping you within the tight confines of their tentacles!"
msg_owner_grab_fail = "You step down onto %prey with one of your tentacles, forcing them onto the ground!"
msg_prey_grab_fail = "%owner steps down onto you with one of their tentacles, squishing you and forcing you onto the ground!"
*/
/datum/sprite_accessory/tail/taur/feline
name = "Feline (Taur)"
icon_state = "feline_s"
suit_sprites = 'icons/mob/taursuits_feline.dmi'
icon_sprite_tag = "feline"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/fatfeline
name = "Fat Feline (Taur)"
icon_state = "fatfeline_s"
//icon_sprite_tag = "fatfeline"
/datum/sprite_accessory/tail/taur/fatfeline_wag
name = "Fat Feline (Taur) (vwag)"
icon_state = "fatfeline_s"
ani_state = "fatfeline_w"
/datum/sprite_accessory/tail/taur/feline/feline_2c
name = "Feline dual-color (Taur)"
icon_state = "feline_s"
extra_overlay = "feline_markings"
//icon_sprite_tag = "feline2c"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/feline/fatfeline_2c
name = "Fat Feline dual-color (Taur)"
icon_state = "fatfeline_s"
extra_overlay = "fatfeline_markings"
//icon_sprite_tag = "fatfeline2c"
/datum/sprite_accessory/tail/taur/feline/synthfeline
name = "SynthFeline dual-color (Taur)"
icon_state = "synthfeline_s"
extra_overlay = "synthfeline_markings"
//icon_sprite_tag = "synthfeline"
/datum/sprite_accessory/tail/taur/slug
name = "Slug (Taur)"
icon_state = "slug_s"
suit_sprites = 'icons/mob/taursuits_slug.dmi'
icon_sprite_tag = "slug"
/*
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
msg_owner_help_run = "You carefully slither around %prey."
msg_prey_help_run = "%owner's huge tail slithers past beside you!"
msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!"
msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!"
msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!"
msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!"
msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!"
msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!"
msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!"
msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!"
msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!"
msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!"
msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!"
msg_prey_stepunder = "You jump over %prey's thick tail."
msg_owner_stepunder = "%owner bounds over your tail."
*/
/datum/sprite_accessory/tail/taur/frog
name = "Frog (Taur)"
icon_state = "frog_s"
icon_sprite_tag = "frog"
/datum/sprite_accessory/tail/taur/thicktentacles
name = "Thick Tentacles (Taur)"
icon_state = "tentacle_s"
can_ride = 0
icon_sprite_tag = "thick_tentacles"
/*
msg_prey_stepunder = "You run between %prey's tentacles."
msg_owner_stepunder = "%owner runs between your tentacles."
msg_owner_disarm_run = "You quickly push %prey to the ground with some of your tentacles!"
msg_prey_disarm_run = "%owner pushes you down to the ground with some of their tentacles!"
msg_owner_disarm_walk = "You push down on %prey with some of your tentacles, pinning them down firmly under you!"
msg_prey_disarm_walk = "%owner pushes down on you with some of their tentacles, pinning you down firmly below them!"
msg_owner_harm_run = "Your tentacles carelessly slide past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their tentacles!"
msg_owner_harm_walk = "Your tentacles methodically apply pressure on %prey's body, crushing them against the floor below!"
msg_prey_harm_walk = "%owner's thick tentacles methodically apply pressure on your body, crushing you into the floor below!"
msg_owner_grab_success = "You slide over %prey with your tentacles, smushing them against the ground before wrapping one up around them, trapping them within the tight confines of your tentacles!"
msg_prey_grab_success = "%owner slides over you with their tentacles, smushing you against the ground before wrapping one up around you, trapping you within the tight confines of their tentacles!"
msg_owner_grab_fail = "You step down onto %prey with one of your tentacles, forcing them onto the ground!"
msg_prey_grab_fail = "%owner steps down onto you with one of their tentacles, squishing you and forcing you onto the ground!"
*/
/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above.
name = "Drake (Taur)"
icon_state = "drake_s"
extra_overlay = "drake_markings"
suit_sprites = 'icons/mob/taursuits_drake.dmi'
icon_sprite_tag = "drake"
/datum/sprite_accessory/tail/taur/otie
name = "Otie (Taur)"
icon_state = "otie_s"
extra_overlay = "otie_markings"
suit_sprites = 'icons/mob/taursuits_otie.dmi'
icon_sprite_tag = "otie"
/datum/sprite_accessory/tail/taur/alraune/alraune_2c
name = "Alraune (dual color)"
icon_state = "alraunecolor_s"
ani_state = "alraunecolor_closed_s"
ckeys_allowed = null
do_colouration = 1
extra_overlay = "alraunecolor_markings"
extra_overlay_w = "alraunecolor_closed_markings"
clip_mask_state = "taur_clip_mask_alraune"
icon_sprite_tag = "alraune"
/datum/sprite_accessory/tail/taur/wasp
name = "Wasp (dual color)"
icon_state = "wasp_s"
extra_overlay = "wasp_markings"
clip_mask_state = "taur_clip_mask_wasp"
icon_sprite_tag = "wasp"
/*
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
*/
/datum/sprite_accessory/tail/taur/mermaid
name = "Mermaid (Taur)"
icon_state = "mermaid_s"
can_ride = 0
icon_sprite_tag = "mermaid"
/*
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
msg_owner_help_run = "You carefully slither around %prey."
msg_prey_help_run = "%owner's huge tail slithers past beside you!"
msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!"
msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!"
msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!"
msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!"
msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!"
msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!"
msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!"
msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!"
msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!"
msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!"
msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!"
msg_prey_stepunder = "You jump over %prey's thick tail."
msg_owner_stepunder = "%owner bounds over your tail."
*/
/datum/sprite_accessory/tail/taur/shadekin_tail
name = "Shadekin Tail"
icon_state = "shadekin_s"
can_ride = 0
hide_body_parts = null
clip_mask_icon = null
clip_mask_state = null
//apply_restrictions = TRUE
//species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c
name = "Shadekin Tail (dual color)"
extra_overlay = "shadekin_markings"
/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_long
name = "Shadekin Long Tail"
icon_state = "shadekin_long_s"
// Special snowflake tails/taurhalves
//spoopylizz: Roiz Lizden
/datum/sprite_accessory/tail/taur/roiz_long_lizard // Not ACTUALLY a taur, but it uses 32x64 so it wouldn't fit in tails.dmi, and having it as a tail bugs up the sprite.
name = "Long Lizard Tail (Roiz Lizden)"
icon_state = "roiz_tail_s"
do_colouration = 0
ckeys_allowed = list("spoopylizz")
hide_body_parts = null
clip_mask_icon = null
clip_mask_state = null
//wickedtemp: Chakat Tempest
/datum/sprite_accessory/tail/taur/feline/tempest
name = "Feline (wickedtemp) (Taur)"
icon_state = "tempest_s"
ckeys_allowed = list("wickedtemp")
//silencedmp5a5: Serdykov Antoz
/datum/sprite_accessory/tail/taur/wolf/serdy
name = "CyberSerdy (silencedmp5a5) (Taur)"
icon_state = "serdy_s"
ckeys_allowed = list("silencedmp5a5")
//liquidfirefly: Ariana Scol
/datum/sprite_accessory/tail/taur/centipede
name = "Centipede (liquidfirefly) (Taur)"
icon_state = "ariana_s"
ckeys_allowed = list("liquidfirefly")
do_colouration = 0
/*
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
*/
//natje:
/datum/sprite_accessory/tail/taur/alraune
name = "Alraune (natje) (Taur)"
icon_state = "alraune_s"
ani_state = "alraune_closed_s"
ckeys_allowed = list("natje")
do_colouration = 0
can_ride = 0
clip_mask_state = "taur_clip_mask_alraune"
/*
msg_prey_stepunder = "You run between %prey's vines."
msg_owner_stepunder = "%owner runs between your vines."
msg_owner_disarm_run = "You quickly push %prey to the ground with some of your vines!"
msg_prey_disarm_run = "%owner pushes you down to the ground with some of their vines!"
msg_owner_disarm_walk = "You push down on %prey with some of your vines, pinning them down firmly under you!"
msg_prey_disarm_walk = "%owner pushes down on you with some of their vines, pinning you down firmly below them!"
msg_owner_harm_run = "Your vines carelessly slide past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their vines!"
msg_owner_harm_walk = "Your vines methodically apply pressure on %prey's body, crushing them against the floor below!"
msg_prey_harm_walk = "%owner's thick vines methodically apply pressure on your body, crushing you into the floor below!"
msg_owner_grab_success = "You slide over %prey with your vines, smushing them against the ground before wrapping one up around them, trapping them within the tight confines of your vines!"
msg_prey_grab_success = "%owner slides over you with their vines, smushing you against the ground before wrapping one up around you, trapping you within the tight confines of their vines!"
msg_owner_grab_fail = "You step down onto %prey with one of your vines, forcing them onto the ground!"
msg_prey_grab_fail = "%owner steps down onto you with one of their vines, squishing you and forcing you onto the ground!"
*/
@@ -1,186 +0,0 @@
/*
////////////////////////////
/ =--------------------= /
/ == Wing Definitions == /
/ =--------------------= /
////////////////////////////
*/
/datum/sprite_accessory/wing
name = "You should not see this..."
icon = 'icons/mob/human_races/sprite_accessories/wings.dmi'
do_colouration = 0 //Set to 1 to enable coloration using the tail color.
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 // 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
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/wing/shock //Unable to split the tail from the wings in the sprite, so let's just classify it as wings.
name = "pharoah hound tail (Shock Diamond)"
desc = ""
icon_state = "shock"
ckeys_allowed = list("icowom")
/datum/sprite_accessory/wing/featheredlarge //Made by Natje!
name = "large feathered wings (colorable)"
desc = ""
icon_state = "feathered2"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/wing/spider_legs //Not really /WINGS/ but they protrude from the back, kinda. Might as well have them here.
name = "spider legs"
desc = ""
icon_state = "spider-legs"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/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/dragonfly
name = "dragonfly"
desc = ""
icon_state = "dragonfly"
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/wing/citheroniamoth
name = "citheronia wings"
desc = ""
icon_state = "citheronia_wings"
ckeys_allowed = list("kira72")
/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/feathered_medium
name = "medium feathered wings, colorable" // Keekenox made these feathery things with a little bit more shape to them than the other wings. They are medium sized wing boys.
desc = ""
icon_state = "feathered3"
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"
/datum/sprite_accessory/wing/sepulchre
name = "demon wings (Sepulchre)"
desc = ""
icon_state = "sepulchre_wings"
ckeys_allowed = list("sepulchre")
/datum/sprite_accessory/wing/miria_fluffdragon
name = "fluffdragon wings (Miria Masters)"
desc = ""
icon_state = "miria-fluffdragontail"
ckeys_allowed = list("miriamasters")
/datum/sprite_accessory/wing/scree
name = "green taj wings (Scree)"
desc = ""
icon_state = "scree-wings"
ckeys_allowed = list("scree")
/datum/sprite_accessory/wing/liquidfirefly_gazer //I g-guess this could be considered wings?
name = "gazer eyestalks"
desc = ""
icon_state = "liquidfirefly-eyestalks"
//ckeys_allowed = list("liquidfirefly","seiga") //At request.
/datum/sprite_accessory/wing/moth_full
name = "moth antenna and wings"
desc = ""
icon_state = "moth_full"
/datum/sprite_accessory/wing/moth_full_gray
name = "moth antenna and wings, colorable"
desc = ""
icon_state = "moth_full_gray"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/wing/kerena
name = "wingwolf wings (Kerena)"
desc = ""
icon_state = "kerena-wings"
ckeys_allowed = list("somekindofpony")
/datum/sprite_accessory/wing/snag
name = "xenomorph backplate"
desc = ""
icon_state = "snag-backplate"
/datum/sprite_accessory/wing/sepulchre_c_yw
name = "demon wings (colorable)"
desc = ""
icon_state = "sepulchre_wingsc"
do_colouration = 1
/datum/sprite_accessory/wing/cyberdragon
name = "Cyber dragon wing (colorable)"
desc = ""
icon_state = "cyberdragon_s"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/wing/cyberdragon_red
name = "Cyber dragon wing (red)"
desc = ""
icon_state = "cyberdragon_red_s"
do_colouration = 0
/datum/sprite_accessory/wing/cyberdoe
name = "Cyber doe wing"
desc = ""
icon_state = "cyberdoe_s"
do_colouration = 0