diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 87330ce42c..ecff37c1f3 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -418,7 +418,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += ""
mutant_category = 0
- if("tail_lizard" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["tail_lizard"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -431,7 +431,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += ""
mutant_category = 0
- if("mam_tail" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["mam_tail"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -443,7 +443,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("tail_human" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["tail_human"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -456,7 +456,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += ""
mutant_category = 0
- if("meat_type" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["meat_type"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -468,7 +468,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("snout" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["snout"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -480,7 +480,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("horns" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["horns"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -493,7 +493,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
mutant_category++
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
- if("frills" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["frills"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -506,7 +506,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += ""
mutant_category = 0
- if("spines" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["spines"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -519,7 +519,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += ""
mutant_category = 0
- if("body_markings" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["body_markings"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -531,7 +531,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("mam_body_markings" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["mam_body_markings"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -543,7 +543,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
- if("mam_ears" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["mam_ears"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -556,7 +556,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += ""
mutant_category = 0
- if("ears" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["ears"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -569,7 +569,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += ""
mutant_category = 0
- if("mam_snouts" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["mam_snouts"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -581,7 +581,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("legs" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["legs"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -593,7 +593,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("deco_wings" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["deco_wings"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -602,7 +602,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "[features["deco_wings"]]"
dat += " Change
"
- if("insect_wings" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["insect_wings"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -614,7 +614,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("insect_fluff" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["insect_fluff"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -625,7 +625,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("taur" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["taur"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -633,7 +633,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "[features["taur"]]"
- if("insect_markings" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["insect_markings"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -650,7 +650,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("wings" in pref_species.mutant_bodyparts && GLOB.r_wings_list.len >1)
+ if(pref_species.mutant_bodyparts["wings"] && GLOB.r_wings_list.len >1)
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -662,7 +662,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("xenohead" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["xenohead"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -674,7 +674,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("xenotail" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["xenotail"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -686,7 +686,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("xenodorsal" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["xenodorsal"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -698,7 +698,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("ipc_screen" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["ipc_screen"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -710,7 +710,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
mutant_category = 0
- if("ipc_antenna" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["ipc_antenna"])
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -1563,14 +1563,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
pref_species = new newtype()
//let's ensure that no weird shit happens on species swapping.
custom_species = null
- if(!("body_markings" in pref_species.default_features))
+ if(!pref_species.mutant_bodyparts["body_markings"])
features["body_markings"] = "None"
- if(!("mam_body_markings" in pref_species.default_features))
+ if(!pref_species.mutant_bodyparts["mam_body_markings"])
features["mam_body_markings"] = "None"
- if("mam_body_markings" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["mam_body_markings"])
if(features["mam_body_markings"] == "None")
features["mam_body_markings"] = "Plain"
- if("tail_lizard" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["tail_lizard"])
features["tail_lizard"] = "Smooth"
if(pref_species.id == "felinid")
features["mam_tail"] = "Cat"
@@ -2389,17 +2389,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
character.dna.nameless = character.nameless
character.dna.custom_species = character.custom_species
- if("tail_lizard" in pref_species.default_features)
- character.dna.species.mutant_bodyparts |= "tail_lizard"
- if("mam_tail" in pref_species.default_features)
- character.dna.species.mutant_bodyparts |= "mam_tail"
- if("xenotail" in pref_species.default_features)
- character.dna.species.mutant_bodyparts |= "xenotail"
-
- if("meat_type" in pref_species.default_features)
+ if(pref_species.mutant_bodyparts["meat_type"])
character.type_of_meat = GLOB.meat_types[features["meat_type"]]
- if(("legs" in character.dna.species.mutant_bodyparts) && (character.dna.features["legs"] == "Digitigrade" || character.dna.features["legs"] == "Avian"))
+ if(character.dna.species.mutant_bodyparts["legs"] && (character.dna.features["legs"] == "Digitigrade" || character.dna.features["legs"] == "Avian"))
pref_species.species_traits |= DIGITIGRADE
else
pref_species.species_traits -= DIGITIGRADE
diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm
index dfb62ef59d..03f4640718 100644
--- a/code/modules/food_and_drinks/food/snacks_pie.dm
+++ b/code/modules/food_and_drinks/food/snacks_pie.dm
@@ -44,7 +44,7 @@
if(ishuman(hit_atom))
var/mob/living/carbon/human/H = hit_atom
var/mutable_appearance/creamoverlay = mutable_appearance('icons/effects/creampie.dmi')
- if((("mam_snouts" in H.dna.species.default_features) && H.dna.features["mam_snouts"] != "None") || (("snout" in H.dna.species.default_features) && H.dna.features["snout"] != "None"))
+ if((H.dna.species.mutant_bodyparts["mam_snouts"] && H.dna.features["mam_snouts"] != "None") || (H.dna.species.mutant_bodyparts["snout"] && H.dna.features["snout"] != "None"))
creamoverlay.icon_state = "creampie_snout"
else
creamoverlay.icon_state = "creampie_human"
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 1e87a1b88b..836560ca99 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -300,30 +300,12 @@
"You give [src] a pat on the head to make [p_them()] feel better!")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat)
friendly_check = TRUE
- if(S?.can_wag_tail(src))
- if("tail_human" in S.default_features)
- if(dna.features["tail_human"] == "None")
- return
- else
- if(!dna.species.is_wagging_tail())
- emote("wag")
-
- if("tail_lizard" in S.default_features)
- if(dna.features["tail_lizard"] == "None")
- return
- else
- if(!dna.species.is_wagging_tail())
- emote("wag")
-
- if("mam_tail" in S.default_features)
- if(dna.features["mam_tail"] == "None")
- return
- else
- if(!dna.species.is_wagging_tail())
- emote("wag")
-
- else
- return
+ if(S?.can_wag_tail(src) && !dna.species.is_wagging_tail())
+ var/static/list/many_tails = list("tail_human", "tail_lizard", "mam_tail")
+ for(var/T in many_tails)
+ if(S.mutant_bodyparts[T] && dna.features[T] != "None")
+ emote("wag")
+ break
else if(check_zone(M.zone_selected) == BODY_ZONE_R_ARM || check_zone(M.zone_selected) == BODY_ZONE_L_ARM)
M.visible_message( \
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index acaf713e28..cb0dbef332 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -128,7 +128,7 @@
/datum/emote/living/carbon/human/wing/select_message_type(mob/user)
. = ..()
var/mob/living/carbon/human/H = user
- if("wings" in H.dna.species.mutant_bodyparts)
+ if(H.dna.species.mutant_bodyparts["wings"])
. = "opens " + message
else
. = "closes " + message
@@ -143,17 +143,17 @@
/mob/living/carbon/human/proc/OpenWings()
if(!dna || !dna.species)
return
- if("wings" in dna.species.mutant_bodyparts)
+ if(dna.species.mutant_bodyparts["wings"])
+ dna.species.mutant_bodyparts["wingsopen"] = dna.species.mutant_bodyparts["wings"]
dna.species.mutant_bodyparts -= "wings"
- dna.species.mutant_bodyparts |= "wingsopen"
update_body()
/mob/living/carbon/human/proc/CloseWings()
if(!dna || !dna.species)
return
- if("wingsopen" in dna.species.mutant_bodyparts)
+ if(dna.species.mutant_bodyparts["wingsopen"])
+ dna.species.mutant_bodyparts["wings"] = dna.species.mutant_bodyparts["wingsopen"]
dna.species.mutant_bodyparts -= "wingsopen"
- dna.species.mutant_bodyparts |= "wings"
update_body()
if(isturf(loc))
var/turf/T = loc
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 375050f964..9a8882a0be 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -53,8 +53,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/blacklisted = 0 //Flag to exclude from green slime core species.
var/dangerous_existence //A flag for transformation spells that tells them "hey if you turn a person into one of these without preperation, they'll probably die!"
var/say_mod = "says" // affects the speech message
- var/list/default_features = list() // Default mutant bodyparts for this species. Don't forget to set one for every mutant bodypart you allow this species to have.
- var/list/mutant_bodyparts = list() // Visible CURRENT bodyparts that are unique to a species. DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK SHIT UP! Changes to this list for non-species specific bodyparts (ie cat ears and tails) should be assigned at organ level if possible. Layer hiding is handled by handle_mutant_bodyparts() below.
+ var/list/mutant_bodyparts = list() // Visible CURRENT bodyparts that are unique to a species. Changes to this list for non-species specific bodyparts (ie cat ears and tails) should be assigned at organ level if possible. Layer hiding is handled by handle_mutant_bodyparts() below.
var/list/mutant_organs = list() //Internal organs that are unique to this race.
var/speedmod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster
var/armor = 0 // overall defense for the race... or less defense, if it's negative.
@@ -291,7 +290,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
C.hud_used.update_locked_slots()
// this needs to be FIRST because qdel calls update_body which checks if we have DIGITIGRADE legs or not and if not then removes DIGITIGRADE from species_traits
- if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian"))
+ if(C.dna.species.mutant_bodyparts["legs"] && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian"))
species_traits |= DIGITIGRADE
if(DIGITIGRADE in species_traits)
C.Digitigrade_Leg_Swap(FALSE)
@@ -329,7 +328,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/mob/living/carbon/human/H = C
if(NOGENITALS in H.dna.species.species_traits)
H.give_genitals(TRUE) //call the clean up proc to delete anything on the mob then return.
- if("meat_type" in default_features) //I can't believe it's come to the meat
+ if(mutant_bodyparts["meat_type"]) //I can't believe it's come to the meat
H.type_of_meat = GLOB.meat_types[H.dna.features["meat_type"]]
C.add_movespeed_modifier(MOVESPEED_ID_SPECIES, TRUE, 100, override=TRUE, multiplicative_slowdown=speedmod, movetypes=(~FLYING))
@@ -352,7 +351,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
C.remove_movespeed_modifier(MOVESPEED_ID_SPECIES)
- if("meat_type" in default_features)
+ if(mutant_bodyparts["meat_type"])
C.type_of_meat = GLOB.meat_types[C.dna.features["meat_type"]]
else
C.type_of_meat = initial(meat)
@@ -617,99 +616,99 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
var/tauric = H.dna.features["taur"] && H.dna.features["taur"] != "None"
- if("tail_lizard" in mutant_bodyparts)
+ if(mutant_bodyparts["tail_lizard"])
if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric)
bodyparts_to_add -= "tail_lizard"
- if("waggingtail_lizard" in mutant_bodyparts)
+ if(mutant_bodyparts["waggingtail_lizard"])
if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric)
bodyparts_to_add -= "waggingtail_lizard"
- else if ("tail_lizard" in mutant_bodyparts)
+ else if (mutant_bodyparts["tail_lizard"])
bodyparts_to_add -= "waggingtail_lizard"
- if("tail_human" in mutant_bodyparts)
+ if(mutant_bodyparts["tail_human"])
if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric)
bodyparts_to_add -= "tail_human"
- if("waggingtail_human" in mutant_bodyparts)
+ if(mutant_bodyparts["waggingtail_human"])
if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric)
bodyparts_to_add -= "waggingtail_human"
- else if ("tail_human" in mutant_bodyparts)
+ else if (mutant_bodyparts["tail_human"])
bodyparts_to_add -= "waggingtail_human"
- if("spines" in mutant_bodyparts)
+ if(mutant_bodyparts["spines"])
if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))
bodyparts_to_add -= "spines"
- if("waggingspines" in mutant_bodyparts)
+ if(mutant_bodyparts["waggingspines"])
if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))
bodyparts_to_add -= "waggingspines"
- else if ("tail" in mutant_bodyparts)
+ else if (mutant_bodyparts["tail"])
bodyparts_to_add -= "waggingspines"
- if("snout" in mutant_bodyparts) //Take a closer look at that snout!
+ if(mutant_bodyparts["snout"]) //Take a closer look at that snout!
if((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "snout"
- if("frills" in mutant_bodyparts)
+ if(mutant_bodyparts["frills"])
if(!H.dna.features["frills"] || H.dna.features["frills"] == "None" || H.head && (H.head.flags_inv & HIDEEARS) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "frills"
- if("horns" in mutant_bodyparts)
+ if(mutant_bodyparts["horns"])
if(!H.dna.features["horns"] || H.dna.features["horns"] == "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 -= "horns"
- if("ears" in mutant_bodyparts)
+ if(mutant_bodyparts["ears"])
if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags_inv & HIDEEARS) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEEARS)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "ears"
- if("wings" in mutant_bodyparts)
+ if(mutant_bodyparts["wings"])
if(!H.dna.features["wings"] || H.dna.features["wings"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) && (!H.wear_suit.species_exception || !is_type_in_list(src, H.wear_suit.species_exception))))
bodyparts_to_add -= "wings"
- if("wings_open" in mutant_bodyparts)
+ if(mutant_bodyparts["wings_open"])
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) && (!H.wear_suit.species_exception || !is_type_in_list(src, H.wear_suit.species_exception)))
bodyparts_to_add -= "wings_open"
- else if ("wings" in mutant_bodyparts)
+ else if (mutant_bodyparts["wings"])
bodyparts_to_add -= "wings_open"
- if("insect_fluff" in mutant_bodyparts)
+ if(mutant_bodyparts["insect_fluff"])
if(!H.dna.features["insect_fluff"] || H.dna.features["insect_fluff"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
bodyparts_to_add -= "insect_fluff"
//CITADEL EDIT
//Race specific bodyparts:
//Xenos
- if("xenodorsal" in mutant_bodyparts)
+ if(mutant_bodyparts["xenodorsal"])
if(!H.dna.features["xenodorsal"] || H.dna.features["xenodorsal"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)))
bodyparts_to_add -= "xenodorsal"
- if("xenohead" in mutant_bodyparts)//This is an overlay for different castes using different head crests
+ if(mutant_bodyparts["xenohead"])//This is an overlay for different castes using different head crests
if(!H.dna.features["xenohead"] || H.dna.features["xenohead"] == "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 -= "xenohead"
- if("xenotail" in mutant_bodyparts)
+ if(mutant_bodyparts["xenotail"])
if(!H.dna.features["xenotail"] || H.dna.features["xenotail"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
bodyparts_to_add -= "xenotail"
//Other Races
- if("mam_tail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_tail"])
if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric)
bodyparts_to_add -= "mam_tail"
- if("mam_waggingtail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_waggingtail"])
if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric)
bodyparts_to_add -= "mam_waggingtail"
- else if ("mam_tail" in mutant_bodyparts)
+ else if (mutant_bodyparts["mam_tail"])
bodyparts_to_add -= "mam_waggingtail"
- if("mam_ears" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_ears"])
if(!H.dna.features["mam_ears"] || H.dna.features["mam_ears"] == "None" || H.head && (H.head.flags_inv & HIDEEARS) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEEARS)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "mam_ears"
- if("mam_snouts" in mutant_bodyparts) //Take a closer look at that snout!
+ if(mutant_bodyparts["mam_snouts"]) //Take a closer look at that snout!
if((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "mam_snouts"
- if("taur" in mutant_bodyparts)
+ if(mutant_bodyparts["taur"])
if(!tauric || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)))
bodyparts_to_add -= "taur"
diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm
index 924f5f9c6a..5474adcf88 100644
--- a/code/modules/mob/living/carbon/human/species_types/angel.dm
+++ b/code/modules/mob/living/carbon/human/species_types/angel.dm
@@ -3,8 +3,7 @@
id = "angel"
default_color = "FFFFFF"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
- mutant_bodyparts = list("wings")
- default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "Angel")
+ mutant_bodyparts = list("tail_human" = "None", "ears" = "None", "wings" = "Angel")
use_skintones = 1
no_equip = list(SLOT_BACK)
blacklisted = 1
@@ -16,8 +15,8 @@
/datum/species/angel/on_species_gain(mob/living/carbon/human/H, datum/species/old_species)
..()
if(H.dna && H.dna.species && (H.dna.features["wings"] != "Angel"))
- if(!("wings" in H.dna.species.mutant_bodyparts))
- H.dna.species.mutant_bodyparts |= "wings"
+ if(!H.dna.species.mutant_bodyparts["wings"])
+ H.dna.species.mutant_bodyparts["wings"] = "Angel"
H.dna.features["wings"] = "Angel"
H.update_body()
if(ishuman(H) && !fly)
@@ -32,7 +31,7 @@
H.setMovetype(H.movement_type & ~FLYING)
ToggleFlight(H,0)
if(H.dna && H.dna.species && (H.dna.features["wings"] == "Angel"))
- if("wings" in H.dna.species.mutant_bodyparts)
+ if(H.dna.species.mutant_bodyparts["wings"])
H.dna.species.mutant_bodyparts -= "wings"
H.dna.features["wings"] = "None"
H.update_body()
diff --git a/code/modules/mob/living/carbon/human/species_types/bugmen.dm b/code/modules/mob/living/carbon/human/species_types/bugmen.dm
index 6bd8a44e0a..da53adece3 100644
--- a/code/modules/mob/living/carbon/human/species_types/bugmen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/bugmen.dm
@@ -4,8 +4,7 @@
default_color = "00FF00"
species_traits = list(LIPS,EYECOLOR,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
- mutant_bodyparts = list("mam_ears","mam_tail", "taur", "insect_wings","mam_snout", "mam_snouts", "insect_fluff","insect_markings")
- default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None",
+ mutant_bodyparts = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None",
"insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None", "insect_markings" = "None")
attack_verb = "slash"
attack_sound = 'sound/weapons/slash.ogg'
@@ -25,21 +24,21 @@
. = ..()
/datum/species/insect/can_wag_tail(mob/living/carbon/human/H)
- return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_tail"] || mutant_bodyparts["mam_waggingtail"]
/datum/species/insect/is_wagging_tail(mob/living/carbon/human/H)
- return ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_waggingtail"]
/datum/species/insect/start_wagging_tail(mob/living/carbon/human/H)
- if("mam_tail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_tail"])
+ mutant_bodyparts["mam_waggingtail"] = mutant_bodyparts["mam_tail"]
mutant_bodyparts -= "mam_tail"
- mutant_bodyparts |= "mam_waggingtail"
H.update_body()
/datum/species/insect/stop_wagging_tail(mob/living/carbon/human/H)
- if("mam_waggingtail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_waggingtail"])
+ mutant_bodyparts["mam_tail"] = mutant_bodyparts["mam_waggingtail"]
mutant_bodyparts -= "mam_waggingtail"
- mutant_bodyparts |= "mam_tail"
H.update_body()
/datum/species/insect/qualifies_for_rank(rank, list/features)
diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
index 499e3b0276..a41cc8c55a 100644
--- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
@@ -4,7 +4,7 @@
default_color = "FFFFFF"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH)
- default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None")
+ mutant_bodyparts = list("tail_human" = "None", "ears" = "None", "deco_wings" = "None")
use_skintones = TRUE
mutant_brain = /obj/item/organ/brain/dullahan
mutanteyes = /obj/item/organ/eyes/dullahan
diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
index 15422b2cdd..5a9b830bc8 100644
--- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
@@ -8,7 +8,6 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
default_color = "FFFFFF"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR)
inherent_traits = list()
- default_features = list("mcolor" = "FFF", "wings" = "None")
limbs_id = "human"
use_skintones = 1
say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL
diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm
index 5801e163e5..2f0595e2c0 100644
--- a/code/modules/mob/living/carbon/human/species_types/felinid.dm
+++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm
@@ -4,8 +4,7 @@
id = "felinid"
limbs_id = "human"
- mutant_bodyparts = list("mam_ears", "mam_tail", "deco_wings")
- default_features = list("mcolor" = "FFF", "mam_tail" = "Cat", "mam_ears" = "Cat", "wings" = "None", "deco_wings" = "None")
+ mutant_bodyparts = list("mam_tail" = "Cat", "mam_ears" = "Cat", "deco_wings" = "None")
mutantears = /obj/item/organ/ears/cat
mutanttail = /obj/item/organ/tail/cat
@@ -25,21 +24,21 @@
/datum/species/human/felinid/can_wag_tail(mob/living/carbon/human/H)
- return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_tail"] || mutant_bodyparts["mam_waggingtail"]
/datum/species/human/felinid/is_wagging_tail(mob/living/carbon/human/H)
- return ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_waggingtail"]
/datum/species/human/felinid/start_wagging_tail(mob/living/carbon/human/H)
- if("mam_tail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_tail"])
+ mutant_bodyparts["mam_waggingtail"] = mutant_bodyparts["mam_tail"]
mutant_bodyparts -= "mam_tail"
- mutant_bodyparts |= "mam_waggingtail"
H.update_body()
/datum/species/human/felinid/stop_wagging_tail(mob/living/carbon/human/H)
- if("mam_waggingtail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_waggingtail"])
+ mutant_bodyparts["mam_tail"] = mutant_bodyparts["mam_waggingtail"]
mutant_bodyparts -= "mam_waggingtail"
- mutant_bodyparts |= "mam_tail"
H.update_body()
/datum/species/human/felinid/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
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 608d71e2c5..d4b8ea7897 100644
--- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
@@ -5,8 +5,7 @@
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR,WINGCOLOR)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BEAST
- mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "deco_wings", "taur", "horns", "legs")
- default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "None",
+ mutant_bodyparts = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "None",
"mam_body_markings" = "Husky", "taur" = "None", "horns" = "None", "legs" = "Plantigrade", "meat_type" = "Mammalian")
attack_verb = "claw"
attack_sound = 'sound/weapons/slash.ogg'
@@ -26,21 +25,21 @@
. = ..()
/datum/species/mammal/can_wag_tail(mob/living/carbon/human/H)
- return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_tail"] || mutant_bodyparts["mam_waggingtail"]
/datum/species/mammal/is_wagging_tail(mob/living/carbon/human/H)
- return ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_waggingtail"]
/datum/species/mammal/start_wagging_tail(mob/living/carbon/human/H)
- if("mam_tail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_tail"])
+ mutant_bodyparts["mam_waggingtail"] = mutant_bodyparts["mam_tail"]
mutant_bodyparts -= "mam_tail"
- mutant_bodyparts |= "mam_waggingtail"
H.update_body()
/datum/species/mammal/stop_wagging_tail(mob/living/carbon/human/H)
- if("mam_waggingtail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_waggingtail"])
+ mutant_bodyparts["mam_tail"] = mutant_bodyparts["mam_waggingtail"]
mutant_bodyparts -= "mam_waggingtail"
- mutant_bodyparts |= "mam_tail"
H.update_body()
@@ -57,8 +56,7 @@
default_color = "00FF00"
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
species_traits = list(MUTCOLORS,EYECOLOR,LIPS)
- mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "mam_body_markings", "taur", "legs")
- default_features = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None", "legs" = "Digitigrade")
+ mutant_bodyparts = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None", "legs" = "Digitigrade")
attack_verb = "slash"
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 3332465c78..02cff6d924 100644
--- a/code/modules/mob/living/carbon/human/species_types/humans.dm
+++ b/code/modules/mob/living/carbon/human/species_types/humans.dm
@@ -4,8 +4,7 @@
default_color = "FFFFFF"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR)
- mutant_bodyparts = list("ears", "tail_human", "wings", "taur", "deco_wings") // CITADEL EDIT gives humans snowflake parts
- default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF","tail_human" = "None", "ears" = "None", "wings" = "None", "taur" = "None", "deco_wings" = "None")
+ mutant_bodyparts = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None")
use_skintones = 1
skinned_type = /obj/item/stack/sheet/animalhide/human
disliked_food = GROSS | RAW
@@ -24,19 +23,19 @@
. = ..()
/datum/species/human/can_wag_tail(mob/living/carbon/human/H)
- return ("tail_human" in mutant_bodyparts) || ("waggingtail_human" in mutant_bodyparts)
+ return mutant_bodyparts["tail_human"] || mutant_bodyparts["waggingtail_human"]
/datum/species/human/is_wagging_tail(mob/living/carbon/human/H)
- return ("waggingtail_human" in mutant_bodyparts)
+ return mutant_bodyparts["waggingtail_human"]
/datum/species/human/start_wagging_tail(mob/living/carbon/human/H)
- if("tail_human" in mutant_bodyparts)
+ if(mutant_bodyparts["tail_human"])
+ mutant_bodyparts["waggingtail_human"] = mutant_bodyparts["tail_human"]
mutant_bodyparts -= "tail_human"
- mutant_bodyparts |= "waggingtail_human"
H.update_body()
/datum/species/human/stop_wagging_tail(mob/living/carbon/human/H)
- if("waggingtail_human" in mutant_bodyparts)
+ if(mutant_bodyparts["waggingtail_human"])
+ mutant_bodyparts["tail_human"] = mutant_bodyparts["waggingtail_human"]
mutant_bodyparts -= "waggingtail_human"
- mutant_bodyparts |= "tail_human"
H.update_body()
diff --git a/code/modules/mob/living/carbon/human/species_types/ipc.dm b/code/modules/mob/living/carbon/human/species_types/ipc.dm
index b7305a9228..94d5456c3d 100644
--- a/code/modules/mob/living/carbon/human/species_types/ipc.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ipc.dm
@@ -8,8 +8,7 @@
sexes = 0
species_traits = list(MUTCOLORS,NOEYES,NOTRANSSTING)
inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
- mutant_bodyparts = list("ipc_screen", "ipc_antenna")
- default_features = list("ipc_screen" = "Blank", "ipc_antenna" = "None")
+ mutant_bodyparts = list("ipc_screen" = "Blank", "ipc_antenna" = "None")
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc
gib_types = list(/obj/effect/gibspawner/ipc, /obj/effect/gibspawner/ipc/bodypartless)
mutanttongue = /obj/item/organ/tongue/robot/ipc
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 147cb30772..9937b52002 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -7,8 +7,7 @@
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,WINGCOLOR)
mutantlungs = /obj/item/organ/lungs/slime
mutant_heart = /obj/item/organ/heart/slime
- mutant_bodyparts = list("mam_tail", "mam_ears", "mam_snouts", "taur", "deco_wings") //CIT CHANGE
- default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None", "deco_wings" = "None") //CIT CHANGE
+ mutant_bodyparts = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None", "deco_wings" = "None")
inherent_traits = list(TRAIT_TOXINLOVER)
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime
gib_types = list(/obj/effect/gibspawner/slime, /obj/effect/gibspawner/slime/bodypartless)
@@ -127,23 +126,24 @@
. = ..()
/datum/species/jelly/can_wag_tail(mob/living/carbon/human/H)
- return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_tail"] || mutant_bodyparts["mam_waggingtail"]
/datum/species/jelly/is_wagging_tail(mob/living/carbon/human/H)
- return ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_waggingtail"]
/datum/species/jelly/start_wagging_tail(mob/living/carbon/human/H)
- if("mam_tail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_tail"])
+ mutant_bodyparts["mam_waggingtail"] = mutant_bodyparts["mam_tail"]
mutant_bodyparts -= "mam_tail"
- mutant_bodyparts |= "mam_waggingtail"
H.update_body()
/datum/species/jelly/stop_wagging_tail(mob/living/carbon/human/H)
- if("mam_waggingtail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_waggingtail"])
+ mutant_bodyparts["mam_tail"] = mutant_bodyparts["mam_waggingtail"]
mutant_bodyparts -= "mam_waggingtail"
- mutant_bodyparts |= "mam_tail"
H.update_body()
+
////////////////////////////////////////////////////////SLIMEPEOPLE///////////////////////////////////////////////////////////////////
//Slime people are able to split like slimes, retaining a single mind that can swap between bodies at will, even after death.
@@ -431,8 +431,7 @@
default_color = "00FFFF"
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR)
inherent_traits = list(TRAIT_TOXINLOVER)
- mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur")
- default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None")
+ mutant_bodyparts = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None")
say_mod = "says"
hair_color = "mutcolor"
hair_alpha = 160 //a notch brighter so it blends better.
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 6468bd1544..9a6bc2659d 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -11,7 +11,7 @@
mutanttail = /obj/item/organ/tail/lizard
coldmod = 1.5
heatmod = 0.67
- default_features = list("mcolor" = "0F0", "mcolor2" = "0F0", "mcolor3" = "0F0", "tail_lizard" = "Smooth", "snout" = "Round",
+ mutant_bodyparts = list("mcolor" = "0F0", "mcolor2" = "0F0", "mcolor3" = "0F0", "tail_lizard" = "Smooth", "snout" = "Round",
"horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None",
"legs" = "Digitigrade", "taur" = "None", "deco_wings" = "None")
attack_verb = "slash"
@@ -53,25 +53,25 @@
. = ..()
/datum/species/lizard/can_wag_tail(mob/living/carbon/human/H)
- return ("tail_lizard" in mutant_bodyparts) || ("waggingtail_lizard" in mutant_bodyparts)
+ return mutant_bodyparts["tail_lizard"] || mutant_bodyparts["waggingtail_lizard"]
/datum/species/lizard/is_wagging_tail(mob/living/carbon/human/H)
- return ("waggingtail_lizard" in mutant_bodyparts)
+ return mutant_bodyparts["waggingtail_lizard"]
/datum/species/lizard/start_wagging_tail(mob/living/carbon/human/H)
- if("tail_lizard" in mutant_bodyparts)
+ if(mutant_bodyparts["tail_lizard"])
+ mutant_bodyparts["waggingtail_lizard"] = mutant_bodyparts["tail_lizard"]
+ mutant_bodyparts["waggingspines"] = mutant_bodyparts["spines"]
mutant_bodyparts -= "tail_lizard"
mutant_bodyparts -= "spines"
- mutant_bodyparts |= "waggingtail_lizard"
- mutant_bodyparts |= "waggingspines"
H.update_body()
/datum/species/lizard/stop_wagging_tail(mob/living/carbon/human/H)
- if("waggingtail_lizard" in mutant_bodyparts)
+ if(mutant_bodyparts["waggingtail_lizard"])
+ mutant_bodyparts["tail_lizard"] = mutant_bodyparts["waggingtail_lizard"]
+ mutant_bodyparts["spines"] = mutant_bodyparts["waggingspines"]
mutant_bodyparts -= "waggingtail_lizard"
mutant_bodyparts -= "waggingspines"
- mutant_bodyparts |= "tail_lizard"
- mutant_bodyparts |= "spines"
H.update_body()
/*
diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
index 9d5ca92894..3c17ef9066 100644
--- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
@@ -1,8 +1,7 @@
/datum/species/mush //mush mush codecuck
name = "Anthromorphic Mushroom"
id = "mush"
- mutant_bodyparts = list("caps")
- default_features = list("caps" = "Round")
+ mutant_bodyparts = list("caps" = "Round")
fixed_mut_color = "DBBF92"
hair_color = "FF4B19" //cap color, spot color uses eye color
diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
index 7ccccd588d..44a794c2ab 100644
--- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
@@ -76,14 +76,13 @@
name = "Anthromorphic Plant"
id = "podweak"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS)
- mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur", "legs")
- default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs")
+ mutant_bodyparts = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs")
limbs_id = "pod"
light_nutrition_gain_factor = 7.5
light_bruteheal = 0.2
light_burnheal = 0.2
light_toxheal = 0.7
-
+
/datum/species/pod/pseudo_weak/spec_death(gibbed, mob/living/carbon/human/H)
if(H)
stop_wagging_tail(H)
@@ -94,19 +93,19 @@
. = ..()
/datum/species/pod/pseudo_weak/can_wag_tail(mob/living/carbon/human/H)
- return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_tail"] || mutant_bodyparts["mam_waggingtail"]
/datum/species/pod/pseudo_weak/is_wagging_tail(mob/living/carbon/human/H)
- return ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_waggingtail"]
/datum/species/pod/pseudo_weak/start_wagging_tail(mob/living/carbon/human/H)
- if("mam_tail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_tail"])
+ mutant_bodyparts["mam_waggingtail"] = mutant_bodyparts["mam_tail"]
mutant_bodyparts -= "mam_tail"
- mutant_bodyparts |= "mam_waggingtail"
H.update_body()
/datum/species/pod/pseudo_weak/stop_wagging_tail(mob/living/carbon/human/H)
- if("mam_waggingtail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_waggingtail"])
+ mutant_bodyparts["mam_tail"] = mutant_bodyparts["mam_waggingtail"]
mutant_bodyparts -= "mam_waggingtail"
- mutant_bodyparts |= "mam_tail"
H.update_body()
diff --git a/code/modules/mob/living/carbon/human/species_types/synthliz.dm b/code/modules/mob/living/carbon/human/species_types/synthliz.dm
index 40441c45fd..408d264546 100644
--- a/code/modules/mob/living/carbon/human/species_types/synthliz.dm
+++ b/code/modules/mob/living/carbon/human/species_types/synthliz.dm
@@ -6,8 +6,7 @@
default_color = "00FF00"
species_traits = list(MUTCOLORS,NOTRANSSTING,EYECOLOR,LIPS,HAIR)
inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
- mutant_bodyparts = list("ipc_antenna","mam_tail", "mam_snouts","legs", "mam_body_markings", "taur")
- default_features = list("ipc_antenna" = "Synthetic Lizard - Antennae","mam_tail" = "Synthetic Lizard", "mam_snouts" = "Synthetic Lizard - Snout", "legs" = "Digitigrade", "mam_body_markings" = "Synthetic Lizard - Plates", "taur" = "None")
+ mutant_bodyparts = list("ipc_antenna" = "Synthetic Lizard - Antennae","mam_tail" = "Synthetic Lizard", "mam_snouts" = "Synthetic Lizard - Snout", "legs" = "Digitigrade", "mam_body_markings" = "Synthetic Lizard - Plates", "taur" = "None")
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc
gib_types = list(/obj/effect/gibspawner/ipc, /obj/effect/gibspawner/ipc/bodypartless)
mutanttongue = /obj/item/organ/tongue/robot/ipc
@@ -35,19 +34,19 @@
. = ..()
/datum/species/synthliz/can_wag_tail(mob/living/carbon/human/H)
- return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_tail"] || mutant_bodyparts["mam_waggingtail"]
/datum/species/synthliz/is_wagging_tail(mob/living/carbon/human/H)
- return ("mam_waggingtail" in mutant_bodyparts)
+ return mutant_bodyparts["mam_waggingtail"]
/datum/species/synthliz/start_wagging_tail(mob/living/carbon/human/H)
- if("mam_tail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_tail"])
+ mutant_bodyparts["mam_waggingtail"] = mutant_bodyparts["mam_tail"]
mutant_bodyparts -= "mam_tail"
- mutant_bodyparts |= "mam_waggingtail"
H.update_body()
/datum/species/synthliz/stop_wagging_tail(mob/living/carbon/human/H)
- if("mam_waggingtail" in mutant_bodyparts)
+ if(mutant_bodyparts["mam_waggingtail"])
+ mutant_bodyparts["mam_tail"] = mutant_bodyparts["mam_waggingtail"]
mutant_bodyparts -= "mam_waggingtail"
- mutant_bodyparts |= "mam_tail"
- H.update_body()
\ No newline at end of file
+ H.update_body()
diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm
index cb7822ad7e..1700927a24 100644
--- a/code/modules/mob/living/carbon/human/species_types/synths.dm
+++ b/code/modules/mob/living/carbon/human/species_types/synths.dm
@@ -58,7 +58,6 @@
meat = S.meat
mutant_bodyparts = S.mutant_bodyparts.Copy()
mutant_organs = S.mutant_organs.Copy()
- default_features = S.default_features.Copy()
nojumpsuit = S.nojumpsuit
no_equip = S.no_equip.Copy()
limbs_id = S.limbs_id
@@ -75,7 +74,6 @@
attack_sound = initial(attack_sound)
miss_sound = initial(miss_sound)
mutant_bodyparts = list()
- default_features = list()
nojumpsuit = initial(nojumpsuit)
no_equip = list()
qdel(fake_species)
diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm
index 8bbd870149..803af56dec 100644
--- a/code/modules/mob/living/carbon/human/species_types/vampire.dm
+++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm
@@ -5,7 +5,7 @@
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD)
inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH)
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
- default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None")
+ mutant_bodyparts = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "deco_wings" = "None")
exotic_bloodtype = "U"
use_skintones = TRUE
mutant_heart = /obj/item/organ/heart/vampire
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 66233f7243..e344ba5304 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -330,9 +330,9 @@ There are several things that need to be remembered:
var/alt_icon = H.alternate_worn_icon || 'icons/mob/head.dmi'
var/muzzled = FALSE
var/variation_flag = NONE
- if(("mam_snouts" in dna.species.default_features) && dna.features["mam_snouts"] != "None")
+ if(dna.species.mutant_bodyparts["mam_snouts"] && dna.features["mam_snouts"] != "None")
muzzled = TRUE
- if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None")
+ else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None")
muzzled = TRUE
if(muzzled && H.mutantrace_variation & STYLE_MUZZLE)
alt_icon = 'icons/mob/head_muzzled.dmi'
@@ -394,7 +394,7 @@ There are several things that need to be remembered:
var/dimension_y = 32
var/variation_flag = NONE
var/datum/sprite_accessory/taur/T
- if("taur" in dna.species.mutant_bodyparts)
+ if(dna.species.mutant_bodyparts["taur"])
T = GLOB.taur_list[dna.features["taur"]]
if(S.mutantrace_variation)
@@ -463,9 +463,9 @@ There are several things that need to be remembered:
var/variation_flag = NONE
if(head && (head.flags_inv & HIDEMASK))
return
- if(("mam_snouts" in dna.species.default_features) && dna.features["mam_snouts"] != "None")
+ if(dna.species.mutant_bodyparts["mam_snouts"] && dna.features["mam_snouts"] != "None")
muzzled = TRUE
- if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None")
+ else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None")
muzzled = TRUE
if(muzzled && M.mutantrace_variation & STYLE_MUZZLE)
alt_icon = 'icons/mob/mask_muzzled.dmi'
@@ -652,7 +652,7 @@ generate/load female uniform sprites matching all previously decided variables
var/is_taur = FALSE
- if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None"))
+ if(dna.species.mutant_bodyparts["taur"] && dna.features["taur"] != "None")
is_taur = TRUE
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 3aae3e36ed..111054c383 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -125,7 +125,7 @@
var/mob/living/carbon/human/H = user
var/open = FALSE
if(H.dna.features["wings"] != "None")
- if("wingsopen" in H.dna.species.mutant_bodyparts)
+ if(H.dna.species.mutant_bodyparts["wingsopen"])
open = TRUE
H.CloseWings()
else
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index 210a5e349d..f26898f2c5 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -362,14 +362,14 @@
if(base_bp_icon != DEFAULT_BODYPART_ICON)
color_src = MUTCOLORS //TODO - Add color matrix support to base limbs
- if("legs" in S.default_features)
+ if(S.mutant_bodyparts["legs"])
if(body_zone == BODY_ZONE_L_LEG || body_zone == BODY_ZONE_R_LEG)
if(DIGITIGRADE in S.species_traits)
digitigrade_type = lowertext(H.dna.features["legs"])
else
digitigrade_type = null
- if("mam_body_markings" in S.default_features)
+ if(S.mutant_bodyparts["mam_body_markings"])
var/datum/sprite_accessory/Smark
Smark = GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]]
if(Smark)
diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm
index 65847042a1..63febd1a9f 100644
--- a/code/modules/surgery/organs/ears.dm
+++ b/code/modules/surgery/organs/ears.dm
@@ -100,16 +100,16 @@
..()
if(istype(H))
color = H.hair_color
- H.dna.species.mutant_bodyparts |= "ears"
- H.dna.features["ears"] = "Cat"
+ H.dna.species.mutant_bodyparts["mam_ears"] = "Cat"
+ H.dna.features["mam_ears"] = "Cat"
H.update_body()
/obj/item/organ/ears/cat/Remove(special = FALSE)
if(!QDELETED(owner) && ishuman(owner))
var/mob/living/carbon/human/H = owner
color = H.hair_color
- H.dna.features["ears"] = "None"
- H.dna.species.mutant_bodyparts -= "ears"
+ H.dna.features["mam_ears"] = "None"
+ H.dna.species.mutant_bodyparts -= "mam_ears"
H.update_body()
return ..()
diff --git a/code/modules/surgery/organs/tails.dm b/code/modules/surgery/organs/tails.dm
index fe881df221..55a656f42d 100644
--- a/code/modules/surgery/organs/tails.dm
+++ b/code/modules/surgery/organs/tails.dm
@@ -21,16 +21,16 @@
/obj/item/organ/tail/cat/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE)
..()
if(istype(H))
- if(!("tail_human" in H.dna.species.mutant_bodyparts))
- H.dna.species.mutant_bodyparts |= "tail_human"
- H.dna.features["tail_human"] = tail_type
+ if(!H.dna.species.mutant_bodyparts["mam_tail"])
+ H.dna.species.mutant_bodyparts["mam_tail"] = tail_type
+ H.dna.features["mam_tail"] = tail_type
H.update_body()
/obj/item/organ/tail/cat/Remove(special = FALSE)
if(!QDELETED(owner) && ishuman(owner))
var/mob/living/carbon/human/H = owner
- H.dna.features["tail_human"] = "None"
- H.dna.species.mutant_bodyparts -= "tail_human"
+ H.dna.features["mam_tail"] = "None"
+ H.dna.species.mutant_bodyparts -= "mam_tail"
color = H.hair_color
H.update_body()
return ..()
@@ -46,13 +46,13 @@
..()
if(istype(H))
// Checks here are necessary so it wouldn't overwrite the tail of a lizard it spawned in
- if(!("tail_lizard" in H.dna.species.mutant_bodyparts))
+ if(!H.dna.species.mutant_bodyparts["tail_lizard"])
H.dna.features["tail_lizard"] = tail_type
- H.dna.species.mutant_bodyparts |= "tail_lizard"
+ H.dna.species.mutant_bodyparts["tail_lizard"] = tail_type
- if(!("spines" in H.dna.species.mutant_bodyparts))
+ if(!H.dna.species.mutant_bodyparts["spines"])
H.dna.features["spines"] = spines
- H.dna.species.mutant_bodyparts |= "spines"
+ H.dna.species.mutant_bodyparts["spines"] = spines
H.update_body()
/obj/item/organ/tail/lizard/Remove(special = FALSE)