diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 6bacc5c7..5d07c7f5 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -202,12 +202,12 @@
//GS13 - fullness alerts
/obj/screen/alert/bloated
name = "Bloated stomach"
- desc = "Your stomach is a bit too full"
+ desc = "Your stomach is bloated, eating more would probably make your stomach pop."
icon_state = "Stuffed"
/obj/screen/alert/stuffed
name = "Completely stuffed"
- desc = "Whatever you ate, you ate too much. Your stomach has stretched to accomodate its contents, forming a very obvious belly"
+ desc = "Whatever you ate, you ate too much. Your stomach has stretched to accomodate its contents, forming a very obvious stuffed belly, eating more would cause hindered movement."
icon_state = "Bloated"
/obj/screen/alert/beegbelly
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 46130a49..61a27c10 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -128,7 +128,7 @@
return examine(user)
//Start growing a human clone in the pod!
-/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, mutation_index, mindref, datum/species/mrace, list/features, factions, list/quirks, experimental = FALSE)
+/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, mutation_index, mindref, datum/species/mrace, list/features, factions, list/quirks, experimental = FALSE, fatness)
if(panel_open)
return FALSE
if(mess || attempting)
@@ -223,6 +223,9 @@
var/mob/living/current = clonemind.current //gets body of current mind
if(!isnull(current))
size = current.size_multiplier * 100
+
+ if(fatness)
+ H.fatness_real = fatness
return TRUE
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index ef98704f..35e71ace 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -76,7 +76,7 @@
if(pod.occupant)
continue //how though?
- if(pod.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["features"], R.fields["factions"], R.fields["quirks"]))
+ if(pod.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["features"], R.fields["factions"], R.fields["quirks"], fatness=R.fields["fatness"]))
temp = "[R.fields["name"]] => Cloning cycle in progress..."
records -= R
@@ -416,7 +416,7 @@
else if(pod.occupant)
temp = "Cloning cycle already in progress."
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
- else if(pod.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["features"], C.fields["factions"], C.fields["quirks"]))
+ else if(pod.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["features"], C.fields["factions"], C.fields["quirks"], fatness=C.fields["fatness"]))
temp = "[C.fields["name"]] => Cloning cycle in progress..."
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
records.Remove(C)
@@ -495,6 +495,11 @@
R.fields["features"] = dna.features
R.fields["factions"] = mob_occupant.faction
R.fields["quirks"] = list()
+ R.fields["fatness"] = FALSE
+ var/mob/living/carbon/human/human_occupant = mob_occupant
+ if(istype(human_occupant))
+ R.fields["fatness"] = human_occupant.fatness_real
+
for(var/V in mob_occupant.roundstart_quirks)
var/datum/quirk/T = V
R.fields["quirks"][T.type] = T.clone_data()
diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm
index f013495b..0b150315 100644
--- a/code/modules/cargo/bounties/assistant.dm
+++ b/code/modules/cargo/bounties/assistant.dm
@@ -237,9 +237,9 @@
required_count = 5
wanted_types = list(/obj/structure/chair/plaswood)
-/datum/bounty/item/assistant/condom
- name = "Filled Condom"
- description = "Something wack is happening at Central Command, and now they requested some filled condoms?"
- reward = 1150
- required_count = 5
- wanted_types = list(/obj/item/condom/filled)
\ No newline at end of file
+//datum/bounty/item/assistant/condom
+// name = "Filled Condom"
+// description = "Something wack is happening at Central Command, and now they requested some filled condoms?"
+// reward = 1150
+// required_count = 5
+// wanted_types = list(/obj/item/condom/filled)
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
index 5b5ff4c5..d233ded3 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
@@ -105,6 +105,14 @@
result = /obj/item/reagent_containers/food/snacks/baguette
subcategory = CAT_MISCFOOD
+
+/datum/crafting_recipe/food/peel
+ name = "Peel Egg-Plants"
+ time = 20
+ reqs = list(/obj/item/reagent_containers/food/snacks/grown/shell/eggy)
+ result = /obj/item/reagent_containers/food/snacks/egg
+ subcategory = CAT_MISCFOOD
+
////////////////////////////////////////////////TOAST////////////////////////////////////////////////
/datum/crafting_recipe/food/slimetoast
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index c1db1314..2f4c540f 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1369,6 +1369,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You have become thin enough to regain some of your mobility.")
REMOVE_TRAIT(fatty, TRAIT_NO_MOVE, HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_NO_MOVE, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_NO_MOVE, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_clumsy)
if(!HAS_TRAIT_FROM(fatty, TRAIT_CLUMSY, HELPLESSNESS_TRAIT))
@@ -1380,6 +1384,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You feel like you have lost enough weight to recover your dexterity.")
REMOVE_TRAIT(fatty, TRAIT_CLUMSY, HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_CLUMSY, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_CLUMSY, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_nearsighted)
if(!HAS_TRAIT_FROM(fatty, TRAIT_NEARSIGHT, HELPLESSNESS_TRAIT))
@@ -1391,6 +1399,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You are thin enough to see your enviornment again. ")
fatty.cure_nearsighted(HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_NEARSIGHT, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_NEARSIGHT, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_hidden_face)
if(!HAS_TRAIT_FROM(fatty, TRAIT_DISFIGURED, HELPLESSNESS_TRAIT))
@@ -1402,6 +1414,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You have lost enough weight to allow people to now recognize your face.")
REMOVE_TRAIT(fatty, TRAIT_DISFIGURED, HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_DISFIGURED, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_DISFIGURED, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_mute)
if(!HAS_TRAIT_FROM(fatty, TRAIT_MUTE, HELPLESSNESS_TRAIT))
@@ -1413,6 +1429,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You are thin enough now to be able to speak again. ")
REMOVE_TRAIT(fatty, TRAIT_MUTE, HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_MUTE, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_MUTE, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_immobile_arms)
if(!HAS_TRAIT_FROM(fatty, TRAIT_PARALYSIS_L_ARM, HELPLESSNESS_TRAIT))
@@ -1428,6 +1448,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
REMOVE_TRAIT(fatty, TRAIT_PARALYSIS_R_ARM, HELPLESSNESS_TRAIT)
fatty.update_disabled_bodyparts()
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_PARALYSIS_L_ARM, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_PARALYSIS_L_ARM, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_clothing_jumpsuit)
if(!HAS_TRAIT_FROM(fatty, TRAIT_NO_JUMPSUIT, HELPLESSNESS_TRAIT))
@@ -1443,6 +1467,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You feel thin enough to put on jumpsuits now. ")
REMOVE_TRAIT(fatty, TRAIT_NO_JUMPSUIT, HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_NO_JUMPSUIT, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_NO_JUMPSUIT, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_clothing_misc)
if(!HAS_TRAIT_FROM(fatty, TRAIT_NO_MISC, HELPLESSNESS_TRAIT))
@@ -1468,6 +1496,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You feel thin enough to put on suits, shoes, and gloves now. ")
REMOVE_TRAIT(fatty, TRAIT_NO_MISC, HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_NO_MISC, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_NO_MISC, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_clothing_back)
if(!HAS_TRAIT_FROM(fatty, TRAIT_NO_BACKPACK, HELPLESSNESS_TRAIT))
@@ -1482,6 +1514,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You feel thin enough to hold items on your back now. ")
REMOVE_TRAIT(fatty, TRAIT_NO_BACKPACK, HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_NO_BACKPACK, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_NO_BACKPACK, HELPLESSNESS_TRAIT)
+
if(preferences.helplessness_no_buckle)
if(!HAS_TRAIT_FROM(fatty, TRAIT_NO_BUCKLE, HELPLESSNESS_TRAIT))
@@ -1493,6 +1529,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
to_chat(fatty, "You feel thin enough to sit on things again. ")
REMOVE_TRAIT(fatty, TRAIT_NO_BUCKLE, HELPLESSNESS_TRAIT)
+ else
+ if(HAS_TRAIT_FROM(fatty, TRAIT_NO_BUCKLE, HELPLESSNESS_TRAIT))
+ REMOVE_TRAIT(fatty, TRAIT_NO_BUCKLE, HELPLESSNESS_TRAIT)
+
/datum/species/proc/handle_fatness(mob/living/carbon/human/H)
handle_helplessness(H)
diff --git a/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm b/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm
new file mode 100644
index 00000000..7b71ff33
--- /dev/null
+++ b/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm
@@ -0,0 +1,163 @@
+/*
+COSMETIC PARTS
+
+this system allows you to change the _base_ appearance of a limb independent
+of species or markings. this, for example, allows us to create "hybrids" like a
+mammal with avian legs.
+
+keep in mind that this does not change the species of a leg! in the above example,
+the mammal's bird-legs are still mammal legs. this matters in some places, like
+body part transplants; mis-matched species will cause extra damage if the surgery
+fails and the part is rejected. so you can't attach mammal-bird legs to avians
+safely.
+*/
+
+/datum/cosmetic_part
+ /** A unique string that is used to identify this part for save files. Allows name changes without breaking saves */
+ var/id
+ /** The name of the cosmetic part. This shows up in the preferences dropdown. */
+ var/name
+ var/icon = 'hyperstation/icons/mob/char_parts.dmi'
+ var/icon_state
+ /** How colors are determined for this part. MUTCOLORS for base color, MATRIXED to allow multiple channels. */
+ var/color_src = MUTCOLORS
+ /** Whether or not this cosmetic part has an alternate form for digitigrade legs. */
+ var/support_digitigrade = TRUE
+ /**
+ WE
+ HATE
+ GENDER!!!!!!!!!!
+ */
+ var/support_gender = null
+ /** Species IDs that support this cosmetic part. Bypassed with "show mismatched markings" option. */
+ var/list/supported_species
+
+/datum/cosmetic_part/head
+/datum/cosmetic_part/chest
+/datum/cosmetic_part/arms
+/datum/cosmetic_part/legs
+
+// HEADS
+// =========================================
+
+/datum/cosmetic_part/head/default
+ id = "default"
+ name = "default"
+ icon = null
+
+/datum/cosmetic_part/head/ipc_round
+ id = "ipc_round"
+ name = "round ipc head"
+ icon_state = "ipc_round"
+ supported_species = list("ipc")
+ support_gender = FALSE
+
+
+// CHESTS
+// =========================================
+
+/datum/cosmetic_part/chest/default
+ id = "default"
+ name = "default"
+ icon = null
+
+/datum/cosmetic_part/chest/ipc_sleek
+ id = "ipc_sleek"
+ name = "sleek ipc chest"
+ icon_state = "ipc_sleek"
+ supported_species = list("ipc")
+ color_src = MATRIXED
+ support_gender = FALSE
+
+/datum/cosmetic_part/chest/ipc_jointed
+ id = "ipc_jointed"
+ name = "jointed ipc chest"
+ icon_state = "ipc_jointed"
+ supported_species = list("ipc")
+ color_src = MATRIXED
+ support_gender = FALSE
+
+
+// ARMS
+// =========================================
+
+/datum/cosmetic_part/arms/default
+ id = "default"
+ name = "default"
+ icon = null
+
+/datum/cosmetic_part/arms/avian_alt
+ id = "avian_alt"
+ name = "avian claws"
+ icon_state = "avian_alt"
+ supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz")
+
+/datum/cosmetic_part/arms/insect
+ id = "insect"
+ name = "insect arms"
+ icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
+ icon_state = "insect"
+ supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz")
+
+/datum/cosmetic_part/arms/ipc_sleek
+ id = "ipc_sleek"
+ name = "sleek ipc arms"
+ icon_state = "ipc_sleek"
+ supported_species = list("ipc")
+ color_src = MATRIXED
+
+/datum/cosmetic_part/arms/ipc_jointed
+ id = "ipc_jointed"
+ name = "jointed ipc arms"
+ icon_state = "ipc_jointed"
+ supported_species = list("ipc")
+ color_src = MATRIXED
+
+
+// LEGS
+// =========================================
+
+/datum/cosmetic_part/legs/default
+ id = "default"
+ name = "default"
+ icon = null
+
+/datum/cosmetic_part/legs/avian
+ id = "avian"
+ name = "avian legs"
+ icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
+ icon_state = "avian"
+ supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz")
+ support_digitigrade = FALSE
+
+/datum/cosmetic_part/legs/mammal
+ id = "mammal"
+ name = "mammal legs"
+ icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
+ icon_state = "mammal"
+ supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz")
+ support_digitigrade = TRUE
+
+/datum/cosmetic_part/legs/insect
+ id = "insect"
+ name = "insect legs"
+ icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
+ icon_state = "insect"
+ supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz")
+ support_digitigrade = TRUE
+
+/datum/cosmetic_part/legs/ipc_sleek
+ id = "ipc_sleek"
+ name = "sleek ipc legs"
+ icon_state = "ipc_sleek"
+ supported_species = list("ipc")
+ color_src = MATRIXED
+ support_digitigrade = FALSE
+
+/datum/cosmetic_part/legs/ipc_jointed
+ id = "ipc_jointed"
+ name = "jointed ipc legs"
+ icon_state = "ipc_jointed"
+ supported_species = list("ipc")
+ color_src = MATRIXED
+ support_digitigrade = FALSE
diff --git a/hyperstation/code/modules/mob/dead/new_player/roleplay.dm b/hyperstation/code/modules/mob/dead/new_player/roleplay.dm
new file mode 100644
index 00000000..e69de29b
diff --git a/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm b/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm
new file mode 100644
index 00000000..932d4780
--- /dev/null
+++ b/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm
@@ -0,0 +1,575 @@
+/*
+from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
+/datum/sprite_accessory
+ var/extra = FALSE
+ var/extra_color_src = MUTCOLORS2 //The color source for the extra overlay.
+ var/extra2 = FALSE
+ var/extra_icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ var/extra2_icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ var/extra2_color_src = MUTCOLORS3
+ var/list/ckeys_allowed
+
+we use the "citadel" versions of mutant/species parts, which usually (but not always)
+begins with "mam_" somewhere. stuff that's built for only humans/lizards in other parts
+of the code are from TG, don't use those.
+
+keep everything in alphabetical order, please!
+*/
+
+// TODO: code it so that we don't have to type in "icon = 'hyperstation/icons/mob/etc'"
+// manually for hyperstation parts
+
+
+/*
+SNOUTS
+==========================================================
+*/
+
+/datum/sprite_accessory/mam_snouts/bigmandible // sarcoph @ hyperstation, march 2022
+ name = "Big Mandibles (Hyper)"
+ icon_state = "bigmandible"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_snouts/proboscis // sarcoph @ hyperstation, march 2022
+ name = "Proboscis (Hyper)"
+ icon_state = "proboscis"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_snouts/rhinobeetle // sarcoph @ hyperstation, march 2022
+ name = "Rhino Beetle (Hyper)"
+ icon_state = "rhinobeetle"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_snouts/scarab // sarcoph @ hyperstation, march 2022
+ name = "Scarab Beetle (Hyper)"
+ icon_state = "scarab"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_snouts/smallmandible // sarcoph @ hyperstation, march 2022
+ name = "Small Mandibles (Hyper)"
+ icon_state = "smallmandible"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_snouts/spider // sarcoph @ hyperstation, march 2022
+ name = "Spider (Hyper)"
+ icon_state = "spider"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_snouts/tarantula // sarcoph @ hyperstation, march 2022
+ name = "Tarantula (Hyper)"
+ icon_state = "tarantula"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_snouts/easterndragon
+ name = "Eastern Dragon (Hyper)"
+ icon_state = "easterndw"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/datum/sprite_accessory/mam_snouts/feasterndragon
+ name = "Eastern Dragon (Top) (Hyper)"
+ icon_state = "feasterndw"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/datum/sprite_accessory/mam_snouts/easterndragonnowhiskers
+ name = "Eastern Dragon - No Whiskers (Hyper)"
+ icon_state = "easterndnw"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/datum/sprite_accessory/mam_snouts/feasterndragonnowhiskers
+ name = "Eastern Dragon - No Whiskers (Top) (Hyper)"
+ icon_state = "feasterndnw"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/datum/sprite_accessory/mam_snouts/knshuttle // Dahlular and Arcstaisia @ hyperstation, april 2022. Feel free to remove comment. Just remember this is snowflakey Kinaris stuff.
+ name = "Kinaris - Shuttle (Hyper)"
+ icon_state = "knshuttle"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/datum/sprite_accessory/mam_snouts/fchemlight
+ name = "RadDog (Top) (Hyper)"
+ icon_state = "fchemlight"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/datum/sprite_accessory/mam_snouts/chemlight
+ name = "RadDog (Hyper)"
+ icon_state = "chemlight"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/datum/sprite_accessory/mam_snouts/pinata
+ name = "pinata (Hyper)"
+ icon_state = "pinata"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/datum/sprite_accessory/mam_snouts/pinatasmile
+ name = "pinata Smile (Hyper)"
+ icon_state = "pinatasmile"
+ icon = 'hyperstation/icons/mob/char_snouts.dmi'
+
+/*
+EARS
+==========================================================
+*/
+
+/datum/sprite_accessory/mam_ears/faceant // sarcoph @ hyperstation, march 2022
+ name = "Face Antennae (Hyper)"
+ icon_state = "faceant"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_ears/faceant2 // sarcoph @ hyperstation, march 2022
+ name = "Face Antennae 2 (Hyper)"
+ icon_state = "faceant2"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_ears/moth
+ name = "Moth Antennae (Hyper)"
+ icon_state = "moth"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_ears/plumeant // sarcoph @ hyperstation, march 2022
+ name = "Plume Antennae (Hyper)"
+ icon_state = "plumeant"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_ears/roundant // sarcoph @ hyperstation, march 2022
+ name = "Round Antennae (Hyper)"
+ icon_state = "roundant"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_ears/thinant // sarcoph @ hyperstation, march 2022
+ name = "Thin Antennae (Hyper)"
+ icon_state = "thinant"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_ears/easterndragon
+ name = "Eastern Dragon (Hyper)"
+ icon_state = "easternd"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+
+/datum/sprite_accessory/mam_ears/knshuttle // Dahlular and Arcstaisia @ hyperstation, april 2022. Feel free to remove comment. Just remember this is snowflakey Kinaris stuff.
+ name = "Kinaris - Shuttle (Hyper)"
+ icon_state = "knshuttle"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+
+/datum/sprite_accessory/mam_ears/chemlight
+ name = "RadDog (Hyper)"
+ icon_state = "chemlight"
+ icon = 'hyperstation/icons/mob/char_ears.dmi'
+
+/*
+WINGS
+==========================================================
+*/
+
+/datum/sprite_accessory/deco_wings/beetle // sarcoph @ hyperstation, march 2022
+ name = "Beetle (Hyper)"
+ icon_state = "beetle"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+
+/datum/sprite_accessory/moth_wings/beetle
+ name = "Beetle (Hyper)"
+ icon_state = "beetle"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+
+/datum/sprite_accessory/deco_wings/beetle2 // sarcoph @ hyperstation, march 2022
+ name = "Beetle - 2-toned (Hyper)"
+ icon_state = "beetle2"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+ color_src = MATRIXED
+
+/datum/sprite_accessory/moth_wings/beetle2
+ name = "Beetle - 2-toned (Hyper)"
+ icon_state = "beetle2"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+ color_src = MATRIXED
+
+/datum/sprite_accessory/deco_wings/insect // sarcoph @ hyperstation, march 2022
+ name = "Insect (Hyper)"
+ icon_state = "insect"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+
+/datum/sprite_accessory/moth_wings/insect
+ name = "Insect (Hyper)"
+ icon_state = "insect"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+
+/datum/sprite_accessory/deco_wings/knshuttle // Dahlular and Arcstaisia @ hyperstation, april 2022. Feel free to remove comment. Just remember this is snowflakey Kinaris stuff.
+ name = "Kinaris - Shuttle (Hyper)"
+ icon_state = "knshuttle"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+ //recommended_species = list("synthliz") need to give synths a deco wing slot
+ color_src = MATRIXED
+
+/datum/sprite_accessory/deco_wings/minibat // sarcoph @ hyperstation, march 2022
+ name = "Mini Bat (Hyper)"
+ icon_state = "minibat"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+
+/datum/sprite_accessory/deco_wings/minifeather // sarcoph @ hyperstation, march 2022
+ name = "Mini Feather (Hyper)"
+ icon_state = "minifeather"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+
+/datum/sprite_accessory/deco_wings/tinybat // sarcoph @ hyperstation, march 2022
+ name = "Tiny Bat (Hyper)"
+ icon_state = "tinybat"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+
+/datum/sprite_accessory/deco_wings/tinyfeather // sarcoph @ hyperstation, march 2022
+ name = "Tiny Feather (Hyper)"
+ icon_state = "tinyfeather"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+
+/datum/sprite_accessory/deco_wings/sylveon // Aphast @ hyperstation, november 2022
+ name = "Sylveon Ribbons"
+ icon_state = "sylveon_bow"
+ icon = 'hyperstation/icons/mob/char_wings.dmi'
+ color_src = MATRIXED
+
+/datum/sprite_accessory/horns/sylveon // Aphast @ hyperstation, november 2022, best place to put this due to being a pair and no horn slots here
+ name = "Sylveon Bow"
+ icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
+ icon_state = "sylveon_bow"
+ color_src = MATRIXED
+
+/*
+TAILS + ANIMATED TAILS
+==========================================================
+*/
+
+/datum/sprite_accessory/mam_tails/bee // sarcoph @ hyperstation, march 2022
+ name = "Bee (Hyper)"
+ icon_state = "bee"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_tails_animated/bee
+ name = "Bee (Hyper)"
+ icon_state = "bee"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_tails/bee2 // sarcoph @ hyperstation, march 2022
+ name = "Bee w/ Stinger (Hyper)"
+ icon_state = "bee2"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_tails_animated/bee2
+ name = "Bee w/ Stinger (Hyper)"
+ icon_state = "bee2"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+ recommended_species = list("insect")
+
+// "fan" bird tail, short
+/datum/sprite_accessory/mam_tails/shorthawk // sarcoph @ hyperstation, jan 2022
+ name = "Hawk - Short (Hyper)"
+ icon_state = "shorthawk"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails_animated/shorthawk
+ name = "Hawk - Short (Hyper)"
+ icon_state = "shorthawk"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails/insect // sarcoph @ hyperstation, march 2022
+ name = "Insect (Hyper)"
+ icon_state = "insect"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_tails_animated/insect
+ name = "Insect (Hyper)"
+ icon_state = "insect"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_tails/bug2tone // sarcoph @ hyperstation, march 2022
+ name = "Insect - 2-tone (Hyper)"
+ icon_state = "bug2tone"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_tails_animated/bug2tone
+ name = "Insect - 2-tone (Hyper)"
+ icon_state = "bug2tone"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+ recommended_species = list("insect")
+
+// "narrow" bird tail, long
+/datum/sprite_accessory/mam_tails/longpigeon // sarcoph @ hyperstation, jan 2022
+ name = "Pigeon - Long (Hyper)"
+ icon_state = "longpigeon"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails_animated/longpigeon
+ name = "Pigeon - Long (Hyper)"
+ icon_state = "longpigeon"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+// "narrow" bird tail, short
+/datum/sprite_accessory/mam_tails/shortpigeon // sarcoph @ hyperstation, jan 2022
+ name = "Pigeon - Short (Hyper)"
+ icon_state = "shortpigeon"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails_animated/shortpigeon
+ name = "Pigeon - Short (Hyper)"
+ icon_state = "shortpigeon"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+// "forked" bird tail, long
+/datum/sprite_accessory/mam_tails/swallow // sarcoph @ hyperstation, jan 2022
+ name = "Swallow (Hyper)"
+ icon_state = "swallow"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails_animated/swallow
+ name = "Swallow (Hyper)"
+ icon_state = "swallow"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+// forked bird tail, long; special stripe markings
+/datum/sprite_accessory/mam_tails/swallowstriped // sarcoph @ hyperstation, jan 2022
+ name = "Swallow - Striped (Hyper)"
+ icon_state = "swallowstriped"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails_animated/swallowstriped
+ name = "Swallow - Striped (Hyper)"
+ icon_state = "swallowstriped"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails/easterndragon //Pulled base from Virgo, seriously love the server and love you guys, stay lovely.
+ name = "Eastern Dragon (Hyper)"
+ icon_state = "easternd"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails_animated/easterndragon
+ name = "Eastern Dragon (Hyper)"
+ icon_state = "easternd"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails/knshuttle // Dahlular and Arcstaisia @ hyperstation, april 2022. Feel free to remove comment. Just remember this is snowflakey Kinaris stuff.
+ name = "Kinaris - Shuttle (Hyper)"
+ icon_state = "knshuttle"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails_animated/knshuttle
+ name = "Kinaris - Shuttle (Hyper)"
+ icon_state = "knshuttle"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails/chemlight
+ name = "RadDog (Hyper)"
+ icon_state = "chemlight"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+/datum/sprite_accessory/mam_tails_animated/chemlight
+ name = "RadDog (Hyper)"
+ icon_state = "chemlight"
+ icon = 'hyperstation/icons/mob/char_tails.dmi'
+
+
+/*
+BODY MARKINGS
+==========================================================
+*/
+
+/*
+from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
+/datum/sprite_accessory/mam_body_markings
+ extra = FALSE
+ extra2 = FALSE
+ color_src = MATRIXED
+ gender_specific = 0
+ icon = 'modular_citadel/icons/mob/mam_markings.dmi'
+ recommended_species = list("mammal", "xeno", "slimeperson", "podweak", "avian", "aquatic")
+*/
+
+/datum/sprite_accessory/mam_body_markings/bee // sarcoph @ hyperstation, march 2022
+ name = "Bee (Hyper)"
+ icon_state = "bee"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_body_markings/bee_fluff // sarcoph @ hyperstation, march 2022
+ name = "Bee - Fluffy (Hyper)"
+ icon_state = "bee_fluff"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_body_markings/bug3tone // sarcoph @ hyperstation, march 2022
+ name = "Beetle - 3-tone (Hyper)"
+ icon_state = "bug3tone"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_body_markings/moth // sarcoph @ hyperstation, jan 2022
+ name = "Moth (Hyper)"
+ icon_state = "moth"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+ recommended_species = list("insect")
+
+/datum/sprite_accessory/mam_body_markings/empty
+ name = "None (Hyper)"
+ icon_state = "empty"
+ recommended_species = list("podweak", /*"mammal",*/ "avian", "aquatic", "insect", "xeno", "synthliz", "slimeperson")
+ // mammals are cursed to no empty markings until they get their heads fixed.
+
+/datum/sprite_accessory/mam_body_markings/pigeon // sarcoph @ hyperstation, jan 2022
+ name = "Pigeon (Hyper)"
+ icon_state = "pigeon"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+ recommended_species = list("avian")
+
+/datum/sprite_accessory/mam_body_markings/shrike // sarcoph @ hyperstation, jan 2022
+ name = "Shrike (Hyper)"
+ icon_state = "shrike"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+ recommended_species = list("avian")
+
+/datum/sprite_accessory/mam_body_markings/easterndragon
+ name = "Eastern Dragon (Hyper)"
+ icon_state = "easternd"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+
+/datum/sprite_accessory/mam_body_markings/knshuttle // Dahlular and Arcstaisia @ hyperstation, april 2022. Feel free to remove comment. Just remember this is snowflakey Kinaris stuff.
+ name = "Kinaris - Shuttle (Hyper)"
+ icon_state = "knshuttle"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+
+//doged was here
+/datum/sprite_accessory/mam_body_markings/chemlight
+ name = "RadDog (Hyper)"
+ icon_state = "chemlight"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+
+//racc do a code maybe it won't explode
+/datum/sprite_accessory/mam_body_markings/raccalt
+ name = "RaccAlt (Hyper)"
+ icon_state = "raccalt"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+
+/datum/sprite_accessory/mam_body_markings/pinata
+ name = "pinata (Hyper)"
+ icon_state = "pinata"
+ icon = 'hyperstation/icons/mob/char_markings.dmi'
+
+/*
+TAUR BODIES
+==========================================================
+*/
+
+/*
+from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
+/datum/sprite_accessory/taur
+ icon = 'modular_citadel/icons/mob/mam_taur.dmi'
+ extra_icon = 'modular_citadel/icons/mob/mam_taur.dmi'
+ extra = TRUE
+ extra2_icon = 'modular_citadel/icons/mob/mam_taur.dmi'
+ extra2 = TRUE
+ center = TRUE
+ dimension_x = 64
+ var/taur_mode = NOT_TAURIC
+ color_src = MATRIXED
+ recommended_species = list("human", "lizard", "insect", "mammal", "xeno", "jelly", "slimeperson", "podweak", "avian", "aquatic")
+*/
+/datum/sprite_accessory/taur/chemnaga //Chemlight experimental sprites for future spriting
+ name = "RadDog Naga (Hyper)"
+ icon_state = "chemnaga"
+ taur_mode = SNEK_TAURIC
+ ckeys_allowed = list("chemlight")
+
+/datum/sprite_accessory/taur/chemlight
+ name = "RadDog Taur (Hyper)"
+ icon_state = "chemlight"
+ taur_mode = PAW_TAURIC
+ ckeys_allowed = list("chemlight")
+
+
+/*
+IPCS
+==========================================================
+*/
+
+/*
+from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm:
+
+/datum/sprite_accessory/antenna
+ icon = 'modular_citadel/icons/mob/ipc_antennas.dmi'
+ color_src = MUTCOLORS3
+ recommended_species = list("ipc")
+
+/datum/sprite_accessory/screen
+ icon = 'modular_citadel/icons/mob/ipc_screens.dmi'
+ color_src = null
+*/
+
+/datum/sprite_accessory/antenna/idog_down
+ name = "Dog, down (Hyper)"
+ icon_state = "idog_down"
+ color_src = MATRIXED
+
+/datum/sprite_accessory/antenna/idog_up
+ name = "Dog, up (Hyper)"
+ icon_state = "idog_up"
+ color_src = MATRIXED
+
+/datum/sprite_accessory/antenna/headset
+ name = "Headphones (Hyper)"
+ icon_state = "headset"
+ color_src = MATRIXED
+
+/datum/sprite_accessory/antenna/aquatic
+ name = "Fins (Hyper)"
+ icon_state = "aquatic"
+ color_src = MATRIXED
+
+/datum/sprite_accessory/screen/ghost
+ name = "Ghost (Hyper)"
+ icon_state = "ghost"
+
+/datum/sprite_accessory/screen/heartbeat
+ name = "Heartbeat (Hyper)"
+ icon_state = "heartbeat"
+
+/datum/sprite_accessory/screen/ocean
+ name = "Ocean (Hyper)"
+ icon_state = "ocean"
+
+/datum/sprite_accessory/antenna/catears
+ name = "Pointy Ears (Hyper)"
+ icon_state = "catears"
+ color_src = MATRIXED
+
+/datum/sprite_accessory/screen/valley
+ name = "Valley (Hyper)"
+ icon_state = "valley"
+
+/*
+BEARDS
+==========================================================
+*/
+
+/*
+/datum/sprite_accessory/facial_hair
+ icon = 'icons/mob/human_face.dmi'
+ gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
+*/
+
+/datum/sprite_accessory/facial_hair/mane
+ name = "Neckfluff (Hyper)"
+ icon_state = "facial_neckfluff"
diff --git a/hyperstation/icons/mob/char_ears.dmi b/hyperstation/icons/mob/char_ears.dmi
new file mode 100644
index 00000000..b4b572a0
Binary files /dev/null and b/hyperstation/icons/mob/char_ears.dmi differ
diff --git a/hyperstation/icons/mob/char_markings.dmi b/hyperstation/icons/mob/char_markings.dmi
new file mode 100644
index 00000000..5aff5e4d
Binary files /dev/null and b/hyperstation/icons/mob/char_markings.dmi differ
diff --git a/hyperstation/icons/mob/char_parts.dmi b/hyperstation/icons/mob/char_parts.dmi
new file mode 100644
index 00000000..4982376a
Binary files /dev/null and b/hyperstation/icons/mob/char_parts.dmi differ
diff --git a/hyperstation/icons/mob/char_snouts.dmi b/hyperstation/icons/mob/char_snouts.dmi
new file mode 100644
index 00000000..92b3163d
Binary files /dev/null and b/hyperstation/icons/mob/char_snouts.dmi differ
diff --git a/hyperstation/icons/mob/char_tails.dmi b/hyperstation/icons/mob/char_tails.dmi
new file mode 100644
index 00000000..0695ae63
Binary files /dev/null and b/hyperstation/icons/mob/char_tails.dmi differ
diff --git a/hyperstation/icons/mob/char_wings.dmi b/hyperstation/icons/mob/char_wings.dmi
new file mode 100644
index 00000000..49feac58
Binary files /dev/null and b/hyperstation/icons/mob/char_wings.dmi differ
diff --git a/icons/emoji.dmi b/icons/emoji.dmi
index 33059f2a..278ef57d 100644
Binary files a/icons/emoji.dmi and b/icons/emoji.dmi differ
diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi
index f5751d0d..ca6a7a97 100644
Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ
diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm
index 0c5359fa..af482fc0 100644
--- a/modular_citadel/code/modules/client/loadout/__donator.dm
+++ b/modular_citadel/code/modules/client/loadout/__donator.dm
@@ -254,7 +254,7 @@ datum/gear/lyricalpawsring
name = "Empty Toolbelt"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/belt/utility
- ckeywhitelist = list("Killmewitha22")
+ ckeywhitelist = list("killmewitha22")
/obj/item/toy/sword/chloesabre/halsey
name = "Halsey's Sabre"
diff --git a/tgstation.dme b/tgstation.dme
index 2618e0d8..7416e1e3 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3220,6 +3220,9 @@
#include "hyperstation\code\modules\mining\shelters.dm"
#include "hyperstation\code\modules\mining\equipment\survival_pod.dm"
#include "hyperstation\code\modules\mob\mob_helpers.dm"
+#include "hyperstation\code\modules\mob\dead\new_player\cosmetic_parts.dm"
+#include "hyperstation\code\modules\mob\dead\new_player\roleplay.dm"
+#include "hyperstation\code\modules\mob\dead\new_player\sprite_accessories.dm"
#include "hyperstation\code\modules\mob\living\status_indicators.dm"
#include "hyperstation\code\modules\mob\living\silicon\robot\robot.dm"
#include "hyperstation\code\modules\mob\living\silicon\robot\robot_modules.dm"