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

living

Vars

blood_volumehow much blood the mob has
body_maptext_height_offsetThe height offset of a mob's maptext due to their current size.
body_positionVariable to track the body position of a mob, regardgless of the actual angle of rotation (usually matching it, but not necessarily).
body_position_pixel_x_offsetThe x amount a mob's sprite should be offset due to the current position they're in
body_position_pixel_y_offsetThe y amount a mob's sprite should be offset due to the current position they're in or size (e.g. lying down moves your sprite down)
body_temp_changesList of changes to body temperature, used by desease symtoms like fever
brutelossBrutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage)
bubble_iconused to prevent spam with smoke reagent reaction on mob. what icon the mob uses for speechbubbles
butcher_difficultyeffectiveness prob. is modified negatively by this amount; positive numbers make it more difficult, negative ones make it easier
butcher_resultsthese will be yielded from butchering with a probability chance equal to the butcher item's effectiveness
can_be_heldwhether this can be picked up and held.
can_buckle_toIs this mob allowed to be buckled/unbuckled to/from things?
combat_modeIf combat mode is on or not
crit_thresholdwhen the mob goes from "normal" to crit
current_sizeTracks the current size of the mob in relation to its original size. Use update_transform(resize) to change it.
current_turf_slowdownwhat multiplicative slowdown we get from turfs currently.
death_messageA message sent when the mob dies, with the *deathgasp emote
death_soundA sound sent when the mob dies, with the *deathgasp emote
default_num_handsHow many hands does this mob have by default. This shouldn't change at runtime.
default_num_legsHow many legs does this mob have by default. This shouldn't change at runtime.
diseaseslist of all diseases in a mob
fire_stack_decay_rateRate at which fire stacks should decay from this mob
firelossBurn damage caused by being way too hot, too cold or burnt.
fov_traitsLazy list of FOV traits that will apply a FOV view when handled.
fov_viewFOV view that is applied from either nativeness or traits
gravity_stateWhat our current gravity state is. Used to avoid duplicate animates and such
guaranteed_butcher_resultsthese will always be yielded from butchering
hardcrit_thresholdWhen the mob enters hard critical state and is fully incapacitated.
has_limbsdoes the mob have distinct limbs?(arms,legs, chest,head)
head_iconwhat it looks like when the mob is held on your head
healthThe mob's current health.
health_doll_iconif this exists AND the normal sprite is bigger than 32x32, this is the replacement icon state (because health doll size limitations). the icon will always be screen_gen.dmi
held_lhleft hand icon for holding mobs
held_rhright hand icon for holding mobs
held_stateicon_state for holding mobs.
held_w_classThe w_class of the holder when held.
imaginary_groupContains the owner and all imaginary friend mobs if they exist, otherwise null
incorporeal_moveAllows mobs to move through dense areas without restriction. For instance, in space or out of holder objects.
last_specialUsed by the resist verb, likely used to prevent players from bypassing next_move by logging in/out.
last_vent_dirThe last direction we moved in a vent. Used to make holding two directions feel nice
last_wordsused for database logging
limb_destroyerSets AI behavior that allows mobs to target and dismember limbs with their basic attack.
living_flagsGeneric bitflags for boolean conditions at the /mob/living level. Keep this for inherent traits of living types, instead of runtime-changeable ones.
lying_angleNumber of degrees of rotation of a mob. 0 means no rotation, up-side facing NORTH. 90 means up-side rotated to face EAST, and so on.
lying_prevValue of lying lying_angle before last change. TODO: Remove the need for this.
maxHealthMaximum health that should be possible.
max_staminaThe max amount of stamina damage we can have at once (Does NOT effect stamcrit thresholds. See crit_threshold)
melee_damage_lowerLower bound of damage done by unarmed melee attacks. Mob code is a mess, only works where this is checked for.
melee_damage_upperUpper bound of damage done by unarmed melee attacks. Please ensure you check the xyz_defenses.dm for the mobs in question to see if it uses this or hardcoded values.
metabolism_efficiencymore or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
mob_biotypesList of biotypes the mob belongs to. Used by diseases and reagents mainly.
mob_moodLiving mob's mood datum
mob_respiration_typeThe type of respiration the mob is capable of doing. Used by adjustOxyLoss.
mob_surgery_speed_modMob specific surgery speed modifier
mobility_flagsFlags that determine the potential of a mob to perform certain actions. Do not change this directly.
move_intentThe movement intent of the mob (run/wal)
navigate_cooldownCooldown of the navigate() verb.
now_pushingUsed by [living/Bump()][/mob/living/proc/Bump] and [living/PushAM()][/mob/living/proc/PushAM] to prevent potential infinite loop.
num_handsHow many hands hands does this mob currently have. Should only be changed through set_num_hands()
num_legsHow many legs does this mob currently have. Should only be changed through set_num_legs()
numbathe id a mob gets when it's created
on_fireHelper vars for quick access to firestacks, these should be updated every time firestacks are adjusted
oxylossOxygen depravation damage (no air in lungs)
pipetrackerCell tracker datum we use to manage the pipes around us, for faster ventcrawling Should only exist if you're in a pipe
rotate_on_lyingDoes the mob rotate when lying
slowed_by_dragWhether the mob is slowed down when dragging another prone mob
staminalossStamina damage, or exhaustion. You recover it slowly naturally, and are knocked down if it gets too high. Holodeck and hallucinations deal this.
station_timestamp_timeofdeathThe mob's latest time-of-death, as a station timestamp instead of world.time
status_effectsa list of all status effects the mob has
surgeriesa list of surgery datums. generally empty, they're added when the player wants them.
timeofdeathThe mob's latest time-of-death
toxlossToxic damage caused by being poisoned or radiated
unique_nameif a mob's name should be appended with an id when created e.g. Mob (666)
usable_handsHow many usable hands does this mob currently have. Should only be changed through set_usable_hands()
usable_legsHow many usable legs this mob currently has. Should only be changed through set_usable_legs()
worn_slot_flagsif it can be held, can it be equipped to any slots? (think pAI's on head)

Procs

IsFrozenFROZEN
LifeHandles the biological and general over-time processes of the mob.
Loginpixel x/y/w/z all discard values after the decimal separator. That, coupled with the rendered interpolation, may make the icons look awfuller than they already are, or not, whatever. The solution to this nit is translating the missing decimals. also flooring increases the distance from 0 for negative numbers. Done last, as it can mess with the translation. scaling also affects translation, so we've to undo the old translate beforehand.
PermaSleepingAllows us to set a permanent sleep on a player (use with caution and remember to unset it with SetSleeping() after the effect is over)
Write_MemoryProc used by different station pets such as Ian and Poly so that some of their data can persist between rounds. This base definition only contains a trait and comsig to stop memory from being (over)written. Specific behavior is defined on subtypes that use it.
ZImpactDamageCalled when this mob is receiving damage from falling
_cause_hallucinationUnless you need this for an explicit reason, use the cause_hallucination wrapper.
add_body_temperature_changeadd_body_temperature_change Adds modifications to the body temperature
add_fov_traitAdds a trait which limits a user's FOV
add_mood_eventAdds a mood event to the mob
add_movespeed_mod_immunitiesIgnores specific slowdowns. Accepts a list of slowdowns.
add_quirkAdds the passed quirk to the mob
add_stun_absorption[proc/apply_status_effect] wrapper specifically for /datum/status_effect/stun_absorption, specifically so that it's easier to apply stun absorptions with named arguments.
adjust_drunk_effectAdjust the "drunk value" the mob is currently experiencing, or applies a drunk effect if the mob isn't currently drunk (or tipsy)
adjust_fire_stacksAdjust the amount of fire stacks on a mob
adjust_incapacitated
adjust_status_effects_on_shake_upCLEAR STATUS
adjust_timed_status_effectAdjusts a timed status effect on the mob,taking into account any existing timed status effects. This can be any status effect that takes into account "duration" with their initialize arguments.
admin_give_delusionAdmin only proc for giving the mob a delusion hallucination with specific arguments
admin_give_hallucinationAdmin only proc for making the mob hallucinate a certain thing
admin_give_speech_impedimentAdmin only proc for giving a certain speech impediment to this mob
amount_incapacitatedProc that returns the remaining duration of the status efect in deciseconds.
appears_aliveHelper to check if we seem to be alive or not
apply_damageApplies damage to this mob.
apply_damagesApplies multiple damages at once via apply_damage
apply_effectapplies various common status effects or common hardcoded mob effects
apply_effectsApplies multiple effects at once via /mob/living/proc/apply_effect
apply_prefs_jobApplies the preference options to the spawning mob, taking the job into account. Assumes the client has the proper mind.
apply_status_effectApplies a given status effect to this mob.
apply_suicide_damageThe actual proc that will apply the damage to the suiciding mob. damage_type is the actual type of damage we want to deal, if that matters. Return TRUE if we actually apply any real damage, FALSE otherwise.
attack_effectsCalled when we take damage, used to cause effects such as a blood splatter.
became_unhuskableCalled when we become unhuskable while already husked
befriendProc for giving a mob a new 'friend', generally used for AI control and targeting. Returns false if already friends.
bleedDragAmountReturns how much blood we're losing from being dragged a tile, from [/mob/living/proc/makeTrail]
can_be_revivedChecks if we are actually able to ressuscitate this mob. (We don't want to revive then to have them instantly die again)
can_catch_itemChecks the requites for catching a throw item.
can_disarmCheck if the universal conditions for disarming/shoving are met.
can_enter_ventChecks if the mob is able to enter the vent, and provides feedback if they are unable to.
can_injectReturns whether or not the mob can be injected. Should not perform any side effects.
can_look_upChecks if the user is incapacitated or on cooldown.
can_suicideChecks if we are in a valid state to suicide (not already suiciding, capable of actually killing ourselves, area checks, etc.) Returns TRUE if we can suicide, FALSE if we can not.
can_trackChecks if this mob can be actively tracked by cameras / AI. Can optionally be passed a user, which is the mob who is tracking src.
can_unarmed_attackChecks if this mob is in a valid state to punch someone.
check_hit_limb_zone_nameReturns the string form of the def_zone we have hit.
check_stun_immunityChecks if we have stun immunity. Godmode always passes this check.
clean_lipsA wrapper for mob/living/carbon/human/proc/update_lips that sets the lip style and color to null.
clear_mood_eventClears a mood event from the mob
compare_sentience_typeHelper proc for basic and simple animals to return true if the passed sentience type matches theirs Living doesn't have a sentience type though so it always returns false if not a basic or simple mob
create_thinking_indicatorOverrides for overlay creation
disarmAttempt to disarm the target mob. Some items might let you do it, also carbon can do it with right click. Will shove the target mob back, and drop them if they're in front of something dense or another carbon.
dismembering_strikeReally weird proc that attempts to dismebmer the passed zone if it is at max damage Unless the attacker is an NPC, in which case it disregards the zone and picks a random one
do_jitter_animationHelper proc that causes the mob to do a jittering animation by jitter_amount. jitter_amount will only apply up to 300 (maximum jitter effect).
do_slap_animationDoes a slap animation on an atom
do_stagger_animationHelper proc that causes the mob to do a stagger animation. Doesn't change significantly, just meant to represent swaying back and forth
do_strange_reagent_revivalCalled by strange_reagent, with the amount of healing the strange reagent is doing It uses the healing amount on brute/fire damage, and then uses the excess healing for revive
dustThis is the proc for turning a mob into ash. Dusting robots does not eject the MMI, so it's a bit more powerful than gib()
edit_immerse_overlayCalled in /datum/element/immerse/apply_filter
electrocute_actAs the name suggests, this should be called to apply electric shocks.
execute_resistproc extender of [/mob/living/verb/resist] meant to make the process queable if the server is overloaded when the verb is called
expose_reagents
extinguish_mobExtinguish all fire on the mob
fakedeathInduces fake death on a living mob.
final_checkoutInserts in logging and death + mind dissociation when we're fully done with ending the life of our mob, as well as adjust the health. We will disallow re-entering the body when this is called. The suicide_tool variable is currently only used for humans in order to allow suicide log to properly put stuff in investigate log. Set apply_damage to FALSE in order to not do damage (in case it's handled elsewhere in the verb or another proc that the suicide tree calls). Will dissociate client from mind and ghost the player regardless.
find_nearest_stair_or_ladderFinds nearest ladder or staircase either up or down.
fully_healA grand proc used whenever this mob is, quote, "fully healed". Fully healed could mean a number of things, such as "healing all the main damage types", "healing all the organs", etc So, you can pass flags to specify
gather_belongingsReturns a list of things that the provided mob has, including any storage-capable implants.
get_accessReturns the access list for this mob
get_all_linked_holoparasitesReturns a list of all holoparasites that has this mob as a summoner.
get_allergic_foodtypesGets food this mob is allergic to Essentially toxic food+, not only disgusting but outright lethal
get_attack_typeReturns the attack damage type of a living mob such as BRUTE.
get_blind_suicide_messageReturns an appropriate string for what people who lack visibility hear when this mob kills itself. If you don't want a message, prefer to override send_applicable_messages() on your subtype instead.
get_blood_dna_listreturns the mob's dna info as a list, to be inserted in an object's blood_DNA list
get_body_temp_cold_damage_limitReturns the body temperature at which this mob will start taking cold damage.
get_body_temp_heat_damage_limitReturns the body temperature at which this mob will start taking heat damage.
get_body_temp_normalget_body_temp_normal Returns the mobs normal body temperature with any modifications applied
get_body_temp_normal_changeget_body_temp_normal_change Returns the aggregate change to body temperature
get_current_damage_of_typereturn the damage amount for the type given Simply a wrapper for calling mob getXLoss() procs to get a certain damage type, when you don't know what damage type you're getting exactly.
get_damage_modReturns a multiplier to apply to a specific kind of damage
get_disliked_foodtypesGets food flags that this mob dislikes
get_drunk_amountHelper to get the amount of drunkness the mob's currently experiencing.
get_equipped_itemsUsed to return a list of equipped items on a mob; does not include held items (use get_all_gear)
get_exp_listReturns an assoc list of assignments and minutes for updating a client's exp time in the databse.
get_fire_overlayGets the fire overlay to use for this mob
get_food_taste_reactionGets the food reaction a mob would normally have from the given food item, assuming that no check_liked callback was used in the edible component.
get_fullnessGet the fullness of the mob
get_idcardGets ID card from a mob. Argument:
get_incoming_damage_modifierUsed in tandem with /mob/living/proc/apply_damage to calculate modifier applied into incoming damage
get_liked_foodtypesGets food flags that this mob likes
get_organic_healthReturns the health of the mob while ignoring damage of non-organic (prosthetic) limbs Used by cryo cells to not permanently imprison those with damage from prosthetics, as they cannot be healed through chemicals.
get_pixel_y_offset_standingReturns what the body_position_pixel_y_offset should be if the current size were value
get_quirkGetter function for a mob's quirk
get_quirk_stringget_quirk_string() is used to get a printable string of all the quirk traits someone has for certain criteria
get_shove_flagsCheck if there's anything that could stop the knockdown from being shoved into something or someone.
get_shoving_messageSend the chat feedback message for shoving
get_status_effect_examinationsShows any and all examine text related to any status effects the user has.
get_taste_sensitivityGets taste sensitivity of given mob
get_timed_status_effect_durationGets how many deciseconds are remaining in the duration of the passed status effect on this mob.
get_total_damagereturn the total damage of all types which update your health
get_toxic_foodtypesGets food flags that this mob hates Toxic food is the only category that ignores ageusia, KEEP IT LIKE THAT!
get_visible_suicide_messageReturns a subtype-specific flavorful string pertaining to this exact living mob's ending their own life to those who can see it (visible message). If you don't want a message, prefer to override send_applicable_messages() on your subtype instead.
gibBlow up the mob into giblets
grabCalled when a mob is grabbing another mob.
grabbedbyCalled when this mob is grabbed by another mob.
gravity_setupLiving Mob use event based gravity We check here to ensure we haven't dropped any gravity changes
handle_ricochetSimplified ricochet angle calculation for mobs (also the base version doesn't work on mobs)
handle_suicideActually handles the bare basics of the suicide process. Message type is the message we want to dispatch in the world regarding the suicide, using the defines in this file. Override this ENTIRELY if you want to add any special behavior to your suicide handling, if you fuck up the order of operations then shit will break.
handle_suicide_damage_spreadIf we want to apply multiple types of damage to a carbon mob based on the way they suicide, this is the proc that handles that. Currently only compatible with Brute, Burn, Toxin, and Suffocation Damage. damage_type is the bitflag that carries the information.
handle_ventcrawlHandles the entrance and exit on ventcrawling
has_reagentCheck if the mob contains this reagent.
heal_and_reviveHeals up the mob up to [heal_to] of the main damage types. EX: If heal_to is 50, and they have 150 brute damage, they will heal 100 brute (up to 50 brute damage)
heal_bodypart_damageheal ONE external organ, organ gets randomly selected from damaged ones.
heal_damage_typeSimply a wrapper for calling mob adjustXLoss() procs to heal a certain damage type, when you don't know what damage type you're healing exactly.
heal_ordered_damageheal up to amount damage, in a given order
heal_overall_damageheal MANY bodyparts, in random order. note: stamina arg nonfunctional for carbon mobs
ignore_slowdownIgnores all slowdowns that lack the IGNORE_NOSLOW flag.
in_fovIs observed_atom in a mob's field of view? This takes blindness, nearsightness and FOV into consideration
incapacitate
incapacitatedChecks if a mob is incapacitated
is_ears_coveredChecks if the mob's ears (BOTH EARS, BOWMANS NEED NOT APPLY) are covered by something. Returns the atom covering the mob's ears, or null if their ears are uncovered.
is_eyes_coveredChecks if our mob has their eyes covered.
is_face_visibleOnly defined for carbons who can wear masks and helmets, we just assume other mobs have visible faces
is_mouth_coveredChecks if our mob has their mouth covered.
is_pepper_proofChecks if our mob is protected from pepper spray.
item_tendingHandles any use of using a surgical tool or item on a mob to tend to them. The sole reason this is a separate proc is so carbons can tend wounds AFTER the check for surgery.
lazarus_reviveProc called when TARGETED by a lazarus injector
look_downlook_down Changes the perspective of the mob to any openspace turf below the mob
look_uplook_up Changes the perspective of the mob to any openspace turf above the mob
lying_angle_on_movementCalled by mob Move() when the lying_angle is different than zero, to better visually simulate crawling.
move_into_ventMoves living mob directly into the vent as a ventcrawler
on_deathcoma_trait_gainCalled when TRAIT_DEATHCOMA is added to the mob.
on_deathcoma_trait_lossCalled when TRAIT_DEATHCOMA is removed from the mob.
on_fallCalled when mob changes from a standing position into a prone while lacking the ability to stand up at the moment.
on_fire_stackHandles effects happening when mob is on normal fire
on_floored_endProc to append behavior to the condition of being floored. Called when the condition ends.
on_floored_startProc to append behavior to the condition of being floored. Called when the condition starts.
on_floored_trait_gainCalled when TRAIT_FLOORED is added to the mob.
on_floored_trait_lossCalled when TRAIT_FLOORED is removed from the mob.
on_force_gravityCalled when TRAIT_FORCED_GRAVITY is gained or lost
on_forced_standing_trait_gainCalled when TRAIT_FORCED_STANDING is added to the mob.
on_forced_standing_trait_lossCalled when TRAIT_FORCED_STANDING is removed from the mob.
on_handsblocked_endProc to append behavior to the condition of being handsblocked. Called when the condition ends.
on_handsblocked_startProc to append behavior to the condition of being handsblocked. Called when the condition starts.
on_handsblocked_trait_gainCalled when TRAIT_HANDS_BLOCKED is added to the mob.
on_handsblocked_trait_lossCalled when TRAIT_HANDS_BLOCKED is removed from the mob.
on_ignore_gravityCalled when TRAIT_IGNORING_GRAVITY is gained or lost
on_immobilized_trait_gainCalled when TRAIT_IMMOBILIZED is added to the mob.
on_immobilized_trait_lossCalled when TRAIT_IMMOBILIZED is removed from the mob.
on_incapacitated_trait_gainCalled when [TRAIT_INCAPACITATED] is added to the mob.
on_incapacitated_trait_lossCalled when [TRAIT_INCAPACITATED] is removed from the mob.
on_knockedout_trait_gainCalled when TRAIT_KNOCKEDOUT is added to the mob.
on_knockedout_trait_lossCalled when TRAIT_KNOCKEDOUT is removed from the mob.
on_loc_force_gravityCalled when our loc's TRAIT_FORCED_GRAVITY is gained or lost
on_lying_downProc to append behavior related to lying down.
on_movement_type_flag_disabledFrom [element/movetype_handler/on_movement_type_trait_loss()]
on_movement_type_flag_enabledFrom [element/movetype_handler/on_movement_type_trait_gain()]
on_negate_gravityCalled when TRAIT_NEGATES_GRAVITY is gained or lost
on_pull_blocked_trait_gainCalled when TRAIT_PULL_BLOCKED is added to the mob.
on_pull_blocked_trait_lossCalled when TRAIT_PULL_BLOCKED is removed from the mob.
on_restrained_trait_gainCalled when TRAIT_RESTRAINED is added to the mob.
on_restrained_trait_lossCalled when TRAIT_RESTRAINED is removed from the mob.
on_skittish_trait_gainCalled when [TRAIT_SKITTISH] is added to the mob.
on_skittish_trait_lossCalled when [TRAIT_SKITTISH] is removed from the mob.
on_standing_upProc to append behavior related to lying down.
on_ui_blocked_trait_gainCalled when TRAIT_UI_BLOCKED is added to the mob.
on_ui_blocked_trait_lossCalled when TRAIT_UI_BLOCKED is removed from the mob.
radiocaps the length of individual letters to 3: ex: heeeeeeyy -> heeeyy prevents TTS from choking on unrealistic text while keeping emphasis
refresh_gravityHandles gravity effects. Call if something about our gravity has potentially changed!
register_init_signalsCalled on /mob/living/Initialize(mapload), for the mob to register to relevant signals.
remove_body_temperature_changeremove_body_temperature_change Removes the modifications to the body temperature
remove_fov_traitRemoves a trait which limits a user's FOV
remove_movespeed_mod_immunitiesUnignores specific slowdowns. Accepts a list of slowdowns.
remove_status_effectRemoves all instances of a given status effect from this mob
remove_stun_absorptionRemoves all stub absorptions with the passed source.
resist_bucklesee defines/combat.dm, this should be baseline 60% Resist chance divided by the value imparted by your grab state. It isn't until you reach neckgrab that you gain a penalty to escaping a grab.
resolve_right_click_attackCalled when an unarmed attack performed with right click hasn't been stopped by the LIVING_UNARMED_ATTACK_BLOCKED macro. This will call a secondary attack proc that can vary from mob type to mob type on the target. Sometimes, a target is interacted differently when right_clicked, in that case the secondary attack proc should return a SECONDARY_ATTACK_* value that's not SECONDARY_ATTACK_CALL_NORMAL. Otherwise, it should just return SECONDARY_ATTACK_CALL_NORMAL. Failure to do so will result in an exception (runtime error).
resolve_unarmed_attackCalled when the unarmed attack hasn't been stopped by the LIVING_UNARMED_ATTACK_BLOCKED macro or the right_click_attack_chain proc. This will call an attack proc that can vary from mob type to mob type on the target.
reviveProc used to resuscitate a mob, bringing them back to life.
right_click_attack_chainChecks for RIGHT_CLICK in modifiers and runs resolve_right_click_attack if so. Returns TRUE if normal chain blocked.
send_applicable_messagesSend all suicide-related messages out to the world. message_type can be used to change out the dispatched suicide message depending on the suicide context.
setGrabStateUpdates the grab state of the mob and updates movespeed
set_body_positionChanges the value of the [living/body_position] variable. Call this before set_lying_angle()
set_buckledReports the event of the change in value of the buckled variable.
set_drunk_effectDirectly sets the "drunk value" the mob is currently experiencing to the passed value, or applies a drunk effect with the passed value if the mob isn't currently drunk
set_facial_hair_gradient_colorSet the facial hair gradient color of a human. Update calls update_body_parts().
set_facial_hair_gradient_styleSet the facial hair gradient style of a human. Update calls update_body_parts().
set_facial_haircolorSet the facial hair color of a human. Override instead sets the override value, it will not be changed away from the override value until override is set to null. Update calls update_body_parts().
set_facial_hairstyleSet the facial hair style of a human. Update calls update_body_parts().
set_fire_stacksSet the fire stacks on a mob
set_hair_gradient_colorSet the hair gradient color of a human. Update calls update_body_parts().
set_hair_gradient_styleSet the hair gradient style of a human. Update calls update_body_parts().
set_haircolorSet the hair color of a human. Override instead sets the override value, it will not be changed away from the override value until override is set to null. Update calls update_body_parts().
set_hairstyleSet the hair style of a human. Update calls update_body_parts().
set_healthSets the current mob's health value. Do not call directly if you don't know what you are doing, use the damage procs, instead.
set_incapacitated
set_lying_angleChanges the inclination angle of a mob, used by humans and others to differentiate between standing up and prone positions.
set_lying_downChange the [body_position] to LYING_DOWN and update associated behavior.
set_num_handsProc to modify the value of num_hands and hook behavior associated to this event.
set_num_legsProc to modify the value of num_legs and hook behavior associated to this event.
set_restingProc to hook behavior to the change of value in the resting variable.
set_safe_hunger_levelSets the mob's hunger levels to a safe overall level. Useful for TRAIT_NOHUNGER species changes.
set_suicideProc that handles adding the TRAIT_SUICIDED on the mob in question, as well as additional operations to ensure that everything goes smoothly when we're certain that this person is going to kill themself. suicide_state is a boolean, and we handle adding/removing the trait in question. Have the trait function reference this mob as the source if we want to do in-depth tracking of where a suicided trait comes from. For example, the /mob/dead/observer that will inevitably come from the suicidee will inherit the suicided trait upon creation, and keep this reference. Handy for doing checking should we need it.
set_timed_status_effectSets a timed status effect of some kind on a mob to a specific value. If only_if_higher is TRUE, it will only set the value up to the passed duration, so any pre-existing status effects of the same type won't be reduced down
set_usable_handsProc to modify the value of usable_hands and hook behavior associated to this event.
set_usable_legsProc to modify the value of usable_legs and hook behavior associated to this event.
shared_living_ui_distancepublic
singularity_actLogs, gibs and returns point values of whatever mob is unfortunate enough to get eaten.
sleeping_carp_helpVerb added to humans who learn the art of the sleeping carp.
spawn_gibsSpawn bloody gib mess on the floor
spill_organsDrops a mob's organs on the floor
spread_bodypartsLaunches all bodyparts away from the mob
suicideVerb to simply kill yourself (in a very visual way to all players) in game! How family-friendly. Can be governed by a series of multiple checks (i.e. confirmation, is it allowed in this area, etc.) which are handled and called by the proc this verb invokes. It's okay to block this, because we typically always give mobs in-game the ability to Ghost out of their current mob irregardless of context. This, in contrast, can have as many different checks as you desire to prevent people from doing the deed to themselves.
suicide_alertSends a TGUI Alert to the person attempting to commit suicide. Returns TRUE if they confirm they want to die, FALSE otherwise. Check can_suicide here as well.
suicide_logInserts logging in both the mob's logs and the investigate log pertaining to their death. Suicide tool is the object we used to commit suicide, if one was held and used (presently only humans use this arg).
take_bodypart_damagedamage ONE external organ, organ gets randomly selected from damaged ones.
take_overall_damagedamage MANY bodyparts, in random order. note: stamina arg nonfunctional for carbon mobs
tasteNon destructively tastes a reagent container and gives feedback to the user.
toggle_move_intentToggle the move intent of the mob
tram_slam_landA proc triggered by callback when someone gets slammed by the tram and lands somewhere.
transfer_blood_toBLOOD TRANSFERS
treat_messageTreats the passed message with things that may modify speech (stuttering, slurring etc).
try_catch_itemThe core of catching thrown items, which non-carbons cannot without the help of items or abilities yet, as they've no throw mode.
try_injectLike can_inject, but it can perform side effects.
undense_changedCalled when TRAIT_UNDENSE is gained or lost
unfriendProc for removing a friend you added with the proc 'befriend'. Returns true if you removed a friend.
unignore_slowdownUnignores all slowdowns that lack the IGNORE_NOSLOW flag.
update_fovGetting a direction vector Calculate angle Calculate vision angle and compare Updates the applied FOV value and applies the handler to client if able
update_fov_clientUpdates the FOV for the client.
update_fullscreenProc used to handle the fullscreen overlay updates, realistically meant for the reset_perspective() proc.
update_lipsUsed to update the makeup on a human and apply/remove lipstick traits, then store/unstore them on the head object in case it gets severed
update_medhud_on_signalUpdates medhud when recieving relevant signals.
update_pipe_visionEverything related to pipe vision on ventcrawling is handled by update_pipe_vision(). Called on exit, entrance, and pipenet differences (e.g. moving to a new pipenet). One important thing to note however is that the movement of the client's eye is handled by the relaymove() proc in /obj/machinery/atmospherics. We move first and then call update. Dont flip this around
update_restingProc to append and redefine behavior to the change of the [/mob/living/var/resting] variable.
update_succumb_actionCalled when traits that alter succumbing are added/removed.
update_transformCalled whenever the mob is to be resized or when lying/standing up for carbons. IMPORTANT: Multiple animate() calls do not stack well, so try to do them all at once if you can.
update_wound_overlaysProc that only really gets called for humans, to handle bleeding overlays.
wabbajackPolymorphs our mob into another mob. If successful, our current mob is qdeleted!
wear_mask_updateHandle stuff to update when a mob equips/unequips a mask.
whisperLiving level whisper.
will_escape_storageWhether or not this mob will escape from storages while being picked up/held.
zMoveWe want to relay the zmovement to the buckled atom when possible and only run what we can't have on buckled.zMove() or buckled.can_z_move() here. This way we can avoid esoteric bugs, copypasta and inconsistencies.

Var Details

blood_volume

how much blood the mob has

body_maptext_height_offset

The height offset of a mob's maptext due to their current size.

body_position

Variable to track the body position of a mob, regardgless of the actual angle of rotation (usually matching it, but not necessarily).

body_position_pixel_x_offset

The x amount a mob's sprite should be offset due to the current position they're in

body_position_pixel_y_offset

The y amount a mob's sprite should be offset due to the current position they're in or size (e.g. lying down moves your sprite down)

body_temp_changes

List of changes to body temperature, used by desease symtoms like fever

bruteloss

Brutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage)

bubble_icon

used to prevent spam with smoke reagent reaction on mob. what icon the mob uses for speechbubbles

butcher_difficulty

effectiveness prob. is modified negatively by this amount; positive numbers make it more difficult, negative ones make it easier

butcher_results

these will be yielded from butchering with a probability chance equal to the butcher item's effectiveness

can_be_held

whether this can be picked up and held.

can_buckle_to

Is this mob allowed to be buckled/unbuckled to/from things?

combat_mode

If combat mode is on or not

crit_threshold

when the mob goes from "normal" to crit

current_size

Tracks the current size of the mob in relation to its original size. Use update_transform(resize) to change it.

current_turf_slowdown

what multiplicative slowdown we get from turfs currently.

death_message

A message sent when the mob dies, with the *deathgasp emote

death_sound

A sound sent when the mob dies, with the *deathgasp emote

default_num_hands

How many hands does this mob have by default. This shouldn't change at runtime.

default_num_legs

How many legs does this mob have by default. This shouldn't change at runtime.

diseases

list of all diseases in a mob

fire_stack_decay_rate

Rate at which fire stacks should decay from this mob

fireloss

Burn damage caused by being way too hot, too cold or burnt.

fov_traits

Lazy list of FOV traits that will apply a FOV view when handled.

fov_view

FOV view that is applied from either nativeness or traits

gravity_state

What our current gravity state is. Used to avoid duplicate animates and such

guaranteed_butcher_results

these will always be yielded from butchering

hardcrit_threshold

When the mob enters hard critical state and is fully incapacitated.

has_limbs

does the mob have distinct limbs?(arms,legs, chest,head)

head_icon

what it looks like when the mob is held on your head

health

The mob's current health.

health_doll_icon

if this exists AND the normal sprite is bigger than 32x32, this is the replacement icon state (because health doll size limitations). the icon will always be screen_gen.dmi

held_lh

left hand icon for holding mobs

held_rh

right hand icon for holding mobs

held_state

icon_state for holding mobs.

held_w_class

The w_class of the holder when held.

imaginary_group

Contains the owner and all imaginary friend mobs if they exist, otherwise null

incorporeal_move

Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects.

FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt

last_special

Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out.

last_vent_dir

The last direction we moved in a vent. Used to make holding two directions feel nice

last_words

used for database logging

limb_destroyer

Sets AI behavior that allows mobs to target and dismember limbs with their basic attack.

living_flags

Generic bitflags for boolean conditions at the /mob/living level. Keep this for inherent traits of living types, instead of runtime-changeable ones.

lying_angle

Number of degrees of rotation of a mob. 0 means no rotation, up-side facing NORTH. 90 means up-side rotated to face EAST, and so on.

lying_prev

Value of lying lying_angle before last change. TODO: Remove the need for this.

maxHealth

Maximum health that should be possible.

max_stamina

The max amount of stamina damage we can have at once (Does NOT effect stamcrit thresholds. See crit_threshold)

melee_damage_lower

Lower bound of damage done by unarmed melee attacks. Mob code is a mess, only works where this is checked for.

melee_damage_upper

Upper bound of damage done by unarmed melee attacks. Please ensure you check the xyz_defenses.dm for the mobs in question to see if it uses this or hardcoded values.

metabolism_efficiency

more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..

mob_biotypes

List of biotypes the mob belongs to. Used by diseases and reagents mainly.

mob_mood

Living mob's mood datum

mob_respiration_type

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

mob_surgery_speed_mod

Mob specific surgery speed modifier

mobility_flags

Flags that determine the potential of a mob to perform certain actions. Do not change this directly.

move_intent

The movement intent of the mob (run/wal)

navigate_cooldown

Cooldown of the navigate() verb.

now_pushing

Used by [living/Bump()][/mob/living/proc/Bump] and [living/PushAM()][/mob/living/proc/PushAM] to prevent potential infinite loop.

num_hands

How many hands hands does this mob currently have. Should only be changed through set_num_hands()

num_legs

How many legs does this mob currently have. Should only be changed through set_num_legs()

numba

the id a mob gets when it's created

on_fire

Helper vars for quick access to firestacks, these should be updated every time firestacks are adjusted

oxyloss

Oxygen depravation damage (no air in lungs)

pipetracker

Cell tracker datum we use to manage the pipes around us, for faster ventcrawling Should only exist if you're in a pipe

rotate_on_lying

Does the mob rotate when lying

slowed_by_drag

Whether the mob is slowed down when dragging another prone mob

staminaloss

Stamina damage, or exhaustion. You recover it slowly naturally, and are knocked down if it gets too high. Holodeck and hallucinations deal this.

station_timestamp_timeofdeath

The mob's latest time-of-death, as a station timestamp instead of world.time

status_effects

a list of all status effects the mob has

surgeries

a list of surgery datums. generally empty, they're added when the player wants them.

timeofdeath

The mob's latest time-of-death

toxloss

Toxic damage caused by being poisoned or radiated

unique_name

if a mob's name should be appended with an id when created e.g. Mob (666)

usable_hands

How many usable hands does this mob currently have. Should only be changed through set_usable_hands()

usable_legs

How many usable legs this mob currently has. Should only be changed through set_usable_legs()

worn_slot_flags

if it can be held, can it be equipped to any slots? (think pAI's on head)

Proc Details

IsFrozen

FROZEN

Life

Handles the biological and general over-time processes of the mob.

Arguments:

Login

pixel x/y/w/z all discard values after the decimal separator. That, coupled with the rendered interpolation, may make the icons look awfuller than they already are, or not, whatever. The solution to this nit is translating the missing decimals. also flooring increases the distance from 0 for negative numbers. Done last, as it can mess with the translation. scaling also affects translation, so we've to undo the old translate beforehand.

PermaSleeping

Allows us to set a permanent sleep on a player (use with caution and remember to unset it with SetSleeping() after the effect is over)

Write_Memory

Proc used by different station pets such as Ian and Poly so that some of their data can persist between rounds. This base definition only contains a trait and comsig to stop memory from being (over)written. Specific behavior is defined on subtypes that use it.

ZImpactDamage

Called when this mob is receiving damage from falling

_cause_hallucination

Unless you need this for an explicit reason, use the cause_hallucination wrapper.

add_body_temperature_change

add_body_temperature_change Adds modifications to the body temperature

This collects all body temperature changes that the mob is experiencing to the list body_temp_changes the aggrogate result is used to derive the new body temperature for the mob

arguments:

add_fov_trait

Adds a trait which limits a user's FOV

add_mood_event

Adds a mood event to the mob

add_movespeed_mod_immunities

Ignores specific slowdowns. Accepts a list of slowdowns.

add_quirk

Adds the passed quirk to the mob

Arguments

Returns TRUE on success, FALSE on failure (already has the quirk, etc)

add_stun_absorption

[proc/apply_status_effect] wrapper specifically for /datum/status_effect/stun_absorption, specifically so that it's easier to apply stun absorptions with named arguments.

If the mob already has a stun absorption from the same source, will not re-apply the effect, unless the new effect's priority is higher than the old effect's priority.

Arguments

Returns an instance of a stun absorption effect, or NULL if failure

adjust_drunk_effect

Adjust the "drunk value" the mob is currently experiencing, or applies a drunk effect if the mob isn't currently drunk (or tipsy)

The drunk effect doesn't have a set duration, like dizziness or drugginess, but instead relies on a value that decreases every status effect tick (2 seconds) by: 4% the current drunk_value + 0.01

A "drunk value" of 6 is the border between "tipsy" and "drunk".

amount - the amount of "drunkness" to apply to the mob. down_to - the lower end of the clamp, when adding the value up_to - the upper end of the clamp, when adding the value

adjust_fire_stacks

Adjust the amount of fire stacks on a mob

This modifies the fire stacks on a mob.

Vars:

adjust_incapacitated

adjust_status_effects_on_shake_up

CLEAR STATUS

adjust_timed_status_effect

Adjusts a timed status effect on the mob,taking into account any existing timed status effects. This can be any status effect that takes into account "duration" with their initialize arguments.

Positive durations will add deciseconds to the duration of existing status effects or apply a new status effect of that duration to the mob.

Negative durations will remove deciseconds from the duration of an existing version of the status effect, removing the status effect entirely if the duration becomes less than zero (less than the current world time).

duration - the duration, in deciseconds, to add or remove from the effect effect - the type of status effect being adjusted on the mob max_duration - optional - if set, positive durations will only be added UP TO the passed max duration

admin_give_delusion

Admin only proc for giving the mob a delusion hallucination with specific arguments

admin_give_hallucination

Admin only proc for making the mob hallucinate a certain thing

admin_give_speech_impediment

Admin only proc for giving a certain speech impediment to this mob

amount_incapacitated

Proc that returns the remaining duration of the status efect in deciseconds.

appears_alive

Helper to check if we seem to be alive or not

apply_damage

Applies damage to this mob.

Sends COMSIG_MOB_APPLY_DAMAGE

Arguuments:

Returns the amount of damage dealt.

apply_damages

Applies multiple damages at once via apply_damage

apply_effect

applies various common status effects or common hardcoded mob effects

apply_effects

Applies multiple effects at once via /mob/living/proc/apply_effect

Pretty much only used for projectiles applying effects on hit, don't use this for anything else please just cause the effects directly

apply_prefs_job

Applies the preference options to the spawning mob, taking the job into account. Assumes the client has the proper mind.

apply_status_effect

Applies a given status effect to this mob.

new_effect - TYPEPATH of a status effect to apply. Additional status effect arguments can be passed.

Returns the instance of the created effected, if successful. Returns 'null' if unsuccessful.

apply_suicide_damage

The actual proc that will apply the damage to the suiciding mob. damage_type is the actual type of damage we want to deal, if that matters. Return TRUE if we actually apply any real damage, FALSE otherwise.

attack_effects

Called when we take damage, used to cause effects such as a blood splatter.

Return TRUE if an effect was done, FALSE otherwise.

became_unhuskable

Called when we become unhuskable while already husked

befriend

Proc for giving a mob a new 'friend', generally used for AI control and targeting. Returns false if already friends.

bleedDragAmount

Returns how much blood we're losing from being dragged a tile, from [/mob/living/proc/makeTrail]

can_be_revived

Checks if we are actually able to ressuscitate this mob. (We don't want to revive then to have them instantly die again)

can_catch_item

Checks the requites for catching a throw item.

can_disarm

Check if the universal conditions for disarming/shoving are met.

can_enter_vent

Checks if the mob is able to enter the vent, and provides feedback if they are unable to.

can_inject

Returns whether or not the mob can be injected. Should not perform any side effects.

Arguments:

can_look_up

Checks if the user is incapacitated or on cooldown.

can_suicide

Checks if we are in a valid state to suicide (not already suiciding, capable of actually killing ourselves, area checks, etc.) Returns TRUE if we can suicide, FALSE if we can not.

can_track

Checks if this mob can be actively tracked by cameras / AI. Can optionally be passed a user, which is the mob who is tracking src.

can_unarmed_attack

Checks if this mob is in a valid state to punch someone.

(Potentially) gives feedback to the mob if they cannot.

check_hit_limb_zone_name

Returns the string form of the def_zone we have hit.

check_stun_immunity

Checks if we have stun immunity. Godmode always passes this check.

returns TRUE if stun immune, FALSE otherwise

clean_lips

A wrapper for mob/living/carbon/human/proc/update_lips that sets the lip style and color to null.

clear_mood_event

Clears a mood event from the mob

compare_sentience_type

Helper proc for basic and simple animals to return true if the passed sentience type matches theirs Living doesn't have a sentience type though so it always returns false if not a basic or simple mob

create_thinking_indicator

Overrides for overlay creation

disarm

Attempt to disarm the target mob. Some items might let you do it, also carbon can do it with right click. Will shove the target mob back, and drop them if they're in front of something dense or another carbon.

dismembering_strike

Really weird proc that attempts to dismebmer the passed zone if it is at max damage Unless the attacker is an NPC, in which case it disregards the zone and picks a random one

Cannot dismember heads

Returns a falsy value (null) on success, and a truthy value (the hit zone) on failure

do_jitter_animation

Helper proc that causes the mob to do a jittering animation by jitter_amount. jitter_amount will only apply up to 300 (maximum jitter effect).

do_slap_animation

Does a slap animation on an atom

Uses do_attack_animation to animate the attacker attacking then draws a hand moving across the top half of the target(where a mobs head would usually be) to look like a slap Arguments:

do_stagger_animation

Helper proc that causes the mob to do a stagger animation. Doesn't change significantly, just meant to represent swaying back and forth

do_strange_reagent_revival

Called by strange_reagent, with the amount of healing the strange reagent is doing It uses the healing amount on brute/fire damage, and then uses the excess healing for revive

dust

This is the proc for turning a mob into ash. Dusting robots does not eject the MMI, so it's a bit more powerful than gib()

Arguments:

edit_immerse_overlay

Called in /datum/element/immerse/apply_filter

electrocute_act

As the name suggests, this should be called to apply electric shocks.

execute_resist

proc extender of [/mob/living/verb/resist] meant to make the process queable if the server is overloaded when the verb is called

expose_reagents

extinguish_mob

Extinguish all fire on the mob

This removes all fire stacks, fire effects, alerts, and moods Signals the extinguishing.

fakedeath

Induces fake death on a living mob.

final_checkout

Inserts in logging and death + mind dissociation when we're fully done with ending the life of our mob, as well as adjust the health. We will disallow re-entering the body when this is called. The suicide_tool variable is currently only used for humans in order to allow suicide log to properly put stuff in investigate log. Set apply_damage to FALSE in order to not do damage (in case it's handled elsewhere in the verb or another proc that the suicide tree calls). Will dissociate client from mind and ghost the player regardless.

find_nearest_stair_or_ladder

Finds nearest ladder or staircase either up or down.

Arguments:

fully_heal

A grand proc used whenever this mob is, quote, "fully healed". Fully healed could mean a number of things, such as "healing all the main damage types", "healing all the organs", etc So, you can pass flags to specify

See [mobs.dm] for more information on the flags

If you ever think "hey I'm adding something and want it to be reverted on full heal", consider handling it via signal instead of implementing it in this proc

gather_belongings

Returns a list of things that the provided mob has, including any storage-capable implants.

get_access

Returns the access list for this mob

get_all_linked_holoparasites

Returns a list of all holoparasites that has this mob as a summoner.

get_allergic_foodtypes

Gets food this mob is allergic to Essentially toxic food+, not only disgusting but outright lethal

get_attack_type

Returns the attack damage type of a living mob such as BRUTE.

get_blind_suicide_message

Returns an appropriate string for what people who lack visibility hear when this mob kills itself. If you don't want a message, prefer to override send_applicable_messages() on your subtype instead.

get_blood_dna_list

returns the mob's dna info as a list, to be inserted in an object's blood_DNA list

get_body_temp_cold_damage_limit

Returns the body temperature at which this mob will start taking cold damage.

get_body_temp_heat_damage_limit

Returns the body temperature at which this mob will start taking heat damage.

get_body_temp_normal

get_body_temp_normal Returns the mobs normal body temperature with any modifications applied

This applies the result from proc/get_body_temp_normal_change() against the BODYTEMP_NORMAL and returns the result

arguments:

get_body_temp_normal_change

get_body_temp_normal_change Returns the aggregate change to body temperature

This aggregates all the changes in the body_temp_changes list and returns the result

get_current_damage_of_type

return the damage amount for the type given Simply a wrapper for calling mob getXLoss() procs to get a certain damage type, when you don't know what damage type you're getting exactly.

get_damage_mod

Returns a multiplier to apply to a specific kind of damage

get_disliked_foodtypes

Gets food flags that this mob dislikes

get_drunk_amount

Helper to get the amount of drunkness the mob's currently experiencing.

get_equipped_items

Used to return a list of equipped items on a mob; does not include held items (use get_all_gear)

Argument(s):

get_exp_list

Returns an assoc list of assignments and minutes for updating a client's exp time in the databse.

Arguments:

get_fire_overlay

Gets the fire overlay to use for this mob

Args:

Return a mutable appearance, the overlay that will be applied.

get_food_taste_reaction

Gets the food reaction a mob would normally have from the given food item, assuming that no check_liked callback was used in the edible component.

Does not get called if the owner has ageusia.

get_fullness

Get the fullness of the mob

This returns a value form 0 upwards to represent how full the mob is. The value is a total amount of consumable reagents in the body combined with the total amount of nutrition they have. This does not have an upper limit.

get_idcard

Gets ID card from a mob. Argument:

get_incoming_damage_modifier

Used in tandem with /mob/living/proc/apply_damage to calculate modifier applied into incoming damage

get_liked_foodtypes

Gets food flags that this mob likes

get_organic_health

Returns the health of the mob while ignoring damage of non-organic (prosthetic) limbs Used by cryo cells to not permanently imprison those with damage from prosthetics, as they cannot be healed through chemicals.

get_pixel_y_offset_standing

Returns what the body_position_pixel_y_offset should be if the current size were value

get_quirk

Getter function for a mob's quirk

Arguments:

Returns the mob's quirk datum if the mob this is called on has the quirk, null on failure

get_quirk_string

get_quirk_string() is used to get a printable string of all the quirk traits someone has for certain criteria

Arguments:

get_shove_flags

Check if there's anything that could stop the knockdown from being shoved into something or someone.

get_shoving_message

Send the chat feedback message for shoving

get_status_effect_examinations

Shows any and all examine text related to any status effects the user has.

get_taste_sensitivity

Gets taste sensitivity of given mob

This is used in calculating what flavours the mob can pick up, with a lower number being able to pick up more distinct flavours.

get_timed_status_effect_duration

Gets how many deciseconds are remaining in the duration of the passed status effect on this mob.

If the mob is unaffected by the passed effect, returns 0.

get_total_damage

return the total damage of all types which update your health

get_toxic_foodtypes

Gets food flags that this mob hates Toxic food is the only category that ignores ageusia, KEEP IT LIKE THAT!

get_visible_suicide_message

Returns a subtype-specific flavorful string pertaining to this exact living mob's ending their own life to those who can see it (visible message). If you don't want a message, prefer to override send_applicable_messages() on your subtype instead.

gib

Blow up the mob into giblets

drop_bitflags: (see code/__DEFINES/blood.dm)

grab

Called when a mob is grabbing another mob.

grabbedby

Called when this mob is grabbed by another mob.

gravity_setup

Living Mob use event based gravity We check here to ensure we haven't dropped any gravity changes

handle_ricochet

Simplified ricochet angle calculation for mobs (also the base version doesn't work on mobs)

handle_suicide

Actually handles the bare basics of the suicide process. Message type is the message we want to dispatch in the world regarding the suicide, using the defines in this file. Override this ENTIRELY if you want to add any special behavior to your suicide handling, if you fuck up the order of operations then shit will break.

handle_suicide_damage_spread

If we want to apply multiple types of damage to a carbon mob based on the way they suicide, this is the proc that handles that. Currently only compatible with Brute, Burn, Toxin, and Suffocation Damage. damage_type is the bitflag that carries the information.

handle_ventcrawl

Handles the entrance and exit on ventcrawling

has_reagent

Check if the mob contains this reagent.

This will validate the the reagent holder for the mob and any sub holders contain the requested reagent. Vars:

heal_and_revive

Heals up the mob up to [heal_to] of the main damage types. EX: If heal_to is 50, and they have 150 brute damage, they will heal 100 brute (up to 50 brute damage)

If the target is dead, also revives them and heals their organs / restores blood. If we have a [revive_message], play a visible message if the revive was successful.

Arguments

Returns TRUE if the mob is alive afterwards, or FALSE if they're still dead (revive failed).

heal_bodypart_damage

heal ONE external organ, organ gets randomly selected from damaged ones.

returns the net change in damage

heal_damage_type

Simply a wrapper for calling mob adjustXLoss() procs to heal a certain damage type, when you don't know what damage type you're healing exactly.

heal_ordered_damage

heal up to amount damage, in a given order

heal_overall_damage

heal MANY bodyparts, in random order. note: stamina arg nonfunctional for carbon mobs

ignore_slowdown

Ignores all slowdowns that lack the IGNORE_NOSLOW flag.

in_fov

Is observed_atom in a mob's field of view? This takes blindness, nearsightness and FOV into consideration

incapacitate

incapacitated

Checks if a mob is incapacitated

Normally being restrained, agressively grabbed, or in stasis counts as incapacitated unless there is a flag being used to check if it's ignored

args:

bitflags: (see code/__DEFINES/status_effects.dm)

is_ears_covered

Checks if the mob's ears (BOTH EARS, BOWMANS NEED NOT APPLY) are covered by something. Returns the atom covering the mob's ears, or null if their ears are uncovered.

is_eyes_covered

Checks if our mob has their eyes covered.

Note that we only care about ITEM_SLOT_HEAD, ITEM_SLOT_MASK, and [ITEM_SLOT_GLASSES]. That is also the priority order (so if you check all slots, it'll return head, then mask, then glasses)

Arguments

Retuns a truthy value (a ref to what is covering eyes), or a falsy value (null)

is_face_visible

Only defined for carbons who can wear masks and helmets, we just assume other mobs have visible faces

is_mouth_covered

Checks if our mob has their mouth covered.

Note that we only care about ITEM_SLOT_HEAD and ITEM_SLOT_MASK. (so if you check all slots, it'll return head, then mask) That is also the priority order Arguments

Retuns a truthy value (a ref to what is covering mouth), or a falsy value (null)

is_pepper_proof

Checks if our mob is protected from pepper spray.

Note that we only care about ITEM_SLOT_HEAD and ITEM_SLOT_MASK. That is also the priority order (so if you check all slots, it'll return head, then mask)

Arguments

Retuns a truthy value (a ref to what is protecting us), or a falsy value (null)

item_tending

Handles any use of using a surgical tool or item on a mob to tend to them. The sole reason this is a separate proc is so carbons can tend wounds AFTER the check for surgery.

lazarus_revive

Proc called when TARGETED by a lazarus injector

look_down

look_down Changes the perspective of the mob to any openspace turf below the mob

This also checks if an openspace turf is below the mob before looking down or resets the perspective if already looking up

look_up

look_up Changes the perspective of the mob to any openspace turf above the mob

This also checks if an openspace turf is above the mob before looking up or resets the perspective if already looking up

lying_angle_on_movement

Called by mob Move() when the lying_angle is different than zero, to better visually simulate crawling.

move_into_vent

Moves living mob directly into the vent as a ventcrawler

Arguments:

on_deathcoma_trait_gain

Called when TRAIT_DEATHCOMA is added to the mob.

on_deathcoma_trait_loss

Called when TRAIT_DEATHCOMA is removed from the mob.

on_fall

Called when mob changes from a standing position into a prone while lacking the ability to stand up at the moment.

on_fire_stack

Handles effects happening when mob is on normal fire

Vars:

on_floored_end

Proc to append behavior to the condition of being floored. Called when the condition ends.

on_floored_start

Proc to append behavior to the condition of being floored. Called when the condition starts.

on_floored_trait_gain

Called when TRAIT_FLOORED is added to the mob.

on_floored_trait_loss

Called when TRAIT_FLOORED is removed from the mob.

on_force_gravity

Called when TRAIT_FORCED_GRAVITY is gained or lost

on_forced_standing_trait_gain

Called when TRAIT_FORCED_STANDING is added to the mob.

on_forced_standing_trait_loss

Called when TRAIT_FORCED_STANDING is removed from the mob.

on_handsblocked_end

Proc to append behavior to the condition of being handsblocked. Called when the condition ends.

on_handsblocked_start

Proc to append behavior to the condition of being handsblocked. Called when the condition starts.

on_handsblocked_trait_gain

Called when TRAIT_HANDS_BLOCKED is added to the mob.

on_handsblocked_trait_loss

Called when TRAIT_HANDS_BLOCKED is removed from the mob.

on_ignore_gravity

Called when TRAIT_IGNORING_GRAVITY is gained or lost

on_immobilized_trait_gain

Called when TRAIT_IMMOBILIZED is added to the mob.

on_immobilized_trait_loss

Called when TRAIT_IMMOBILIZED is removed from the mob.

on_incapacitated_trait_gain

Called when [TRAIT_INCAPACITATED] is added to the mob.

on_incapacitated_trait_loss

Called when [TRAIT_INCAPACITATED] is removed from the mob.

on_knockedout_trait_gain

Called when TRAIT_KNOCKEDOUT is added to the mob.

on_knockedout_trait_loss

Called when TRAIT_KNOCKEDOUT is removed from the mob.

on_loc_force_gravity

Called when our loc's TRAIT_FORCED_GRAVITY is gained or lost

on_lying_down

Proc to append behavior related to lying down.

on_movement_type_flag_disabled

From [element/movetype_handler/on_movement_type_trait_loss()]

on_movement_type_flag_enabled

From [element/movetype_handler/on_movement_type_trait_gain()]

on_negate_gravity

Called when TRAIT_NEGATES_GRAVITY is gained or lost

on_pull_blocked_trait_gain

Called when TRAIT_PULL_BLOCKED is added to the mob.

on_pull_blocked_trait_loss

Called when TRAIT_PULL_BLOCKED is removed from the mob.

on_restrained_trait_gain

Called when TRAIT_RESTRAINED is added to the mob.

on_restrained_trait_loss

Called when TRAIT_RESTRAINED is removed from the mob.

on_skittish_trait_gain

Called when [TRAIT_SKITTISH] is added to the mob.

on_skittish_trait_loss

Called when [TRAIT_SKITTISH] is removed from the mob.

on_standing_up

Proc to append behavior related to lying down.

on_ui_blocked_trait_gain

Called when TRAIT_UI_BLOCKED is added to the mob.

on_ui_blocked_trait_loss

Called when TRAIT_UI_BLOCKED is removed from the mob.

radio

caps the length of individual letters to 3: ex: heeeeeeyy -> heeeyy prevents TTS from choking on unrealistic text while keeping emphasis

refresh_gravity

Handles gravity effects. Call if something about our gravity has potentially changed!

register_init_signals

Called on /mob/living/Initialize(mapload), for the mob to register to relevant signals.

remove_body_temperature_change

remove_body_temperature_change Removes the modifications to the body temperature

This removes the recorded change to body temperature from the body_temp_changes list

arguments:

remove_fov_trait

Removes a trait which limits a user's FOV

remove_movespeed_mod_immunities

Unignores specific slowdowns. Accepts a list of slowdowns.

remove_status_effect

Removes all instances of a given status effect from this mob

removed_effect - TYPEPATH of a status effect to remove. Additional status effect arguments can be passed - these are passed into before_remove.

Returns TRUE if at least one was removed.

remove_stun_absorption

Removes all stub absorptions with the passed source.

Returns TRUE if an effect was deleted, FALSE otherwise

resist_buckle

see defines/combat.dm, this should be baseline 60% Resist chance divided by the value imparted by your grab state. It isn't until you reach neckgrab that you gain a penalty to escaping a grab.

resolve_right_click_attack

Called when an unarmed attack performed with right click hasn't been stopped by the LIVING_UNARMED_ATTACK_BLOCKED macro. This will call a secondary attack proc that can vary from mob type to mob type on the target. Sometimes, a target is interacted differently when right_clicked, in that case the secondary attack proc should return a SECONDARY_ATTACK_* value that's not SECONDARY_ATTACK_CALL_NORMAL. Otherwise, it should just return SECONDARY_ATTACK_CALL_NORMAL. Failure to do so will result in an exception (runtime error).

resolve_unarmed_attack

Called when the unarmed attack hasn't been stopped by the LIVING_UNARMED_ATTACK_BLOCKED macro or the right_click_attack_chain proc. This will call an attack proc that can vary from mob type to mob type on the target.

revive

Proc used to resuscitate a mob, bringing them back to life.

Note that, even if a mob cannot be revived, the healing from this proc will still be applied.

Arguments

right_click_attack_chain

Checks for RIGHT_CLICK in modifiers and runs resolve_right_click_attack if so. Returns TRUE if normal chain blocked.

send_applicable_messages

Send all suicide-related messages out to the world. message_type can be used to change out the dispatched suicide message depending on the suicide context.

setGrabState

Updates the grab state of the mob and updates movespeed

set_body_position

Changes the value of the [living/body_position] variable. Call this before set_lying_angle()

set_buckled

Reports the event of the change in value of the buckled variable.

set_drunk_effect

Directly sets the "drunk value" the mob is currently experiencing to the passed value, or applies a drunk effect with the passed value if the mob isn't currently drunk

set_to - the amount of "drunkness" to set on the mob.

set_facial_hair_gradient_color

Set the facial hair gradient color of a human. Update calls update_body_parts().

set_facial_hair_gradient_style

Set the facial hair gradient style of a human. Update calls update_body_parts().

set_facial_haircolor

Set the facial hair color of a human. Override instead sets the override value, it will not be changed away from the override value until override is set to null. Update calls update_body_parts().

set_facial_hairstyle

Set the facial hair style of a human. Update calls update_body_parts().

set_fire_stacks

Set the fire stacks on a mob

This sets the fire stacks on a mob, stacks are clamped between -20 and 20. If the fire stacks are reduced to 0 then we will extinguish the mob.

Vars:

set_hair_gradient_color

Set the hair gradient color of a human. Update calls update_body_parts().

set_hair_gradient_style

Set the hair gradient style of a human. Update calls update_body_parts().

set_haircolor

Set the hair color of a human. Override instead sets the override value, it will not be changed away from the override value until override is set to null. Update calls update_body_parts().

set_hairstyle

Set the hair style of a human. Update calls update_body_parts().

set_health

Sets the current mob's health value. Do not call directly if you don't know what you are doing, use the damage procs, instead.

set_incapacitated

set_lying_angle

Changes the inclination angle of a mob, used by humans and others to differentiate between standing up and prone positions.

In BYOND-angles 0 is NORTH, 90 is EAST, 180 is SOUTH and 270 is WEST. This usually means that 0 is standing up, 90 and 270 are horizontal positions to right and left respectively, and 180 is upside-down. Mobs that do now follow these conventions due to unusual sprites should require a special handling or redefinition of this proc, due to the density and layer changes. The return of this proc is the previous value of the modified lying_angle if a change was successful (might include zero), or null if no change was made.

set_lying_down

Change the [body_position] to LYING_DOWN and update associated behavior.

set_num_hands

Proc to modify the value of num_hands and hook behavior associated to this event.

set_num_legs

Proc to modify the value of num_legs and hook behavior associated to this event.

set_resting

Proc to hook behavior to the change of value in the resting variable.

set_safe_hunger_level

Sets the mob's hunger levels to a safe overall level. Useful for TRAIT_NOHUNGER species changes.

set_suicide

Proc that handles adding the TRAIT_SUICIDED on the mob in question, as well as additional operations to ensure that everything goes smoothly when we're certain that this person is going to kill themself. suicide_state is a boolean, and we handle adding/removing the trait in question. Have the trait function reference this mob as the source if we want to do in-depth tracking of where a suicided trait comes from. For example, the /mob/dead/observer that will inevitably come from the suicidee will inherit the suicided trait upon creation, and keep this reference. Handy for doing checking should we need it.

set_timed_status_effect

Sets a timed status effect of some kind on a mob to a specific value. If only_if_higher is TRUE, it will only set the value up to the passed duration, so any pre-existing status effects of the same type won't be reduced down

duration - the duration, in deciseconds, of the effect. 0 or lower will either remove the current effect or do nothing if none are present effect - the type of status effect given to the mob only_if_higher - if TRUE, we will only set the effect to the new duration if the new duration is longer than any existing duration

set_usable_hands

Proc to modify the value of usable_hands and hook behavior associated to this event.

set_usable_legs

Proc to modify the value of usable_legs and hook behavior associated to this event.

shared_living_ui_distance

public

Distance versus interaction check.

required src_object atom/movable The object which owns the UI.

return UI_state The state of the UI.

singularity_act

Logs, gibs and returns point values of whatever mob is unfortunate enough to get eaten.

sleeping_carp_help

Verb added to humans who learn the art of the sleeping carp.

spawn_gibs

Spawn bloody gib mess on the floor

drop_bitflags: (see code/__DEFINES/blood.dm)

spill_organs

Drops a mob's organs on the floor

drop_bitflags: (see code/__DEFINES/blood.dm)

spread_bodyparts

Launches all bodyparts away from the mob

drop_bitflags: (see code/__DEFINES/blood.dm)

suicide

Verb to simply kill yourself (in a very visual way to all players) in game! How family-friendly. Can be governed by a series of multiple checks (i.e. confirmation, is it allowed in this area, etc.) which are handled and called by the proc this verb invokes. It's okay to block this, because we typically always give mobs in-game the ability to Ghost out of their current mob irregardless of context. This, in contrast, can have as many different checks as you desire to prevent people from doing the deed to themselves.

suicide_alert

Sends a TGUI Alert to the person attempting to commit suicide. Returns TRUE if they confirm they want to die, FALSE otherwise. Check can_suicide here as well.

suicide_log

Inserts logging in both the mob's logs and the investigate log pertaining to their death. Suicide tool is the object we used to commit suicide, if one was held and used (presently only humans use this arg).

take_bodypart_damage

damage ONE external organ, organ gets randomly selected from damaged ones.

take_overall_damage

damage MANY bodyparts, in random order. note: stamina arg nonfunctional for carbon mobs

taste

Non destructively tastes a reagent container and gives feedback to the user.

toggle_move_intent

Toggle the move intent of the mob

triggers an update the move intent hud as well

tram_slam_land

A proc triggered by callback when someone gets slammed by the tram and lands somewhere.

This proc is used to force people to fall through things like lattice and unplated flooring at the expense of some extra damage, so jokers can't use half a stack of iron rods to make getting hit by the tram immediately lethal.

transfer_blood_to

BLOOD TRANSFERS

treat_message

Treats the passed message with things that may modify speech (stuttering, slurring etc).

message - The message to treat. capitalize_message - Whether we run capitalize() on the message after we're done.

Returns a list, which is a packet of information corresponding to the message that has been treated, which contains the new message, as well as text-to-speech information.

try_catch_item

The core of catching thrown items, which non-carbons cannot without the help of items or abilities yet, as they've no throw mode.

try_inject

Like can_inject, but it can perform side effects.

Arguments:

undense_changed

Called when TRAIT_UNDENSE is gained or lost

unfriend

Proc for removing a friend you added with the proc 'befriend'. Returns true if you removed a friend.

unignore_slowdown

Unignores all slowdowns that lack the IGNORE_NOSLOW flag.

update_fov

Getting a direction vector Calculate angle Calculate vision angle and compare Updates the applied FOV value and applies the handler to client if able

update_fov_client

Updates the FOV for the client.

update_fullscreen

Proc used to handle the fullscreen overlay updates, realistically meant for the reset_perspective() proc.

update_lips

Used to update the makeup on a human and apply/remove lipstick traits, then store/unstore them on the head object in case it gets severed

update_medhud_on_signal

Updates medhud when recieving relevant signals.

update_pipe_vision

Everything related to pipe vision on ventcrawling is handled by update_pipe_vision(). Called on exit, entrance, and pipenet differences (e.g. moving to a new pipenet). One important thing to note however is that the movement of the client's eye is handled by the relaymove() proc in /obj/machinery/atmospherics. We move first and then call update. Dont flip this around

update_resting

Proc to append and redefine behavior to the change of the [/mob/living/var/resting] variable.

update_succumb_action

Called when traits that alter succumbing are added/removed.

Will show or hide the succumb alert prompt.

update_transform

Called whenever the mob is to be resized or when lying/standing up for carbons. IMPORTANT: Multiple animate() calls do not stack well, so try to do them all at once if you can.

update_wound_overlays

Proc that only really gets called for humans, to handle bleeding overlays.

wabbajack

Polymorphs our mob into another mob. If successful, our current mob is qdeleted!

what_to_randomize - what are we randomizing the mob into? See the defines for valid options. change_flags - only used for humanoid randomization (currently), what pool of changeflags should we draw from?

Returns a mob (what our mob turned into) or null (if we failed).

wear_mask_update

Handle stuff to update when a mob equips/unequips a mask.

whisper

Living level whisper.

Living mobs which whisper have their message only appear to people very close.

message - the message to display bubble_type - the type of speech bubble that shows up when they speak (currently does nothing) spans - a list of spans to apply around the message sanitize - whether we sanitize the message language - typepath language to force them to speak / whisper in ignore_spam - whether we ignore the spam filter forced - string source of what forced this speech to happen, also bypasses spam filter / mutes if supplied filterproof - whether we ignore the word filter

will_escape_storage

Whether or not this mob will escape from storages while being picked up/held.

zMove

We want to relay the zmovement to the buckled atom when possible and only run what we can't have on buckled.zMove() or buckled.can_z_move() here. This way we can avoid esoteric bugs, copypasta and inconsistencies.