anchor.diff: -// This code handles different species in the game.
  -
   GLOBAL_LIST_EMPTY(roundstart_races)
   
  +/**
  +  * # species datum
  +  *
  +  * Datum that handles different species in the game.
  +  *
  +  * This datum handles species in the game, such as lizardpeople, mothmen, zombies, skeletons, etc.
  +  * It is used in [carbon humans][mob/living/carbon/human] to determine various things about them, like their food preferences, if they have biological genders, their damage resistances, and more.
  +  *
  +  */
   /datum/species
  -	var/id	// if the game needs to manually check your race to do something not included in a proc here, it will use this
  -	var/limbs_id		//this is used if you want to use a different species limb sprites. Mainly used for angels as they look like humans.
  -	var/name	// this is the fluff name. these will be left generic (such as 'Lizardperson' for the lizard race) so servers can change them to whatever
  -	var/default_color = "#FFF"	// if alien colors are disabled, this is the color that will be used by that race
  -
  -	var/sexes = 1		// whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows
  -
  +	///If the game needs to manually check your race to do something not included in a proc here, it will use this.
  +	var/id
  +	//This is used if you want to use a different species' limb sprites.
  +	var/limbs_id
  +	///This is the fluff name. They are displayed on health analyzers and in the character setup menu. Leave them generic for other servers to customize.
  +	var/name
  +	// Default color. If mutant colors are disabled, this is the color that will be used by that race.
  +	var/default_color = "#FFF"
  +
  +	///Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows
  +	var/sexes = TRUE
  +
  +	///Clothing offsets. If a species has a different body than other species, you can offset clothing so they look less weird.
   	var/list/offset_features = list(OFFSET_UNIFORM = list(0,0), OFFSET_ID = list(0,0), OFFSET_GLOVES = list(0,0), OFFSET_GLASSES = list(0,0), OFFSET_EARS = list(0,0), OFFSET_SHOES = list(0,0), OFFSET_S_STORE = list(0,0), OFFSET_FACEMASK = list(0,0), OFFSET_HEAD = list(0,0), OFFSET_FACE = list(0,0), OFFSET_BELT = list(0,0), OFFSET_BACK = list(0,0), OFFSET_SUIT = list(0,0), OFFSET_NECK = list(0,0))
   
  -	var/hair_color	// this allows races to have specific hair colors... if null, it uses the H's hair/facial hair colors. if "mutcolor", it uses the H's mutant_color
  -	var/hair_alpha = 255	// the alpha used by the hair. 255 is completely solid, 0 is transparent.
  -
  -	var/use_skintones = 0	// does it use skintones or not? (spoiler alert this is only used by humans)
  -	var/exotic_blood = ""	// If your race wants to bleed something other than bog standard blood, change this to reagent id.
  -	var/exotic_bloodtype = "" //If your race uses a non standard bloodtype (A+, O-, AB-, etc)
  -	var/meat = /obj/item/reagent_containers/food/snacks/meat/slab/human //What the species drops on gibbing
  +	///This allows races to have specific hair colors. If null, it uses the H's hair/facial hair colors. If "mutcolor", it uses the H's mutant_color. If "fixedmutcolor", it uses fixedmutcolor
  +	var/hair_color
  +	///The alpha used by the hair. 255 is completely solid, 0 is invisible.
  +	var/hair_alpha = 255
  +
  +	///Does the species use skintones or not? As of now only used by humans.
  +	var/use_skintones = FALSE
  +	///If your race bleeds something other than bog standard blood, change this to reagent id. For example, ethereals bleed liquid electricity.
  +	var/exotic_blood = ""
  +	///If your race uses a non standard bloodtype (A+, O-, AB-, etc). For example, lizards have L type blood.
  +	var/exotic_bloodtype = ""
  +	///What the species drops when gibbed by a gibber machine.
  +	var/meat = /obj/item/reagent_containers/food/snacks/meat/slab/human
  +	///What skin the species drops when gibbed by a gibber machine.
   	var/skinned_type
  +	///Bitfield for food types that the species likes, giving them a mood boost. Lizards like meat, for example.
   	var/liked_food = NONE
  +	///Bitfield for food types that the species dislikes, giving them disgust. Humans hate raw food, for example.
   	var/disliked_food = GROSS
  +	///Bitfield for food types that the species absolutely hates, giving them even more disgust than disliked food. Meat is "toxic" to moths, for example.
   	var/toxic_food = TOXIC
  -	var/list/no_equip = list()	// slots the race can't equip stuff to
  -	var/nojumpsuit = 0	// this is sorta... weird. it basically lets you equip stuff that usually needs jumpsuits without one, like belts and pockets and ids
  -	var/say_mod = "says"	// affects the speech message
  +	///Inventory slots the race can't equip stuff to. Golems cannot wear jumpsuits, for example.
  +	var/list/no_equip = list()
  +	/// Allows the species to equip items that normally require a jumpsuit without having one equipped. Used by golems.
  +	var/nojumpsuit = FALSE
  +	///Affects the speech message, for example: Motharula flutters, "My speech message is flutters!"
  +	var/say_mod = "says"
  +	///What languages this species can understand and say. Use a [language holder datum][/datum/language_holder] in this var.
   	var/species_language_holder = /datum/language_holder
  -	var/list/default_features = list() // Default mutant bodyparts for this species. Don't forget to set one for every mutant bodypart you allow this species to have.
  -	var/list/mutant_bodyparts = list() 	// Visible CURRENT bodyparts that are unique to a species. DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK SHIT UP! Changes to this list for non-species specific bodyparts (ie cat ears and tails) should be assigned at organ level if possible. Layer hiding is handled by handle_mutant_bodyparts() below.
  -	var/list/mutant_organs = list()		//Internal organs that are unique to this race.
  -	var/speedmod = 0	// this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster
  -	var/armor = 0		// overall defense for the race... or less defense, if it's negative.
  -	var/brutemod = 1	// multiplier for brute damage
  -	var/burnmod = 1		// multiplier for burn damage
  -	var/coldmod = 1		// multiplier for cold damage
  -	var/heatmod = 1		// multiplier for heat damage
  -	var/stunmod = 1		// multiplier for stun duration
  -	var/attack_type = BRUTE //Type of damage attack does
  -	var/punchdamagelow = 1       //lowest possible punch damage. if this is set to 0, punches will always miss
  -	var/punchdamagehigh = 10      //highest possible punch damage
  -	var/punchstunthreshold = 10//damage at which punches from this race will stun //yes it should be to the attacked race but it's not useful that way even if it's logical
  -	var/siemens_coeff = 1 //base electrocution coefficient
  -	var/damage_overlay_type = "human" //what kind of damage overlays (if any) appear on our species when wounded?
  -	var/fixed_mut_color = "" //to use MUTCOLOR with a fixed color that's independent of dna.feature["mcolor"]
  -	var/inert_mutation 	= DWARFISM //special mutation that can be found in the genepool. Dont leave empty or changing species will be a headache
  -	var/deathsound //used to set the mobs deathsound on species change
  -	var/list/special_step_sounds //Sounds to override barefeet walkng
  -	var/grab_sound //Special sound for grabbing
  -	var/datum/outfit/outfit_important_for_life /// A path to an outfit that is important for species life e.g. plasmaman outfit
  -
  -	var/flying_species = FALSE //is a flying species, just a check for some things
  -	var/datum/action/innate/flight/fly //the actual flying ability given to flying species
  -	var/wings_icon = "Angel" //the icon used for the wings
  +	/// Default mutant bodyparts for this species, like horns. Don't forget to set one for every mutant bodypart you allow this species to have.
  +	var/list/default_features = list()
  +	/// Visible CURRENT bodyparts that are unique to a species. DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK SHIT UP! Changes to this list for non-species specific bodyparts (ie cat ears and tails) should be assigned at organ level if possible. Layer hiding is handled by [datum/species/handle_mutant_bodyparts()] below.
  +	var/list/mutant_bodyparts = list()
  +	///Internal organs that are unique to this race, like a tail.
  +	var/list/mutant_organs = list()
  +	///Multiplier for the race's speed. Positive numbers make it move slower, negative numbers make it move faster.
  +	var/speedmod = 0
  +	///Percentage modifier for overall defense of the race, or less defense, if it's negative.
  +	var/armor = 0
  +	///multiplier for brute damage
  +	var/brutemod = 1
  +	///multiplier for burn damage
  +	var/burnmod = 1
  +	///multiplier for damage from cold temperature
  +	var/coldmod = 1
  +	///multiplier for damage from hot temperature
  +	var/heatmod = 1
  +	///multiplier for stun durations
  +	var/stunmod = 1
  +	///Type of damage attack does. Ethereals attack with burn damage for example.
  +	var/attack_type = BRUTE
  +	///Lowest possible punch damage this species can give. If this is set to 0, punches will always miss.
  +	var/punchdamagelow = 1
  +	///Highest possible punch damage this species can give.
  +	var/punchdamagehigh = 10
  +	///Damage at which punches from this race will stun
  +	var/punchstunthreshold = 10 //yes it should be to the attacked race but it's not useful that way even if it's logical
  +	///Base electrocution coefficient.  Basically a multiplier for damage from electrocutions.
  +	var/siemens_coeff = 1
  +	///What kind of damage overlays (if any) appear on our species when wounded? If this is "", does not add an overlay.
  +	var/damage_overlay_type = "human"
  +	///To use MUTCOLOR with a fixed color that's independent of the mcolor feature in DNA.
  +	var/fixed_mut_color = ""
  +	///Special mutation that can be found in the genepool exclusively in this species. Dont leave empty or changing species will be a headache
  +	var/inert_mutation 	= DWARFISM
  +	///Used to set the mob's deathsound upon species change
  +	var/deathsound
  +	///Sounds to override barefeet walking
  +	var/list/special_step_sounds
  +	///Special sound for grabbing
  +	var/grab_sound
  +	/// A path to an outfit that is important for species life e.g. plasmaman outfit
  +	var/datum/outfit/outfit_important_for_life
  +
  +	///Is this species a flying species? Used as an easy check for some things
  +	var/flying_species = FALSE
  +	///The actual flying ability given to flying species
  +	var/datum/action/innate/flight/fly
  +	///The icon used for the wings
  +	var/wings_icon = "Angel"
   
   	/// The natural temperature for a body
   	var/bodytemp_normal = BODYTEMP_NORMAL
  
positive.code: 
  	H.apply_overlay(HAIR_LAYER)
  
  /datum/species/proc/handle_body(mob/living/carbon/human/H)
  	H.remove_overlay(BODY_LAYER)
  
  
negative.code: 
  	return randname
  
  /**
    * Copies some vars and properties over that should be kept when creating a copy of this species.
    *
    * Used by slimepeople to copy themselves, and by the DNA datum to hardset DNA to a species
    * Arguments:
    * * old_species - The species that the carbon used to be before copying
    */
  /datum/species/proc/copy_properties_from(datum/species/old_species)
  	return
  
  /**
    * Checks if this carbon is allowed to be a certain job or rank.
    *
    * Override this locally if you want to define when this species qualifies for what rank if human authority is enforced.
    * Arguments:
    * * rank - Rank to be tested.
    * * features - Features of a species that factors into rank qualifications, like a human with cat ears being unable to join command positions.
    */
  /datum/species/proc/qualifies_for_rank(rank, list/features)
  	if(rank in GLOB.command_positions)
  		return 0
  