diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm
index 0d10e33b49..1c0d5f2393 100644
--- a/code/_helpers/global_lists.dm
+++ b/code/_helpers/global_lists.dm
@@ -43,6 +43,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_INIT(custom_species_bases, new) // Species that can be used for a Custom Species icon base
//Underwear
var/datum/category_collection/underwear/global_underwear = new()
@@ -214,6 +219,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)
@@ -221,6 +243,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 d45406225c..dd75d8a62e 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,
@@ -481,24 +476,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)
@@ -524,19 +501,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/outfits/jobs/security.dm b/code/datums/outfits/jobs/security.dm
index a5e058ca9c..8260d346b7 100644
--- a/code/datums/outfits/jobs/security.dm
+++ b/code/datums/outfits/jobs/security.dm
@@ -40,7 +40,7 @@
//VOREStation Edit - More cyberpunky
/decl/hierarchy/outfit/job/security/detective/forensic
name = OUTFIT_JOB_NAME("Forensic technician")
- head = /obj/item/clothing/head/helmet/detective_alt
+ head = null
suit = /datum/gear/uniform/detective_alt2
uniform = /obj/item/clothing/under/det
//VOREStation Edit End
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 7d30b4b6a6..94121f3b65 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -786,7 +786,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)
@@ -816,6 +816,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 e8af0c6a5b..ec8ce78efb 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 7cbc67735e..6236b12d07 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
@@ -43,6 +74,36 @@ 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
+ 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
S["Wingdings"] >> pref.wingdings //YWadd start
S["colorblind_mono"] >> pref.colorblind_mono
S["colorblind_vulp"] >> pref.colorblind_vulp
@@ -82,6 +143,36 @@ 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
+ 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
S["Wingdings"] << pref.wingdings //YWadd start
S["colorblind_mono"] << pref.colorblind_mono
S["colorblind_vulp"] << pref.colorblind_vulp
@@ -120,6 +211,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
@@ -157,6 +291,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
@@ -164,6 +301,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
@@ -171,6 +311,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
character.wingdings = pref.wingdings
@@ -399,6 +542,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)]
"
+ . += "