/tg/ Station 13 - Modules - TypesVar Details - Proc Details

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 to determine various things about them, like their food preferences, if they have biological genders, their damage resistances, and more.

Vars

ai_controlled_speciesThis supresses the "dosen't appear to be himself" examine text for if the mob is run by an AI controller. Should be used on any NPC human subtypes. Monkeys are the prime example.
blood_deficiency_drain_rateThe rate at which blood is passively drained by having the blood deficiency quirk. Some races such as slimepeople can regen their blood at different rates so this is to account for that
bodypart_overridesThe bodyparts this species uses. assoc of bodypart string - bodypart type. Make sure all the fucking entries are in or I'll skin you alive.
bodytemp_autorecovery_minMinimum amount of kelvin moved toward normal body temperature per tick.
bodytemp_cold_damage_limitThe body temperature limit the body can take before it starts taking damage from cold.
bodytemp_heat_damage_limitThe body temperature limit the body can take before it starts taking damage from heat.
bodytemp_normalThe natural temperature for a body
breathidWhat gas does this species breathe? Used by suffocation screen alerts, most of actual gas breathing is handled by mutantlungs. See [life.dm][code/modules/mob/living/carbon/human/life.dm]
changesource_flagsBitflag that controls what in game ways something can select this species as a spawnable source, such as magic mirrors. See mob defines for possible sources.
coldmodmultiplier for damage from cold temperature
damage_modifierFlat modifier on all damage taken via apply_damage (so being punched, shot, etc.) IE: 10 = 10% less damage taken.
death_soundUsed to set the mob's death_sound upon species change
digitigrade_customizationNever, Optional, or Forced digi legs?
dust_animWhat anim to use for dusting
examine_limb_idThis is used for children, it will determine their default limb ID for use of examine. See [/mob/living/carbon/human/proc/examine].
exotic_bloodIf your race bleeds something other than bog standard blood, change this to reagent id. For example, ethereals bleed liquid electricity.
exotic_bloodtypeIf your race uses a non standard bloodtype (A+, O-, AB-, etc). For example, lizards have L type blood.
external_organsList of external organs to generate like horns, frills, wings, etc. list(typepath of organ = "Round Beautiful BDSM Snout"). Still WIP
facial_hair_alphaThe alpha used by the facial hair. 255 is completely solid, 0 is invisible.
family_heirloomsList of family heirlooms this species can get with the family heirloom quirk. List of types.
fire_overlayThe icon_state of the fire overlay added when sufficently ablaze and standing. see onfire.dmi
fixed_mut_colorTo use MUTCOLOR with a fixed color that's independent of the mcolor feature in DNA.
gib_animWhat anim to use for gibbing
grab_soundSpecial sound for grabbing
hair_alphaThe alpha used by the hair. 255 is completely solid, 0 is invisible.
hair_color_modeThis allows races to have specific hair colors. If null, it uses the mob's hair/facial hair colors. If USE_MUTANT_COLOR, it uses the mob's mutant_color. If USE_FIXED_MUTANT_COLOR, it uses fixedmutcolor
heatmodmultiplier for damage from hot temperature
idIf the game needs to manually check your race to do something not included in a proc here, it will use this.
inert_mutationSpecial mutation that can be found in the genepool exclusively in this species. Dont leave empty or changing species will be a headache
inherent_biotypesList of biotypes the mob belongs to. Used by diseases.
inherent_factionsList of factions the mob gain upon gaining this species.
inherent_respiration_typeThe type of respiration the mob is capable of doing. Used by adjustOxyLoss.
inherent_traitsGeneric traits tied to having the species.
knife_butcher_resultsList of results you get from knife-butchering. null means you cant butcher it. Associated by resulting type - value of amount
max_bodypart_countThe maximum number of bodyparts this species can have.
meatWhat the species drops when gibbed by a gibber machine.
mutant_bodypartsVisible 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. Assoc values are defaults for given bodyparts, also modified by aforementioned organs. They also allow for faster '[]' list access versus 'in'. Other than that, they are useless right now. Layer hiding is handled by /datum/species/proc/handle_mutant_bodyparts below.
mutant_organsInternal organs that are unique to this race, like a tail. list(typepath of organ 1, typepath of organ 2)
mutantappendixReplaces default appendix with a different organ.
mutantbrainReplaces default brain with a different organ
mutantearsReplaces default ears with a different organ
mutanteyesReplaces default eyes with a different organ
mutantheartReplaces default heart with a different organ
mutantliverReplaces default liver with a different organ
mutantlungsReplaces default lungs with a different organ
mutantstomachReplaces default stomach with a different organ
mutanttongueReplaces default tongue with a different organ
nameThis is the fluff name. They are displayed on health analyzers and in the character setup menu. Leave them generic for other servers to customize.
no_equip_flagsflags for inventory slots the race can't equip stuff to. Golems cannot wear jumpsuits, for example.
outfit_important_for_lifeA path to an outfit that is important for species life e.g. plasmaman outfit
outfit_override_registryA list containing outfits that will be overridden in the species_equip_outfit proc. [Key = Typepath passed in] [Value = Typepath of outfit you want to equip for this specific species instead].
payday_modifiermultiplier for money paid at payday
plural_formThe formatting of the name of the species in plural context. Defaults to "[name]\s" if unset. Ex "[Plasmamen] are weak", "[Mothmen] are strong", "[Lizardpeople] don't like", "[Golems] hate"
preloadShould we preload this species's organs?
prevent_perspective_changeDo we try to prevent reset_perspective() from working? Useful for Dullahans to stop perspective changes when they're looking through their head.
properly_gainedWas on_species_gain ever actually called? Species code is really odd...
roundstart_changedWas the species changed from its original type at the start of the round?
sexesWhether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows
siemens_coeffBase electrocution coefficient. Basically a multiplier for damage from electrocutions.
skinned_typeWhat skin the species drops when gibbed by a gibber machine.
special_step_soundsSounds to override barefeet walking
species_cookieUnique cookie given by admins through prayers
species_language_holderWhat languages this species can understand and say. Use a language holder datum typepath in this var. Should never be null.
stunmodmultiplier for stun durations

Procs

apply_burn_woundsUsed to apply burn wounds on random limbs
body_temperature_alertsUsed to set alerts and debuffs based on body temperature vars:
body_temperature_coreUsed to stabilize the core temperature back to normal on living mobs
body_temperature_damageUsed to apply wounds and damage based on core/body temp vars:
body_temperature_skinUsed to normalize the skin temperature on living mobs
check_head_flagsChecks if the species has a head with these head flags, by default. Admittedly, this is a very weird and seemingly redundant proc, but it gets used by some preferences (such as hair style) to determine whether or not they are accessible.
check_roundstart_eligibleChecks if a species is eligible to be picked at roundstart.
copy_properties_fromCopies some vars and properties over that should be kept when creating a copy of this species.
create_fresh_bodyCreates body parts for the target completely from scratch based on the species
create_pref_biotypes_perksAdds adds any perks related to the species' inherent_biotypes flags.
create_pref_blood_perksAdds adds any perks related to the species' blood (or lack thereof).
create_pref_damage_perksAdds adds any perks related to sustaining damage. For example, brute damage vulnerability, or fire damage resistance.
create_pref_language_perkAdds in a language perk based on all the languages the species can speak by default (according to their language holder).
create_pref_organs_perksAdds any perks relating to inherent differences to this species' organs. This proc is only suitable for generic differences, like alcohol tolerance, or heat threshold for breathing.
create_pref_temperature_perksAdds adds any perks related to how the species deals with temperature.
create_pref_traits_perksAdds adds any perks related to the species' inherent_traits list.
create_pref_unique_perksUsed to add any species specific perks to the perk list.
get_featuresReturns a list of strings representing features this species has. Used by the preferences UI to know what buttons to show.
get_fixed_hair_colorGet what hair color is used by this species for a mob.
get_mutant_organ_type_for_slotGets the default mutant organ for the species based on the provided slot.
get_physical_attributesGets a description of the species' physical attributes. What makes playing as one different. Used in magic mirrors.
get_scream_soundReturns the species's scream sound.
get_species_descriptionGets a short description for the specices. Should be relatively succinct. Used in the preference menu.
get_species_dietTranslate the species liked foods from bitfields into strings and returns it in the form of an associated list.
get_species_loreGets the lore behind the type of species. Can be long. Used in the preference menu.
get_species_perksGenerates a list of "perks" related to this species (Postives, neutrals, and negatives) in the format of a list of lists. Used in the preference menu.
give_important_for_lifeEquip the outfit required for life. Replaces items currently worn.
go_baldMakes the target human bald.
handle_bodyHandles the body of a human
handle_body_temperatureBody temperature handler for species
handle_chemicalHandling special reagent interactions.
handle_environmentEnvironment handler for species
handle_environment_pressureHandle the air pressure of the environment
handle_mutant_bodypartsHandles the mutant bodyparts of a human
handle_radiationSpecies based handling for irradiation
harmThis proc handles punching damage. IMPORTANT: Our owner is the TARGET and not the USER in this proc. For whatever reason...
normalize_bloodNormalizes blood in a human if it is excessive. If it is above BLOOD_VOLUME_NORMAL, this will clamp it to that value. It will not give the human more blodo than they have less than this value.
on_owner_loginOwner login
on_species_gainProc called when a carbon becomes this species.
on_species_lossProc called when a carbon is no longer this species.
pre_equip_species_outfitEquips the necessary species-relevant gear before putting on the rest of the uniform.
prepare_human_for_previewGiven a human, will adjust it before taking a picture for the preferences UI. This should create a CONSISTENT result, so the icons don't randomly change.
random_nameGenerates a random name for a carbon.
randomize_active_underwearProc that will randomise the underwear (i.e. top, pants and socks) of a species' associated mob
randomize_active_underwear_onlyProc that will randomise the underwear (i.e. top, pants and socks) of a species' associated mob, but will not update the body right away.
randomize_featuresReturns a list of features, randomized, to be used by DNA
randomize_main_appearance_elementProc that will randomise the hair, or primary appearance element (i.e. for moths wings) of a species' associated mob
regenerate_organsCorrects organs in a carbon, removing ones it doesn't need and adding ones it does.
replace_bodyHandles replacing all of the bodyparts with their species version during set_species()

Var Details

ai_controlled_species

This supresses the "dosen't appear to be himself" examine text for if the mob is run by an AI controller. Should be used on any NPC human subtypes. Monkeys are the prime example.

blood_deficiency_drain_rate

The rate at which blood is passively drained by having the blood deficiency quirk. Some races such as slimepeople can regen their blood at different rates so this is to account for that

bodypart_overrides

The bodyparts this species uses. assoc of bodypart string - bodypart type. Make sure all the fucking entries are in or I'll skin you alive.

bodytemp_autorecovery_min

Minimum amount of kelvin moved toward normal body temperature per tick.

bodytemp_cold_damage_limit

The body temperature limit the body can take before it starts taking damage from cold.

bodytemp_heat_damage_limit

The body temperature limit the body can take before it starts taking damage from heat.

bodytemp_normal

The natural temperature for a body

breathid

What gas does this species breathe? Used by suffocation screen alerts, most of actual gas breathing is handled by mutantlungs. See [life.dm][code/modules/mob/living/carbon/human/life.dm]

changesource_flags

Bitflag that controls what in game ways something can select this species as a spawnable source, such as magic mirrors. See mob defines for possible sources.

coldmod

multiplier for damage from cold temperature

damage_modifier

Flat modifier on all damage taken via apply_damage (so being punched, shot, etc.) IE: 10 = 10% less damage taken.

death_sound

Used to set the mob's death_sound upon species change

digitigrade_customization

Never, Optional, or Forced digi legs?

dust_anim

What anim to use for dusting

examine_limb_id

This is used for children, it will determine their default limb ID for use of examine. See [/mob/living/carbon/human/proc/examine].

exotic_blood

If your race bleeds something other than bog standard blood, change this to reagent id. For example, ethereals bleed liquid electricity.

exotic_bloodtype

If your race uses a non standard bloodtype (A+, O-, AB-, etc). For example, lizards have L type blood.

external_organs

List of external organs to generate like horns, frills, wings, etc. list(typepath of organ = "Round Beautiful BDSM Snout"). Still WIP

facial_hair_alpha

The alpha used by the facial hair. 255 is completely solid, 0 is invisible.

family_heirlooms

List of family heirlooms this species can get with the family heirloom quirk. List of types.

fire_overlay

The icon_state of the fire overlay added when sufficently ablaze and standing. see onfire.dmi

fixed_mut_color

To use MUTCOLOR with a fixed color that's independent of the mcolor feature in DNA.

gib_anim

What anim to use for gibbing

grab_sound

Special sound for grabbing

hair_alpha

The alpha used by the hair. 255 is completely solid, 0 is invisible.

hair_color_mode

This allows races to have specific hair colors. If null, it uses the mob's hair/facial hair colors. If USE_MUTANT_COLOR, it uses the mob's mutant_color. If USE_FIXED_MUTANT_COLOR, it uses fixedmutcolor

heatmod

multiplier for damage from hot temperature

id

If the game needs to manually check your race to do something not included in a proc here, it will use this.

inert_mutation

Special mutation that can be found in the genepool exclusively in this species. Dont leave empty or changing species will be a headache

inherent_biotypes

List of biotypes the mob belongs to. Used by diseases.

inherent_factions

List of factions the mob gain upon gaining this species.

inherent_respiration_type

The type of respiration the mob is capable of doing. Used by adjustOxyLoss.

inherent_traits

Generic traits tied to having the species.

knife_butcher_results

List of results you get from knife-butchering. null means you cant butcher it. Associated by resulting type - value of amount

max_bodypart_count

The maximum number of bodyparts this species can have.

meat

What the species drops when gibbed by a gibber machine.

mutant_bodyparts

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. Assoc values are defaults for given bodyparts, also modified by aforementioned organs. They also allow for faster '[]' list access versus 'in'. Other than that, they are useless right now. Layer hiding is handled by /datum/species/proc/handle_mutant_bodyparts below.

mutant_organs

Internal organs that are unique to this race, like a tail. list(typepath of organ 1, typepath of organ 2)

mutantappendix

Replaces default appendix with a different organ.

mutantbrain

Replaces default brain with a different organ

mutantears

Replaces default ears with a different organ

mutanteyes

Replaces default eyes with a different organ

mutantheart

Replaces default heart with a different organ

mutantliver

Replaces default liver with a different organ

mutantlungs

Replaces default lungs with a different organ

mutantstomach

Replaces default stomach with a different organ

mutanttongue

Replaces default tongue with a different organ

name

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.

no_equip_flags

flags for inventory slots the race can't equip stuff to. Golems cannot wear jumpsuits, for example.

outfit_important_for_life

A path to an outfit that is important for species life e.g. plasmaman outfit

outfit_override_registry

A list containing outfits that will be overridden in the species_equip_outfit proc. [Key = Typepath passed in] [Value = Typepath of outfit you want to equip for this specific species instead].

payday_modifier

multiplier for money paid at payday

plural_form

The formatting of the name of the species in plural context. Defaults to "[name]\s" if unset. Ex "[Plasmamen] are weak", "[Mothmen] are strong", "[Lizardpeople] don't like", "[Golems] hate"

preload

Should we preload this species's organs?

prevent_perspective_change

Do we try to prevent reset_perspective() from working? Useful for Dullahans to stop perspective changes when they're looking through their head.

properly_gained

Was on_species_gain ever actually called? Species code is really odd...

roundstart_changed

Was the species changed from its original type at the start of the round?

sexes

Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows

siemens_coeff

Base electrocution coefficient. Basically a multiplier for damage from electrocutions.

skinned_type

What skin the species drops when gibbed by a gibber machine.

special_step_sounds

Sounds to override barefeet walking

Unique cookie given by admins through prayers

species_language_holder

What languages this species can understand and say. Use a language holder datum typepath in this var. Should never be null.

stunmod

multiplier for stun durations

Proc Details

apply_burn_wounds

Used to apply burn wounds on random limbs

This is called from body_temperature_damage when exposure to extream heat adds up and causes a wound. The wounds will increase in severity as the temperature increases. vars:

body_temperature_alerts

Used to set alerts and debuffs based on body temperature vars:

body_temperature_core

Used to stabilize the core temperature back to normal on living mobs

The metabolisim heats up the core of the mob trying to keep it at the normal body temp vars:

body_temperature_damage

Used to apply wounds and damage based on core/body temp vars:

body_temperature_skin

Used to normalize the skin temperature on living mobs

The core temp effects the skin, then the enviroment effects the skin, then we refect that back to the core. This happens even when dead so bodies revert to room temp over time. vars:

check_head_flags

Checks if the species has a head with these head flags, by default. Admittedly, this is a very weird and seemingly redundant proc, but it gets used by some preferences (such as hair style) to determine whether or not they are accessible.

check_roundstart_eligible

Checks if a species is eligible to be picked at roundstart.

Checks the config to see if this species is allowed to be picked in the character setup menu. Used by /proc/generate_selectable_species_and_languages.

copy_properties_from

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:

create_fresh_body

Creates body parts for the target completely from scratch based on the species

create_pref_biotypes_perks

Adds adds any perks related to the species' inherent_biotypes flags.

Returns a list containing perks, or an empty list.

create_pref_blood_perks

Adds adds any perks related to the species' blood (or lack thereof).

Returns a list containing perks, or an empty list.

create_pref_damage_perks

Adds adds any perks related to sustaining damage. For example, brute damage vulnerability, or fire damage resistance.

Returns a list containing perks, or an empty list.

create_pref_language_perk

Adds in a language perk based on all the languages the species can speak by default (according to their language holder).

Returns a list containing perks, or an empty list.

create_pref_organs_perks

Adds any perks relating to inherent differences to this species' organs. This proc is only suitable for generic differences, like alcohol tolerance, or heat threshold for breathing.

Returns a list containing perks, or an empty list.

create_pref_temperature_perks

Adds adds any perks related to how the species deals with temperature.

Returns a list containing perks, or an empty list.

create_pref_traits_perks

Adds adds any perks related to the species' inherent_traits list.

Returns a list containing perks, or an empty list.

create_pref_unique_perks

Used to add any species specific perks to the perk list.

Returns null by default. When overriding, return a list of perks.

get_features

Returns a list of strings representing features this species has. Used by the preferences UI to know what buttons to show.

get_fixed_hair_color

Get what hair color is used by this species for a mob.

Arguments

Returns a color string or null.

get_mutant_organ_type_for_slot

Gets the default mutant organ for the species based on the provided slot.

get_physical_attributes

Gets a description of the species' physical attributes. What makes playing as one different. Used in magic mirrors.

Returns a string.

get_scream_sound

Returns the species's scream sound.

get_species_description

Gets a short description for the specices. Should be relatively succinct. Used in the preference menu.

Returns a string.

get_species_diet

Translate the species liked foods from bitfields into strings and returns it in the form of an associated list.

Returns a list, or null if they have no diet.

get_species_lore

Gets the lore behind the type of species. Can be long. Used in the preference menu.

Returns a list of strings. Between each entry in the list, a newline will be inserted, for formatting.

get_species_perks

Generates a list of "perks" related to this species (Postives, neutrals, and negatives) in the format of a list of lists. Used in the preference menu.

"Perk" format is as followed: list( SPECIES_PERK_TYPE = type of perk (postiive, negative, neutral - use the defines) SPECIES_PERK_ICON = icon shown within the UI SPECIES_PERK_NAME = name of the perk on hover SPECIES_PERK_DESC = description of the perk on hover )

Returns a list of lists. The outer list is an assoc list of [perk type]s to a list of perks. The innter list is a list of perks. Can be empty, but won't be null.

give_important_for_life

Equip the outfit required for life. Replaces items currently worn.

go_bald

Makes the target human bald.

Arguments:

handle_body

Handles the body of a human

Handles lipstick, having no eyes, eye color, undergarnments like underwear, undershirts, and socks, and body layers. Calls handle_mutant_bodyparts Arguments:

handle_body_temperature

Body temperature handler for species

These procs manage body temp, bamage, and alerts Some of these will still fire when not alive to balance body temp to the room temp. vars:

handle_chemical

Handling special reagent interactions.

Return null continue running the normal on_mob_life() for that reagent. Return COMSIG_MOB_STOP_REAGENT_CHECK to not run the normal metabolism effects.

NOTE: If you return COMSIG_MOB_STOP_REAGENT_CHECK, that reagent will not be removed liike normal! You must handle it manually.

handle_environment

Environment handler for species

vars:

handle_environment_pressure

Handle the air pressure of the environment

handle_mutant_bodyparts

Handles the mutant bodyparts of a human

Handles the adding and displaying of, layers, colors, and overlays of mutant bodyparts and accessories. Handles digitigrade leg displaying and squishing. Arguments:

handle_radiation

Species based handling for irradiation

Arguments:

harm

This proc handles punching damage. IMPORTANT: Our owner is the TARGET and not the USER in this proc. For whatever reason...

normalize_blood

Normalizes blood in a human if it is excessive. If it is above BLOOD_VOLUME_NORMAL, this will clamp it to that value. It will not give the human more blodo than they have less than this value.

on_owner_login

Owner login

A simple proc to be overwritten if something needs to be done when a mob logs in. Does nothing by default.

Arguments:

on_species_gain

Proc called when a carbon becomes this species.

This sets up and adds/changes/removes things, qualities, abilities, and traits so that the transformation is as smooth and bugfree as possible. Produces a COMSIG_SPECIES_GAIN signal. Arguments:

on_species_loss

Proc called when a carbon is no longer this species.

This sets up and adds/changes/removes things, qualities, abilities, and traits so that the transformation is as smooth and bugfree as possible. Produces a COMSIG_SPECIES_LOSS signal. Arguments:

pre_equip_species_outfit

Equips the necessary species-relevant gear before putting on the rest of the uniform.

prepare_human_for_preview

Given a human, will adjust it before taking a picture for the preferences UI. This should create a CONSISTENT result, so the icons don't randomly change.

random_name

Generates a random name for a carbon.

This generates a random unique name based on a human's species and gender. Arguments:

randomize_active_underwear

Proc that will randomise the underwear (i.e. top, pants and socks) of a species' associated mob

randomize_active_underwear_only

Proc that will randomise the underwear (i.e. top, pants and socks) of a species' associated mob, but will not update the body right away.

randomize_features

Returns a list of features, randomized, to be used by DNA

randomize_main_appearance_element

Proc that will randomise the hair, or primary appearance element (i.e. for moths wings) of a species' associated mob

regenerate_organs

Corrects organs in a carbon, removing ones it doesn't need and adding ones it does.

Takes all organ slots, removes organs a species should not have, adds organs a species should have. can use replace_current to refresh all organs, creating an entirely new set.

Arguments:

replace_body

Handles replacing all of the bodyparts with their species version during set_species()