diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index d45406225c1..71148ea67c2 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)
@@ -525,17 +502,8 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
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
+ blacklisted_icons = list(SPECIES_CUSTOM,SPECIES_PROMETHEAN) //Just ones that won't work well.
+ whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID) //Include these anyway
// Weaver recipe stuff
paths = typesof(/datum/weaver_recipe/structure) - /datum/weaver_recipe/structure
diff --git a/code/_macros_vr.dm b/code/_macros_vr.dm
index 6a2134fb718..2eecbe69ed1 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/game/objects/items/weapons/material/twohanded_vr.dm b/code/game/objects/items/weapons/material/twohanded_vr.dm
new file mode 100644
index 00000000000..f21738dd802
--- /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 376b7331cfb..c4d1499fc37 100644
--- a/code/modules/client/preference_setup/general/03_body.dm
+++ b/code/modules/client/preference_setup/general/03_body.dm
@@ -13,6 +13,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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
@@ -20,6 +23,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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
@@ -27,6 +33,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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"
@@ -72,6 +81,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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
@@ -79,6 +91,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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
@@ -86,6 +101,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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/general/body/save_character(var/savefile/S)
S["species"] << pref.species
@@ -127,6 +145,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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
@@ -134,6 +155,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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
@@ -141,6 +165,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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/general/body/sanitize_character(var/savefile/S)
if(!pref.species || !(pref.species in GLOB.playable_species))
@@ -180,18 +207,27 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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]
@@ -245,6 +281,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
@@ -252,6 +291,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
@@ -259,6 +301,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)
// Destroy/cyborgize organs and limbs.
@@ -485,10 +530,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
. += " 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)
+ if(ear.do_colouration)
. += "Change Color [color_square(pref.r_ears, pref.g_ears, pref.b_ears)]
"
- if (ear.extra_overlay)
+ 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))
@@ -501,10 +548,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
if(tail_styles_list[pref.tail_style])
var/datum/sprite_accessory/tail/T = tail_styles_list[pref.tail_style]
- if (T.do_colouration)
+ if(T.do_colouration)
. += "Change Color [color_square(pref.r_tail, pref.g_tail, pref.b_tail)]
"
- if (T.extra_overlay)
+ 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))
@@ -517,10 +566,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
if(wing_styles_list[pref.wing_style])
var/datum/sprite_accessory/wing/W = wing_styles_list[pref.wing_style]
- if (W.do_colouration)
+ if(W.do_colouration)
. += "Change Color [color_square(pref.r_wing, pref.g_wing, pref.b_wing)]
"
- if (W.extra_overlay)
+ 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 +
"
. += "
"
@@ -1063,6 +1114,15 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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)
@@ -1096,6 +1156,15 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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)
@@ -1129,6 +1198,15 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
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 ..()
/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 136c6194aca..21abba41f20 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 dea5be0479b..c9998dece0a 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/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm
index 9a1687959f1..e5b1649fa57 100644
--- a/code/modules/clothing/clothing_vr.dm
+++ b/code/modules/clothing/clothing_vr.dm
@@ -148,48 +148,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_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm
index 352729c5da9..2d9a8540759 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
@@ -207,30 +207,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 63a5069ea66..34b93b25738 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -127,6 +127,9 @@
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
@@ -134,6 +137,9 @@
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
@@ -141,6 +147,9 @@
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
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 558924a784c..fb9beed574b 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 4b4d04192c5..ce072be4b0d 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -88,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
@@ -267,18 +267,10 @@ 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])]"
-<<<<<<< HEAD
- //VOREStation Edit - Different way of tracking add/mult species
-=======
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
if(species.color_mult)
icon_key += "[ICON_MULTIPLY]"
else
icon_key += "[ICON_ADD]"
-<<<<<<< HEAD
- //VOREStation Edit End
-=======
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
else
icon_key += "#000000"
@@ -288,11 +280,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(part.robotic >= ORGAN_ROBOT)
icon_key += "2[part.model ? "-[part.model]": ""]"
robolimb_count++
-<<<<<<< HEAD
- 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))
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
robobody_count ++
else if(part.status & ORGAN_DEAD)
icon_key += "3"
@@ -338,11 +326,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))
-<<<<<<< HEAD
- 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")
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
temp2.Insert(new/icon(temp,dir=SOUTH),dir=SOUTH)
if(!(part.icon_position & LEFT))
@@ -383,11 +367,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//tail
update_tail_showing()
-<<<<<<< HEAD
- update_wing_showing() // VOREStation Edit
-=======
update_wing_showing()
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
/mob/living/carbon/human/proc/update_skin()
if(QDESTROYING(src))
@@ -471,11 +451,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)
-<<<<<<< HEAD
- 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)
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
face_standing.Blend(facial_s, ICON_OVERLAY)
@@ -501,22 +477,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
face_standing.Blend(hair_s, ICON_OVERLAY)
-<<<<<<< HEAD
- // VOREStation Edit - START
- 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.
-=======
if(head_organ.nonsolid || head_organ.transparent)
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
face_standing += rgb(,,,120)
var/icon/ears_s = get_ears_overlay()
@@ -679,20 +640,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
uniform_sprite = "[INV_W_UNIFORM_DEF_ICON].dmi"
//Build a uniform sprite
-<<<<<<< HEAD
- //VOREStation Edit start.
-=======
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
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)
-<<<<<<< HEAD
- //VOREStation Edit end.
-=======
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
apply_layer(UNIFORM_LAYER)
/mob/living/carbon/human/update_inv_wear_id()
@@ -774,10 +727,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.
-<<<<<<< HEAD
- //VOREStation Edit
-=======
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
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.
@@ -859,11 +808,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
update_inv_w_uniform()
update_inv_shoes()
update_tail_showing()
-<<<<<<< HEAD
- update_wing_showing() // VOREStation Edit
-=======
update_wing_showing()
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
if(!wear_suit)
return //No point, no suit.
@@ -878,10 +823,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
else
suit_sprite = "[INV_SUIT_DEF_ICON].dmi"
-<<<<<<< HEAD
- //VOREStation Edit start.
-=======
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
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
@@ -889,11 +830,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(tail_is_rendered && valid_clip_mask && !(istype(suit) && suit.taurized)) //Clip the lower half of the suit off using the tail's clip mask for taurs since taur bodies aren't hidden.
c_mask = valid_clip_mask
overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_wear_suit_str, default_icon = suit_sprite, default_layer = SUIT_LAYER, clip_mask = c_mask)
-<<<<<<< HEAD
-
- //VOREStation Edit end.
-=======
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
apply_layer(SUIT_LAYER)
@@ -1006,19 +942,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
return
remove_layer(TAIL_LAYER)
-<<<<<<< HEAD
- remove_layer(TAIL_LAYER_ALT) // VOREStation Edit - START - Alt Tail Layer
-
- var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER
-
- var/image/vr_tail_image = get_tail_image()
- if(vr_tail_image)
- vr_tail_image.layer = BODY_LAYER+used_tail_layer
- overlays_standing[used_tail_layer] = vr_tail_image
- apply_layer(used_tail_layer)
- return
- // VOREStation Edit - END
-=======
remove_layer(TAIL_LAYER_ALT) // Alt Tail Layer
var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER
@@ -1029,18 +952,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
overlays_standing[used_tail_layer] = tail_image
apply_layer(used_tail_layer)
return
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
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()
-<<<<<<< HEAD
- 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
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
animate_tail_reset()
//TODO: Is this the appropriate place for this, and not on species...?
@@ -1050,17 +968,6 @@ 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)
-<<<<<<< HEAD
- 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_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
- // 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
-=======
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)
@@ -1070,18 +977,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(use_species_tail)
var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_tail(src)]_[use_species_tail]")
hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species.color_mult ? ICON_MULTIPLY : ICON_ADD) //Check for species color_mult
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
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)
-<<<<<<< HEAD
- 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
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
var/image/tail_overlay = overlays_standing[used_tail_layer]
remove_layer(TAIL_LAYER)
@@ -1093,11 +995,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
tail_overlay.icon_state = t_state
. = tail_overlay
-<<<<<<< HEAD
- apply_layer(used_tail_layer) // VOREStation Edit - END
-=======
apply_layer(used_tail_layer)
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
//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.
@@ -1107,15 +1005,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
return
var/t_state = "[species.get_tail(src)]_once"
-<<<<<<< HEAD
- var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // VOREStation Edit - Alt Tail Layer
-
- var/image/tail_overlay = overlays_standing[used_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] // Alt Tail Layer
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
if(tail_overlay && tail_overlay.icon_state == t_state)
return //let the existing animation finish
@@ -1123,11 +1015,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
-<<<<<<< HEAD
- 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
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
animate_tail_stop()
/mob/living/carbon/human/proc/animate_tail_start()
@@ -1150,11 +1038,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")
-<<<<<<< HEAD
- 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
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
/mob/living/carbon/human/proc/animate_tail_stop()
if(QDESTROYING(src))
@@ -1162,32 +1046,18 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
set_tail_state("[species.get_tail(src)]_static")
-<<<<<<< HEAD
-// VOREStation Edit - Wings! See update_icons_vr.dm for more wing procs
-=======
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
/mob/living/carbon/human/proc/update_wing_showing()
if(QDESTROYING(src))
return
remove_layer(WING_LAYER)
-<<<<<<< HEAD
- var/image/vr_wing_image = get_wing_image()
- if(vr_wing_image)
- vr_wing_image.layer = BODY_LAYER+WING_LAYER
- overlays_standing[WING_LAYER] = vr_wing_image
-
- apply_layer(WING_LAYER)
-// VOREStation Edit end
-=======
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)
->>>>>>> 576d065... Kaleidoscope 2: The Retabbening (#7697)
/mob/living/carbon/human/update_modifier_visuals()
if(QDESTROYING(src))
@@ -1274,6 +1144,17 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
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()
@@ -1286,6 +1167,11 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
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
@@ -1315,6 +1201,18 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
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)
diff --git a/code/modules/mob/living/living_vr.dm b/code/modules/mob/living/living_vr.dm
index a956bc5dd1e..fd4be9703f9 100644
--- a/code/modules/mob/living/living_vr.dm
+++ b/code/modules/mob/living/living_vr.dm
@@ -24,23 +24,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/mob_defines_vr.dm b/code/modules/mob/mob_defines_vr.dm
index 41c27a41d0e..ff5f1ae5826 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/new_player/preferences_setup_vr.dm b/code/modules/mob/new_player/preferences_setup_vr.dm
index 1f01884b602..dca0ff56ecf 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_ear.dm b/code/modules/mob/new_player/sprite_accessories_ear.dm
index 3247a8b069a..6262b8ba606 100644
--- a/code/modules/mob/new_player/sprite_accessories_ear.dm
+++ b/code/modules/mob/new_player/sprite_accessories_ear.dm
@@ -12,6 +12,7 @@
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)
diff --git a/code/modules/mob/new_player/sprite_accessories_tail.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm
index 437b839f258..012591a8953 100644
--- a/code/modules/mob/new_player/sprite_accessories_tail.dm
+++ b/code/modules/mob/new_player/sprite_accessories_tail.dm
@@ -12,11 +12,13 @@
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.
diff --git a/code/modules/mob/new_player/sprite_accessories_wing.dm b/code/modules/mob/new_player/sprite_accessories_wing.dm
index 3b65639298c..486e81f4b10 100644
--- a/code/modules/mob/new_player/sprite_accessories_wing.dm
+++ b/code/modules/mob/new_player/sprite_accessories_wing.dm
@@ -12,11 +12,13 @@
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)
diff --git a/code/modules/organs/organ_external_vr.dm b/code/modules/organs/organ_external_vr.dm
index 17422598644..0e3fb07d9ee 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_vr.dm b/code/modules/organs/robolimbs_vr.dm
index 2ed4d60fcd2..b93a37fd5aa 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_vr.dm b/code/modules/organs/subtypes/standard_vr.dm
index ce6eaf9d9f7..fb3fe58364a 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/vore/appearance/preferences_vr.dm b/code/modules/vore/appearance/preferences_vr.dm
index 5897cb2a484..01caeda13da 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_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
index db65f1dfa53..40b2708583f 100644
--- a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
+++ b/code/modules/vore/appearance/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/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm
index 2e030fedf38..fc34887e5ec 100644
--- a/code/modules/vore/appearance/sprite_accessories_vr.dm
+++ b/code/modules/vore/appearance/sprite_accessories_vr.dm
@@ -27,9 +27,6 @@
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
@@ -742,14 +739,6 @@
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)"
@@ -977,20 +966,6 @@
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)
diff --git a/code/modules/vore/appearance/update_icons_vr.dm b/code/modules/vore/appearance/update_icons_vr.dm
index 9185db35f38..15ebcc7c9f0 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 db781017df9..8194188dfcf 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 74d6df80fca..43303f979c3 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -995,23 +995,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/vorestation.dme b/vorestation.dme
index 49aff50d22d..65397ff3afe 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1340,6 +1340,7 @@
#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"
+#include "code\game\objects\items\weapons\material\twohanded_vr.dm"
#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"
@@ -2953,11 +2954,11 @@
#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"
-#include "code\modules\mob\new_player\sprite_accessories_vr.dm"
#include "code\modules\mob\new_player\sprite_accessories_ear.dm"
#include "code\modules\mob\new_player\sprite_accessories_extra.dm"
#include "code\modules\mob\new_player\sprite_accessories_tail.dm"
#include "code\modules\mob\new_player\sprite_accessories_taur.dm"
+#include "code\modules\mob\new_player\sprite_accessories_vr.dm"
#include "code\modules\mob\new_player\sprite_accessories_wing.dm"
#include "code\modules\modular_computers\laptop_vendor.dm"
#include "code\modules\modular_computers\computers\modular_computer\core.dm"
@@ -3060,8 +3061,8 @@
#include "code\modules\organs\organ_stump.dm"
#include "code\modules\organs\pain.dm"
#include "code\modules\organs\robolimbs.dm"
-#include "code\modules\organs\robolimbs_vr.dm"
#include "code\modules\organs\robolimbs_custom.dm"
+#include "code\modules\organs\robolimbs_vr.dm"
#include "code\modules\organs\wound.dm"
#include "code\modules\organs\internal\appendix.dm"
#include "code\modules\organs\internal\augment.dm"