From e559fdca2c8d0a8333377f8eae8f4a2b8b5811d3 Mon Sep 17 00:00:00 2001 From: Armhulen Date: Wed, 7 Mar 2018 19:34:56 -0800 Subject: [PATCH] Mushroom people, revived! --- code/__HELPERS/global_lists.dm | 4 +- code/__HELPERS/mobs.dm | 6 + code/_globalvars/lists/flavor_misc.dm | 134 ++++++++++++++++++ code/datums/martial/mushpunch.dm | 36 +++++ code/game/objects/effects/spawners/bundle.dm | 2 +- code/game/objects/structures/mirror.dm | 2 +- code/modules/hydroponics/grown/mushrooms.dm | 3 - code/modules/language/mushroom.dm | 11 ++ .../mob/dead/new_player/sprite_accessories.dm | 8 ++ .../mob/living/carbon/human/species.dm | 5 + .../carbon/human/species_types/mushpeople.dm | 60 ++++++++ code/modules/surgery/organs/eyes.dm | 4 + icons/mob/mutant_bodyparts.dmi | Bin 33215 -> 33474 bytes tgstation.dme | 3 + 14 files changed, 271 insertions(+), 7 deletions(-) create mode 100644 code/datums/martial/mushpunch.dm create mode 100644 code/modules/language/mushroom.dm create mode 100644 code/modules/mob/living/carbon/human/species_types/mushpeople.dm diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index fd83cc0658..4a7f2fdbc1 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -13,7 +13,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f) //socks init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list) - //lizard bodyparts (blizzard intensifies) + //bodypart accessories (blizzard intensifies) init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard) init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/lizard, GLOB.animated_tails_list_lizard) @@ -29,7 +29,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, GLOB.animated_spines_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE) - //moffs + init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) //CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index b2bb939b11..6669a1d03c 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -74,6 +74,7 @@ if(!GLOB.moth_wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) +<<<<<<< HEAD //CIT CHANGES - genitals and such if(!GLOB.cock_shapes_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, GLOB.cock_shapes_list) @@ -166,6 +167,11 @@ "womb_efficiency" = CUM_EFFICIENCY, "womb_fluid" = "femcum", "flavor_text" = "")) +======= + //For now we will always return none for tail_human and ears. + return(list("mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "tail_lizard" = pick(GLOB.tails_list_lizard), "tail_human" = "None", "wings" = "None", "snout" = pick(GLOB.snouts_list), "horns" = pick(GLOB.horns_list), "ears" = "None", "frills" = pick(GLOB.frills_list), "spines" = pick(GLOB.spines_list), "body_markings" = pick(GLOB.body_markings_list), "legs" = "Normal Legs", "caps" = pick(GLOB.caps_list), "moth_wings" = pick(GLOB.moth_wings_list))) + +>>>>>>> 84d4b3a... Mushroom people, revived! (#35858) /proc/random_hair_style(gender) switch(gender) if(MALE) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index ebf86ed666..dde535a238 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD //Preferences stuff //Hairstyles GLOBAL_LIST_EMPTY(hair_styles_list) //stores /datum/sprite_accessory/hair indexed by name @@ -128,3 +129,136 @@ GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings()) GLOBAL_LIST_INIT(admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "null","Error: No comment given.", "It's a good day to die!")) +======= +//Preferences stuff + //Hairstyles +GLOBAL_LIST_EMPTY(hair_styles_list) //stores /datum/sprite_accessory/hair indexed by name +GLOBAL_LIST_EMPTY(hair_styles_male_list) //stores only hair names +GLOBAL_LIST_EMPTY(hair_styles_female_list) //stores only hair names +GLOBAL_LIST_EMPTY(facial_hair_styles_list) //stores /datum/sprite_accessory/facial_hair indexed by name +GLOBAL_LIST_EMPTY(facial_hair_styles_male_list) //stores only hair names +GLOBAL_LIST_EMPTY(facial_hair_styles_female_list) //stores only hair names + //Underwear +GLOBAL_LIST_EMPTY(underwear_list) //stores /datum/sprite_accessory/underwear indexed by name +GLOBAL_LIST_EMPTY(underwear_m) //stores only underwear name +GLOBAL_LIST_EMPTY(underwear_f) //stores only underwear name + //Undershirts +GLOBAL_LIST_EMPTY(undershirt_list) //stores /datum/sprite_accessory/undershirt indexed by name +GLOBAL_LIST_EMPTY(undershirt_m) //stores only undershirt name +GLOBAL_LIST_EMPTY(undershirt_f) //stores only undershirt name + //Socks +GLOBAL_LIST_EMPTY(socks_list) //stores /datum/sprite_accessory/socks indexed by name + //Lizard Bits (all datum lists indexed by name) +GLOBAL_LIST_EMPTY(body_markings_list) +GLOBAL_LIST_EMPTY(tails_list_lizard) +GLOBAL_LIST_EMPTY(animated_tails_list_lizard) +GLOBAL_LIST_EMPTY(snouts_list) +GLOBAL_LIST_EMPTY(horns_list) +GLOBAL_LIST_EMPTY(frills_list) +GLOBAL_LIST_EMPTY(spines_list) +GLOBAL_LIST_EMPTY(legs_list) +GLOBAL_LIST_EMPTY(animated_spines_list) + + //Mutant Human bits +GLOBAL_LIST_EMPTY(tails_list_human) +GLOBAL_LIST_EMPTY(animated_tails_list_human) +GLOBAL_LIST_EMPTY(ears_list) +GLOBAL_LIST_EMPTY(wings_list) +GLOBAL_LIST_EMPTY(wings_open_list) +GLOBAL_LIST_EMPTY(r_wings_list) +GLOBAL_LIST_EMPTY(moth_wings_list) +GLOBAL_LIST_EMPTY(caps_list) + +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 + +GLOBAL_LIST_INIT(security_depts_prefs, list(SEC_DEPT_RANDOM, SEC_DEPT_NONE, SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, SEC_DEPT_SCIENCE, SEC_DEPT_SUPPLY)) + + //Backpacks +#define GBACKPACK "Grey Backpack" +#define GSATCHEL "Grey Satchel" +#define GDUFFELBAG "Grey Duffel Bag" +#define LSATCHEL "Leather Satchel" +#define DBACKPACK "Department Backpack" +#define DSATCHEL "Department Satchel" +#define DDUFFELBAG "Department Duffel Bag" +GLOBAL_LIST_INIT(backbaglist, list(DBACKPACK, DSATCHEL, DDUFFELBAG, GBACKPACK, GSATCHEL, GDUFFELBAG, LSATCHEL)) + +//Uplink spawn loc +#define UPLINK_PDA "PDA" +#define UPLINK_RADIO "Radio" +#define UPLINK_PEN "Pen" //like a real spy! +GLOBAL_LIST_INIT(uplink_spawn_loc_list, list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN)) + + //Female Uniforms +GLOBAL_LIST_EMPTY(female_clothing_icons) + + //radical shit +GLOBAL_LIST_INIT(hit_appends, list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")) + +GLOBAL_LIST_INIT(scarySounds, list('sound/weapons/thudswoosh.ogg','sound/weapons/taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg','sound/items/welder.ogg','sound/items/welder2.ogg','sound/machines/airlock.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg')) + + +// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to +// the index of the sort department that you want. For example, sortType set to 2 will reroute all packages +// tagged for the Cargo Bay. + +/* List of sortType codes for mapping reference +0 Waste +1 Disposals +2 Cargo Bay +3 QM Office +4 Engineering +5 CE Office +6 Atmospherics +7 Security +8 HoS Office +9 Medbay +10 CMO Office +11 Chemistry +12 Research +13 RD Office +14 Robotics +15 HoP Office +16 Library +17 Chapel +18 Theatre +19 Bar +20 Kitchen +21 Hydroponics +22 Janitor +23 Genetics +*/ + +GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals", + "Cargo Bay", "QM Office", "Engineering", "CE Office", + "Atmospherics", "Security", "HoS Office", "Medbay", + "CMO Office", "Chemistry", "Research", "RD Office", + "Robotics", "HoP Office", "Library", "Chapel", "Theatre", + "Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics")) + +GLOBAL_LIST_INIT(guitar_notes, flist("sound/guitar/")) + +GLOBAL_LIST_INIT(station_prefixes, world.file2list("strings/station_prefixes.txt") + "") + +GLOBAL_LIST_INIT(station_names, world.file2list("strings/station_names.txt" + "")) + +GLOBAL_LIST_INIT(station_suffixes, world.file2list("strings/station_suffixes.txt")) + +GLOBAL_LIST_INIT(greek_letters, world.file2list("strings/greek_letters.txt")) + +GLOBAL_LIST_INIT(phonetic_alphabet, world.file2list("strings/phonetic_alphabet.txt")) + +GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt")) + +/proc/generate_number_strings() + var/list/L[198] + for(var/i in 1 to 99) + L += "[i]" + L += "\Roman[i]" + return L + +GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings()) + +GLOBAL_LIST_INIT(admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "null","Error: No comment given.", "It's a good day to die!")) +>>>>>>> 84d4b3a... Mushroom people, revived! (#35858) diff --git a/code/datums/martial/mushpunch.dm b/code/datums/martial/mushpunch.dm new file mode 100644 index 0000000000..6a6d4c3fb2 --- /dev/null +++ b/code/datums/martial/mushpunch.dm @@ -0,0 +1,36 @@ +/datum/martial_art/mushpunch + name = "Mushroom Punch" + +/datum/martial_art/mushpunch/basic_hit(mob/living/carbon/human/A, mob/living/carbon/human/D) + var/atk_verb + to_chat(A, "You begin to wind up an attack...") + if(do_after(A, 25, target = D)) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + atk_verb = pick("punches", "smashes", "ruptures", "cracks") + D.visible_message("[A] [atk_verb] [D] with inhuman strength, sending [D.p_them()] flying backwards!", \ + "[A] [atk_verb] you with inhuman strength, sending you flying backwards!") + D.apply_damage(rand(15,30), BRUTE) + playsound(get_turf(D), 'sound/effects/meteorimpact.ogg', 25, 1, -1) + var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A))) + D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time. + D.Knockdown(20) + if(atk_verb) + add_logs(A, D, "[atk_verb] (Mushroom Punch)") + return TRUE + return FALSE + +/obj/item/mushpunch + name = "mysterious mushroom" + desc = "Sapienza Ophioglossoides:An odd mushroom from the flesh of a mushroom person. it has apparently retained some innate power of it's owner, as it quivers with barely-contained POWER!" + icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' + icon_state = "mycelium-angel" + +/obj/item/mushpunch/attack_self(mob/living/carbon/human/user) + if(!istype(user) || !user) + return + var/message = "You devour [src], and a confluence of skill and power from the mushroom enhances your punches! You do need a short moment to charge these powerful punches." + to_chat(user, message) + var/datum/martial_art/mushpunch/mush = new(null) + mush.teach(user) + qdel(src) + visible_message("[user] devours [src].") diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm index be32f0df19..2fe8d2a460 100644 --- a/code/game/objects/effects/spawners/bundle.dm +++ b/code/game/objects/effects/spawners/bundle.dm @@ -22,7 +22,7 @@ /obj/item/reagent_containers/food/snacks/egg) /obj/effect/spawner/bundle/costume/gladiator - name = "gladitator costume spawner" + name = "gladiator costume spawner" items = list( /obj/item/clothing/under/gladiator, /obj/item/clothing/head/helmet/gladiator) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index f0168694f0..6553f5ec66 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -90,7 +90,7 @@ name = "magic mirror" desc = "Turn and face the strange... face." icon_state = "magic_mirror" - var/list/races_blacklist = list("skeleton", "agent", "angel", "military_synth", "memezombies", "clockwork golem servant", "android", "synth") + var/list/races_blacklist = list("skeleton", "agent", "angel", "military_synth", "memezombies", "clockwork golem servant", "android", "synth", "mush") var/list/choosable_races = list() /obj/structure/mirror/magic/New() diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index b1ac5604b4..352d4eff7b 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -23,9 +23,6 @@ growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' reagents_add = list("morphine" = 0.35, "charcoal" = 0.35, "nutriment" = 0) - - - /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi seed = /obj/item/seeds/reishi name = "reishi" diff --git a/code/modules/language/mushroom.dm b/code/modules/language/mushroom.dm new file mode 100644 index 0000000000..b896d11449 --- /dev/null +++ b/code/modules/language/mushroom.dm @@ -0,0 +1,11 @@ +/datum/language/mushroom + name = "Mushroom" + desc = "A language that consists of the sound of periodic gusts of spore-filled air being released." + speech_verb = "puffs" + ask_verb = "puffs inquisitively" + exclaim_verb = "poofs loudly" + whisper_verb = "puffs quietly" + key = "y" + sentence_chance = 0 + default_priority = 80 + syllables = list("poof", "pff", "pFfF", "piff", "puff", "pooof", "pfffff", "piffpiff", "puffpuff", "poofpoof", "pifpafpofpuf") diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm index 57d912067e..8699e02b29 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -1402,6 +1402,14 @@ /datum/sprite_accessory/legs/digitigrade_lizard name = "Digitigrade Legs" +/datum/sprite_accessory/caps + icon = 'icons/mob/mutant_bodyparts.dmi' + color_src = HAIR + +/datum/sprite_accessory/caps/round + name = "Round" + icon_state = "round" + /datum/sprite_accessory/moth_wings icon = 'icons/mob/wings.dmi' color_src = null diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 8a78c1532e..e08df18d2c 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -683,6 +683,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.legs_list[H.dna.features["legs"]] if("moth_wings") S = GLOB.moth_wings_list[H.dna.features["moth_wings"]] +<<<<<<< HEAD //Mammal Bodyparts if("mam_tail") @@ -704,6 +705,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) if("xenotail") S = GLOB.xeno_tail_list[H.dna.features["xenotail"]] +======= + if("caps") + S = GLOB.caps_list[H.dna.features["caps"]] +>>>>>>> 84d4b3a... Mushroom people, revived! (#35858) if(!S || S.icon_state == "none") continue diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm new file mode 100644 index 0000000000..18cb2d248d --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -0,0 +1,60 @@ +/datum/species/mush //mush mush codecuck + name = "Mushroomperson" + id = "mush" + mutant_bodyparts = list("caps") + default_features = list("caps" = "Round") + + fixed_mut_color = "DBBF92" + hair_color = "FF4B19" //cap color, spot color uses eye color + nojumpsuit = TRUE + + say_mod = "poofs" //what does a mushroom sound like + species_traits = list(MUTCOLORS, NOEYES, NO_UNDERWEAR) + inherent_traits = list(TRAIT_NOBREATH) + speedmod = 1.5 //faster than golems but not by much + + punchdamagelow = 6 + punchdamagehigh = 14 + punchstunthreshold = 14 //about 44% chance to stun + + no_equip = list(slot_wear_mask, slot_wear_suit, slot_gloves, slot_shoes, slot_w_uniform) + + burnmod = 1.25 + heatmod = 1.5 + + mutanteyes = /obj/item/organ/eyes/night_vision/mushroom + use_skintones = FALSE + var/datum/martial_art/mushpunch/mush + +/datum/species/mush/check_roundstart_eligible() + return FALSE //hard locked out of roundstart on the order of design lead kor, this can be removed in the future when planetstation is here OR SOMETHING but right now we have a problem with races. + +/datum/species/mush/after_equip_job(datum/job/J, mob/living/carbon/human/H) + H.grant_language(/datum/language/mushroom) //pomf pomf + +/datum/species/mush/on_species_gain(mob/living/carbon/C, datum/species/old_species) + . = ..() + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!H.dna.features["caps"]) + H.dna.features["caps"] = "Round" + handle_mutant_bodyparts(H) + H.faction |= "mushroom" + mush = new(null) + mush.teach(H) + +/datum/species/mush/on_species_loss(mob/living/carbon/C) + . = ..() + C.faction -= "mushroom" + mush.remove(C) + QDEL_NULL(mush) + +/datum/species/mush/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) + if(chem.id == "weedkiller") + H.adjustToxLoss(3) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + return TRUE + +/datum/species/mush/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) + forced_colour = FALSE + ..() diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 93b0439d83..b840d82670 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -77,6 +77,10 @@ desc = "Even without their shadowy owner, looking at these eyes gives you a sense of dread." icon_state = "burning_eyes" +/obj/item/organ/eyes/night_vision/mushroom + name = "fung-eye" + desc = "While on the outside they look inert and dead, the eyes of mushroom people are actually very advanced." + ///Robotic /obj/item/organ/eyes/robotic diff --git a/icons/mob/mutant_bodyparts.dmi b/icons/mob/mutant_bodyparts.dmi index 25594b32834f2e41daf5d013d8433dca9f80782d..19ebe0a4be37fd0e8ce9d27dae3dae420b81a5cd 100644 GIT binary patch delta 11322 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 S3JzR}IA&~NRBUkW+W!HS_1ND4 delta 11129 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 D8NQct diff --git a/tgstation.dme b/tgstation.dme index b1787c6712..f434b4280d 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -397,6 +397,7 @@ #include "code\datums\martial\boxing.dm" #include "code\datums\martial\cqc.dm" #include "code\datums\martial\krav_maga.dm" +#include "code\datums\martial\mushpunch.dm" #include "code\datums\martial\plasma_fist.dm" #include "code\datums\martial\psychotic_brawl.dm" #include "code\datums\martial\sleeping_carp.dm" @@ -1668,6 +1669,7 @@ #include "code\modules\language\language_menu.dm" #include "code\modules\language\machine.dm" #include "code\modules\language\monkey.dm" +#include "code\modules\language\mushroom.dm" #include "code\modules\language\narsian.dm" #include "code\modules\language\ratvarian.dm" #include "code\modules\language\slime.dm" @@ -1859,6 +1861,7 @@ #include "code\modules\mob\living\carbon\human\species_types\jellypeople.dm" #include "code\modules\mob\living\carbon\human\species_types\lizardpeople.dm" #include "code\modules\mob\living\carbon\human\species_types\mothmen.dm" +#include "code\modules\mob\living\carbon\human\species_types\mushpeople.dm" #include "code\modules\mob\living\carbon\human\species_types\plasmamen.dm" #include "code\modules\mob\living\carbon\human\species_types\podpeople.dm" #include "code\modules\mob\living\carbon\human\species_types\shadowpeople.dm"