diff --git a/code/__DEFINES/pool.dm b/code/__DEFINES/pool.dm index 64bbd20b19..1bf39dcb1d 100644 --- a/code/__DEFINES/pool.dm +++ b/code/__DEFINES/pool.dm @@ -8,5 +8,5 @@ GLOBAL_LIST_INIT(blacklisted_pool_reagents, list( /datum/reagent/toxin/plasma, /datum/reagent/oxygen, /datum/reagent/nitrous_oxide, /datum/reagent/nitrogen, //gases /datum/reagent/fermi, //blanket fermichem ban sorry. this also covers mkultra, genital enlargers, etc etc. - /datum/reagent/consumable/femcum, /datum/reagent/consumable/semen //NO. + /datum/reagent/consumable/semen //NO. )) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index d66e83d651..1119ef44ed 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -37,10 +37,10 @@ //CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE //mammal bodyparts (fucking furries) init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, GLOB.mam_ears_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_snouts, GLOB.mam_snouts_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails_animated, GLOB.mam_tails_animated_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/mam_tails, GLOB.mam_tails_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/ears/mam_ears, GLOB.mam_ears_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts/mam_snouts, GLOB.mam_snouts_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/mam_tails_animated, GLOB.mam_tails_animated_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/taur, GLOB.taur_list) //xeno parts (hiss?) init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_head, GLOB.xeno_head_list) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index c4964022e5..52e26b67e7 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -93,16 +93,16 @@ if(!GLOB.mam_body_markings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) if(!GLOB.mam_tails_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/mam_tails, GLOB.mam_tails_list) if(!GLOB.mam_ears_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, GLOB.mam_ears_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/ears/mam_ears, GLOB.mam_ears_list) if(!GLOB.mam_snouts_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_snouts, GLOB.mam_snouts_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts/mam_snouts, GLOB.mam_snouts_list) //snowflake check so people's ckey features don't get randomly put on unmonkeys/spawns var/list/snowflake_mam_tails_list = list() for(var/mtpath in GLOB.mam_tails_list) - var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[mtpath] + var/datum/sprite_accessory/tails/mam_tails/instance = GLOB.mam_tails_list[mtpath] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies)) @@ -120,7 +120,7 @@ snowflake_markings_list[S.name] = mmpath var/list/snowflake_ears_list = list() for(var/mepath in GLOB.mam_ears_list) - var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[mepath] + var/datum/sprite_accessory/ears/mam_ears/instance = GLOB.mam_ears_list[mepath] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies)) @@ -129,7 +129,7 @@ snowflake_ears_list[S.name] = mepath var/list/snowflake_mam_snouts_list = list() for(var/mspath in GLOB.mam_snouts_list) - var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[mspath] + var/datum/sprite_accessory/snouts/mam_snouts/instance = GLOB.mam_snouts_list[mspath] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies)) @@ -138,7 +138,7 @@ snowflake_mam_snouts_list[S.name] = mspath var/list/snowflake_ipc_antenna_list = list() for(var/mspath in GLOB.ipc_antennas_list) - var/datum/sprite_accessory/mam_snouts/instance = GLOB.ipc_antennas_list[mspath] + var/datum/sprite_accessory/snouts/mam_snouts/instance = GLOB.ipc_antennas_list[mspath] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies)) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 7c2ebc5f0c..8225725ffd 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -40,6 +40,46 @@ GLOBAL_LIST_EMPTY(insect_fluffs_list) GLOBAL_LIST_EMPTY(insect_markings_list) GLOBAL_LIST_EMPTY(caps_list) +//a way to index the right bodypart list given the type of bodypart +GLOBAL_LIST_INIT(mutant_reference_list, list( + "tail_lizard" = GLOB.tails_list_lizard, + "waggingtail_lizard" = GLOB.animated_tails_list_lizard, + "tail_human" = GLOB.tails_list_human, + "waggingtail_human" = GLOB.animated_tails_list_human, + "spines" = GLOB.spines_list, + "waggingspines" = GLOB.animated_spines_list, + "snout" = GLOB.snouts_list, + "frills" = GLOB.frills_list, + "horns" = GLOB.horns_list, + "ears" = GLOB.ears_list, + "body_markings" = GLOB.body_markings_list, + "wings" = GLOB.wings_list, + "wingsopen" = GLOB.wings_open_list, + "deco_wings" = GLOB.deco_wings_list, + "legs" = GLOB.legs_list, + "insect_wings" = GLOB.insect_wings_list, + "insect_fluff" = GLOB.insect_fluffs_list, + "insect_markings" = GLOB.insect_markings_list, + "caps" = GLOB.caps_list, + "ipc_screen" = GLOB.ipc_screens_list, + "ipc_antenna" = GLOB.ipc_antennas_list, + "mam_tail" = GLOB.mam_tails_list, + "mam_waggingtail" = GLOB.mam_tails_animated_list, + "mam_body_markings" = GLOB.mam_body_markings_list, + "mam_ears" = GLOB.mam_ears_list, + "mam_snouts" = GLOB.mam_snouts_list, + "taur" = GLOB.taur_list, + "xenodorsal" = GLOB.xeno_dorsal_list, + "xenohead" = GLOB.xeno_head_list, + "xenotail" = GLOB.xeno_tail_list)) + +//references wag types to regular types, wings open to wings, etc +GLOBAL_LIST_INIT(mutant_transform_list, list("wingsopen" = "wings", + "waggingtail_human" = "tail_human", + "waggingtail_lizard" = "tail_lizard", + "waggingspines" = "spines", + "mam_waggingtail" = "mam_tail")) + GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list("ghost")) //stores the ghost forms that support hair and other such things diff --git a/code/datums/diseases/advance/symptoms/species.dm b/code/datums/diseases/advance/symptoms/species.dm index 49a3cf8d07..2d5255842b 100644 --- a/code/datums/diseases/advance/symptoms/species.dm +++ b/code/datums/diseases/advance/symptoms/species.dm @@ -31,4 +31,3 @@ /datum/symptom/inorganic_adaptation/OnRemove(datum/disease/advance/A) A.infectable_biotypes &= ~MOB_MINERAL - diff --git a/code/datums/dna.dm b/code/datums/dna.dm index de5c1ece91..9486029fdd 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -137,10 +137,10 @@ L[DNA_COLOR_TWO_BLOCK] = sanitize_hexcolor(features["mcolor2"], 6) L[DNA_COLOR_THREE_BLOCK] = sanitize_hexcolor(features["mcolor3"], 6) if(!GLOB.mam_tails_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/mam_tails, GLOB.mam_tails_list) L[DNA_MUTANTTAIL_BLOCK] = construct_block(GLOB.mam_tails_list.Find(features["mam_tail"]), GLOB.mam_tails_list.len) if(!GLOB.mam_ears_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, GLOB.mam_ears_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/ears/mam_ears, GLOB.mam_ears_list) L[DNA_MUTANTEAR_BLOCK] = construct_block(GLOB.mam_ears_list.Find(features["mam_ears"]), GLOB.mam_ears_list.len) if(!GLOB.mam_body_markings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) diff --git a/code/modules/arousal/organs/womb.dm b/code/modules/arousal/organs/womb.dm index 386f407a26..e89d4329aa 100644 --- a/code/modules/arousal/organs/womb.dm +++ b/code/modules/arousal/organs/womb.dm @@ -6,5 +6,5 @@ zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_WOMB genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION - fluid_id = /datum/reagent/consumable/femcum + fluid_id = /datum/reagent/consumable/semen/femcum linked_organ_slot = ORGAN_SLOT_VAGINA diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 017a25db34..480ebda4f8 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -791,9 +791,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" dat += "
" - + dat += "
" - + if(!length(GLOB.loadout_categories[gear_category])) dat += "No subcategories detected. Something is horribly wrong!" else @@ -1636,7 +1636,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("mam_tail") var/list/snowflake_tails_list = list() for(var/path in GLOB.mam_tails_list) - var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[path] + var/datum/sprite_accessory/tails/mam_tails/instance = GLOB.mam_tails_list[path] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id)) @@ -1661,7 +1661,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("snout") var/list/snowflake_snouts_list = list() for(var/path in GLOB.snouts_list) - var/datum/sprite_accessory/mam_snouts/instance = GLOB.snouts_list[path] + var/datum/sprite_accessory/snouts/mam_snouts/instance = GLOB.snouts_list[path] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id)) @@ -1678,7 +1678,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("mam_snouts") var/list/snowflake_mam_snouts_list = list() for(var/path in GLOB.mam_snouts_list) - var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[path] + var/datum/sprite_accessory/snouts/mam_snouts/instance = GLOB.mam_snouts_list[path] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id)) @@ -1827,7 +1827,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("mam_ears") var/list/snowflake_ears_list = list() for(var/path in GLOB.mam_ears_list) - var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[path] + var/datum/sprite_accessory/ears/mam_ears/instance = GLOB.mam_ears_list[path] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id)) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index bd36218211..1238b37919 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -46,6 +46,7 @@ var/minimal_player_age = 0 var/outfit = null + var/plasma_outfit = null //the outfit given to plasmamen var/exp_requirements = 0 diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index 1962b8e8a9..bff56d1d16 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -12,6 +12,7 @@ exp_type = EXP_TYPE_CREW outfit = /datum/outfit/job/atmos + plasma_outfit = /datum/outfit/plasmaman/atmospherics access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index e5cd015460..8290adbbd7 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -11,6 +11,7 @@ exp_type_department = EXP_TYPE_SERVICE // This is so the jobs menu can work properly outfit = /datum/outfit/job/bartender + plasma_outfit = /datum/outfit/plasmaman/bar access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 65f3e7ca48..4c91f87791 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -10,6 +10,7 @@ selection_color = "#bbe291" outfit = /datum/outfit/job/botanist + plasma_outfit = /datum/outfit/plasmaman/botany access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 3733658c33..047a07062d 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -17,6 +17,7 @@ outfit = /datum/outfit/job/captain + plasma_outfit = /datum/outfit/plasmaman/captain access = list() //See get_access() minimal_access = list() //See get_access() diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 840af56a0e..1f87a5265d 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -10,6 +10,7 @@ selection_color = "#ca8f55" outfit = /datum/outfit/job/cargo_tech + plasma_outfit = /datum/outfit/plasmaman/cargo access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index 5f66519365..a9e891a303 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -10,6 +10,7 @@ selection_color = "#dddddd" outfit = /datum/outfit/job/chaplain + plasma_outfit = /datum/outfit/plasmaman/chaplain access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index b2699071e3..6d4204d041 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -12,6 +12,7 @@ exp_requirements = 60 outfit = /datum/outfit/job/chemist + plasma_outfit = /datum/outfit/plasmaman/chemist access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index d8df767a9f..18be8c9835 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -17,6 +17,7 @@ exp_type_department = EXP_TYPE_ENGINEERING outfit = /datum/outfit/job/ce + plasma_outfit = /datum/outfit/plasmaman/ce access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA, diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 9cbc15ca28..627a7a2ca1 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -17,6 +17,7 @@ exp_type_department = EXP_TYPE_MEDICAL outfit = /datum/outfit/job/cmo + plasma_outfit = /datum/outfit/plasmaman/cmo access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 7ad7148614..dc2f60434c 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -10,6 +10,7 @@ selection_color = "#dddddd" outfit = /datum/outfit/job/clown + plasma_outfit = /datum/outfit/plasmaman/clown access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 5a5916cb7e..666ee8f036 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -11,6 +11,7 @@ var/cooks = 0 //Counts cooks amount outfit = /datum/outfit/job/cook + plasma_outfit = /datum/outfit/plasmaman/chef access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index 47bfd4914a..254fc15bd4 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -10,6 +10,7 @@ selection_color = "#dddddd" outfit = /datum/outfit/job/curator + plasma_outfit = /datum/outfit/plasmaman/curator access = list(ACCESS_LIBRARY) minimal_access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION, ACCESS_MINING_STATION) diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 463113f14c..65724765e1 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -14,6 +14,7 @@ exp_type = EXP_TYPE_CREW outfit = /datum/outfit/job/detective + plasma_outfit = /datum/outfit/plasmaman/detective access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index a40ca0fca3..5ff1bebfbf 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -12,6 +12,7 @@ exp_requirements = 60 outfit = /datum/outfit/job/geneticist + plasma_outfit = /datum/outfit/plasmaman/genetics access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 8015c19c36..41fb4b99da 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -17,6 +17,7 @@ exp_type_department = EXP_TYPE_SERVICE outfit = /datum/outfit/job/hop + plasma_outfit = /datum/outfit/plasmaman/hop access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 3d7d07d894..cfd8d7f6c0 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -17,6 +17,8 @@ exp_type_department = EXP_TYPE_SECURITY outfit = /datum/outfit/job/hos + plasma_outfit = /datum/outfit/plasmaman/hos + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 2f6d6f0e32..c62c2e5b26 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -10,6 +10,7 @@ selection_color = "#bbe291" outfit = /datum/outfit/job/janitor + plasma_outfit = /datum/outfit/plasmaman/janitor access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index 1a7499800b..17c376a5de 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -11,6 +11,7 @@ var/lawyers = 0 //Counts lawyer amount outfit = /datum/outfit/job/lawyer + plasma_outfit = /datum/outfit/plasmaman/bar //yes, this is correct, there's no 'lawyer' plasmeme outfit access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 5ec4b83b2f..d6a763acfe 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -10,6 +10,7 @@ selection_color = "#74b5e0" outfit = /datum/outfit/job/doctor + plasma_outfit = /datum/outfit/plasmaman/medical access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index 4ba2489ab2..e00b3a1e29 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -10,6 +10,7 @@ selection_color = "#dddddd" outfit = /datum/outfit/job/mime + plasma_outfit = /datum/outfit/plasmaman/mime access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 7128fbe2c7..33f7df8260 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -17,6 +17,7 @@ exp_type = EXP_TYPE_CREW outfit = /datum/outfit/job/rd + plasma_outfit = /datum/outfit/plasmaman/rd access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index f5ae93bb6a..aa52b353df 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -12,6 +12,7 @@ exp_type = EXP_TYPE_CREW outfit = /datum/outfit/job/roboticist + plasma_outfit = /datum/outfit/plasmaman/robotics access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS) minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index 476f740b9d..a851b333fe 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -12,6 +12,7 @@ exp_type = EXP_TYPE_CREW outfit = /datum/outfit/job/scientist + plasma_outfit = /datum/outfit/plasmaman/science access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS) minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 7e71b2d1f4..bc83eb752d 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -14,6 +14,7 @@ exp_type = EXP_TYPE_CREW outfit = /datum/outfit/job/security + plasma_outfit = /datum/outfit/plasmaman/security access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index ebf7ba0f1f..04d3fb53b8 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -12,6 +12,7 @@ outfit = /datum/outfit/job/miner + plasma_outfit = /datum/outfit/plasmaman/mining access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index d3f5db7dbb..2396728ad8 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -12,6 +12,7 @@ exp_type = EXP_TYPE_CREW outfit = /datum/outfit/job/engineer + plasma_outfit = /datum/outfit/plasmaman/engineering access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index 790e828931..3e9b3ba06c 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -12,6 +12,7 @@ exp_requirements = 60 outfit = /datum/outfit/job/virologist + plasma_outfit = /datum/outfit/plasmaman/viro access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 22e3f9b0f1..c909342d6f 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -14,6 +14,7 @@ exp_type = EXP_TYPE_CREW outfit = /datum/outfit/job/warden + plasma_outfit = /datum/outfit/plasmaman/warden access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access() diff --git a/code/modules/mob/dead/new_player/sprite_accessories/Citadel_Snowflake.dm b/code/modules/mob/dead/new_player/sprite_accessories/Citadel_Snowflake.dm index 020776a75f..3c2c850e3c 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/Citadel_Snowflake.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/Citadel_Snowflake.dm @@ -1,9 +1,9 @@ -/datum/sprite_accessory/mam_tails/shark/datashark +/datum/sprite_accessory/tails/mam_tails/shark/datashark name = "DataShark" icon_state = "datashark" ckeys_allowed = list("rubyflamewing") -/datum/sprite_accessory/mam_tails_animated/shark/datashark +/datum/sprite_accessory/tails_animated/mam_tails_animated/shark/datashark name = "DataShark" icon_state = "datashark" ckeys_allowed = list("rubyflamewing") @@ -14,19 +14,19 @@ ckeys_allowed = list("rubyflamewing") //Sabresune -/datum/sprite_accessory/mam_ears/sabresune +/datum/sprite_accessory/ears/mam_ears/sabresune name = "Sabresune" icon_state = "sabresune" ckeys_allowed = list("poojawa") extra = TRUE extra_color_src = MUTCOLORS3 -/datum/sprite_accessory/mam_tails/sabresune +/datum/sprite_accessory/tails/mam_tails/sabresune name = "Sabresune" icon_state = "sabresune" ckeys_allowed = list("poojawa") -/datum/sprite_accessory/mam_tails_animated/sabresune +/datum/sprite_accessory/tails_animated/mam_tails_animated/sabresune name = "Sabresune" icon_state = "sabresune" ckeys_allowed = list("poojawa") @@ -37,17 +37,17 @@ ckeys_allowed = list("poojawa") //Lunasune -/datum/sprite_accessory/mam_ears/lunasune +/datum/sprite_accessory/ears/mam_ears/lunasune name = "lunasune" icon_state = "lunasune" ckeys_allowed = list("invader4352") -/datum/sprite_accessory/mam_tails/lunasune +/datum/sprite_accessory/tails/mam_tails/lunasune name = "lunasune" icon_state = "lunasune" ckeys_allowed = list("invader4352") -/datum/sprite_accessory/mam_tails_animated/lunasune +/datum/sprite_accessory/tails_animated/mam_tails_animated/lunasune name = "lunasune" icon_state = "lunasune" ckeys_allowed = list("invader4352") diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm index 6514cb4f80..4cb8d080ff 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm @@ -76,6 +76,9 @@ //For soft-restricting markings to species IDs var/list/recommended_species +/datum/sprite_accessory/proc/is_not_visible(var/mob/living/carbon/human/H, var/tauric) //return if the accessory shouldn't be shown + return FALSE + /datum/sprite_accessory/underwear icon = 'icons/mob/clothing/underwear.dmi' var/has_color = FALSE diff --git a/code/modules/mob/dead/new_player/sprite_accessories/alienpeople.dm b/code/modules/mob/dead/new_player/sprite_accessories/alienpeople.dm index c8e7aca26d..899bf91081 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/alienpeople.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/alienpeople.dm @@ -7,6 +7,9 @@ mutant_part_string = "xenodorsal" relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) +/datum/sprite_accessory/xeno_dorsal/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (!H.dna.features["xenodorsal"] || H.dna.features["xenodorsal"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))) + /datum/sprite_accessory/xeno_dorsal/standard name = "Standard" icon_state = "standard" @@ -27,6 +30,9 @@ mutant_part_string = "tail" relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) +/datum/sprite_accessory/xeno_tail/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (!H.dna.features["xenotail"] || H.dna.features["xenotail"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) + /datum/sprite_accessory/xeno_tail/none name = "None" relevant_layers = null @@ -43,6 +49,10 @@ mutant_part_string = "xhead" relevant_layers = list(BODY_ADJ_LAYER) +/datum/sprite_accessory/xeno_head/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + return (!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) + /datum/sprite_accessory/xeno_head/standard name = "Standard" icon_state = "standard" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm index 9950f0d76a..a04838a360 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm @@ -224,6 +224,9 @@ color_src = 0 relevant_layers = list(BODY_FRONT_LAYER) +/datum/sprite_accessory/insect_fluff/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (!H.dna.features["insect_fluff"] || H.dna.features["insect_fluff"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) + /datum/sprite_accessory/insect_fluff/none name = "None" icon_state = "none" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm index bc269ccf62..1e6c797364 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm @@ -3,6 +3,10 @@ mutant_part_string = "ears" relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) +/datum/sprite_accessory/ears/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + return (!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) + /datum/sprite_accessory/ears/none name = "None" icon_state = "none" @@ -175,50 +179,54 @@ *************** Furry Ears **************** *******************************************/ -/datum/sprite_accessory/mam_ears +/datum/sprite_accessory/ears/mam_ears icon = 'modular_citadel/icons/mob/mam_ears.dmi' color_src = MATRIXED mutant_part_string = "ears" relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) -/datum/sprite_accessory/mam_ears/none +/datum/sprite_accessory/ears/mam_ears/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + return (!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) + +/datum/sprite_accessory/ears/mam_ears/none name = "None" icon_state = "none" relevant_layers = null -/datum/sprite_accessory/mam_ears/axolotl +/datum/sprite_accessory/ears/mam_ears/axolotl name = "Axolotl" icon_state = "axolotl" -/datum/sprite_accessory/mam_ears/bat +/datum/sprite_accessory/ears/mam_ears/bat name = "Bat" icon_state = "bat" -/datum/sprite_accessory/mam_ears/bear +/datum/sprite_accessory/ears/mam_ears/bear name = "Bear" icon_state = "bear" -/datum/sprite_accessory/mam_ears/bigwolf +/datum/sprite_accessory/ears/mam_ears/bigwolf name = "Big Wolf" icon_state = "bigwolf" -/datum/sprite_accessory/mam_ears/bigwolfinner +/datum/sprite_accessory/ears/mam_ears/bigwolfinner name = "Big Wolf (ALT)" icon_state = "bigwolfinner" extra = TRUE extra_color_src = NONE -/datum/sprite_accessory/mam_ears/bigwolfdark +/datum/sprite_accessory/ears/mam_ears/bigwolfdark name = "Dark Big Wolf" icon_state = "bigwolfdark" -/datum/sprite_accessory/mam_ears/bigwolfinnerdark +/datum/sprite_accessory/ears/mam_ears/bigwolfinnerdark name = "Dark Big Wolf (ALT)" icon_state = "bigwolfinnerdark" extra = TRUE extra_color_src = NONE -/datum/sprite_accessory/mam_ears/cat +/datum/sprite_accessory/ears/mam_ears/cat name = "Cat" icon_state = "cat" icon = 'icons/mob/mutant_bodyparts.dmi' @@ -226,100 +234,100 @@ extra = TRUE extra_color_src = NONE -/datum/sprite_accessory/mam_ears/catbig +/datum/sprite_accessory/ears/mam_ears/catbig name = "Cat, Big" icon_state = "catbig" -/datum/sprite_accessory/mam_ears/cow +/datum/sprite_accessory/ears/mam_ears/cow name = "Cow" icon_state = "cow" -/datum/sprite_accessory/mam_ears/curled +/datum/sprite_accessory/ears/mam_ears/curled name = "Curled Horn" icon_state = "horn1" color_src = MUTCOLORS3 -/datum/sprite_accessory/mam_ears/deer +/datum/sprite_accessory/ears/mam_ears/deer name = "Deer" icon_state = "deer" color_src = MUTCOLORS3 -/datum/sprite_accessory/mam_ears/eevee +/datum/sprite_accessory/ears/mam_ears/eevee name = "Eevee" icon_state = "eevee" -/datum/sprite_accessory/mam_ears/elf +/datum/sprite_accessory/ears/mam_ears/elf name = "Elf" icon_state = "elf" color_src = MUTCOLORS3 -/datum/sprite_accessory/mam_ears/elephant +/datum/sprite_accessory/ears/mam_ears/elephant name = "Elephant" icon_state = "elephant" -/datum/sprite_accessory/mam_ears/fennec +/datum/sprite_accessory/ears/mam_ears/fennec name = "Fennec" icon_state = "fennec" -/datum/sprite_accessory/mam_ears/fish +/datum/sprite_accessory/ears/mam_ears/fish name = "Fish" icon_state = "fish" -/datum/sprite_accessory/mam_ears/fox +/datum/sprite_accessory/ears/mam_ears/fox name = "Fox" icon_state = "fox" -/datum/sprite_accessory/mam_ears/husky +/datum/sprite_accessory/ears/mam_ears/husky name = "Husky" icon_state = "wolf" -/datum/sprite_accessory/mam_ears/kangaroo +/datum/sprite_accessory/ears/mam_ears/kangaroo name = "kangaroo" icon_state = "kangaroo" -/datum/sprite_accessory/mam_ears/jellyfish +/datum/sprite_accessory/ears/mam_ears/jellyfish name = "Jellyfish" icon_state = "jellyfish" color_src = HAIR -/datum/sprite_accessory/mam_ears/lab +/datum/sprite_accessory/ears/mam_ears/lab name = "Dog, Long" icon_state = "lab" -/datum/sprite_accessory/mam_ears/murid +/datum/sprite_accessory/ears/mam_ears/murid name = "Murid" icon_state = "murid" -/datum/sprite_accessory/mam_ears/otie +/datum/sprite_accessory/ears/mam_ears/otie name = "Otusian" icon_state = "otie" -/datum/sprite_accessory/mam_ears/squirrel +/datum/sprite_accessory/ears/mam_ears/squirrel name = "Squirrel" icon_state = "squirrel" -/datum/sprite_accessory/mam_ears/pede +/datum/sprite_accessory/ears/mam_ears/pede name = "Scolipede" icon_state = "pede" -/datum/sprite_accessory/mam_ears/rabbit +/datum/sprite_accessory/ears/mam_ears/rabbit name = "Rabbit" icon_state = "rabbit" -/datum/sprite_accessory/mam_ears/sergal +/datum/sprite_accessory/ears/mam_ears/sergal name = "Sergal" icon_state = "sergal" -/datum/sprite_accessory/mam_ears/skunk +/datum/sprite_accessory/ears/mam_ears/skunk name = "skunk" icon_state = "skunk" -/datum/sprite_accessory/mam_ears/wolf +/datum/sprite_accessory/ears/mam_ears/wolf name = "Wolf" icon_state = "wolf" -/datum/sprite_accessory/mam_ears/bunny +/datum/sprite_accessory/ears/mam_ears/bunny name = "Bunny" icon_state = "bunny" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/frills.dm b/code/modules/mob/dead/new_player/sprite_accessories/frills.dm index 0aaec309a4..18a76df116 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/frills.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/frills.dm @@ -2,6 +2,10 @@ icon = 'icons/mob/mutant_bodyparts.dmi' relevant_layers = list(BODY_ADJ_LAYER) +/datum/sprite_accessory/frills/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + return (!H.dna.features["frills"] || H.dna.features["frills"] == "None" || H.head && (H.head.flags_inv & HIDEEARS) || !HD || HD.status == BODYPART_ROBOTIC) + /datum/sprite_accessory/frills/none name = "None" icon_state = "none" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/horns.dm b/code/modules/mob/dead/new_player/sprite_accessories/horns.dm index b39f48f858..3a65eaebfa 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/horns.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/horns.dm @@ -3,6 +3,10 @@ color_src = HORNCOLOR relevant_layers = list(HORNS_LAYER) +/datum/sprite_accessory/horns/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + return (!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) + /datum/sprite_accessory/horns/none name = "None" icon_state = "none" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm index 2ec6da2da8..d41f5ace22 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm @@ -30,6 +30,9 @@ var/alt_taur_mode = NONE //Same as above. var/hide_legs = USE_QUADRUPED_CLIP_MASK +/datum/sprite_accessory/taur/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (!tauric || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) + /datum/sprite_accessory/taur/New() switch(hide_legs) if(USE_QUADRUPED_CLIP_MASK) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm index 2c0db56ce4..2e14a88f29 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm @@ -3,6 +3,10 @@ mutant_part_string = "snout" relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) +/datum/sprite_accessory/snouts/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + return ((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.status == BODYPART_ROBOTIC) + /datum/sprite_accessory/snouts/sharp name = "Sharp" icon_state = "sharp" @@ -150,35 +154,39 @@ ************** Mammal Snouts ************** *******************************************/ -/datum/sprite_accessory/mam_snouts +/datum/sprite_accessory/snouts/mam_snouts color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_snouts.dmi' recommended_species = list("mammal", "slimeperson", "insect", "podweak") mutant_part_string = "snout" relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) -/datum/sprite_accessory/mam_snouts/none +/datum/sprite_accessory/snouts/mam_snouts/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + return ((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.status == BODYPART_ROBOTIC) + +/datum/sprite_accessory/snouts/mam_snouts/none name = "None" icon_state = "none" recommended_species = null relevant_layers = null -/datum/sprite_accessory/mam_snouts/bird +/datum/sprite_accessory/snouts/mam_snouts/bird name = "Beak" icon_state = "bird" -/datum/sprite_accessory/mam_snouts/bigbeak +/datum/sprite_accessory/snouts/mam_snouts/bigbeak name = "Big Beak" icon_state = "bigbeak" -/datum/sprite_accessory/mam_snouts/bug +/datum/sprite_accessory/snouts/mam_snouts/bug name = "Bug" icon_state = "bug" color_src = MUTCOLORS extra2 = TRUE extra2_color_src = MUTCOLORS3 -/datum/sprite_accessory/mam_snouts/elephant +/datum/sprite_accessory/snouts/mam_snouts/elephant name = "Elephant" icon_state = "elephant" extra = TRUE @@ -194,92 +202,92 @@ name = "Mammal, Long" icon_state = "lcanid" -/datum/sprite_accessory/mam_snouts/lcanidalt +/datum/sprite_accessory/snouts/mam_snouts/lcanidalt name = "Mammal, Long ALT" icon_state = "lcanidalt" -/datum/sprite_accessory/mam_snouts/scanid +/datum/sprite_accessory/snouts/mam_snouts/scanid name = "Mammal, Short" icon_state = "scanid" -/datum/sprite_accessory/mam_snouts/scanidalt +/datum/sprite_accessory/snouts/mam_snouts/scanidalt name = "Mammal, Short ALT" icon_state = "scanidalt" -/datum/sprite_accessory/mam_snouts/scanidalt2 +/datum/sprite_accessory/snouts/mam_snouts/scanidalt2 name = "Mammal, Short ALT 2" icon_state = "scanidalt2" -/datum/sprite_accessory/mam_snouts/wolf +/datum/sprite_accessory/snouts/mam_snouts/wolf name = "Mammal, Thick" icon_state = "wolf" -/datum/sprite_accessory/mam_snouts/wolfalt +/datum/sprite_accessory/snouts/mam_snouts/wolfalt name = "Mammal, Thick ALT" icon_state = "wolfalt" -/datum/sprite_accessory/mam_snouts/redpanda +/datum/sprite_accessory/snouts/mam_snouts/redpanda name = "WahCoon" icon_state = "wah" -/datum/sprite_accessory/mam_snouts/redpandaalt +/datum/sprite_accessory/snouts/mam_snouts/redpandaalt name = "WahCoon ALT" icon_state = "wahalt" -/datum/sprite_accessory/mam_snouts/rhino +/datum/sprite_accessory/snouts/mam_snouts/rhino name = "Horn" icon_state = "rhino" extra = TRUE extra = MUTCOLORS3 -/datum/sprite_accessory/mam_snouts/rodent +/datum/sprite_accessory/snouts/mam_snouts/rodent name = "Rodent" icon_state = "rodent" -/datum/sprite_accessory/mam_snouts/husky +/datum/sprite_accessory/snouts/mam_snouts/husky name = "Husky" icon_state = "husky" -/datum/sprite_accessory/mam_snouts/otie +/datum/sprite_accessory/snouts/mam_snouts/otie name = "Otie" icon_state = "otie" -/datum/sprite_accessory/mam_snouts/pede +/datum/sprite_accessory/snouts/mam_snouts/pede name = "Scolipede" icon_state = "pede" -/datum/sprite_accessory/mam_snouts/sergal +/datum/sprite_accessory/snouts/mam_snouts/sergal name = "Sergal" icon_state = "sergal" -/datum/sprite_accessory/mam_snouts/shark +/datum/sprite_accessory/snouts/mam_snouts/shark name = "Shark" icon_state = "shark" -/datum/sprite_accessory/mam_snouts/hshark +/datum/sprite_accessory/snouts/mam_snouts/hshark name = "hShark" icon_state = "hshark" -/datum/sprite_accessory/mam_snouts/toucan +/datum/sprite_accessory/snouts/mam_snouts/toucan name = "Toucan" icon_state = "toucan" -/datum/sprite_accessory/mam_snouts/sharp +/datum/sprite_accessory/snouts/mam_snouts/sharp name = "Sharp" icon_state = "sharp" color_src = MUTCOLORS -/datum/sprite_accessory/mam_snouts/round +/datum/sprite_accessory/snouts/mam_snouts/round name = "Round" icon_state = "round" color_src = MUTCOLORS -/datum/sprite_accessory/mam_snouts/sharplight +/datum/sprite_accessory/snouts/mam_snouts/sharplight name = "Sharp + Light" icon_state = "sharplight" color_src = MUTCOLORS -/datum/sprite_accessory/mam_snouts/roundlight +/datum/sprite_accessory/snouts/mam_snouts/roundlight name = "Round + Light" icon_state = "roundlight" color_src = MUTCOLORS @@ -289,109 +297,109 @@ **************** Snouts ******************* *************but higher up*****************/ -/datum/sprite_accessory/mam_snouts/fbird +/datum/sprite_accessory/snouts/mam_snouts/fbird name = "Beak (Top)" icon_state = "fbird" -/datum/sprite_accessory/mam_snouts/fbigbeak +/datum/sprite_accessory/snouts/mam_snouts/fbigbeak name = "Big Beak (Top)" icon_state = "fbigbeak" -/datum/sprite_accessory/mam_snouts/fbug +/datum/sprite_accessory/snouts/mam_snouts/fbug name = "Bug (Top)" icon_state = "fbug" color_src = MUTCOLORS extra2 = TRUE extra2_color_src = MUTCOLORS3 -/datum/sprite_accessory/mam_snouts/felephant +/datum/sprite_accessory/snouts/mam_snouts/felephant name = "Elephant (Top)" icon_state = "felephant" extra = TRUE extra_color_src = MUTCOLORS3 -/datum/sprite_accessory/mam_snouts/flcanid +/datum/sprite_accessory/snouts/mam_snouts/flcanid name = "Mammal, Long (Top)" icon_state = "flcanid" -/datum/sprite_accessory/mam_snouts/flcanidalt +/datum/sprite_accessory/snouts/mam_snouts/flcanidalt name = "Mammal, Long ALT (Top)" icon_state = "flcanidalt" -/datum/sprite_accessory/mam_snouts/fscanid +/datum/sprite_accessory/snouts/mam_snouts/fscanid name = "Mammal, Short (Top)" icon_state = "fscanid" -/datum/sprite_accessory/mam_snouts/fscanidalt +/datum/sprite_accessory/snouts/mam_snouts/fscanidalt name = "Mammal, Short ALT (Top)" icon_state = "fscanidalt" -/datum/sprite_accessory/mam_snouts/fscanidalt2 +/datum/sprite_accessory/snouts/mam_snouts/fscanidalt2 name = "Mammal, Short ALT 2 (Top)" icon_state = "fscanidalt2" -/datum/sprite_accessory/mam_snouts/fwolf +/datum/sprite_accessory/snouts/mam_snouts/fwolf name = "Mammal, Thick (Top)" icon_state = "fwolf" -/datum/sprite_accessory/mam_snouts/fwolfalt +/datum/sprite_accessory/snouts/mam_snouts/fwolfalt name = "Mammal, Thick ALT (Top)" icon_state = "fwolfalt" -/datum/sprite_accessory/mam_snouts/fredpanda +/datum/sprite_accessory/snouts/mam_snouts/fredpanda name = "WahCoon (Top)" icon_state = "fwah" -/datum/sprite_accessory/mam_snouts/frhino +/datum/sprite_accessory/snouts/mam_snouts/frhino name = "Horn (Top)" icon_state = "frhino" extra = TRUE extra = MUTCOLORS3 -/datum/sprite_accessory/mam_snouts/frodent +/datum/sprite_accessory/snouts/mam_snouts/frodent name = "Rodent (Top)" icon_state = "frodent" -/datum/sprite_accessory/mam_snouts/fhusky +/datum/sprite_accessory/snouts/mam_snouts/fhusky name = "Husky (Top)" icon_state = "fhusky" -/datum/sprite_accessory/mam_snouts/fotie +/datum/sprite_accessory/snouts/mam_snouts/fotie name = "Otie (Top)" icon_state = "fotie" -/datum/sprite_accessory/mam_snouts/fpede +/datum/sprite_accessory/snouts/mam_snouts/fpede name = "Scolipede (Top)" icon_state = "fpede" -/datum/sprite_accessory/mam_snouts/fsergal +/datum/sprite_accessory/snouts/mam_snouts/fsergal name = "Sergal (Top)" icon_state = "fsergal" -/datum/sprite_accessory/mam_snouts/fshark +/datum/sprite_accessory/snouts/mam_snouts/fshark name = "Shark (Top)" icon_state = "fshark" -/datum/sprite_accessory/mam_snouts/ftoucan +/datum/sprite_accessory/snouts/mam_snouts/ftoucan name = "Toucan (Top)" icon_state = "ftoucan" -/datum/sprite_accessory/mam_snouts/fsharp +/datum/sprite_accessory/snouts/mam_snouts/fsharp name = "Sharp (Top)" icon_state = "fsharp" color_src = MUTCOLORS -/datum/sprite_accessory/mam_snouts/fround +/datum/sprite_accessory/snouts/mam_snouts/fround name = "Round (Top)" icon_state = "fround" color_src = MUTCOLORS -/datum/sprite_accessory/mam_snouts/fsharplight +/datum/sprite_accessory/snouts/mam_snouts/fsharplight name = "Sharp + Light (Top)" icon_state = "fsharplight" color_src = MUTCOLORS -/datum/sprite_accessory/mam_snouts/froundlight +/datum/sprite_accessory/snouts/mam_snouts/froundlight name = "Round + Light (Top)" icon_state = "froundlight" color_src = MUTCOLORS diff --git a/code/modules/mob/dead/new_player/sprite_accessories/spines.dm b/code/modules/mob/dead/new_player/sprite_accessories/spines.dm index 54749d5ea9..83415ed375 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/spines.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/spines.dm @@ -2,10 +2,16 @@ icon = 'icons/mob/mutant_bodyparts.dmi' relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER) +/datum/sprite_accessory/spines/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) + /datum/sprite_accessory/spines_animated icon = 'icons/mob/mutant_bodyparts.dmi' relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER) +/datum/sprite_accessory/spines_animated/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return ((!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || H.dna.species.mutant_bodyparts["tail"]) + /datum/sprite_accessory/spines/none name = "None" icon_state = "none" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm b/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm index a2884ab944..16531d8f06 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm @@ -1,24 +1,24 @@ //Synth snouts (This is the most important part) -/datum/sprite_accessory/mam_snouts/synthliz +/datum/sprite_accessory/snouts/mam_snouts/synthliz recommended_species = list("synthliz") icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi' color_src = MUTCOLORS name = "Synthetic Lizard - Snout" icon_state = "synthliz_basic" -/datum/sprite_accessory/mam_snouts/synthliz/synthliz_under +/datum/sprite_accessory/snouts/mam_snouts/synthliz/synthliz_under icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi' color_src = MATRIXED name = "Synthetic Lizard - Snout Under" icon_state = "synthliz_under" -/datum/sprite_accessory/mam_snouts/synthliz/synthliz_tert +/datum/sprite_accessory/snouts/mam_snouts/synthliz/synthliz_tert icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi' color_src = MATRIXED name = "Synthetic Lizard - Snout Tertiary" icon_state = "synthliz_tert" -/datum/sprite_accessory/mam_snouts/synthliz/synthliz_tertunder +/datum/sprite_accessory/snouts/mam_snouts/synthliz/synthliz_tertunder icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi' color_src = MATRIXED name = "Synthetic Lizard - Snout Tertiary Under" @@ -42,14 +42,14 @@ icon_state = "synthlizpecslight" //Synth tails -/datum/sprite_accessory/mam_tails/synthliz +/datum/sprite_accessory/tails/mam_tails/synthliz recommended_species = list("synthliz") icon = 'modular_citadel/icons/mob/synthliz_tails.dmi' color_src = MUTCOLORS name = "Synthetic Lizard" icon_state = "synthliz" -/datum/sprite_accessory/mam_tails_animated/synthliz +/datum/sprite_accessory/tails_animated/mam_tails_animated/synthliz recommended_species = list("synthliz") icon = 'modular_citadel/icons/mob/synthliz_tails.dmi' color_src = MUTCOLORS diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm index 33dbd7059f..812e0c052c 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm @@ -3,6 +3,9 @@ mutant_part_string = "tail" relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) +/datum/sprite_accessory/tails/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return ((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) + /datum/sprite_accessory/tails_animated icon = 'icons/mob/mutant_bodyparts.dmi' mutant_part_string = "tailwag" @@ -12,6 +15,9 @@ ************* Lizard Tails **************** *******************************************/ +/datum/sprite_accessory/tails_animated/lizard/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) || H.dna.species.mutant_bodyparts["tail_lizard"]) + /datum/sprite_accessory/tails/lizard/smooth name = "Smooth" icon_state = "smooth" @@ -98,6 +104,9 @@ icon_state = "none" relevant_layers = null +/datum/sprite_accessory/tails_animated/human/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric)|| H.dna.species.mutant_bodyparts["tail_human"]) + /datum/sprite_accessory/tails/human/ailurus name = "Red Panda" icon_state = "wah" @@ -122,22 +131,22 @@ icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED -/datum/sprite_accessory/mam_tails/batl +/datum/sprite_accessory/tails/mam_tails/batl name = "Bat (Long)" icon = 'modular_citadel/icons/mob/mam_tails.dmi' icon_state = "batl" -/datum/sprite_accessory/mam_tails_animated/batl +/datum/sprite_accessory/tails_animated/mam_tails_animated/batl name = "Bat (Long)" icon = 'modular_citadel/icons/mob/mam_tails.dmi' icon_state = "batl" -/datum/sprite_accessory/mam_tails/bats +/datum/sprite_accessory/tails/mam_tails/bats name = "Bat (Short)" icon = 'modular_citadel/icons/mob/mam_tails.dmi' icon_state = "bats" -/datum/sprite_accessory/mam_tails_animated/bats +/datum/sprite_accessory/tails_animated/mam_tails_animated/bats name = "Bat (Short)" icon = 'modular_citadel/icons/mob/mam_tails.dmi' icon_state = "bats" @@ -518,368 +527,371 @@ ************** Furry Tails **************** *******************************************/ -/datum/sprite_accessory/mam_tails +/datum/sprite_accessory/tails/mam_tails color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' recommended_species = list("mammal", "slimeperson", "podweak", "felinid", "insect") mutant_part_string = "tail" relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) -/datum/sprite_accessory/mam_tails/none +/datum/sprite_accessory/tails/mam_tails/none name = "None" icon_state = "none" recommended_species = null relevant_layers = null -/datum/sprite_accessory/mam_tails_animated +/datum/sprite_accessory/tails_animated/mam_tails_animated color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' mutant_part_string = "tailwag" relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER) -/datum/sprite_accessory/mam_tails_animated/none +/datum/sprite_accessory/tails_animated/mam_tails_animated/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) || H.dna.species.mutant_bodyparts["mam_tail"]) + +/datum/sprite_accessory/tails_animated/mam_tails_animated/none name = "None" icon_state = "none" relevant_layers = null -/datum/sprite_accessory/mam_tails/ailurus +/datum/sprite_accessory/tails/mam_tails/ailurus name = "Red Panda" icon_state = "wah" extra = TRUE -/datum/sprite_accessory/mam_tails_animated/ailurus +/datum/sprite_accessory/tails_animated/mam_tails_animated/ailurus name = "Red Panda" icon_state = "wah" extra = TRUE -/datum/sprite_accessory/mam_tails/axolotl +/datum/sprite_accessory/tails/mam_tails/axolotl name = "Axolotl" icon_state = "axolotl" -/datum/sprite_accessory/mam_tails_animated/axolotl +/datum/sprite_accessory/tails_animated/mam_tails_animated/axolotl name = "Axolotl" icon_state = "axolotl" -/datum/sprite_accessory/mam_tails/batl +/datum/sprite_accessory/tails/mam_tails/batl name = "Bat (Long)" icon_state = "batl" -/datum/sprite_accessory/mam_tails_animated/batl +/datum/sprite_accessory/tails_animated/mam_tails_animated/batl name = "Bat (Long)" icon_state = "batl" -/datum/sprite_accessory/mam_tails/bats +/datum/sprite_accessory/tails/mam_tails/bats name = "Bat (Short)" icon_state = "bats" -/datum/sprite_accessory/mam_tails_animated/bats +/datum/sprite_accessory/tails_animated/mam_tails_animated/bats name = "Bat (Short)" icon_state = "bats" -/datum/sprite_accessory/mam_tails/bee +/datum/sprite_accessory/tails/mam_tails/bee name = "Bee" icon_state = "bee" -/datum/sprite_accessory/mam_tails_animated/bee +/datum/sprite_accessory/tails_animated/mam_tails_animated/bee name = "Bee" icon_state = "bee" -/datum/sprite_accessory/mam_tails/cat +/datum/sprite_accessory/tails/mam_tails/cat name = "Cat" icon_state = "cat" color_src = HAIR -/datum/sprite_accessory/mam_tails_animated/cat +/datum/sprite_accessory/tails_animated/mam_tails_animated/cat name = "Cat" icon_state = "cat" color_src = HAIR -/datum/sprite_accessory/mam_tails/catbig +/datum/sprite_accessory/tails/mam_tails/catbig name = "Cat, Big" icon_state = "catbig" -/datum/sprite_accessory/mam_tails_animated/catbig +/datum/sprite_accessory/tails_animated/mam_tails_animated/catbig name = "Cat, Big" icon_state = "catbig" -/datum/sprite_accessory/mam_tails/twocat +/datum/sprite_accessory/tails/mam_tails/twocat name = "Cat, Double" icon_state = "twocat" -/datum/sprite_accessory/mam_tails_animated/twocat +/datum/sprite_accessory/tails_animated/mam_tails_animated/twocat name = "Cat, Double" icon_state = "twocat" -/datum/sprite_accessory/mam_tails/corvid +/datum/sprite_accessory/tails/mam_tails/corvid name = "Corvid" icon_state = "crow" -/datum/sprite_accessory/mam_tails_animated/corvid +/datum/sprite_accessory/tails_animated/mam_tails_animated/corvid name = "Corvid" icon_state = "crow" -/datum/sprite_accessory/mam_tail/cow +/datum/sprite_accessory/tails/mam_tail/cow name = "Cow" icon_state = "cow" -/datum/sprite_accessory/mam_tails_animated/cow +/datum/sprite_accessory/tails_animated/mam_tails_animated/cow name = "Cow" icon_state = "cow" -/datum/sprite_accessory/mam_tails/eevee +/datum/sprite_accessory/tails/mam_tails/eevee name = "Eevee" icon_state = "eevee" -/datum/sprite_accessory/mam_tails_animated/eevee +/datum/sprite_accessory/tails_animated/mam_tails_animated/eevee name = "Eevee" icon_state = "eevee" -/datum/sprite_accessory/mam_tails/fennec +/datum/sprite_accessory/tails/mam_tails/fennec name = "Fennec" icon_state = "fennec" -/datum/sprite_accessory/mam_tails_animated/fennec +/datum/sprite_accessory/tails_animated/mam_tails_animated/fennec name = "Fennec" icon_state = "fennec" -/datum/sprite_accessory/mam_tails/human/fish +/datum/sprite_accessory/tails/mam_tails/human/fish name = "Fish" icon_state = "fish" -/datum/sprite_accessory/mam_tails_animated/human/fish +/datum/sprite_accessory/tails_animated/mam_tails_animated/human/fish name = "Fish" icon_state = "fish" -/datum/sprite_accessory/mam_tails/fox +/datum/sprite_accessory/tails/mam_tails/fox name = "Fox" icon_state = "fox" -/datum/sprite_accessory/mam_tails_animated/fox +/datum/sprite_accessory/tails_animated/mam_tails_animated/fox name = "Fox" icon_state = "fox" -/datum/sprite_accessory/mam_tails/hawk +/datum/sprite_accessory/tails/mam_tails/hawk name = "Hawk" icon_state = "hawk" -/datum/sprite_accessory/mam_tails_animated/hawk +/datum/sprite_accessory/tails_animated/mam_tails_animated/hawk name = "Hawk" icon_state = "hawk" -/datum/sprite_accessory/mam_tails/horse +/datum/sprite_accessory/tails/mam_tails/horse name = "Horse" icon_state = "horse" color_src = HAIR -/datum/sprite_accessory/mam_tails_animated/horse +/datum/sprite_accessory/tails_animated/mam_tails_animated/horse name = "Horse" icon_state = "horse" color_src = HAIR -/datum/sprite_accessory/mam_tails/husky +/datum/sprite_accessory/tails/mam_tails/husky name = "Husky" icon_state = "husky" -/datum/sprite_accessory/mam_tails_animated/husky +/datum/sprite_accessory/tails_animated/mam_tails_animated/husky name = "Husky" icon_state = "husky" -datum/sprite_accessory/mam_tails/insect +datum/sprite_accessory/tails/mam_tails/insect name = "Insect" icon_state = "insect" -/datum/sprite_accessory/mam_tails_animated/insect +/datum/sprite_accessory/tails_animated/mam_tails_animated/insect name = "Insect" icon_state = "insect" -/datum/sprite_accessory/mam_tails/kangaroo +/datum/sprite_accessory/tails/mam_tails/kangaroo name = "kangaroo" icon_state = "kangaroo" -/datum/sprite_accessory/mam_tails_animated/kangaroo +/datum/sprite_accessory/tails_animated/mam_tails_animated/kangaroo name = "kangaroo" icon_state = "kangaroo" -/datum/sprite_accessory/mam_tails/kitsune +/datum/sprite_accessory/tails/mam_tails/kitsune name = "Kitsune" icon_state = "kitsune" -/datum/sprite_accessory/mam_tails_animated/kitsune +/datum/sprite_accessory/tails_animated/mam_tails_animated/kitsune name = "Kitsune" icon_state = "kitsune" -/datum/sprite_accessory/mam_tails/lab +/datum/sprite_accessory/tails/mam_tails/lab name = "Lab" icon_state = "lab" -/datum/sprite_accessory/mam_tails_animated/lab +/datum/sprite_accessory/tails_animated/mam_tails_animated/lab name = "Lab" icon_state = "lab" -/datum/sprite_accessory/mam_tails/murid +/datum/sprite_accessory/tails/mam_tails/murid name = "Murid" icon_state = "murid" -/datum/sprite_accessory/mam_tails_animated/murid +/datum/sprite_accessory/tails_animated/mam_tails_animated/murid name = "Murid" icon_state = "murid" -/datum/sprite_accessory/mam_tails/otie +/datum/sprite_accessory/tails/mam_tails/otie name = "Otusian" icon_state = "otie" -/datum/sprite_accessory/mam_tails_animated/otie +/datum/sprite_accessory/tails_animated/mam_tails_animated/otie name = "Otusian" icon_state = "otie" -/datum/sprite_accessory/mam_tails/orca +/datum/sprite_accessory/tails/mam_tails/orca name = "Orca" icon_state = "orca" -/datum/sprite_accessory/mam_tails_animated/orca +/datum/sprite_accessory/tails_animated/mam_tails_animated/orca name = "Orca" icon_state = "orca" -/datum/sprite_accessory/mam_tails/pede +/datum/sprite_accessory/tails/mam_tails/pede name = "Scolipede" icon_state = "pede" -/datum/sprite_accessory/mam_tails_animated/pede +/datum/sprite_accessory/tails_animated/mam_tails_animated/pede name = "Scolipede" icon_state = "pede" -/datum/sprite_accessory/mam_tails/rabbit +/datum/sprite_accessory/tails/mam_tails/rabbit name = "Rabbit" icon_state = "rabbit" -/datum/sprite_accessory/mam_tails_animated/rabbit +/datum/sprite_accessory/tails_animated/mam_tails_animated/rabbit name = "Rabbit" icon_state = "rabbit" -/datum/sprite_accessory/mam_tails/sergal +/datum/sprite_accessory/tails/mam_tails/sergal name = "Sergal" icon_state = "sergal" -/datum/sprite_accessory/mam_tails_animated/sergal +/datum/sprite_accessory/tails_animated/mam_tails_animated/sergal name = "Sergal" icon_state = "sergal" -/datum/sprite_accessory/mam_tails/skunk +/datum/sprite_accessory/tails/mam_tails/skunk name = "Skunk" icon_state = "skunk" -/datum/sprite_accessory/mam_tails_animated/skunk +/datum/sprite_accessory/tails_animated/mam_tails_animated/skunk name = "Skunk" icon_state = "skunk" -/datum/sprite_accessory/mam_tails/smooth +/datum/sprite_accessory/tails/mam_tails/smooth name = "Smooth" icon_state = "smooth" color_src = MUTCOLORS icon = 'icons/mob/mutant_bodyparts.dmi' -/datum/sprite_accessory/mam_tails_animated/smooth +/datum/sprite_accessory/tails_animated/mam_tails_animated/smooth name = "Smooth" icon_state = "smooth" color_src = MUTCOLORS icon = 'icons/mob/mutant_bodyparts.dmi' -/datum/sprite_accessory/mam_tails_animated/spikes +/datum/sprite_accessory/tails_animated/mam_tails_animated/spikes name = "Spikes" icon_state = "spikes" color_src = MUTCOLORS icon = 'icons/mob/mutant_bodyparts.dmi' -/datum/sprite_accessory/mam_tails/spikes +/datum/sprite_accessory/tails/mam_tails/spikes name = "Spikes" icon_state = "spikes" color_src = MUTCOLORS icon = 'icons/mob/mutant_bodyparts.dmi' -/datum/sprite_accessory/mam_tails/shark +/datum/sprite_accessory/tails/mam_tails/shark name = "Shark" icon_state = "shark" -/datum/sprite_accessory/mam_tails_animated/shark +/datum/sprite_accessory/tails_animated/mam_tails_animated/shark name = "Shark" icon_state = "shark" -/datum/sprite_accessory/mam_tails/shepherd +/datum/sprite_accessory/tails/mam_tails/shepherd name = "Shepherd" icon_state = "shepherd" -/datum/sprite_accessory/mam_tails_animated/shepherd +/datum/sprite_accessory/tails_animated/mam_tails_animated/shepherd name = "Shepherd" icon_state = "shepherd" -/datum/sprite_accessory/mam_tails/straighttail +/datum/sprite_accessory/tails/mam_tails/straighttail name = "Straight Tail" icon_state = "straighttail" -/datum/sprite_accessory/mam_tails_animated/straighttail +/datum/sprite_accessory/tails_animated/mam_tails_animated/straighttail name = "Straight Tail" icon_state = "straighttail" -/datum/sprite_accessory/mam_tails/squirrel +/datum/sprite_accessory/tails/mam_tails/squirrel name = "Squirrel" icon_state = "squirrel" -/datum/sprite_accessory/mam_tails_animated/squirrel +/datum/sprite_accessory/tails_animated/mam_tails_animated/squirrel name = "Squirrel" icon_state = "squirrel" -/datum/sprite_accessory/mam_tails/tamamo_kitsune +/datum/sprite_accessory/tails/mam_tails/tamamo_kitsune name = "Tamamo Kitsune Tails" icon_state = "9sune" -/datum/sprite_accessory/mam_tails_animated/tamamo_kitsune +/datum/sprite_accessory/tails_animated/mam_tails_animated/tamamo_kitsune name = "Tamamo Kitsune Tails" icon_state = "9sune" -/datum/sprite_accessory/mam_tails/tentacle +/datum/sprite_accessory/tails/mam_tails/tentacle name = "Tentacle" icon_state = "tentacle" -/datum/sprite_accessory/mam_tails_animated/tentacle +/datum/sprite_accessory/tails_animated/mam_tails_animated/tentacle name = "Tentacle" icon_state = "tentacle" -/datum/sprite_accessory/mam_tails/tiger +/datum/sprite_accessory/tails/mam_tails/tiger name = "Tiger" icon_state = "tiger" -/datum/sprite_accessory/mam_tails_animated/tiger +/datum/sprite_accessory/tails_animated/mam_tails_animated/tiger name = "Tiger" icon_state = "tiger" -/datum/sprite_accessory/mam_tails/dtiger +/datum/sprite_accessory/tails/mam_tails/dtiger name = "Dark Tiger" icon_state = "dtiger" color_src = MUTCOLORS icon = 'icons/mob/mutant_bodyparts.dmi' -/datum/sprite_accessory/mam_tails_animated/dtiger +/datum/sprite_accessory/tails_animated/mam_tails_animated/dtiger name = "Dark Tiger" icon_state = "dtiger" color_src = MUTCOLORS icon = 'icons/mob/mutant_bodyparts.dmi' -/datum/sprite_accessory/mam_tails/ltiger +/datum/sprite_accessory/tails/mam_tails/ltiger name = "Light Tiger" icon_state = "ltiger" color_src = MUTCOLORS icon = 'icons/mob/mutant_bodyparts.dmi' -/datum/sprite_accessory/mam_tails_animated/ltiger +/datum/sprite_accessory/tails_animated/mam_tails_animated/ltiger name = "Light Tiger" icon_state = "ltiger" color_src = MUTCOLORS icon = 'icons/mob/mutant_bodyparts.dmi' -/datum/sprite_accessory/mam_tails/wolf +/datum/sprite_accessory/tails/mam_tails/wolf name = "Wolf" icon_state = "wolf" -/datum/sprite_accessory/mam_tails_animated/wolf +/datum/sprite_accessory/tails_animated/mam_tails_animated/wolf name = "Wolf" icon_state = "wolf" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm index 34767a10f1..fb03df88a1 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -5,10 +5,16 @@ icon_state = "none" relevant_layers = null +/datum/sprite_accessory/wings/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (!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)))) + /datum/sprite_accessory/wings_open icon = 'icons/mob/wings.dmi' relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) +/datum/sprite_accessory/wings_open/is_not_visible(var/mob/living/carbon/human/H, var/tauric) + return (H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) && (!H.wear_suit.species_exception || !is_type_in_list(src, H.wear_suit.species_exception)) || H.dna.species.mutant_bodyparts["wings"]) + /datum/sprite_accessory/wings_open/angel name = "Angel" icon_state = "angel" diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index df049f672d..230a634e0e 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -642,106 +642,19 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(!mutant_bodyparts) return - var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) var/tauric = mutant_bodyparts["taur"] && H.dna.features["taur"] && H.dna.features["taur"] != "None" - if(mutant_bodyparts["tail_lizard"]) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) - bodyparts_to_add -= "tail_lizard" - - if(mutant_bodyparts["waggingtail_lizard"]) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) - bodyparts_to_add -= "waggingtail_lizard" - else if (mutant_bodyparts["tail_lizard"]) - bodyparts_to_add -= "waggingtail_lizard" - - if(mutant_bodyparts["tail_human"]) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) - bodyparts_to_add -= "tail_human" - - if(mutant_bodyparts["waggingtail_human"]) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) - bodyparts_to_add -= "waggingtail_human" - else if (mutant_bodyparts["tail_human"]) - bodyparts_to_add -= "waggingtail_human" - - 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(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 (mutant_bodyparts["tail"]) - bodyparts_to_add -= "waggingspines" - - 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(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(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(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(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(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 (mutant_bodyparts["wings"]) - bodyparts_to_add -= "wings_open" - - 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(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(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(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(mutant_bodyparts["mam_tail"]) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) - bodyparts_to_add -= "mam_tail" - - if(mutant_bodyparts["mam_waggingtail"]) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) - bodyparts_to_add -= "mam_waggingtail" - else if (mutant_bodyparts["mam_tail"]) - bodyparts_to_add -= "mam_waggingtail" - - 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(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(mutant_bodyparts["taur"]) - if(!tauric || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) - bodyparts_to_add -= "taur" - -//END EDIT + for(var/mutant_part in mutant_bodyparts) + var/reference_list = GLOB.mutant_reference_list[mutant_part] + if(reference_list) + var/datum/sprite_accessory/S + var/transformed_part = GLOB.mutant_transform_list[mutant_part] + if(transformed_part) + S = reference_list[H.dna.features[transformed_part]] + else + S = reference_list[H.dna.features[mutant_part]] + if(!S || S.is_not_visible(H, tauric)) + bodyparts_to_add -= mutant_part //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 @@ -778,76 +691,22 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/list/dna_feature_as_text_string = list() for(var/bodypart in bodyparts_to_add) - var/datum/sprite_accessory/S - switch(bodypart) - if("tail_lizard") - S = GLOB.tails_list_lizard[H.dna.features["tail_lizard"]] - if("waggingtail_lizard") - S = GLOB.animated_tails_list_lizard[H.dna.features["tail_lizard"]] - if("tail_human") - S = GLOB.tails_list_human[H.dna.features["tail_human"]] - if("waggingtail_human") - S = GLOB.animated_tails_list_human[H.dna.features["tail_human"]] - if("spines") - S = GLOB.spines_list[H.dna.features["spines"]] - if("waggingspines") - S = GLOB.animated_spines_list[H.dna.features["spines"]] - if("snout") - S = GLOB.snouts_list[H.dna.features["snout"]] - if("frills") - S = GLOB.frills_list[H.dna.features["frills"]] - if("horns") - S = GLOB.horns_list[H.dna.features["horns"]] - if("ears") - S = GLOB.ears_list[H.dna.features["ears"]] - if("body_markings") - S = GLOB.body_markings_list[H.dna.features["body_markings"]] - if("wings") - S = GLOB.wings_list[H.dna.features["wings"]] - if("wingsopen") - S = GLOB.wings_open_list[H.dna.features["wings"]] - if("deco_wings") - S = GLOB.deco_wings_list[H.dna.features["deco_wings"]] - if("legs") - S = GLOB.legs_list[H.dna.features["legs"]] - if("insect_wings") - S = GLOB.insect_wings_list[H.dna.features["insect_wings"]] - if("insect_fluff") - S = GLOB.insect_fluffs_list[H.dna.features["insect_fluff"]] - if("insect_markings") - S = GLOB.insect_markings_list[H.dna.features["insect_markings"]] - if("caps") - S = GLOB.caps_list[H.dna.features["caps"]] - if("ipc_screen") - S = GLOB.ipc_screens_list[H.dna.features["ipc_screen"]] - if("ipc_antenna") - S = GLOB.ipc_antennas_list[H.dna.features["ipc_antenna"]] - if("mam_tail") - S = GLOB.mam_tails_list[H.dna.features["mam_tail"]] - if("mam_waggingtail") - S = GLOB.mam_tails_animated_list[H.dna.features["mam_tail"]] - if("mam_body_markings") - S = GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]] - if("mam_ears") - S = GLOB.mam_ears_list[H.dna.features["mam_ears"]] - if("mam_snouts") - S = GLOB.mam_snouts_list[H.dna.features["mam_snouts"]] - if("taur") - S = GLOB.taur_list[H.dna.features["taur"]] - if("xenodorsal") - S = GLOB.xeno_dorsal_list[H.dna.features["xenodorsal"]] - if("xenohead") - S = GLOB.xeno_head_list[H.dna.features["xenohead"]] - if("xenotail") - S = GLOB.xeno_tail_list[H.dna.features["xenotail"]] + var/reference_list = GLOB.mutant_reference_list[bodypart] + if(reference_list) + var/datum/sprite_accessory/S + var/transformed_part = GLOB.mutant_transform_list[bodypart] + if(transformed_part) + S = reference_list[H.dna.features[transformed_part]] + else + S = reference_list[H.dna.features[bodypart]] - if(!S || S.icon_state == "none") - continue + if(!S || S.icon_state == "none") + continue - for(var/L in S.relevant_layers) - LAZYADD(relevant_layers["[L]"], S) - if(!S.mutant_part_string) - dna_feature_as_text_string[S] = bodypart + for(var/L in S.relevant_layers) + LAZYADD(relevant_layers["[L]"], S) + if(!S.mutant_part_string) + dna_feature_as_text_string[S] = bodypart var/static/list/layer_text = list( "[BODY_BEHIND_LAYER]" = "BEHIND", @@ -2046,17 +1905,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return /** - - - * The human species version of [/mob/living/carbon/proc/get_biological_state]. Depends on the HAS_FLESH and HAS_BONE species traits, having bones lets you have bone wounds, having flesh lets you have burn, slash, and piercing wounds - - - */ - - - /datum/species/proc/get_biological_state(mob/living/carbon/human/H) . = BIO_INORGANIC if(HAS_FLESH in species_traits) @@ -2072,7 +1922,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(HAS_TRAIT(H, TRAIT_NOBREATH)) return TRUE - /datum/species/proc/handle_environment(datum/gas_mixture/environment, mob/living/carbon/human/H) if(!environment) return @@ -2264,7 +2113,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/spec_stun(mob/living/carbon/human/H,amount) if(H) stop_wagging_tail(H) - . = stunmod * H.physiology.stun_mod * amount ////////////// 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 c762a52ffc..49c55f70b3 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -504,7 +504,7 @@ else if (select_alteration == "Ears") var/list/snowflake_ears_list = list("Normal" = null) for(var/path in GLOB.mam_ears_list) - var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[path] + var/datum/sprite_accessory/ears/mam_ears/instance = GLOB.mam_ears_list[path] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(H.client.ckey))) @@ -518,7 +518,7 @@ else if (select_alteration == "Snout") var/list/snowflake_snouts_list = list("Normal" = null) for(var/path in GLOB.mam_snouts_list) - var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[path] + var/datum/sprite_accessory/snouts/mam_snouts/instance = GLOB.mam_snouts_list[path] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(H.client.ckey))) @@ -549,7 +549,7 @@ else if (select_alteration == "Tail") var/list/snowflake_tails_list = list("Normal" = null) for(var/path in GLOB.mam_tails_list) - var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[path] + var/datum/sprite_accessory/tails/mam_tails/instance = GLOB.mam_tails_list[path] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(H.client.ckey))) diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index b61e29b685..8c30adb8f9 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -57,89 +57,10 @@ ..() /datum/species/plasmaman/before_equip_job(datum/job/J, mob/living/carbon/human/H, visualsOnly = FALSE) - var/current_job = J?.title var/datum/outfit/plasmaman/O = new /datum/outfit/plasmaman - switch(current_job) - if("Chaplain") - O = new /datum/outfit/plasmaman/chaplain - - if("Curator") - O = new /datum/outfit/plasmaman/curator - - if("Janitor") - O = new /datum/outfit/plasmaman/janitor - - if("Botanist") - O = new /datum/outfit/plasmaman/botany - - if("Bartender", "Lawyer") - O = new /datum/outfit/plasmaman/bar - - if("Cook") - O = new /datum/outfit/plasmaman/chef - - if("Security Officer") - O = new /datum/outfit/plasmaman/security - - if("Detective") - O = new /datum/outfit/plasmaman/detective - - if("Warden") - O = new /datum/outfit/plasmaman/warden - - if("Cargo Technician", "Quartermaster") - O = new /datum/outfit/plasmaman/cargo - - if("Shaft Miner") - O = new /datum/outfit/plasmaman/mining - - if("Medical Doctor") - O = new /datum/outfit/plasmaman/medical - - if("Chemist") - O = new /datum/outfit/plasmaman/chemist - - if("Geneticist") - O = new /datum/outfit/plasmaman/genetics - - if("Roboticist") - O = new /datum/outfit/plasmaman/robotics - - if("Virologist") - O = new /datum/outfit/plasmaman/viro - - if("Scientist") - O = new /datum/outfit/plasmaman/science - - if("Station Engineer") - O = new /datum/outfit/plasmaman/engineering - - if("Atmospheric Technician") - O = new /datum/outfit/plasmaman/atmospherics - - if("Captain") - O = new /datum/outfit/plasmaman/captain - - if("Head of Personnel") - O = new /datum/outfit/plasmaman/hop - - if("Head of Security") - O = new /datum/outfit/plasmaman/hos - - if("Chief Engineer") - O = new /datum/outfit/plasmaman/ce - - if("Chief Medical Officer") - O = new /datum/outfit/plasmaman/cmo - - if("Research Director") - O = new /datum/outfit/plasmaman/rd - - if("Mime") - O = new /datum/outfit/plasmaman/mime - - if("Clown") - O = new /datum/outfit/plasmaman/clown + if(J) + if(J.plasma_outfit) + O = new J.plasma_outfit H.equipOutfit(O, visualsOnly) H.internal = H.get_item_for_held_index(2) diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index b760af9850..228a69c30f 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -82,13 +82,11 @@ M.AddSpell(SW) shadowwalk = SW - /obj/item/organ/brain/nightmare/Remove(special = FALSE) if(shadowwalk && owner) owner.RemoveSpell(shadowwalk) return ..() - /obj/item/organ/heart/nightmare name = "heart of darkness" desc = "An alien organ that twists and writhes when exposed to light." diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index c504e5ccd3..1b6bef9dc6 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -24,7 +24,7 @@ burnmod = 1 ..() -/datum/species/skeleton/greater/check_roundstart_eligible() +/datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) return TRUE return ..() 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 5ed806b302..173411eaa1 100644 --- a/code/modules/mob/living/carbon/human/species_types/synthliz.dm +++ b/code/modules/mob/living/carbon/human/species_types/synthliz.dm @@ -22,4 +22,4 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" - species_type = "robotic" \ No newline at end of file + species_type = "robotic" 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 a1a2a33c54..c10521dfd9 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -100,14 +100,12 @@ else return ..() - /datum/species/synth/handle_body(mob/living/carbon/human/H) if(fake_species) fake_species.handle_body(H) else return ..() - /datum/species/synth/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) if(fake_species) fake_species.handle_body(H,forced_colour) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 5c83482bde..e7c5644e26 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -313,7 +313,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/insectguts, /obj/effect/decal/cleanable/semen, - /obj/effect/decal/cleanable/femcum, + /obj/effect/decal/cleanable/semen/femcum, /obj/effect/decal/cleanable/generic, /obj/effect/decal/cleanable/glass,, /obj/effect/decal/cleanable/cobweb, diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index b60ee8d108..3433824282 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2218,6 +2218,7 @@ color = "#FFFFFF" // rgb: 255, 255, 255 can_synth = FALSE nutriment_factor = 0.5 * REAGENTS_METABOLISM + var/decal_path = /obj/effect/decal/cleanable/semen /datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) if(!istype(T)) @@ -2227,7 +2228,7 @@ var/obj/effect/decal/cleanable/semen/S = locate() in T if(!S) - S = new(T) + S = new decal_path(T) if(data["blood_DNA"]) S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) @@ -2251,51 +2252,20 @@ blood_DNA |= S.blood_DNA return ..() -/datum/reagent/consumable/femcum +/datum/reagent/consumable/semen/femcum name = "Female Ejaculate" description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business." taste_description = "something with a tang" // wew coders who haven't eaten out a girl. - taste_mult = 2 - data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) - reagent_state = LIQUID color = "#AAAAAA77" - can_synth = FALSE - nutriment_factor = 0.5 * REAGENTS_METABOLISM + decal_path = /obj/effect/decal/cleanable/semen/femcum -/obj/effect/decal/cleanable/femcum +/obj/effect/decal/cleanable/semen/femcum name = "female ejaculate" - desc = null - gender = PLURAL - density = 0 - layer = ABOVE_NORMAL_TURF_LAYER - icon = 'icons/obj/genitals/effects.dmi' icon_state = "fem1" random_icon_states = list("fem1", "fem2", "fem3", "fem4") blood_state = null bloodiness = null -/obj/effect/decal/cleanable/femcum/Initialize(mapload) - . = ..() - dir = GLOB.cardinals - add_blood_DNA(list("Non-human DNA" = "A+")) - -/obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) - if(F.blood_DNA) - blood_DNA |= F.blood_DNA - return ..() - -/datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) - if(!istype(T)) - return - if(reac_volume < 10) - return - - var/obj/effect/decal/cleanable/femcum/S = locate() in T - if(!S) - S = new(T) - if(data["blood_DNA"]) - S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) - /datum/reagent/determination name = "Determination" description = "For when you need to push on a little more. Do NOT allow near plants."