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 25594b3283..19ebe0a4be 100644
Binary files a/icons/mob/mutant_bodyparts.dmi and b/icons/mob/mutant_bodyparts.dmi differ
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"