code:
//This datum is quite close to the sprite accessory one, containing a bit of copy pasta code
//Those DO NOT have a customizable cases for rendering, or any special stuff, and are meant to be simpler than accessories
//One definition can stand for a whole set of accessories, make sure to set affected bodyparts
/datum/body_marking
	///The icon file the body markign is located in
	var/icon
	///The icon_state of the body marking
	var/icon_state
	///The preview name of the body marking - NEEDS A UNIQUE NAME
	var/name
	///The color the marking defaults to, important for randomisations. either a hex color ie."FFFFFF" or a define like DEFAULT_PRIMARY
	var/default_color
	///Which bodyparts does the marking affect in BITFLAGS!! (HEAD, CHEST, ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT, LEG_RIGHT, LEG_LEFT)
	var/affected_bodyparts
	///Which species is this marking recommended to. Important for randomisations.
	var/recommended_species = list(SPECIES_WEREWOLF, SPECIES_WERECAT)
	///If this is on the color customization will show up despite the pref settings, it will also cause the marking to not reset colors to match the defaults
	var/always_color_customizable
	///Whether the body marking sprite is the same for both sexes or not. Only relevant for chest right now.
	var/gendered = TRUE

/datum/body_marking/New()
	if(!default_color)
		default_color = "FFFFFF"

/datum/body_marking/proc/get_default_color(list/features, datum/species/pref_species) //Needs features for the color information
	var/color = default_color
	switch(default_color)
		if(DEFAULT_PRIMARY)
			color = features["mcolor"]
		if(DEFAULT_SECONDARY)
			color = features["mcolor2"]
		if(DEFAULT_TERTIARY)
			color = features["mcolor3"]
		if(DEFAULT_SKIN_OR_PRIMARY)
			if(features["uses_skintones"] && pref_species && initial(pref_species.use_skintones))
				color = features["skin_color"]
			else
				color = features["mcolor"]

	return color


code:
/datum/body_marking/moth
	icon = 'modular_septic/icons/mob/human/body_markings/moth/moth_markings.dmi'
	default_color = "FFF"
	recommended_species = list("moth")
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|HAND_LEFT|ARM_RIGHT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/moth/reddish
	name = "Reddish"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/reddish.dmi'
	icon_state = "reddish"

/datum/body_marking/moth/royal
	name = "Royal"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/royal.dmi'
	icon_state = "royal"

/datum/body_marking/moth/gothic
	name = "Gothic"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/gothic.dmi'
	icon_state = "gothic"

/datum/body_marking/moth/whitefly
	name = "Whitefly"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/whitefly.dmi'
	icon_state = "whitefly"

/datum/body_marking/moth/burnt_off
	name = "Burnt Off"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/burnt_off.dmi'
	icon_state = "burnt_off"

/datum/body_marking/moth/deathhead
	name = "Deathhead"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/deathhead.dmi'
	icon_state = "deathhead"

/datum/body_marking/moth/poison
	name = "Poison"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/poison.dmi'
	icon_state = "poison"

/datum/body_marking/moth/ragged
	name = "Ragged"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/ragged.dmi'
	icon_state = "ragged"

/datum/body_marking/moth/moonfly
	name = "Moonfly"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/moonfly.dmi'
	icon_state = "moonfly"

/datum/body_marking/moth/oakworm
	name = "Oakworm"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/oakworm.dmi'
	icon_state = "oakworm"

/datum/body_marking/moth/jungle
	name = "Jungle"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/jungle.dmi'
	icon_state = "jungle"

/datum/body_marking/moth/witchwing
	name = "Witchwing"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/witchwing.dmi'
	icon_state = "witchwing"

/datum/body_marking/moth/lovers
	name = "Lovers"
	icon = 'modular_septic/icons/mob/human/body_markings/moth/lovers.dmi'
	icon_state = "lovers"

/datum/body_marking/moth/grayscale
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/moth_grayscale_markings.dmi'

/datum/body_marking/moth/grayscale/reddish
	name = "Reddish (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/reddish.dmi'
	icon_state = "reddish"

/datum/body_marking/moth/grayscale/royal
	name = "Royal (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/royal.dmi'
	icon_state = "royal"

/datum/body_marking/moth/grayscale/gothic
	name = "Gothic (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/gothic.dmi'
	icon_state = "gothic"

/datum/body_marking/moth/grayscale/whitefly
	name = "Whitefly (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/whitefly.dmi'
	icon_state = "whitefly"

/datum/body_marking/moth/grayscale/burnt_off
	name = "Burnt Off (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/burnt_off.dmi'
	icon_state = "burnt_off"

/datum/body_marking/moth/grayscale/deathhead
	name = "Deathhead (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/deathhead.dmi'
	icon_state = "deathhead"

/datum/body_marking/moth/grayscale/poison
	name = "Poison (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/poison.dmi'
	icon_state = "poison"

/datum/body_marking/moth/grayscale/ragged
	name = "Ragged (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/ragged.dmi'
	icon_state = "ragged"

/datum/body_marking/moth/grayscale/moonfly
	name = "Moonfly (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/moonfly.dmi'
	icon_state = "moonfly"

/datum/body_marking/moth/grayscale/oakworm
	name = "Oakworm (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/oakworm.dmi'
	icon_state = "oakworm"

/datum/body_marking/moth/grayscale/jungle
	name = "Jungle (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/jungle.dmi'
	icon_state = "jungle"

/datum/body_marking/moth/grayscale/witchwing
	name = "Witchwing (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/witchwing.dmi'
	icon_state = "witchwing"

/datum/body_marking/moth/grayscale/lovers
	name = "Lovers (Greyscale)"
	icon = 'modular_septic/icons/mob/human/body_markings/moth_greyscale/lovers.dmi'
	icon_state = "lovers"

repo_name: AnalWerewolf/sundown

license: mit


code:
/datum/body_marking/secondary/synthliz
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/synthliz.dmi'
	recommended_species = list("synthliz")

/datum/body_marking/secondary/synthliz/scutes
	name = "Synth Scutes"
	icon_state = "synthlizscutes"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/secondary/synthliz/lights
	name = "Synth Lights"
	icon_state = "synthlizlights"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/secondary/synthliz/pecs
	name = "Synth Pecs"
	icon_state = "synthlizpecs"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/tertiary/synthliz
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/synthliz.dmi'
	recommended_species = list("synthliz")

/datum/body_marking/tertiary/synthliz/plates
	name = "Synth Plates"
	icon_state = "synthlizplates"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/tertiary/synthliz/chestlights
	name = "Synth Chest Lights"
	icon_state = "synthlizlights"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/tertiary/synthliz/collarlights
	name = "Synth Collar Lights"
	icon_state = "synthlizpecslight"
	affected_bodyparts = CHEST|GROIN|ARM_LEFT|ARM_RIGHT


code:
//Use this one for things with pre-set default colors, I guess
/datum/body_marking/other
	icon = 'modular_septic/icons/mob/human/body_markings/other/other_markings.dmi'
	recommended_species = null

/datum/body_marking/other/drake_bone
	name = "Drake Bone"
	icon = 'modular_septic/icons/mob/human/body_markings/other/drakebone.dmi'
	icon_state = "drakebone"
	default_color = "CCCCCC"
	affected_bodyparts = CHEST|HAND_LEFT|HAND_RIGHT
	gendered = FALSE

/datum/body_marking/other/tonage
	name = "Body Tonage"
	icon = 'modular_septic/icons/mob/human/body_markings/other/tonage.dmi'
	icon_state = "tonage"
	default_color = "555555"
	affected_bodyparts = CHEST|GROIN
	gendered = FALSE

/datum/body_marking/other/pilot
	name = "Pilot"
	icon = 'modular_septic/icons/mob/human/body_markings/other/pilot.dmi'
	icon_state = "pilot"
	default_color = "CCCCCC"
	affected_bodyparts = HEAD|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT
	gendered = FALSE

/datum/body_marking/other/pilot_jaw
	name = "Pilot Jaw"
	icon = 'modular_septic/icons/mob/human/body_markings/other/pilot_jaw.dmi'
	icon_state = "pilot_jaw"
	default_color = "CCCCCC"
	affected_bodyparts = HEAD
	gendered = FALSE

/datum/body_marking/other/drake_eyes
	name = "Drake Eyes"
	icon = 'modular_septic/icons/mob/human/body_markings/other/drakeeyes.dmi'
	icon_state = "drakeeyes"
	default_color = "FF0000"
	affected_bodyparts = HEAD
	always_color_customizable = TRUE
	gendered = FALSE

/datum/body_marking/other/bands
	name = "Color Bands"
	icon_state = "bands"
	affected_bodyparts = CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|LEG_LEFT|FOOT_RIGHT|FOOT_LEFT
	gendered = FALSE

/datum/body_marking/other/anklet
	name = "Anklet"
	icon_state = "anklet"
	affected_bodyparts = LEG_RIGHT|LEG_LEFT
	gendered = FALSE


code:
/datum/body_marking/secondary
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/secondary_markings.dmi'
	default_color = DEFAULT_SECONDARY

/datum/body_marking/secondary/tajaran
	name = "Tajaran"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/tajaran.dmi'
	icon_state = "tajaran"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/sergal
	name = "Sergal"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/sergal.dmi'
	icon_state = "sergal"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/husky
	name = "Husky"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/husky.dmi'
	icon_state = "husky"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/fennec
	name = "Fennec"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/fennec.dmi'
	icon_state = "fennec"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/redpanda
	name = "Red Panda"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/redpanda.dmi'
	icon_state = "redpanda"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/dalmatian
	name = "Dalmatian"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/dalmatian.dmi'
	icon_state = "dalmation"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/shepherd
	name = "Shepherd"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/shepherd.dmi'
	icon_state = "shepherd"
	affected_bodyparts = CHEST|GROIN|ARM_LEFT|ARM_RIGHT|LEG_RIGHT|LEG_LEFT

/datum/body_marking/secondary/wolf
	name = "Wolf"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/wolf.dmi'
	icon_state = "wolf"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/fox
	name = "Fox"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/fox.dmi'
	icon_state = "fox"
	affected_bodyparts = HEAD|CHEST|GROIN|LEG_RIGHT|LEG_LEFT

/datum/body_marking/secondary/raccoon
	name = "Raccoon"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/raccoon.dmi'
	icon_state = "raccoon"
	affected_bodyparts = HEAD|CHEST|GROIN|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|LEG_LEFT

/datum/body_marking/secondary/bovine
	name = "Bovine"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/bovine.dmi'
	icon_state = "bovine"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/possum
	name = "Possum"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/possum.dmi'
	icon_state = "possum"
	affected_bodyparts = HEAD|CHEST

/datum/body_marking/secondary/corgi
	name = "Corgi"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/corgi.dmi'
	icon_state = "corgi"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/leopard1
	name = "Leopard"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/leopard1.dmi'
	icon_state = "leopard1"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT

/datum/body_marking/secondary/leopard2
	name = "Leopard (alt)"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/leopard2.dmi'
	icon_state = "leopard2"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/secondary/skunk
	name = "Skunk"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/skunk.dmi'
	icon_state = "skunk"
	affected_bodyparts = HEAD|CHEST|GROIN|LEG_RIGHT|LEG_LEFT

/datum/body_marking/secondary/panther
	name = "Panther"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/panther.dmi'
	icon_state = "panther"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/tiger
	name = "Tiger Spot"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/tiger.dmi'
	icon_state = "tiger"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/otter
	name = "Otter"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/otter.dmi'
	icon_state = "otter"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/otie
	name = "Otie"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/otie.dmi'
	icon_state = "otie"
	affected_bodyparts = HEAD|CHEST|GROIN|HAND_LEFT|HAND_RIGHT|FOOT_RIGHT|FOOT_LEFT

/datum/body_marking/secondary/sabresune
	name = "Sabresune"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/sabresune.dmi'
	icon_state = "sabresune"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/orca
	name = "Orca"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/orca.dmi'
	icon_state = "orca"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/hawk
	name = "Hawk"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/hawk.dmi'
	icon_state = "hawk"
	affected_bodyparts = HEAD|CHEST|GROIN|LEG_RIGHT|LEG_LEFT

/datum/body_marking/secondary/corvid
	name = "Corvid"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/corvid.dmi'
	icon_state = "corvid"
	affected_bodyparts = HEAD|CHEST|GROIN|LEG_RIGHT|LEG_LEFT

/datum/body_marking/secondary/eevee
	name = "Eevee"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/eevee.dmi'
	icon_state = "eevee"
	affected_bodyparts = HEAD|CHEST

/datum/body_marking/secondary/shark
	name = "Shark"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/shark.dmi'
	icon_state = "shark"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/deer
	name = "Deer"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/deer.dmi'
	icon_state = "deer"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/hyena
	name = "Hyena"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/hyena.dmi'
	icon_state = "hyena"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/dog
	name = "Dog"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/dog.dmi'
	icon_state = "dog"
	affected_bodyparts = CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/bat
	name = "Bat"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/bat.dmi'
	icon_state = "bat"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/floof
	name = "Floof"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/floof.dmi'
	icon_state = "floof"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/rat
	name = "Rat Paw"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/rat.dmi'
	icon_state = "rat"
	affected_bodyparts = ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/scolipede
	name = "Scolipede"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/scolipede.dmi'
	icon_state = "scolipede"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/guilmon
	name = "Guilmon"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/guilmon.dmi'
	icon_state = "guilmon"
	affected_bodyparts = CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT

/datum/body_marking/secondary/xeno
	name = "Xeno"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/xeno.dmi'
	icon_state = "xeno"
	affected_bodyparts = CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT
	recommended_species = list("xeno")

/datum/body_marking/secondary/datashark
	name = "Datashark"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/datashark.dmi'
	icon_state = "datashark"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|LEG_RIGHT|LEG_LEFT|FOOT_RIGHT|FOOT_LEFT

/datum/body_marking/secondary/belly
	name = "Belly"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/belly.dmi'
	icon_state = "belly"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/secondary/bellyslim
	name = "Belly Slim"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/bellyslim.dmi'
	icon_state = "bellyslim"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/secondary/bellyslimalt
	name = "Belly Slim Alternative"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/bellyslim_alt.dmi'
	icon_state = "bellyslim_alt"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/secondary/bellyandbutt
	name = "Belly and Butt"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/bellyandbutt.dmi'
	icon_state = "bellyandbutt"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/secondary/butt
	name = "Butt"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/butt.dmi'
	icon_state = "butt"
	affected_bodyparts = GROIN

/datum/body_marking/secondary/handsfeet
	name = "Hands Feet"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/handsfeet.dmi'
	icon_state = "handsfeet"
	affected_bodyparts = ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_LEFT|LEG_RIGHT|FOOT_LEFT|FOOT_RIGHT

/datum/body_marking/secondary/frog
	name = "Frog"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/frog.dmi'
	icon_state = "frog"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/bee
	name = "Bee"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/bee.dmi'
	icon_state = "bee"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/gradient
	name = "Gradient"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/gradient.dmi'
	icon_state = "gradient"
	affected_bodyparts = ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_LEFT|LEG_RIGHT|FOOT_LEFT|FOOT_RIGHT

/datum/body_marking/secondary/harlequin
	name = "Harlequin"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/harlequin.dmi'
	icon_state = "harlequin"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|HAND_LEFT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/secondary/harlequin_reversed
	name = "Harlequin Reversed"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/harlequin_reversed.dmi'
	icon_state = "harlequin_reversed"
	affected_bodyparts = HEAD|CHEST|ARM_RIGHT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT

/datum/body_marking/secondary/plain
	name = "Plain"
	icon = 'modular_septic/icons/mob/human/body_markings/secondary/plain.dmi'
	icon_state = "plain"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT


code:
/datum/body_marking_set
	///The preview name of the body marking set. HAS to be unique
	var/name
	///List of the body markings in this set
	var/body_marking_list
	///Which species is this marking recommended to. Important for randomisations.
	var/recommended_species = list(SPECIES_SYNTHMAMMAL, SPECIES_WERECAT, SPECIES_WEREWOLF, SPECIES_AQUATIC)


code:
/datum/body_marking_set/none
	name = "None"
	recommended_species = null
	body_marking_list = list()

/datum/body_marking_set/werecat
	name = "Werecat"
	body_marking_list = list("Werecat")

/datum/body_marking_set/fox
	name = "Fox"
	body_marking_list = list("Fox", "Fox Sock")

/datum/body_marking_set/sergal
	name = "Sergal"
	body_marking_list = list("Sergal")

/datum/body_marking_set/husky
	name = "Husky"
	body_marking_list = list("Husky")

/datum/body_marking_set/fennec
	name = "Fennec"
	body_marking_list = list("Fennec")

/datum/body_marking_set/redpanda
	name = "Red Panda"
	body_marking_list = list("Red Panda", "Red Panda Head")

/datum/body_marking_set/dalmatian
	name = "Dalmatian"
	body_marking_list = list("Dalmatian")

/datum/body_marking_set/shepherd
	name = "Shepherd"
	body_marking_list = list("Shepherd", "Shepherd Spot")

/datum/body_marking_set/wolf
	name = "Wolf"
	body_marking_list = list("Wolf", "Wolf Spot")

/datum/body_marking_set/raccoon
	name = "Raccoon"
	body_marking_list = list("Raccoon")

/datum/body_marking_set/bovine
	name = "Bovine"
	body_marking_list = list("Bovine", "Bovine Spot")

/datum/body_marking_set/possum
	name = "Possum"
	body_marking_list = list("Possum")

/datum/body_marking_set/corgi
	name = "Corgi"
	body_marking_list = list("Corgi")

/datum/body_marking_set/skunk
	name = "Skunk"
	body_marking_list = list("Skunk")

/datum/body_marking_set/panther
	name = "Panther"
	body_marking_list = list("Panther")

/datum/body_marking_set/tiger
	name = "Tiger"
	body_marking_list = list("Tiger Spot", "Tiger Stripe")

/datum/body_marking_set/otter
	name = "Otter"
	body_marking_list = list("Otter", "Otter Head")

/datum/body_marking_set/otie
	name = "Otie"
	body_marking_list = list("Otie", "Otie Spot")

/datum/body_marking_set/sabresune
	name = "Sabresune"
	body_marking_list = list("Sabresune")

/datum/body_marking_set/orca
	name = "Orca"
	body_marking_list = list("Orca")

/datum/body_marking_set/hawk
	name = "Hawk"
	body_marking_list = list("Hawk", "Hawk Talon")

/datum/body_marking_set/corvid
	name = "Corvid"
	body_marking_list = list("Corvid", "Corvid Talon")

/datum/body_marking_set/eevee
	name = "Eevee"
	body_marking_list = list("Eevee")

/datum/body_marking_set/deer
	name = "Deer"
	body_marking_list = list("Deer", "Deer Hoof")

/datum/body_marking_set/hyena
	name = "Hyena"
	body_marking_list = list("Hyena", "Hyena Side")

/datum/body_marking_set/dog
	name = "Dog"
	body_marking_list = list("Dog", "Dog Spot")

/datum/body_marking_set/bat
	name = "Bat"
	body_marking_list = list("Bat Mark", "Bat")

/datum/body_marking_set/goat
	name = "Goat"
	body_marking_list = list("Goat Hoof")

/datum/body_marking_set/floof
	name = "Floof"
	body_marking_list = list("Floof")

/datum/body_marking_set/floofer
	name = "Floofer"
	body_marking_list = list("Floof", "Floofer Sock")

/datum/body_marking_set/rat
	name = "Rat"
	body_marking_list = list("Rat Paw", "Rat Spot")

/datum/body_marking_set/sloth
	name = "Sloth"
	body_marking_list = list("Rat Paw", "Sloth Head") //Yes we're re-using the rat bits as they'd be identical

/datum/body_marking_set/scolipede
	name = "Scolipede"
	body_marking_list = list("Scolipede", "Scolipede Spikes")

/datum/body_marking_set/guilmon
	name = "Guilmon"
	body_marking_list = list("Guilmon", "Guilmon Mark")

/datum/body_marking_set/xeno
	name = "Xeno"
	body_marking_list = list("Xeno", "Xeno Head")

/datum/body_marking_set/datashark
	name = "Datashark"
	body_marking_list = list("Datashark")

/datum/body_marking_set/shark
	name = "Shark"
	body_marking_list = list("Shark")

/datum/body_marking_set/belly
	name = "Belly"
	body_marking_list = list("Belly")

/datum/body_marking_set/belly_slim
	name = "Belly Slim"
	body_marking_list = list("Belly Slim")

/datum/body_marking_set/hands_feet
	name = "Hands Feet"
	body_marking_list = list("Hands Feet")

/datum/body_marking_set/frog
	name = "Frog"
	body_marking_list = list("Frog")

/datum/body_marking_set/bee
	name = "Bee"
	body_marking_list = list("Bee")

/datum/body_marking_set/gradient
	name = "Gradient"
	body_marking_list = list("Gradient")

/datum/body_marking_set/harlequin
	name = "Harlequin"
	body_marking_list = list("Harlequin")

/datum/body_marking_set/harlequin_reversed
	name = "Harlequin Reversed"
	body_marking_list = list("Harlequin Reversed")

/datum/body_marking_set/plain
	name = "Plain"
	body_marking_list = list("Plain")

//VOX MARKINGS
/datum/body_marking_set/vox
	recommended_species = list("vox")

/datum/body_marking_set/vox/vox
	name = "Vox"
	body_marking_list = list("Vox Talon")

/datum/body_marking_set/vox/vox_tiger
	name = "Vox Tiger"
	body_marking_list = list("Vox Talon", "Vox Tiger Tattoo")

/datum/body_marking_set/vox/vox_hive
	name = "Vox Hive"
	body_marking_list = list("Vox Talon", "Vox Hive Tattoo")

/datum/body_marking_set/vox/vox_nightling
	name = "Vox Nightling"
	body_marking_list = list("Vox Talon", "Vox Nightling Tattoo")

/datum/body_marking_set/vox/vox_heart
	name = "Vox Heart"
	body_marking_list = list("Vox Talon", "Vox Heart Tattoo")

/datum/body_marking_set/synthliz
	recommended_species = list("synthliz")

/datum/body_marking_set/synthliz/scutes
	name = "Synth Scutes"
	body_marking_list = list("Synth Scutes")

/datum/body_marking_set/synthliz/pecs
	name = "Synth Pecs"
	body_marking_list = list("Synth Pecs")

/datum/body_marking_set/synthliz/pecs_light
	name = "Synth Pecs Lights"
	body_marking_list = list("Synth Pecs", "Synth Collar Lights")

//MOTH

/datum/body_marking_set/moth
	recommended_species = list("moth")

/datum/body_marking_set/moth/reddish
	name = "Reddish"
	body_marking_list = list("Reddish")

/datum/body_marking_set/moth/royal
	name = "Royal"
	body_marking_list = list("Royal")

/datum/body_marking_set/moth/gothic
	name = "Gothic"
	body_marking_list = list("Gothic")

/datum/body_marking_set/moth/whitefly
	name = "Whitefly"
	body_marking_list = list("Whitefly")

/datum/body_marking_set/moth/burnt_off
	name = "Burnt Off"
	body_marking_list = list("Burnt Off")

/datum/body_marking_set/moth/deathhead
	name = "Deathhead"
	body_marking_list = list("Deathhead")

/datum/body_marking_set/moth/poison
	name = "Poison"
	body_marking_list = list("Poison")

/datum/body_marking_set/moth/ragged
	name = "Ragged"
	body_marking_list = list("Ragged")

/datum/body_marking_set/moth/moonfly
	name = "Moonfly"
	body_marking_list = list("Moonfly")

/datum/body_marking_set/moth/oakworm
	name = "Oakworm"
	body_marking_list = list("Oakworm")

/datum/body_marking_set/moth/jungle
	name = "Jungle"
	body_marking_list = list("Jungle")

/datum/body_marking_set/moth/witchwing
	name = "Witchwing"
	body_marking_list = list("Witchwing")

/datum/body_marking_set/moth/lovers
	name = "Lovers"
	body_marking_list = list("Lovers")


code:
//TODO: Make these markings associated with their assigned bodyparts rather than mob dna.
/datum/body_marking/tattoo
	icon = 'modular_septic/icons/mob/human/body_markings/tattoo/tattoo_markings.dmi'
	recommended_species = null
	default_color = "122" //slightly faded ink.
	always_color_customizable = TRUE
	gendered = FALSE

/datum/body_marking/tattoo/heart
	name = "Tattoo - Heart"
	icon = 'modular_septic/icons/mob/human/body_markings/tattoo/heart.dmi'
	icon_state = "tat_heart"
	affected_bodyparts = CHEST|ARM_LEFT|ARM_RIGHT

/datum/body_marking/tattoo/hive
	name = "Tattoo - Hive"
	icon = 'modular_septic/icons/mob/human/body_markings/tattoo/hive.dmi'
	icon_state = "tat_hive"
	affected_bodyparts = CHEST
	gendered = TRUE

/datum/body_marking/tattoo/nightling
	name = "Tattoo - Nightling"
	icon = 'modular_septic/icons/mob/human/body_markings/tattoo/nightling.dmi'
	icon_state = "tat_nightling"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/tattoo/circuit
	name = "Tattoo - Circuit"
	icon = 'modular_septic/icons/mob/human/body_markings/tattoo/tattoo_markings.dmi'
	icon_state = "tat_campbell"
	affected_bodyparts = ARM_LEFT|ARM_RIGHT|LEG_RIGHT|LEG_LEFT

/datum/body_marking/tattoo/silverburgh //dunno what this is.
	name = "Tattoo - Silverburgh"
	icon = 'modular_septic/icons/mob/human/body_markings/tattoo/silverburgh.dmi'
	icon_state = "tat_silverburgh"
	affected_bodyparts = LEG_RIGHT|LEG_LEFT

/datum/body_marking/tattoo/tiger
	name = "Tattoo - Tiger"
	icon_state = "tat_tiger"
	affected_bodyparts = CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT
	gendered = TRUE


code:
/datum/body_marking/tertiary
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/tertiary_markings.dmi'
	default_color = DEFAULT_TERTIARY

/datum/body_marking/tertiary/redpanda
	name = "Red Panda Head"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/redpanda.dmi'
	icon_state = "redpanda"
	affected_bodyparts = HEAD

/datum/body_marking/tertiary/shepherd
	name = "Shepherd Spot"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/shepherd.dmi'
	icon_state = "shepherd"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/tertiary/wolf
	name = "Wolf Spot"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/wolf.dmi'
	icon_state = "wolf"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|LEG_RIGHT|LEG_LEFT

/datum/body_marking/tertiary/fox
	name = "Fox Sock"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/fox.dmi'
	icon_state = "fox"
	affected_bodyparts = ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/tertiary/goat
	name = "Goat Hoof"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/goat.dmi'
	icon_state = "goat"
	affected_bodyparts = HAND_LEFT|HAND_RIGHT|FOOT_RIGHT|FOOT_LEFT

/datum/body_marking/tertiary/raccoon
	name = "Raccoon Spot"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/raccoon.dmi'
	icon_state = "raccoon"
	affected_bodyparts = HEAD|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/tertiary/bovine
	name = "Bovine Spot"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/bovine.dmi'
	icon_state = "bovine"
	affected_bodyparts = HEAD|FOOT_RIGHT|FOOT_LEFT

/datum/body_marking/tertiary/possum
	name = "Possum Sock"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/possum.dmi'
	icon_state = "possum"
	affected_bodyparts = HAND_LEFT|HAND_RIGHT|FOOT_RIGHT|FOOT_LEFT

/datum/body_marking/tertiary/tiger
	name = "Tiger Stripe"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/tiger.dmi'
	icon_state = "tiger"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/tertiary/otter
	name = "Otter Head"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/otter.dmi'
	icon_state = "otter"
	affected_bodyparts = HEAD

/datum/body_marking/tertiary/otie
	name = "Otie Spot"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/otie.dmi'
	icon_state = "otie"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/tertiary/hawk
	name = "Hawk Talon"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/hawk.dmi'
	icon_state = "hawk"
	affected_bodyparts = LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/tertiary/corvid
	name = "Corvid Talon"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/corvid.dmi'
	icon_state = "corvid"
	affected_bodyparts = LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/tertiary/deer
	name = "Deer Hoof"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/deer.dmi'
	icon_state = "deer"
	affected_bodyparts = HAND_LEFT|HAND_RIGHT|FOOT_RIGHT|FOOT_LEFT

/datum/body_marking/tertiary/hyena
	name = "Hyena Side"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/hyena.dmi'
	icon_state = "hyena"
	affected_bodyparts = HEAD|CHEST|GROIN

/datum/body_marking/tertiary/dog
	name = "Dog Spot"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/dog.dmi'
	icon_state = "dog"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|FOOT_RIGHT|FOOT_LEFT

/datum/body_marking/tertiary/bat
	name = "Bat Mark"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/bat.dmi'
	icon_state = "bat"
	affected_bodyparts = CHEST|GROIN

/datum/body_marking/tertiary/floofer
	name = "Floofer Sock"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/floofer.dmi'
	icon_state = "floofer"
	affected_bodyparts = ARM_LEFT|ARM_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT|HAND_LEFT|HAND_RIGHT

/datum/body_marking/tertiary/rat
	name = "Rat Spot"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/rat.dmi'
	icon_state = "rat"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|LEG_RIGHT|LEG_LEFT

/datum/body_marking/tertiary/sloth
	name = "Sloth Head"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/sloth.dmi'
	icon_state = "sloth"
	affected_bodyparts = HEAD

/datum/body_marking/tertiary/scolipede
	name = "Scolipede Spikes"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/scolipede.dmi'
	icon_state = "scolipede"
	affected_bodyparts = CHEST

/datum/body_marking/tertiary/guilmon
	name = "Guilmon Mark"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/guilmon.dmi'
	icon_state = "guilmon"
	affected_bodyparts = HEAD|CHEST|GROIN|ARM_LEFT|ARM_RIGHT|HAND_LEFT|HAND_RIGHT|LEG_RIGHT|FOOT_RIGHT|LEG_LEFT|FOOT_LEFT

/datum/body_marking/tertiary/xeno
	name = "Xeno Head"
	icon = 'modular_septic/icons/mob/human/body_markings/tertiary/xeno.dmi'
	icon_state = "xeno"
	affected_bodyparts = HEAD
	recommended_species = list("xeno")


code:
/mob/dead/new_player/IsJobUnavailable(rank, latejoin = FALSE)
	. = ..()
	var/datum/job/job = SSjob.GetJob(rank)
	if(. == JOB_AVAILABLE)
		if(job.has_banned_quirk(client.prefs))
			return JOB_UNAVAILABLE_QUIRK
		if(job.has_banned_species(client.prefs))
			return JOB_UNAVAILABLE_SPECIES
		if(!job.has_required_languages(client.prefs))
			return JOB_UNAVAILABLE_LANGUAGE

/mob/dead/new_player/Topic(href, list/href_list)
	. = ..()
	if(client?.prefs)
		if(href_list["SelectedJob"])
			SEND_SOUND(src, client.prefs.savesound)
		else
			SEND_SOUND(src, client.prefs.clicksound)

/mob/dead/new_player/LateChoices()
	var/list/dat = list("
Round Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]
")
	if(SSshuttle.emergency)
		switch(SSshuttle.emergency.mode)
			if(SHUTTLE_ESCAPE)
				dat += "
The crew has evacuated.

"
			if(SHUTTLE_CALL)
				if(!SSshuttle.canRecall())
					dat += "
The crew is currently evacuating. This is final.

"
				else
					dat += "
The crew is currently evacuating.

"
	for(var/datum/job/prioritized_job in SSjob.prioritized_jobs)
		if(prioritized_job.current_positions >= prioritized_job.total_positions)
			SSjob.prioritized_jobs -= prioritized_job
	dat += "

"
	var/column_counter = 0
	// render each category's available jobs
	for(var/datum/job_department/department as anything in SSjob.joinable_departments)
		var/department_color = department.latejoin_color
		dat += "<fieldset style='width: 185px; border: 2px solid [department_color]; display: inline'>"
		dat += "<legend align='center' style='color: [department_color]'>[department.department_name]</legend>"
		var/list/dept_data = list()
		for(var/datum/job/job_datum as anything in department.department_jobs)
			if(IsJobUnavailable(job_datum.title, TRUE) != JOB_AVAILABLE)
				continue
			var/command_bold = ""
			if(job_datum.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)
				command_bold = " command"
			if(job_datum in SSjob.prioritized_jobs)
				dept_data += "[job_datum.title] ([job_datum.current_positions])"
			else
				dept_data += "[job_datum.title] ([job_datum.current_positions])"
		if(!length(dept_data))
			dept_data += "No positions open."
		dat += dept_data.Join()
		dat += "</fieldset>
"
		column_counter++
		if(column_counter > 0 && !(column_counter % 3))
			dat += "	"
	dat += "

"
	dat += "

"
	var/datum/browser/popup = new(src, "latechoices", "Choose Profession", 700, 700)
	popup.add_stylesheet("playeroptions", 'html/browser/playeroptions.css')
	popup.set_content(jointext(dat, ""))
	popup.open(FALSE) // 0 is passed to open so that it doesn't use the onclose() proc


code:
/// Randomizes the character according to preferences.
/datum/preferences/apply_character_randomization_prefs(antag_override = FALSE)
	if(!randomise[RANDOM_BODY] && !(antag_override && randomise[RANDOM_BODY_ANTAG]))
		return // Prefs say "no, thank you"
	if(randomise[RANDOM_GENDER] || (randomise[RANDOM_GENDER_ANTAG] && antag_override))
		gender = pick(MALE,FEMALE)
		body_type = gender
	if(randomise[RANDOM_SPECIES])
		random_species()
	if(randomise[RANDOM_NAME])
		real_name = pref_species.random_name(gender,TRUE)
	if(randomise[RANDOM_AGE] || (randomise[RANDOM_AGE_ANTAG] && antag_override))
		age = rand(AGE_MIN,AGE_MAX)
	if(randomise[RANDOM_BACKPACK])
		backpack = random_backpack()
	if(randomise[RANDOM_JUMPSUIT_STYLE])
		jumpsuit_style = pick(GLOB.jumpsuitlist)
	if(randomise[RANDOM_HAIRSTYLE])
		hairstyle = random_hairstyle(gender)
	if(randomise[RANDOM_FACIAL_HAIRSTYLE])
		facial_hairstyle = random_facial_hairstyle(gender)
	if(randomise[RANDOM_HAIR_COLOR])
		hair_color = random_short_color()
	if(randomise[RANDOM_FACIAL_HAIR_COLOR])
		facial_hair_color = random_short_color()
	if(randomise[RANDOM_SKIN_TONE])
		set_skin_tone(random_skin_tone())
	if(randomise[RANDOM_EYE_COLOR])
		left_eye_color = random_eye_color()
		right_eye_color = left_eye_color
	if(randomise[RANDOM_FEATURES])
		var/list/new_features = pref_species.get_random_features() //We do this to keep flavor text, genital sizes etc.
		for(var/key in new_features)
			features[key] = new_features[key]
		mutant_bodyparts = pref_species.get_random_mutant_bodyparts(features)
		body_markings = pref_species.get_random_body_markings(features)

/// Fully randomizes everything in the character.
/datum/preferences/randomise_appearance_prefs(randomise_flags = ALL)
	if(randomise_flags & RANDOMIZE_GENDER)
		gender = pick(MALE,FEMALE)
		body_type = gender
	if(randomise_flags & RANDOMIZE_SPECIES)
		var/rando_race = GLOB.species_list[pick(GLOB.roundstart_races)]
		pref_species = new rando_race()
	if(randomise_flags & RANDOMIZE_NAME)
		real_name = pref_species.random_name(gender,TRUE)
	if(randomise_flags & RANDOMIZE_AGE)
		age = rand(AGE_MIN,AGE_MAX)
	if(randomise_flags & RANDOMIZE_BACKPACK)
		backpack = random_backpack()
	if(randomise_flags & RANDOMIZE_JUMPSUIT_STYLE)
		jumpsuit_style = pick(GLOB.jumpsuitlist)
	if(randomise_flags & RANDOMIZE_HAIRSTYLE)
		hairstyle = random_hairstyle(gender)
	if(randomise_flags & RANDOMIZE_FACIAL_HAIRSTYLE)
		facial_hairstyle = random_facial_hairstyle(gender)
	if(randomise_flags & RANDOMIZE_HAIR_COLOR)
		hair_color = random_short_color()
	if(randomise_flags & RANDOMIZE_FACIAL_HAIR_COLOR)
		facial_hair_color = random_short_color()
	if(randomise_flags & RANDOMIZE_SKIN_TONE)
		set_skin_tone(random_skin_tone())
	if(randomise_flags & RANDOMIZE_EYE_COLOR)
		left_eye_color = random_eye_color()
		right_eye_color = left_eye_color
	if(randomise_flags & RANDOMIZE_FEATURES)
		var/list/new_features = pref_species.get_random_features() //We do this to keep flavor text, genital sizes etc.
		for(var/key in new_features)
			features[key] = new_features[key]
		mutant_bodyparts = pref_species.get_random_mutant_bodyparts(features)
		body_markings = pref_species.get_random_body_markings(features)

//This proc makes sure that we only have the parts that the species should have, add missing ones, remove extra ones(should any be changed)
//Also, this handles missing color keys
/datum/preferences/proc/validate_species_parts()
	if(!pref_species)
		return

	var/list/target_bodyparts = pref_species.default_mutant_bodyparts.Copy()

	//Remove all "extra" accessories
	for(var/key in mutant_bodyparts)
		if(!GLOB.sprite_accessories[key]) //That accessory no longer exists, remove it
			mutant_bodyparts -= key
			continue
		if(!pref_species.default_mutant_bodyparts[key])
			mutant_bodyparts -= key
			continue
		if(!GLOB.sprite_accessories[key][mutant_bodyparts[key][MUTANT_INDEX_NAME]]) //The individual accessory no longer exists
			mutant_bodyparts[key][MUTANT_INDEX_NAME] = pref_species.default_mutant_bodyparts[key]
		validate_color_keys_for_part(key) //Validate the color count of each accessory that wasnt removed

	//Add any missing accessories
	for(var/key in target_bodyparts)
		if(!mutant_bodyparts[key])
			var/datum/sprite_accessory/SA
			if(target_bodyparts[key] == ACC_RANDOM)
				SA = random_accessory_of_key_for_species(key, pref_species)
			else
				SA = GLOB.sprite_accessories[key][target_bodyparts[key]]
			var/final_list = list()
			final_list[MUTANT_INDEX_NAME] = SA.name
			final_list[MUTANT_INDEX_COLOR] = SA.get_default_color(features, pref_species)
			mutant_bodyparts[key] = final_list

	if(!allow_advanced_colors)
		reset_colors()

/datum/preferences/proc/validate_color_keys_for_part(key)
	var/datum/sprite_accessory/SA = GLOB.sprite_accessories[key][mutant_bodyparts[key][MUTANT_INDEX_NAME]]
	var/list/colorlist = mutant_bodyparts[key][MUTANT_INDEX_COLOR]
	if(SA.color_src == USE_MATRIXED_COLORS && LAZYLEN(colorlist) != 3)
		mutant_bodyparts[key][MUTANT_INDEX_COLOR] = SA.get_default_color(features, pref_species)
	else if(SA.color_src == USE_ONE_COLOR && LAZYLEN(colorlist) != 1)
		mutant_bodyparts[key][MUTANT_INDEX_COLOR] = SA.get_default_color(features, pref_species)

/datum/preferences/proc/set_new_species(new_species_path)
	pref_species = new new_species_path()
	var/list/new_features = pref_species.get_random_features() //We do this to keep flavor text, genital sizes etc.
	for(var/key in new_features)
		features[key] = new_features[key]
	mutant_bodyparts = pref_species.get_random_mutant_bodyparts(features)
	body_markings = pref_species.get_random_body_markings(features)
	if(pref_species.use_skintones)
		features["uses_skintones"] = TRUE
	//We reset the quirk-based stuff
	augments = list()
	all_quirks = list()
	//Reset cultural stuff
	pref_birthsign = pref_species.culture_birthsigns[1]
	try_get_common_language()
	validate_languages()

/datum/preferences/proc/reset_colors()
	for(var/key in mutant_bodyparts)
		var/datum/sprite_accessory/SA = GLOB.sprite_accessories[key][mutant_bodyparts[key][MUTANT_INDEX_NAME]]
		if(SA.always_color_customizable)
			continue
		mutant_bodyparts[key][MUTANT_INDEX_COLOR] = SA.get_default_color(features, pref_species)

	for(var/zone in body_markings)
		var/list/bml = body_markings[zone]
		for(var/key in bml)
			var/datum/body_marking/BM = GLOB.body_markings[key]
			bml[key] = BM.get_default_color(features, pref_species)

/datum/preferences/random_species()
	var/random_species_type = GLOB.species_list[pick(GLOB.roundstart_races)]
	set_new_species(random_species_type)
	if(randomise[RANDOM_NAME])
		real_name = pref_species.random_name(gender,1)

/datum/preferences/update_preview_icon()
	// Determine what job is marked as 'High' priority, and dress them up as such.
	var/datum/job/previewJob
	var/highest_pref = 0
	for(var/job in job_preferences)
		if(job_preferences[job] > highest_pref)
			previewJob = SSjob.GetJob(job)
			highest_pref = job_preferences[job]
	if(previewJob)
		// Silicons only need a very basic preview since there is no customization for them.
		if(istype(previewJob,/datum/job/ai))
			parent.show_character_previews(image('icons/mob/ai.dmi', icon_state = resolve_ai_icon(preferred_ai_core_display), dir = SOUTH))
			return
		if(istype(previewJob,/datum/job/cyborg))
			parent.show_character_previews(image('icons/mob/robots.dmi', icon_state = "robot", dir = SOUTH))
			return
	// Set up the dummy for its photoshoot
	var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_PREFERENCES)
	switch(preview_pref)
		if(PREVIEW_PREF_JOB)
			if(previewJob)
				mannequin.job = previewJob.title
				mannequin.dress_up_as_job(previewJob, TRUE)
			mannequin.underwear_visibility = NONE
		if(PREVIEW_PREF_LOADOUT)
			mannequin.underwear_visibility = NONE
			equip_preference_loadout(mannequin, TRUE, previewJob)
			mannequin.underwear_visibility = NONE
		if(PREVIEW_PREF_NAKED)
			mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS
	apply_prefs_to(mannequin, TRUE, TRUE, TRUE)

	COMPILE_OVERLAYS(mannequin)
	var/mutable_appearance/appearance_thing = new /mutable_appearance(mannequin)
	parent.show_character_previews(appearance_thing)
	unset_busy_human_dummy(DUMMY_HUMAN_SLOT_PREFERENCES)

/datum/preferences/proc/equip_preference_loadout(mob/living/carbon/human/backpacker, just_preview = FALSE, datum/job/chosen_job, blacklist, initial)
	if(!ishuman(backpacker))
		return
	var/list/items_to_pack = list()
	for(var/item_name in loadout)
		var/datum/loadout_item/loadout_item = GLOB.loadout_items[item_name]
		var/obj/item/item = loadout_item.get_spawned_item(loadout[item_name])
		//Skip the item if the job doesn't match, but only if that not used for the preview
		if(!just_preview && (loadout_item.restricted_roles && chosen_job.type && !(chosen_job in loadout_item.restricted_roles)))
			continue
		if(!backpacker.equip_to_appropriate_slot(item))
			if(!just_preview)
				items_to_pack += item
				//Here we stick it into a bag, if possible
				if(!backpacker.equip_to_slot_if_possible(item, ITEM_SLOT_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE, initial=initial))
					//Otherwise - on the ground
					item.forceMove(get_turf(backpacker))
			else
				qdel(item)
	return items_to_pack

//This needs to be a seperate proc because the character could not have the proper backpack during the moment of loadout equip
/datum/preferences/proc/add_packed_items(mob/living/carbon/human/backpacker, list/packed_items, del_on_fail = TRUE)
	//Here we stick loadout items that couldn't be equipped into a bag.
	var/obj/item/back_item = backpacker.back
	for(var/thing in packed_items)
		var/obj/item/item = thing
		if(back_item)
			SEND_SIGNAL(back_item, COMSIG_TRY_STORAGE_INSERT, item, backpacker, TRUE, TRUE)
		else if (del_on_fail)
			qdel(item)
		else
			item.forceMove(get_turf(backpacker))


code:
/datum/preferences/render_new_preview_appearance(mob/living/carbon/human/dummy/mannequin)
	var/datum/job/preview_job = get_highest_priority_job()

	if(preview_job)
		// Silicons only need a very basic preview since there is no customization for them.
		if (istype(preview_job,/datum/job/ai))
			return image('icons/mob/ai.dmi', icon_state = resolve_ai_icon(read_preference(/datum/preference/choiced/ai_core_display)), dir = SOUTH)
		if (istype(preview_job,/datum/job/cyborg))
			return image('icons/mob/robots.dmi', icon_state = "robot", dir = SOUTH)

	switch(character_preview_type)
		if(PREVIEW_PREF_NAKED)
			mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS
			mannequin.set_arousal(0)
		if(PREVIEW_PREF_NAKED_AROUSED)
			mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS
			mannequin.set_arousal(AROUSAL_LEVEL_MAXIMUM)
		else
			if(preview_job)
				mannequin.job = preview_job.title
				mannequin.dress_up_as_job(preview_job, TRUE)
			mannequin.underwear_visibility = NONE
			mannequin.set_arousal(0)

	// Set up the dummy for its photoshoot
	apply_prefs_to(mannequin, TRUE)

	COMPILE_OVERLAYS(mannequin)
	return mannequin.appearance


code:
/datum/sprite_accessory
	///Unique key of an accessory. All tails should have "tail", ears "ears" etc.
	var/key = null
	///If an accessory is special, it wont get included in the normal accessory lists
	var/special = FALSE
	///Species we get normally slapped on.
	var/list/recommended_species
	///Which color we default to on acquisition of the accessory (such as switching species, default color for character customization etc)
	///You can also put down a a HEX color, to be used instead as the default
	var/default_color
	///Set this to a name, then the accessory will be shown in preferences, if a species can have it. Most accessories have this
	///Notable things that have it set to FALSE are things that need special setup, such as genitals
	var/generic

	color_src = USE_ONE_COLOR

	///Which layers does this accessory affect (BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER)
	var/relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER)

	///This is used to determine whether an accessory gets added to someone - This is important for accessories that are "None", which should have this set to false
	var/factual = TRUE

	///Use this as a type path to an organ that this sprite_accessory will be associated. Make sure the organ has 'mutantpart_info' set properly.
	var/organ_type

	///Body zone associated with the bodypart
	var/body_zone = BODY_ZONE_HEAD

	///Set this to true to make an accessory appear as color customizable in preferences despite advanced color settings being off, will also prevent the accessory from being reset
	var/always_color_customizable
	///Whether the accessory can have a special icon_state to render, i.e. wagging tails
	var/special_render_case
	///Special case of whether the accessory should be shifted in the X dimension, check taur genitals for example
	var/special_x_dimension
	///Special case of whether the accessory should have a different icon, check taur genitals for example
	var/special_icon_case
	///Special case of applying a different color, like hardsuit tails
	var/special_colorize
	///Whether it has any extras to render, and their appropriate color sources
	var/extra = FALSE
	var/extra_color_src
	var/extra2 = FALSE
	var/extra2_color_src
	///Whether this feature is genetic, and thus modifiable by DNA consoles
	var/genetic = FALSE

/datum/sprite_accessory/New()
	if(!default_color)
		switch(color_src)
			if(USE_ONE_COLOR)
				default_color = DEFAULT_PRIMARY
			if(USE_MATRIXED_COLORS)
				default_color = DEFAULT_MATRIXED
			else
				default_color = "FFFFFF"
	if(color_src == USE_MATRIXED_COLORS)
		default_color = DEFAULT_MATRIXED
	if(name == "None")
		factual = FALSE

/datum/sprite_accessory/proc/get_preview_color()
	switch(color_src)
		if(COLOR_SRC_MATRIXED, USE_MATRIXED_COLORS)
			return list(COLOR_ORANGE_BROWN, COLOR_WHITE, COLOR_WHITE)
		else
			return COLOR_ORANGE_BROWN

/datum/sprite_accessory/proc/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	return FALSE

/datum/sprite_accessory/proc/get_special_render_state(mob/living/carbon/human/H)
	return null

/datum/sprite_accessory/proc/get_special_render_colour(mob/living/carbon/human/H, passed_state)
	return null

/datum/sprite_accessory/proc/get_special_icon(mob/living/carbon/human/H, passed_state)
	return null

/datum/sprite_accessory/proc/get_special_x_dimension(mob/living/carbon/human/H, passed_state)
	return 0

//Needs features for the color information
/datum/sprite_accessory/proc/get_default_color(list/features, datum/species/pref_species)
	var/list/colors = list(default_color)
	switch(default_color)
		if(DEFAULT_PRIMARY)
			colors = list(features["mcolor"])
		if(DEFAULT_SECONDARY)
			colors = list(features["mcolor2"])
		if(DEFAULT_TERTIARY)
			colors = list(features["mcolor3"])
		if(DEFAULT_MATRIXED)
			colors = list(features["mcolor"], features["mcolor2"], features["mcolor3"])
		if(DEFAULT_SKIN_OR_PRIMARY)
			if(features["uses_skintones"] && pref_species && initial(pref_species.use_skintones))
				colors = list(features["skin_color"])
			else
				colors = list(features["mcolor"])

	return colors


code:
/datum/sprite_accessory/ears
	key = "ears"
	generic = "Ears"
	organ_type = /obj/item/organ/ears
	relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
	color_src = USE_ONE_COLOR
	genetic = TRUE

/datum/sprite_accessory/ears/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if((H.head && (H.head.flags_inv & HIDEHAIR)) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
		return TRUE

/datum/sprite_accessory/ears/none
	name = "None"
	icon_state = "none"
	color_src = null
	factual = FALSE

/datum/sprite_accessory/ears/cat
	recommended_species = list(SPECIES_SYNTHMAMMAL, SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTHHUMAN, SPECIES_FELINE, SPECIES_HUMANOID)
	relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
	color_src = USE_ONE_COLOR

/datum/sprite_accessory/ears/mutant
	icon = 'modular_septic/icons/mob/human/sprite_accessory/ears.dmi'
	organ_type = /obj/item/organ/ears/fluffy
	color_src = USE_MATRIXED_COLORS
	recommended_species = list(SPECIES_SYNTHMAMMAL, SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTHHUMAN, SPECIES_FELINE, SPECIES_HUMANOID)

/datum/sprite_accessory/ears/mutant/werewolf
	recommended_species = list(SPECIES_SYNTHMAMMAL, SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTHHUMAN, SPECIES_FELINE, SPECIES_WEREWOLF, SPECIES_HUMANOID)

/datum/sprite_accessory/ears/mutant/werecat
	recommended_species = list(SPECIES_SYNTHMAMMAL, SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTHHUMAN, SPECIES_FELINE, SPECIES_WERECAT, SPECIES_HUMANOID)

/datum/sprite_accessory/ears/mutant/akula
	recommended_species = list(SPECIES_SYNTHMAMMAL, SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTHHUMAN, SPECIES_FELINE, SPECIES_AQUATIC, SPECIES_HUMANOID)

/datum/sprite_accessory/ears/mutant/axolotl
	name = "Axolotl"
	icon_state = "axolotl"
	color_src = USE_ONE_COLOR

/datum/sprite_accessory/ears/mutant/bat
	name = "Bat"
	icon_state = "bat"

/datum/sprite_accessory/ears/mutant/bear
	name = "Bear"
	icon_state = "bear"
	color_src = USE_ONE_COLOR

/datum/sprite_accessory/ears/mutant/bigwolf
	name = "Big Wolf"
	icon_state = "bigwolf"

/datum/sprite_accessory/ears/mutant/bigwolfinner
	name = "Big Wolf (ALT)"
	icon_state = "bigwolfinner"
	extra = TRUE
	extra_color_src = NONE

/datum/sprite_accessory/ears/mutant/bigwolfdark //alphabetical sort ignored here for ease-of-use
	name = "Dark Big Wolf"
	icon_state = "bigwolfdark"

/datum/sprite_accessory/ears/mutant/bigwolfinnerdark
	name = "Dark Big Wolf (ALT)"
	icon_state = "bigwolfinnerdark"
	extra = TRUE
	extra_color_src = NONE

/datum/sprite_accessory/ears/mutant/bunny
	name = "Bunny"
	icon_state = "bunny"

/datum/sprite_accessory/ears/mutant/werecat/catbig
	name = "Cat, Big"
	icon_state = "catbig"

/datum/sprite_accessory/ears/mutant/werecat/catnormal
	name = "Cat, Normal"
	icon_state = "catnormal"

/datum/sprite_accessory/ears/mutant/cow
	name = "Cow"
	icon_state = "cow"
	color_src = USE_ONE_COLOR

/datum/sprite_accessory/ears/mutant/curled
	name = "Curled Horn"
	icon_state = "horn1"
	color_src = USE_ONE_COLOR
	default_color = DEFAULT_TERTIARY

/datum/sprite_accessory/ears/mutant/deer
	name = "Deer"
	icon_state = "deer"
	color_src = USE_ONE_COLOR
	default_color = DEFAULT_TERTIARY

/datum/sprite_accessory/ears/mutant/eevee
	name = "Eevee"
	icon_state = "eevee"
	color_src = USE_ONE_COLOR

/datum/sprite_accessory/ears/mutant/eevee_alt
	name = "Eevee ALT"
	icon_state = "eevee_alt"
	color_src = USE_MATRIXED_COLORS

/datum/sprite_accessory/ears/mutant/elf
	name = "Elf"
	icon_state = "elf"
	color_src = USE_ONE_COLOR
	default_color = DEFAULT_SKIN_OR_PRIMARY

/datum/sprite_accessory/ears/mutant/elephant
	name = "Elephant"
	icon_state = "elephant"
	color_src = USE_ONE_COLOR

/datum/sprite_accessory/ears/mutant/fennec
	name = "Fennec"
	icon_state = "fennec"

/datum/sprite_accessory/ears/mutant/fish
	name = "Fish"
	icon_state = "fish"
	color_src = USE_ONE_COLOR

/datum/sprite_accessory/ears/mutant/werewolf/fox
	name = "Fox"
	icon_state = "fox"

/datum/sprite_accessory/ears/mutant/husky
	name = "Husky"
	icon_state = "wolf"

/datum/sprite_accessory/ears/mutant/jellyfish
	name = "Jellyfish"
	icon_state = "jellyfish"
	color_src = HAIR

/datum/sprite_accessory/ears/mutant/kangaroo
	name = "Kangaroo"
	icon_state = "kangaroo"

/datum/sprite_accessory/ears/mutant/lab
	name = "Dog, Long"
	icon_state = "lab"
	color_src = USE_ONE_COLOR

/datum/sprite_accessory/ears/mutant/murid
	name = "Murid"
	icon_state = "murid"

/datum/sprite_accessory/ears/mutant/werewolf/otie
	name = "Otusian"
	icon_state = "otie"

/datum/sprite_accessory/ears/mutant/protogen
	name = "Protogen"
	icon_state = "protogen"

/datum/sprite_accessory/ears/mutant/rabbit
	name = "Rabbit"
	icon_state = "rabbit"

/datum/sprite_accessory/ears/mutant/pede
	name = "Scolipede"
	icon_state = "pede"

/datum/sprite_accessory/ears/mutant/akula/sergal
	name = "Sergal"
	icon_state = "sergal"

/datum/sprite_accessory/ears/mutant/skunk
	name = "Skunk"
	icon_state = "skunk"

/datum/sprite_accessory/ears/mutant/squirrel
	name = "Squirrel"
	icon_state = "squirrel"

/datum/sprite_accessory/ears/mutant/werewolf/wolf
	name = "Wolf"
	icon_state = "wolf"

/datum/sprite_accessory/ears/mutant/werewolf/perky
	name = "Perky"
	icon_state = "perky"

/datum/sprite_accessory/ears/mutant/antenna_simple1
	name = "Insect antenna (coloring 2)"
	icon_state = "antenna_simple1"

/datum/sprite_accessory/ears/mutant/antenna_simple1_v2
	name = "Insect antenna (coloring 3)"
	icon_state = "antenna_simple1v2"

/datum/sprite_accessory/ears/mutant/antenna_simple2
	name = "Insect antenna 2 (coloring 2)"
	icon_state = "antenna_simple2"

/datum/sprite_accessory/ears/mutant/antenna_simple2_v2
	name = "Insect antenna 2 (coloring 3)"
	icon_state = "antenna_simple2v2"

/datum/sprite_accessory/ears/mutant/antenna_fuzzball
	name = "Fuzzball antenna (coloring 2+3)"
	icon_state = "antenna_fuzzball"

/datum/sprite_accessory/ears/mutant/antenna_fuzzball_v2
	name = "Fuzzball antenna (coloring 3+1)"
	icon_state = "antenna_fuzzballv2"

/datum/sprite_accessory/ears/mutant/cobrahood
	name = "Cobra Hood"
	icon_state = "cobrahood"

/datum/sprite_accessory/ears/mutant/cobrahoodears
	name = "Cobra Hood (Ears)"
	icon_state = "cobraears"

/datum/sprite_accessory/ears/mutant/miqote
	name = "Miqo'te"
	icon_state = "miqote"


code:
// Facial hair
/datum/sprite_accessory/facial_hair/septic
	icon = 'modular_septic/icons/mob/human/sprite_accessory/facialhair.dmi'

/datum/sprite_accessory/facial_hair/septic/sideburns
	name = "Sideburns"
	icon_state = "facial_sideburns"

/datum/sprite_accessory/facial_hair/septic/goatee
	name = "Goatee"
	icon_state = "facial_goatee"

/datum/sprite_accessory/facial_hair/septic/fiveoclock
	name = "Beard (Five o Clock)"
	icon_state = "facial_5oclock"

/datum/sprite_accessory/facial_hair/septic/hornadorns
	name = "Hornadorns"
	icon_state = "facial_hornadorns"

/datum/sprite_accessory/facial_hair/septic/chinhorns
	name = "Chin Horns"
	icon_state = "facial_chinhorns"

/datum/sprite_accessory/facial_hair/septic/tribeard
	name = "Tri-beard"
	icon_state = "facial_tribeard"

/datum/sprite_accessory/facial_hair/septic/neckfluff
	name = "Neckfluff"
	icon_state = "facial_neckfluff"

/datum/sprite_accessory/facial_hair/septic/squid
	name = "Tentacle Beard"
	icon_state = "facial_squid"

/datum/sprite_accessory/facial_hair/septic/postal
	name = "Dude Goatee"
	icon_state = "facial_postal"


code:
/datum/sprite_accessory/fluff
	default_color = "FFFFFF"
	key = "fluff"
	generic = "Fluff"
	body_zone = BODY_ZONE_PRECISE_NECK
	recommended_species = list(SPECIES_MOTH, SPECIES_SYNTHMAMMAL, SPECIES_MAMMAL, SPECIES_INSECT)
	relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
	genetic = TRUE

/datum/sprite_accessory/fluff/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if((H.head && (H.head.flags_inv & HIDEHAIR)) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
		return TRUE

/datum/sprite_accessory/fluff/moth
	icon = 'modular_septic/icons/mob/human/sprite_accessory/moth_fluff.dmi'

/datum/sprite_accessory/fluff/moth/none
	name = "None"
	icon_state = "none"

/datum/sprite_accessory/fluff/moth/plain
	name = "Plain"
	icon_state = "plain"

/datum/sprite_accessory/fluff/moth/monarch
	name = "Monarch"
	icon_state = "monarch"

/datum/sprite_accessory/fluff/moth/luna
	name = "Luna"
	icon_state = "luna"

/datum/sprite_accessory/fluff/moth/atlas
	name = "Atlas"
	icon_state = "atlas"

/datum/sprite_accessory/fluff/moth/reddish
	name = "Reddish"
	icon_state = "redish"

/datum/sprite_accessory/fluff/moth/royal
	name = "Royal"
	icon_state = "royal"

/datum/sprite_accessory/fluff/moth/gothic
	name = "Gothic"
	icon_state = "gothic"

/datum/sprite_accessory/fluff/moth/lovers
	name = "Lovers"
	icon_state = "lovers"

/datum/sprite_accessory/fluff/moth/whitefly
	name = "White Fly"
	icon_state = "whitefly"

/datum/sprite_accessory/fluff/moth/punished
	name = "Burnt Off"
	icon_state = "punished"
	locked = TRUE

/datum/sprite_accessory/fluff/moth/firewatch
	name = "Firewatch"
	icon_state = "firewatch"

/datum/sprite_accessory/fluff/moth/deathhead
	name = "Deathshead"
	icon_state = "deathhead"

/datum/sprite_accessory/fluff/moth/poison
	name = "Poison"
	icon_state = "poison"

/datum/sprite_accessory/fluff/moth/ragged
	name = "Ragged"
	icon_state = "ragged"

/datum/sprite_accessory/fluff/moth/moonfly
	name = "Moon Fly"
	icon_state = "moonfly"

/datum/sprite_accessory/fluff/moth/snow
	name = "Snow"
	icon_state = "snow"

/datum/sprite_accessory/fluff/moth/oakworm
	name = "Oak Worm"
	icon_state = "oakworm"

/datum/sprite_accessory/fluff/moth/jungle
	name = "Jungle"
	icon_state = "jungle"

/datum/sprite_accessory/fluff/moth/witchwing
	name = "Witch Wing"
	icon_state = "witchwing"

/datum/sprite_accessory/fluff/moth/insectm
	name = "Insect male (Tertiary)"
	icon_state = "insectm"
	default_color = DEFAULT_TERTIARY

/datum/sprite_accessory/fluff/moth/insectf
	name = "Insect female (Tertiary)"
	icon_state = "insectf"
	default_color = DEFAULT_TERTIARY

/datum/sprite_accessory/fluff/moth/fsnow
	name = "Snow (Top)"
	icon_state = "fsnow"


code:
/datum/sprite_accessory/frills
	key = "frills"
	generic = "Frills"
	recommended_species = list(SPECIES_LIZARD, SPECIES_LIZARD_ASH, SPECIES_LIZARD_SILVER)
	default_color = DEFAULT_SECONDARY
	relevant_layers = list(BODY_ADJ_LAYER)
	genetic = TRUE
	organ_type = /obj/item/organ/external/frills

/datum/sprite_accessory/frills/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if(H.head && (HAS_TRAIT(H, TRAIT_HIDING_MUTANTPARTS) || (H.head.flags_inv & HIDEEARS)))
		return TRUE

/datum/sprite_accessory/frills/divinity
	name = "Divinity"
	icon_state = "divinity"
	icon = 'modular_septic/icons/mob/human/sprite_accessory/frills.dmi'

/datum/sprite_accessory/frills/horns
	name = "Horns"
	icon_state = "horns"
	icon = 'modular_septic/icons/mob/human/sprite_accessory/frills.dmi'

/datum/sprite_accessory/frills/hornsdouble
	name = "Horns Double"
	icon_state = "hornsdouble"
	icon = 'modular_septic/icons/mob/human/sprite_accessory/frills.dmi'

/datum/sprite_accessory/frills/big
	name = "Big"
	icon_state = "big"
	icon = 'modular_septic/icons/mob/human/sprite_accessory/frills.dmi'

/datum/sprite_accessory/frills/cobrahood
	name = "Cobra Hood"
	icon_state = "cobrahood"
	icon = 'modular_septic/icons/mob/human/sprite_accessory/frills.dmi'
	color_src = USE_MATRIXED_COLORS

/datum/sprite_accessory/frills/cobrahoodears
	name = "Cobra Hood (Ears)"
	icon_state = "cobraears"
	icon = 'modular_septic/icons/mob/human/sprite_accessory/frills.dmi'
	color_src = USE_MATRIXED_COLORS


code:
/datum/sprite_accessory/genital
	special_render_case = TRUE
	var/uses_skintones = FALSE
	var/associated_organ_slot

/datum/sprite_accessory/genital/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	var/obj/item/organ/genital/pener = H.getorganslot(associated_organ_slot)
	if(!pener)
		return TRUE
	if(!pener.is_visible())
		return TRUE

/datum/sprite_accessory/genital/get_special_render_state(mob/living/carbon/human/H)
	var/obj/item/organ/genital/gen = H.getorganslot(associated_organ_slot)
	if(gen)
		if(gen.greyscale_colors == gen.skintoned_colors)
			return  "[gen.sprite_suffix]_s"
		else
			return  "[gen.sprite_suffix]"
	else
		return null

/datum/sprite_accessory/genital/penis
	icon = 'modular_septic/icons/mob/human/sprite_accessory/genitals/penis_onmob.dmi'
	organ_type = /obj/item/organ/genital/penis
	associated_organ_slot = ORGAN_SLOT_PENIS
	key = "penis"
	color_src = USE_MATRIXED_COLORS
	always_color_customizable = TRUE
	center = TRUE
	special_icon_case = TRUE
	special_x_dimension = TRUE
	relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
	genetic = TRUE
	var/can_have_sheath = TRUE

/datum/sprite_accessory/genital/penis/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	if(H.underwear && H.underwear != "Nude" && !(H.underwear_visibility & UNDERWEAR_HIDE_UNDIES))
		return TRUE
	return ..()

/datum/sprite_accessory/genital/penis/get_special_icon(mob/living/carbon/human/H)
	var/returned = icon
	if(H.dna.species.mutant_bodyparts["taur"] && H.dna.features["penis_taur_mode"])
		var/datum/sprite_accessory/taur/SP = GLOB.sprite_accessories["taur"][H.dna.species.mutant_bodyparts["taur"][MUTANT_INDEX_NAME]]
		if(!(SP.taur_mode & STYLE_TAUR_SNAKE))
			returned = 'modular_septic/icons/mob/human/sprite_accessory/genitals/taur_penis_onmob.dmi'
	return returned

/datum/sprite_accessory/genital/penis/get_special_x_dimension(mob/living/carbon/human/H)
	var/returned = dimension_x
	if(H.dna.species.mutant_bodyparts["taur"] && H.dna.features["penis_taur_mode"])
		var/datum/sprite_accessory/taur/SP = GLOB.sprite_accessories["taur"][H.dna.species.mutant_bodyparts["taur"][MUTANT_INDEX_NAME]]
		if(!(SP.taur_mode & STYLE_TAUR_SNAKE))
			returned = 64
	return returned

/datum/sprite_accessory/genital/penis/none
	icon_state = "none"
	name = "None"
	factual = FALSE
	color_src = null

/datum/sprite_accessory/genital/penis/human
	icon_state = "human"
	name = "Human"
	color_src = USE_ONE_COLOR
	default_color = DEFAULT_SKIN_OR_PRIMARY
	uses_skintones = TRUE
	can_have_sheath = FALSE

/datum/sprite_accessory/genital/penis/knotted
	icon_state = "knotted"
	name = "Knotted"

/datum/sprite_accessory/genital/penis/flared
	icon_state = "flared"
	name = "Flared"

/datum/sprite_accessory/genital/penis/barbknot
	icon_state = "barbknot"
	name = "Barbed, Knotted"

/datum/sprite_accessory/genital/penis/tapered
	icon_state = "tapered"
	name = "Tapered"

/datum/sprite_accessory/genital/penis/tentacle
	icon_state = "tentacle"
	name = "Tentacled"

/datum/sprite_accessory/genital/penis/hemi
	icon_state = "hemi"
	name = "Hemi"

/datum/sprite_accessory/genital/penis/hemiknot
	icon_state = "hemiknot"
	name = "Knotted Hemi"

/datum/sprite_accessory/genital/testicles
	icon = 'modular_septic/icons/mob/human/sprite_accessory/genitals/testicles_onmob.dmi'
	organ_type = /obj/item/organ/genital/testicles
	associated_organ_slot = ORGAN_SLOT_TESTICLES
	key = "testicles"
	always_color_customizable = TRUE
	special_icon_case = TRUE
	special_x_dimension = TRUE
	default_color = DEFAULT_SKIN_OR_PRIMARY
	relevant_layers = list(BODY_ADJ_LAYER, BODY_BEHIND_LAYER)
	genetic = TRUE
	var/has_size = TRUE

/datum/sprite_accessory/genital/testicles/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	if(H.underwear != "Nude" && !(H.underwear_visibility & UNDERWEAR_HIDE_UNDIES))
		return TRUE
	return ..()

/datum/sprite_accessory/genital/testicles/get_special_icon(mob/living/carbon/human/H)
	var/returned = icon
	if(H.dna.species.mutant_bodyparts["taur"] && H.dna.features["penis_taur_mode"])
		var/datum/sprite_accessory/taur/SP = GLOB.sprite_accessories["taur"][H.dna.mutant_bodyparts["taur"][MUTANT_INDEX_NAME]]
		if(!(SP.taur_mode & STYLE_TAUR_SNAKE))
			returned = 'modular_septic/icons/mob/human/sprite_accessory/genitals/taur_testicles_onmob.dmi'
	return returned

/datum/sprite_accessory/genital/testicles/get_special_x_dimension(mob/living/carbon/human/H)
	var/returned = dimension_x
	if(H.dna.species.mutant_bodyparts["taur"] && H.dna.features["penis_taur_mode"])
		var/datum/sprite_accessory/taur/SP = GLOB.sprite_accessories["taur"][H.dna.mutant_bodyparts["taur"][MUTANT_INDEX_NAME]]
		if(!(SP.taur_mode & STYLE_TAUR_SNAKE))
			returned = 64
	return returned

/datum/sprite_accessory/genital/testicles/none
	icon_state = "none"
	name = "None"
	factual = FALSE
	color_src = null

/datum/sprite_accessory/genital/testicles/pair
	name = "Pair"
	icon_state = "pair"
	uses_skintones = TRUE

/datum/sprite_accessory/genital/testicles/internal
	name = "Internal"
	icon_state = "none"
	color_src = null
	has_size = FALSE

/datum/sprite_accessory/genital/vagina
	icon = 'modular_septic/icons/mob/human/sprite_accessory/genitals/vagina_onmob.dmi'
	organ_type = /obj/item/organ/genital/vagina
	associated_organ_slot = ORGAN_SLOT_VAGINA
	key = "vagina"
	always_color_customizable = TRUE
	default_color = "FFCCCC"
	relevant_layers = list(BODY_FRONT_LAYER)
	genetic = TRUE
	var/alt_aroused = TRUE

/datum/sprite_accessory/genital/vagina/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	if(H.underwear != "Nude" && !(H.underwear_visibility & UNDERWEAR_HIDE_UNDIES))
		return TRUE
	return ..()

/datum/sprite_accessory/genital/vagina/get_special_render_state(mob/living/carbon/human/H)
	var/obj/item/organ/genital/gen = H.getorganslot(associated_organ_slot)
	if(gen)
		return "[gen.sprite_suffix]"
	else
		return null

/datum/sprite_accessory/genital/vagina/none
	icon_state = "none"
	name = "None"
	factual = FALSE
	color_src = null

/datum/sprite_accessory/genital/vagina/human
	icon_state = "human"
	name = "Human"

/datum/sprite_accessory/genital/vagina/tentacles
	icon_state = "tentacle"
	name = "Tentacle"

/datum/sprite_accessory/genital/vagina/dentata
	icon_state = "dentata"
	name = "Dentata"

/datum/sprite_accessory/genital/vagina/hairy
	icon_state = "hairy"
	name = "Hairy"
	alt_aroused = FALSE

/datum/sprite_accessory/genital/vagina/spade
	icon_state = "spade"
	name = "Spade"
	alt_aroused = FALSE

/datum/sprite_accessory/genital/vagina/furred
	icon_state = "furred"
	name = "Furred"
	alt_aroused = FALSE

/datum/sprite_accessory/genital/vagina/gaping
	icon_state = "gaping"
	name = "Gaping"

/datum/sprite_accessory/genital/vagina/cloaca
	icon_state = "cloaca"
	name = "Cloaca"

/datum/sprite_accessory/genital/womb
	organ_type = /obj/item/organ/genital/womb
	associated_organ_slot = ORGAN_SLOT_WOMB
	key = "womb"

/datum/sprite_accessory/genital/womb/none
	icon_state = "none"
	name = "None"
	factual = FALSE
	color_src = null

/datum/sprite_accessory/genital/womb/normal
	icon_state = "none"
	name = "Normal"
	color_src = null

/datum/sprite_accessory/genital/breasts
	icon = 'modular_septic/icons/mob/human/sprite_accessory/genitals/breasts_onmob.dmi'
	organ_type = /obj/item/organ/genital/breasts
	associated_organ_slot = ORGAN_SLOT_BREASTS
	key = "breasts"
	always_color_customizable = TRUE
	default_color = DEFAULT_SKIN_OR_PRIMARY
	relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
	uses_skintones = TRUE
	genetic = TRUE

/datum/sprite_accessory/genital/breasts/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	if(H.undershirt != "Nude" && !(H.underwear_visibility & UNDERWEAR_HIDE_SHIRT))
		return TRUE
	return ..()

/datum/sprite_accessory/genital/breasts/none
	icon_state = "none"
	name = "None"
	factual = FALSE
	color_src = null

/datum/sprite_accessory/genital/breasts/pair
	icon_state = "pair"
	name = "Pair"

/datum/sprite_accessory/genital/breasts/quad
	icon_state = "quad"
	name = "Quad"

/datum/sprite_accessory/genital/breasts/sextuple
	icon_state = "sextuple"
	name = "Sextuple"


code:
// Hairstyles
/datum/sprite_accessory/hair/get_preview_color()
	return COLOR_DARK_BROWN

/datum/sprite_accessory/hair/septic
	icon = 'modular_septic/icons/mob/human/sprite_accessory/hair.dmi'

/datum/sprite_accessory/hair/septic/pigtails4
	name = "Pigtails 4"
	icon_state = "hair_pigtailss"

/datum/sprite_accessory/hair/septic/bedhead_long
	name = "Longer Bedhead"
	icon_state = "hair_longer_bedhead"

/datum/sprite_accessory/hair/septic/dave
	name = "Dave"
	icon_state = "hair_dave"

/datum/sprite_accessory/hair/septic/shy
	name = "Shy"
	icon_state = "hair_shy"

/datum/sprite_accessory/hair/septic/ponytailf
	name = "Ponytail Feminine"
	icon_state = "hair_ponytailf"

/datum/sprite_accessory/hair/septic/ziegler
	name = "Ziegler"
	icon_state = "hair_ziegler"

/datum/sprite_accessory/hair/septic/hightight
	name = "Hightight"
	icon_state = "hair_hightight"

/datum/sprite_accessory/hair/septic/sergeant
	name = "Sergeant"
	icon_state = "hair_sergeant"

/datum/sprite_accessory/hair/septic/grande
	name = "Grande"
	icon_state = "hair_grande"

/datum/sprite_accessory/hair/septic/scully
	name = "Scully"
	icon_state = "hair_scully"

/datum/sprite_accessory/hair/septic/beehive2
	name = "Beehive 2"
	icon_state = "hair_beehive2"

/datum/sprite_accessory/hair/septic/longeralt
	name = "Longer ALT"
	icon_state = "hair_longeralt"

/datum/sprite_accessory/hair/septic/curly
	name = "Curly"
	icon_state = "hair_curly"

/datum/sprite_accessory/hair/septic/victory
	name = "Victory"
	icon_state = "hair_victory"

/datum/sprite_accessory/hair/septic/bobcutalt
	name = "Bobcut ALT"
	icon_state = "hair_bobcutalt"

/datum/sprite_accessory/hair/septic/fingerwave
	name = "Fingerwave"
	icon_state = "hair_fingerwave"

/datum/sprite_accessory/hair/septic/poofy2
	name = "Poofy 2"
	icon_state = "hair_poofy2"

/datum/sprite_accessory/hair/septic/bunhead3
	name = "Bunhead 3"
	icon_state = "hair_bunhead3"

/datum/sprite_accessory/hair/septic/rowbun
	name = "Row Bun"
	icon_state = "hair_rowbun"

/datum/sprite_accessory/hair/septic/rowdualtail
	name = "Row Dual Tail"
	icon_state = "hair_rowdualtail"

/datum/sprite_accessory/hair/septic/rowbraid
	name = "Row Braid"
	icon_state = "hair_rowbraid"

/datum/sprite_accessory/hair/septic/ponytailalt
	name = "Ponytail ALT"
	icon_state = "hair_ponytailalt"

/datum/sprite_accessory/hair/septic/halfbangalt
	name = "Halfbang ALT"
	icon_state = "hair_halfbangalt"

/datum/sprite_accessory/hair/septic/emolong
	name = "Emo Long"
	icon_state = "hair_emolong"

/datum/sprite_accessory/hair/septic/sleaze
	name = "Sleaze"
	icon_state = "hair_sleaze"

/datum/sprite_accessory/hair/septic/straight
	name = "Straight"
	icon_state = "hair_straight"

/datum/sprite_accessory/hair/septic/devillock
	name = "Devillock"
	icon_state = "hair_devillock"

/datum/sprite_accessory/hair/septic/clean
	name = "Clean"
	icon_state = "hair_clean"

/datum/sprite_accessory/hair/septic/shaggy
	name = "Shaggy"
	icon_state = "hair_shaggy"

/datum/sprite_accessory/hair/septic/mohawkshort
	name = "Mohawk Short"
	icon_state = "hair_mohawkshort"

/datum/sprite_accessory/hair/septic/volajupompless
	name = "Volaju Pompless"
	icon_state = "hair_volajupompless"

/datum/sprite_accessory/hair/septic/bunhead4
	name = "Bun Head 4"
	icon_state = "hair_bunhead4"

/datum/sprite_accessory/hair/septic/rows1
	name = "Rows 1"
	icon_state = "hair_rows1"

/datum/sprite_accessory/hair/septic/rows2
	name = "Rows 2"
	icon_state = "hair_rows2"

/datum/sprite_accessory/hair/septic/toriyama
	name = "Toriyama"
	icon_state = "hair_toriyama"

/datum/sprite_accessory/hair/septic/thefamilyman
	name = "The Family Man"
	icon_state = "hair_thefamilyman"

/datum/sprite_accessory/hair/septic/drillhair
	name = "Drill Hair"
	icon_state = "hair_drillhair"

/datum/sprite_accessory/hair/septic/veryshortovereye
	name = "Very Short Over Eye"
	icon_state = "hair_veryshortovereye"

/datum/sprite_accessory/hair/septic/unkempt
	name = "Unkempt"
	icon_state = "hair_unkempt"

/datum/sprite_accessory/hair/septic/wife
	name = "Wife"
	icon_state = "hair_wife"

/datum/sprite_accessory/hair/septic/nia
	name = "Nia"
	icon_state = "hair_nia"

/datum/sprite_accessory/hair/septic/shorthair4
	name = "Short Hair 4"
	icon_state = "hair_shorthair4"

/datum/sprite_accessory/hair/septic/shortovereyealt
	name = "Short Over Eye ALT"
	icon_state = "hair_shortovereyealt"

/datum/sprite_accessory/hair/septic/twintail_floor
	name = "Twintail Floor"
	icon_state = "hair_twintail_floor"

/datum/sprite_accessory/hair/septic/viper
	name = "Viper"
	icon_state = "hair_viper"

/datum/sprite_accessory/hair/septic/long4
	name = "Long 4"
	icon_state = "hair_long4"

/datum/sprite_accessory/hair/septic/fluffy_short
	name = "Fluffy Short"
	icon_state = "hair_fluffy_short"

/datum/sprite_accessory/hair/septic/simple_ponytail
	name = "Simple Ponytail"
	icon_state = "hair_simple_ponytail"

/datum/sprite_accessory/hair/septic/loose_slicked
	name = "Loose Slicked"
	icon_state = "hair_loose_slicked"

/datum/sprite_accessory/hair/septic/diagonal_bangs
	name = "Diagonal Bangs"
	icon_state = "hair_diagonal_bangs"

/datum/sprite_accessory/hair/septic/gloomy_medium
	name = "Medium Gloomy Bangs"
	icon_state = "hair_gloomy_medium"

/datum/sprite_accessory/hair/septic/gloomy_long
	name = "Long Gloomy Bangs"
	icon_state = "hair_gloomy_long"

/datum/sprite_accessory/hair/septic/halfshave
	name = "Half-shaved 2"
	icon_state = "hair_halfshave"

/datum/sprite_accessory/hair/septic/halfshave_snout
	name = "Half-shaved 2 (clipped)"
	icon_state = "hair_halfshave_snout"

/datum/sprite_accessory/hair/septic/manbun
	name = "Manbun"
	icon_state = "hair_manbun"

/datum/sprite_accessory/hair/septic/baum
	name = "Baum"
	icon_state = "hair_baum"

/datum/sprite_accessory/hair/septic/bluntbangs
	name = "Blunt Bangs"
	icon_state = "hair_bluntbangs"

/datum/sprite_accessory/hair/septic/bluntbangs_alt
	name = "Blunt Bangs Alt"
	icon_state = "hair_bluntbangs_alt"

/datum/sprite_accessory/hair/septic/slightlymessy
	name = "Slightly Messy"
	icon_state = "hair_slightlymessy"

/datum/sprite_accessory/hair/septic/longsidepartstraight
	name = "Long Sideparted"
	icon_state = "hair_longsidepartstraight"

/datum/sprite_accessory/hair/septic/amazon
	name = "Amazon"
	icon_state = "hair_amazon"

/datum/sprite_accessory/hair/septic/halfshaved
	name = "Half-shaved Long"
	icon_state = "hair_halfshaved"

/datum/sprite_accessory/hair/septic/fortuneteller
	name = "Fortune Teller"
	icon_state = "hair_fortuneteller"

/datum/sprite_accessory/hair/septic/fortuneteller_alt
	name = "Fortune Teller Alt"
	icon_state = "hair_fortuneteller_alt"

/datum/sprite_accessory/hair/septic/combed
	name = "Combed"
	icon_state = "hair_combed"

/datum/sprite_accessory/hair/septic/combedbob
	name = "Combed Bob"
	icon_state = "hair_combedbob"

/datum/sprite_accessory/hair/septic/geisha
	name = "Geisha"
	icon_state = "hair_geisha"

/datum/sprite_accessory/hair/septic/cotton
	name = "Cotton"
	icon_state = "hair_cotton"

/datum/sprite_accessory/hair/septic/african_pigtails
	name = "African Pigtails"
	icon_state = "hair_africanpigtails"

/datum/sprite_accessory/hair/septic/froofylong
	name = "Froofy Long"
	icon_state = "hair_froofylong"

/datum/sprite_accessory/hair/septic/glammetal
	name = "Glam Metal"
	icon_state = "hair_glammetal"

/datum/sprite_accessory/hair/septic/astolfo
	name = "Astolfo"
	icon_state = "hair_astolfo"

/datum/sprite_accessory/hair/septic/afropuffdouble
	name = "Afropuff, Double"
	icon_state = "hair_afropuffdouble"

/datum/sprite_accessory/hair/septic/afropuffleft
	name = "Afropuff, Left"
	icon_state = "hair_afropuffleft"

/datum/sprite_accessory/hair/septic/afropuffright
	name = "Afropuff, Right"
	icon_state = "hair_afropuffright"

/datum/sprite_accessory/hair/septic/longdtails
	name = "Big Tails"
	icon_state = "hair_longdtails"

/datum/sprite_accessory/hair/septic/quadcurls
	name = "Quad Curls"
	icon_state = "hair_quadcurls"

/datum/sprite_accessory/hair/septic/slime_tendrils
	name = "Slime Tendrils"
	icon_state = "hair_slimetendrils"

/datum/sprite_accessory/hair/septic/slime_tendrils_alt
	name = "Slime Tendrils Alt"
	icon_state = "hair_slimetendrils_alt"

/datum/sprite_accessory/hair/septic/slime_spikes
	name = "Slime Spikes"
	icon_state = "hair_slimespikes"

/datum/sprite_accessory/hair/septic/slime_droplet
	name = "Slime Droplet"
	icon_state = "hair_slimedroplet"

/datum/sprite_accessory/hair/septic/slime_droplet_alt
	name = "Slime Droplet Alt"
	icon_state = "hair_slimedroplet_alt"

/datum/sprite_accessory/hair/septic/newyou
	name = "New You"
	icon_state = "hair_newyou"

/datum/sprite_accessory/hair/septic/postal
	name = "Postal"
	icon_state = "hair_postal"


code:
/datum/sprite_accessory/head_accessory
	icon = 'modular_septic/icons/mob/human/sprite_accessory/head_accessory.dmi'
	key = "head_acc"
	generic = "Head Accessory"
	relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
	genetic = TRUE

/datum/sprite_accessory/head_accessory/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if((H.head && (H.head.flags_inv & HIDEHAIR)) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
		return TRUE

/datum/sprite_accessory/head_accessory/none
	name = "None"
	icon_state = "none"
	color_src = null
	factual = FALSE

/datum/sprite_accessory/head_accessory/sylveon_bow
	name = "Sylveon Head Bow"
	icon_state = "sylveon_bow"
	recommended_species = list(SPECIES_SYNTHMAMMAL, SPECIES_MAMMAL, SPECIES_WEREWOLF, SPECIES_WERECAT, SPECIES_HUMAN, SPECIES_SYNTHHUMAN, SPECIES_FELINE, SPECIES_HUMANOID)
	relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
	color_src = USE_MATRIXED_COLORS


code:
/datum/sprite_accessory/horns
	key = "horns"
	generic = "Horns"
	relevant_layers = list(BODY_FRONT_LAYER)
	recommended_species = list(SPECIES_LIZARD, SPECIES_LIZARD_ASH, SPECIES_LIZARD_SILVER, SPECIES_MAMMAL, SPECIES_SYNTHMAMMAL)
	icon = 'modular_septic/icons/mob/human/sprite_accessory/horns.dmi'
	default_color = "555555"
	genetic = TRUE
	organ_type = /obj/item/organ/external/horns

/datum/sprite_accessory/horns/get_preview_color()
	switch(color_src)
		if(COLOR_SRC_MATRIXED, USE_MATRIXED_COLORS)
			return list(COLOR_WHITE, COLOR_WHITE, COLOR_WHITE)
		else
			return COLOR_WHITE

/datum/sprite_accessory/horns/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if((H.head && (H.head.flags_inv & HIDEHAIR)) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
		return TRUE

/datum/sprite_accessory/horns/angler
	default_color = DEFAULT_SECONDARY

/datum/sprite_accessory/horns/ram
	name = "Ram"
	icon_state = "ram"

/datum/sprite_accessory/horns/guilmon
	name = "Guilmon"
	icon_state = "guilmon"

/datum/sprite_accessory/horns/drake
	name = "Drake"
	icon_state = "drake"

/datum/sprite_accessory/horns/knight
	name = "Knight"
	icon_state = "knight"


code:
/******************************************
************** IPC SCREENS ****************
*******************************************/
/datum/sprite_accessory/screen
	icon = 'modular_septic/icons/mob/human/sprite_accessory/ipc_screens.dmi'
	color_src = null
	key = "ipc_screen"
	generic = "Screen"
	recommended_species = list(SPECIES_IPC)
	relevant_layers = list(BODY_ADJ_LAYER)
	genetic = FALSE

/datum/sprite_accessory/screen/blank
	name = "Blank"
	icon_state = "blank"

/datum/sprite_accessory/screen/pink
	name = "Pink"
	icon_state = "pink"

/datum/sprite_accessory/screen/green
	name = "Green"
	icon_state = "green"

/datum/sprite_accessory/screen/red
	name = "Red"
	icon_state = "red"

/datum/sprite_accessory/screen/blue
	name = "Blue"
	icon_state = "blue"

/datum/sprite_accessory/screen/yellow
	name = "Yellow"
	icon_state = "yellow"

/datum/sprite_accessory/screen/shower
	name = "Shower"
	icon_state = "shower"

/datum/sprite_accessory/screen/nature
	name = "Nature"
	icon_state = "nature"

/datum/sprite_accessory/screen/eight
	name = "Eight"
	icon_state = "eight"

/datum/sprite_accessory/screen/goggles
	name = "Goggles"
	icon_state = "goggles"

/datum/sprite_accessory/screen/heart
	name = "Heart"
	icon_state = "heart"

/datum/sprite_accessory/screen/monoeye
	name = "Mono eye"
	icon_state = "monoeye"

/datum/sprite_accessory/screen/breakout
	name = "Breakout"
	icon_state = "breakout"

/datum/sprite_accessory/screen/purple
	name = "Purple"
	icon_state = "purple"

/datum/sprite_accessory/screen/scroll
	name = "Scroll"
	icon_state = "scroll"

/datum/sprite_accessory/screen/console
	name = "Console"
	icon_state = "console"

/datum/sprite_accessory/screen/rgb
	name = "RGB"
	icon_state = "rgb"

/datum/sprite_accessory/screen/golglider
	name = "Gol Glider"
	icon_state = "golglider"

/datum/sprite_accessory/screen/rainbow
	name = "Rainbow"
	icon_state = "rainbow"

/datum/sprite_accessory/screen/sunburst
	name = "Sunburst"
	icon_state = "sunburst"

/datum/sprite_accessory/screen/static
	name = "Static"
	icon_state = "static"

//Oracle Station sprites

/datum/sprite_accessory/screen/bsod
	name = "BSOD"
	icon_state = "bsod"

/datum/sprite_accessory/screen/redtext
	name = "Red Text"
	icon_state = "redtext"
	color_src = 0

/datum/sprite_accessory/screen/sinewave
	name = "Sine wave"
	icon_state = "sinewave"

/datum/sprite_accessory/screen/squarewave
	name = "Square wave"
	icon_state = "squarwave"

/datum/sprite_accessory/screen/ecgwave
	name = "ECG wave"
	icon_state = "ecgwave"

/datum/sprite_accessory/screen/eyes
	name = "Eyes"
	icon_state = "eyes"

/datum/sprite_accessory/screen/textdrop
	name = "Text drop"
	icon_state = "textdrop"

/datum/sprite_accessory/screen/stars
	name = "Stars"
	icon_state = "stars"

/******************************************
************** IPC Antennas ***************
*******************************************/

/datum/sprite_accessory/ipc_antennae
	icon = 'modular_septic/icons/mob/human/sprite_accessory/ipc_antennaes.dmi'
	color_src = USE_ONE_COLOR
	default_color = DEFAULT_SECONDARY
	recommended_species = list("ipc")
	key = "ipc_antennae"
	generic = "IPC Antenna"
	relevant_layers = list(BODY_ADJ_LAYER)

/datum/sprite_accessory/ipc_antennae/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if((H.head && (H.head.flags_inv & HIDEHAIR)) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
		return TRUE

/datum/sprite_accessory/ipc_antennae/none
	name = "None"
	icon_state = "None"
	recommended_species = null

/datum/sprite_accessory/ipc_antennae/ipc_antennaee
	name = "Angled Antennae"
	icon_state = "antennae"

/datum/sprite_accessory/ipc_antennae/tvantennae
	name = "TV Antennae"
	icon_state = "tvantennae"

/datum/sprite_accessory/ipc_antennae/cyberhead
	name = "Cyberhead"
	icon_state = "cyberhead"

/datum/sprite_accessory/ipc_antennae/antlers
	name = "Antlers"
	icon_state = "antlers"

/datum/sprite_accessory/ipc_antennae/crowned
	name = "Crowned"
	icon_state = "crowned"

//Chasises - snowflake phantom accessory for choosing chassises
/datum/sprite_accessory/ipc_chassis
	icon = null
	icon_state = "ipc"
	color_src = null
	factual = FALSE
	body_zone = BODY_ZONE_CHEST
	key = "ipc_chassis"
	generic = "Chassis Type"

/datum/sprite_accessory/ipc_chassis/mcgreyscale
	name = "Morpheus Cyberkinetics(Greyscale)"
	icon_state = "mcgipc"
	color_src = 1 //Here it's used to tell apart greyscalling

/datum/sprite_accessory/ipc_chassis/bishopcyberkinetics
	name = "Bishop Cyberkinetics"
	icon_state = "bshipc"

/datum/sprite_accessory/ipc_chassis/bishopcyberkinetics2
	name = "Bishop Cyberkinetics 2.0"
	icon_state = "bs2ipc"

/datum/sprite_accessory/ipc_chassis/hephaestussindustries
	name = "Hephaestus Industries"
	icon_state = "hsiipc"

/datum/sprite_accessory/ipc_chassis/hephaestussindustries2
	name = "Hephaestus Industries 2.0"
	icon_state = "hi2ipc"

/datum/sprite_accessory/ipc_chassis/shellguardmunitions
	name = "Shellguard Munitions Standard Series"
	icon_state = "sgmipc"

/datum/sprite_accessory/ipc_chassis/wardtakahashimanufacturing
	name = "Ward-Takahashi Manufacturing"
	icon_state = "wtmipc"

/datum/sprite_accessory/ipc_chassis/xionmanufacturinggroup
	name = "Xion Manufacturing Group"
	icon_state = "xmgipc"

/datum/sprite_accessory/ipc_chassis/xionmanufacturinggroup2
	name = "Xion Manufacturing Group 2.0"
	icon_state = "xm2ipc"

/datum/sprite_accessory/ipc_chassis/zenghupharmaceuticals
	name = "Zeng-Hu Pharmaceuticals"
	icon_state = "zhpipc"


code:
/datum/sprite_accessory/moth_antennae
	generic = "Insect Antennae"
	key = "moth_antennae"
	recommended_species = list(SPECIES_MOTH, SPECIES_INSECT)
	relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
	genetic = TRUE

/datum/sprite_accessory/moth_antennae/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if((H.head && (H.head.flags_inv & HIDEHAIR)) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
		return TRUE

//thx fulp lmao
/datum/sprite_accessory/moth_antennae/rosy
	icon = 'modular_septic/icons/mob/human/sprite_accessory/moth_antennas.dmi'
	name = "Rosy"
	icon_state = "rosy"

/datum/sprite_accessory/moth_antennae/dreamhead
	icon = 'modular_septic/icons/mob/human/sprite_accessory/moth_antennas.dmi'
	name = "Dreamhead"
	icon_state = "dreamhead"

/datum/sprite_accessory/moth_antennae/delirious
	icon = 'modular_septic/icons/mob/human/sprite_accessory/moth_antennas.dmi'
	name = "Delirious"
	icon_state = "delirious"

/datum/sprite_accessory/moth_antennae/feathery
	icon = 'modular_septic/icons/mob/human/sprite_accessory/moth_antennas.dmi'
	name = "Feathery"
	icon_state = "feathery"

/datum/sprite_accessory/moth_antennae/brown
	icon = 'modular_septic/icons/mob/human/sprite_accessory/moth_antennas.dmi'
	name = "Brown"
	icon_state = "brown"

/datum/sprite_accessory/moth_antennae/plasmafire
	icon = 'modular_septic/icons/mob/human/sprite_accessory/moth_antennas.dmi'
	name = "Plasmafire"
	icon_state = "plasmafire"

/datum/sprite_accessory/moth_antennae/aspen
	icon = 'modular_septic/icons/mob/human/sprite_accessory/moth_antennas.dmi'
	name = "Aspen"
	icon_state = "aspen"


code:
/datum/sprite_accessory/neck_accessory
	icon = 'modular_septic/icons/mob/human/sprite_accessory/neck_accessory.dmi'
	key = "neck_acc"
	generic = "Neck Accessory"
	body_zone = BODY_ZONE_PRECISE_NECK
	relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
	genetic = TRUE

/datum/sprite_accessory/neck_accessory/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if(H.wear_suit && (HAS_TRAIT(H, TRAIT_HIDING_MUTANTPARTS) || (H.wear_suit.flags_inv & HIDEJUMPSUIT)))
		return TRUE

/datum/sprite_accessory/neck_accessory/none
	name = "None"
	icon_state = "none"
	color_src = null
	factual = FALSE

/datum/sprite_accessory/neck_accessory/sylveon_bow
	name = "Sylveon Neck Bow"
	icon_state = "sylveon_bow"
	recommended_species = list(SPECIES_SYNTHMAMMAL, SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTHHUMAN, SPECIES_FELINE, SPECIES_HUMANOID)
	relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
	color_src = USE_MATRIXED_COLORS


code:
/datum/sprite_accessory/skrell_hair
	icon = 'modular_septic/icons/mob/human/sprite_accessory/skrell_hair.dmi'
	generic = "Skrell Headtails"
	key = "skrell_hair"
	color_src = USE_ONE_COLOR
	recommended_species = list(SPECIES_SKRELL)
	relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
	genetic = TRUE

/datum/sprite_accessory/skrell_hair/is_hidden(mob/living/carbon/human/H, obj/item/bodypart/BP)
	. = ..()
	if(body_zone && !BP?.advanced_rendering)
		return TRUE
	if((H.head && (H.head.flags_inv & HIDEHAIR)) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
		return TRUE

/datum/sprite_accessory/skrell_hair/long
	name = "Female"
	icon_state = "long"

/datum/sprite_accessory/skrell_hair/short
	name = "Male"
	icon_state = "short"