diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index 7f8be90c62..cde26bd199 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -41,6 +41,7 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, mam_tails_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, mam_ears_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails_animated, mam_tails_animated_list)
+ init_sprite_accessory_subtypes(/datum/sprite_accessory/taur, taur_list)
//avian bodyparts (i swear this isn't starbound)
// init_sprite_accessory_subtypes(/datum/sprite_accessory/beaks/avian, avian_beaks_list)
// init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/avian, avian_tails_list)
diff --git a/code/citadel/_helpers.dm b/code/citadel/_helpers.dm
index 6b911c1aa6..3879c0ec50 100644
--- a/code/citadel/_helpers.dm
+++ b/code/citadel/_helpers.dm
@@ -36,6 +36,7 @@ var/global/list/mam_body_markings_list = list()
var/global/list/mam_ears_list = list()
var/global/list/mam_tails_list = list()
var/global/list/mam_tails_animated_list = list()
+var/global/list/taur_list = list()
//Exotic Species
var/global/list/exotic_tails_list = list()
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index c10c0a617e..ae67f69c59 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -62,7 +62,7 @@ var/list/preferences_datums = list()
var/eye_color = "000" //Eye color
var/datum/species/pref_species = new /datum/species/human() //Mutant race
var/list/features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "mam_body_markings" = "None", "mam_ears" = "None", "mam_tail" = "None", "mam_tail_animated" = "None",
- "xenodorsal" = "None", "xenohead" = "None", "xenotail" = "None", "legs" = "Normal Legs")
+ "xenodorsal" = "None", "xenohead" = "None", "xenotail" = "None", "legs" = "Normal Legs", "taur" = "None")
var/list/custom_names = list("clown", "mime", "ai", "cyborg", "religion", "deity")
var/prefered_security_department = SEC_DEPT_RANDOM
@@ -369,6 +369,15 @@ var/list/preferences_datums = list()
dat += ""
+ if("taur" in pref_species.mutant_bodyparts)
+ dat += "
"
+
+ dat += "Taur Body"
+
+ dat += "[features["taur"]] "
+
+ dat += " | "
+
//Xeno Bodyparts
if("xenohead" in pref_species.mutant_bodyparts)
dat += ""
@@ -1099,6 +1108,12 @@ var/list/preferences_datums = list()
if(new_tail)
features["mam_tail"] = new_tail
+ if("taur")
+ var/new_taur
+ new_taur = input(user, "Choose your character's tauric body:", "Character Preference") as null|anything in taur_list
+ if(new_taur)
+ features["taur"] = new_taur
+
/* Doesn't exist yet. will include facial overlays to mimic 5th port species heads.
if("mam_snout")
var/new_snout
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 5b389d6f64..bbb4358246 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -318,6 +318,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_mam_tail"] >> features["mam_tail"]
S["feature_mam_ears"] >> features["mam_ears"]
S["feature_mam_tail_animated"] >> features["mam_tail_animated"]
+ S["feature_taur"] >> features["taur"]
//Xeno features
S["feature_xeno_tail"] >> features["xenotail"]
S["feature_xeno_dors"] >> features["xenodorsal"]
@@ -400,6 +401,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
features["mam_body_markings"] = sanitize_inlist(features["mam_body_markings"], mam_body_markings_list)
features["mam_ears"] = sanitize_inlist(features["mam_ears"], mam_ears_list)
features["mam_tail"] = sanitize_inlist(features["mam_tail"], mam_tails_list)
+ features["taur"] = sanitize_inlist(features["taur"], taur_list)
//Xeno features
features["xenotail"] = sanitize_inlist(features["xenotail"], xeno_tail_list)
features["xenohead"] = sanitize_inlist(features["xenohead"], xeno_head_list)
@@ -465,6 +467,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_mam_tail"] << features["mam_tail"]
S["feature_mam_ears"] << features["mam_ears"]
S["feature_mam_tail_animated"] << features["mam_tail_animated"]
+ S["feature_taur"] << features["taur"]
//Xeno features
S["feature_xeno_tail"] << features["xenotail"]
S["feature_xeno_dors"] << features["xenodorsal"]
@@ -507,9 +510,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["default_slot"] << slot
S.cd = "/character[slot]"
- S["belly_prefs"] >> belly_prefs
- S["devourable"] >> devourable
- S["digestable"] >> digestable
+ S["belly_prefs"] >> belly_prefs
+ S["devourable"] >> devourable
+ S["digestable"] >> digestable
digestable = sanitize_integer(digestable, 0, 1, initial(digestable))
devourable = sanitize_integer(devourable, 0, 1, initial(devourable))
@@ -525,9 +528,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
if(!S) return 0
S.cd = "/character[default_slot]"
- S["belly_prefs"] << belly_prefs
- S["devourable"] << devourable
- S["digestable"] << digestable
+ S["belly_prefs"] << belly_prefs
+ S["devourable"] << devourable
+ S["digestable"] << digestable
return 1
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index ab58539a67..3d620a37dc 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -595,11 +595,11 @@
threatcount += 2
//Check for dresscode violations
- if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard))
- threatcount += 2
+ if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/syndi) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi))
+ threatcount += 5
//Check for nonhuman scum
- if(dna && dna.species.id && dna.species.id != "human")
+ if(dna && dna.species.id && dna.species.id != "human" || "lizard" || "canine" || "felid" || "avian" || "shark" || "moth")
threatcount += 1
//mindshield implants imply trustworthyness
@@ -608,7 +608,7 @@
//Agent cards lower threatlevel.
if(istype(idcard, /obj/item/weapon/card/id/syndicate))
- threatcount -= 5
+ threatcount -= 2
return threatcount
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 1f869c02e5..6e18691730 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -303,22 +303,22 @@
var/obj/item/bodypart/head/HD = H.get_bodypart("head")
if("tail_lizard" in mutant_bodyparts)
- if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
+ if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || !H.dna.features["taur"] == "None")
bodyparts_to_add -= "tail_lizard"
if("waggingtail_lizard" in mutant_bodyparts)
- if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
+ if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || !H.dna.features["taur"] == "None")
bodyparts_to_add -= "waggingtail_lizard"
else if ("tail_lizard" in mutant_bodyparts)
bodyparts_to_add -= "waggingtail_lizard"
if("tail_human" in mutant_bodyparts)
- if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
+ if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || !H.dna.features["taur"] == "None")
bodyparts_to_add -= "tail_human"
if("waggingtail_human" in mutant_bodyparts)
- if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
+ if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || !H.dna.features["taur"] == "None")
bodyparts_to_add -= "waggingtail_human"
else if ("tail_human" in mutant_bodyparts)
bodyparts_to_add -= "waggingtail_human"
@@ -373,11 +373,11 @@
//Other Races
if("mam_tail" in mutant_bodyparts)
- if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
+ if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || !H.dna.features["taur"] == "None")
bodyparts_to_add -= "mam_tail"
if("mam_waggingtail" in mutant_bodyparts)
- if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
+ if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT || !H.dna.features["taur"] == "None"))
bodyparts_to_add -= "mam_waggingtail"
else if ("mam_tail" in mutant_bodyparts)
bodyparts_to_add -= "mam_waggingtail"
@@ -386,6 +386,10 @@
if(!H.dna.features["mam_ears"] || H.dna.features["mam_ears"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "mam_ears"
+ if("taur" in mutant_bodyparts)
+ if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || !H.dna.features["mam_tail"] == "None" || !H.dna.features["mam_waggingtail"] == "None")
+ bodyparts_to_add -= "taur"
+
//Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs.
var/update_needed = FALSE
@@ -462,6 +466,8 @@
S = mam_body_markings_list[H.dna.features["mam_body_markings"]]
if("mam_ears")
S = mam_ears_list[H.dna.features["mam_ears"]]
+ if("taur")
+ S = taur_list[H.dna.features["taur"]]
//Xeno Bodyparts
if("xenodorsal")
diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
index 7170f3127b..29d531f926 100644
--- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
@@ -4,8 +4,8 @@ datum/species/canid
default_color = "4B4B4B"
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR)
// subspecies = list("fox")
- mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "snout", "legs")
- default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "body_markings" = "None", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "None")
+ mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "snout", "legs", "taur")
+ default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "body_markings" = "None", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "None", "taur" = "None")
attack_verb = "claw"
attack_sound = 'sound/weapons/slash.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
@@ -22,8 +22,8 @@ datum/species/canid
id = "felid"
default_color = "BCAC9B"
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR)
- mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "snout", "legs")
- default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "Belly", "mam_ears" = "Big Cat", "mam_tail" = "Big Cat")
+ mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "snout", "legs", "taur")
+ default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "Belly", "mam_ears" = "Big Cat", "mam_tail" = "Big Cat", "taur" = "None")
attack_verb = "claw"
attack_sound = 'sound/weapons/slash.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
@@ -52,8 +52,8 @@ datum/species/canid
id = "avian"
default_color = "BCAC9B"
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR)
- mutant_bodyparts = list("beak", "wings", "avian_tail")
- default_features = list("beak" = "None", "wings" = "None")
+ mutant_bodyparts = list("beak", "wings", "avian_tail", "taur")
+ default_features = list("beak" = "None", "wings" = "None", "taur" = "None")
attack_verb = "peck"
attack_sound = 'sound/weapons/slash.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm
index dad291b51a..94778d2716 100644
--- a/code/modules/mob/living/carbon/human/species_types/humans.dm
+++ b/code/modules/mob/living/carbon/human/species_types/humans.dm
@@ -3,8 +3,8 @@
id = "human"
default_color = "FFFFFF"
species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,HAIR,FACEHAIR,LIPS)
- mutant_bodyparts = list("tail_human", "ears")
- default_features = list("tail_human" = "None", "ears" = "None")
+ mutant_bodyparts = list("tail_human", "ears", "taur")
+ default_features = list("tail_human" = "None", "ears" = "None", "taur" = "none")
use_skintones = 1
skinned_type = /obj/item/stack/sheet/animalhide/human
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
index f55f5cade2..306a4136bb 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -5,9 +5,9 @@
say_mod = "hisses"
default_color = "00FF00"
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR)
- mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs")
+ mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur")
mutant_organs = list(/obj/item/organ/tongue/lizard)
- default_features = list("mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs")
+ default_features = list("mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "taur" = "None")
attack_verb = "slash"
attack_sound = 'sound/weapons/slash.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
diff --git a/code/modules/mob/new_player/sprite_accessories_Citadel.dm b/code/modules/mob/new_player/sprite_accessories_Citadel.dm
index f8998378af..a0614fd504 100644
--- a/code/modules/mob/new_player/sprite_accessories_Citadel.dm
+++ b/code/modules/mob/new_player/sprite_accessories_Citadel.dm
@@ -1,4 +1,4 @@
-/datum/sprite_accessories
+/datum/sprite_accessory
var/extra = 0
var/extra_icon = 'icons/mob/mam_bodyparts.dmi'
var/extra_color_src = MUTCOLORS2 //The color source for the extra overlay.
@@ -329,10 +329,16 @@
name = "Squirrel"
icon_state = "squirrel"
+// Wah
+
/datum/sprite_accessory/mam_tails/ailurus
name = "Ailurus"
icon_state = "ailurus"
+/datum/sprite_accessory/mam_tails_animated/ailurus
+ name = "Ailurus"
+ icon_state = "ailurus"
+
/******************************************
************ Body Markings ****************
*******************************************/
@@ -349,18 +355,88 @@
name = "Belly"
icon_state = "belly"
gender_specific = 1
-/*
+
/datum/sprite_accessory/mam_body_markings/bellyhandsfeet
name = "Belly, Hands, & Feet"
icon_state = "bellyhandsfeet"
gender_specific = 1
extra = 1
extra_color_src = MUTCOLORS3
-*/
+
/******************************************
************ Taur Bodies ******************
*******************************************/
+/datum/sprite_accessory/taur
+ icon = 'icons/mob/special/mam_taur.dmi'
+ extra_icon = 'icons/mob/special/mam_taur.dmi'
+ extra = 1
+ extra_color_src = MUTCOLORS2
+ center = TRUE
+ dimension_x = 64
+
+/datum/sprite_accessory/taur/none
+ name = "None"
+
+/datum/sprite_accessory/taur/panther
+ name = "Panther"
+ icon_state = "panther"
+ hasinner = 1
+
+/datum/sprite_accessory/taur/tajaran
+ name = "Tajaran"
+ icon_state = "tajaran"
+
+/datum/sprite_accessory/taur/horse
+ name = "Horse"
+ icon_state = "horse"
+
+/datum/sprite_accessory/taur/lab
+ name = "Lab"
+ icon_state = "lab"
+
+/datum/sprite_accessory/taur/shepard
+ name = "Shepard"
+ icon_state = "shepard"
+ hasinner = 1
+
+/datum/sprite_accessory/taur/husky
+ name = "Husky"
+ icon_state = "husky"
+
+/datum/sprite_accessory/taur/cow
+ name = "Cow"
+ icon_state = "cow"
+
+/datum/sprite_accessory/taur/fox
+ name = "Fox"
+ icon_state = "fox"
+
+/datum/sprite_accessory/taur/wolf
+ name = "Wolf"
+ icon_state = "wolf"
+
+/datum/sprite_accessory/taur/naga
+ name = "Naga"
+ hasinner = 1
+ icon_state = "naga"
+
+/datum/sprite_accessory/taur/otie
+ name = "Otie"
+ hasinner = 1
+ icon_state = "otie"
+
+/datum/sprite_accessory/taur/drake
+ name = "Drake"
+ icon_state = "drake"
+
+/datum/sprite_accessory/taur/drider
+ name = "Drider"
+ icon_state = "drider"
+
+/******************************************
+*************** Ayyliums ******************
+*******************************************/
//Xeno Dorsal Tubes
/datum/sprite_accessory/xeno_dorsal
diff --git a/icons/mob/special/mam_taur.dmi b/icons/mob/special/mam_taur.dmi
new file mode 100644
index 0000000000..95a7f85461
Binary files /dev/null and b/icons/mob/special/mam_taur.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index dadeb4be27..743dccf542 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1674,6 +1674,7 @@
#include "code\modules\mob\new_player\poll.dm"
#include "code\modules\mob\new_player\preferences_setup.dm"
#include "code\modules\mob\new_player\sprite_accessories.dm"
+#include "code\modules\mob\new_player\sprite_accessories_Citadel.dm"
#include "code\modules\modular_computers\laptop_vendor.dm"
#include "code\modules\modular_computers\computers\item\computer.dm"
#include "code\modules\modular_computers\computers\item\computer_components.dm"
|