diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm
index 524dd23ff4..1950f01928 100644
--- a/code/_helpers/global_lists.dm
+++ b/code/_helpers/global_lists.dm
@@ -42,6 +42,11 @@ var/global/list/facial_hair_styles_male_list = list()
var/global/list/facial_hair_styles_female_list = list()
var/global/list/skin_styles_female_list = list() //unused
var/global/list/body_marking_styles_list = list() //stores /datum/sprite_accessory/marking indexed by name
+var/global/list/ear_styles_list = list() // Stores /datum/sprite_accessory/ears indexed by type
+var/global/list/tail_styles_list = list() // Stores /datum/sprite_accessory/tail indexed by type
+var/global/list/wing_styles_list = list() // Stores /datum/sprite_accessory/wing indexed by type
+
+GLOBAL_LIST(custom_species_bases)
//Underwear
var/datum/category_collection/underwear/global_underwear = new()
@@ -213,6 +218,23 @@ GLOBAL_LIST_EMPTY(mannequins)
var/decl/closet_appearance/app = new T()
GLOB.closet_appearances[T] = app
+ paths = typesof(/datum/sprite_accessory/ears) - /datum/sprite_accessory/ears
+ for(var/path in paths)
+ var/obj/item/clothing/head/instance = new path()
+ ear_styles_list[path] = instance
+
+ // Custom Tails
+ paths = typesof(/datum/sprite_accessory/tail) - /datum/sprite_accessory/tail - /datum/sprite_accessory/tail/taur
+ for(var/path in paths)
+ var/datum/sprite_accessory/tail/instance = new path()
+ tail_styles_list[path] = instance
+
+ // Custom Wings
+ paths = typesof(/datum/sprite_accessory/wing) - /datum/sprite_accessory/wing
+ for(var/path in paths)
+ var/datum/sprite_accessory/wing/instance = new path()
+ wing_styles_list[path] = instance
+
// VOREStation Add - Vore Modes!
paths = typesof(/datum/digest_mode)
for(var/T in paths)
@@ -220,6 +242,41 @@ GLOBAL_LIST_EMPTY(mannequins)
GLOB.digest_modes[DM.id] = DM
// VOREStation Add End
+/*
+ // Custom species traits
+ paths = typesof(/datum/trait) - /datum/trait
+ for(var/path in paths)
+ var/datum/trait/instance = new path()
+ if(!instance.name)
+ continue //A prototype or something
+ var/cost = instance.cost
+ traits_costs[path] = cost
+ all_traits[path] = instance
+ switch(cost)
+ if(-INFINITY to -0.1)
+ negative_traits[path] = instance
+ if(0)
+ neutral_traits[path] = instance
+ if(0.1 to INFINITY)
+ positive_traits[path] = instance
+*/
+
+ // Custom species icon bases
+ var/list/blacklisted_icons = list(SPECIES_CUSTOM,SPECIES_PROMETHEAN) //VOREStation Edit
+ var/list/whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID) //VOREStation Edit
+ for(var/species_name in GLOB.playable_species)
+ if(species_name in blacklisted_icons)
+ continue
+ var/datum/species/S = GLOB.all_species[species_name]
+ if(S.spawn_flags & SPECIES_IS_WHITELISTED)
+ continue
+ GLOB.custom_species_bases += species_name
+ for(var/species_name in whitelisted_icons)
+ GLOB.custom_species_bases += species_name
+
+ return 1 // Hooks must return 1
+
+
return 1
/* // Uncomment to debug chemical reaction list.
diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index de3bd08467..19df6f6408 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -2,10 +2,7 @@
* VOREStation global lists
*/
-var/global/list/ear_styles_list = list() // Stores /datum/sprite_accessory/ears indexed by type
var/global/list/hair_accesories_list= list()// Stores /datum/sprite_accessory/hair_accessory indexed by type
-var/global/list/tail_styles_list = list() // Stores /datum/sprite_accessory/tail indexed by type
-var/global/list/wing_styles_list = list() // Stores /datum/sprite_accessory/wing indexed by type
var/global/list/negative_traits = list() // Negative custom species traits, indexed by path
var/global/list/neutral_traits = list() // Neutral custom species traits, indexed by path
var/global/list/everyone_traits = list() // Neutral traits available to all species, indexed by path
@@ -16,8 +13,6 @@ var/global/list/active_ghost_pods = list()
var/global/list/sensorpreflist = list("Off", "Binary", "Vitals", "Tracking", "No Preference") //TFF 5/8/19 - Suit Sensors global list
-var/global/list/custom_species_bases = list() // Species that can be used for a Custom Species icon base
-
//stores numeric player size options indexed by name
var/global/list/player_sizes_list = list(
"Macro" = RESIZE_HUGE,
@@ -483,24 +478,6 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
/hook/startup/proc/init_vore_datum_ref_lists()
var/paths
- // Custom Ears
- paths = typesof(/datum/sprite_accessory/ears) - /datum/sprite_accessory/ears
- for(var/path in paths)
- var/obj/item/clothing/head/instance = new path()
- ear_styles_list[path] = instance
-
- // Custom Tails
- paths = typesof(/datum/sprite_accessory/tail) - /datum/sprite_accessory/tail - /datum/sprite_accessory/tail/taur
- for(var/path in paths)
- var/datum/sprite_accessory/tail/instance = new path()
- tail_styles_list[path] = instance
-
- // Custom Wings
- paths = typesof(/datum/sprite_accessory/wing) - /datum/sprite_accessory/wing
- for(var/path in paths)
- var/datum/sprite_accessory/wing/instance = new path()
- wing_styles_list[path] = instance
-
// Custom Hair Accessories
paths = typesof(/datum/sprite_accessory/hair_accessory) - /datum/sprite_accessory/hair_accessory
for(var/path in paths)
@@ -526,19 +503,6 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
if(0.1 to INFINITY)
positive_traits[path] = instance
- // Custom species icon bases
- var/list/blacklisted_icons = list(SPECIES_CUSTOM,SPECIES_PROMETHEAN) //Just ones that won't work well.
- var/list/whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID) //Include these anyway
- for(var/species_name in GLOB.playable_species)
- if(species_name in blacklisted_icons)
- continue
- var/datum/species/S = GLOB.all_species[species_name]
- if(S.spawn_flags & SPECIES_IS_WHITELISTED)
- continue
- custom_species_bases += species_name
- for(var/species_name in whitelisted_icons)
- custom_species_bases += species_name
-
// Weaver recipe stuff
paths = typesof(/datum/weaver_recipe/structure) - /datum/weaver_recipe/structure
for(var/path in paths)
diff --git a/code/_macros.dm b/code/_macros.dm
index 4796f93b47..33bdf30ceb 100644
--- a/code/_macros.dm
+++ b/code/_macros.dm
@@ -37,4 +37,7 @@
#define random_id(key,min_id,max_id) uniqueness_repository.Generate(/datum/uniqueness_generator/id_random, key, min_id, max_id)
-#define ARGS_DEBUG log_debug("[__FILE__] - [__LINE__]") ; for(var/arg in args) { log_debug("\t[log_info_line(arg)]") }
\ No newline at end of file
+#define ARGS_DEBUG log_debug("[__FILE__] - [__LINE__]") ; for(var/arg in args) { log_debug("\t[log_info_line(arg)]") }
+
+#define isitem(A) istype(A, /obj/item)
+#define isTaurTail(A) istype(A, /datum/sprite_accessory/tail/taur)
diff --git a/code/_macros_vr.dm b/code/_macros_vr.dm
index 6a2134fb71..2eecbe69ed 100644
--- a/code/_macros_vr.dm
+++ b/code/_macros_vr.dm
@@ -1,3 +1 @@
#define isbelly(A) istype(A, /obj/belly)
-#define isitem(A) istype(A, /obj/item)
-#define isTaurTail(A) istype(A, /datum/sprite_accessory/tail/taur)
diff --git a/code/datums/supplypacks/recreation_vr.dm b/code/datums/supplypacks/recreation_vr.dm
index 5c2266523f..db81cd2061 100644
--- a/code/datums/supplypacks/recreation_vr.dm
+++ b/code/datums/supplypacks/recreation_vr.dm
@@ -20,7 +20,7 @@
/obj/item/clothing/suit/straight_jacket,
/obj/item/weapon/handcuffs/legcuffs/fuzzy,
/obj/item/weapon/melee/fluff/holochain/mass,
- /obj/item/weapon/material/twohanded/fluff/riding_crop,
+ /obj/item/weapon/material/twohanded/riding_crop,
/obj/item/clothing/under/fluff/latexmaid
)
containertype = /obj/structure/closet/crate
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index a3e666ac5c..6d865085f5 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -792,7 +792,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
drop_sound = 'sound/items/drop/device.ogg'
//Worn icon generation for on-mob sprites
-/obj/item/proc/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer,var/icon/clip_mask = null) //VOREStation edit - add 'clip mask' argument.
+/obj/item/proc/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer,var/icon/clip_mask = null)
//Get the required information about the base icon
var/icon/icon2use = get_worn_icon_file(body_type = body_type, slot_name = slot_name, default_icon = default_icon, inhands = inhands)
var/state2use = get_worn_icon_state(slot_name = slot_name)
@@ -822,6 +822,9 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
if(istype(clip_mask)) //VOREStation Edit - For taur bodies/tails clipping off parts of uniforms and suits.
standing.filters += filter(type = "alpha", icon = clip_mask)
+ if(istype(clip_mask)) //For taur bodies/tails clipping off parts of uniforms and suits.
+ standing.filters += filter(type = "alpha", icon = clip_mask)
+
//Apply any special features
if(!inhands)
apply_blood(standing) //Some items show blood when bloodied
diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm
index 1c4ad40773..c45e7125f5 100644
--- a/code/game/objects/items/weapons/material/twohanded.dm
+++ b/code/game/objects/items/weapons/material/twohanded.dm
@@ -177,4 +177,15 @@
default_material = "DEFAULT_WALL_MATERIAL"
fragile = 0
sharp = 1
- edge = 0
\ No newline at end of file
+ edge = 0
+
+/obj/item/weapon/material/twohanded/riding_crop
+ name = "riding crop"
+ desc = "A rod, a little over a foot long with a widened grip and a thick, leather patch at the end. Used since the dawn of the West to control animals."
+ force_divisor = 0.05 //Required in order for the X attacks Y message to pop up.
+ unwielded_force_divisor = 1 // One here, too.
+ applies_material_colour = 1
+ unbreakable = 1
+ base_icon = "riding_crop"
+ icon_state = "riding_crop0"
+ attack_verb = list("cropped","spanked","swatted","smacked","peppered")
diff --git a/code/game/objects/items/weapons/material/twohanded_vr.dm b/code/game/objects/items/weapons/material/twohanded_vr.dm
new file mode 100644
index 0000000000..f21738dd80
--- /dev/null
+++ b/code/game/objects/items/weapons/material/twohanded_vr.dm
@@ -0,0 +1,9 @@
+//1R1S: Malady Blanche
+/obj/item/weapon/material/twohanded/riding_crop/malady
+ name = "Malady's riding crop"
+ icon = 'icons/vore/custom_items_vr.dmi'
+ item_icons = list(
+ slot_l_hand_str = 'icons/vore/custom_items_left_hand_vr.dmi',
+ slot_r_hand_str = 'icons/vore/custom_items_right_hand_vr.dmi',
+ )
+ desc = "An infernum made riding crop with Malady Blanche engraved in the shaft. It's a little worn from how many butts it has spanked."
diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm
index d3d8ec086e..1773c13d7f 100644
--- a/code/modules/client/preference_setup/general/03_body.dm
+++ b/code/modules/client/preference_setup/general/03_body.dm
@@ -6,6 +6,37 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
var/icon/bgstate = "000"
var/list/bgstate_options = list("000", "midgrey", "FFF", "white", "steel", "techmaint", "dark", "plating", "reinforced")
+ var/ear_style // Type of selected ear style
+ var/r_ears = 30 // Ear color.
+ var/g_ears = 30 // Ear color
+ var/b_ears = 30 // Ear color
+ var/r_ears2 = 30 // Ear extra color.
+ var/g_ears2 = 30 // Ear extra color
+ var/b_ears2 = 30 // Ear extra color
+ var/r_ears3 = 30 // Ear tertiary color.
+ var/g_ears3 = 30 // Ear tertiary color
+ var/b_ears3 = 30 // Ear tertiary color
+ var/tail_style // Type of selected tail style
+ var/r_tail = 30 // Tail/Taur color
+ var/g_tail = 30 // Tail/Taur color
+ var/b_tail = 30 // Tail/Taur color
+ var/r_tail2 = 30 // For extra overlay.
+ var/g_tail2 = 30 // For extra overlay.
+ var/b_tail2 = 30 // For extra overlay.
+ var/r_tail3 = 30 // For tertiary overlay.
+ var/g_tail3 = 30 // For tertiary overlay.
+ var/b_tail3 = 30 // For tertiary overlay.
+ var/wing_style // Type of selected wing style
+ var/r_wing = 30 // Wing color
+ var/g_wing = 30 // Wing color
+ var/b_wing = 30 // Wing color
+ var/r_wing2 = 30 // Wing extra color
+ var/g_wing2 = 30 // Wing extra color
+ var/b_wing2 = 30 // Wing extra color
+ var/r_wing3 = 30 // Wing tertiary color
+ var/g_wing3 = 30 // Wing tertiary color
+ var/b_wing3 = 30 // Wing tertiary color
+
/datum/category_item/player_setup_item/general/body
name = "Body"
sort_order = 3
@@ -47,11 +78,45 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
S["synth_markings"] >> pref.synth_markings
S["bgstate"] >> pref.bgstate
S["body_descriptors"] >> pref.body_descriptors
+<<<<<<< HEAD
S["Wingdings"] >> pref.wingdings //YWadd start
S["colorblind_mono"] >> pref.colorblind_mono
S["colorblind_vulp"] >> pref.colorblind_vulp
S["colorblind_taj"] >> pref.colorblind_taj
S["haemophilia"] >> pref.haemophilia //YWadd end
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+=======
+ S["ear_style"] >> pref.ear_style
+ S["r_ears"] >> pref.r_ears
+ S["g_ears"] >> pref.g_ears
+ S["b_ears"] >> pref.b_ears
+ S["r_ears2"] >> pref.r_ears2
+ S["g_ears2"] >> pref.g_ears2
+ S["b_ears2"] >> pref.b_ears2
+ S["r_ears3"] >> pref.r_ears3
+ S["g_ears3"] >> pref.g_ears3
+ S["b_ears3"] >> pref.b_ears3
+ S["tail_style"] >> pref.tail_style
+ S["r_tail"] >> pref.r_tail
+ S["g_tail"] >> pref.g_tail
+ S["b_tail"] >> pref.b_tail
+ S["r_tail2"] >> pref.r_tail2
+ S["g_tail2"] >> pref.g_tail2
+ S["b_tail2"] >> pref.b_tail2
+ S["r_tail3"] >> pref.r_tail3
+ S["g_tail3"] >> pref.g_tail3
+ S["b_tail3"] >> pref.b_tail3
+ S["wing_style"] >> pref.wing_style
+ S["r_wing"] >> pref.r_wing
+ S["g_wing"] >> pref.g_wing
+ S["b_wing"] >> pref.b_wing
+ S["r_wing2"] >> pref.r_wing2
+ S["g_wing2"] >> pref.g_wing2
+ S["b_wing2"] >> pref.b_wing2
+ S["r_wing3"] >> pref.r_wing3
+ S["g_wing3"] >> pref.g_wing3
+ S["b_wing3"] >> pref.b_wing3
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S)
S["species"] << pref.species
@@ -87,11 +152,45 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
S["synth_markings"] << pref.synth_markings
S["bgstate"] << pref.bgstate
S["body_descriptors"] << pref.body_descriptors
+<<<<<<< HEAD
S["Wingdings"] << pref.wingdings //YWadd start
S["colorblind_mono"] << pref.colorblind_mono
S["colorblind_vulp"] << pref.colorblind_vulp
S["colorblind_taj"] << pref.colorblind_taj
S["haemophilia"] << pref.haemophilia //YWadd end
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+=======
+ S["ear_style"] << pref.ear_style
+ S["r_ears"] << pref.r_ears
+ S["g_ears"] << pref.g_ears
+ S["b_ears"] << pref.b_ears
+ S["r_ears2"] << pref.r_ears2
+ S["g_ears2"] << pref.g_ears2
+ S["b_ears2"] << pref.b_ears2
+ S["r_ears3"] << pref.r_ears3
+ S["g_ears3"] << pref.g_ears3
+ S["b_ears3"] << pref.b_ears3
+ S["tail_style"] << pref.tail_style
+ S["r_tail"] << pref.r_tail
+ S["g_tail"] << pref.g_tail
+ S["b_tail"] << pref.b_tail
+ S["r_tail2"] << pref.r_tail2
+ S["g_tail2"] << pref.g_tail2
+ S["b_tail2"] << pref.b_tail2
+ S["r_tail3"] << pref.r_tail3
+ S["g_tail3"] << pref.g_tail3
+ S["b_tail3"] << pref.b_tail3
+ S["wing_style"] << pref.wing_style
+ S["r_wing"] << pref.r_wing
+ S["g_wing"] << pref.g_wing
+ S["b_wing"] << pref.b_wing
+ S["r_wing2"] << pref.r_wing2
+ S["g_wing2"] << pref.g_wing2
+ S["b_wing2"] << pref.b_wing2
+ S["r_wing3"] << pref.r_wing3
+ S["g_wing3"] << pref.g_wing3
+ S["b_wing3"] << pref.b_wing3
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S)
if(!pref.species || !(pref.species in GLOB.playable_species))
@@ -126,6 +225,49 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
if(!pref.bgstate || !(pref.bgstate in pref.bgstate_options))
pref.bgstate = "000"
+ pref.r_ears = sanitize_integer(pref.r_ears, 0, 255, initial(pref.r_ears))
+ pref.g_ears = sanitize_integer(pref.g_ears, 0, 255, initial(pref.g_ears))
+ pref.b_ears = sanitize_integer(pref.b_ears, 0, 255, initial(pref.b_ears))
+ pref.r_ears2 = sanitize_integer(pref.r_ears2, 0, 255, initial(pref.r_ears2))
+ pref.g_ears2 = sanitize_integer(pref.g_ears2, 0, 255, initial(pref.g_ears2))
+ pref.b_ears2 = sanitize_integer(pref.b_ears2, 0, 255, initial(pref.b_ears2))
+ pref.r_ears3 = sanitize_integer(pref.r_ears3, 0, 255, initial(pref.r_ears3))
+ pref.g_ears3 = sanitize_integer(pref.g_ears3, 0, 255, initial(pref.g_ears3))
+ pref.b_ears3 = sanitize_integer(pref.b_ears3, 0, 255, initial(pref.b_ears3))
+ pref.r_tail = sanitize_integer(pref.r_tail, 0, 255, initial(pref.r_tail))
+ pref.g_tail = sanitize_integer(pref.g_tail, 0, 255, initial(pref.g_tail))
+ pref.b_tail = sanitize_integer(pref.b_tail, 0, 255, initial(pref.b_tail))
+ pref.r_tail2 = sanitize_integer(pref.r_tail2, 0, 255, initial(pref.r_tail2))
+ pref.g_tail2 = sanitize_integer(pref.g_tail2, 0, 255, initial(pref.g_tail2))
+ pref.b_tail2 = sanitize_integer(pref.b_tail2, 0, 255, initial(pref.b_tail2))
+ pref.r_tail3 = sanitize_integer(pref.r_tail3, 0, 255, initial(pref.r_tail3))
+ pref.g_tail3 = sanitize_integer(pref.g_tail3, 0, 255, initial(pref.g_tail3))
+ pref.b_tail3 = sanitize_integer(pref.b_tail3, 0, 255, initial(pref.b_tail3))
+ pref.r_wing = sanitize_integer(pref.r_wing, 0, 255, initial(pref.r_wing))
+ pref.g_wing = sanitize_integer(pref.g_wing, 0, 255, initial(pref.g_wing))
+ pref.b_wing = sanitize_integer(pref.b_wing, 0, 255, initial(pref.b_wing))
+ pref.r_wing2 = sanitize_integer(pref.r_wing2, 0, 255, initial(pref.r_wing2))
+ pref.g_wing2 = sanitize_integer(pref.g_wing2, 0, 255, initial(pref.g_wing2))
+ pref.b_wing2 = sanitize_integer(pref.b_wing2, 0, 255, initial(pref.b_wing2))
+ pref.r_wing3 = sanitize_integer(pref.r_wing3, 0, 255, initial(pref.r_wing3))
+ pref.g_wing3 = sanitize_integer(pref.g_wing3, 0, 255, initial(pref.g_wing3))
+ pref.b_wing3 = sanitize_integer(pref.b_wing3, 0, 255, initial(pref.b_wing3))
+ if(pref.ear_style)
+ pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style))
+ var/datum/sprite_accessory/temp_ear_style = ear_styles_list[pref.ear_style]
+ if(temp_ear_style.apply_restrictions && (!(pref.species in temp_ear_style.species_allowed)))
+ pref.ear_style = initial(pref.ear_style)
+ if(pref.tail_style)
+ pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style))
+ var/datum/sprite_accessory/temp_tail_style = tail_styles_list[pref.tail_style]
+ if(temp_tail_style.apply_restrictions && (!(pref.species in temp_tail_style.species_allowed)))
+ pref.tail_style = initial(pref.tail_style)
+ if(pref.wing_style)
+ pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style))
+ var/datum/sprite_accessory/temp_wing_style = wing_styles_list[pref.wing_style]
+ if(temp_wing_style.apply_restrictions && (!(pref.species in temp_wing_style.species_allowed)))
+ pref.wing_style = initial(pref.wing_style)
+
// Moved from /datum/preferences/proc/copy_to()
/datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character)
// Copy basic values
@@ -164,6 +306,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
character.r_ears2 = pref.r_ears2
character.b_ears2 = pref.b_ears2
character.g_ears2 = pref.g_ears2
+ character.r_ears3 = pref.r_ears3
+ character.b_ears3 = pref.b_ears3
+ character.g_ears3 = pref.g_ears3
character.tail_style = tail_styles_list[pref.tail_style]
character.r_tail = pref.r_tail
character.b_tail = pref.b_tail
@@ -171,6 +316,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
character.r_tail2 = pref.r_tail2
character.b_tail2 = pref.b_tail2
character.g_tail2 = pref.g_tail2
+ character.r_tail3 = pref.r_tail3
+ character.b_tail3 = pref.b_tail3
+ character.g_tail3 = pref.g_tail3
character.wing_style = wing_styles_list[pref.wing_style]
character.r_wing = pref.r_wing
character.b_wing = pref.b_wing
@@ -178,6 +326,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
character.r_wing2 = pref.r_wing2
character.b_wing2 = pref.b_wing2
character.g_wing2 = pref.g_wing2
+ character.r_wing3 = pref.r_wing3
+ character.b_wing3 = pref.b_wing3
+ character.g_wing3 = pref.g_wing3
character.set_gender( pref.biological_gender)
if(pref.species == "Grey")//YWadd START
@@ -407,6 +558,62 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
. += "
Body Color
"
. += "Change Color [color_square(pref.r_skin, pref.g_skin, pref.b_skin)]
"
+ . += "
Genetics Settings
"
+
+ var/ear_display = "Normal"
+ if(pref.ear_style && (pref.ear_style in ear_styles_list))
+ var/datum/sprite_accessory/ears/instance = ear_styles_list[pref.ear_style]
+ ear_display = instance.name
+
+ else if(pref.ear_style)
+ ear_display = "REQUIRES UPDATE"
+ . += "Ears
"
+ . += " Style: [ear_display]
"
+ if(ear_styles_list[pref.ear_style])
+ var/datum/sprite_accessory/ears/ear = ear_styles_list[pref.ear_style]
+ if(ear.do_colouration)
+ . += "Change Color [color_square(pref.r_ears, pref.g_ears, pref.b_ears)]
"
+ if(ear.extra_overlay)
+ . += "Change Secondary Color [color_square(pref.r_ears2, pref.g_ears2, pref.b_ears2)]
"
+ if(ear.extra_overlay2)
+ . += "Change Tertiary Color [color_square(pref.r_ears3, pref.g_ears3, pref.b_ears3)]
"
+
+ var/tail_display = "Normal"
+ if(pref.tail_style && (pref.tail_style in tail_styles_list))
+ var/datum/sprite_accessory/tail/instance = tail_styles_list[pref.tail_style]
+ tail_display = instance.name
+ else if(pref.tail_style)
+ tail_display = "REQUIRES UPDATE"
+ . += "Tail
"
+ . += " Style: [tail_display]
"
+
+ if(tail_styles_list[pref.tail_style])
+ var/datum/sprite_accessory/tail/T = tail_styles_list[pref.tail_style]
+ if(T.do_colouration)
+ . += "Change Color [color_square(pref.r_tail, pref.g_tail, pref.b_tail)]
"
+ if(T.extra_overlay)
+ . += "Change Secondary Color [color_square(pref.r_tail2, pref.g_tail2, pref.b_tail2)]
"
+ if(T.extra_overlay2)
+ . += "Change Tertiary Color [color_square(pref.r_tail3, pref.g_tail3, pref.b_tail3)]
"
+
+ var/wing_display = "Normal"
+ if(pref.wing_style && (pref.wing_style in wing_styles_list))
+ var/datum/sprite_accessory/wing/instance = wing_styles_list[pref.wing_style]
+ wing_display = instance.name
+ else if(pref.wing_style)
+ wing_display = "REQUIRES UPDATE"
+ . += "Wing
"
+ . += " Style: [wing_display]
"
+
+ if(wing_styles_list[pref.wing_style])
+ var/datum/sprite_accessory/wing/W = wing_styles_list[pref.wing_style]
+ if(W.do_colouration)
+ . += "Change Color [color_square(pref.r_wing, pref.g_wing, pref.b_wing)]
"
+ if(W.extra_overlay)
+ . += "Change Secondary Color [color_square(pref.r_wing2, pref.g_wing2, pref.b_wing2)]
"
+ if(W.extra_overlay2)
+ . += "Change Secondary Color [color_square(pref.r_wing3, pref.g_wing3, pref.b_wing3)]
"
+
. += "
Body Markings +
"
. += ""
for(var/M in pref.body_markings)
@@ -936,6 +1143,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.bgstate = next_in_list(pref.bgstate, pref.bgstate_options)
return TOPIC_REFRESH_UPDATE_PREVIEW
+<<<<<<< HEAD
//YW Add Start
else if(href_list["wingdings"])
pref.wingdings = !pref.wingdings
@@ -968,6 +1176,135 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
//YW Add End
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+=======
+ else if(href_list["ear_style"])
+ // Construct the list of names allowed for this user.
+ var/list/pretty_ear_styles = list("Normal" = null)
+ for(var/path in ear_styles_list)
+ var/datum/sprite_accessory/ears/instance = ear_styles_list[path]
+ if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit
+ pretty_ear_styles[instance.name] = path
+
+ // Present choice to user
+ var/new_ear_style = input(user, "Pick ears", "Character Preference", pref.ear_style) as null|anything in pretty_ear_styles
+ if(new_ear_style)
+ pref.ear_style = pretty_ear_styles[new_ear_style]
+
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["ear_color"])
+ var/new_earc = input(user, "Choose your character's ear colour:", "Character Preference",
+ rgb(pref.r_ears, pref.g_ears, pref.b_ears)) as color|null
+ if(new_earc)
+ pref.r_ears = hex2num(copytext(new_earc, 2, 4))
+ pref.g_ears = hex2num(copytext(new_earc, 4, 6))
+ pref.b_ears = hex2num(copytext(new_earc, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["ear_color2"])
+ var/new_earc2 = input(user, "Choose your character's ear colour:", "Character Preference",
+ rgb(pref.r_ears2, pref.g_ears2, pref.b_ears2)) as color|null
+ if(new_earc2)
+ pref.r_ears2 = hex2num(copytext(new_earc2, 2, 4))
+ pref.g_ears2 = hex2num(copytext(new_earc2, 4, 6))
+ pref.b_ears2 = hex2num(copytext(new_earc2, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["ear_color3"])
+ var/new_earc3 = input(user, "Choose your character's tertiary ear colour:", "Character Preference",
+ rgb(pref.r_ears3, pref.g_ears3, pref.b_ears3)) as color|null
+ if(new_earc3)
+ pref.r_ears3 = hex2num(copytext(new_earc3, 2, 4))
+ pref.g_ears3 = hex2num(copytext(new_earc3, 4, 6))
+ pref.b_ears3 = hex2num(copytext(new_earc3, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["tail_style"])
+ // Construct the list of names allowed for this user.
+ var/list/pretty_tail_styles = list("Normal" = null)
+ for(var/path in tail_styles_list)
+ var/datum/sprite_accessory/tail/instance = tail_styles_list[path]
+ if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit
+ pretty_tail_styles[instance.name] = path
+
+ // Present choice to user
+ var/new_tail_style = input(user, "Pick tails", "Character Preference", pref.tail_style) as null|anything in pretty_tail_styles
+ if(new_tail_style)
+ pref.tail_style = pretty_tail_styles[new_tail_style]
+
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["tail_color"])
+ var/new_tailc = input(user, "Choose your character's tail/taur colour:", "Character Preference",
+ rgb(pref.r_tail, pref.g_tail, pref.b_tail)) as color|null
+ if(new_tailc)
+ pref.r_tail = hex2num(copytext(new_tailc, 2, 4))
+ pref.g_tail = hex2num(copytext(new_tailc, 4, 6))
+ pref.b_tail = hex2num(copytext(new_tailc, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["tail_color2"])
+ var/new_tailc2 = input(user, "Choose your character's secondary tail/taur colour:", "Character Preference",
+ rgb(pref.r_tail2, pref.g_tail2, pref.b_tail2)) as color|null
+ if(new_tailc2)
+ pref.r_tail2 = hex2num(copytext(new_tailc2, 2, 4))
+ pref.g_tail2 = hex2num(copytext(new_tailc2, 4, 6))
+ pref.b_tail2 = hex2num(copytext(new_tailc2, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["tail_color3"])
+ var/new_tailc3 = input(user, "Choose your character's tertiary tail/taur colour:", "Character Preference",
+ rgb(pref.r_tail3, pref.g_tail3, pref.b_tail3)) as color|null
+ if(new_tailc3)
+ pref.r_tail3 = hex2num(copytext(new_tailc3, 2, 4))
+ pref.g_tail3 = hex2num(copytext(new_tailc3, 4, 6))
+ pref.b_tail3 = hex2num(copytext(new_tailc3, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["wing_style"])
+ // Construct the list of names allowed for this user.
+ var/list/pretty_wing_styles = list("Normal" = null)
+ for(var/path in wing_styles_list)
+ var/datum/sprite_accessory/wing/instance = wing_styles_list[path]
+ if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit
+ pretty_wing_styles[instance.name] = path
+
+ // Present choice to user
+ var/new_wing_style = input(user, "Pick wings", "Character Preference", pref.wing_style) as null|anything in pretty_wing_styles
+ if(new_wing_style)
+ pref.wing_style = pretty_wing_styles[new_wing_style]
+
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["wing_color"])
+ var/new_wingc = input(user, "Choose your character's wing colour:", "Character Preference",
+ rgb(pref.r_wing, pref.g_wing, pref.b_wing)) as color|null
+ if(new_wingc)
+ pref.r_wing = hex2num(copytext(new_wingc, 2, 4))
+ pref.g_wing = hex2num(copytext(new_wingc, 4, 6))
+ pref.b_wing = hex2num(copytext(new_wingc, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["wing_color2"])
+ var/new_wingc2 = input(user, "Choose your character's secondary wing colour:", "Character Preference",
+ rgb(pref.r_wing2, pref.g_wing2, pref.b_wing2)) as color|null
+ if(new_wingc2)
+ pref.r_wing2 = hex2num(copytext(new_wingc2, 2, 4))
+ pref.g_wing2 = hex2num(copytext(new_wingc2, 4, 6))
+ pref.b_wing2 = hex2num(copytext(new_wingc2, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["wing_color3"])
+ var/new_wingc3 = input(user, "Choose your character's tertiary wing colour:", "Character Preference",
+ rgb(pref.r_wing3, pref.g_wing3, pref.b_wing3)) as color|null
+ if(new_wingc3)
+ pref.r_wing3 = hex2num(copytext(new_wingc3, 2, 4))
+ pref.g_wing3 = hex2num(copytext(new_wingc3, 4, 6))
+ pref.b_wing3 = hex2num(copytext(new_wingc3, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
return ..()
/datum/category_item/player_setup_item/general/body/proc/reset_limbs()
diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
index 63f5749c2b..7fe078c775 100644
--- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
@@ -29,7 +29,7 @@
// 0-9 CKEYS
/datum/gear/fluff/malady_crop
- path = /obj/item/weapon/material/twohanded/fluff/riding_crop/malady
+ path = /obj/item/weapon/material/twohanded/riding_crop/malady
display_name = "Malady's Crop"
ckeywhitelist = list("1r1s")
character_name = list("Malady Blanche")
diff --git a/code/modules/client/preference_setup/vore/01_ears.dm b/code/modules/client/preference_setup/vore/01_ears.dm
index dea5be0479..c9998dece0 100644
--- a/code/modules/client/preference_setup/vore/01_ears.dm
+++ b/code/modules/client/preference_setup/vore/01_ears.dm
@@ -3,373 +3,3 @@
name = "VORE"
sort_order = 8
category_item_type = /datum/category_item/player_setup_item/vore
-
-// Define a place to save appearance in character setup
-/datum/preferences
- var/ear_style // Type of selected ear style
- var/r_ears = 30 // Ear color.
- var/g_ears = 30 // Ear color
- var/b_ears = 30 // Ear color
- var/r_ears2 = 30 // Ear extra color.
- var/g_ears2 = 30 // Ear extra color
- var/b_ears2 = 30 // Ear extra color
- var/r_ears3 = 30 // Ear tertiary color.
- var/g_ears3 = 30 // Ear tertiary color
- var/b_ears3 = 30 // Ear tertiary color
- var/tail_style // Type of selected tail style
- var/r_tail = 30 // Tail/Taur color
- var/g_tail = 30 // Tail/Taur color
- var/b_tail = 30 // Tail/Taur color
- var/r_tail2 = 30 // For extra overlay.
- var/g_tail2 = 30 // For extra overlay.
- var/b_tail2 = 30 // For extra overlay.
- var/r_tail3 = 30 // For tertiary overlay.
- var/g_tail3 = 30 // For tertiary overlay.
- var/b_tail3 = 30 // For tertiary overlay.
- var/wing_style // Type of selected wing style
- var/r_wing = 30 // Wing color
- var/g_wing = 30 // Wing color
- var/b_wing = 30 // Wing color
- var/r_wing2 = 30 // Wing extra color
- var/g_wing2 = 30 // Wing extra color
- var/b_wing2 = 30 // Wing extra color
- var/r_wing3 = 30 // Wing tertiary color
- var/g_wing3 = 30 // Wing tertiary color
- var/b_wing3 = 30 // Wing tertiary color
-
-// Definition of the stuff for Ears
-/datum/category_item/player_setup_item/vore/ears
- name = "Appearance"
- sort_order = 1
-
-/datum/category_item/player_setup_item/vore/ears/load_character(var/savefile/S)
- S["ear_style"] >> pref.ear_style
- S["r_ears"] >> pref.r_ears
- S["g_ears"] >> pref.g_ears
- S["b_ears"] >> pref.b_ears
- S["r_ears2"] >> pref.r_ears2
- S["g_ears2"] >> pref.g_ears2
- S["b_ears2"] >> pref.b_ears2
- S["r_ears3"] >> pref.r_ears3
- S["g_ears3"] >> pref.g_ears3
- S["b_ears3"] >> pref.b_ears3
- S["tail_style"] >> pref.tail_style
- S["r_tail"] >> pref.r_tail
- S["g_tail"] >> pref.g_tail
- S["b_tail"] >> pref.b_tail
- S["r_tail2"] >> pref.r_tail2
- S["g_tail2"] >> pref.g_tail2
- S["b_tail2"] >> pref.b_tail2
- S["r_tail3"] >> pref.r_tail3
- S["g_tail3"] >> pref.g_tail3
- S["b_tail3"] >> pref.b_tail3
- S["wing_style"] >> pref.wing_style
- S["r_wing"] >> pref.r_wing
- S["g_wing"] >> pref.g_wing
- S["b_wing"] >> pref.b_wing
- S["r_wing2"] >> pref.r_wing2
- S["g_wing2"] >> pref.g_wing2
- S["b_wing2"] >> pref.b_wing2
- S["r_wing3"] >> pref.r_wing3
- S["g_wing3"] >> pref.g_wing3
- S["b_wing3"] >> pref.b_wing3
-
-/datum/category_item/player_setup_item/vore/ears/save_character(var/savefile/S)
- S["ear_style"] << pref.ear_style
- S["r_ears"] << pref.r_ears
- S["g_ears"] << pref.g_ears
- S["b_ears"] << pref.b_ears
- S["r_ears2"] << pref.r_ears2
- S["g_ears2"] << pref.g_ears2
- S["b_ears2"] << pref.b_ears2
- S["r_ears3"] << pref.r_ears3
- S["g_ears3"] << pref.g_ears3
- S["b_ears3"] << pref.b_ears3
- S["tail_style"] << pref.tail_style
- S["r_tail"] << pref.r_tail
- S["g_tail"] << pref.g_tail
- S["b_tail"] << pref.b_tail
- S["r_tail2"] << pref.r_tail2
- S["g_tail2"] << pref.g_tail2
- S["b_tail2"] << pref.b_tail2
- S["r_tail3"] << pref.r_tail3
- S["g_tail3"] << pref.g_tail3
- S["b_tail3"] << pref.b_tail3
- S["wing_style"] << pref.wing_style
- S["r_wing"] << pref.r_wing
- S["g_wing"] << pref.g_wing
- S["b_wing"] << pref.b_wing
- S["r_wing2"] << pref.r_wing2
- S["g_wing2"] << pref.g_wing2
- S["b_wing2"] << pref.b_wing2
- S["r_wing3"] << pref.r_wing3
- S["g_wing3"] << pref.g_wing3
- S["b_wing3"] << pref.b_wing3
-
-/datum/category_item/player_setup_item/vore/ears/sanitize_character()
- pref.r_ears = sanitize_integer(pref.r_ears, 0, 255, initial(pref.r_ears))
- pref.g_ears = sanitize_integer(pref.g_ears, 0, 255, initial(pref.g_ears))
- pref.b_ears = sanitize_integer(pref.b_ears, 0, 255, initial(pref.b_ears))
- pref.r_ears2 = sanitize_integer(pref.r_ears2, 0, 255, initial(pref.r_ears2))
- pref.g_ears2 = sanitize_integer(pref.g_ears2, 0, 255, initial(pref.g_ears2))
- pref.b_ears2 = sanitize_integer(pref.b_ears2, 0, 255, initial(pref.b_ears2))
- pref.r_ears3 = sanitize_integer(pref.r_ears3, 0, 255, initial(pref.r_ears3))
- pref.g_ears3 = sanitize_integer(pref.g_ears3, 0, 255, initial(pref.g_ears3))
- pref.b_ears3 = sanitize_integer(pref.b_ears3, 0, 255, initial(pref.b_ears3))
- pref.r_tail = sanitize_integer(pref.r_tail, 0, 255, initial(pref.r_tail))
- pref.g_tail = sanitize_integer(pref.g_tail, 0, 255, initial(pref.g_tail))
- pref.b_tail = sanitize_integer(pref.b_tail, 0, 255, initial(pref.b_tail))
- pref.r_tail2 = sanitize_integer(pref.r_tail2, 0, 255, initial(pref.r_tail2))
- pref.g_tail2 = sanitize_integer(pref.g_tail2, 0, 255, initial(pref.g_tail2))
- pref.b_tail2 = sanitize_integer(pref.b_tail2, 0, 255, initial(pref.b_tail2))
- pref.r_tail3 = sanitize_integer(pref.r_tail3, 0, 255, initial(pref.r_tail3))
- pref.g_tail3 = sanitize_integer(pref.g_tail3, 0, 255, initial(pref.g_tail3))
- pref.b_tail3 = sanitize_integer(pref.b_tail3, 0, 255, initial(pref.b_tail3))
- pref.r_wing = sanitize_integer(pref.r_wing, 0, 255, initial(pref.r_wing))
- pref.g_wing = sanitize_integer(pref.g_wing, 0, 255, initial(pref.g_wing))
- pref.b_wing = sanitize_integer(pref.b_wing, 0, 255, initial(pref.b_wing))
- pref.r_wing2 = sanitize_integer(pref.r_wing2, 0, 255, initial(pref.r_wing2))
- pref.g_wing2 = sanitize_integer(pref.g_wing2, 0, 255, initial(pref.g_wing2))
- pref.b_wing2 = sanitize_integer(pref.b_wing2, 0, 255, initial(pref.b_wing2))
- pref.r_wing3 = sanitize_integer(pref.r_wing3, 0, 255, initial(pref.r_wing3))
- pref.g_wing3 = sanitize_integer(pref.g_wing3, 0, 255, initial(pref.g_wing3))
- pref.b_wing3 = sanitize_integer(pref.b_wing3, 0, 255, initial(pref.b_wing3))
-
- if(pref.ear_style)
- pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style))
- var/datum/sprite_accessory/temp_ear_style = ear_styles_list[pref.ear_style]
- if(temp_ear_style.apply_restrictions && (!(pref.species in temp_ear_style.species_allowed)))
- pref.ear_style = initial(pref.ear_style)
- if(pref.tail_style)
- pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style))
- var/datum/sprite_accessory/temp_tail_style = tail_styles_list[pref.tail_style]
- if(temp_tail_style.apply_restrictions && (!(pref.species in temp_tail_style.species_allowed)))
- pref.tail_style = initial(pref.tail_style)
- if(pref.wing_style)
- pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style))
- var/datum/sprite_accessory/temp_wing_style = wing_styles_list[pref.wing_style]
- if(temp_wing_style.apply_restrictions && (!(pref.species in temp_wing_style.species_allowed)))
- pref.wing_style = initial(pref.wing_style)
-
-/datum/category_item/player_setup_item/vore/ears/copy_to_mob(var/mob/living/carbon/human/character)
- character.ear_style = ear_styles_list[pref.ear_style]
- character.r_ears = pref.r_ears
- character.b_ears = pref.b_ears
- character.g_ears = pref.g_ears
- character.r_ears2 = pref.r_ears2
- character.b_ears2 = pref.b_ears2
- character.g_ears2 = pref.g_ears2
- character.r_ears3 = pref.r_ears3
- character.b_ears3 = pref.b_ears3
- character.g_ears3 = pref.g_ears3
- character.tail_style = tail_styles_list[pref.tail_style]
- character.r_tail = pref.r_tail
- character.b_tail = pref.b_tail
- character.g_tail = pref.g_tail
- character.r_tail2 = pref.r_tail2
- character.b_tail2 = pref.b_tail2
- character.g_tail2 = pref.g_tail2
- character.r_tail3 = pref.r_tail3
- character.b_tail3 = pref.b_tail3
- character.g_tail3 = pref.g_tail3
- character.wing_style = wing_styles_list[pref.wing_style]
- character.r_wing = pref.r_wing
- character.b_wing = pref.b_wing
- character.g_wing = pref.g_wing
- character.r_wing2 = pref.r_wing2
- character.b_wing2 = pref.b_wing2
- character.g_wing2 = pref.g_wing2
- character.r_wing3 = pref.r_wing3
- character.b_wing3 = pref.b_wing3
- character.g_wing3 = pref.g_wing3
-
-
-
-/datum/category_item/player_setup_item/vore/ears/content(var/mob/user)
- . += "VORE Station Settings
"
-
- var/ear_display = "Normal"
- if(pref.ear_style && (pref.ear_style in ear_styles_list))
- var/datum/sprite_accessory/ears/instance = ear_styles_list[pref.ear_style]
- ear_display = instance.name
-
- else if(pref.ear_style)
- ear_display = "REQUIRES UPDATE"
- . += "Ears
"
- . += " Style: [ear_display]
"
- if(ear_styles_list[pref.ear_style])
- var/datum/sprite_accessory/ears/ear = ear_styles_list[pref.ear_style]
- if(ear.do_colouration)
- . += "Change Color [color_square(pref.r_ears, pref.g_ears, pref.b_ears)]
"
- if(ear.extra_overlay)
- . += "Change Secondary Color [color_square(pref.r_ears2, pref.g_ears2, pref.b_ears2)]
"
- if(ear.extra_overlay2)
- . += "Change Tertiary Color [color_square(pref.r_ears3, pref.g_ears3, pref.b_ears3)]
"
-
- var/tail_display = "Normal"
- if(pref.tail_style && (pref.tail_style in tail_styles_list))
- var/datum/sprite_accessory/tail/instance = tail_styles_list[pref.tail_style]
- tail_display = instance.name
- else if(pref.tail_style)
- tail_display = "REQUIRES UPDATE"
- . += "Tail
"
- . += " Style: [tail_display]
"
-
- if(tail_styles_list[pref.tail_style])
- var/datum/sprite_accessory/tail/T = tail_styles_list[pref.tail_style]
- if(T.do_colouration)
- . += "Change Color [color_square(pref.r_tail, pref.g_tail, pref.b_tail)]
"
- if(T.extra_overlay)
- . += "Change Secondary Color [color_square(pref.r_tail2, pref.g_tail2, pref.b_tail2)]
"
- if(T.extra_overlay2)
- . += "Change Tertiary Color [color_square(pref.r_tail3, pref.g_tail3, pref.b_tail3)]
"
-
- var/wing_display = "Normal"
- if(pref.wing_style && (pref.wing_style in wing_styles_list))
- var/datum/sprite_accessory/wing/instance = wing_styles_list[pref.wing_style]
- wing_display = instance.name
- else if(pref.wing_style)
- wing_display = "REQUIRES UPDATE"
- . += "Wing
"
- . += " Style: [wing_display]
"
-
- if(wing_styles_list[pref.wing_style])
- var/datum/sprite_accessory/wing/W = wing_styles_list[pref.wing_style]
- if (W.do_colouration)
- . += "Change Color [color_square(pref.r_wing, pref.g_wing, pref.b_wing)]
"
- if (W.extra_overlay)
- . += "Change Secondary Color [color_square(pref.r_wing2, pref.g_wing2, pref.b_wing2)]
"
- if (W.extra_overlay2)
- . += "Change Secondary Color [color_square(pref.r_wing3, pref.g_wing3, pref.b_wing3)]
"
-
-/datum/category_item/player_setup_item/vore/ears/OnTopic(var/href,var/list/href_list, var/mob/user)
- if(!CanUseTopic(user))
- return TOPIC_NOACTION
-
- else if(href_list["ear_style"])
- // Construct the list of names allowed for this user.
- var/list/pretty_ear_styles = list("Normal" = null)
- for(var/path in ear_styles_list)
- var/datum/sprite_accessory/ears/instance = ear_styles_list[path]
- if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)))
- pretty_ear_styles[instance.name] = path
-
- // Present choice to user
- var/new_ear_style = input(user, "Pick ears", "Character Preference", pref.ear_style) as null|anything in pretty_ear_styles
- if(new_ear_style)
- pref.ear_style = pretty_ear_styles[new_ear_style]
-
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["ear_color"])
- var/new_earc = input(user, "Choose your character's ear colour:", "Character Preference",
- rgb(pref.r_ears, pref.g_ears, pref.b_ears)) as color|null
- if(new_earc)
- pref.r_ears = hex2num(copytext(new_earc, 2, 4))
- pref.g_ears = hex2num(copytext(new_earc, 4, 6))
- pref.b_ears = hex2num(copytext(new_earc, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["ear_color2"])
- var/new_earc2 = input(user, "Choose your character's secondary ear colour:", "Character Preference",
- rgb(pref.r_ears2, pref.g_ears2, pref.b_ears2)) as color|null
- if(new_earc2)
- pref.r_ears2 = hex2num(copytext(new_earc2, 2, 4))
- pref.g_ears2 = hex2num(copytext(new_earc2, 4, 6))
- pref.b_ears2 = hex2num(copytext(new_earc2, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["ear_color3"])
- var/new_earc3 = input(user, "Choose your character's tertiary ear colour:", "Character Preference",
- rgb(pref.r_ears3, pref.g_ears3, pref.b_ears3)) as color|null
- if(new_earc3)
- pref.r_ears3 = hex2num(copytext(new_earc3, 2, 4))
- pref.g_ears3 = hex2num(copytext(new_earc3, 4, 6))
- pref.b_ears3 = hex2num(copytext(new_earc3, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["tail_style"])
- // Construct the list of names allowed for this user.
- var/list/pretty_tail_styles = list("Normal" = null)
- for(var/path in tail_styles_list)
- var/datum/sprite_accessory/tail/instance = tail_styles_list[path]
- if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)))
- pretty_tail_styles[instance.name] = path
-
- // Present choice to user
- var/new_tail_style = input(user, "Pick tails", "Character Preference", pref.tail_style) as null|anything in pretty_tail_styles
- if(new_tail_style)
- pref.tail_style = pretty_tail_styles[new_tail_style]
-
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["tail_color"])
- var/new_tailc = input(user, "Choose your character's tail/taur colour:", "Character Preference",
- rgb(pref.r_tail, pref.g_tail, pref.b_tail)) as color|null
- if(new_tailc)
- pref.r_tail = hex2num(copytext(new_tailc, 2, 4))
- pref.g_tail = hex2num(copytext(new_tailc, 4, 6))
- pref.b_tail = hex2num(copytext(new_tailc, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["tail_color2"])
- var/new_tailc2 = input(user, "Choose your character's secondary tail/taur colour:", "Character Preference",
- rgb(pref.r_tail2, pref.g_tail2, pref.b_tail2)) as color|null
- if(new_tailc2)
- pref.r_tail2 = hex2num(copytext(new_tailc2, 2, 4))
- pref.g_tail2 = hex2num(copytext(new_tailc2, 4, 6))
- pref.b_tail2 = hex2num(copytext(new_tailc2, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["tail_color3"])
- var/new_tailc3 = input(user, "Choose your character's tertiary tail/taur colour:", "Character Preference",
- rgb(pref.r_tail3, pref.g_tail3, pref.b_tail3)) as color|null
- if(new_tailc3)
- pref.r_tail3 = hex2num(copytext(new_tailc3, 2, 4))
- pref.g_tail3 = hex2num(copytext(new_tailc3, 4, 6))
- pref.b_tail3 = hex2num(copytext(new_tailc3, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["wing_style"])
- // Construct the list of names allowed for this user.
- var/list/pretty_wing_styles = list("Normal" = null)
- for(var/path in wing_styles_list)
- var/datum/sprite_accessory/wing/instance = wing_styles_list[path]
- if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)))
- pretty_wing_styles[instance.name] = path
-
- // Present choice to user
- var/new_wing_style = input(user, "Pick wings", "Character Preference", pref.wing_style) as null|anything in pretty_wing_styles
- if(new_wing_style)
- pref.wing_style = pretty_wing_styles[new_wing_style]
-
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["wing_color"])
- var/new_wingc = input(user, "Choose your character's wing colour:", "Character Preference",
- rgb(pref.r_wing, pref.g_wing, pref.b_wing)) as color|null
- if(new_wingc)
- pref.r_wing = hex2num(copytext(new_wingc, 2, 4))
- pref.g_wing = hex2num(copytext(new_wingc, 4, 6))
- pref.b_wing = hex2num(copytext(new_wingc, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["wing_color2"])
- var/new_wingc2 = input(user, "Choose your character's secondary wing colour:", "Character Preference",
- rgb(pref.r_wing2, pref.g_wing2, pref.b_wing2)) as color|null
- if(new_wingc2)
- pref.r_wing2 = hex2num(copytext(new_wingc2, 2, 4))
- pref.g_wing2 = hex2num(copytext(new_wingc2, 4, 6))
- pref.b_wing2 = hex2num(copytext(new_wingc2, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- else if(href_list["wing_color3"])
- var/new_wingc3 = input(user, "Choose your character's tertiary wing colour:", "Character Preference",
- rgb(pref.r_wing3, pref.g_wing3, pref.b_wing3)) as color|null
- if(new_wingc3)
- pref.r_wing3 = hex2num(copytext(new_wingc3, 2, 4))
- pref.g_wing3 = hex2num(copytext(new_wingc3, 4, 6))
- pref.b_wing3 = hex2num(copytext(new_wingc3, 6, 8))
- return TOPIC_REFRESH_UPDATE_PREVIEW
-
- return ..()
diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm
index 83f94d439b..17147acb27 100644
--- a/code/modules/client/preference_setup/vore/07_traits.dm
+++ b/code/modules/client/preference_setup/vore/07_traits.dm
@@ -96,7 +96,7 @@
var/datum/species/selected_species = GLOB.all_species[pref.species]
if(selected_species.selects_bodytype)
// Allowed!
- else if(!pref.custom_base || !(pref.custom_base in custom_species_bases))
+ else if(!pref.custom_base || !(pref.custom_base in GLOB.custom_species_bases))
pref.custom_base = SPECIES_HUMAN
/datum/category_item/player_setup_item/vore/traits/copy_to_mob(var/mob/living/carbon/human/character)
@@ -207,7 +207,7 @@
return TOPIC_REFRESH
else if(href_list["custom_base"])
- var/list/choices = custom_species_bases
+ var/list/choices = GLOB.custom_species_bases
if(pref.species != SPECIES_CUSTOM)
choices = (choices | pref.species)
var/text_choice = input("Pick an icon set for your species:","Icon Base") in choices
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 1b03300ddd..918294ff7f 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -744,6 +744,8 @@
slot_flags = SLOT_OCLOTHING
var/blood_overlay_type = "suit"
blood_sprite_state = "suitblood" //Defaults to the suit's blood overlay, so that some blood renders instead of no blood.
+
+ var/taurized = FALSE
siemens_coefficient = 0.9
w_class = ITEMSIZE_NORMAL
preserve_item = 1
@@ -779,6 +781,43 @@
set_clothing_index()
+/obj/item/clothing/suit/equipped(var/mob/user, var/slot)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if((taurized && !isTaurTail(H.tail_style)) || (!taurized && isTaurTail(H.tail_style)))
+ taurize(user)
+
+ return ..()
+
+/obj/item/clothing/suit/proc/taurize(var/mob/living/carbon/human/Taur)
+ if(isTaurTail(Taur.tail_style))
+ var/datum/sprite_accessory/tail/taur/taurtail = Taur.tail_style
+ if(taurtail.suit_sprites && (get_worn_icon_state(slot_wear_suit_str) in cached_icon_states(taurtail.suit_sprites)))
+ icon_override = taurtail.suit_sprites
+ taurized = TRUE
+
+ if(!taurized)
+ icon_override = initial(icon_override)
+ taurized = FALSE
+
+// Taur suits need to be shifted so its centered on their taur half.
+/obj/item/clothing/suit/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0,var/icon/clip_mask)
+ var/image/standing = ..()
+ if(taurized) //Special snowflake var on suits
+ standing.pixel_x = -16
+ standing.layer = BODY_LAYER + 15 // 15 is above tail layer, so will not be covered by taurbody.
+ return standing
+
+/obj/item/clothing/suit/apply_accessories(var/image/standing)
+ if(LAZYLEN(accessories) && taurized)
+ for(var/obj/item/clothing/accessory/A in accessories)
+ var/image/I = new(A.get_mob_overlay())
+ I.pixel_x = 16 //Opposite of the pixel_x on the suit (-16) from taurization to cancel it out and puts the accessory in the correct place on the body.
+ standing.add_overlay(I)
+ else
+ return ..()
+
+
///////////////////////////////////////////////////////////////////////
//Under clothing
/obj/item/clothing/under
@@ -1056,7 +1095,6 @@
to_chat(usr, "You roll down your [src]'s sleeves.")
update_clothing_icon()
-
/obj/item/clothing/under/rank/New()
sensor_mode = pick(0,1,2,3)
..()
diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm
index 68df04ae22..1c4b8cd9f3 100644
--- a/code/modules/clothing/clothing_vr.dm
+++ b/code/modules/clothing/clothing_vr.dm
@@ -149,48 +149,11 @@
//Switch to taur sprites if a taur equips
/obj/item/clothing/suit
- var/taurized = FALSE //Easier than trying to 'compare icons' to see if it's a taur suit
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/suit.dmi',
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/suit.dmi')
-/obj/item/clothing/suit/equipped(var/mob/user, var/slot)
- var/normalize = TRUE
-
- //Pyramid of doom-y. Improve somehow?
- if(!taurized && slot == slot_wear_suit && ishuman(user))
- var/mob/living/carbon/human/H = user
- if(isTaurTail(H.tail_style))
- var/datum/sprite_accessory/tail/taur/taurtail = H.tail_style
- if(taurtail.suit_sprites && (get_worn_icon_state(slot_wear_suit_str) in cached_icon_states(taurtail.suit_sprites)))
- icon_override = taurtail.suit_sprites
- normalize = FALSE
- taurized = TRUE
-
- if(normalize && taurized)
- icon_override = initial(icon_override)
- taurized = FALSE
-
- return ..()
-
-// Taur suits need to be shifted so its centered on their taur half.
-/obj/item/clothing/suit/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0,var/icon/clip_mask)
- var/image/standing = ..()
- if(taurized) //Special snowflake var on suits
- standing.pixel_x = -16
- standing.layer = BODY_LAYER + 15 // 15 is above tail layer, so will not be covered by taurbody.
- return standing
-
-/obj/item/clothing/suit/apply_accessories(var/image/standing)
- if(LAZYLEN(accessories) && taurized)
- for(var/obj/item/clothing/accessory/A in accessories)
- var/image/I = new(A.get_mob_overlay())
- I.pixel_x = 16 //Opposite of the pixel_x on the suit (-16) from taurization to cancel it out and puts the accessory in the correct place on the body.
- standing.add_overlay(I)
- else
- return ..()
-
//TFF 5/8/19 - sets Vorestation /obj/item/clothing/under sensor setting default?
/obj/item/clothing/under
sensor_mode = 3
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 87e3f38b91..81a49ae6fe 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -500,7 +500,7 @@
message = "points to [M]."
else
m_type = 1
-
+
if("crack")
if(!restrained())
message = "cracks [T.his] knuckles."
@@ -906,3 +906,27 @@
HTML +="\[Done\]"
HTML += ""
src << browse(HTML, "window=flavor_changes;size=430x300")
+
+/mob/living/carbon/human/proc/toggle_tail(var/setting,var/message = 0)
+ if(!tail_style || !tail_style.ani_state)
+ if(message)
+ to_chat(src, "You don't have a tail that supports this.")
+ 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(var/setting,var/message = 0)
+ if(!wing_style || !wing_style.ani_state)
+ if(message)
+ to_chat(src, "You don't have a wingtype that supports this.")
+ return 0
+
+ var/new_flapping = isnull(setting) ? !flapping : setting
+ if(new_flapping != flapping)
+ flapping = setting
+ update_wing_showing()
+ return 1
diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm
index 88e3b3d6c9..5eeda3a8e4 100644
--- a/code/modules/mob/living/carbon/human/emote_vr.dm
+++ b/code/modules/mob/living/carbon/human/emote_vr.dm
@@ -9,13 +9,13 @@
switch(act)
if("vwag")
- if(toggle_tail_vr(message = 1))
+ if(toggle_tail(message = 1))
m_type = 1
message = "[wagging ? "starts" : "stops"] wagging their tail."
else
return 1
if("vflap")
- if(toggle_wing_vr(message = 1))
+ if(toggle_wing(message = 1))
m_type = 1
message = "[flapping ? "starts" : "stops"] flapping their wings."
else
@@ -241,30 +241,6 @@
density = original_density
pass_flags = original_passflags
-/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, "You don't have a tail that supports this.")
- 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, "You don't have a tail that supports this.")
- return 0
-
- var/new_flapping = isnull(setting) ? !flapping : setting
- if(new_flapping != flapping)
- flapping = setting
- update_wing_showing()
- return 1
-
/mob/living/carbon/human/verb/toggle_gender_identity_vr()
set name = "Set Gender Identity"
set desc = "Sets the pronouns when examined and performing an emote."
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 208e1e1ffc..34b93b2573 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -118,3 +118,42 @@
inventory_panel_type = /datum/inventory_panel/human
butchery_loot = list(/obj/item/stack/animalhide/human = 1)
+
+ // 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/r_ears3 = 30 //Trust me, we could always use more colour. No japes.
+ var/g_ears3 = 30
+ var/b_ears3 = 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/r_tail3 = 30
+ var/g_tail3 = 30
+ var/b_tail3 = 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/r_wing3 = 30
+ var/g_wing3 = 30
+ var/b_wing3 = 30
+
+ var/wagging = 0 //UGH.
+ var/flapping = 0
+
+ // Custom Species Name
+ var/custom_species
+
diff --git a/code/modules/mob/living/carbon/human/human_defines_vr.dm b/code/modules/mob/living/carbon/human/human_defines_vr.dm
index aa789a8848..0ac1b641d3 100644
--- a/code/modules/mob/living/carbon/human/human_defines_vr.dm
+++ b/code/modules/mob/living/carbon/human/human_defines_vr.dm
@@ -3,8 +3,6 @@
g_skin = 206
b_skin = 179
- var/wagging = 0 //UGH.
- var/flapping = 0
var/vantag_pref = VANTAG_NONE //What's my status?
var/impersonate_bodytype //For impersonating a bodytype
var/ability_flags = 0 //Shadekin abilities/potentially other species-based?
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 303f8ccb85..e4b3ed606e 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -258,6 +258,27 @@
/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()
@@ -401,8 +422,9 @@
"[H] boops [target]'s nose.", \
"You boop [target] on the nose.", )
//VOREStation Edit End
- else H.visible_message("[H] hugs [target] to make [t_him] feel better!", \
- "You hug [target] to make [t_him] feel better!") //End VOREStation Edit
+ else
+ H.visible_message("[H] hugs [target] to make [t_him] feel better!", \
+ "You hug [target] to make [t_him] feel better!")
/datum/species/proc/remove_inherent_verbs(var/mob/living/carbon/human/H)
if(inherent_verbs)
diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm
index 558924a784..fb9beed574 100644
--- a/code/modules/mob/living/carbon/human/species/species_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/species_vr.dm
@@ -1,25 +1,10 @@
/datum/species
- //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
-
//This is so that if a race is using the chimera revive they can't use it more than once.
//Shouldn't really be seen in play too often, but it's case an admin event happens and they give a non chimera the chimera revive. Only one person can use the chimera revive at a time per race.
//var/reviving = 0 //commented out 'cause moved to mob
holder_type = /obj/item/weapon/holder/micro //This allows you to pick up crew
min_age = 18
descriptors = list()
- 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
var/organic_food_coeff = 1
var/synthetic_food_coeff = 0
@@ -39,11 +24,6 @@
var/list/traits = list()
-/datum/species/proc/update_attack_types()
- unarmed_attacks = list()
- for(var/u_type in unarmed_types)
- unarmed_attacks += new u_type()
-
/datum/species/proc/give_numbing_bite() //Holy SHIT this is hacky, but it works. Updating a mob's attacks mid game is insane.
unarmed_attacks = list()
unarmed_types += /datum/unarmed_attack/bite/sharp/numbing
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index ed7935e871..805e8b7585 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -4,6 +4,7 @@
*/
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,8 +88,8 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
#define LEGCUFF_LAYER 26 //Same as handcuffs, for legcuffs
#define L_HAND_LAYER 27 //Left-hand item
#define R_HAND_LAYER 28 //Right-hand item
-#define WING_LAYER 29 //VOREStation edit. Simply move this up a number if things are added.
-#define TAIL_LAYER_ALT 30 //VOREStation edit. Simply move this up a number if things are added.
+#define WING_LAYER 29 //Wings or protrusions over the suit.
+#define TAIL_LAYER_ALT 30 //Modified tail-sprite layer. Tend to be larger.
#define MODIFIER_EFFECTS_LAYER 31 //Effects drawn by modifiers
#define FIRE_LAYER 32 //'Mob on fire' overlay layer
#define WATER_LAYER 33 //'Mob submerged' overlay layer
@@ -197,7 +198,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())
+ if(isnull(O) || O.is_stump() || O.is_hidden_by_tail())
continue
O.update_icon()
@@ -267,21 +268,20 @@ 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])]"
- //VOREStation Edit - Different way of tracking add/mult species
if(species.color_mult)
icon_key += "[ICON_MULTIPLY]"
else
icon_key += "[ICON_ADD]"
- //VOREStation Edit End
else
icon_key += "#000000"
+
for(var/M in part.markings)
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)) //VOREStation Edit - Not for nanoform parts
+ if((part.robotic == ORGAN_ROBOT || part.robotic == ORGAN_LIFELIKE) && (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"
@@ -327,7 +327,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") //VOREStation Edit.
+ var/icon/temp2 = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi', icon_state = "blank")
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
temp2.Insert(new/icon(temp,dir=SOUTH),dir=SOUTH)
if(!(part.icon_position & LEFT))
@@ -368,7 +368,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//tail
update_tail_showing()
- update_wing_showing() // VOREStation Edit
+ update_wing_showing()
/mob/living/carbon/human/proc/update_skin()
if(QDESTROYING(src))
@@ -452,7 +452,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) //VOREStation edit
+ facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_MULTIPLY)
face_standing.Blend(facial_s, ICON_OVERLAY)
@@ -478,22 +478,16 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
face_standing.Blend(hair_s, ICON_OVERLAY)
- // VOREStation Edit - START
+ if(head_organ.nonsolid || head_organ.transparent)
+ 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
- // VOREStation Edit - END
- if(head_organ.transparent) //VOREStation Edit. For better slime limbs.
- face_standing += rgb(,,,120)
-
- overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER)
+ overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER, "pixel_y" = head_organ.head_offset)
apply_layer(HAIR_LAYER)
+ return
// VOREStation Edit - START
var/icon/hair_acc_s = get_hair_accessory_overlay()
@@ -647,14 +641,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
uniform_sprite = "[INV_W_UNIFORM_DEF_ICON].dmi"
//Build a uniform sprite
- //VOREStation Edit start.
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)
- //VOREStation Edit end.
apply_layer(UNIFORM_LAYER)
/mob/living/carbon/human/update_inv_wear_id()
@@ -736,7 +728,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.
- //VOREStation Edit
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.
@@ -818,7 +809,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
update_inv_w_uniform()
update_inv_shoes()
update_tail_showing()
- update_wing_showing() // VOREStation Edit
+ update_wing_showing()
if(!wear_suit)
return //No point, no suit.
@@ -833,7 +824,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
else
suit_sprite = "[INV_SUIT_DEF_ICON].dmi"
- //VOREStation Edit start.
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
@@ -842,8 +832,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
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)
- //VOREStation Edit end.
-
apply_layer(SUIT_LAYER)
/mob/living/carbon/human/update_inv_pockets()
@@ -955,24 +943,23 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
return
remove_layer(TAIL_LAYER)
- remove_layer(TAIL_LAYER_ALT) // VOREStation Edit - START - Alt 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
+ var/image/tail_image = get_tail_image()
+ if(tail_image)
+ tail_image.layer = BODY_LAYER+used_tail_layer
+ overlays_standing[used_tail_layer] = tail_image
apply_layer(used_tail_layer)
return
- // VOREStation Edit - END
var/species_tail = species.get_tail(src) // Species tail icon_state prefix.
//This one is actually not that bad I guess.
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) // VOREStation Edit - Alt Tail Layer
+ overlays_standing[used_tail_layer] = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+used_tail_layer) // Alt Tail Layer
animate_tail_reset()
//TODO: Is this the appropriate place for this, and not on species...?
@@ -982,22 +969,22 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(!tail_icon)
//generate a new one
var/species_tail_anim = species.get_tail_animation(src)
- if(!species_tail_anim && species.icobase_tail) species_tail_anim = species.icobase //VOREStation Code - Allow override of file for non-animated tails
+ if(!species_tail_anim && species.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) // VOREStation edit
+ tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species.color_mult ? ICON_MULTIPLY : 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]_s") //VOREStation edit -- Suffix icon state string with '_s' to compensate for diff in .dmi b/w us & Polaris.
- hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species.color_mult ? ICON_MULTIPLY : ICON_ADD) //VOREStation edit -- Check for species color_mult
+ 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
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 // VOREStation Edit - START - Alt Tail Layer
+ var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // Alt Tail Layer
var/image/tail_overlay = overlays_standing[used_tail_layer]
remove_layer(TAIL_LAYER)
@@ -1009,7 +996,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
tail_overlay.icon_state = t_state
. = tail_overlay
- apply_layer(used_tail_layer) // VOREStation Edit - END
+ apply_layer(used_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.
@@ -1019,9 +1006,9 @@ 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 // VOREStation Edit - Alt Tail Layer
+ var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // Alt Tail Layer
- var/image/tail_overlay = overlays_standing[used_tail_layer] // VOREStation Edit - Alt Tail Layer
+ var/image/tail_overlay = overlays_standing[used_tail_layer] // Alt Tail Layer
if(tail_overlay && tail_overlay.icon_state == t_state)
return //let the existing animation finish
@@ -1029,7 +1016,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) // VOREStation Edit - Alt Tail Layer
+ if(overlays_standing[used_tail_layer] == tail_overlay && tail_overlay.icon_state == t_state) // Alt Tail Layer
animate_tail_stop()
/mob/living/carbon/human/proc/animate_tail_start()
@@ -1052,7 +1039,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
set_tail_state("[species.get_tail(src)]_idle[rand(0,9)]")
else
set_tail_state("[species.get_tail(src)]_static")
- toggle_tail_vr(FALSE) //VOREStation Add - So tails stop when someone dies. TODO - Fix this hack ~Leshana
+ toggle_tail(FALSE) //So tails stop when someone dies. TODO - Fix this hack ~Leshana
/mob/living/carbon/human/proc/animate_tail_stop()
if(QDESTROYING(src))
@@ -1060,20 +1047,18 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
set_tail_state("[species.get_tail(src)]_static")
-// VOREStation Edit - Wings! See update_icons_vr.dm for more wing procs
/mob/living/carbon/human/proc/update_wing_showing()
if(QDESTROYING(src))
return
remove_layer(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
+ var/image/wing_image = get_wing_image()
+ if(wing_image)
+ wing_image.layer = BODY_LAYER+WING_LAYER
+ overlays_standing[WING_LAYER] = wing_image
apply_layer(WING_LAYER)
-// VOREStation Edit end
/mob/living/carbon/human/update_modifier_visuals()
if(QDESTROYING(src))
@@ -1140,6 +1125,117 @@ 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)
+ if(wing_style.extra_overlay2)
+ var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2)
+ if(wing_style.ani_state)
+ overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w)
+ overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
+ wing_s.Blend(overlay, ICON_OVERLAY)
+ qdel(overlay)
+ else
+ overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), 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)
+ if(ear_style.extra_overlay2) //MORE COLOURS IS BETTERER
+ var/icon/overlay = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.extra_overlay2)
+ overlay.Blend(rgb(src.r_ears3, src.g_ears3, src.b_ears3), 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(tail_style.extra_overlay2)
+ var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2)
+ if(wagging && tail_style.ani_state)
+ overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2_w)
+ overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode)
+ tail_s.Blend(overlay, ICON_OVERLAY)
+ qdel(overlay)
+ else
+ overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), 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
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 4238a56080..8046e4deea 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -73,5 +73,17 @@
var/image/selected_image = null // Used for buildmode AI control stuff.
+<<<<<<< HEAD
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+ var/allow_self_surgery = FALSE // Used to determine if the mob can perform surgery on itself.
+
+=======
+ var/allow_self_surgery = FALSE // Used to determine if the mob can perform surgery on itself.
+
+
+ var/tail_alt = 0
+ var/flying = 0 // Allows flight
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
var/inventory_panel_type = /datum/inventory_panel
var/datum/inventory_panel/inventory_panel
+
diff --git a/code/modules/mob/living/living_vr.dm b/code/modules/mob/living/living_vr.dm
index 3103ae4928..ab5607d22b 100644
--- a/code/modules/mob/living/living_vr.dm
+++ b/code/modules/mob/living/living_vr.dm
@@ -1,3 +1,8 @@
+/mob/living/Check_Shoegrip()
+ if(flying)
+ return 1
+ ..()
+
/mob/living/verb/customsay()
set category = "IC"
set name = "Customize Speech Verbs"
@@ -24,23 +29,6 @@
else
return
-/mob/living/proc/toggle_rider_reins()
- set name = "Give Reins"
- set category = "Abilities"
- set desc = "Let people riding on you control your movement."
-
- if(riding_datum)
- if(istype(riding_datum,/datum/riding))
- if(riding_datum.keytype)
- riding_datum.keytype = null
- to_chat(src, "Rider control enabled.")
- return
- else
- riding_datum.keytype = /obj/item/weapon/material/twohanded/fluff/riding_crop
- to_chat(src, "Rider control restricted.")
- return
- return
-
/mob/living/verb/set_metainfo()
set name = "Set OOC Metainfo"
set desc = "Sets OOC notes about yourself or your RP preferences or status."
diff --git a/code/modules/mob/living/riding.dm b/code/modules/mob/living/riding.dm
new file mode 100644
index 0000000000..3a614a4b6d
--- /dev/null
+++ b/code/modules/mob/living/riding.dm
@@ -0,0 +1,16 @@
+/mob/living/proc/toggle_rider_reins()
+ set name = "Give Reins"
+ set category = "Abilities"
+ set desc = "Let people riding on you control your movement."
+
+ if(riding_datum)
+ if(istype(riding_datum,/datum/riding))
+ if(riding_datum.keytype)
+ riding_datum.keytype = null
+ to_chat(src, "Rider control enabled.")
+ return
+ else
+ riding_datum.keytype = /obj/item/weapon/material/twohanded/riding_crop
+ to_chat(src, "Rider control restricted.")
+ return
+ return
diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm
index 9b72bff3a5..976e0a09e5 100644
--- a/code/modules/mob/living/silicon/robot/robot_vr.dm
+++ b/code/modules/mob/living/silicon/robot/robot_vr.dm
@@ -177,7 +177,7 @@
//RIDING
/datum/riding/dogborg
- keytype = /obj/item/weapon/material/twohanded/fluff/riding_crop // Crack!
+ keytype = /obj/item/weapon/material/twohanded/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.
diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm
index f843df402d..c7ce2c4912 100644
--- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm
+++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm
@@ -277,7 +277,7 @@
// Riding
/datum/riding/simple_mob
- keytype = /obj/item/weapon/material/twohanded/fluff/riding_crop // Crack!
+ keytype = /obj/item/weapon/material/twohanded/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.
diff --git a/code/modules/mob/mob_defines_vr.dm b/code/modules/mob/mob_defines_vr.dm
index 41c27a41d0..ff5f1ae582 100644
--- a/code/modules/mob/mob_defines_vr.dm
+++ b/code/modules/mob/mob_defines_vr.dm
@@ -1,6 +1,5 @@
/mob
var/vantag_hud = 0 // Do I have the HUD enabled?
- var/flying = 0 // Allows flight
var/mob/temporary_form // For holding onto a temporary form
var/disconnect_time = null //Time of client loss, set by Logout(), for timekeeping
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 95732bad6a..ebcc9cf35a 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -460,8 +460,6 @@
return dense_object
/mob/proc/Check_Shoegrip()
- if(flying) //VOREStation Edit. Checks to see if they and are flying.
- return 1 //VOREStation Edit. Checks to see if they are flying. Mostly for this to be ported to Polaris.
return 0
/mob/proc/Process_Spaceslipping(var/prob_slip = 5)
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index 953f4d01ac..7c5d00773c 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -252,8 +252,12 @@
/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(setting = TRUE)
+ mannequin.toggle_wing(setting = TRUE)
COMPILE_OVERLAYS(mannequin)
update_character_previews(new /mutable_appearance(mannequin))
diff --git a/code/modules/mob/new_player/preferences_setup_vr.dm b/code/modules/mob/new_player/preferences_setup_vr.dm
index 1f01884b60..dca0ff56ec 100644
--- a/code/modules/mob/new_player/preferences_setup_vr.dm
+++ b/code/modules/mob/new_player/preferences_setup_vr.dm
@@ -1,16 +1,3 @@
-/datum/preferences/update_preview_icon() // Lines up and un-overlaps character edit previews. Also un-splits taurs.
- 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.update_transform()
- mannequin.toggle_tail_vr(setting = TRUE)
- mannequin.toggle_wing_vr(setting = TRUE)
- COMPILE_OVERLAYS(mannequin)
-
- update_character_previews(new /mutable_appearance(mannequin))
-
//TFF 5/8/19 - add randomised sensor setting for random button clicking
/datum/preferences/randomize_appearance_and_body_for(var/mob/living/carbon/human/H)
sensorpref = rand(1,5)
\ No newline at end of file
diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm
index 4694499cc8..f04cde9c4c 100644
--- a/code/modules/mob/new_player/sprite_accessories.dm
+++ b/code/modules/mob/new_player/sprite_accessories.dm
@@ -1708,23 +1708,23 @@ shaved
/datum/sprite_accessory/hair/skr_tentacle_veryshort
name = "Skrell Short Tentacles"
icon_state = "skrell_hair_short"
- species_allowed = list(SPECIES_SKRELL)
+ species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
gender = MALE
/datum/sprite_accessory/hair/skr_tentacle_short
name = "Skrell Average Tentacles"
icon_state = "skrell_hair_average"
- species_allowed = list(SPECIES_SKRELL)
+ species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/hair/skr_tentacle_average
name = "Skrell Long Tentacles"
icon_state = "skrell_hair_long"
- species_allowed = list(SPECIES_SKRELL)
+ species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
/datum/sprite_accessory/hair/skr_tentacle_verylong
name = "Skrell Very Long Tentacles"
icon_state = "skrell_hair_verylong"
- species_allowed = list(SPECIES_SKRELL)
+ species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
//Tajaran hairstyles
/datum/sprite_accessory/hair/taj_ears
@@ -2006,6 +2006,8 @@ 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
diff --git a/code/modules/mob/new_player/sprite_accessories_ear.dm b/code/modules/mob/new_player/sprite_accessories_ear.dm
new file mode 100644
index 0000000000..6262b8ba60
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_ear.dm
@@ -0,0 +1,489 @@
+/*
+////////////////////////////
+/ =--------------------= /
+/ == 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/extra_overlay2
+ 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/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"
\ No newline at end of file
diff --git a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
new file mode 100644
index 0000000000..7705e1a821
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
@@ -0,0 +1,708 @@
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Ear Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/ears
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/ears_vr.dmi'
+ do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) //This lets all races use
+ color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
+
+// Species-unique ears
+
+/datum/sprite_accessory/ears/shadekin
+ name = "Shadekin Ears, colorable"
+ desc = ""
+ icon_state = "shadekin"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ apply_restrictions = TRUE
+ species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
+
+// Ears avaliable to anyone
+
+/datum/sprite_accessory/ears/alt_ram_horns
+ name = "Solid ram horns"
+ desc = ""
+ icon_state = "ram_horns_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/hyena
+ name = "hyena ears, dual-color"
+ desc = ""
+ icon_state = "hyena"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "hyena-inner"
+
+/datum/sprite_accessory/ears/moth
+ name = "moth antennae"
+ desc = ""
+ icon_state = "moth"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/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
+
+/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)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshariinner"
+
+/datum/sprite_accessory/ears/tesharihigh
+ name = "Teshari upper ears (colorable)"
+ desc = ""
+ icon_state = "tesharihigh"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tesharihighinner"
+
+/datum/sprite_accessory/ears/tesharilow
+ name = "Teshari lower ears (colorable)"
+ desc = ""
+ icon_state = "tesharilow"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tesharilowinner"
+
+/datum/sprite_accessory/ears/tesh_pattern_ear_male
+ name = "Teshari male ear pattern (colorable)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_male_pattern"
+
+/datum/sprite_accessory/ears/tesh_pattern_ear_female
+ name = "Teshari female ear pattern (colorable)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_female_pattern"
+
+/datum/sprite_accessory/ears/inkling
+ name = "colorable mature inkling hair"
+ desc = ""
+ icon = 'icons/mob/human_face_vr.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"
+
+/datum/sprite_accessory/ears/synthhorns_plain
+ name = "Synth horns, plain"
+ desc = ""
+ icon_state = "synthhorns_plain"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "synthhorns_plain_light"
+
+/datum/sprite_accessory/ears/synthhorns_thick
+ name = "Synth horns, thick"
+ desc = ""
+ icon_state = "synthhorns_thick"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "synthhorns_thick_light"
+
+/datum/sprite_accessory/ears/synthhorns_curly
+ name = "Synth horns, curly"
+ desc = ""
+ icon_state = "synthhorns_curled"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+
+/datum/sprite_accessory/ears/forward_curled_demon_horns_bony
+ name = "Succubus horns, colourable"
+ desc = ""
+ icon_state = "succu-horns_b"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/forward_curled_demon_horns_bony_with_colorable_ears
+ name = "Succubus horns with pointy ears, colourable"
+ desc = ""
+ icon_state = "elfs"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "succu-horns_b"
+
+/datum/sprite_accessory/ears/chorns_nubbydogs
+ name = "Nubby Chorns"
+ desc = ""
+ icon_state = "chorn_nubby"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_herk
+ name = "Herk Chorns"
+ desc = ""
+ icon_state = "chorn_herk"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bork
+ name = "Bork Chorns"
+ desc = ""
+ icon_state = "chorn_bork"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bull
+ name = "Bull Chorns"
+ desc = ""
+ icon_state = "chorn_bull"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bicarrot
+ name = "Bicarrot Chorns"
+ desc = ""
+ icon_state = "chorn_bicarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_longcarrot
+ name = "Long Carrot Chorns"
+ desc = ""
+ icon_state = "chorn_longcarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_shortcarrot
+ name = "Short Carrot Chorns"
+ desc = ""
+ icon_state = "chorn_shortcarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_scorp
+ name = "Scorp Chorns"
+ desc = ""
+ icon_state = "chorn_scorp"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_ocean
+ name = "Ocean Chorns"
+ desc = ""
+ icon_state = "chorn_ocean"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_chub
+ name = "Chub Chorns"
+ desc = ""
+ icon_state = "chorn_chub"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
diff --git a/code/modules/mob/new_player/sprite_accessories_extra.dm b/code/modules/mob/new_player/sprite_accessories_extra.dm
new file mode 100644
index 0000000000..a124eff96b
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_extra.dm
@@ -0,0 +1,566 @@
+/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/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)
diff --git a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm
new file mode 100644
index 0000000000..fd23037699
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm
@@ -0,0 +1,725 @@
+//VOREStation Body Markings and Overrides
+//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
+
+/datum/sprite_accessory/marking //Override for base markings
+ color_blend_mode = ICON_ADD
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) //This lets all races use
+
+/datum/sprite_accessory/marking/vr
+ icon = 'icons/mob/human_races/markings_vr.dmi'
+
+/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/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)
+
+/datum/sprite_accessory/marking/vr/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)
+
+/datum/sprite_accessory/marking/vr/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)
+
+/datum/sprite_accessory/marking/vr/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)
+
+/datum/sprite_accessory/marking/vr/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)
+
+/datum/sprite_accessory/marking/vr/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)
+
+/datum/sprite_accessory/marking/vr/bee_stripes
+ name = "bee stripes"
+ icon_state = "beestripes"
+ body_parts = list(BP_TORSO,BP_GROIN)
+
+/datum/sprite_accessory/marking/vr/vas_toes
+ name = "Bug Paws (Vasilissan)"
+ icon_state = "vas_toes"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_FOOT,BP_R_FOOT)
+
+ //CitRP stuff
+/datum/sprite_accessory/marking/vr/vox_alt
+ name = "Vox Alternate"
+ icon_state = "bay_vox"
+ 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_TORSO,BP_GROIN,BP_HEAD)
+ species_allowed = list(SPECIES_VOX)
+
+/datum/sprite_accessory/marking/vr/vox_alt_eyes
+ name = "Alternate Vox Eyes"
+ icon_state = "bay_vox_eyes"
+ body_parts = list(BP_HEAD)
+ species_allowed = list(SPECIES_VOX)
+
+/datum/sprite_accessory/marking/vr/c_beast_body
+ name = "Cyber Body"
+ icon_state = "c_beast_body"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_GROIN)
+
+/datum/sprite_accessory/marking/vr/c_beast_plating
+ name = "Cyber Plating (Use w/ Cyber Body)"
+ icon_state = "c_beast_plating"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM)
+
+/datum/sprite_accessory/marking/vr/c_beast_band
+ name = "Cyber Band (Use w/ Cybertech head)"
+ icon_state = "c_beast_band"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/c_beast_cheek_a
+ name = "Cyber Beast Cheeks A (Use A, B and C)"
+ icon_state = "c_beast_a"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/c_beast_cheek_b
+ name = "Cyber Beast Cheeks B (Use A, B and C)"
+ icon_state = "c_beast_b"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/c_beast_cheek_c
+ name = "Cyber Beast Cheeks C (Use A, B and C)"
+ icon_state = "c_beast_c"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/teshari_large_eyes
+ name = "Teshari large eyes"
+ icon_state = "teshlarge_eyes"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+ species_allowed = list(SPECIES_TESHARI)
+
+/datum/sprite_accessory/marking/vr/teshari_coat
+ name = "Teshari coat"
+ icon_state = "tesh_coat"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_HEAD)
+ species_allowed = list(SPECIES_TESHARI)
+
+/datum/sprite_accessory/marking/vr/teshari_pattern_male
+ name = "Teshari male pattern"
+ icon_state = "tesh-pattern-male"
+ 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_GROIN,BP_HEAD)
+ species_allowed = list(SPECIES_TESHARI)
+
+/datum/sprite_accessory/marking/vr/teshari_pattern_female
+ name = "Teshari female pattern"
+ icon_state = "tesh-pattern-fem"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD)
+ species_allowed = list(SPECIES_TESHARI)
+
+/datum/sprite_accessory/marking/vr/voxscales
+ name = "Vox Scales"
+ icon_state = "Voxscales"
+ 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_HEAD)
+
+/datum/sprite_accessory/marking/vr/voxclaws
+ name = "Vox Claws"
+ icon_state = "Voxclaws"
+ 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/voxbeak
+ name = "Vox Beak"
+ icon_state = "Voxscales"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/unathihood
+ name = "Cobra Hood"
+ icon_state = "unathihood"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/unathidoublehorns
+ name = "Double Unathi Horns"
+ icon_state = "unathidoublehorns"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/unathihorns
+ name = "Unathi Horns"
+ icon_state = "unathihorns"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/unathiramhorns
+ name = "Unathi Ram Horns"
+ icon_state = "unathiramhorns"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/unathishortspines
+ name = "Unathi Short Spines"
+ icon_state = "unathishortspines"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/unathilongspines
+ name = "Unathi Long Spines"
+ icon_state = "unathilongspines"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/unathishortfrills
+ name = "Unathi Short Frills"
+ icon_state = "unathishortfrills"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+/datum/sprite_accessory/marking/vr/unathilongfrills
+ name = "Unathi Long Frills"
+ icon_state = "unathilongfrills"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
diff --git a/code/modules/mob/new_player/sprite_accessories_tail.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm
new file mode 100644
index 0000000000..012591a895
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_tail.dm
@@ -0,0 +1,941 @@
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Tail Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/tail
+ name = "You should not see this..."
+ icon = 'icons/mob/human_races/sprite_accessories/tails.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/extra_overlay2 //Tertiary.
+ var/show_species_tail = 0 // If false, do not render species' tail.
+ var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it
+ var/desc = "You should not see this..."
+ var/ani_state // State when wagging/animated
+ var/extra_overlay_w // Wagging state for extra overlay
+ var/extra_overlay2_w // Tertiary wagging.
+ var/list/hide_body_parts = list() //Uses organ tag defines. Bodyparts in this list do not have their icons rendered, allowing for more spriter freedom when doing taur/digitigrade stuff.
+ var/icon/clip_mask_icon = null //Icon file used for clip mask.
+ var/clip_mask_state = null //Icon state to generate clip mask. Clip mask is used to 'clip' off the lower part of clothing such as jumpsuits & full suits.
+ var/icon/clip_mask = null //Instantiated clip mask of given icon and state
+
+ species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/New()
+ . = ..()
+ if(clip_mask_icon && clip_mask_state)
+ clip_mask = icon(icon = clip_mask_icon, icon_state = clip_mask_state)
+
+// Species-unique tails
+
+// Everyone tails
+
+/datum/sprite_accessory/tail/invisible
+ name = "hide species-sprite tail"
+ icon = null
+ icon_state = null
+
+ species_allowed = list(SPECIES_TAJ, SPECIES_UNATHI, SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/squirrel_orange
+ name = "squirel, orange"
+ desc = ""
+ icon_state = "squirrel-orange"
+
+/datum/sprite_accessory/tail/squirrel_red
+ name = "squirrel, red"
+ desc = ""
+ icon_state = "squirrel-red"
+
+/datum/sprite_accessory/tail/squirrel
+ name = "squirrel, colorable"
+ desc = ""
+ icon_state = "squirrel"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/kitty
+ name = "kitty, colorable, downwards"
+ desc = ""
+ icon_state = "kittydown"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/kittyup
+ name = "kitty, colorable, upwards"
+ desc = ""
+ icon_state = "kittyup"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/tiger_white
+ name = "tiger, colorable"
+ desc = ""
+ icon_state = "tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tigerinnerwhite"
+
+/datum/sprite_accessory/tail/stripey
+ name = "stripey taj, colorable"
+ desc = ""
+ icon_state = "stripeytail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "stripeytail_mark"
+
+ species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/stripeytail_brown
+ name = "stripey taj, brown"
+ desc = ""
+ icon_state = "stripeytail-brown"
+
+/datum/sprite_accessory/tail/chameleon
+ name = "Chameleon, colorable"
+ desc = ""
+ icon_state = "chameleon"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/bunny
+ name = "bunny, colorable"
+ desc = ""
+ icon_state = "bunny"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/bear_brown
+ name = "bear, brown"
+ desc = ""
+ icon_state = "bear-brown"
+
+/datum/sprite_accessory/tail/bear
+ name = "bear, colorable"
+ desc = ""
+ icon_state = "bear"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/dragon
+ name = "dragon, colorable"
+ desc = ""
+ icon_state = "dragon"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wolf_grey
+ name = "wolf, grey"
+ desc = ""
+ icon_state = "wolf-grey"
+
+/datum/sprite_accessory/tail/wolf_green
+ name = "wolf, green"
+ desc = ""
+ icon_state = "wolf-green"
+
+/datum/sprite_accessory/tail/wisewolf
+ name = "wolf, wise"
+ desc = ""
+ icon_state = "wolf-wise"
+
+/datum/sprite_accessory/tail/blackwolf
+ name = "wolf, black"
+ desc = ""
+ icon_state = "wolf"
+
+/datum/sprite_accessory/tail/wolf
+ name = "wolf, colorable"
+ desc = ""
+ icon_state = "wolf"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "wolfinner"
+
+/datum/sprite_accessory/tail/mouse_pink
+ name = "mouse, pink"
+ desc = ""
+ icon_state = "mouse-pink"
+
+/datum/sprite_accessory/tail/mouse
+ name = "mouse, colorable"
+ desc = ""
+ icon_state = "mouse"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/horse
+ name = "horse tail, colorable"
+ desc = ""
+ icon_state = "horse"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/cow
+ name = "cow tail, colorable"
+ desc = ""
+ icon_state = "cow"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fantail
+ name = "avian fantail, colorable"
+ desc = ""
+ icon_state = "fantail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wagtail
+ name = "avian wagtail, colorable"
+ desc = ""
+ icon_state = "wagtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreandc
+ name = "nevrean tail, dual-color"
+ desc = ""
+ icon_state = "nevreantail_dc"
+ extra_overlay = "nevreantail_dc_tail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreanwagdc
+ name = "nevrean wagtail, dual-color"
+ desc = ""
+ icon_state = "wagtail"
+ extra_overlay = "wagtail_dc_tail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreanwagdc_alt
+ name = "nevrean wagtail, marked, dual-color"
+ desc = ""
+ icon_state = "wagtail2_dc"
+ extra_overlay = "wagtail2_dc_mark"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/crossfox
+ name = "cross fox"
+ desc = ""
+ icon_state = "crossfox"
+
+/datum/sprite_accessory/tail/beethorax
+ name = "bee thorax"
+ desc = ""
+ icon_state = "beethorax"
+
+/datum/sprite_accessory/tail/doublekitsune
+ name = "double kitsune tail, colorable"
+ desc = ""
+ icon_state = "doublekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/spade_color
+ name = "spade-tail (colorable)"
+ desc = ""
+ icon_state = "spadetail-black"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/snag
+ name = "xenomorph tail 1"
+ desc = ""
+ icon_state = "snag"
+
+/datum/sprite_accessory/tail/xenotail
+ name = "xenomorph tail 2"
+ desc = ""
+ icon_state = "xenotail"
+
+/datum/sprite_accessory/tail/eboop
+ name = "EGN mech tail (dual color)"
+ desc = ""
+ icon_state = "eboop"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "eboop_mark"
+
+/datum/sprite_accessory/tail/ketrai_wag
+ name = "fennix tail (vwag)"
+ desc = ""
+ icon_state = "ketraitail"
+ ani_state = "ketraitail_w"
+ //ckeys_allowed = list("ketrai") //They requested it to be enabled for everyone.
+
+/datum/sprite_accessory/tail/ketrainew_wag
+ name = "new fennix tail (vwag)"
+ desc = ""
+ icon_state = "ketraitailnew"
+ ani_state = "ketraitailnew_w"
+
+/datum/sprite_accessory/tail/redpanda
+ name = "red panda"
+ desc = ""
+ icon_state = "redpanda"
+
+/datum/sprite_accessory/tail/ringtail
+ name = "ringtail, colorable"
+ desc = ""
+ icon_state = "ringtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "ringtail_mark"
+
+/datum/sprite_accessory/tail/satyr
+ name = "goat legs, colorable"
+ desc = ""
+ icon_state = "satyr"
+ color_blend_mode = ICON_MULTIPLY
+ do_colouration = 1
+ 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.
+
+/datum/sprite_accessory/tail/tailmaw
+ name = "tailmaw, colorable"
+ desc = ""
+ icon_state = "tailmaw"
+ color_blend_mode = ICON_MULTIPLY
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/curltail
+ name = "curltail (vwag)"
+ desc = ""
+ icon_state = "curltail"
+ ani_state = "curltail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "curltail_mark"
+ extra_overlay_w = "curltail_mark_w"
+
+/datum/sprite_accessory/tail/shorttail
+ name = "shorttail (vwag)"
+ desc = ""
+ icon_state = "straighttail"
+ ani_state = "straighttail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/sneptail
+ name = "Snep/Furry Tail (vwag)"
+ desc = ""
+ icon_state = "sneptail"
+ ani_state = "sneptail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "sneptail_mark"
+ extra_overlay_w = "sneptail_mark_w"
+
+
+/datum/sprite_accessory/tail/tiger_new
+ name = "tiger tail (vwag)"
+ desc = ""
+ icon_state = "tigertail"
+ ani_state = "tigertail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tigertail_mark"
+ extra_overlay_w = "tigertail_mark_w"
+
+/datum/sprite_accessory/tail/vulp_new
+ name = "new vulp tail (vwag)"
+ desc = ""
+ icon_state = "vulptail"
+ ani_state = "vulptail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "vulptail_mark"
+ extra_overlay_w = "vulptail_mark_w"
+
+/datum/sprite_accessory/tail/otietail
+ name = "otie tail (vwag)"
+ desc = ""
+ icon_state = "otie"
+ ani_state = "otie_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/newtailmaw
+ name = "new tailmaw (vwag)"
+ desc = ""
+ icon_state = "newtailmaw"
+ ani_state = "newtailmaw_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/ztail
+ name = "jagged flufftail"
+ desc = ""
+ icon_state = "ztail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/snaketail
+ name = "snake tail, colorable"
+ desc = ""
+ icon_state = "snaketail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/vulpan_alt
+ name = "vulpkanin alt style, colorable"
+ desc = ""
+ icon_state = "vulptail_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/sergaltaildc
+ name = "sergal, dual-color"
+ desc = ""
+ icon_state = "sergal"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "sergal_mark"
+
+/datum/sprite_accessory/tail/skunktail
+ name = "skunk, dual-color"
+ desc = ""
+ icon_state = "skunktail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "skunktail_mark"
+
+/datum/sprite_accessory/tail/deertail
+ name = "deer, dual-color"
+ desc = ""
+ icon_state = "deertail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "deertail_mark"
+
+/datum/sprite_accessory/tail/teshari_fluffytail
+ name = "Teshari alternative, colorable"
+ desc = ""
+ icon_state = "teshari_fluffytail"
+ extra_overlay = "teshari_fluffytail_mark"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/nightstalker
+ name = "Nightstalker, colorable"
+ desc = ""
+ icon_state = "nightstalker"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+//For all species tails. Includes haircolored tails.
+/datum/sprite_accessory/tail/special
+ name = "Blank tail. Do not select."
+ icon = 'icons/effects/species_tails.dmi'
+
+/datum/sprite_accessory/tail/special/unathi
+ name = "unathi tail"
+ desc = ""
+ icon_state = "sogtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+ species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/special/tajaran
+ name = "tajaran tail"
+ desc = ""
+ icon_state = "tajtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/special/sergal
+ name = "sergal tail"
+ desc = ""
+ icon_state = "sergtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/akula
+ name = "akula tail"
+ desc = ""
+ icon_state = "sharktail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/nevrean
+ name = "nevrean tail"
+ desc = ""
+ icon_state = "nevreantail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/armalis
+ name = "armalis tail"
+ desc = ""
+ icon_state = "armalis_tail_humanoid_s"
+
+/datum/sprite_accessory/tail/special/xenodrone
+ name = "xenomorph drone tail"
+ desc = ""
+ icon_state = "xenos_drone_tail_s"
+
+/datum/sprite_accessory/tail/special/xenosentinel
+ name = "xenomorph sentinel tail"
+ desc = ""
+ icon_state = "xenos_sentinel_tail_s"
+
+/datum/sprite_accessory/tail/special/xenohunter
+ name = "xenomorph hunter tail"
+ desc = ""
+ icon_state = "xenos_hunter_tail_s"
+
+/datum/sprite_accessory/tail/special/xenoqueen
+ name = "xenomorph queen tail"
+ desc = ""
+ icon_state = "xenos_queen_tail_s"
+
+/datum/sprite_accessory/tail/special/monkey
+ name = "monkey tail"
+ desc = ""
+ icon_state = "chimptail_s"
+
+/datum/sprite_accessory/tail/special/seromitail
+ name = "seromi tail"
+ desc = ""
+ icon_state = "seromitail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/special/seromitailfeathered
+ name = "seromi tail w/ feathers"
+ desc = ""
+ icon_state = "seromitail_s"
+ extra_overlay = "seromitail_feathers_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/special/unathihc
+ name = "unathi tail, colorable"
+ desc = ""
+ icon_state = "sogtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/special/tajaranhc
+ name = "tajaran tail, colorable"
+ desc = ""
+ icon_state = "tajtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/datum/sprite_accessory/tail/special/sergalhc
+ name = "sergal tail, colorable"
+ desc = ""
+ icon_state = "sergtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/akulahc
+ name = "akula tail, colorable"
+ desc = ""
+ icon_state = "sharktail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/nevreanhc
+ name = "nevrean tail, colorable"
+ desc = ""
+ icon_state = "nevreantail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/foxhc
+ name = "highlander zorren tail, colorable"
+ desc = ""
+ icon_state = "foxtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/fennechc
+ name = "flatland zorren tail, colorable"
+ desc = ""
+ icon_state = "fentail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/armalishc
+ name = "armalis tail, colorable"
+ desc = ""
+ icon_state = "armalis_tail_humanoid_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenodronehc
+ name = "xenomorph drone tail, colorable"
+ desc = ""
+ icon_state = "xenos_drone_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenosentinelhc
+ name = "xenomorph sentinel tail, colorable"
+ desc = ""
+ icon_state = "xenos_sentinel_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenohunterhc
+ name = "xenomorph hunter tail, colorable"
+ desc = ""
+ icon_state = "xenos_hunter_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenoqueenhc
+ name = "xenomorph queen tail, colorable"
+ desc = ""
+ icon_state = "xenos_queen_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/monkeyhc
+ name = "monkey tail, colorable"
+ desc = ""
+ icon_state = "chimptail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/seromitailhc
+ name = "seromi tail, colorable"
+ desc = ""
+ icon_state = "seromitail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/seromitailfeatheredhc
+ name = "seromi tail w/ feathers, colorable"
+ desc = ""
+ icon_state = "seromitail_feathers_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/vulpan
+ name = "vulpkanin, colorable"
+ desc = ""
+ icon_state = "vulptail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+
+/datum/sprite_accessory/tail/zenghu_taj
+ name = "Zeng-Hu Tajaran Synth tail"
+ desc = ""
+ icon_state = "zenghu_taj"
+
+//Taurs moved to a separate file due to extra code around them
+
+//Buggo Abdomens!
+
+/datum/sprite_accessory/tail/buggo
+ name = "Bug abdomen, colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggobee
+ name = "Bug abdomen, bee top, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_markings"
+
+/datum/sprite_accessory/tail/buggobeefull
+ name = "Bug abdomen, bee full, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_markings"
+
+/datum/sprite_accessory/tail/buggounder
+ name = "Bug abdomen, underside, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_markings"
+
+/datum/sprite_accessory/tail/buggofirefly
+ name = "Bug abdomen, firefly, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_markings"
+
+/datum/sprite_accessory/tail/buggofat
+ name = "Fat bug abdomen, colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggofatbee
+ name = "Fat bug abdomen, bee top, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbee_markings"
+
+/datum/sprite_accessory/tail/buggofatbeefull
+ name = "Fat bug abdomen, bee full, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbeefull_markings"
+
+/datum/sprite_accessory/tail/buggofatunder
+ name = "Fat bug abdomen, underside, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatunder_markings"
+
+/datum/sprite_accessory/tail/buggofatfirefly
+ name = "Fat bug abdomen, firefly, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatfirefly_markings"
+
+/datum/sprite_accessory/tail/buggowag
+ name = "Bug abdomen, colorable, vwag change"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggobeewag
+ name = "Bug abdomen, bee top, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_markings"
+ extra_overlay_w = "buggofatbee_markings"
+
+/datum/sprite_accessory/tail/buggobeefullwag
+ name = "Bug abdomen, bee full, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_markings"
+ extra_overlay_w = "buggofatbeefull_markings"
+
+/datum/sprite_accessory/tail/buggounderwag
+ name = "Bug abdomen, underside, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_markings"
+ extra_overlay_w = "buggofatunder_markings"
+
+/datum/sprite_accessory/tail/buggofireflywag
+ name = "Bug abdomen, firefly, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_markings"
+ extra_overlay_w = "buggofatfirefly_markings"
+
+//Vass buggo variants!
+
+/datum/sprite_accessory/tail/buggovass
+ name = "Bug abdomen, vass, colorable"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassbee
+ name = "Bug abdomen, bee top, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassbeefull
+ name = "Bug abdomen, bee full, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassunder
+ name = "Bug abdomen, underside, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfirefly
+ name = "Bug abdomen, firefly, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfat
+ name = "Fat bug abdomen, vass, colorable"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassfatbee
+ name = "Fat bug abdomen, bee top, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatbeefull
+ name = "Fat bug abdomen, bee full, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatunder
+ name = "Fat bug abdomen, underside, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatunder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatfirefly
+ name = "Fat bug abdomen, firefly, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatfirefly_vass_markings"
+
+/datum/sprite_accessory/tail/buggovasswag
+ name = "Bug abdomen, vass, colorable, vwag change"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassbeewag
+ name = "Bug abdomen, bee top, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_vass_markings"
+ extra_overlay_w = "buggofatbee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassbeefullwag
+ name = "Bug abdomen, bee full, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_vass_markings"
+ extra_overlay_w = "buggofatbeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassunderwag
+ name = "Bug abdomen, underside, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_vass_markings"
+ extra_overlay_w = "buggofatunder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfireflywag
+ name = "Bug abdomen, firefly, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_vass_markings"
+ extra_overlay_w = "buggofatfirefly_vass_markings"
+
+/datum/sprite_accessory/tail/tail_smooth
+ name = "Smooth Lizard Tail, colorable"
+ desc = ""
+ icon_state = "tail_smooth"
+ ani_state = "tail_smooth_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/triplekitsune_colorable
+ name = "Kitsune 3 tails, colorable"
+ desc = ""
+ icon_state = "triplekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "triplekitsune_tips"
+
+/datum/sprite_accessory/tail/ninekitsune_colorable
+ name = "Kitsune 9 tails, colorable"
+ desc = ""
+ icon_state = "ninekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "ninekitsune-tips"
+
+/datum/sprite_accessory/tail/shadekin_short
+ name = "Shadekin Short Tail, colorable"
+ desc = ""
+ icon_state = "shadekin-short"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ //apply_restrictions = TRUE
+ //species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
+
+/datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts
+ name = "Ward-Takahashi Tail"
+ desc = ""
+ icon_state = "wardtakahashi_vulp"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wartacosushi_tail_dc
+ name = "Ward-Takahashi Tail, dual-color"
+ desc = ""
+ icon_state = "wardtakahashi_vulp_dc"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "wardtakahashi_vulp_dc_mark"
diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
new file mode 100644
index 0000000000..fc54083acd
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
@@ -0,0 +1,5397 @@
+<<<<<<< HEAD:code/modules/vore/appearance/sprite_accessories_vr.dm
+/*
+ Hello and welcome to VOREStation sprite_accessories: For a more general overview
+ please read sprite_accessories.dm. This file is for ears and tails.
+ This is intended to be friendly for people with little to no actual coding experience.
+ !!WARNING!!: changing existing accessory information can be VERY hazardous to savefiles,
+ to the point where you may completely corrupt a server's savefiles. Please refrain
+ from doing this unless you absolutely know what you are doing, and have defined a
+ conversion in savefile.dm
+*/
+
+// Add Additional variable onto sprite_accessory
+/datum/sprite_accessory
+ // Ckey of person allowed to use this, if defined.
+ list/ckeys_allowed = null
+ apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings
+
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Ear Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/ears
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/ears_vr.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/extra_overlay2
+ var/desc = "You should not see this..."
+
+// Species-unique ears
+
+/datum/sprite_accessory/ears/shadekin
+ name = "Shadekin Ears, colorable"
+ desc = ""
+ icon_state = "shadekin"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+// Ears avaliable to anyone
+
+/datum/sprite_accessory/ears/alt_ram_horns
+ name = "Solid ram horns"
+ desc = ""
+ icon_state = "ram_horns_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/hyena
+ name = "hyena ears, dual-color"
+ desc = ""
+ icon_state = "hyena"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "hyena-inner"
+
+/datum/sprite_accessory/ears/moth
+ name = "moth antennae"
+ desc = ""
+ icon_state = "moth"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/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
+
+/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)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshariinner"
+
+/datum/sprite_accessory/ears/tesharihigh
+ name = "Teshari upper ears (colorable)"
+ desc = ""
+ icon_state = "tesharihigh"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tesharihighinner"
+
+/datum/sprite_accessory/ears/tesharilow
+ name = "Teshari lower ears (colorable)"
+ desc = ""
+ icon_state = "tesharilow"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tesharilowinner"
+
+/datum/sprite_accessory/ears/tesh_pattern_ear_male
+ name = "Teshari male ear pattern (colorable)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_male_pattern"
+
+/datum/sprite_accessory/ears/tesh_pattern_ear_female
+ name = "Teshari female ear pattern (colorable)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_female_pattern"
+
+/datum/sprite_accessory/ears/inkling
+ name = "colorable mature inkling hair"
+ desc = ""
+ icon = 'icons/mob/human_face_vr.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"
+
+/datum/sprite_accessory/ears/lilimoth_antennae
+ name = "citheronia antennae (Kira72)"
+ desc = ""
+ icon_state = "lilimoth_antennae"
+
+/datum/sprite_accessory/ears/molenar_deathclaw
+ name = "deathclaw ears (Molenar)"
+ desc = ""
+ icon_state = "molenar-deathclaw"
+
+/datum/sprite_accessory/ears/miria_fluffdragon
+ name = "fluffdragon ears (Miria Masters)"
+ desc = ""
+ icon_state = "miria-fluffdragonears"
+
+/datum/sprite_accessory/ears/miria_kitsune
+ name = "kitsune ears (Miria Masters)"
+ desc = ""
+ icon_state = "miria-kitsuneears"
+
+/datum/sprite_accessory/ears/runac
+ name = "fennecsune ears (Runac)"
+ desc = ""
+ icon_state = "runac"
+
+/datum/sprite_accessory/ears/kerena
+ name = "wingwolf ears (Kerena)"
+ desc = ""
+ icon_state = "kerena"
+
+/datum/sprite_accessory/ears/rosey
+ name = "tritail kitsune ears (Rosey)"
+ desc = ""
+ icon_state = "rosey"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/aronai
+ name = "aronai ears/head (Aronai)"
+ desc = ""
+ icon_state = "aronai"
+
+/datum/sprite_accessory/ears/holly
+ name = "tigress ears (Holly Sharp)"
+ desc = ""
+ icon_state = "tigressears"
+
+/datum/sprite_accessory/ears/molenar_inkling
+ name = "teal mature inkling hair (Kari Akiren)"
+ desc = ""
+ icon_state = "molenar-tentacle"
+
+/datum/sprite_accessory/ears/shock
+ name = "pharoah hound ears (Shock Diamond)"
+ desc = ""
+ icon_state = "shock"
+
+/datum/sprite_accessory/ears/alurane
+ name = "alurane ears/hair (Pumila)"
+ desc = ""
+ icon_state = "alurane-ears"
+
+/datum/sprite_accessory/ears/frost
+ name = "Frost antenna"
+ desc = ""
+ icon_state = "frosted_tips"
+
+/datum/sprite_accessory/ears/sylv_pip
+ name = "sylveon ears and ribbons (Pip Shyner)"
+ desc = ""
+ icon_state = "pipears"
+
+/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"
+
+/datum/sprite_accessory/ears/synthhorns_plain
+ name = "Synth horns, plain"
+ desc = ""
+ icon_state = "synthhorns_plain"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "synthhorns_plain_light"
+
+/datum/sprite_accessory/ears/synthhorns_thick
+ name = "Synth horns, thick"
+ desc = ""
+ icon_state = "synthhorns_thick"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "synthhorns_thick_light"
+
+/datum/sprite_accessory/ears/synthhorns_curly
+ name = "Synth horns, curly"
+ desc = ""
+ icon_state = "synthhorns_curled"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/forward_curled_demon_horns_bony
+ name = "Succubus horns, colourable"
+ desc = ""
+ icon_state = "succu-horns_b"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/forward_curled_demon_horns_bony_with_colorable_ears
+ name = "Succubus horns with pointy ears, colourable"
+ desc = ""
+ icon_state = "elfs"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "succu-horns_b"
+
+/datum/sprite_accessory/ears/chorns_nubbydogs
+ name = "Nubby Chorns"
+ desc = ""
+ icon_state = "chorn_nubby"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_herk
+ name = "Herk Chorns"
+ desc = ""
+ icon_state = "chorn_herk"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bork
+ name = "Bork Chorns"
+ desc = ""
+ icon_state = "chorn_bork"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bull
+ name = "Bull Chorns"
+ desc = ""
+ icon_state = "chorn_bull"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bicarrot
+ name = "Bicarrot Chorns"
+ desc = ""
+ icon_state = "chorn_bicarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_longcarrot
+ name = "Long Carrot Chorns"
+ desc = ""
+ icon_state = "chorn_longcarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_shortcarrot
+ name = "Short Carrot Chorns"
+ desc = ""
+ icon_state = "chorn_shortcarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_scorp
+ name = "Scorp Chorns"
+ desc = ""
+ icon_state = "chorn_scorp"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_ocean
+ name = "Ocean Chorns"
+ desc = ""
+ icon_state = "chorn_ocean"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_chub
+ name = "Chub Chorns"
+ desc = ""
+ icon_state = "chorn_chub"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+
+
+
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Wing Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/wing
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/wings_vr.dmi'
+ do_colouration = 0 //Set to 1 to enable coloration using the tail color.
+
+ color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
+ var/extra_overlay // Icon state of an additional overlay to blend in.
+ var/extra_overlay2 //Tertiary.
+ 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
+ var/extra_overlay2_w
+
+/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"
+
+/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"
+
+/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/harpywings_alt
+ name = "harpy wings alt, archeopteryx"
+ desc = ""
+ icon_state = "harpywings_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_altmarkings"
+
+/datum/sprite_accessory/wing/harpywings_alt_neckfur
+ name = "harpy wings alt, archeopteryx & neckfur"
+ desc = ""
+ icon_state = "harpywings_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_altmarkings"
+ extra_overlay2 = "neckfur"
+
+/datum/sprite_accessory/wing/harpywings_bat
+ name = "harpy wings, bat"
+ desc = ""
+ icon_state = "harpywings_bat"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_batmarkings"
+
+/datum/sprite_accessory/wing/harpywings_bat_neckfur
+ name = "harpy wings, bat & neckfur"
+ desc = ""
+ icon_state = "harpywings_bat"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_batmarkings"
+ extra_overlay2 = "neckfur"
+
+/datum/sprite_accessory/wing/neckfur
+ name = "neck fur"
+ desc = ""
+ icon_state = "neckfur"
+ 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"
+
+/datum/sprite_accessory/wing/miria_fluffdragon
+ name = "fluffdragon wings (Miria Masters)"
+ desc = ""
+ icon_state = "miria-fluffdragontail"
+
+/datum/sprite_accessory/wing/scree
+ name = "green taj wings (Scree)"
+ desc = ""
+ icon_state = "scree-wings"
+
+/datum/sprite_accessory/wing/liquidfirefly_gazer //I g-guess this could be considered wings?
+ name = "gazer eyestalks"
+ desc = ""
+ icon_state = "liquidfirefly-eyestalks"
+
+/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"
+
+/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
+
+/datum/sprite_accessory/wing/drago_wing
+ name = "Cybernetic Dragon wings"
+ desc = ""
+ icon_state = "drago_wing"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "drago_wing_2"
+
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Tail Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/tail
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/tails_vr.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/extra_overlay2 //Tertiary.
+ var/show_species_tail = 0 // If false, do not render species' tail.
+ var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it
+ var/desc = "You should not see this..."
+ var/ani_state // State when wagging/animated
+ var/extra_overlay_w // Wagging state for extra overlay
+ var/extra_overlay2_w // Tertiary wagging.
+ var/list/hide_body_parts = list() //Uses organ tag defines. Bodyparts in this list do not have their icons rendered, allowing for more spriter freedom when doing taur/digitigrade stuff.
+ var/icon/clip_mask_icon = null //Icon file used for clip mask.
+ var/clip_mask_state = null //Icon state to generate clip mask. Clip mask is used to 'clip' off the lower part of clothing such as jumpsuits & full suits.
+ var/icon/clip_mask = null //Instantiated clip mask of given icon and state
+
+/datum/sprite_accessory/tail/New()
+ . = ..()
+ if(clip_mask_icon && clip_mask_state)
+ clip_mask = icon(icon = clip_mask_icon, icon_state = clip_mask_state)
+
+// Species-unique tails
+
+// Everyone tails
+
+/datum/sprite_accessory/tail/invisible
+ name = "hide species-sprite tail"
+ icon = null
+ icon_state = null
+
+/datum/sprite_accessory/tail/squirrel_orange
+ name = "squirel, orange"
+ desc = ""
+ icon_state = "squirrel-orange"
+
+/datum/sprite_accessory/tail/squirrel_red
+ name = "squirrel, red"
+ desc = ""
+ icon_state = "squirrel-red"
+
+/datum/sprite_accessory/tail/squirrel
+ name = "squirrel, colorable"
+ desc = ""
+ icon_state = "squirrel"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/kitty
+ name = "kitty, colorable, downwards"
+ desc = ""
+ icon_state = "kittydown"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/kittyup
+ name = "kitty, colorable, upwards"
+ desc = ""
+ icon_state = "kittyup"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/tiger_white
+ name = "tiger, colorable"
+ desc = ""
+ icon_state = "tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tigerinnerwhite"
+
+/datum/sprite_accessory/tail/stripey
+ name = "stripey taj, colorable"
+ desc = ""
+ icon_state = "stripeytail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "stripeytail_mark"
+
+/datum/sprite_accessory/tail/stripeytail_brown
+ name = "stripey taj, brown"
+ desc = ""
+ icon_state = "stripeytail-brown"
+
+/datum/sprite_accessory/tail/chameleon
+ name = "Chameleon, colorable"
+ desc = ""
+ icon_state = "chameleon"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/bunny
+ name = "bunny, colorable"
+ desc = ""
+ icon_state = "bunny"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/bear_brown
+ name = "bear, brown"
+ desc = ""
+ icon_state = "bear-brown"
+
+/datum/sprite_accessory/tail/bear
+ name = "bear, colorable"
+ desc = ""
+ icon_state = "bear"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/dragon
+ name = "dragon, colorable"
+ desc = ""
+ icon_state = "dragon"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wolf_grey
+ name = "wolf, grey"
+ desc = ""
+ icon_state = "wolf-grey"
+
+/datum/sprite_accessory/tail/wolf_green
+ name = "wolf, green"
+ desc = ""
+ icon_state = "wolf-green"
+
+/datum/sprite_accessory/tail/wisewolf
+ name = "wolf, wise"
+ desc = ""
+ icon_state = "wolf-wise"
+
+/datum/sprite_accessory/tail/blackwolf
+ name = "wolf, black"
+ desc = ""
+ icon_state = "wolf"
+
+/datum/sprite_accessory/tail/wolf
+ name = "wolf, colorable"
+ desc = ""
+ icon_state = "wolf"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "wolfinner"
+
+/datum/sprite_accessory/tail/mouse_pink
+ name = "mouse, pink"
+ desc = ""
+ icon_state = "mouse-pink"
+
+/datum/sprite_accessory/tail/mouse
+ name = "mouse, colorable"
+ desc = ""
+ icon_state = "mouse"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/horse
+ name = "horse tail, colorable"
+ desc = ""
+ icon_state = "horse"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/cow
+ name = "cow tail, colorable"
+ desc = ""
+ icon_state = "cow"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fantail
+ name = "avian fantail, colorable"
+ desc = ""
+ icon_state = "fantail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wagtail
+ name = "avian wagtail, colorable"
+ desc = ""
+ icon_state = "wagtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreandc
+ name = "nevrean tail, dual-color"
+ desc = ""
+ icon_state = "nevreantail_dc"
+ extra_overlay = "nevreantail_dc_tail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreanwagdc
+ name = "nevrean wagtail, dual-color"
+ desc = ""
+ icon_state = "wagtail"
+ extra_overlay = "wagtail_dc_tail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreanwagdc_alt
+ name = "nevrean wagtail, marked, dual-color"
+ desc = ""
+ icon_state = "wagtail2_dc"
+ extra_overlay = "wagtail2_dc_mark"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/crossfox
+ name = "cross fox"
+ desc = ""
+ icon_state = "crossfox"
+
+/datum/sprite_accessory/tail/beethorax
+ name = "bee thorax"
+ desc = ""
+ icon_state = "beethorax"
+
+/datum/sprite_accessory/tail/doublekitsune
+ name = "double kitsune tail, colorable"
+ desc = ""
+ icon_state = "doublekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/spade_color
+ name = "spade-tail (colorable)"
+ desc = ""
+ icon_state = "spadetail-black"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/snag
+ name = "xenomorph tail 1"
+ desc = ""
+ icon_state = "snag"
+
+/datum/sprite_accessory/tail/xenotail
+ name = "xenomorph tail 2"
+ desc = ""
+ icon_state = "xenotail"
+
+/datum/sprite_accessory/tail/eboop
+ name = "EGN mech tail (dual color)"
+ desc = ""
+ icon_state = "eboop"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "eboop_mark"
+
+/datum/sprite_accessory/tail/molenar_kitsune
+ name = "quintail kitsune tails (Molenar)"
+ desc = ""
+ icon_state = "molenar-kitsune"
+
+/datum/sprite_accessory/tail/miria_fluffdragon
+ name = "fluffdragon tail (Miria Masters)"
+ desc = ""
+ icon_state = "miria-fluffdragontail"
+
+/datum/sprite_accessory/tail/miria_kitsune
+ name = "Black kitsune tails (Miria Masters)"
+ desc = ""
+ icon_state = "miria-kitsunetail"
+
+/datum/sprite_accessory/tail/molenar_deathclaw
+ name = "deathclaw bits (Molenar)"
+ desc = ""
+ icon_state = "molenar-deathclaw"
+
+/datum/sprite_accessory/tail/runac
+ name = "fennecsune tails (Runac)"
+ desc = ""
+ icon_state = "runac"
+
+/datum/sprite_accessory/tail/reika //Leaving this since it was too hard to split the wings from the tail.
+ name = "fox tail (+ beewings) (Reika)"
+ desc = ""
+ icon_state = "reika"
+
+/datum/sprite_accessory/tail/rosey
+ name = "tritail kitsune tails (Rosey)"
+ desc = ""
+ icon_state = "rosey_three"
+
+/datum/sprite_accessory/tail/rosey2
+ name = "pentatail kitsune tails (Rosey)" //I predict seven tails next. ~CK
+ desc = ""
+ icon_state = "rosey_five"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/scree
+ name = "green taj tail (Scree)"
+ desc = ""
+ icon_state = "scree"
+
+/datum/sprite_accessory/tail/aronai
+ name = "aronai tail (Aronai)"
+ desc = ""
+ icon_state = "aronai"
+
+/datum/sprite_accessory/tail/cabletail
+ name = "cabletail"
+ desc = "cabletail"
+ icon_state = "cabletail"
+
+/datum/sprite_accessory/tail/featherfluff_tail
+ name = "featherfluff_tail"
+ desc = ""
+ icon_state = "featherfluff_tail"
+
+/datum/sprite_accessory/tail/ketrai_wag
+ name = "fennix tail (vwag)"
+ desc = ""
+ icon_state = "ketraitail"
+ ani_state = "ketraitail_w"
+
+/datum/sprite_accessory/tail/ketrainew_wag
+ name = "new fennix tail (vwag)"
+ desc = ""
+ icon_state = "ketraitailnew"
+ ani_state = "ketraitailnew_w"
+
+/datum/sprite_accessory/tail/redpanda
+ name = "red panda"
+ desc = ""
+ icon_state = "redpanda"
+
+/datum/sprite_accessory/tail/ringtail
+ name = "ringtail, colorable"
+ desc = ""
+ icon_state = "ringtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "ringtail_mark"
+
+/datum/sprite_accessory/tail/holly
+ name = "tigress tail (Holly)"
+ desc = ""
+ icon_state = "tigresstail"
+
+/datum/sprite_accessory/tail/satyr
+ name = "goat legs, colorable"
+ desc = ""
+ icon_state = "satyr"
+ color_blend_mode = ICON_MULTIPLY
+ do_colouration = 1
+ 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/vore/taurs_vr.dmi'
+ clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
+
+/datum/sprite_accessory/tail/tailmaw
+ name = "tailmaw, colorable"
+ desc = ""
+ icon_state = "tailmaw"
+ color_blend_mode = ICON_MULTIPLY
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/curltail
+ name = "curltail (vwag)"
+ desc = ""
+ icon_state = "curltail"
+ ani_state = "curltail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "curltail_mark"
+ extra_overlay_w = "curltail_mark_w"
+
+/datum/sprite_accessory/tail/shorttail
+ name = "shorttail (vwag)"
+ desc = ""
+ icon_state = "straighttail"
+ ani_state = "straighttail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/sneptail
+ name = "Snep/Furry Tail (vwag)"
+ desc = ""
+ icon_state = "sneptail"
+ ani_state = "sneptail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "sneptail_mark"
+ extra_overlay_w = "sneptail_mark_w"
+
+
+/datum/sprite_accessory/tail/tiger_new
+ name = "tiger tail (vwag)"
+ desc = ""
+ icon_state = "tigertail"
+ ani_state = "tigertail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tigertail_mark"
+ extra_overlay_w = "tigertail_mark_w"
+
+/datum/sprite_accessory/tail/vulp_new
+ name = "new vulp tail (vwag)"
+ desc = ""
+ icon_state = "vulptail"
+ ani_state = "vulptail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "vulptail_mark"
+ extra_overlay_w = "vulptail_mark_w"
+
+/datum/sprite_accessory/tail/otietail
+ name = "otie tail (vwag)"
+ desc = ""
+ icon_state = "otie"
+ ani_state = "otie_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/newtailmaw
+ name = "new tailmaw (vwag)"
+ desc = ""
+ icon_state = "newtailmaw"
+ ani_state = "newtailmaw_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/ztail
+ name = "jagged flufftail"
+ desc = ""
+ icon_state = "ztail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/snaketail
+ name = "snake tail, colorable"
+ desc = ""
+ icon_state = "snaketail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/vulpan_alt
+ name = "vulpkanin alt style, colorable"
+ desc = ""
+ icon_state = "vulptail_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/sergaltaildc
+ name = "sergal, dual-color"
+ desc = ""
+ icon_state = "sergal"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "sergal_mark"
+
+/datum/sprite_accessory/tail/skunktail
+ name = "skunk, dual-color"
+ desc = ""
+ icon_state = "skunktail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "skunktail_mark"
+
+/datum/sprite_accessory/tail/deertail
+ name = "deer, dual-color"
+ desc = ""
+ icon_state = "deertail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "deertail_mark"
+
+/datum/sprite_accessory/tail/tesh_feathered
+ name = "Teshari tail"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ extra_overlay = "teshtail_feathers_s"
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/teshari_fluffytail
+ name = "Teshari alternative, colorable"
+ desc = ""
+ icon_state = "teshari_fluffytail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_fluffytail_mark"
+
+/datum/sprite_accessory/tail/tesh_pattern_male
+ name = "Teshari male tail pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_male_tail"
+
+/datum/sprite_accessory/tail/tesh_pattern_male_alt
+ name = "Teshari male tail alt. pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_male_alt"
+
+/datum/sprite_accessory/tail/tesh_pattern_fem
+ name = "Teshari female tail pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_fem_tail"
+
+/datum/sprite_accessory/tail/tesh_pattern_fem_alt
+ name = "Teshari male tail alt. pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_fem_alt"
+
+/datum/sprite_accessory/tail/nightstalker
+ name = "Nightstalker, colorable"
+ desc = ""
+ icon_state = "nightstalker"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+//For all species tails. Includes haircolored tails.
+/datum/sprite_accessory/tail/special
+ name = "Blank tail. Do not select."
+ icon = 'icons/effects/species_tails_vr.dmi'
+
+/datum/sprite_accessory/tail/special/unathi
+ name = "unathi tail"
+ desc = ""
+ icon_state = "sogtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/tajaran
+ name = "tajaran tail"
+ desc = ""
+ icon_state = "tajtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/sergal
+ name = "sergal tail"
+ desc = ""
+ icon_state = "sergtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/akula
+ name = "akula tail"
+ desc = ""
+ icon_state = "sharktail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/nevrean
+ name = "nevrean tail"
+ desc = ""
+ icon_state = "nevreantail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/armalis
+ name = "armalis tail"
+ desc = ""
+ icon_state = "armalis_tail_humanoid_s"
+
+/datum/sprite_accessory/tail/special/xenodrone
+ name = "xenomorph drone tail"
+ desc = ""
+ icon_state = "xenos_drone_tail_s"
+
+/datum/sprite_accessory/tail/special/xenosentinel
+ name = "xenomorph sentinel tail"
+ desc = ""
+ icon_state = "xenos_sentinel_tail_s"
+
+/datum/sprite_accessory/tail/special/xenohunter
+ name = "xenomorph hunter tail"
+ desc = ""
+ icon_state = "xenos_hunter_tail_s"
+
+/datum/sprite_accessory/tail/special/xenoqueen
+ name = "xenomorph queen tail"
+ desc = ""
+ icon_state = "xenos_queen_tail_s"
+
+/datum/sprite_accessory/tail/special/monkey
+ name = "monkey tail"
+ desc = ""
+ icon_state = "chimptail_s"
+
+/datum/sprite_accessory/tail/special/unathihc
+ name = "unathi tail, colorable"
+ desc = ""
+ icon_state = "sogtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/tajaranhc
+ name = "tajaran tail, colorable"
+ desc = ""
+ icon_state = "tajtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/sergalhc
+ name = "sergal tail, colorable"
+ desc = ""
+ icon_state = "sergtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/akulahc
+ name = "akula tail, colorable"
+ desc = ""
+ icon_state = "sharktail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/nevreanhc
+ name = "nevrean tail, colorable"
+ desc = ""
+ icon_state = "nevreantail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/foxhc
+ name = "highlander zorren tail, colorable"
+ desc = ""
+ icon_state = "foxtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/fennechc
+ name = "flatland zorren tail, colorable"
+ desc = ""
+ icon_state = "fentail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/armalishc
+ name = "armalis tail, colorable"
+ desc = ""
+ icon_state = "armalis_tail_humanoid_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenodronehc
+ name = "xenomorph drone tail, colorable"
+ desc = ""
+ icon_state = "xenos_drone_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenosentinelhc
+ name = "xenomorph sentinel tail, colorable"
+ desc = ""
+ icon_state = "xenos_sentinel_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenohunterhc
+ name = "xenomorph hunter tail, colorable"
+ desc = ""
+ icon_state = "xenos_hunter_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenoqueenhc
+ name = "xenomorph queen tail, colorable"
+ desc = ""
+ icon_state = "xenos_queen_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/monkeyhc
+ name = "monkey tail, colorable"
+ desc = ""
+ icon_state = "chimptail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/vulpan
+ name = "vulpkanin, colorable"
+ desc = ""
+ icon_state = "vulptail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+
+/datum/sprite_accessory/tail/zenghu_taj
+ name = "Zeng-Hu Tajaran Synth tail"
+ desc = ""
+ icon_state = "zenghu_taj"
+
+//Taurs moved to a separate file due to extra code around them
+
+//Buggo Abdomens!
+
+/datum/sprite_accessory/tail/buggo
+ name = "Bug abdomen, colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggobee
+ name = "Bug abdomen, bee top, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_markings"
+
+/datum/sprite_accessory/tail/buggobeefull
+ name = "Bug abdomen, bee full, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_markings"
+
+/datum/sprite_accessory/tail/buggounder
+ name = "Bug abdomen, underside, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_markings"
+
+/datum/sprite_accessory/tail/buggofirefly
+ name = "Bug abdomen, firefly, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_markings"
+
+/datum/sprite_accessory/tail/buggofat
+ name = "Fat bug abdomen, colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggofatbee
+ name = "Fat bug abdomen, bee top, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbee_markings"
+
+/datum/sprite_accessory/tail/buggofatbeefull
+ name = "Fat bug abdomen, bee full, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbeefull_markings"
+
+/datum/sprite_accessory/tail/buggofatunder
+ name = "Fat bug abdomen, underside, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatunder_markings"
+
+/datum/sprite_accessory/tail/buggofatfirefly
+ name = "Fat bug abdomen, firefly, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatfirefly_markings"
+
+/datum/sprite_accessory/tail/buggowag
+ name = "Bug abdomen, colorable, vwag change"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggobeewag
+ name = "Bug abdomen, bee top, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_markings"
+ extra_overlay_w = "buggofatbee_markings"
+
+/datum/sprite_accessory/tail/buggobeefullwag
+ name = "Bug abdomen, bee full, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_markings"
+ extra_overlay_w = "buggofatbeefull_markings"
+
+/datum/sprite_accessory/tail/buggounderwag
+ name = "Bug abdomen, underside, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_markings"
+ extra_overlay_w = "buggofatunder_markings"
+
+/datum/sprite_accessory/tail/buggofireflywag
+ name = "Bug abdomen, firefly, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_markings"
+ extra_overlay_w = "buggofatfirefly_markings"
+
+//Vass buggo variants!
+
+/datum/sprite_accessory/tail/buggovass
+ name = "Bug abdomen, vass, colorable"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassbee
+ name = "Bug abdomen, bee top, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassbeefull
+ name = "Bug abdomen, bee full, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassunder
+ name = "Bug abdomen, underside, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfirefly
+ name = "Bug abdomen, firefly, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfat
+ name = "Fat bug abdomen, vass, colorable"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassfatbee
+ name = "Fat bug abdomen, bee top, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatbeefull
+ name = "Fat bug abdomen, bee full, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatunder
+ name = "Fat bug abdomen, underside, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatunder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatfirefly
+ name = "Fat bug abdomen, firefly, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatfirefly_vass_markings"
+
+/datum/sprite_accessory/tail/buggovasswag
+ name = "Bug abdomen, vass, colorable, vwag change"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassbeewag
+ name = "Bug abdomen, bee top, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_vass_markings"
+ extra_overlay_w = "buggofatbee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassbeefullwag
+ name = "Bug abdomen, bee full, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_vass_markings"
+ extra_overlay_w = "buggofatbeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassunderwag
+ name = "Bug abdomen, underside, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_vass_markings"
+ extra_overlay_w = "buggofatunder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfireflywag
+ name = "Bug abdomen, firefly, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_vass_markings"
+ extra_overlay_w = "buggofatfirefly_vass_markings"
+
+/datum/sprite_accessory/tail/tail_smooth
+ name = "Smooth Lizard Tail, colorable"
+ desc = ""
+ icon_state = "tail_smooth"
+ ani_state = "tail_smooth_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/triplekitsune_colorable
+ name = "Kitsune 3 tails, colorable"
+ desc = ""
+ icon_state = "triplekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "triplekitsune_tips"
+
+/datum/sprite_accessory/tail/ninekitsune_colorable
+ name = "Kitsune 9 tails, colorable"
+ desc = ""
+ icon_state = "ninekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "ninekitsune-tips"
+
+/datum/sprite_accessory/tail/shadekin_short
+ name = "Shadekin Short Tail, colorable"
+ desc = ""
+ icon_state = "shadekin-short"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts
+ name = "Ward-Takahashi Tail"
+ desc = ""
+ icon_state = "wardtakahashi_vulp"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wartacosushi_tail_dc
+ name = "Ward-Takahashi Tail, dual-color"
+ desc = ""
+ icon_state = "wardtakahashi_vulp_dc"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "wardtakahashi_vulp_dc_mark"
+
+/datum/sprite_accessory/tail/Easterntail
+ name = "Eastern Dragon (Animated)"
+ desc = ""
+ icon_state = "Easterntail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "EasterntailColorTip"
+ ani_state = "Easterntail_w"
+ extra_overlay_w = "EasterntailColorTip_w"
+
+/datum/sprite_accessory/tail/synthtail_static
+ name = "Synthetic lizard tail"
+ desc = ""
+ icon_state = "synthtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/synthtail_vwag
+ name = "Synthetic lizard tail (vwag)"
+ desc = ""
+ icon_state = "synthtail"
+ ani_state = "synthtail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/Plugtail
+ name = "Synthetic plug tail"
+ desc = ""
+ icon_state = "Plugtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "PlugtailMarking"
+ extra_overlay2 = "PlugtailMarking2"
+
+/datum/sprite_accessory/tail/Segmentedtail
+ name = "Segmented tail, animated"
+ desc = ""
+ icon_state = "Segmentedtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "Segmentedtailmarking"
+ ani_state = "Segmentedtail_w"
+ extra_overlay_w = "Segmentedtailmarking_w"
+
+/datum/sprite_accessory/tail/Segmentedlights
+ name = "Segmented tail, animated synth"
+ desc = ""
+ icon_state = "Segmentedtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "Segmentedlights"
+ ani_state = "Segmentedtail_w"
+ extra_overlay_w = "Segmentedlights_w"
+
+/datum/sprite_accessory/tail/fox_tail
+ name = "Fox tail"
+ desc = ""
+ icon_state = "fox_tail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fox_tail_plain
+ name = "Fox tail"
+ desc = ""
+ icon_state = "fox_tail_plain_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fennec_tail
+ name = "Fennec tail"
+ desc = ""
+ icon_state = "fennec_tail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_smooth
+ name = "Lizard Tail (Smooth)"
+ desc = ""
+ icon_state = "lizard_tail_smooth"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_dark_tiger
+ name = "Lizard Tail (Dark Tiger)"
+ desc = ""
+ icon_state = "lizard_tail_dark_tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_light_tiger
+ name = "Lizard Tail (Light Tiger)"
+ desc = ""
+ icon_state = "lizard_tail_light_tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_spiked
+ name = "Lizard Tail (Spiked)"
+ desc = ""
+ icon_state = "lizard_tail_spiked"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/xenotail_fullcolour
+ name = "xenomorph tail (fully colourable)"
+ desc = ""
+ icon_state = "xenotail_fullcolour"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/xenotailalt_fullcolour
+ name = "xenomorph tail alt. (fully colourable)"
+ desc = ""
+ icon_state = "xenotailalt_fullcolour"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/peacocktail_red //this is ckey locked for now, but prettiebyrd wants these tails to be unlocked at a later date
+ name = "Peacock tail (vwag)"
+ desc = ""
+ icon = "icons/mob/vore/tails_vr.dmi"
+ icon_state = "peacocktail_red"
+ ani_state = "peacocktail_red_w"
+ ckeys_allowed = list("prettiebyrd")
+
+/datum/sprite_accessory/tail/peacocktail //ditto
+ name = "Peacock tail, colorable (vwag)"
+ desc = ""
+ icon = "icons/mob/vore/tails_vr.dmi"
+ icon_state = "peacocktail"
+ ani_state = "peacocktail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ ckeys_allowed = list("prettiebyrd")
+
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Misc Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+
+// Yes, I have to add all of this just to make some glowy hair.
+// No, this isn't a character creation option, but... I guess in the future it could be, if anyone wants that?
+
+/datum/sprite_accessory/hair_accessory
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/hair_accessories_vr.dmi'
+ do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
+
+ var/ignores_lighting = 0 // Whether or not this hair accessory will ignore lighting and glow in the dark.
+ color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
+ var/desc = "You should not see this..."
+
+/datum/sprite_accessory/hair_accessory/verie_hair_glow //CHOMP Comment: Leaving the name Verie here because I cannot be arsed to change it in other code
+ name = "hair glow" //CHOMP Edit: removed the name Verie
+ desc = ""
+ icon_state = "verie_hair_glow" //CHOMP Comment: Leaving the name Verie here because I cannot be arsed to change the .dmi
+ ignores_lighting = 1
+ //ckeys_allowed = list("vitoras") // This probably won't come into play EVER but better safe than sorry
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697:code/modules/vore/appearance/sprite_accessories_vr.dm
+/*
+ Hello and welcome to VOREStation sprite_accessories: For a more general overview
+ please read sprite_accessories.dm. This file is for ears and tails.
+ This is intended to be friendly for people with little to no actual coding experience.
+ !!WARNING!!: changing existing accessory information can be VERY hazardous to savefiles,
+ to the point where you may completely corrupt a server's savefiles. Please refrain
+ from doing this unless you absolutely know what you are doing, and have defined a
+ conversion in savefile.dm
+*/
+
+// Add Additional variable onto sprite_accessory
+/datum/sprite_accessory
+ // Ckey of person allowed to use this, if defined.
+ list/ckeys_allowed = null
+ apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings
+
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Ear Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/ears
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/ears_vr.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/extra_overlay2
+ var/desc = "You should not see this..."
+
+// Species-unique ears
+
+/datum/sprite_accessory/ears/shadekin
+ name = "Shadekin Ears, colorable"
+ desc = ""
+ icon_state = "shadekin"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ apply_restrictions = TRUE
+ species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
+
+// Ears avaliable to anyone
+
+/datum/sprite_accessory/ears/alt_ram_horns
+ name = "Solid ram horns"
+ desc = ""
+ icon_state = "ram_horns_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/hyena
+ name = "hyena ears, dual-color"
+ desc = ""
+ icon_state = "hyena"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "hyena-inner"
+
+/datum/sprite_accessory/ears/moth
+ name = "moth antennae"
+ desc = ""
+ icon_state = "moth"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/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
+
+/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)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshariinner"
+
+/datum/sprite_accessory/ears/tesharihigh
+ name = "Teshari upper ears (colorable)"
+ desc = ""
+ icon_state = "tesharihigh"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tesharihighinner"
+
+/datum/sprite_accessory/ears/tesharilow
+ name = "Teshari lower ears (colorable)"
+ desc = ""
+ icon_state = "tesharilow"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tesharilowinner"
+
+/datum/sprite_accessory/ears/tesh_pattern_ear_male
+ name = "Teshari male ear pattern (colorable)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_male_pattern"
+
+/datum/sprite_accessory/ears/tesh_pattern_ear_female
+ name = "Teshari female ear pattern (colorable)"
+ desc = ""
+ icon_state = "teshari"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_female_pattern"
+
+/datum/sprite_accessory/ears/inkling
+ name = "colorable mature inkling hair"
+ desc = ""
+ icon = 'icons/mob/human_face_vr.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"
+
+/datum/sprite_accessory/ears/synthhorns_plain
+ name = "Synth horns, plain"
+ desc = ""
+ icon_state = "synthhorns_plain"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "synthhorns_plain_light"
+
+/datum/sprite_accessory/ears/synthhorns_thick
+ name = "Synth horns, thick"
+ desc = ""
+ icon_state = "synthhorns_thick"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "synthhorns_thick_light"
+
+/datum/sprite_accessory/ears/synthhorns_curly
+ name = "Synth horns, curly"
+ desc = ""
+ icon_state = "synthhorns_curled"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+
+/datum/sprite_accessory/ears/forward_curled_demon_horns_bony
+ name = "Succubus horns, colourable"
+ desc = ""
+ icon_state = "succu-horns_b"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/forward_curled_demon_horns_bony_with_colorable_ears
+ name = "Succubus horns with pointy ears, colourable"
+ desc = ""
+ icon_state = "elfs"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "succu-horns_b"
+
+/datum/sprite_accessory/ears/chorns_nubbydogs
+ name = "Nubby Chorns"
+ desc = ""
+ icon_state = "chorn_nubby"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_herk
+ name = "Herk Chorns"
+ desc = ""
+ icon_state = "chorn_herk"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bork
+ name = "Bork Chorns"
+ desc = ""
+ icon_state = "chorn_bork"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bull
+ name = "Bull Chorns"
+ desc = ""
+ icon_state = "chorn_bull"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_bicarrot
+ name = "Bicarrot Chorns"
+ desc = ""
+ icon_state = "chorn_bicarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_longcarrot
+ name = "Long Carrot Chorns"
+ desc = ""
+ icon_state = "chorn_longcarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_shortcarrot
+ name = "Short Carrot Chorns"
+ desc = ""
+ icon_state = "chorn_shortcarrot"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_scorp
+ name = "Scorp Chorns"
+ desc = ""
+ icon_state = "chorn_scorp"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_ocean
+ name = "Ocean Chorns"
+ desc = ""
+ icon_state = "chorn_ocean"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/chorns_chub
+ name = "Chub Chorns"
+ desc = ""
+ icon_state = "chorn_chub"
+ do_colouration = 0
+ color_blend_mode = ICON_MULTIPLY
+
+
+
+
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Wing Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/wing
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/wings_vr.dmi'
+ do_colouration = 0 //Set to 1 to enable coloration using the tail color.
+
+ color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
+ var/extra_overlay // Icon state of an additional overlay to blend in.
+ var/extra_overlay2 //Tertiary.
+ 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
+ var/extra_overlay2_w
+
+/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/harpywings_alt
+ name = "harpy wings alt, archeopteryx"
+ desc = ""
+ icon_state = "harpywings_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_altmarkings"
+
+/datum/sprite_accessory/wing/harpywings_alt_neckfur
+ name = "harpy wings alt, archeopteryx & neckfur"
+ desc = ""
+ icon_state = "harpywings_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_altmarkings"
+ extra_overlay2 = "neckfur"
+
+/datum/sprite_accessory/wing/harpywings_bat
+ name = "harpy wings, bat"
+ desc = ""
+ icon_state = "harpywings_bat"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_batmarkings"
+
+/datum/sprite_accessory/wing/harpywings_bat_neckfur
+ name = "harpy wings, bat & neckfur"
+ desc = ""
+ icon_state = "harpywings_bat"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_batmarkings"
+ extra_overlay2 = "neckfur"
+
+/datum/sprite_accessory/wing/neckfur
+ name = "neck fur"
+ desc = ""
+ icon_state = "neckfur"
+ 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
+
+/datum/sprite_accessory/wing/drago_wing
+ name = "Cybernetic Dragon wings"
+ desc = ""
+ icon_state = "drago_wing"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "drago_wing_2"
+
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Tail Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/tail
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/tails_vr.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/extra_overlay2 //Tertiary.
+ var/show_species_tail = 0 // If false, do not render species' tail.
+ var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it
+ var/desc = "You should not see this..."
+ var/ani_state // State when wagging/animated
+ var/extra_overlay_w // Wagging state for extra overlay
+ var/extra_overlay2_w // Tertiary wagging.
+ var/list/hide_body_parts = list() //Uses organ tag defines. Bodyparts in this list do not have their icons rendered, allowing for more spriter freedom when doing taur/digitigrade stuff.
+ var/icon/clip_mask_icon = null //Icon file used for clip mask.
+ var/clip_mask_state = null //Icon state to generate clip mask. Clip mask is used to 'clip' off the lower part of clothing such as jumpsuits & full suits.
+ var/icon/clip_mask = null //Instantiated clip mask of given icon and state
+
+/datum/sprite_accessory/tail/New()
+ . = ..()
+ if(clip_mask_icon && clip_mask_state)
+ clip_mask = icon(icon = clip_mask_icon, icon_state = clip_mask_state)
+
+// Species-unique tails
+
+// Everyone tails
+
+/datum/sprite_accessory/tail/invisible
+ name = "hide species-sprite tail"
+ icon = null
+ icon_state = null
+
+/datum/sprite_accessory/tail/squirrel_orange
+ name = "squirel, orange"
+ desc = ""
+ icon_state = "squirrel-orange"
+
+/datum/sprite_accessory/tail/squirrel_red
+ name = "squirrel, red"
+ desc = ""
+ icon_state = "squirrel-red"
+
+/datum/sprite_accessory/tail/squirrel
+ name = "squirrel, colorable"
+ desc = ""
+ icon_state = "squirrel"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/kitty
+ name = "kitty, colorable, downwards"
+ desc = ""
+ icon_state = "kittydown"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/kittyup
+ name = "kitty, colorable, upwards"
+ desc = ""
+ icon_state = "kittyup"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/tiger_white
+ name = "tiger, colorable"
+ desc = ""
+ icon_state = "tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tigerinnerwhite"
+
+/datum/sprite_accessory/tail/stripey
+ name = "stripey taj, colorable"
+ desc = ""
+ icon_state = "stripeytail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "stripeytail_mark"
+
+/datum/sprite_accessory/tail/stripeytail_brown
+ name = "stripey taj, brown"
+ desc = ""
+ icon_state = "stripeytail-brown"
+
+/datum/sprite_accessory/tail/chameleon
+ name = "Chameleon, colorable"
+ desc = ""
+ icon_state = "chameleon"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/bunny
+ name = "bunny, colorable"
+ desc = ""
+ icon_state = "bunny"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/bear_brown
+ name = "bear, brown"
+ desc = ""
+ icon_state = "bear-brown"
+
+/datum/sprite_accessory/tail/bear
+ name = "bear, colorable"
+ desc = ""
+ icon_state = "bear"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/dragon
+ name = "dragon, colorable"
+ desc = ""
+ icon_state = "dragon"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wolf_grey
+ name = "wolf, grey"
+ desc = ""
+ icon_state = "wolf-grey"
+
+/datum/sprite_accessory/tail/wolf_green
+ name = "wolf, green"
+ desc = ""
+ icon_state = "wolf-green"
+
+/datum/sprite_accessory/tail/wisewolf
+ name = "wolf, wise"
+ desc = ""
+ icon_state = "wolf-wise"
+
+/datum/sprite_accessory/tail/blackwolf
+ name = "wolf, black"
+ desc = ""
+ icon_state = "wolf"
+
+/datum/sprite_accessory/tail/wolf
+ name = "wolf, colorable"
+ desc = ""
+ icon_state = "wolf"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "wolfinner"
+
+/datum/sprite_accessory/tail/mouse_pink
+ name = "mouse, pink"
+ desc = ""
+ icon_state = "mouse-pink"
+
+/datum/sprite_accessory/tail/mouse
+ name = "mouse, colorable"
+ desc = ""
+ icon_state = "mouse"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/horse
+ name = "horse tail, colorable"
+ desc = ""
+ icon_state = "horse"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/cow
+ name = "cow tail, colorable"
+ desc = ""
+ icon_state = "cow"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fantail
+ name = "avian fantail, colorable"
+ desc = ""
+ icon_state = "fantail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wagtail
+ name = "avian wagtail, colorable"
+ desc = ""
+ icon_state = "wagtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreandc
+ name = "nevrean tail, dual-color"
+ desc = ""
+ icon_state = "nevreantail_dc"
+ extra_overlay = "nevreantail_dc_tail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreanwagdc
+ name = "nevrean wagtail, dual-color"
+ desc = ""
+ icon_state = "wagtail"
+ extra_overlay = "wagtail_dc_tail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreanwagdc_alt
+ name = "nevrean wagtail, marked, dual-color"
+ desc = ""
+ icon_state = "wagtail2_dc"
+ extra_overlay = "wagtail2_dc_mark"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/crossfox
+ name = "cross fox"
+ desc = ""
+ icon_state = "crossfox"
+
+/datum/sprite_accessory/tail/beethorax
+ name = "bee thorax"
+ desc = ""
+ icon_state = "beethorax"
+
+/datum/sprite_accessory/tail/doublekitsune
+ name = "double kitsune tail, colorable"
+ desc = ""
+ icon_state = "doublekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/spade_color
+ name = "spade-tail (colorable)"
+ desc = ""
+ icon_state = "spadetail-black"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/snag
+ name = "xenomorph tail 1"
+ desc = ""
+ icon_state = "snag"
+
+/datum/sprite_accessory/tail/xenotail
+ name = "xenomorph tail 2"
+ desc = ""
+ icon_state = "xenotail"
+
+/datum/sprite_accessory/tail/eboop
+ name = "EGN mech tail (dual color)"
+ desc = ""
+ icon_state = "eboop"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "eboop_mark"
+
+/datum/sprite_accessory/tail/molenar_kitsune
+ name = "quintail kitsune tails (Molenar)"
+ desc = ""
+ icon_state = "molenar-kitsune"
+ ckeys_allowed = list("molenar")
+
+/datum/sprite_accessory/tail/miria_fluffdragon
+ name = "fluffdragon tail (Miria Masters)"
+ desc = ""
+ icon_state = "miria-fluffdragontail"
+ ckeys_allowed = list("miriamasters")
+
+/datum/sprite_accessory/tail/miria_kitsune
+ name = "Black kitsune tails (Miria Masters)"
+ desc = ""
+ icon_state = "miria-kitsunetail"
+ ckeys_allowed = list("miriamasters")
+
+/datum/sprite_accessory/tail/molenar_deathclaw
+ name = "deathclaw bits (Molenar)"
+ desc = ""
+ icon_state = "molenar-deathclaw"
+ ckeys_allowed = list("molenar","silvertalismen","jertheace")
+
+/datum/sprite_accessory/tail/runac
+ name = "fennecsune tails (Runac)"
+ desc = ""
+ icon_state = "runac"
+ ckeys_allowed = list("rebcom1807")
+
+/datum/sprite_accessory/tail/reika //Leaving this since it was too hard to split the wings from the tail.
+ name = "fox tail (+ beewings) (Reika)"
+ desc = ""
+ icon_state = "reika"
+ ckeys_allowed = list("rikaru19xjenkins")
+
+/datum/sprite_accessory/tail/rosey
+ name = "tritail kitsune tails (Rosey)"
+ desc = ""
+ icon_state = "rosey_three"
+ ckeys_allowed = list("joey4298")
+
+/datum/sprite_accessory/tail/rosey2
+ name = "pentatail kitsune tails (Rosey)" //I predict seven tails next. ~CK
+ desc = ""
+ icon_state = "rosey_five"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ ckeys_allowed = list("joey4298")
+
+/datum/sprite_accessory/tail/scree
+ name = "green taj tail (Scree)"
+ desc = ""
+ icon_state = "scree"
+ ckeys_allowed = list("scree")
+
+/datum/sprite_accessory/tail/aronai
+ name = "aronai tail (Aronai)"
+ desc = ""
+ icon_state = "aronai"
+ ckeys_allowed = list("arokha")
+
+/datum/sprite_accessory/tail/cabletail
+ name = "cabletail"
+ desc = "cabletail"
+ icon_state = "cabletail"
+ ckeys_allowed = list("tucker0666")
+
+/datum/sprite_accessory/tail/featherfluff_tail
+ name = "featherfluff_tail"
+ desc = ""
+ icon_state = "featherfluff_tail"
+ ckeys_allowed = list("tucker0666")
+
+/datum/sprite_accessory/tail/ketrai_wag
+ name = "fennix tail (vwag)"
+ desc = ""
+ icon_state = "ketraitail"
+ ani_state = "ketraitail_w"
+ //ckeys_allowed = list("ketrai") //They requested it to be enabled for everyone.
+
+/datum/sprite_accessory/tail/ketrainew_wag
+ name = "new fennix tail (vwag)"
+ desc = ""
+ icon_state = "ketraitailnew"
+ ani_state = "ketraitailnew_w"
+
+/datum/sprite_accessory/tail/redpanda
+ name = "red panda"
+ desc = ""
+ icon_state = "redpanda"
+
+/datum/sprite_accessory/tail/ringtail
+ name = "ringtail, colorable"
+ desc = ""
+ icon_state = "ringtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "ringtail_mark"
+
+/datum/sprite_accessory/tail/holly
+ name = "tigress tail (Holly)"
+ desc = ""
+ icon_state = "tigresstail"
+ ckeys_allowed = list("hoodoo")
+
+/datum/sprite_accessory/tail/satyr
+ name = "goat legs, colorable"
+ desc = ""
+ icon_state = "satyr"
+ color_blend_mode = ICON_MULTIPLY
+ do_colouration = 1
+ 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/vore/taurs_vr.dmi'
+ clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
+
+/datum/sprite_accessory/tail/tailmaw
+ name = "tailmaw, colorable"
+ desc = ""
+ icon_state = "tailmaw"
+ color_blend_mode = ICON_MULTIPLY
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/curltail
+ name = "curltail (vwag)"
+ desc = ""
+ icon_state = "curltail"
+ ani_state = "curltail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "curltail_mark"
+ extra_overlay_w = "curltail_mark_w"
+
+/datum/sprite_accessory/tail/shorttail
+ name = "shorttail (vwag)"
+ desc = ""
+ icon_state = "straighttail"
+ ani_state = "straighttail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/sneptail
+ name = "Snep/Furry Tail (vwag)"
+ desc = ""
+ icon_state = "sneptail"
+ ani_state = "sneptail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "sneptail_mark"
+ extra_overlay_w = "sneptail_mark_w"
+
+
+/datum/sprite_accessory/tail/tiger_new
+ name = "tiger tail (vwag)"
+ desc = ""
+ icon_state = "tigertail"
+ ani_state = "tigertail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tigertail_mark"
+ extra_overlay_w = "tigertail_mark_w"
+
+/datum/sprite_accessory/tail/vulp_new
+ name = "new vulp tail (vwag)"
+ desc = ""
+ icon_state = "vulptail"
+ ani_state = "vulptail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "vulptail_mark"
+ extra_overlay_w = "vulptail_mark_w"
+
+/datum/sprite_accessory/tail/otietail
+ name = "otie tail (vwag)"
+ desc = ""
+ icon_state = "otie"
+ ani_state = "otie_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/newtailmaw
+ name = "new tailmaw (vwag)"
+ desc = ""
+ icon_state = "newtailmaw"
+ ani_state = "newtailmaw_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/ztail
+ name = "jagged flufftail"
+ desc = ""
+ icon_state = "ztail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/snaketail
+ name = "snake tail, colorable"
+ desc = ""
+ icon_state = "snaketail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/vulpan_alt
+ name = "vulpkanin alt style, colorable"
+ desc = ""
+ icon_state = "vulptail_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/sergaltaildc
+ name = "sergal, dual-color"
+ desc = ""
+ icon_state = "sergal"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "sergal_mark"
+
+/datum/sprite_accessory/tail/skunktail
+ name = "skunk, dual-color"
+ desc = ""
+ icon_state = "skunktail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "skunktail_mark"
+
+/datum/sprite_accessory/tail/deertail
+ name = "deer, dual-color"
+ desc = ""
+ icon_state = "deertail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "deertail_mark"
+
+/datum/sprite_accessory/tail/tesh_feathered
+ name = "Teshari tail"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ extra_overlay = "teshtail_feathers_s"
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/teshari_fluffytail
+ name = "Teshari alternative, colorable"
+ desc = ""
+ icon_state = "teshari_fluffytail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_fluffytail_mark"
+
+/datum/sprite_accessory/tail/tesh_pattern_male
+ name = "Teshari male tail pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_male_tail"
+
+/datum/sprite_accessory/tail/tesh_pattern_male_alt
+ name = "Teshari male tail alt. pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_male_alt"
+
+/datum/sprite_accessory/tail/tesh_pattern_fem
+ name = "Teshari female tail pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_fem_tail"
+
+/datum/sprite_accessory/tail/tesh_pattern_fem_alt
+ name = "Teshari male tail alt. pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_fem_alt"
+
+/datum/sprite_accessory/tail/nightstalker
+ name = "Nightstalker, colorable"
+ desc = ""
+ icon_state = "nightstalker"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+//For all species tails. Includes haircolored tails.
+/datum/sprite_accessory/tail/special
+ name = "Blank tail. Do not select."
+ icon = 'icons/effects/species_tails_vr.dmi'
+
+/datum/sprite_accessory/tail/special/unathi
+ name = "unathi tail"
+ desc = ""
+ icon_state = "sogtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/tajaran
+ name = "tajaran tail"
+ desc = ""
+ icon_state = "tajtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/sergal
+ name = "sergal tail"
+ desc = ""
+ icon_state = "sergtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/akula
+ name = "akula tail"
+ desc = ""
+ icon_state = "sharktail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/nevrean
+ name = "nevrean tail"
+ desc = ""
+ icon_state = "nevreantail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/armalis
+ name = "armalis tail"
+ desc = ""
+ icon_state = "armalis_tail_humanoid_s"
+
+/datum/sprite_accessory/tail/special/xenodrone
+ name = "xenomorph drone tail"
+ desc = ""
+ icon_state = "xenos_drone_tail_s"
+
+/datum/sprite_accessory/tail/special/xenosentinel
+ name = "xenomorph sentinel tail"
+ desc = ""
+ icon_state = "xenos_sentinel_tail_s"
+
+/datum/sprite_accessory/tail/special/xenohunter
+ name = "xenomorph hunter tail"
+ desc = ""
+ icon_state = "xenos_hunter_tail_s"
+
+/datum/sprite_accessory/tail/special/xenoqueen
+ name = "xenomorph queen tail"
+ desc = ""
+ icon_state = "xenos_queen_tail_s"
+
+/datum/sprite_accessory/tail/special/monkey
+ name = "monkey tail"
+ desc = ""
+ icon_state = "chimptail_s"
+
+/datum/sprite_accessory/tail/special/unathihc
+ name = "unathi tail, colorable"
+ desc = ""
+ icon_state = "sogtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/tajaranhc
+ name = "tajaran tail, colorable"
+ desc = ""
+ icon_state = "tajtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/sergalhc
+ name = "sergal tail, colorable"
+ desc = ""
+ icon_state = "sergtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/akulahc
+ name = "akula tail, colorable"
+ desc = ""
+ icon_state = "sharktail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/nevreanhc
+ name = "nevrean tail, colorable"
+ desc = ""
+ icon_state = "nevreantail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/foxhc
+ name = "highlander zorren tail, colorable"
+ desc = ""
+ icon_state = "foxtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/fennechc
+ name = "flatland zorren tail, colorable"
+ desc = ""
+ icon_state = "fentail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/armalishc
+ name = "armalis tail, colorable"
+ desc = ""
+ icon_state = "armalis_tail_humanoid_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenodronehc
+ name = "xenomorph drone tail, colorable"
+ desc = ""
+ icon_state = "xenos_drone_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenosentinelhc
+ name = "xenomorph sentinel tail, colorable"
+ desc = ""
+ icon_state = "xenos_sentinel_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenohunterhc
+ name = "xenomorph hunter tail, colorable"
+ desc = ""
+ icon_state = "xenos_hunter_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenoqueenhc
+ name = "xenomorph queen tail, colorable"
+ desc = ""
+ icon_state = "xenos_queen_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/monkeyhc
+ name = "monkey tail, colorable"
+ desc = ""
+ icon_state = "chimptail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/vulpan
+ name = "vulpkanin, colorable"
+ desc = ""
+ icon_state = "vulptail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+
+/datum/sprite_accessory/tail/zenghu_taj
+ name = "Zeng-Hu Tajaran Synth tail"
+ desc = ""
+ icon_state = "zenghu_taj"
+
+//Taurs moved to a separate file due to extra code around them
+
+//Buggo Abdomens!
+
+/datum/sprite_accessory/tail/buggo
+ name = "Bug abdomen, colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggobee
+ name = "Bug abdomen, bee top, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_markings"
+
+/datum/sprite_accessory/tail/buggobeefull
+ name = "Bug abdomen, bee full, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_markings"
+
+/datum/sprite_accessory/tail/buggounder
+ name = "Bug abdomen, underside, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_markings"
+
+/datum/sprite_accessory/tail/buggofirefly
+ name = "Bug abdomen, firefly, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_markings"
+
+/datum/sprite_accessory/tail/buggofat
+ name = "Fat bug abdomen, colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggofatbee
+ name = "Fat bug abdomen, bee top, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbee_markings"
+
+/datum/sprite_accessory/tail/buggofatbeefull
+ name = "Fat bug abdomen, bee full, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbeefull_markings"
+
+/datum/sprite_accessory/tail/buggofatunder
+ name = "Fat bug abdomen, underside, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatunder_markings"
+
+/datum/sprite_accessory/tail/buggofatfirefly
+ name = "Fat bug abdomen, firefly, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatfirefly_markings"
+
+/datum/sprite_accessory/tail/buggowag
+ name = "Bug abdomen, colorable, vwag change"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggobeewag
+ name = "Bug abdomen, bee top, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_markings"
+ extra_overlay_w = "buggofatbee_markings"
+
+/datum/sprite_accessory/tail/buggobeefullwag
+ name = "Bug abdomen, bee full, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_markings"
+ extra_overlay_w = "buggofatbeefull_markings"
+
+/datum/sprite_accessory/tail/buggounderwag
+ name = "Bug abdomen, underside, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_markings"
+ extra_overlay_w = "buggofatunder_markings"
+
+/datum/sprite_accessory/tail/buggofireflywag
+ name = "Bug abdomen, firefly, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_markings"
+ extra_overlay_w = "buggofatfirefly_markings"
+
+//Vass buggo variants!
+
+/datum/sprite_accessory/tail/buggovass
+ name = "Bug abdomen, vass, colorable"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassbee
+ name = "Bug abdomen, bee top, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassbeefull
+ name = "Bug abdomen, bee full, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassunder
+ name = "Bug abdomen, underside, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfirefly
+ name = "Bug abdomen, firefly, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfat
+ name = "Fat bug abdomen, vass, colorable"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassfatbee
+ name = "Fat bug abdomen, bee top, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatbeefull
+ name = "Fat bug abdomen, bee full, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatunder
+ name = "Fat bug abdomen, underside, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatunder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatfirefly
+ name = "Fat bug abdomen, firefly, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatfirefly_vass_markings"
+
+/datum/sprite_accessory/tail/buggovasswag
+ name = "Bug abdomen, vass, colorable, vwag change"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassbeewag
+ name = "Bug abdomen, bee top, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_vass_markings"
+ extra_overlay_w = "buggofatbee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassbeefullwag
+ name = "Bug abdomen, bee full, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_vass_markings"
+ extra_overlay_w = "buggofatbeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassunderwag
+ name = "Bug abdomen, underside, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_vass_markings"
+ extra_overlay_w = "buggofatunder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfireflywag
+ name = "Bug abdomen, firefly, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_vass_markings"
+ extra_overlay_w = "buggofatfirefly_vass_markings"
+
+/datum/sprite_accessory/tail/tail_smooth
+ name = "Smooth Lizard Tail, colorable"
+ desc = ""
+ icon_state = "tail_smooth"
+ ani_state = "tail_smooth_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/triplekitsune_colorable
+ name = "Kitsune 3 tails, colorable"
+ desc = ""
+ icon_state = "triplekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "triplekitsune_tips"
+
+/datum/sprite_accessory/tail/ninekitsune_colorable
+ name = "Kitsune 9 tails, colorable"
+ desc = ""
+ icon_state = "ninekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "ninekitsune-tips"
+
+/datum/sprite_accessory/tail/shadekin_short
+ name = "Shadekin Short Tail, colorable"
+ desc = ""
+ icon_state = "shadekin-short"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ //apply_restrictions = TRUE
+ //species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
+
+/datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts
+ name = "Ward-Takahashi Tail"
+ desc = ""
+ icon_state = "wardtakahashi_vulp"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wartacosushi_tail_dc
+ name = "Ward-Takahashi Tail, dual-color"
+ desc = ""
+ icon_state = "wardtakahashi_vulp_dc"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "wardtakahashi_vulp_dc_mark"
+
+/datum/sprite_accessory/tail/Easterntail
+ name = "Eastern Dragon (Animated)"
+ desc = ""
+ icon_state = "Easterntail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "EasterntailColorTip"
+ ani_state = "Easterntail_w"
+ extra_overlay_w = "EasterntailColorTip_w"
+
+/datum/sprite_accessory/tail/synthtail_static
+ name = "Synthetic lizard tail"
+ desc = ""
+ icon_state = "synthtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/synthtail_vwag
+ name = "Synthetic lizard tail (vwag)"
+ desc = ""
+ icon_state = "synthtail"
+ ani_state = "synthtail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/Plugtail
+ name = "Synthetic plug tail"
+ desc = ""
+ icon_state = "Plugtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "PlugtailMarking"
+ extra_overlay2 = "PlugtailMarking2"
+
+/datum/sprite_accessory/tail/Segmentedtail
+ name = "Segmented tail, animated"
+ desc = ""
+ icon_state = "Segmentedtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "Segmentedtailmarking"
+ ani_state = "Segmentedtail_w"
+ extra_overlay_w = "Segmentedtailmarking_w"
+
+/datum/sprite_accessory/tail/Segmentedlights
+ name = "Segmented tail, animated synth"
+ desc = ""
+ icon_state = "Segmentedtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "Segmentedlights"
+ ani_state = "Segmentedtail_w"
+ extra_overlay_w = "Segmentedlights_w"
+
+/datum/sprite_accessory/tail/fox_tail
+ name = "Fox tail"
+ desc = ""
+ icon_state = "fox_tail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fox_tail_plain
+ name = "Fox tail"
+ desc = ""
+ icon_state = "fox_tail_plain_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fennec_tail
+ name = "Fennec tail"
+ desc = ""
+ icon_state = "fennec_tail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_smooth
+ name = "Lizard Tail (Smooth)"
+ desc = ""
+ icon_state = "lizard_tail_smooth"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_dark_tiger
+ name = "Lizard Tail (Dark Tiger)"
+ desc = ""
+ icon_state = "lizard_tail_dark_tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_light_tiger
+ name = "Lizard Tail (Light Tiger)"
+ desc = ""
+ icon_state = "lizard_tail_light_tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_spiked
+ name = "Lizard Tail (Spiked)"
+ desc = ""
+ icon_state = "lizard_tail_spiked"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/xenotail_fullcolour
+ name = "xenomorph tail (fully colourable)"
+ desc = ""
+ icon_state = "xenotail_fullcolour"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/xenotailalt_fullcolour
+ name = "xenomorph tail alt. (fully colourable)"
+ desc = ""
+ icon_state = "xenotailalt_fullcolour"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/peacocktail_red //this is ckey locked for now, but prettiebyrd wants these tails to be unlocked at a later date
+ name = "Peacock tail (vwag)"
+ desc = ""
+ icon = "icons/mob/vore/tails_vr.dmi"
+ icon_state = "peacocktail_red"
+ ani_state = "peacocktail_red_w"
+ ckeys_allowed = list("prettiebyrd")
+
+/datum/sprite_accessory/tail/peacocktail //ditto
+ name = "Peacock tail, colorable (vwag)"
+ desc = ""
+ icon = "icons/mob/vore/tails_vr.dmi"
+ icon_state = "peacocktail"
+ ani_state = "peacocktail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ ckeys_allowed = list("prettiebyrd")
+
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Misc Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+
+// Yes, I have to add all of this just to make some glowy hair.
+// No, this isn't a character creation option, but... I guess in the future it could be, if anyone wants that?
+
+/datum/sprite_accessory/hair_accessory
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/hair_accessories_vr.dmi'
+ do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
+
+ var/ignores_lighting = 0 // Whether or not this hair accessory will ignore lighting and glow in the dark.
+ color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
+ var/desc = "You should not see this..."
+
+/datum/sprite_accessory/hair_accessory/verie_hair_glow
+ name = "verie's hair glow"
+ desc = ""
+ icon_state = "verie_hair_glow"
+ ignores_lighting = 1
+ //ckeys_allowed = list("vitoras") // This probably won't come into play EVER but better safe than sorry
+=======
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Tail Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/tail
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/tails_vr.dmi'
+ do_colouration = 0 //Set to 1 to enable coloration using the tail color.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) //This lets all races use
+
+/datum/sprite_accessory/tail/New()
+ . = ..()
+ if(clip_mask_icon && clip_mask_state)
+ clip_mask = icon(icon = clip_mask_icon, icon_state = clip_mask_state)
+
+// Species-unique tails
+
+// Everyone tails
+
+/datum/sprite_accessory/tail/invisible
+ name = "hide species-sprite tail"
+ icon = null
+ icon_state = null
+
+/datum/sprite_accessory/tail/squirrel_orange
+ name = "squirel, orange"
+ desc = ""
+ icon_state = "squirrel-orange"
+
+/datum/sprite_accessory/tail/squirrel_red
+ name = "squirrel, red"
+ desc = ""
+ icon_state = "squirrel-red"
+
+/datum/sprite_accessory/tail/squirrel
+ name = "squirrel, colorable"
+ desc = ""
+ icon_state = "squirrel"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/kitty
+ name = "kitty, colorable, downwards"
+ desc = ""
+ icon_state = "kittydown"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/kittyup
+ name = "kitty, colorable, upwards"
+ desc = ""
+ icon_state = "kittyup"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/tiger_white
+ name = "tiger, colorable"
+ desc = ""
+ icon_state = "tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tigerinnerwhite"
+
+/datum/sprite_accessory/tail/stripey
+ name = "stripey taj, colorable"
+ desc = ""
+ icon_state = "stripeytail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "stripeytail_mark"
+
+/datum/sprite_accessory/tail/stripeytail_brown
+ name = "stripey taj, brown"
+ desc = ""
+ icon_state = "stripeytail-brown"
+
+/datum/sprite_accessory/tail/chameleon
+ name = "Chameleon, colorable"
+ desc = ""
+ icon_state = "chameleon"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/bunny
+ name = "bunny, colorable"
+ desc = ""
+ icon_state = "bunny"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/bear_brown
+ name = "bear, brown"
+ desc = ""
+ icon_state = "bear-brown"
+
+/datum/sprite_accessory/tail/bear
+ name = "bear, colorable"
+ desc = ""
+ icon_state = "bear"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/dragon
+ name = "dragon, colorable"
+ desc = ""
+ icon_state = "dragon"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wolf_grey
+ name = "wolf, grey"
+ desc = ""
+ icon_state = "wolf-grey"
+
+/datum/sprite_accessory/tail/wolf_green
+ name = "wolf, green"
+ desc = ""
+ icon_state = "wolf-green"
+
+/datum/sprite_accessory/tail/wisewolf
+ name = "wolf, wise"
+ desc = ""
+ icon_state = "wolf-wise"
+
+/datum/sprite_accessory/tail/blackwolf
+ name = "wolf, black"
+ desc = ""
+ icon_state = "wolf"
+
+/datum/sprite_accessory/tail/wolf
+ name = "wolf, colorable"
+ desc = ""
+ icon_state = "wolf"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "wolfinner"
+
+/datum/sprite_accessory/tail/mouse_pink
+ name = "mouse, pink"
+ desc = ""
+ icon_state = "mouse-pink"
+
+/datum/sprite_accessory/tail/mouse
+ name = "mouse, colorable"
+ desc = ""
+ icon_state = "mouse"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/horse
+ name = "horse tail, colorable"
+ desc = ""
+ icon_state = "horse"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/cow
+ name = "cow tail, colorable"
+ desc = ""
+ icon_state = "cow"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fantail
+ name = "avian fantail, colorable"
+ desc = ""
+ icon_state = "fantail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wagtail
+ name = "avian wagtail, colorable"
+ desc = ""
+ icon_state = "wagtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreandc
+ name = "nevrean tail, dual-color"
+ desc = ""
+ icon_state = "nevreantail_dc"
+ extra_overlay = "nevreantail_dc_tail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreanwagdc
+ name = "nevrean wagtail, dual-color"
+ desc = ""
+ icon_state = "wagtail"
+ extra_overlay = "wagtail_dc_tail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/nevreanwagdc_alt
+ name = "nevrean wagtail, marked, dual-color"
+ desc = ""
+ icon_state = "wagtail2_dc"
+ extra_overlay = "wagtail2_dc_mark"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/crossfox
+ name = "cross fox"
+ desc = ""
+ icon_state = "crossfox"
+
+/datum/sprite_accessory/tail/beethorax
+ name = "bee thorax"
+ desc = ""
+ icon_state = "beethorax"
+
+/datum/sprite_accessory/tail/doublekitsune
+ name = "double kitsune tail, colorable"
+ desc = ""
+ icon_state = "doublekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/spade_color
+ name = "spade-tail (colorable)"
+ desc = ""
+ icon_state = "spadetail-black"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/snag
+ name = "xenomorph tail 1"
+ desc = ""
+ icon_state = "snag"
+
+/datum/sprite_accessory/tail/xenotail
+ name = "xenomorph tail 2"
+ desc = ""
+ icon_state = "xenotail"
+
+/datum/sprite_accessory/tail/eboop
+ name = "EGN mech tail (dual color)"
+ desc = ""
+ icon_state = "eboop"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "eboop_mark"
+
+/datum/sprite_accessory/tail/molenar_kitsune
+ name = "quintail kitsune tails (Molenar)"
+ desc = ""
+ icon_state = "molenar-kitsune"
+ ckeys_allowed = list("molenar")
+
+/datum/sprite_accessory/tail/miria_fluffdragon
+ name = "fluffdragon tail (Miria Masters)"
+ desc = ""
+ icon_state = "miria-fluffdragontail"
+ ckeys_allowed = list("miriamasters")
+
+/datum/sprite_accessory/tail/miria_kitsune
+ name = "Black kitsune tails (Miria Masters)"
+ desc = ""
+ icon_state = "miria-kitsunetail"
+ ckeys_allowed = list("miriamasters")
+
+/datum/sprite_accessory/tail/molenar_deathclaw
+ name = "deathclaw bits (Molenar)"
+ desc = ""
+ icon_state = "molenar-deathclaw"
+ ckeys_allowed = list("molenar","silvertalismen","jertheace")
+
+/datum/sprite_accessory/tail/runac
+ name = "fennecsune tails (Runac)"
+ desc = ""
+ icon_state = "runac"
+ ckeys_allowed = list("rebcom1807")
+
+/datum/sprite_accessory/tail/reika //Leaving this since it was too hard to split the wings from the tail.
+ name = "fox tail (+ beewings) (Reika)"
+ desc = ""
+ icon_state = "reika"
+ ckeys_allowed = list("rikaru19xjenkins")
+
+/datum/sprite_accessory/tail/rosey
+ name = "tritail kitsune tails (Rosey)"
+ desc = ""
+ icon_state = "rosey_three"
+ ckeys_allowed = list("joey4298")
+
+/datum/sprite_accessory/tail/rosey2
+ name = "pentatail kitsune tails (Rosey)" //I predict seven tails next. ~CK
+ desc = ""
+ icon_state = "rosey_five"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ ckeys_allowed = list("joey4298")
+
+/datum/sprite_accessory/tail/scree
+ name = "green taj tail (Scree)"
+ desc = ""
+ icon_state = "scree"
+ ckeys_allowed = list("scree")
+
+/datum/sprite_accessory/tail/aronai
+ name = "aronai tail (Aronai)"
+ desc = ""
+ icon_state = "aronai"
+ ckeys_allowed = list("arokha")
+
+/datum/sprite_accessory/tail/cabletail
+ name = "cabletail"
+ desc = "cabletail"
+ icon_state = "cabletail"
+ ckeys_allowed = list("tucker0666")
+
+/datum/sprite_accessory/tail/featherfluff_tail
+ name = "featherfluff_tail"
+ desc = ""
+ icon_state = "featherfluff_tail"
+ ckeys_allowed = list("tucker0666")
+
+/datum/sprite_accessory/tail/ketrai_wag
+ name = "fennix tail (vwag)"
+ desc = ""
+ icon_state = "ketraitail"
+ ani_state = "ketraitail_w"
+ //ckeys_allowed = list("ketrai") //They requested it to be enabled for everyone.
+
+/datum/sprite_accessory/tail/ketrainew_wag
+ name = "new fennix tail (vwag)"
+ desc = ""
+ icon_state = "ketraitailnew"
+ ani_state = "ketraitailnew_w"
+
+/datum/sprite_accessory/tail/redpanda
+ name = "red panda"
+ desc = ""
+ icon_state = "redpanda"
+
+/datum/sprite_accessory/tail/ringtail
+ name = "ringtail, colorable"
+ desc = ""
+ icon_state = "ringtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "ringtail_mark"
+
+/datum/sprite_accessory/tail/holly
+ name = "tigress tail (Holly)"
+ desc = ""
+ icon_state = "tigresstail"
+ ckeys_allowed = list("hoodoo")
+
+/datum/sprite_accessory/tail/satyr
+ name = "goat legs, colorable"
+ desc = ""
+ icon_state = "satyr"
+ color_blend_mode = ICON_MULTIPLY
+ do_colouration = 1
+ 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/vore/taurs_vr.dmi'
+ clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
+
+/datum/sprite_accessory/tail/tailmaw
+ name = "tailmaw, colorable"
+ desc = ""
+ icon_state = "tailmaw"
+ color_blend_mode = ICON_MULTIPLY
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/curltail
+ name = "curltail (vwag)"
+ desc = ""
+ icon_state = "curltail"
+ ani_state = "curltail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "curltail_mark"
+ extra_overlay_w = "curltail_mark_w"
+
+/datum/sprite_accessory/tail/shorttail
+ name = "shorttail (vwag)"
+ desc = ""
+ icon_state = "straighttail"
+ ani_state = "straighttail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/sneptail
+ name = "Snep/Furry Tail (vwag)"
+ desc = ""
+ icon_state = "sneptail"
+ ani_state = "sneptail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "sneptail_mark"
+ extra_overlay_w = "sneptail_mark_w"
+
+
+/datum/sprite_accessory/tail/tiger_new
+ name = "tiger tail (vwag)"
+ desc = ""
+ icon_state = "tigertail"
+ ani_state = "tigertail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "tigertail_mark"
+ extra_overlay_w = "tigertail_mark_w"
+
+/datum/sprite_accessory/tail/vulp_new
+ name = "new vulp tail (vwag)"
+ desc = ""
+ icon_state = "vulptail"
+ ani_state = "vulptail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "vulptail_mark"
+ extra_overlay_w = "vulptail_mark_w"
+
+/datum/sprite_accessory/tail/otietail
+ name = "otie tail (vwag)"
+ desc = ""
+ icon_state = "otie"
+ ani_state = "otie_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/newtailmaw
+ name = "new tailmaw (vwag)"
+ desc = ""
+ icon_state = "newtailmaw"
+ ani_state = "newtailmaw_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/ztail
+ name = "jagged flufftail"
+ desc = ""
+ icon_state = "ztail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/snaketail
+ name = "snake tail, colorable"
+ desc = ""
+ icon_state = "snaketail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/vulpan_alt
+ name = "vulpkanin alt style, colorable"
+ desc = ""
+ icon_state = "vulptail_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/sergaltaildc
+ name = "sergal, dual-color"
+ desc = ""
+ icon_state = "sergal"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "sergal_mark"
+
+/datum/sprite_accessory/tail/skunktail
+ name = "skunk, dual-color"
+ desc = ""
+ icon_state = "skunktail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "skunktail_mark"
+
+/datum/sprite_accessory/tail/deertail
+ name = "deer, dual-color"
+ desc = ""
+ icon_state = "deertail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "deertail_mark"
+
+/datum/sprite_accessory/tail/tesh_feathered
+ name = "Teshari tail"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ extra_overlay = "teshtail_feathers_s"
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/teshari_fluffytail
+ name = "Teshari alternative, colorable"
+ desc = ""
+ icon_state = "teshari_fluffytail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshari_fluffytail_mark"
+
+/datum/sprite_accessory/tail/tesh_pattern_male
+ name = "Teshari male tail pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_male_tail"
+
+/datum/sprite_accessory/tail/tesh_pattern_male_alt
+ name = "Teshari male tail alt. pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_male_alt"
+
+/datum/sprite_accessory/tail/tesh_pattern_fem
+ name = "Teshari female tail pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_fem_tail"
+
+/datum/sprite_accessory/tail/tesh_pattern_fem_alt
+ name = "Teshari male tail alt. pattern"
+ desc = ""
+ icon_state = "teshtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "teshpattern_fem_alt"
+
+/datum/sprite_accessory/tail/nightstalker
+ name = "Nightstalker, colorable"
+ desc = ""
+ icon_state = "nightstalker"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+//For all species tails. Includes haircolored tails.
+/datum/sprite_accessory/tail/special
+ name = "Blank tail. Do not select."
+ icon = 'icons/effects/species_tails_vr.dmi'
+
+/datum/sprite_accessory/tail/special/unathi
+ name = "unathi tail"
+ desc = ""
+ icon_state = "sogtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/tajaran
+ name = "tajaran tail"
+ desc = ""
+ icon_state = "tajtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/sergal
+ name = "sergal tail"
+ desc = ""
+ icon_state = "sergtail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/akula
+ name = "akula tail"
+ desc = ""
+ icon_state = "sharktail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/nevrean
+ name = "nevrean tail"
+ desc = ""
+ icon_state = "nevreantail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/armalis
+ name = "armalis tail"
+ desc = ""
+ icon_state = "armalis_tail_humanoid_s"
+
+/datum/sprite_accessory/tail/special/xenodrone
+ name = "xenomorph drone tail"
+ desc = ""
+ icon_state = "xenos_drone_tail_s"
+
+/datum/sprite_accessory/tail/special/xenosentinel
+ name = "xenomorph sentinel tail"
+ desc = ""
+ icon_state = "xenos_sentinel_tail_s"
+
+/datum/sprite_accessory/tail/special/xenohunter
+ name = "xenomorph hunter tail"
+ desc = ""
+ icon_state = "xenos_hunter_tail_s"
+
+/datum/sprite_accessory/tail/special/xenoqueen
+ name = "xenomorph queen tail"
+ desc = ""
+ icon_state = "xenos_queen_tail_s"
+
+/datum/sprite_accessory/tail/special/monkey
+ name = "monkey tail"
+ desc = ""
+ icon_state = "chimptail_s"
+
+/datum/sprite_accessory/tail/special/unathihc
+ name = "unathi tail, colorable"
+ desc = ""
+ icon_state = "sogtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/tajaranhc
+ name = "tajaran tail, colorable"
+ desc = ""
+ icon_state = "tajtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/sergalhc
+ name = "sergal tail, colorable"
+ desc = ""
+ icon_state = "sergtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/akulahc
+ name = "akula tail, colorable"
+ desc = ""
+ icon_state = "sharktail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/nevreanhc
+ name = "nevrean tail, colorable"
+ desc = ""
+ icon_state = "nevreantail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/foxhc
+ name = "highlander zorren tail, colorable"
+ desc = ""
+ icon_state = "foxtail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/fennechc
+ name = "flatland zorren tail, colorable"
+ desc = ""
+ icon_state = "fentail_hc_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/special/armalishc
+ name = "armalis tail, colorable"
+ desc = ""
+ icon_state = "armalis_tail_humanoid_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenodronehc
+ name = "xenomorph drone tail, colorable"
+ desc = ""
+ icon_state = "xenos_drone_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenosentinelhc
+ name = "xenomorph sentinel tail, colorable"
+ desc = ""
+ icon_state = "xenos_sentinel_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenohunterhc
+ name = "xenomorph hunter tail, colorable"
+ desc = ""
+ icon_state = "xenos_hunter_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/xenoqueenhc
+ name = "xenomorph queen tail, colorable"
+ desc = ""
+ icon_state = "xenos_queen_tail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/monkeyhc
+ name = "monkey tail, colorable"
+ desc = ""
+ icon_state = "chimptail_hc_s"
+ do_colouration = 1
+
+/datum/sprite_accessory/tail/special/vulpan
+ name = "vulpkanin, colorable"
+ desc = ""
+ icon_state = "vulptail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+
+/datum/sprite_accessory/tail/zenghu_taj
+ name = "Zeng-Hu Tajaran Synth tail"
+ desc = ""
+ icon_state = "zenghu_taj"
+
+//Taurs moved to a separate file due to extra code around them
+
+//Buggo Abdomens!
+
+/datum/sprite_accessory/tail/buggo
+ name = "Bug abdomen, colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggobee
+ name = "Bug abdomen, bee top, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_markings"
+
+/datum/sprite_accessory/tail/buggobeefull
+ name = "Bug abdomen, bee full, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_markings"
+
+/datum/sprite_accessory/tail/buggounder
+ name = "Bug abdomen, underside, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_markings"
+
+/datum/sprite_accessory/tail/buggofirefly
+ name = "Bug abdomen, firefly, dual-colorable"
+ desc = ""
+ icon_state = "buggo_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_markings"
+
+/datum/sprite_accessory/tail/buggofat
+ name = "Fat bug abdomen, colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggofatbee
+ name = "Fat bug abdomen, bee top, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbee_markings"
+
+/datum/sprite_accessory/tail/buggofatbeefull
+ name = "Fat bug abdomen, bee full, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbeefull_markings"
+
+/datum/sprite_accessory/tail/buggofatunder
+ name = "Fat bug abdomen, underside, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatunder_markings"
+
+/datum/sprite_accessory/tail/buggofatfirefly
+ name = "Fat bug abdomen, firefly, dual-colorable"
+ desc = ""
+ icon_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatfirefly_markings"
+
+/datum/sprite_accessory/tail/buggowag
+ name = "Bug abdomen, colorable, vwag change"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggobeewag
+ name = "Bug abdomen, bee top, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_markings"
+ extra_overlay_w = "buggofatbee_markings"
+
+/datum/sprite_accessory/tail/buggobeefullwag
+ name = "Bug abdomen, bee full, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_markings"
+ extra_overlay_w = "buggofatbeefull_markings"
+
+/datum/sprite_accessory/tail/buggounderwag
+ name = "Bug abdomen, underside, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_markings"
+ extra_overlay_w = "buggofatunder_markings"
+
+/datum/sprite_accessory/tail/buggofireflywag
+ name = "Bug abdomen, firefly, dual color, vwag"
+ desc = ""
+ icon_state = "buggo_s"
+ ani_state = "buggofat_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_markings"
+ extra_overlay_w = "buggofatfirefly_markings"
+
+//Vass buggo variants!
+
+/datum/sprite_accessory/tail/buggovass
+ name = "Bug abdomen, vass, colorable"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassbee
+ name = "Bug abdomen, bee top, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassbeefull
+ name = "Bug abdomen, bee full, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassunder
+ name = "Bug abdomen, underside, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfirefly
+ name = "Bug abdomen, firefly, dc, vass"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfat
+ name = "Fat bug abdomen, vass, colorable"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassfatbee
+ name = "Fat bug abdomen, bee top, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatbeefull
+ name = "Fat bug abdomen, bee full, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatbeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatunder
+ name = "Fat bug abdomen, underside, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatunder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfatfirefly
+ name = "Fat bug abdomen, firefly, dc, vass"
+ desc = ""
+ icon_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofatfirefly_vass_markings"
+
+/datum/sprite_accessory/tail/buggovasswag
+ name = "Bug abdomen, vass, colorable, vwag change"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/buggovassbeewag
+ name = "Bug abdomen, bee top, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobee_vass_markings"
+ extra_overlay_w = "buggofatbee_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassbeefullwag
+ name = "Bug abdomen, bee full, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggobeefull_vass_markings"
+ extra_overlay_w = "buggofatbeefull_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassunderwag
+ name = "Bug abdomen, underside, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggounder_vass_markings"
+ extra_overlay_w = "buggofatunder_vass_markings"
+
+/datum/sprite_accessory/tail/buggovassfireflywag
+ name = "Bug abdomen, firefly, dc, vass, vwag"
+ desc = ""
+ icon_state = "buggo_vass_s"
+ ani_state = "buggofat_vass_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "buggofirefly_vass_markings"
+ extra_overlay_w = "buggofatfirefly_vass_markings"
+
+/datum/sprite_accessory/tail/tail_smooth
+ name = "Smooth Lizard Tail, colorable"
+ desc = ""
+ icon_state = "tail_smooth"
+ ani_state = "tail_smooth_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/triplekitsune_colorable
+ name = "Kitsune 3 tails, colorable"
+ desc = ""
+ icon_state = "triplekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "triplekitsune_tips"
+
+/datum/sprite_accessory/tail/ninekitsune_colorable
+ name = "Kitsune 9 tails, colorable"
+ desc = ""
+ icon_state = "ninekitsune"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "ninekitsune-tips"
+
+/datum/sprite_accessory/tail/shadekin_short
+ name = "Shadekin Short Tail, colorable"
+ desc = ""
+ icon_state = "shadekin-short"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ //apply_restrictions = TRUE
+ //species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
+
+/datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts
+ name = "Ward-Takahashi Tail"
+ desc = ""
+ icon_state = "wardtakahashi_vulp"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/wartacosushi_tail_dc
+ name = "Ward-Takahashi Tail, dual-color"
+ desc = ""
+ icon_state = "wardtakahashi_vulp_dc"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "wardtakahashi_vulp_dc_mark"
+
+/datum/sprite_accessory/tail/Easterntail
+ name = "Eastern Dragon (Animated)"
+ desc = ""
+ icon_state = "Easterntail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "EasterntailColorTip"
+ ani_state = "Easterntail_w"
+ extra_overlay_w = "EasterntailColorTip_w"
+
+/datum/sprite_accessory/tail/synthtail_static
+ name = "Synthetic lizard tail"
+ desc = ""
+ icon_state = "synthtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/synthtail_vwag
+ name = "Synthetic lizard tail (vwag)"
+ desc = ""
+ icon_state = "synthtail"
+ ani_state = "synthtail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/Plugtail
+ name = "Synthetic plug tail"
+ desc = ""
+ icon_state = "Plugtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "PlugtailMarking"
+ extra_overlay2 = "PlugtailMarking2"
+
+/datum/sprite_accessory/tail/Segmentedtail
+ name = "Segmented tail, animated"
+ desc = ""
+ icon_state = "Segmentedtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "Segmentedtailmarking"
+ ani_state = "Segmentedtail_w"
+ extra_overlay_w = "Segmentedtailmarking_w"
+
+/datum/sprite_accessory/tail/Segmentedlights
+ name = "Segmented tail, animated synth"
+ desc = ""
+ icon_state = "Segmentedtail"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "Segmentedlights"
+ ani_state = "Segmentedtail_w"
+ extra_overlay_w = "Segmentedlights_w"
+
+/datum/sprite_accessory/tail/fox_tail
+ name = "Fox tail"
+ desc = ""
+ icon_state = "fox_tail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fox_tail_plain
+ name = "Fox tail"
+ desc = ""
+ icon_state = "fox_tail_plain_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/fennec_tail
+ name = "Fennec tail"
+ desc = ""
+ icon_state = "fennec_tail_s"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_smooth
+ name = "Lizard Tail (Smooth)"
+ desc = ""
+ icon_state = "lizard_tail_smooth"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_dark_tiger
+ name = "Lizard Tail (Dark Tiger)"
+ desc = ""
+ icon_state = "lizard_tail_dark_tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_light_tiger
+ name = "Lizard Tail (Light Tiger)"
+ desc = ""
+ icon_state = "lizard_tail_light_tiger"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/lizard_tail_spiked
+ name = "Lizard Tail (Spiked)"
+ desc = ""
+ icon_state = "lizard_tail_spiked"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/xenotail_fullcolour
+ name = "xenomorph tail (fully colourable)"
+ desc = ""
+ icon_state = "xenotail_fullcolour"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/xenotailalt_fullcolour
+ name = "xenomorph tail alt. (fully colourable)"
+ desc = ""
+ icon_state = "xenotailalt_fullcolour"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/tail/peacocktail_red //this is ckey locked for now, but prettiebyrd wants these tails to be unlocked at a later date
+ name = "Peacock tail (vwag)"
+ desc = ""
+ icon = "icons/mob/vore/tails_vr.dmi"
+ icon_state = "peacocktail_red"
+ ani_state = "peacocktail_red_w"
+ ckeys_allowed = list("prettiebyrd")
+
+/datum/sprite_accessory/tail/peacocktail //ditto
+ name = "Peacock tail, colorable (vwag)"
+ desc = ""
+ icon = "icons/mob/vore/tails_vr.dmi"
+ icon_state = "peacocktail"
+ ani_state = "peacocktail_w"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ ckeys_allowed = list("prettiebyrd")
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697:code/modules/mob/new_player/sprite_accessories_tail_vr.dm
diff --git a/code/modules/mob/new_player/sprite_accessories_taur.dm b/code/modules/mob/new_player/sprite_accessories_taur.dm
new file mode 100644
index 0000000000..748a6904b4
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_taur.dm
@@ -0,0 +1,349 @@
+/datum/riding/taur
+ keytype = /obj/item/weapon/material/twohanded/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("[M] stops riding [ridden]!")
+
+//Hoooo boy.
+/datum/riding/taur/get_offsets(pass_index) // list(dir = x, y, layer)
+ var/mob/living/L = ridden
+ var/scale_x = L.icon_scale_x
+ var/scale_y = L.icon_scale_y
+
+ var/list/values = list(
+ "[NORTH]" = list(0, 8*scale_y, ABOVE_MOB_LAYER),
+ "[SOUTH]" = list(0, 8*scale_y, BELOW_MOB_LAYER),
+ "[EAST]" = list(-10*scale_x, 8*scale_y, ABOVE_MOB_LAYER),
+ "[WEST]" = list(10*scale_x, 8*scale_y, 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,"This isn't a pony show! You need to be bigger for them to ride.")
+// 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,"Too many legs. TOO MANY LEGS!!")
+ 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("[M] starts riding [name]!")
+
+/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 = FALSE //whether we're real rideable taur or just in that category.
+
+ 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"
+
+/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"
+
+/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"
+
+/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"
+
+/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"
+
+/datum/sprite_accessory/tail/taur/tents
+ name = "Tentacles (Taur)"
+ icon_state = "tent_s"
+ icon_sprite_tag = "tentacle"
+ can_ride = 0
+
+/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"
+
+/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"
+
+/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"
+
+/datum/sprite_accessory/tail/taur/mermaid
+ name = "Mermaid (Taur)"
+ icon_state = "mermaid_s"
+ can_ride = 0
+ icon_sprite_tag = "mermaid"
+
+/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"
diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm
similarity index 88%
rename from code/modules/vore/appearance/sprite_accessories_taur_vr.dm
rename to code/modules/mob/new_player/sprite_accessories_taur_vr.dm
index e1879c627f..c9e451c625 100644
--- a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm
@@ -1,117 +1,3 @@
-/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("[M] stops riding [ridden]!")
-
-//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,"This isn't a pony show! You need to be bigger for them to ride.")
- 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))
- var/datum/sprite_accessory/tail/taur/ridertype = H.tail_style
- if(ridertype.can_ride)
- if(istype(ridertype, /datum/sprite_accessory/tail/taur/naga) || istype(ridertype, /datum/sprite_accessory/tail/taur/slug))
- to_chat(src,"Too few legs. TOO FEW LEGS!!")
- return FALSE
- to_chat(src,"Too many legs. TOO MANY LEGS!!")
- 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("[M] starts riding [name]!")
-
-/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
- . = ..()
-
/*
////////////////////////////
/ =--------------------= /
@@ -128,12 +14,7 @@
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
+ can_ride = TRUE //whether we're real rideable taur or just in that category
//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!
diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm
index 663b8b8c2d..daa4f33f05 100644
--- a/code/modules/mob/new_player/sprite_accessories_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_vr.dm
@@ -603,6 +603,7 @@
species_allowed = list(SPECIES_VULPKANIN)
gender = NEUTER
+<<<<<<< HEAD
//VOREStation Body Markings and Overrides
//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
@@ -1339,3 +1340,767 @@
icon_state = "unathilongfrills"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+//VOREStation Body Markings and Overrides
+//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
+
+/datum/sprite_accessory/marking //Override for base markings
+ color_blend_mode = ICON_ADD
+
+/datum/sprite_accessory/marking/vr
+ icon = 'icons/mob/human_races/markings_vr.dmi'
+
+ vulp_belly
+ name = "belly fur (Vulp)"
+ icon_state = "vulp_belly"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO,BP_GROIN)
+
+ vulp_fullbelly
+ name = "full belly fur (Vulp)"
+ icon_state = "vulp_fullbelly"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO,BP_GROIN)
+
+ vulp_crest
+ name = "belly crest (Vulp)"
+ icon_state = "vulp_crest"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO,BP_GROIN)
+
+ vulp_nose
+ name = "nose (Vulp)"
+ icon_state = "vulp_nose"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ vulp_short_nose
+ name = "nose, short (Vulp)"
+ icon_state = "vulp_short_nose"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ snoutstripe
+ name = "snout stripe (Vulp)"
+ icon_state = "snoutstripe"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ vulp_face
+ name = "face (Vulp)"
+ icon_state = "vulp_face"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ vulp_facealt
+ name = "face, alt. (Vulp)"
+ icon_state = "vulp_facealt"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ vulp_earsface
+ name = "ears and face (Vulp)"
+ icon_state = "vulp_earsface"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ vulp_all
+ name = "all head highlights (Vulp)"
+ icon_state = "vulp_all"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ 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")
+
+ 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")
+
+ monoeye
+ name = "Monoeye"
+ icon_state = "monoeye"
+ body_parts = list(BP_HEAD)
+
+ spidereyes
+ name = "Spider Eyes"
+ icon_state = "spidereyes"
+ body_parts = list(BP_HEAD)
+
+ sergaleyes
+ name = "Sergal Eyes"
+ icon_state = "eyes_sergal"
+ body_parts = list(BP_HEAD)
+
+ closedeyes
+ name = "Closed Eyes"
+ icon_state = "eyes_closed"
+ body_parts = list(BP_HEAD)
+
+ brows
+ name = "Eyebrows"
+ icon_state = "brows"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ nevrean_female
+ name = "Female Nevrean beak"
+ icon_state = "nevrean_f"
+ body_parts = list(BP_HEAD)
+ color_blend_mode = ICON_MULTIPLY
+ gender = FEMALE
+
+ nevrean_male
+ name = "Male Nevrean beak"
+ icon_state = "nevrean_m"
+ body_parts = list(BP_HEAD)
+ color_blend_mode = ICON_MULTIPLY
+ gender = MALE
+
+ 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)
+
+ shaggy_mane
+ name = "Shaggy mane/feathers"
+ icon_state = "shaggy"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO)
+
+ jagged_teeth
+ name = "Jagged teeth"
+ icon_state = "jagged"
+ body_parts = list(BP_HEAD)
+
+ blank_face
+ name = "Blank round face (use with monster mouth)"
+ icon_state = "blankface"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ monster_mouth
+ name = "Monster mouth"
+ icon_state = "monster"
+ body_parts = list(BP_HEAD)
+
+ saber_teeth
+ name = "Saber teeth"
+ icon_state = "saber"
+ body_parts = list(BP_HEAD)
+
+ fangs
+ name = "Fangs"
+ icon_state = "fangs"
+ body_parts = list(BP_HEAD)
+
+ tusks
+ name = "Tusks"
+ icon_state = "tusks"
+ body_parts = list(BP_HEAD)
+
+ otie_face
+ name = "Otie face"
+ icon_state = "otieface"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ otie_nose
+ name = "Otie nose"
+ icon_state = "otie_nose"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ otienose_lite
+ name = "Short otie nose"
+ icon_state = "otienose_lite"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ backstripes
+ name = "Back stripes"
+ icon_state = "otiestripes"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO,BP_HEAD)
+
+ belly_butt
+ name = "Belly and butt"
+ icon_state = "bellyandbutt"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_GROIN,BP_TORSO)
+
+ 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)
+
+ 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)
+
+ corvid_beak
+ name = "Corvid beak"
+ icon_state = "corvidbeak"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ corvid_belly
+ name = "Corvid belly"
+ icon_state = "corvidbelly"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_GROIN,BP_TORSO,BP_HEAD)
+
+ 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)
+
+ cow_nose
+ name = "Cow nose"
+ icon_state = "cownose"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ zmask
+ name = "Eye mask"
+ icon_state = "zmask"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ 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)
+
+ znose
+ name = "Jagged snout"
+ icon_state = "znose"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ otter_nose
+ name = "Otter nose"
+ icon_state = "otternose"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ otter_face
+ name = "Otter face"
+ icon_state = "otterface"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ deer_face
+ name = "Deer face"
+ icon_state = "deerface"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ sharkface
+ name = "Akula snout"
+ icon_state = "sharkface"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ sheppy_face
+ name = "Shepherd snout"
+ icon_state = "shepface"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ sheppy_back
+ name = "Shepherd back"
+ icon_state = "shepback"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO,BP_GROIN)
+
+ zorren_belly_male
+ name = "Zorren Male Torso"
+ icon_state = "zorren_belly"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO,BP_GROIN)
+
+ zorren_belly_female
+ name = "Zorren Female Torso"
+ icon_state = "zorren_belly_female"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO,BP_GROIN)
+
+ zorren_back_patch
+ name = "Zorren Back Patch"
+ icon_state = "zorren_backpatch"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO)
+
+ zorren_face_male
+ name = "Zorren Male Face"
+ icon_state = "zorren_face"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+ gender = MALE
+
+ zorren_face_female
+ name = "Zorren Female Face"
+ icon_state = "zorren_face_female"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+ gender = FEMALE
+
+ zorren_muzzle_male
+ name = "Zorren Male Muzzle"
+ icon_state = "zorren_muzzle"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+ gender = MALE
+
+ zorren_muzzle_female
+ name = "Zorren Female Muzzle"
+ icon_state = "zorren_muzzle_female"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+ gender = FEMALE
+
+ 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)
+
+ 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)
+
+ 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)
+
+ harpy_feathers
+ name = "Rapala leg Feather"
+ icon_state = "harpy-feathers"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG)
+
+ 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)
+
+ chooves
+ name = "Cloven hooves"
+ icon_state = "chooves"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_FOOT,BP_R_FOOT)
+
+ 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")
+
+ 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)
+
+ 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)
+
+ 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)
+
+ osocks_rarm
+ name = "Modular Longsock (right arm)"
+ icon_state = "osocks"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_R_ARM,BP_R_HAND)
+
+ osocks_larm
+ name = "Modular Longsock (left arm)"
+ icon_state = "osocks"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_ARM,BP_L_HAND)
+
+ osocks_rleg
+ name = "Modular Longsock (right leg)"
+ icon_state = "osocks"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_R_FOOT,BP_R_LEG)
+
+ osocks_lleg
+ name = "Modular Longsock (left leg)"
+ icon_state = "osocks"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_FOOT,BP_L_LEG)
+
+ animeeyesinner
+ name = "Anime Eyes Inner"
+ icon_state = "animeeyesinner"
+ body_parts = list(BP_HEAD)
+
+ animeeyesouter
+ name = "Anime Eyes Outer"
+ icon_state = "animeeyesouter"
+ body_parts = list(BP_HEAD)
+
+ panda_eye_marks
+ name = "Panda Eye Markings"
+ icon_state = "eyes_panda"
+ body_parts = list(BP_HEAD)
+ species_allowed = list("Human")
+
+ catwomantorso
+ name = "Catwoman chest stripes"
+ icon_state = "catwomanchest"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_TORSO)
+
+ catwomangroin
+ name = "Catwoman groin stripes"
+ icon_state = "catwomangroin"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_GROIN)
+
+ catwoman_rleg
+ name = "Catwoman right leg stripes"
+ icon_state = "catwomanright"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_R_LEG)
+
+ catwoman_lleg
+ name = "Catwoman left leg stripes"
+ icon_state = "catwomanleft"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG)
+
+ 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)
+
+ 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)
+
+ 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)
+
+ spirit_lights_head
+ name = "Ward - Spirit FBP Lights (head)"
+ icon_state = "lights"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ 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)
+
+ 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)
+
+ spirit_panels_head
+ name = "Ward - Spirit FBP Panels (head)"
+ icon_state = "panels"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ tentacle_head
+ name = "Squid Head"
+ icon_state = "tentaclehead"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ tentacle_mouth
+ name = "Tentacle Mouth"
+ icon_state = "tentaclemouth"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ 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)
+
+ taj_nose_alt
+ name = "Nose Color, alt. (Taj)"
+ icon_state = "taj_nosealt"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ 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)
+
+ claws
+ name = "Claws"
+ icon_state = "claws"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_HAND,BP_R_HAND)
+
+ 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)
+
+ equine_nose
+ name = "Equine Nose"
+ icon_state = "dnose"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ bee_stripes
+ name = "bee stripes"
+ icon_state = "beestripes"
+ body_parts = list(BP_TORSO,BP_GROIN)
+
+ vas_toes
+ name = "Bug Paws (Vasilissan)"
+ icon_state = "vas_toes"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_FOOT,BP_R_FOOT)
+
+ //CitRP stuff
+ vox_alt
+ name = "Vox Alternate"
+ icon_state = "bay_vox"
+ 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_TORSO,BP_GROIN,BP_HEAD)
+ species_allowed = list(SPECIES_VOX)
+
+ vox_alt_eyes
+ name = "Alternate Vox Eyes"
+ icon_state = "bay_vox_eyes"
+ body_parts = list(BP_HEAD)
+ species_allowed = list(SPECIES_VOX)
+
+ c_beast_body
+ name = "Cyber Body"
+ icon_state = "c_beast_body"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_GROIN)
+
+ c_beast_plating
+ name = "Cyber Plating (Use w/ Cyber Body)"
+ icon_state = "c_beast_plating"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM)
+
+ c_beast_band
+ name = "Cyber Band (Use w/ Cybertech head)"
+ icon_state = "c_beast_band"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ c_beast_cheek_a
+ name = "Cyber Beast Cheeks A (Use A, B and C)"
+ icon_state = "c_beast_a"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ c_beast_cheek_b
+ name = "Cyber Beast Cheeks B (Use A, B and C)"
+ icon_state = "c_beast_b"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ c_beast_cheek_c
+ name = "Cyber Beast Cheeks C (Use A, B and C)"
+ icon_state = "c_beast_c"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ teshari_large_eyes
+ name = "Teshari large eyes"
+ icon_state = "teshlarge_eyes"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+ species_allowed = list(SPECIES_TESHARI)
+
+ teshari_coat
+ name = "Teshari coat"
+ icon_state = "tesh_coat"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_HEAD)
+ species_allowed = list(SPECIES_TESHARI)
+
+ teshari_pattern_male
+ name = "Teshari male pattern"
+ icon_state = "tesh-pattern-male"
+ 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_GROIN,BP_HEAD)
+ species_allowed = list(SPECIES_TESHARI)
+
+ teshari_pattern_female
+ name = "Teshari female pattern"
+ icon_state = "tesh-pattern-fem"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD)
+ species_allowed = list(SPECIES_TESHARI)
+
+ voxscales
+ name = "Vox Scales"
+ icon_state = "Voxscales"
+ 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_HEAD)
+
+ voxclaws
+ name = "Vox Claws"
+ icon_state = "Voxclaws"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND)
+
+ voxbeak
+ name = "Vox Beak"
+ icon_state = "Voxscales"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ unathihood
+ name = "Cobra Hood"
+ icon_state = "unathihood"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ unathidoublehorns
+ name = "Double Unathi Horns"
+ icon_state = "unathidoublehorns"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ unathihorns
+ name = "Unathi Horns"
+ icon_state = "unathihorns"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ unathiramhorns
+ name = "Unathi Ram Horns"
+ icon_state = "unathiramhorns"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ unathishortspines
+ name = "Unathi Short Spines"
+ icon_state = "unathishortspines"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ unathilongspines
+ name = "Unathi Long Spines"
+ icon_state = "unathilongspines"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ unathishortfrills
+ name = "Unathi Short Frills"
+ icon_state = "unathishortfrills"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+
+ unathilongfrills
+ name = "Unathi Long Frills"
+ icon_state = "unathilongfrills"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
+=======
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Misc Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+
+// Yes, I have to add all of this just to make some glowy hair.
+// No, this isn't a character creation option, but... I guess in the future it could be, if anyone wants that?
+
+/datum/sprite_accessory/hair_accessory
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/hair_accessories_vr.dmi'
+ do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
+
+ var/ignores_lighting = 0 // Whether or not this hair accessory will ignore lighting and glow in the dark.
+ color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
+ var/desc = "You should not see this..."
+
+/datum/sprite_accessory/hair_accessory/verie_hair_glow
+ name = "verie's hair glow"
+ desc = ""
+ icon_state = "verie_hair_glow"
+ ignores_lighting = 1
+ //ckeys_allowed = list("vitoras") // This probably won't come into play EVER but better safe than sorry
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
diff --git a/code/modules/mob/new_player/sprite_accessories_wing.dm b/code/modules/mob/new_player/sprite_accessories_wing.dm
new file mode 100644
index 0000000000..486e81f4b1
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_wing.dm
@@ -0,0 +1,152 @@
+/*
+////////////////////////////
+/ =--------------------= /
+/ == 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/extra_overlay2 //Tertiary.
+ 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
+ var/extra_overlay2_w
+
+ species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+
+/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/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/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/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
diff --git a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
new file mode 100644
index 0000000000..7cc4dfc081
--- /dev/null
+++ b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
@@ -0,0 +1,227 @@
+/*
+////////////////////////////
+/ =--------------------= /
+/ == Wing Definitions == /
+/ =--------------------= /
+////////////////////////////
+*/
+/datum/sprite_accessory/wing
+ name = "You should not see this..."
+ icon = 'icons/mob/vore/wings_vr.dmi'
+ do_colouration = 0 //Set to 1 to enable coloration using the tail color.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) //This lets all races use
+ color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
+
+/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/harpywings_alt
+ name = "harpy wings alt, archeopteryx"
+ desc = ""
+ icon_state = "harpywings_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_altmarkings"
+
+/datum/sprite_accessory/wing/harpywings_alt_neckfur
+ name = "harpy wings alt, archeopteryx & neckfur"
+ desc = ""
+ icon_state = "harpywings_alt"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_altmarkings"
+ extra_overlay2 = "neckfur"
+
+/datum/sprite_accessory/wing/harpywings_bat
+ name = "harpy wings, bat"
+ desc = ""
+ icon_state = "harpywings_bat"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_batmarkings"
+
+/datum/sprite_accessory/wing/harpywings_bat_neckfur
+ name = "harpy wings, bat & neckfur"
+ desc = ""
+ icon_state = "harpywings_bat"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "harpywings_batmarkings"
+ extra_overlay2 = "neckfur"
+
+/datum/sprite_accessory/wing/neckfur
+ name = "neck fur"
+ desc = ""
+ icon_state = "neckfur"
+ 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
+
+/datum/sprite_accessory/wing/drago_wing
+ name = "Cybernetic Dragon wings"
+ desc = ""
+ icon_state = "drago_wing"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "drago_wing_2"
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index 02c939bd19..ce8e1f6f8a 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -82,7 +82,7 @@
return 0
else if(ismob(src)) //VOREStation Edit Start. Are they a mob, and are they currently flying??
- var/mob/H = src
+ var/mob/living/H = src
if(H.flying)
if(H.incapacitated(INCAPACITATION_ALL))
to_chat(src, "You can't fly in your current state.")
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 00fd0d98a8..246cb23d04 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -30,6 +30,7 @@
// Appearance vars.
var/nonsolid // Snowflake warning, reee. Used for slime limbs.
+ var/transparent // As above, so below. Used for transparent limbs.
var/icon_name = null // Icon state base.
var/body_part = null // Part flag
var/icon_position = 0 // Used in mob overlay layering calculations.
@@ -1399,4 +1400,8 @@ Note that amputating the affected organ does in fact remove the infection from t
for(var/obj/item/organ/external/L in organs)
for(var/obj/item/I in L.implants)
if(!istype(I,/obj/item/weapon/implant) && !istype(I,/obj/item/device/nif)) //VOREStation Add - NIFs
- return 1
\ No newline at end of file
+ return 1
+
+/obj/item/organ/external/proc/is_hidden_by_tail()
+ if(owner && owner.tail_style && owner.tail_style.hide_body_parts && (organ_tag in owner.tail_style.hide_body_parts))
+ return 1
diff --git a/code/modules/organs/organ_external_vr.dm b/code/modules/organs/organ_external_vr.dm
index 1742259864..0e3fb07d9e 100644
--- a/code/modules/organs/organ_external_vr.dm
+++ b/code/modules/organs/organ_external_vr.dm
@@ -1,6 +1,3 @@
-/obj/item/organ/external
- var/transparent = 0 //For better slime limbs
-
//Sideways override for nanoform limbs (ugh)
/obj/item/organ/external/robotize(var/company, var/skip_prosthetics = FALSE, var/keep_organs = FALSE)
var/original_robotic = robotic
@@ -16,7 +13,3 @@
min_broken_damage = o_min_broken_damage
else
return ..()
-
-/obj/item/organ/external/proc/is_hidden_by_tail()
- if(owner && owner.tail_style && owner.tail_style.hide_body_parts && (organ_tag in owner.tail_style.hide_body_parts))
- return 1
\ No newline at end of file
diff --git a/code/modules/organs/robolimbs_custom.dm b/code/modules/organs/robolimbs_custom.dm
new file mode 100644
index 0000000000..15df0c98c8
--- /dev/null
+++ b/code/modules/organs/robolimbs_custom.dm
@@ -0,0 +1,175 @@
+/datum/robolimb
+ var/includes_tail //Cyberlimbs dmi includes a tail sprite to wear.
+ var/includes_wing //Cyberlimbs dmi includes a wing sprite to wear.
+ var/list/whitelisted_to //List of ckeys that are allowed to pick this in charsetup.
+
+//////////////// For-specific-character fluff ones ///////////////// May be viable to place these into a custom_item subfolder, in order to allow CI Repo integration.
+
+// verkister : Rahwoof Boop
+/datum/robolimb/eggnerdltd
+ company = "Eggnerd Prototyping Ltd."
+ desc = "This limb has a slight salvaged handicraft vibe to it. The CE-marking on it is definitely not the standardized one, it looks more like a hand-written sharpie monogram."
+ icon = 'icons/mob/human_races/cyberlimbs/_fluff_vr/rahboop.dmi'
+ blood_color = "#5e280d"
+ includes_tail = 1
+ unavailable_to_build = 1
+
+/obj/item/weapon/disk/limb/eggnerdltd
+ company = "Eggnerd Prototyping Ltd."
+// icon = 'icons/obj/items_vr.dmi'
+// icon_state = "verkdisk"
+
+//////////////// General VS-only ones /////////////////
+/datum/robolimb/talon //They're buildable by default due to being extremely basic.
+ company = "Talon LLC"
+ desc = "This metallic limb is sleek and featuresless apart from some exposed motors"
+ icon = 'icons/mob/human_races/cyberlimbs/talon/talon_main.dmi' //Sprited by: Viveret
+
+/obj/item/weapon/disk/limb/talon
+ company = "Talon LLC"
+
+/datum/robolimb/zenghu_taj //This wasn't indented. At all. It's a miracle this didn't break literally everything.
+ company = "Zeng-Hu - Tajaran"
+ desc = "This limb has a rubbery fleshtone covering with visible seams."
+ icon = 'icons/mob/human_races/cyberlimbs/zenghu/zenghu_taj.dmi'
+ unavailable_to_build = 1
+ parts = list(BP_HEAD)
+
+/datum/robolimb/eggnerdltdred
+ company = "Eggnerd Prototyping Ltd. (Red)"
+ desc = "A slightly more refined limb variant from Eggnerd Prototyping. Its got red plating instead of orange."
+ icon = 'icons/mob/human_races/cyberlimbs/rahboopred/rahboopred.dmi'
+ blood_color = "#5e280d"
+ includes_tail = 1
+ unavailable_to_build = 1
+
+/obj/item/weapon/disk/limb/eggnerdltdred
+ company = "Eggnerd Prototyping Ltd. (Red)"
+// icon = 'icons/obj/items_vr.dmi'
+// icon_state = "verkdisk"
+
+
+//Darkside Incorperated synthetic augmentation list! Many current most used fuzzy and notsofuzzy races made into synths here.
+
+/datum/robolimb/dsi_tajaran
+ company = "DSI - Tajaran"
+ desc = "This limb feels soft and fluffy, realistic design and squish. By Darkside Incorperated."
+ icon = 'icons/mob/human_races/cyberlimbs/DSITajaran/dsi_tajaran.dmi'
+ blood_color = "#ffe2ff"
+ lifelike = 1
+ unavailable_to_build = 1
+ includes_tail = 1
+ skin_tone = 1
+ suggested_species = "Tajara"
+
+/datum/robolimb/dsi_tajaran/New()
+ species_cannot_use = GLOB.all_species.Copy()
+// species_cannot_use -= SPECIES_TAJ
+
+/obj/item/weapon/disk/limb/dsi_tajaran
+ company = "DSI - Tajaran"
+
+/datum/robolimb/dsi_lizard
+ company = "DSI - Lizard"
+ desc = "This limb feels smooth and scalie, realistic design and squish. By Darkside Incorperated."
+ icon = 'icons/mob/human_races/cyberlimbs/DSILizard/dsi_lizard.dmi'
+ blood_color = "#ffe2ff"
+ lifelike = 1
+ unavailable_to_build = 1
+ includes_tail = 1
+ skin_tone = 1
+ suggested_species = "Unathi"
+
+/datum/robolimb/dsi_lizard/New()
+ species_cannot_use = GLOB.all_species.Copy()
+// species_cannot_use -= SPECIES_UNATHI
+
+/obj/item/weapon/disk/limb/dsi_lizard
+ company = "DSI - Lizard"
+/*
+/datum/robolimb/dsi_sergal
+ company = "DSI - Sergal"
+ desc = "This limb feels soft and fluffy, realistic design and toned muscle. By Darkside Incorperated."
+ icon = 'icons/mob/human_races/cyberlimbs/DSISergal/dsi_sergal.dmi'
+ blood_color = "#ffe2ff"
+ lifelike = 1
+ unavailable_to_build = 1
+ includes_tail = 1
+ skin_tone = 1
+ suggested_species = "Sergal"
+
+/obj/item/weapon/disk/limb/dsi_sergal
+ company = "DSI - Sergal"
+
+/datum/robolimb/dsi_nevrean
+ company = "DSI - Nevrean"
+ desc = "This limb feels soft and feathery, lightweight, realistic design and squish. By Darkside Incorperated."
+ icon = 'icons/mob/human_races/cyberlimbs/DSINevrean/dsi_nevrean.dmi'
+ blood_color = "#ffe2ff"
+ lifelike = 1
+ unavailable_to_build = 1
+ includes_tail = 1
+ skin_tone = 1
+ suggested_species = "Nevrean"
+
+/obj/item/weapon/disk/limb/dsi_nevrean
+ company = "DSI - Nevrean"
+
+/datum/robolimb/dsi_vulpkanin
+ company = "DSI - Vulpkanin"
+ desc = "This limb feels soft and fluffy, realistic design and squish. Seems a little mischievous. By Darkside Incorperated."
+ icon = 'icons/mob/human_races/cyberlimbs/DSIVulpkanin/dsi_vulpkanin.dmi'
+ blood_color = "#ffe2ff"
+ lifelike = 1
+ unavailable_to_build = 1
+ includes_tail = 1
+ skin_tone = 1
+ suggested_species = "Vulpkanin"
+
+/obj/item/weapon/disk/limb/dsi_vulpkanin
+ company = "DSI - Vulpkanin"
+
+/datum/robolimb/dsi_akula
+ company = "DSI - Akula"
+ desc = "This limb feels soft and fleshy, realistic design and squish. Seems a little mischievous. By Darkside Incorperated."
+ icon = 'icons/mob/human_races/cyberlimbs/DSIAkula/dsi_akula.dmi'
+ blood_color = "#ffe2ff"
+ lifelike = 1
+ unavailable_to_build = 1
+ includes_tail = 1
+ skin_tone = 1
+ suggested_species = "Akula"
+
+/obj/item/weapon/disk/limb/dsi_akula
+ company = "DSI - Akula"
+
+/datum/robolimb/dsi_spider
+ company = "DSI - Vasilissan"
+ desc = "This limb feels hard and chitinous, realistic design. Seems a little mischievous. By Darkside Incorperated."
+ icon = 'icons/mob/human_races/cyberlimbs/DSISpider/dsi_spider.dmi'
+ blood_color = "#ffe2ff"
+ lifelike = 1
+ unavailable_to_build = 1
+ includes_tail = 1
+ skin_tone = 1
+ suggested_species = "Vasilissan"
+
+/obj/item/weapon/disk/limb/dsi_spider
+ company = "DSI - Vasilissan"
+*/
+/datum/robolimb/dsi_teshari
+ company = "DSI - Teshari"
+ desc = "This limb has a thin synthflesh casing with a few connection ports."
+ icon = 'icons/mob/human_races/cyberlimbs/DSITeshari/dsi_teshari.dmi'
+ lifelike = 1
+ skin_tone = 1
+ suggested_species = "Teshari"
+
+/datum/robolimb/dsi_teshari/New()
+ species_cannot_use = GLOB.all_species.Copy()
+// species_cannot_use -= SPECIES_TESHARI
+// species_cannot_use -= SPECIES_CUSTOM
+ ..()
+
+/obj/item/weapon/disk/limb/dsi_teshari
+ company = "DSI - Teshari"
diff --git a/code/modules/organs/robolimbs_vr.dm b/code/modules/organs/robolimbs_vr.dm
index 44953be646..b5ba994214 100644
--- a/code/modules/organs/robolimbs_vr.dm
+++ b/code/modules/organs/robolimbs_vr.dm
@@ -1,8 +1,3 @@
-/datum/robolimb
- var/includes_tail //Cyberlimbs dmi includes a tail sprite to wear.
- var/includes_wing //Cyberlimbs dmi includes a wing sprite to wear.
- var/list/whitelisted_to //List of ckeys that are allowed to pick this in charsetup.
-
//CitRP Port
var/const/cyberbeast_monitor_styles = "blank=cyber_blank;\
default=cyber_default;\
diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm
index 1c4fb5ee27..79eb04f255 100644
--- a/code/modules/organs/subtypes/standard.dm
+++ b/code/modules/organs/subtypes/standard.dm
@@ -266,6 +266,8 @@
encased = "skull"
base_miss_chance = 40
var/can_intake_reagents = 1
+ var/eye_icons = 'icons/mob/human_face_alt.dmi'
+ var/head_offset = 0
var/eye_icon = "eyes_s"
force = 3
throwforce = 7
@@ -324,6 +326,54 @@
"You make \the [I] kiss \the [src]!.")
return ..()
+/obj/item/organ/external/head/get_icon()
+ ..()
+ overlays.Cut()
+ if(!owner || !owner.species)
+ return
+
+ for(var/M in markings)
+ var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
+ var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
+ mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode)
+ overlays |= mark_s //So when it's not on your body, it has icons
+ mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
+ icon_cache_key += "[M][markings[M]["color"]]"
+
+ if(owner.should_have_organ(O_EYES))//Moved on top of markings.
+ var/obj/item/organ/internal/eyes/eyes = owner.internal_organs_by_name[O_EYES]
+ if(eye_icon)
+ var/icon/eyes_icon = new/icon(eye_icons, eye_icon)
+ if(eyes)
+ if(owner.species.appearance_flags & HAS_EYE_COLOR)
+ eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD)
+ else
+ eyes_icon.Blend(rgb(128,0,0), ICON_ADD)
+ mob_icon.Blend(eyes_icon, ICON_OVERLAY)
+ overlays |= eyes_icon
+
+ if(owner.lip_style && (species && (species.appearance_flags & HAS_LIPS)))
+ var/icon/lip_icon = new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s")
+ overlays |= lip_icon
+ mob_icon.Blend(lip_icon, ICON_OVERLAY)
+
+ if(owner.f_style)
+ var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[owner.f_style]
+ if(facial_hair_style && facial_hair_style.species_allowed && (species.get_bodytype(owner) 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(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD)
+ overlays |= image(facial_s, "pixel_y" = head_offset)
+
+ if(owner.h_style && !(owner.head && (owner.head.flags_inv & BLOCKHEADHAIR)))
+ var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style]
+ if(hair_style && (species.get_bodytype(owner) in hair_style.species_allowed))
+ var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
+ if(hair_style.do_colouration && islist(h_col) && h_col.len >= 3)
+ hair_s.Blend(rgb(h_col[1], h_col[2], h_col[3]), ICON_MULTIPLY)
+ overlays |= image(hair_s, "pixel_y" = head_offset)
+ return mob_icon
+
/obj/item/organ/external/head/skrell
eye_icon = "skrell_eyes_s"
diff --git a/code/modules/organs/subtypes/standard_vr.dm b/code/modules/organs/subtypes/standard_vr.dm
index bf429cb878..754f7d4bf8 100644
--- a/code/modules/organs/subtypes/standard_vr.dm
+++ b/code/modules/organs/subtypes/standard_vr.dm
@@ -1,58 +1,8 @@
//For custom heads with custom parts since the base code is restricted to a single icon file.
-/obj/item/organ/external/head/vr/get_icon()
-
- ..()
- overlays.Cut()
- if(!owner || !owner.species)
- return
-
- for(var/M in markings)
- var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
- var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
- mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode)
- overlays |= mark_s //So when it's not on your body, it has icons
- mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
- icon_cache_key += "[M][markings[M]["color"]]"
-
- if(owner.should_have_organ(O_EYES))//Moved on top of markings.
- var/obj/item/organ/internal/eyes/eyes = owner.internal_organs_by_name[O_EYES]
- if(eye_icon)
- var/icon/eyes_icon = new/icon(eye_icons_vr, eye_icon_vr)
- if(eyes)
- if(owner.species.appearance_flags & HAS_EYE_COLOR)
- eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD)
- else
- eyes_icon.Blend(rgb(128,0,0), ICON_ADD)
- mob_icon.Blend(eyes_icon, ICON_OVERLAY)
- overlays |= eyes_icon
-
- if(owner.lip_style && (species && (species.appearance_flags & HAS_LIPS)))
- var/icon/lip_icon = new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s")
- overlays |= lip_icon
- mob_icon.Blend(lip_icon, ICON_OVERLAY)
-
- if(owner.f_style)
- var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[owner.f_style]
- if(facial_hair_style && facial_hair_style.species_allowed && (species.get_bodytype(owner) 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(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD)
- overlays |= image(facial_s, "pixel_y" = head_offset)
-
- if(owner.h_style && !(owner.head && (owner.head.flags_inv & BLOCKHEADHAIR)))
- var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style]
- if(hair_style && (species.get_bodytype(owner) in hair_style.species_allowed))
- var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
- if(hair_style.do_colouration && islist(h_col) && h_col.len >= 3)
- hair_s.Blend(rgb(h_col[1], h_col[2], h_col[3]), ICON_MULTIPLY)
- overlays |= image(hair_s, "pixel_y" = head_offset)
- return mob_icon
-
/obj/item/organ/external/head/vr
var/eye_icons_vr = 'icons/mob/human_face_vr.dmi'
var/eye_icon_vr = "blank_eyes"
- var/head_offset = 0
eye_icon = "blank_eyes"
/obj/item/organ/external/head/vr/sergal
diff --git a/code/modules/resleeving/designer.dm b/code/modules/resleeving/designer.dm
index 6f8c1e0c9d..8e4578fd25 100644
--- a/code/modules/resleeving/designer.dm
+++ b/code/modules/resleeving/designer.dm
@@ -385,9 +385,6 @@
ASSERT(istype(B))
var/datum/category_item/player_setup_item/general/basic/G = CG.items_by_name["Basic"]
ASSERT(istype(G))
- CG = CC.categories_by_name["VORE"]
- var/datum/category_item/player_setup_item/vore/ears/E = CG.items_by_name["Appearance"]
- ASSERT(istype(E))
if(params["target_href"] == "bio_gender")
var/new_gender = input(user, "Choose your character's biological gender:", "Character Preference", active_br.bodygender) as null|anything in G.get_genders()
@@ -408,12 +405,6 @@
active_br.mydna.dna.ResetUIFrom(mannequin)
update_preview_icon()
return 1
- action = E.OnTopic(list2params(href_list), href_list, user)
- if(action & TOPIC_UPDATE_PREVIEW && mannequin && active_br)
- E.copy_to_mob(mannequin)
- active_br.mydna.dna.ResetUIFrom(mannequin)
- update_preview_icon()
- return 1
// Fake subtype of preferences we can use to steal code from player_setup
/datum/preferences/designer/New()
diff --git a/code/modules/vore/appearance/preferences_vr.dm b/code/modules/vore/appearance/preferences_vr.dm
index 5897cb2a48..01caeda13d 100644
--- a/code/modules/vore/appearance/preferences_vr.dm
+++ b/code/modules/vore/appearance/preferences_vr.dm
@@ -20,36 +20,3 @@
var/r_acc3 = 30
var/g_acc3 = 30
var/b_acc3 = 30
- 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/r_ears3 = 30 //Trust me, we could always use more colour. No japes.
- var/g_ears3 = 30
- var/b_ears3 = 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/r_tail3 = 30
- var/g_tail3 = 30
- var/b_tail3 = 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/r_wing3 = 30
- var/g_wing3 = 30
- var/b_wing3 = 30
-
- // Custom Species Name
- var/custom_species
diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm
deleted file mode 100644
index bcb0a09f6e..0000000000
--- a/code/modules/vore/appearance/sprite_accessories_vr.dm
+++ /dev/null
@@ -1,2106 +0,0 @@
-/*
- Hello and welcome to VOREStation sprite_accessories: For a more general overview
- please read sprite_accessories.dm. This file is for ears and tails.
- This is intended to be friendly for people with little to no actual coding experience.
- !!WARNING!!: changing existing accessory information can be VERY hazardous to savefiles,
- to the point where you may completely corrupt a server's savefiles. Please refrain
- from doing this unless you absolutely know what you are doing, and have defined a
- conversion in savefile.dm
-*/
-
-// Add Additional variable onto sprite_accessory
-/datum/sprite_accessory
- // Ckey of person allowed to use this, if defined.
- list/ckeys_allowed = null
- apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings
-
-/*
-////////////////////////////
-/ =--------------------= /
-/ == Ear Definitions == /
-/ =--------------------= /
-////////////////////////////
-*/
-/datum/sprite_accessory/ears
- name = "You should not see this..."
- icon = 'icons/mob/vore/ears_vr.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/extra_overlay2
- var/desc = "You should not see this..."
-
-// Species-unique ears
-
-/datum/sprite_accessory/ears/shadekin
- name = "Shadekin Ears, colorable"
- desc = ""
- icon_state = "shadekin"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-// Ears avaliable to anyone
-
-/datum/sprite_accessory/ears/alt_ram_horns
- name = "Solid ram horns"
- desc = ""
- icon_state = "ram_horns_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/hyena
- name = "hyena ears, dual-color"
- desc = ""
- icon_state = "hyena"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "hyena-inner"
-
-/datum/sprite_accessory/ears/moth
- name = "moth antennae"
- desc = ""
- icon_state = "moth"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/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
-
-/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)"
- desc = ""
- icon_state = "teshari"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "teshariinner"
-
-/datum/sprite_accessory/ears/tesharihigh
- name = "Teshari upper ears (colorable)"
- desc = ""
- icon_state = "tesharihigh"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "tesharihighinner"
-
-/datum/sprite_accessory/ears/tesharilow
- name = "Teshari lower ears (colorable)"
- desc = ""
- icon_state = "tesharilow"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "tesharilowinner"
-
-/datum/sprite_accessory/ears/tesh_pattern_ear_male
- name = "Teshari male ear pattern (colorable)"
- desc = ""
- icon_state = "teshari"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "teshari_male_pattern"
-
-/datum/sprite_accessory/ears/tesh_pattern_ear_female
- name = "Teshari female ear pattern (colorable)"
- desc = ""
- icon_state = "teshari"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "teshari_female_pattern"
-
-/datum/sprite_accessory/ears/inkling
- name = "colorable mature inkling hair"
- desc = ""
- icon = 'icons/mob/human_face_vr.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"
-
-/datum/sprite_accessory/ears/lilimoth_antennae
- name = "citheronia antennae (Kira72)"
- desc = ""
- icon_state = "lilimoth_antennae"
-
-/datum/sprite_accessory/ears/molenar_deathclaw
- name = "deathclaw ears (Molenar)"
- desc = ""
- icon_state = "molenar-deathclaw"
-
-/datum/sprite_accessory/ears/miria_fluffdragon
- name = "fluffdragon ears (Miria Masters)"
- desc = ""
- icon_state = "miria-fluffdragonears"
-
-/datum/sprite_accessory/ears/miria_kitsune
- name = "kitsune ears (Miria Masters)"
- desc = ""
- icon_state = "miria-kitsuneears"
-
-/datum/sprite_accessory/ears/runac
- name = "fennecsune ears (Runac)"
- desc = ""
- icon_state = "runac"
-
-/datum/sprite_accessory/ears/kerena
- name = "wingwolf ears (Kerena)"
- desc = ""
- icon_state = "kerena"
-
-/datum/sprite_accessory/ears/rosey
- name = "tritail kitsune ears (Rosey)"
- desc = ""
- icon_state = "rosey"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/aronai
- name = "aronai ears/head (Aronai)"
- desc = ""
- icon_state = "aronai"
-
-/datum/sprite_accessory/ears/holly
- name = "tigress ears (Holly Sharp)"
- desc = ""
- icon_state = "tigressears"
-
-/datum/sprite_accessory/ears/molenar_inkling
- name = "teal mature inkling hair (Kari Akiren)"
- desc = ""
- icon_state = "molenar-tentacle"
-
-/datum/sprite_accessory/ears/shock
- name = "pharoah hound ears (Shock Diamond)"
- desc = ""
- icon_state = "shock"
-
-/datum/sprite_accessory/ears/alurane
- name = "alurane ears/hair (Pumila)"
- desc = ""
- icon_state = "alurane-ears"
-
-/datum/sprite_accessory/ears/frost
- name = "Frost antenna"
- desc = ""
- icon_state = "frosted_tips"
-
-/datum/sprite_accessory/ears/sylv_pip
- name = "sylveon ears and ribbons (Pip Shyner)"
- desc = ""
- icon_state = "pipears"
-
-/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"
-
-/datum/sprite_accessory/ears/synthhorns_plain
- name = "Synth horns, plain"
- desc = ""
- icon_state = "synthhorns_plain"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "synthhorns_plain_light"
-
-/datum/sprite_accessory/ears/synthhorns_thick
- name = "Synth horns, thick"
- desc = ""
- icon_state = "synthhorns_thick"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "synthhorns_thick_light"
-
-/datum/sprite_accessory/ears/synthhorns_curly
- name = "Synth horns, curly"
- desc = ""
- icon_state = "synthhorns_curled"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/forward_curled_demon_horns_bony
- name = "Succubus horns, colourable"
- desc = ""
- icon_state = "succu-horns_b"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/forward_curled_demon_horns_bony_with_colorable_ears
- name = "Succubus horns with pointy ears, colourable"
- desc = ""
- icon_state = "elfs"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "succu-horns_b"
-
-/datum/sprite_accessory/ears/chorns_nubbydogs
- name = "Nubby Chorns"
- desc = ""
- icon_state = "chorn_nubby"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_herk
- name = "Herk Chorns"
- desc = ""
- icon_state = "chorn_herk"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_bork
- name = "Bork Chorns"
- desc = ""
- icon_state = "chorn_bork"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_bull
- name = "Bull Chorns"
- desc = ""
- icon_state = "chorn_bull"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_bicarrot
- name = "Bicarrot Chorns"
- desc = ""
- icon_state = "chorn_bicarrot"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_longcarrot
- name = "Long Carrot Chorns"
- desc = ""
- icon_state = "chorn_longcarrot"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_shortcarrot
- name = "Short Carrot Chorns"
- desc = ""
- icon_state = "chorn_shortcarrot"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_scorp
- name = "Scorp Chorns"
- desc = ""
- icon_state = "chorn_scorp"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_ocean
- name = "Ocean Chorns"
- desc = ""
- icon_state = "chorn_ocean"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/ears/chorns_chub
- name = "Chub Chorns"
- desc = ""
- icon_state = "chorn_chub"
- do_colouration = 0
- color_blend_mode = ICON_MULTIPLY
-
-
-
-
-/*
-////////////////////////////
-/ =--------------------= /
-/ == Wing Definitions == /
-/ =--------------------= /
-////////////////////////////
-*/
-/datum/sprite_accessory/wing
- name = "You should not see this..."
- icon = 'icons/mob/vore/wings_vr.dmi'
- do_colouration = 0 //Set to 1 to enable coloration using the tail color.
-
- color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
- var/extra_overlay // Icon state of an additional overlay to blend in.
- var/extra_overlay2 //Tertiary.
- 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
- var/extra_overlay2_w
-
-/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"
-
-/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"
-
-/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/harpywings_alt
- name = "harpy wings alt, archeopteryx"
- desc = ""
- icon_state = "harpywings_alt"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "harpywings_altmarkings"
-
-/datum/sprite_accessory/wing/harpywings_alt_neckfur
- name = "harpy wings alt, archeopteryx & neckfur"
- desc = ""
- icon_state = "harpywings_alt"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "harpywings_altmarkings"
- extra_overlay2 = "neckfur"
-
-/datum/sprite_accessory/wing/harpywings_bat
- name = "harpy wings, bat"
- desc = ""
- icon_state = "harpywings_bat"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "harpywings_batmarkings"
-
-/datum/sprite_accessory/wing/harpywings_bat_neckfur
- name = "harpy wings, bat & neckfur"
- desc = ""
- icon_state = "harpywings_bat"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "harpywings_batmarkings"
- extra_overlay2 = "neckfur"
-
-/datum/sprite_accessory/wing/neckfur
- name = "neck fur"
- desc = ""
- icon_state = "neckfur"
- 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"
-
-/datum/sprite_accessory/wing/miria_fluffdragon
- name = "fluffdragon wings (Miria Masters)"
- desc = ""
- icon_state = "miria-fluffdragontail"
-
-/datum/sprite_accessory/wing/scree
- name = "green taj wings (Scree)"
- desc = ""
- icon_state = "scree-wings"
-
-/datum/sprite_accessory/wing/liquidfirefly_gazer //I g-guess this could be considered wings?
- name = "gazer eyestalks"
- desc = ""
- icon_state = "liquidfirefly-eyestalks"
-
-/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"
-
-/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
-
-/datum/sprite_accessory/wing/drago_wing
- name = "Cybernetic Dragon wings"
- desc = ""
- icon_state = "drago_wing"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "drago_wing_2"
-
-/*
-////////////////////////////
-/ =--------------------= /
-/ == Tail Definitions == /
-/ =--------------------= /
-////////////////////////////
-*/
-/datum/sprite_accessory/tail
- name = "You should not see this..."
- icon = 'icons/mob/vore/tails_vr.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/extra_overlay2 //Tertiary.
- var/show_species_tail = 0 // If false, do not render species' tail.
- var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it
- var/desc = "You should not see this..."
- var/ani_state // State when wagging/animated
- var/extra_overlay_w // Wagging state for extra overlay
- var/extra_overlay2_w // Tertiary wagging.
- var/list/hide_body_parts = list() //Uses organ tag defines. Bodyparts in this list do not have their icons rendered, allowing for more spriter freedom when doing taur/digitigrade stuff.
- var/icon/clip_mask_icon = null //Icon file used for clip mask.
- var/clip_mask_state = null //Icon state to generate clip mask. Clip mask is used to 'clip' off the lower part of clothing such as jumpsuits & full suits.
- var/icon/clip_mask = null //Instantiated clip mask of given icon and state
-
-/datum/sprite_accessory/tail/New()
- . = ..()
- if(clip_mask_icon && clip_mask_state)
- clip_mask = icon(icon = clip_mask_icon, icon_state = clip_mask_state)
-
-// Species-unique tails
-
-// Everyone tails
-
-/datum/sprite_accessory/tail/invisible
- name = "hide species-sprite tail"
- icon = null
- icon_state = null
-
-/datum/sprite_accessory/tail/squirrel_orange
- name = "squirel, orange"
- desc = ""
- icon_state = "squirrel-orange"
-
-/datum/sprite_accessory/tail/squirrel_red
- name = "squirrel, red"
- desc = ""
- icon_state = "squirrel-red"
-
-/datum/sprite_accessory/tail/squirrel
- name = "squirrel, colorable"
- desc = ""
- icon_state = "squirrel"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/kitty
- name = "kitty, colorable, downwards"
- desc = ""
- icon_state = "kittydown"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/kittyup
- name = "kitty, colorable, upwards"
- desc = ""
- icon_state = "kittyup"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/tiger_white
- name = "tiger, colorable"
- desc = ""
- icon_state = "tiger"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "tigerinnerwhite"
-
-/datum/sprite_accessory/tail/stripey
- name = "stripey taj, colorable"
- desc = ""
- icon_state = "stripeytail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "stripeytail_mark"
-
-/datum/sprite_accessory/tail/stripeytail_brown
- name = "stripey taj, brown"
- desc = ""
- icon_state = "stripeytail-brown"
-
-/datum/sprite_accessory/tail/chameleon
- name = "Chameleon, colorable"
- desc = ""
- icon_state = "chameleon"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/bunny
- name = "bunny, colorable"
- desc = ""
- icon_state = "bunny"
- do_colouration = 1
-
-/datum/sprite_accessory/tail/bear_brown
- name = "bear, brown"
- desc = ""
- icon_state = "bear-brown"
-
-/datum/sprite_accessory/tail/bear
- name = "bear, colorable"
- desc = ""
- icon_state = "bear"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/dragon
- name = "dragon, colorable"
- desc = ""
- icon_state = "dragon"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/wolf_grey
- name = "wolf, grey"
- desc = ""
- icon_state = "wolf-grey"
-
-/datum/sprite_accessory/tail/wolf_green
- name = "wolf, green"
- desc = ""
- icon_state = "wolf-green"
-
-/datum/sprite_accessory/tail/wisewolf
- name = "wolf, wise"
- desc = ""
- icon_state = "wolf-wise"
-
-/datum/sprite_accessory/tail/blackwolf
- name = "wolf, black"
- desc = ""
- icon_state = "wolf"
-
-/datum/sprite_accessory/tail/wolf
- name = "wolf, colorable"
- desc = ""
- icon_state = "wolf"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "wolfinner"
-
-/datum/sprite_accessory/tail/mouse_pink
- name = "mouse, pink"
- desc = ""
- icon_state = "mouse-pink"
-
-/datum/sprite_accessory/tail/mouse
- name = "mouse, colorable"
- desc = ""
- icon_state = "mouse"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/horse
- name = "horse tail, colorable"
- desc = ""
- icon_state = "horse"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/cow
- name = "cow tail, colorable"
- desc = ""
- icon_state = "cow"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/fantail
- name = "avian fantail, colorable"
- desc = ""
- icon_state = "fantail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/wagtail
- name = "avian wagtail, colorable"
- desc = ""
- icon_state = "wagtail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/nevreandc
- name = "nevrean tail, dual-color"
- desc = ""
- icon_state = "nevreantail_dc"
- extra_overlay = "nevreantail_dc_tail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/nevreanwagdc
- name = "nevrean wagtail, dual-color"
- desc = ""
- icon_state = "wagtail"
- extra_overlay = "wagtail_dc_tail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/nevreanwagdc_alt
- name = "nevrean wagtail, marked, dual-color"
- desc = ""
- icon_state = "wagtail2_dc"
- extra_overlay = "wagtail2_dc_mark"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/crossfox
- name = "cross fox"
- desc = ""
- icon_state = "crossfox"
-
-/datum/sprite_accessory/tail/beethorax
- name = "bee thorax"
- desc = ""
- icon_state = "beethorax"
-
-/datum/sprite_accessory/tail/doublekitsune
- name = "double kitsune tail, colorable"
- desc = ""
- icon_state = "doublekitsune"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/spade_color
- name = "spade-tail (colorable)"
- desc = ""
- icon_state = "spadetail-black"
- do_colouration = 1
-
-/datum/sprite_accessory/tail/snag
- name = "xenomorph tail 1"
- desc = ""
- icon_state = "snag"
-
-/datum/sprite_accessory/tail/xenotail
- name = "xenomorph tail 2"
- desc = ""
- icon_state = "xenotail"
-
-/datum/sprite_accessory/tail/eboop
- name = "EGN mech tail (dual color)"
- desc = ""
- icon_state = "eboop"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "eboop_mark"
-
-/datum/sprite_accessory/tail/molenar_kitsune
- name = "quintail kitsune tails (Molenar)"
- desc = ""
- icon_state = "molenar-kitsune"
-
-/datum/sprite_accessory/tail/miria_fluffdragon
- name = "fluffdragon tail (Miria Masters)"
- desc = ""
- icon_state = "miria-fluffdragontail"
-
-/datum/sprite_accessory/tail/miria_kitsune
- name = "Black kitsune tails (Miria Masters)"
- desc = ""
- icon_state = "miria-kitsunetail"
-
-/datum/sprite_accessory/tail/molenar_deathclaw
- name = "deathclaw bits (Molenar)"
- desc = ""
- icon_state = "molenar-deathclaw"
-
-/datum/sprite_accessory/tail/runac
- name = "fennecsune tails (Runac)"
- desc = ""
- icon_state = "runac"
-
-/datum/sprite_accessory/tail/reika //Leaving this since it was too hard to split the wings from the tail.
- name = "fox tail (+ beewings) (Reika)"
- desc = ""
- icon_state = "reika"
-
-/datum/sprite_accessory/tail/rosey
- name = "tritail kitsune tails (Rosey)"
- desc = ""
- icon_state = "rosey_three"
-
-/datum/sprite_accessory/tail/rosey2
- name = "pentatail kitsune tails (Rosey)" //I predict seven tails next. ~CK
- desc = ""
- icon_state = "rosey_five"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/scree
- name = "green taj tail (Scree)"
- desc = ""
- icon_state = "scree"
-
-/datum/sprite_accessory/tail/aronai
- name = "aronai tail (Aronai)"
- desc = ""
- icon_state = "aronai"
-
-/datum/sprite_accessory/tail/cabletail
- name = "cabletail"
- desc = "cabletail"
- icon_state = "cabletail"
-
-/datum/sprite_accessory/tail/featherfluff_tail
- name = "featherfluff_tail"
- desc = ""
- icon_state = "featherfluff_tail"
-
-/datum/sprite_accessory/tail/ketrai_wag
- name = "fennix tail (vwag)"
- desc = ""
- icon_state = "ketraitail"
- ani_state = "ketraitail_w"
-
-/datum/sprite_accessory/tail/ketrainew_wag
- name = "new fennix tail (vwag)"
- desc = ""
- icon_state = "ketraitailnew"
- ani_state = "ketraitailnew_w"
-
-/datum/sprite_accessory/tail/redpanda
- name = "red panda"
- desc = ""
- icon_state = "redpanda"
-
-/datum/sprite_accessory/tail/ringtail
- name = "ringtail, colorable"
- desc = ""
- icon_state = "ringtail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "ringtail_mark"
-
-/datum/sprite_accessory/tail/holly
- name = "tigress tail (Holly)"
- desc = ""
- icon_state = "tigresstail"
-
-/datum/sprite_accessory/tail/satyr
- name = "goat legs, colorable"
- desc = ""
- icon_state = "satyr"
- color_blend_mode = ICON_MULTIPLY
- do_colouration = 1
- 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/vore/taurs_vr.dmi'
- clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
-
-/datum/sprite_accessory/tail/tailmaw
- name = "tailmaw, colorable"
- desc = ""
- icon_state = "tailmaw"
- color_blend_mode = ICON_MULTIPLY
- do_colouration = 1
-
-/datum/sprite_accessory/tail/curltail
- name = "curltail (vwag)"
- desc = ""
- icon_state = "curltail"
- ani_state = "curltail_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "curltail_mark"
- extra_overlay_w = "curltail_mark_w"
-
-/datum/sprite_accessory/tail/shorttail
- name = "shorttail (vwag)"
- desc = ""
- icon_state = "straighttail"
- ani_state = "straighttail_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/sneptail
- name = "Snep/Furry Tail (vwag)"
- desc = ""
- icon_state = "sneptail"
- ani_state = "sneptail_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "sneptail_mark"
- extra_overlay_w = "sneptail_mark_w"
-
-
-/datum/sprite_accessory/tail/tiger_new
- name = "tiger tail (vwag)"
- desc = ""
- icon_state = "tigertail"
- ani_state = "tigertail_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "tigertail_mark"
- extra_overlay_w = "tigertail_mark_w"
-
-/datum/sprite_accessory/tail/vulp_new
- name = "new vulp tail (vwag)"
- desc = ""
- icon_state = "vulptail"
- ani_state = "vulptail_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "vulptail_mark"
- extra_overlay_w = "vulptail_mark_w"
-
-/datum/sprite_accessory/tail/otietail
- name = "otie tail (vwag)"
- desc = ""
- icon_state = "otie"
- ani_state = "otie_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/newtailmaw
- name = "new tailmaw (vwag)"
- desc = ""
- icon_state = "newtailmaw"
- ani_state = "newtailmaw_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/ztail
- name = "jagged flufftail"
- desc = ""
- icon_state = "ztail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/snaketail
- name = "snake tail, colorable"
- desc = ""
- icon_state = "snaketail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/vulpan_alt
- name = "vulpkanin alt style, colorable"
- desc = ""
- icon_state = "vulptail_alt"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/sergaltaildc
- name = "sergal, dual-color"
- desc = ""
- icon_state = "sergal"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "sergal_mark"
-
-/datum/sprite_accessory/tail/skunktail
- name = "skunk, dual-color"
- desc = ""
- icon_state = "skunktail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "skunktail_mark"
-
-/datum/sprite_accessory/tail/deertail
- name = "deer, dual-color"
- desc = ""
- icon_state = "deertail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "deertail_mark"
-
-/datum/sprite_accessory/tail/tesh_feathered
- name = "Teshari tail"
- desc = ""
- icon_state = "teshtail_s"
- do_colouration = 1
- extra_overlay = "teshtail_feathers_s"
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/teshari_fluffytail
- name = "Teshari alternative, colorable"
- desc = ""
- icon_state = "teshari_fluffytail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "teshari_fluffytail_mark"
-
-/datum/sprite_accessory/tail/tesh_pattern_male
- name = "Teshari male tail pattern"
- desc = ""
- icon_state = "teshtail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "teshpattern_male_tail"
-
-/datum/sprite_accessory/tail/tesh_pattern_male_alt
- name = "Teshari male tail alt. pattern"
- desc = ""
- icon_state = "teshtail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "teshpattern_male_alt"
-
-/datum/sprite_accessory/tail/tesh_pattern_fem
- name = "Teshari female tail pattern"
- desc = ""
- icon_state = "teshtail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "teshpattern_fem_tail"
-
-/datum/sprite_accessory/tail/tesh_pattern_fem_alt
- name = "Teshari male tail alt. pattern"
- desc = ""
- icon_state = "teshtail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "teshpattern_fem_alt"
-
-/datum/sprite_accessory/tail/nightstalker
- name = "Nightstalker, colorable"
- desc = ""
- icon_state = "nightstalker"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-//For all species tails. Includes haircolored tails.
-/datum/sprite_accessory/tail/special
- name = "Blank tail. Do not select."
- icon = 'icons/effects/species_tails_vr.dmi'
-
-/datum/sprite_accessory/tail/special/unathi
- name = "unathi tail"
- desc = ""
- icon_state = "sogtail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/tajaran
- name = "tajaran tail"
- desc = ""
- icon_state = "tajtail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/sergal
- name = "sergal tail"
- desc = ""
- icon_state = "sergtail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/akula
- name = "akula tail"
- desc = ""
- icon_state = "sharktail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/nevrean
- name = "nevrean tail"
- desc = ""
- icon_state = "nevreantail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/armalis
- name = "armalis tail"
- desc = ""
- icon_state = "armalis_tail_humanoid_s"
-
-/datum/sprite_accessory/tail/special/xenodrone
- name = "xenomorph drone tail"
- desc = ""
- icon_state = "xenos_drone_tail_s"
-
-/datum/sprite_accessory/tail/special/xenosentinel
- name = "xenomorph sentinel tail"
- desc = ""
- icon_state = "xenos_sentinel_tail_s"
-
-/datum/sprite_accessory/tail/special/xenohunter
- name = "xenomorph hunter tail"
- desc = ""
- icon_state = "xenos_hunter_tail_s"
-
-/datum/sprite_accessory/tail/special/xenoqueen
- name = "xenomorph queen tail"
- desc = ""
- icon_state = "xenos_queen_tail_s"
-
-/datum/sprite_accessory/tail/special/monkey
- name = "monkey tail"
- desc = ""
- icon_state = "chimptail_s"
-
-/datum/sprite_accessory/tail/special/unathihc
- name = "unathi tail, colorable"
- desc = ""
- icon_state = "sogtail_hc_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/tajaranhc
- name = "tajaran tail, colorable"
- desc = ""
- icon_state = "tajtail_hc_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/sergalhc
- name = "sergal tail, colorable"
- desc = ""
- icon_state = "sergtail_hc_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/akulahc
- name = "akula tail, colorable"
- desc = ""
- icon_state = "sharktail_hc_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/nevreanhc
- name = "nevrean tail, colorable"
- desc = ""
- icon_state = "nevreantail_hc_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/foxhc
- name = "highlander zorren tail, colorable"
- desc = ""
- icon_state = "foxtail_hc_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/fennechc
- name = "flatland zorren tail, colorable"
- desc = ""
- icon_state = "fentail_hc_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/special/armalishc
- name = "armalis tail, colorable"
- desc = ""
- icon_state = "armalis_tail_humanoid_hc_s"
- do_colouration = 1
-
-/datum/sprite_accessory/tail/special/xenodronehc
- name = "xenomorph drone tail, colorable"
- desc = ""
- icon_state = "xenos_drone_tail_hc_s"
- do_colouration = 1
-
-/datum/sprite_accessory/tail/special/xenosentinelhc
- name = "xenomorph sentinel tail, colorable"
- desc = ""
- icon_state = "xenos_sentinel_tail_hc_s"
- do_colouration = 1
-
-/datum/sprite_accessory/tail/special/xenohunterhc
- name = "xenomorph hunter tail, colorable"
- desc = ""
- icon_state = "xenos_hunter_tail_hc_s"
- do_colouration = 1
-
-/datum/sprite_accessory/tail/special/xenoqueenhc
- name = "xenomorph queen tail, colorable"
- desc = ""
- icon_state = "xenos_queen_tail_hc_s"
- do_colouration = 1
-
-/datum/sprite_accessory/tail/special/monkeyhc
- name = "monkey tail, colorable"
- desc = ""
- icon_state = "chimptail_hc_s"
- do_colouration = 1
-
-/datum/sprite_accessory/tail/special/vulpan
- name = "vulpkanin, colorable"
- desc = ""
- icon_state = "vulptail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-
-/datum/sprite_accessory/tail/zenghu_taj
- name = "Zeng-Hu Tajaran Synth tail"
- desc = ""
- icon_state = "zenghu_taj"
-
-//Taurs moved to a separate file due to extra code around them
-
-//Buggo Abdomens!
-
-/datum/sprite_accessory/tail/buggo
- name = "Bug abdomen, colorable"
- desc = ""
- icon_state = "buggo_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/buggobee
- name = "Bug abdomen, bee top, dual-colorable"
- desc = ""
- icon_state = "buggo_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggobee_markings"
-
-/datum/sprite_accessory/tail/buggobeefull
- name = "Bug abdomen, bee full, dual-colorable"
- desc = ""
- icon_state = "buggo_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggobeefull_markings"
-
-/datum/sprite_accessory/tail/buggounder
- name = "Bug abdomen, underside, dual-colorable"
- desc = ""
- icon_state = "buggo_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggounder_markings"
-
-/datum/sprite_accessory/tail/buggofirefly
- name = "Bug abdomen, firefly, dual-colorable"
- desc = ""
- icon_state = "buggo_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofirefly_markings"
-
-/datum/sprite_accessory/tail/buggofat
- name = "Fat bug abdomen, colorable"
- desc = ""
- icon_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/buggofatbee
- name = "Fat bug abdomen, bee top, dual-colorable"
- desc = ""
- icon_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofatbee_markings"
-
-/datum/sprite_accessory/tail/buggofatbeefull
- name = "Fat bug abdomen, bee full, dual-colorable"
- desc = ""
- icon_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofatbeefull_markings"
-
-/datum/sprite_accessory/tail/buggofatunder
- name = "Fat bug abdomen, underside, dual-colorable"
- desc = ""
- icon_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofatunder_markings"
-
-/datum/sprite_accessory/tail/buggofatfirefly
- name = "Fat bug abdomen, firefly, dual-colorable"
- desc = ""
- icon_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofatfirefly_markings"
-
-/datum/sprite_accessory/tail/buggowag
- name = "Bug abdomen, colorable, vwag change"
- desc = ""
- icon_state = "buggo_s"
- ani_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/buggobeewag
- name = "Bug abdomen, bee top, dual color, vwag"
- desc = ""
- icon_state = "buggo_s"
- ani_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggobee_markings"
- extra_overlay_w = "buggofatbee_markings"
-
-/datum/sprite_accessory/tail/buggobeefullwag
- name = "Bug abdomen, bee full, dual color, vwag"
- desc = ""
- icon_state = "buggo_s"
- ani_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggobeefull_markings"
- extra_overlay_w = "buggofatbeefull_markings"
-
-/datum/sprite_accessory/tail/buggounderwag
- name = "Bug abdomen, underside, dual color, vwag"
- desc = ""
- icon_state = "buggo_s"
- ani_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggounder_markings"
- extra_overlay_w = "buggofatunder_markings"
-
-/datum/sprite_accessory/tail/buggofireflywag
- name = "Bug abdomen, firefly, dual color, vwag"
- desc = ""
- icon_state = "buggo_s"
- ani_state = "buggofat_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofirefly_markings"
- extra_overlay_w = "buggofatfirefly_markings"
-
-//Vass buggo variants!
-
-/datum/sprite_accessory/tail/buggovass
- name = "Bug abdomen, vass, colorable"
- desc = ""
- icon_state = "buggo_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/buggovassbee
- name = "Bug abdomen, bee top, dc, vass"
- desc = ""
- icon_state = "buggo_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggobee_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassbeefull
- name = "Bug abdomen, bee full, dc, vass"
- desc = ""
- icon_state = "buggo_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggobeefull_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassunder
- name = "Bug abdomen, underside, dc, vass"
- desc = ""
- icon_state = "buggo_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggounder_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassfirefly
- name = "Bug abdomen, firefly, dc, vass"
- desc = ""
- icon_state = "buggo_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofirefly_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassfat
- name = "Fat bug abdomen, vass, colorable"
- desc = ""
- icon_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/buggovassfatbee
- name = "Fat bug abdomen, bee top, dc, vass"
- desc = ""
- icon_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofatbee_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassfatbeefull
- name = "Fat bug abdomen, bee full, dc, vass"
- desc = ""
- icon_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofatbeefull_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassfatunder
- name = "Fat bug abdomen, underside, dc, vass"
- desc = ""
- icon_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofatunder_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassfatfirefly
- name = "Fat bug abdomen, firefly, dc, vass"
- desc = ""
- icon_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofatfirefly_vass_markings"
-
-/datum/sprite_accessory/tail/buggovasswag
- name = "Bug abdomen, vass, colorable, vwag change"
- desc = ""
- icon_state = "buggo_vass_s"
- ani_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/buggovassbeewag
- name = "Bug abdomen, bee top, dc, vass, vwag"
- desc = ""
- icon_state = "buggo_vass_s"
- ani_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggobee_vass_markings"
- extra_overlay_w = "buggofatbee_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassbeefullwag
- name = "Bug abdomen, bee full, dc, vass, vwag"
- desc = ""
- icon_state = "buggo_vass_s"
- ani_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggobeefull_vass_markings"
- extra_overlay_w = "buggofatbeefull_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassunderwag
- name = "Bug abdomen, underside, dc, vass, vwag"
- desc = ""
- icon_state = "buggo_vass_s"
- ani_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggounder_vass_markings"
- extra_overlay_w = "buggofatunder_vass_markings"
-
-/datum/sprite_accessory/tail/buggovassfireflywag
- name = "Bug abdomen, firefly, dc, vass, vwag"
- desc = ""
- icon_state = "buggo_vass_s"
- ani_state = "buggofat_vass_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "buggofirefly_vass_markings"
- extra_overlay_w = "buggofatfirefly_vass_markings"
-
-/datum/sprite_accessory/tail/tail_smooth
- name = "Smooth Lizard Tail, colorable"
- desc = ""
- icon_state = "tail_smooth"
- ani_state = "tail_smooth_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/triplekitsune_colorable
- name = "Kitsune 3 tails, colorable"
- desc = ""
- icon_state = "triplekitsune"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "triplekitsune_tips"
-
-/datum/sprite_accessory/tail/ninekitsune_colorable
- name = "Kitsune 9 tails, colorable"
- desc = ""
- icon_state = "ninekitsune"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "ninekitsune-tips"
-
-/datum/sprite_accessory/tail/shadekin_short
- name = "Shadekin Short Tail, colorable"
- desc = ""
- icon_state = "shadekin-short"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts
- name = "Ward-Takahashi Tail"
- desc = ""
- icon_state = "wardtakahashi_vulp"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/wartacosushi_tail_dc
- name = "Ward-Takahashi Tail, dual-color"
- desc = ""
- icon_state = "wardtakahashi_vulp_dc"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "wardtakahashi_vulp_dc_mark"
-
-/datum/sprite_accessory/tail/Easterntail
- name = "Eastern Dragon (Animated)"
- desc = ""
- icon_state = "Easterntail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "EasterntailColorTip"
- ani_state = "Easterntail_w"
- extra_overlay_w = "EasterntailColorTip_w"
-
-/datum/sprite_accessory/tail/synthtail_static
- name = "Synthetic lizard tail"
- desc = ""
- icon_state = "synthtail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/synthtail_vwag
- name = "Synthetic lizard tail (vwag)"
- desc = ""
- icon_state = "synthtail"
- ani_state = "synthtail_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/Plugtail
- name = "Synthetic plug tail"
- desc = ""
- icon_state = "Plugtail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "PlugtailMarking"
- extra_overlay2 = "PlugtailMarking2"
-
-/datum/sprite_accessory/tail/Segmentedtail
- name = "Segmented tail, animated"
- desc = ""
- icon_state = "Segmentedtail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "Segmentedtailmarking"
- ani_state = "Segmentedtail_w"
- extra_overlay_w = "Segmentedtailmarking_w"
-
-/datum/sprite_accessory/tail/Segmentedlights
- name = "Segmented tail, animated synth"
- desc = ""
- icon_state = "Segmentedtail"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- extra_overlay = "Segmentedlights"
- ani_state = "Segmentedtail_w"
- extra_overlay_w = "Segmentedlights_w"
-
-/datum/sprite_accessory/tail/fox_tail
- name = "Fox tail"
- desc = ""
- icon_state = "fox_tail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/fox_tail_plain
- name = "Fox tail"
- desc = ""
- icon_state = "fox_tail_plain_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/fennec_tail
- name = "Fennec tail"
- desc = ""
- icon_state = "fennec_tail_s"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/lizard_tail_smooth
- name = "Lizard Tail (Smooth)"
- desc = ""
- icon_state = "lizard_tail_smooth"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/lizard_tail_dark_tiger
- name = "Lizard Tail (Dark Tiger)"
- desc = ""
- icon_state = "lizard_tail_dark_tiger"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/lizard_tail_light_tiger
- name = "Lizard Tail (Light Tiger)"
- desc = ""
- icon_state = "lizard_tail_light_tiger"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/lizard_tail_spiked
- name = "Lizard Tail (Spiked)"
- desc = ""
- icon_state = "lizard_tail_spiked"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/xenotail_fullcolour
- name = "xenomorph tail (fully colourable)"
- desc = ""
- icon_state = "xenotail_fullcolour"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/xenotailalt_fullcolour
- name = "xenomorph tail alt. (fully colourable)"
- desc = ""
- icon_state = "xenotailalt_fullcolour"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
-
-/datum/sprite_accessory/tail/peacocktail_red //this is ckey locked for now, but prettiebyrd wants these tails to be unlocked at a later date
- name = "Peacock tail (vwag)"
- desc = ""
- icon = "icons/mob/vore/tails_vr.dmi"
- icon_state = "peacocktail_red"
- ani_state = "peacocktail_red_w"
- ckeys_allowed = list("prettiebyrd")
-
-/datum/sprite_accessory/tail/peacocktail //ditto
- name = "Peacock tail, colorable (vwag)"
- desc = ""
- icon = "icons/mob/vore/tails_vr.dmi"
- icon_state = "peacocktail"
- ani_state = "peacocktail_w"
- do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
- ckeys_allowed = list("prettiebyrd")
-
-/*
-////////////////////////////
-/ =--------------------= /
-/ == Misc Definitions == /
-/ =--------------------= /
-////////////////////////////
-*/
-
-// Yes, I have to add all of this just to make some glowy hair.
-// No, this isn't a character creation option, but... I guess in the future it could be, if anyone wants that?
-
-/datum/sprite_accessory/hair_accessory
- name = "You should not see this..."
- icon = 'icons/mob/vore/hair_accessories_vr.dmi'
- do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
-
- var/ignores_lighting = 0 // Whether or not this hair accessory will ignore lighting and glow in the dark.
- color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
- var/desc = "You should not see this..."
-
-/datum/sprite_accessory/hair_accessory/verie_hair_glow //CHOMP Comment: Leaving the name Verie here because I cannot be arsed to change it in other code
- name = "hair glow" //CHOMP Edit: removed the name Verie
- desc = ""
- icon_state = "verie_hair_glow" //CHOMP Comment: Leaving the name Verie here because I cannot be arsed to change the .dmi
- ignores_lighting = 1
- //ckeys_allowed = list("vitoras") // This probably won't come into play EVER but better safe than sorry
diff --git a/code/modules/vore/appearance/update_icons_vr.dm b/code/modules/vore/appearance/update_icons_vr.dm
index 9185db35f3..15ebcc7c9f 100644
--- a/code/modules/vore/appearance/update_icons_vr.dm
+++ b/code/modules/vore/appearance/update_icons_vr.dm
@@ -1,25 +1,3 @@
-var/global/list/wing_icon_cache = list()
-
-/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)
-
- if(ear_style.extra_overlay2) //MORE COLOURS IS BETTERER
- var/icon/overlay = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.extra_overlay2)
- overlay.Blend(rgb(src.r_ears3, src.g_ears3, src.b_ears3), ear_style.color_blend_mode)
- ears_s.Blend(overlay, ICON_OVERLAY)
- qdel(overlay)
- return ears_s
- return null
-
/mob/living/carbon/human/proc/get_hair_accessory_overlay()
if(hair_accessory_style && !(head && (head.flags_inv & BLOCKHEADHAIR)))
var/icon/hair_acc_s = icon(hair_accessory_style.icon, hair_accessory_style.icon_state)
@@ -27,99 +5,3 @@ var/global/list/wing_icon_cache = list()
hair_acc_s.Blend(rgb(src.r_ears, src.g_ears, src.b_ears), hair_accessory_style.color_blend_mode)
return hair_acc_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(tail_style.extra_overlay2)
- var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2)
- if(wagging && tail_style.ani_state)
- overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2_w)
- overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode)
- tail_s.Blend(overlay, ICON_OVERLAY)
- qdel(overlay)
- else
- overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), 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
-
-/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) && !wings_hidden)
- 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)) && !wings_hidden)
- 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)
-
- if(wing_style.extra_overlay2)
- var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2)
- if(wing_style.ani_state)
- overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w)
- overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
- wing_s.Blend(overlay, ICON_OVERLAY)
- qdel(overlay)
- else
- overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
- wing_s.Blend(overlay, ICON_OVERLAY)
- qdel(overlay)
-
- return image(wing_s)
-
-
-// TODO - Move this to where it should go ~Leshana
-/mob/proc/stop_flying()
- if(QDESTROYING(src))
- return
- flying = FALSE
- return 1
-
-/mob/living/carbon/human/stop_flying()
- if((. = ..()))
- update_wing_showing()
\ No newline at end of file
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index db741bdbfe..d566937c95 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -24,7 +24,6 @@
var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr.
var/drain_finalized = 0 // Determines if the succubus drain will be KO'd/absorbed. Can be toggled on at any time.
var/fuzzy = 1 // Preference toggle for sharp/fuzzy icon.
- var/tail_alt = 0 // Tail layer toggle.
var/permit_healbelly = TRUE
var/can_be_drop_prey = FALSE
var/can_be_drop_pred = TRUE // Mobs are pred by default.
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index 776e7dad2e..53594ceef5 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -952,23 +952,6 @@
/obj/item/weapon/material/twohanded/fluff/New(var/newloc)
..(newloc," ") //See materials_vr_dmi for more information as to why this is a blank space.
-//General use.
-/obj/item/weapon/material/twohanded/fluff/riding_crop
- name = "riding crop"
- desc = "A steel rod, a little over a foot long with a widened grip and a thick, leather patch at the end. Made to smack naughty submissives."
- //force_wielded = 0.05 //Stings, but does jack shit for damage, provided you don't hit someone 100 times. 1 damage with hardness of 60.
- force_divisor = 0.05 //Required in order for the X attacks Y message to pop up.
- unwielded_force_divisor = 1 // One here, too.
- applies_material_colour = 0
- unbreakable = 1
- base_icon = "riding_crop"
- icon_state = "riding_crop0"
- attack_verb = list("cropped","spanked","swatted","smacked","peppered")
-//1R1S: Malady Blanche
-/obj/item/weapon/material/twohanded/fluff/riding_crop/malady
- name = "Malady's riding crop"
- desc = "An infernum made riding crop with Malady Blanche engraved in the shaft. It's a little worn from how many butts it has spanked."
-
//jacknoir413:Areax Third
/obj/item/weapon/melee/baton/fluff/stunstaff
name = "Electrostaff"
diff --git a/icons/effects/species_tails.dmi b/icons/effects/species_tails.dmi
new file mode 100644
index 0000000000..5fea0671c6
Binary files /dev/null and b/icons/effects/species_tails.dmi differ
diff --git a/icons/mob/human_races/markings_alt.dmi b/icons/mob/human_races/markings_alt.dmi
new file mode 100644
index 0000000000..e9fcad5e63
Binary files /dev/null and b/icons/mob/human_races/markings_alt.dmi differ
diff --git a/icons/mob/human_races/sprite_accessories/ears.dmi b/icons/mob/human_races/sprite_accessories/ears.dmi
new file mode 100644
index 0000000000..243b901e8e
Binary files /dev/null and b/icons/mob/human_races/sprite_accessories/ears.dmi differ
diff --git a/icons/mob/human_races/sprite_accessories/tails.dmi b/icons/mob/human_races/sprite_accessories/tails.dmi
new file mode 100644
index 0000000000..5e4a27597f
Binary files /dev/null and b/icons/mob/human_races/sprite_accessories/tails.dmi differ
diff --git a/icons/mob/human_races/sprite_accessories/taurs.dmi b/icons/mob/human_races/sprite_accessories/taurs.dmi
new file mode 100644
index 0000000000..69d0a91388
Binary files /dev/null and b/icons/mob/human_races/sprite_accessories/taurs.dmi differ
diff --git a/icons/mob/human_races/sprite_accessories/wings.dmi b/icons/mob/human_races/sprite_accessories/wings.dmi
new file mode 100644
index 0000000000..2042d667f2
Binary files /dev/null and b/icons/mob/human_races/sprite_accessories/wings.dmi differ
diff --git a/icons/mob/items/lefthand_material.dmi b/icons/mob/items/lefthand_material.dmi
index a2f035cd58..7fbcc1131f 100644
Binary files a/icons/mob/items/lefthand_material.dmi and b/icons/mob/items/lefthand_material.dmi differ
diff --git a/icons/mob/items/righthand_material.dmi b/icons/mob/items/righthand_material.dmi
index 6895183a5b..ac51aa86f1 100644
Binary files a/icons/mob/items/righthand_material.dmi and b/icons/mob/items/righthand_material.dmi differ
diff --git a/icons/mob/limb_mask.dmi b/icons/mob/limb_mask.dmi
index ba4d0e3456..4d83672aa4 100644
Binary files a/icons/mob/limb_mask.dmi and b/icons/mob/limb_mask.dmi differ
diff --git a/icons/mob/mecha.dmi b/icons/mob/mecha.dmi
index a6d3b13773..975e46371d 100644
Binary files a/icons/mob/mecha.dmi and b/icons/mob/mecha.dmi differ
diff --git a/icons/mob/taursuits_cow.dmi b/icons/mob/taursuits_cow.dmi
new file mode 100644
index 0000000000..ce592d5edb
Binary files /dev/null and b/icons/mob/taursuits_cow.dmi differ
diff --git a/icons/mob/taursuits_deer.dmi b/icons/mob/taursuits_deer.dmi
new file mode 100644
index 0000000000..6c53a6f4d0
Binary files /dev/null and b/icons/mob/taursuits_deer.dmi differ
diff --git a/icons/mob/taursuits_drake.dmi b/icons/mob/taursuits_drake.dmi
new file mode 100644
index 0000000000..ca0db57532
Binary files /dev/null and b/icons/mob/taursuits_drake.dmi differ
diff --git a/icons/mob/taursuits_feline.dmi b/icons/mob/taursuits_feline.dmi
new file mode 100644
index 0000000000..1d4c597e02
Binary files /dev/null and b/icons/mob/taursuits_feline.dmi differ
diff --git a/icons/mob/taursuits_horse.dmi b/icons/mob/taursuits_horse.dmi
new file mode 100644
index 0000000000..4162463c69
Binary files /dev/null and b/icons/mob/taursuits_horse.dmi differ
diff --git a/icons/mob/taursuits_lizard.dmi b/icons/mob/taursuits_lizard.dmi
new file mode 100644
index 0000000000..a6b9858f17
Binary files /dev/null and b/icons/mob/taursuits_lizard.dmi differ
diff --git a/icons/mob/taursuits_naga.dmi b/icons/mob/taursuits_naga.dmi
new file mode 100644
index 0000000000..7df326318c
Binary files /dev/null and b/icons/mob/taursuits_naga.dmi differ
diff --git a/icons/mob/taursuits_otie.dmi b/icons/mob/taursuits_otie.dmi
new file mode 100644
index 0000000000..06e083854e
Binary files /dev/null and b/icons/mob/taursuits_otie.dmi differ
diff --git a/icons/mob/taursuits_slug.dmi b/icons/mob/taursuits_slug.dmi
new file mode 100644
index 0000000000..98692375f3
Binary files /dev/null and b/icons/mob/taursuits_slug.dmi differ
diff --git a/icons/mob/taursuits_spider.dmi b/icons/mob/taursuits_spider.dmi
new file mode 100644
index 0000000000..b8090eceaa
Binary files /dev/null and b/icons/mob/taursuits_spider.dmi differ
diff --git a/icons/mob/taursuits_wolf.dmi b/icons/mob/taursuits_wolf.dmi
new file mode 100644
index 0000000000..0f638ea6d3
Binary files /dev/null and b/icons/mob/taursuits_wolf.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index ff7eaba6de..2f8d4f1e99 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1423,7 +1423,12 @@
#include "code\game\objects\items\weapons\material\swords.dm"
#include "code\game\objects\items\weapons\material\thrown.dm"
#include "code\game\objects\items\weapons\material\twohanded.dm"
+<<<<<<< HEAD
#include "code\game\objects\items\weapons\material\twohanded_ch.dm"
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+=======
+#include "code\game\objects\items\weapons\material\twohanded_vr.dm"
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
#include "code\game\objects\items\weapons\material\whetstone.dm"
#include "code\game\objects\items\weapons\melee\deflect.dm"
#include "code\game\objects\items\weapons\melee\energy.dm"
@@ -2685,6 +2690,7 @@
#include "code\modules\mob\living\login.dm"
#include "code\modules\mob\living\logout.dm"
#include "code\modules\mob\living\organs.dm"
+#include "code\modules\mob\living\riding.dm"
#include "code\modules\mob\living\say.dm"
#include "code\modules\mob\living\status_indicators.dm"
#include "code\modules\mob\living\bot\bot.dm"
@@ -3172,9 +3178,27 @@
#include "code\modules\mob\new_player\preferences_setup_vr.dm"
#include "code\modules\mob\new_player\skill.dm"
#include "code\modules\mob\new_player\sprite_accessories.dm"
+<<<<<<< HEAD
#include "code\modules\mob\new_player\sprite_accessories_ch.dm"
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+=======
+#include "code\modules\mob\new_player\sprite_accessories_ear.dm"
+#include "code\modules\mob\new_player\sprite_accessories_ear_vr.dm"
+#include "code\modules\mob\new_player\sprite_accessories_extra.dm"
+#include "code\modules\mob\new_player\sprite_accessories_extra_vr.dm"
+#include "code\modules\mob\new_player\sprite_accessories_tail.dm"
+#include "code\modules\mob\new_player\sprite_accessories_tail_vr.dm"
+#include "code\modules\mob\new_player\sprite_accessories_taur.dm"
+#include "code\modules\mob\new_player\sprite_accessories_taur_vr.dm"
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
#include "code\modules\mob\new_player\sprite_accessories_vr.dm"
+<<<<<<< HEAD
#include "code\modules\mob\new_player\sprite_accessories_yw.dm"
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+=======
+#include "code\modules\mob\new_player\sprite_accessories_wing.dm"
+#include "code\modules\mob\new_player\sprite_accessories_wing_vr.dm"
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
#include "code\modules\modular_computers\laptop_vendor.dm"
#include "code\modules\modular_computers\computers\modular_computer\core.dm"
#include "code\modules\modular_computers\computers\modular_computer\damage.dm"
@@ -3298,7 +3322,12 @@
#include "code\modules\organs\organ_stump.dm"
#include "code\modules\organs\pain.dm"
#include "code\modules\organs\robolimbs.dm"
+<<<<<<< HEAD
#include "code\modules\organs\robolimbs_ch.dm"
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+=======
+#include "code\modules\organs\robolimbs_custom.dm"
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
#include "code\modules\organs\robolimbs_vr.dm"
#include "code\modules\organs\robolimbs_yw.dm"
#include "code\modules\organs\wound.dm"
@@ -3977,12 +4006,18 @@
#include "code\modules\vore\hook-defs_vr.dm"
#include "code\modules\vore\trycatch_vr.dm"
#include "code\modules\vore\appearance\preferences_vr.dm"
+<<<<<<< HEAD
#include "code\modules\vore\appearance\sprite_accessories_ch.dm"
#include "code\modules\vore\appearance\sprite_accessories_taur_ch.dm"
#include "code\modules\vore\appearance\sprite_accessories_taur_vr.dm"
#include "code\modules\vore\appearance\sprite_accessories_taur_yw.dm"
#include "code\modules\vore\appearance\sprite_accessories_vr.dm"
#include "code\modules\vore\appearance\sprite_accessories_yw.dm"
+||||||| parent of f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
+#include "code\modules\vore\appearance\sprite_accessories_taur_vr.dm"
+#include "code\modules\vore\appearance\sprite_accessories_vr.dm"
+=======
+>>>>>>> f75b0bc9d5... Merge pull request #9327 from VOREStation/upstream-merge-7697
#include "code\modules\vore\appearance\update_icons_vr.dm"
#include "code\modules\vore\eating\belly_dat_vr.dm"
#include "code\modules\vore\eating\belly_obj_ch.dm"