Files
GS13NG/atom.html
T
2025-02-05 06:19:18 +00:00

163 lines
58 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><link rel="stylesheet" href="dmdoc.css"><title>/atom - /tg/ Station 13</title></head><body><header><a href="index.html">/tg/ Station 13</a> - <a href="index.html#modules">Modules</a> - <a href="index.html#types">Types</a><a href="atom.html#var">Var Details</a> - <a href="atom.html#proc">Proc Details</a></header><main><h1>atom <aside>/<a href="atom.html">atom</a></aside><aside> inherits /<a href="datum.html">datum</a></aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/_rendering/atom_huds/alternate_appearance.dm#L4"><img src="git.png" width="16" height="16" title="code/_rendering/atom_huds/alternate_appearance.dm 4"></a></h1><p>The base type for nearly all physical objects in SS13</p>
<p>Lots and lots of functionality lives here, although in general we are striving to move
as much as possible to the components/elements system</p><table class="summary" cellspacing="0"><tr><td colspan="2"><h2>Vars</h2></td></tr><tr><th><a href="atom.html#var/add_overlays">add_overlays</a></th><td>a very temporary list of overlays to add</td></tr><tr><th><a href="atom.html#var/article">article</a></th><td>If non-null, overrides a/an/some in all cases</td></tr><tr><th><a href="atom.html#var/atom_colours">atom_colours</a></th><td>used to store the different colors on an atom</td></tr><tr><th><a href="atom.html#var/attack_hand_is_action">attack_hand_is_action</a></th><td>Should we set last action for attack hand? This implies that attack_hands to this atom should flush to clickdelay buffers instead of discarding.</td></tr><tr><th><a href="atom.html#var/attack_hand_speed">attack_hand_speed</a></th><td>Amount of time to check for from a mob's last attack to allow an attack_hand().</td></tr><tr><th><a href="atom.html#var/attack_hand_unwieldlyness">attack_hand_unwieldlyness</a></th><td>Amount of time to hard stagger (no clicking at all) the mob post attack_hand(). Lower = better</td></tr><tr><th><a href="atom.html#var/base_icon_state">base_icon_state</a></th><td>Used for changing icon states for different base sprites.</td></tr><tr><th><a href="atom.html#var/chat_color">chat_color</a></th><td>Last color calculated for the the chatmessage overlays</td></tr><tr><th><a href="atom.html#var/chat_color_darkened">chat_color_darkened</a></th><td>A luminescence-shifted value of the last color calculated for chatmessage overlays</td></tr><tr><th><a href="atom.html#var/chat_color_name">chat_color_name</a></th><td>Last name used to calculate a color for the chatmessage overlays</td></tr><tr><th><a href="atom.html#var/custom_materials">custom_materials</a></th><td>The custom materials this atom is made of, used by a lot of things like furniture, walls, and floors (if I finish the functionality, that is.)
The list referenced by this var can be shared by multiple objects and should not be directly modified. Instead, use <a href="atom.html#proc/set_custom_materials" title="/atom">set_custom_materials</a>.</td></tr><tr><th><a href="atom.html#var/custom_premium_price">custom_premium_price</a></th><td>Price of an item in a vending machine, overriding the premium vending machine price. Define in terms of paycheck defines as opposed to raw numbers.</td></tr><tr><th><a href="atom.html#var/custom_price">custom_price</a></th><td>Price of an item in a vending machine, overriding the base vending machine price. Define in terms of paycheck defines as opposed to raw numbers.</td></tr><tr><th><a href="atom.html#var/explosion_block">explosion_block</a></th><td>Value used to increment ex_act() if reactionary_explosions is on</td></tr><tr><th><a href="atom.html#var/explosion_flags">explosion_flags</a></th><td>Flags for explosions</td></tr><tr><th><a href="atom.html#var/fingerprintslast">fingerprintslast</a></th><td>Last fingerprints to touch this atom</td></tr><tr><th><a href="atom.html#var/flags_1">flags_1</a></th><td>First atom flags var</td></tr><tr><th><a href="atom.html#var/hud_list">hud_list</a></th><td>This atom's HUD (med/sec, etc) images. Associative list.</td></tr><tr><th><a href="atom.html#var/hud_possible">hud_possible</a></th><td>HUD images that this atom can provide.</td></tr><tr><th><a href="atom.html#var/interaction_flags_atom">interaction_flags_atom</a></th><td>Intearaction flags</td></tr><tr><th><a href="atom.html#var/managed_overlays">managed_overlays</a></th><td>overlays managed by <a href="atom.html#proc/update_overlays" title="/atom">update_overlays</a> to prevent removing overlays that weren't added by the same proc</td></tr><tr><th><a href="atom.html#var/managed_vis_overlays">managed_vis_overlays</a></th><td>vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays</td></tr><tr><th><a href="atom.html#var/material_flags">material_flags</a></th><td>Bitfield for how the atom handles materials.</td></tr><tr><th><a href="atom.html#var/material_modifier">material_modifier</a></th><td>Modifier that raises/lowers the effect of the amount of a material, prevents small and easy to get items from being death machines.</td></tr><tr><th><a href="atom.html#var/orbit_target">orbit_target</a></th><td>Reference to atom being orbited</td></tr><tr><th><a href="atom.html#var/pass_flags_self">pass_flags_self</a></th><td>pass_flags that we are. If any of this matches a pass_flag on a moving thing, by default, we let them through.</td></tr><tr><th><a href="atom.html#var/proximity_monitor">proximity_monitor</a></th><td>Proximity monitor associated with this atom</td></tr><tr><th><a href="atom.html#var/rad_insulation">rad_insulation</a></th><td>Radiation insulation types</td></tr><tr><th><a href="atom.html#var/reagents">reagents</a></th><td>Reagents holder</td></tr><tr><th><a href="atom.html#var/realized_overlays">realized_overlays</a></th><td>List of overlay &quot;keys&quot; (info about the appearance) -&gt; mutable versions of static appearances
Drawn from the overlays list</td></tr><tr><th><a href="atom.html#var/realized_underlays">realized_underlays</a></th><td>List of underlay &quot;keys&quot; (info about the appearance) -&gt; mutable versions of static appearances
Drawn from the underlays list</td></tr><tr><th><a href="atom.html#var/remove_overlays">remove_overlays</a></th><td>a very temporary list of overlays to remove</td></tr><tr><th><a href="atom.html#var/ricochet_chance_mod">ricochet_chance_mod</a></th><td>When a projectile tries to ricochet off this atom, the projectile ricochet chance is multiplied by this</td></tr><tr><th><a href="atom.html#var/ricochet_damage_mod">ricochet_damage_mod</a></th><td>When a projectile ricochets off this atom, it deals the normal damage * this modifier to this atom</td></tr><tr><th><a href="atom.html#var/targeted_by">targeted_by</a></th><td>Mobs that are currently do_after'ing this atom, to be cleared from on Destroy()</td></tr><tr><th><a href="atom.html#var/wave_explosion_block">wave_explosion_block</a></th><td>Amount to decrease wave explosions by</td></tr><tr><th><a href="atom.html#var/wave_explosion_multiply">wave_explosion_multiply</a></th><td>Amount to multiply wave explosions by</td></tr><tr><td colspan="2"><h2>Procs</h2></td></tr><tr><th><a href="atom.html#proc/AltClickNoInteract">AltClickNoInteract</a></th><td>Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction</td></tr><tr><th><a href="atom.html#proc/CanAllowThrough">CanAllowThrough</a></th><td>Returns true or false to allow the mover to move through src</td></tr><tr><th><a href="atom.html#proc/ComponentInitialize">ComponentInitialize</a></th><td>Put your <a href="code/__DEFINES/dcs/helpers.html#define/AddComponent" title="AddComponent">AddComponent</a> calls here</td></tr><tr><th><a href="atom.html#proc/Destroy">Destroy</a></th><td>Top level of the destroy chain for most atoms</td></tr><tr><th><a href="atom.html#proc/Initialize">Initialize</a></th><td>The primary method that objects are setup in SS13 with</td></tr><tr><th><a href="atom.html#proc/LateInitialize">LateInitialize</a></th><td>Late Intialization, for code that should run after all atoms have run Intialization</td></tr><tr><th><a href="atom.html#proc/New">New</a></th><td>Called when an atom is created in byond (built in engine proc)</td></tr><tr><th><a href="atom.html#proc/_contents">_contents</a></th><td>Wrapper to return a copy of contents, as SDQL2 can't tell an internal list from a normal list.</td></tr><tr><th><a href="atom.html#proc/add_context">add_context</a></th><td>Creates a &quot;Type-B&quot; contextual screentip interaction.
When a user hovers over this, this proc will be called in order
to provide context for contextual screentips.
You must call <code>register_context()</code> in order for this to be registered.
A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
that map to the action as text.
If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
<code>source</code> can, in all cases, be replaced with <code>src</code>, and only exists because this proc directly connects to a signal.</td></tr><tr><th><a href="atom.html#proc/audible_message">audible_message</a></th><td>Show a message to all mobs in earshot of this atom</td></tr><tr><th><a href="atom.html#proc/balloon_alert">balloon_alert</a></th><td>Creates text that will float from the atom upwards to the viewer.</td></tr><tr><th><a href="atom.html#proc/balloon_alert_to_viewers">balloon_alert_to_viewers</a></th><td>Create balloon alerts (text that floats up) to everything within range.
Will only display to people who can see.</td></tr><tr><th><a href="atom.html#proc/bullet_act">bullet_act</a></th><td>React to a hit by a projectile object</td></tr><tr><th><a href="atom.html#proc/check_projectile_ricochet">check_projectile_ricochet</a></th><td>Checks if a projectile should ricochet off of us. Projectiles get final say.
[__DEFINES/projectiles.dm] for return values.</td></tr><tr><th><a href="atom.html#proc/connect_to_shuttle">connect_to_shuttle</a></th><td>Called after a shuttle is loaded <strong>from map template initially</strong>.</td></tr><tr><th><a href="atom.html#proc/examine_more">examine_more</a></th><td>Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_TIME (default 1.5 seconds)</td></tr><tr><th><a href="atom.html#proc/get_examine_string">get_examine_string</a></th><td>Generate the full examine string of this atom (including icon for goonchat)</td></tr><tr><th><a href="atom.html#proc/get_filter_index">get_filter_index</a></th><td>Returns the indice in filters of the given filter name.
If it is not found, returns null.</td></tr><tr><th><a href="atom.html#proc/has_gravity">has_gravity</a></th><td>Returns true if this atom has gravity for the passed in turf</td></tr><tr><th><a href="atom.html#proc/hitby">hitby</a></th><td>React to being hit by a thrown object</td></tr><tr><th><a href="atom.html#proc/hitby_react">hitby_react</a></th><td>We have have actually hit the passed in atom</td></tr><tr><th><a href="atom.html#proc/mat_update_desc">mat_update_desc</a></th><td>This proc is called when a material updates an object's description</td></tr><tr><th><a href="atom.html#proc/mech_melee_attack">mech_melee_attack</a></th><td>Called when a mech melee attacks an atom</td></tr><tr><th><a href="atom.html#proc/ninjadrain_act">ninjadrain_act</a></th><td>Atom level proc for space ninja's glove interactions.</td></tr><tr><th><a href="atom.html#proc/onAwayMission">onAwayMission</a></th><td>Is the atom in an away mission</td></tr><tr><th><a href="atom.html#proc/onCentCom">onCentCom</a></th><td>Is this atom currently located on centcom</td></tr><tr><th><a href="atom.html#proc/onSyndieBase">onSyndieBase</a></th><td>Is the atom in any of the centcom syndicate areas</td></tr><tr><th><a href="atom.html#proc/realize_overlays">realize_overlays</a></th><td>Takes the atoms's existing overlays and underlays, and makes them mutable so they can be properly vv'd in the realized_overlays/underlays list</td></tr><tr><th><a href="atom.html#proc/register_context">register_context</a></th><td>Create a &quot;Type-B&quot; contextual screentip interaction, registering to <code>add_context()</code>.
This will run <code>add_context()</code> when the atom is hovered over by an item for context.
<code>add_context()</code> will <em>not</em> be called unless this is run.
This is not necessary for Type-B interactions, as you can just apply the flag and register to the signal yourself.</td></tr><tr><th><a href="atom.html#proc/rust_heretic_act">rust_heretic_act</a></th><td>Causes effects when the atom gets hit by a rust effect from heretics</td></tr><tr><th><a href="atom.html#proc/setClosed">setClosed</a></th><td>Used to set something as 'closed' if it's being used as a supplypod</td></tr><tr><th><a href="atom.html#proc/setOpened">setOpened</a></th><td>Used to set something as 'open' if it's being used as a supplypod</td></tr><tr><th><a href="atom.html#proc/set_custom_materials">set_custom_materials</a></th><td>Sets the custom materials for an item.</td></tr><tr><th><a href="atom.html#proc/set_light_color">set_light_color</a></th><td>Setter for the light color of this atom.</td></tr><tr><th><a href="atom.html#proc/set_light_range">set_light_range</a></th><td>Setter for the light range of this atom.</td></tr><tr><th><a href="atom.html#proc/shuttleRotate">shuttleRotate</a></th><td>Base proc</td></tr><tr><th><a href="atom.html#proc/update_appearance">update_appearance</a></th><td>Updates the appearence of the icon</td></tr><tr><th><a href="atom.html#proc/update_desc">update_desc</a></th><td>Updates the description of the atom</td></tr><tr><th><a href="atom.html#proc/update_icon">update_icon</a></th><td>Updates the icon of the atom</td></tr><tr><th><a href="atom.html#proc/update_icon_state">update_icon_state</a></th><td>Updates the icon state of the atom</td></tr><tr><th><a href="atom.html#proc/update_name">update_name</a></th><td>Updates the name of the atom</td></tr><tr><th><a href="atom.html#proc/update_overlays">update_overlays</a></th><td>Builds a list of overlays for the atom, this will not apply them.
If you need to update overlays, use [update_icon(UPDATE_OVERLAYS)],
This proc is intended to be overridden.</td></tr><tr><th><a href="atom.html#proc/visible_message">visible_message</a></th><td>Generate a visible message from this atom</td></tr><tr><th><a href="atom.html#proc/wave_ex_act">wave_ex_act</a></th><td>Called when a wave explosion hits this atom.</td></tr><tr><th><a href="atom.html#proc/wave_explode">wave_explode</a></th><td>Called when a wave explosion hits this atom. Do not override this.</td></tr><tr><th><a href="atom.html#proc/zap_act">zap_act</a></th><td>Respond to a electric bolt action on our item</td></tr></table><h2 id="var">Var Details</h2><h3 id="var/add_overlays"><aside class="declaration">var </aside>add_overlays <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L60"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 60"></a></h3><p>a very temporary list of overlays to add</p><h3 id="var/article"><aside class="declaration">var </aside>article <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L17"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 17"></a></h3><p>If non-null, overrides a/an/some in all cases</p><h3 id="var/atom_colours"><aside class="declaration">var </aside>atom_colours <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L55"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 55"></a></h3><p>used to store the different colors on an atom</p>
<p>its inherent color, the colored paint applied on it, special color effect etc...</p><h3 id="var/attack_hand_is_action"><aside class="declaration">var </aside>attack_hand_is_action <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/mob/clickdelay.dm#L169"><img src="git.png" width="16" height="16" title="code/modules/mob/clickdelay.dm 169"></a></h3><p>Should we set last action for attack hand? This implies that attack_hands to this atom should flush to clickdelay buffers instead of discarding.</p><h3 id="var/attack_hand_speed"><aside class="declaration">var </aside>attack_hand_speed <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/mob/clickdelay.dm#L165"><img src="git.png" width="16" height="16" title="code/modules/mob/clickdelay.dm 165"></a></h3><p>Amount of time to check for from a mob's last attack to allow an attack_hand().</p><h3 id="var/attack_hand_unwieldlyness"><aside class="declaration">var </aside>attack_hand_unwieldlyness <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/mob/clickdelay.dm#L167"><img src="git.png" width="16" height="16" title="code/modules/mob/clickdelay.dm 167"></a></h3><p>Amount of time to hard stagger (no clicking at all) the mob post attack_hand(). Lower = better</p><h3 id="var/base_icon_state"><aside class="declaration">var </aside>base_icon_state <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L111"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 111"></a></h3><p>Used for changing icon states for different base sprites.</p><h3 id="var/chat_color"><aside class="declaration">var </aside>chat_color <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L106"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 106"></a></h3><p>Last color calculated for the the chatmessage overlays</p><h3 id="var/chat_color_darkened"><aside class="declaration">var </aside>chat_color_darkened <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L108"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 108"></a></h3><p>A luminescence-shifted value of the last color calculated for chatmessage overlays</p><h3 id="var/chat_color_name"><aside class="declaration">var </aside>chat_color_name <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L104"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 104"></a></h3><p>Last name used to calculate a color for the chatmessage overlays</p><h3 id="var/custom_materials"><aside class="declaration">var </aside>custom_materials <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L88"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 88"></a></h3><p>The custom materials this atom is made of, used by a lot of things like furniture, walls, and floors (if I finish the functionality, that is.)
The list referenced by this var can be shared by multiple objects and should not be directly modified. Instead, use <a href="atom.html#proc/set_custom_materials" title="/atom">set_custom_materials</a>.</p><h3 id="var/custom_premium_price"><aside class="declaration">var </aside>custom_premium_price <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L77"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 77"></a></h3><p>Price of an item in a vending machine, overriding the premium vending machine price. Define in terms of paycheck defines as opposed to raw numbers.</p><h3 id="var/custom_price"><aside class="declaration">var </aside>custom_price <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L75"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 75"></a></h3><p>Price of an item in a vending machine, overriding the base vending machine price. Define in terms of paycheck defines as opposed to raw numbers.</p><h3 id="var/explosion_block"><aside class="declaration">var </aside>explosion_block <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L40"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 40"></a></h3><p>Value used to increment ex_act() if reactionary_explosions is on</p><h3 id="var/explosion_flags"><aside class="declaration">var </aside>explosion_flags <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L43"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 43"></a></h3><p>Flags for explosions</p><h3 id="var/fingerprintslast"><aside class="declaration">var </aside>fingerprintslast <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L70"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 70"></a></h3><p>Last fingerprints to touch this atom</p><h3 id="var/flags_1"><aside class="declaration">var </aside>flags_1 <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L20"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 20"></a></h3><p>First atom flags var</p><h3 id="var/hud_list"><aside class="declaration">var </aside>hud_list <aside> /list/image</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L35"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 35"></a></h3><p>This atom's HUD (med/sec, etc) images. Associative list.</p><h3 id="var/hud_possible"><aside class="declaration">var </aside>hud_possible <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L37"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 37"></a></h3><p>HUD images that this atom can provide.</p><h3 id="var/interaction_flags_atom"><aside class="declaration">var </aside>interaction_flags_atom <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L22"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 22"></a></h3><p>Intearaction flags</p><h3 id="var/managed_overlays"><aside class="declaration">var </aside>managed_overlays <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L65"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 65"></a></h3><p>overlays managed by <a href="atom.html#proc/update_overlays" title="/atom">update_overlays</a> to prevent removing overlays that weren't added by the same proc</p><h3 id="var/managed_vis_overlays"><aside class="declaration">var </aside>managed_vis_overlays <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L63"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 63"></a></h3><p>vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays</p><h3 id="var/material_flags"><aside class="declaration">var </aside>material_flags <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L90"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 90"></a></h3><p>Bitfield for how the atom handles materials.</p><h3 id="var/material_modifier"><aside class="declaration">var </aside>material_modifier <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L92"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 92"></a></h3><p>Modifier that raises/lowers the effect of the amount of a material, prevents small and easy to get items from being death machines.</p><h3 id="var/orbit_target"><aside class="declaration">var </aside>orbit_target <aside> /<a href="atom.html">atom</a></aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L119"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 119"></a></h3><p>Reference to atom being orbited</p><h3 id="var/pass_flags_self"><aside class="declaration">var </aside>pass_flags_self <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L13"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 13"></a></h3><p>pass_flags that we are. If any of this matches a pass_flag on a moving thing, by default, we let them through.</p><h3 id="var/proximity_monitor"><aside class="declaration">var </aside>proximity_monitor <aside> /<a href="datum.html">datum</a>/proximity_monitor</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L68"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 68"></a></h3><p>Proximity monitor associated with this atom</p><h3 id="var/rad_insulation"><aside class="declaration">var </aside>rad_insulation <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L84"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 84"></a></h3><p>Radiation insulation types</p><h3 id="var/reagents"><aside class="declaration">var </aside>reagents <aside> /<a href="datum.html">datum</a>/<a href="datum/reagents.html">reagents</a></aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L32"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 32"></a></h3><p>Reagents holder</p><h3 id="var/realized_overlays"><aside class="declaration">var </aside>realized_overlays <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/controllers/subsystem/overlays.dm#L143"><img src="git.png" width="16" height="16" title="code/controllers/subsystem/overlays.dm 143"></a></h3><p>List of overlay &quot;keys&quot; (info about the appearance) -&gt; mutable versions of static appearances
Drawn from the overlays list</p><h3 id="var/realized_underlays"><aside class="declaration">var </aside>realized_underlays <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/controllers/subsystem/overlays.dm#L148"><img src="git.png" width="16" height="16" title="code/controllers/subsystem/overlays.dm 148"></a></h3><p>List of underlay &quot;keys&quot; (info about the appearance) -&gt; mutable versions of static appearances
Drawn from the underlays list</p><h3 id="var/remove_overlays"><aside class="declaration">var </aside>remove_overlays <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L58"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 58"></a></h3><p>a very temporary list of overlays to remove</p><h3 id="var/ricochet_chance_mod"><aside class="declaration">var </aside>ricochet_chance_mod <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L27"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 27"></a></h3><p>When a projectile tries to ricochet off this atom, the projectile ricochet chance is multiplied by this</p><h3 id="var/ricochet_damage_mod"><aside class="declaration">var </aside>ricochet_damage_mod <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L29"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 29"></a></h3><p>When a projectile ricochets off this atom, it deals the normal damage * this modifier to this atom</p><h3 id="var/targeted_by"><aside class="declaration">var </aside>targeted_by <aside> /list</aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L114"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 114"></a></h3><p>Mobs that are currently do_after'ing this atom, to be cleared from on Destroy()</p><h3 id="var/wave_explosion_block"><aside class="declaration">var </aside>wave_explosion_block <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L45"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 45"></a></h3><p>Amount to decrease wave explosions by</p><h3 id="var/wave_explosion_multiply"><aside class="declaration">var </aside>wave_explosion_multiply <aside> </aside> <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L47"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 47"></a></h3><p>Amount to multiply wave explosions by</p><h2 id="proc">Proc Details</h2><h3 id="proc/AltClickNoInteract"><aside class="declaration">proc </aside>AltClickNoInteract<aside>(/<a href="mob.html">mob</a>/user, /<a href="atom.html">atom</a>/A) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/_onclick/click.dm#L397"><img src="git.png" width="16" height="16" title="code/_onclick/click.dm 397"></a></aside></h3><p>Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction</p><h3 id="proc/CanAllowThrough"><aside class="declaration">proc </aside>CanAllowThrough<aside>(/<a href="atom.html">atom</a>/<a href="atom/movable.html">movable</a>/mover, /<a href="turf.html">turf</a>/target) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L291"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 291"></a></aside></h3><p>Returns true or false to allow the mover to move through src</p><h3 id="proc/ComponentInitialize"><aside class="declaration">proc </aside>ComponentInitialize<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L224"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 224"></a></aside></h3><p>Put your <a href="code/__DEFINES/dcs/helpers.html#define/AddComponent" title="AddComponent">AddComponent</a> calls here</p><h3 id="proc/Destroy"><aside class="parent"><a title="/datum" href="datum.html#proc/Destroy"></a></aside>Destroy<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L237"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 237"></a></aside></h3><p>Top level of the destroy chain for most atoms</p>
<p>Cleans up the following:</p>
<ul>
<li>Removes alternate apperances from huds that see them</li>
<li>qdels the reagent holder from atoms if it exists</li>
<li>clears the orbiters list</li>
<li>clears overlays and priority overlays</li>
<li>clears the light object</li>
</ul><h3 id="proc/Initialize"><aside class="declaration">proc </aside>Initialize<aside>(mapload, ...) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L178"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 178"></a></aside></h3><p>The primary method that objects are setup in SS13 with</p>
<p>we don't use New as we have better control over when this is called and we can choose
to delay calls or hook other logic in and so forth</p>
<p>During roundstart map parsing, atoms are queued for intialization in the base atom/New(),
After the map has loaded, then Initalize is called on all atoms one by one. NB: this
is also true for loading map templates as well, so they don't Initalize until all objects
in the map file are parsed and present in the world</p>
<p>If you're creating an object at any point after SSInit has run then this proc will be
immediately be called from New.</p>
<p>mapload: This parameter is true if the atom being loaded is either being intialized during
the Atom subsystem intialization, or if the atom is being loaded from the map template.
If the item is being created at runtime any time after the Atom subsystem is intialized then
it's false.</p>
<p>You must always call the parent of this proc, otherwise failures will occur as the item
will not be seen as initalized (this can lead to all sorts of strange behaviour, like
the item being completely unclickable)</p>
<p>You must not sleep in this proc, or any subprocs</p>
<p>Any parameters from new are passed through (excluding loc), naturally if you're loading from a map
there are no other arguments</p>
<p>Must return an <a href="code/__DEFINES/subsystems.html#define/INITIALIZE_HINT_NORMAL" title="INITIALIZE_HINT_NORMAL">initialization hint</a> or a runtime will occur.</p>
<p>Note: the following functions don't call the base for optimization and must copypasta handling:</p>
<ul>
<li><a href="turf.html#proc/Initialize" title="/turf">/turf/proc/Initialize</a></li>
<li><a href="turf/open/space.html#proc/Initialize" title="/turf/open/space">/turf/open/space/proc/Initialize</a></li>
</ul><h3 id="proc/LateInitialize"><aside class="declaration">proc </aside>LateInitialize<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L220"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 220"></a></aside></h3><p>Late Intialization, for code that should run after all atoms have run Intialization</p>
<p>To have your LateIntialize proc be called, your atoms <a href="atom.html#proc/Initialize" title="/atom">Initalization</a>
proc must return the hint
<a href="code/__DEFINES/subsystems.html#define/INITIALIZE_HINT_LATELOAD" title="INITIALIZE_HINT_LATELOAD">INITIALIZE_HINT_LATELOAD</a> otherwise you will never be called.</p>
<p>useful for doing things like finding other machines on GLOB.machines because you can guarantee
that all atoms will actually exist in the &quot;WORLD&quot; at this time and that all their Intialization
code has been run</p><h3 id="proc/New">New<aside>(loc, ...) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L129"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 129"></a></aside></h3><p>Called when an atom is created in byond (built in engine proc)</p>
<p>Not a lot happens here in SS13 code, as we offload most of the work to the
<a href="atom.html#proc/Initialize" title="/atom">Intialization</a> proc, mostly we run the preloader
if the preloader is being used and then call <a href="datum/controller/subsystem/atoms.html#proc/InitAtom" title="/datum/controller/subsystem/atoms">InitAtom</a> of which the ultimate
result is that the Intialize proc is called.</p>
<p>We also generate a tag here if the DF_USE_TAG flag is set on the atom</p><h3 id="proc/_contents"><aside class="declaration">proc </aside>_contents<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm#L253"><img src="git.png" width="16" height="16" title="code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm 253"></a></aside></h3><p>Wrapper to return a copy of contents, as SDQL2 can't tell an internal list from a normal list.</p><h3 id="proc/add_context"><aside class="declaration">proc </aside>add_context<aside>(/<a href="atom.html">atom</a>/source, /list/context, /<a href="obj.html">obj</a>/<a href="obj/item.html">item</a>/held_item, /<a href="mob.html">mob</a>/<a href="mob/living.html">living</a>/user) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/datums/screentips/atom_context.dm#L17"><img src="git.png" width="16" height="16" title="code/datums/screentips/atom_context.dm 17"></a></aside></h3><p>Creates a &quot;Type-B&quot; contextual screentip interaction.
When a user hovers over this, this proc will be called in order
to provide context for contextual screentips.
You must call <code>register_context()</code> in order for this to be registered.
A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
that map to the action as text.
If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
<code>source</code> can, in all cases, be replaced with <code>src</code>, and only exists because this proc directly connects to a signal.</p><h3 id="proc/audible_message"><aside class="declaration">proc </aside>audible_message<aside>(message, deaf_message, hearing_distance, self_message, ignored_mobs) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/mob/mob.dm#L207"><img src="git.png" width="16" height="16" title="code/modules/mob/mob.dm 207"></a></aside></h3><p>Show a message to all mobs in earshot of this atom</p>
<p>Use for objects performing audible actions</p>
<p>vars:</p>
<ul>
<li>message is the message output to anyone who can hear.</li>
<li>deaf_message (optional) is what deaf people will see.</li>
<li>hearing_distance (optional) is the range, how many tiles away the message can be heard.</li>
<li>ignored_mobs (optional) doesn't show any message to any given mob in the list.</li>
</ul><h3 id="proc/balloon_alert"><aside class="declaration">proc </aside>balloon_alert<aside>(/<a href="mob.html">mob</a>/viewer, text) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/balloon_alert/balloon_alert.dm#L12"><img src="git.png" width="16" height="16" title="code/modules/balloon_alert/balloon_alert.dm 12"></a></aside></h3><p>Creates text that will float from the atom upwards to the viewer.</p><h3 id="proc/balloon_alert_to_viewers"><aside class="declaration">proc </aside>balloon_alert_to_viewers<aside>(message, self_message, vision_distance, /list/ignored_mobs) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/balloon_alert/balloon_alert.dm#L19"><img src="git.png" width="16" height="16" title="code/modules/balloon_alert/balloon_alert.dm 19"></a></aside></h3><p>Create balloon alerts (text that floats up) to everything within range.
Will only display to people who can see.</p><h3 id="proc/bullet_act"><aside class="declaration">proc </aside>bullet_act<aside>(/<a href="obj.html">obj</a>/<a href="obj/item.html">item</a>/<a href="obj/item/projectile.html">projectile</a>/P, def_zone, piercing_hit) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L477"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 477"></a></aside></h3><p>React to a hit by a projectile object</p>
<p>Default behaviour is to send the <a href="code/__DEFINES/dcs/signals.html#define/COMSIG_ATOM_BULLET_ACT" title="COMSIG_ATOM_BULLET_ACT">COMSIG_ATOM_BULLET_ACT</a> and then call [on_hit][/obj/item/projectile/proc/on_hit] on the projectile</p>
<p>@params
P - projectile
def_zone - zone hit
piercing_hit - is this hit piercing or normal?</p><h3 id="proc/check_projectile_ricochet"><aside class="declaration">proc </aside>check_projectile_ricochet<aside>(/<a href="obj.html">obj</a>/<a href="obj/item.html">item</a>/<a href="obj/item/projectile.html">projectile</a>/P) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L263"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 263"></a></aside></h3><p>Checks if a projectile should ricochet off of us. Projectiles get final say.
[__DEFINES/projectiles.dm] for return values.</p><h3 id="proc/connect_to_shuttle"><aside class="declaration">proc </aside>connect_to_shuttle<aside>(/<a href="obj.html">obj</a>/<a href="obj/docking_port.html">docking_port</a>/<a href="obj/docking_port/mobile.html">mobile</a>/port, /<a href="obj.html">obj</a>/<a href="obj/docking_port.html">docking_port</a>/stationary/dock, idnum, override) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L1182"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 1182"></a></aside></h3><p>Called after a shuttle is loaded <strong>from map template initially</strong>.</p>
<p>@params</p>
<ul>
<li>port - Mobile port/shuttle</li>
<li>dock - Stationary dock the shuttle's at</li>
<li>idnum - ID number of the shuttle</li>
</ul><h3 id="proc/examine_more"><aside class="declaration">proc </aside>examine_more<aside>(/<a href="mob.html">mob</a>/user) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L560"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 560"></a></aside></h3><p>Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_TIME (default 1.5 seconds)</p>
<p>This is where you can put extra information on something that may be superfluous or not important in critical gameplay
moments, while allowing people to manually double-examine to take a closer look</p>
<p>Produces a signal <a href="code/__DEFINES/dcs/signals.html#define/COMSIG_PARENT_EXAMINE_MORE" title="COMSIG_PARENT_EXAMINE_MORE">COMSIG_PARENT_EXAMINE_MORE</a></p><h3 id="proc/get_examine_string"><aside class="declaration">proc </aside>get_examine_string<aside>(/<a href="mob.html">mob</a>/user, thats) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L515"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 515"></a></aside></h3><p>Generate the full examine string of this atom (including icon for goonchat)</p><h3 id="proc/get_filter_index"><aside class="declaration">proc </aside>get_filter_index<aside>(name) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L1365"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 1365"></a></aside></h3><p>Returns the indice in filters of the given filter name.
If it is not found, returns null.</p><h3 id="proc/has_gravity"><aside class="declaration">proc </aside>has_gravity<aside>(/<a href="turf.html">turf</a>/T) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L1418"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 1418"></a></aside></h3><p>Returns true if this atom has gravity for the passed in turf</p>
<p>Sends signals COMSIG_ATOM_HAS_GRAVITY and COMSIG_TURF_HAS_GRAVITY, both can force gravity with
the forced gravity var</p>
<p>Gravity situations:</p>
<ul>
<li>No gravity if you're not in a turf</li>
<li>No gravity if this atom is in is a space turf</li>
<li>Gravity if the area it's in always has gravity</li>
<li>Gravity if there's a gravity generator on the z level</li>
<li>Gravity if the Z level has an SSMappingTrait for ZTRAIT_GRAVITY</li>
<li>otherwise no gravity</li>
</ul><h3 id="proc/hitby"><aside class="declaration">proc </aside>hitby<aside>(/<a href="atom.html">atom</a>/<a href="atom/movable.html">movable</a>/hitting_atom, skipcatch, hitpush, blocked, /<a href="datum.html">datum</a>/<a href="datum/thrownthing.html">thrownthing</a>/throwingdatum) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L703"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 703"></a></aside></h3><p>React to being hit by a thrown object</p>
<p>Default behaviour is to call <a href="atom.html#proc/hitby_react" title="/atom">hitby_react</a> on ourselves after 2 seconds if we are dense
and under normal gravity.</p>
<p>Im not sure why this the case, maybe to prevent lots of hitby's if the thrown object is
deleted shortly after hitting something (during explosions or other massive events that
throw lots of items around - singularity being a notable example)</p><h3 id="proc/hitby_react"><aside class="declaration">proc </aside>hitby_react<aside>(/<a href="atom.html">atom</a>/<a href="atom/movable.html">movable</a>/harmed_atom) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L713"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 713"></a></aside></h3><p>We have have actually hit the passed in atom</p>
<p>Default behaviour is to move back from the item that hit us</p><h3 id="proc/mat_update_desc"><aside class="declaration">proc </aside>mat_update_desc<aside>(/<a href="datum.html">datum</a>/<a href="datum/material.html">material</a>/mat) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/datums/materials/_material.dm#L96"><img src="git.png" width="16" height="16" title="code/datums/materials/_material.dm 96"></a></aside></h3><p>This proc is called when a material updates an object's description</p><h3 id="proc/mech_melee_attack"><aside class="declaration">proc </aside>mech_melee_attack<aside>(/<a href="obj.html">obj</a>/<a href="obj/vehicle.html">vehicle</a>/<a href="obj/vehicle/sealed/mecha.html">sealed/mecha</a>/mecha_attacker) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/vehicles/mecha/mech_melee_attack.dm#L2"><img src="git.png" width="16" height="16" title="code/modules/vehicles/mecha/mech_melee_attack.dm 2"></a></aside></h3><p>Called when a mech melee attacks an atom</p><h3 id="proc/ninjadrain_act"><aside class="declaration">proc </aside>ninjadrain_act<aside>(/<a href="obj.html">obj</a>/<a href="obj/item.html">item</a>/<a href="obj/item/clothing.html">clothing</a>/<a href="obj/item/clothing/suit/space/space_ninja.html">suit/space/space_ninja</a>/ninja_suit, /<a href="mob.html">mob</a>/<a href="mob/living.html">living</a>/<a href="mob/living/carbon.html">carbon</a>/<a href="mob/living/carbon/human.html">human</a>/ninja, /<a href="obj.html">obj</a>/<a href="obj/item.html">item</a>/<a href="obj/item/clothing.html">clothing</a>/<a href="obj/item/clothing/gloves/space_ninja.html">gloves/space_ninja</a>/ninja_gloves) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/ninja/suit/ninjaDrainAct.dm#L11"><img src="git.png" width="16" height="16" title="code/modules/ninja/suit/ninjaDrainAct.dm 11"></a></aside></h3><p>Atom level proc for space ninja's glove interactions.</p>
<p>Proc which only occurs when space ninja uses his gloves on an atom.
Does nothing by default, but effects will vary.
Arguments:</p>
<ul>
<li>ninja_suit - The offending space ninja's suit.</li>
<li>ninja - The human mob wearing the suit.</li>
<li>ninja_gloves - The offending space ninja's gloves.</li>
</ul><h3 id="proc/onAwayMission"><aside class="declaration">proc </aside>onAwayMission<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L366"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 366"></a></aside></h3><p>Is the atom in an away mission</p>
<p>Must be in the away mission z-level to return TRUE</p>
<p>Also used in gamemode code for win conditions</p><h3 id="proc/onCentCom"><aside class="declaration">proc </aside>onCentCom<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L309"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 309"></a></aside></h3><p>Is this atom currently located on centcom</p>
<p>Specifically, is it on the z level and within the centcom areas</p>
<p>You can also be in a shuttleshuttle during endgame transit</p>
<p>Used in gamemode to identify mobs who have escaped and for some other areas of the code
who don't want atoms where they shouldn't be</p><h3 id="proc/onSyndieBase"><aside class="declaration">proc </aside>onSyndieBase<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L346"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 346"></a></aside></h3><p>Is the atom in any of the centcom syndicate areas</p>
<p>Either in the syndie base on centcom, or any of their shuttles</p>
<p>Also used in gamemode code for win conditions</p><h3 id="proc/realize_overlays"><aside class="declaration">proc </aside>realize_overlays<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/controllers/subsystem/overlays.dm#L157"><img src="git.png" width="16" height="16" title="code/controllers/subsystem/overlays.dm 157"></a></aside></h3><p>Takes the atoms's existing overlays and underlays, and makes them mutable so they can be properly vv'd in the realized_overlays/underlays list</p><h3 id="proc/register_context"><aside class="declaration">proc </aside>register_context<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/datums/screentips/atom_context.dm#L5"><img src="git.png" width="16" height="16" title="code/datums/screentips/atom_context.dm 5"></a></aside></h3><p>Create a &quot;Type-B&quot; contextual screentip interaction, registering to <code>add_context()</code>.
This will run <code>add_context()</code> when the atom is hovered over by an item for context.
<code>add_context()</code> will <em>not</em> be called unless this is run.
This is not necessary for Type-B interactions, as you can just apply the flag and register to the signal yourself.</p><h3 id="proc/rust_heretic_act"><aside class="declaration">proc </aside>rust_heretic_act<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L1455"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 1455"></a></aside></h3><p>Causes effects when the atom gets hit by a rust effect from heretics</p>
<p>Override this if you want custom behaviour in whatever gets hit by the rust</p><h3 id="proc/setClosed"><aside class="declaration">proc </aside>setClosed<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L1471"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 1471"></a></aside></h3><p>Used to set something as 'closed' if it's being used as a supplypod</p>
<p>Override this if you want an atom to be usable as a supplypod.</p><h3 id="proc/setOpened"><aside class="declaration">proc </aside>setOpened<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L1463"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 1463"></a></aside></h3><p>Used to set something as 'open' if it's being used as a supplypod</p>
<p>Override this if you want an atom to be usable as a supplypod.</p><h3 id="proc/set_custom_materials"><aside class="declaration">proc </aside>set_custom_materials<aside>(/list/materials, multiplier) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L1387"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 1387"></a></aside></h3><p>Sets the custom materials for an item.</p><h3 id="proc/set_light_color"><aside class="declaration">proc </aside>set_light_color<aside>(new_color) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/lighting/lighting_atom.dm#L157"><img src="git.png" width="16" height="16" title="code/modules/lighting/lighting_atom.dm 157"></a></aside></h3><p>Setter for the light color of this atom.</p><h3 id="proc/set_light_range"><aside class="declaration">proc </aside>set_light_range<aside>(new_range) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/lighting/lighting_atom.dm#L147"><img src="git.png" width="16" height="16" title="code/modules/lighting/lighting_atom.dm 147"></a></aside></h3><p>Setter for the light range of this atom.</p><h3 id="proc/shuttleRotate"><aside class="declaration">proc </aside>shuttleRotate<aside>(rotation, params) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/shuttle/shuttle_rotate.dm#L9"><img src="git.png" width="16" height="16" title="code/modules/shuttle/shuttle_rotate.dm 9"></a></aside></h3><p>Base proc</p><h3 id="proc/update_appearance"><aside class="declaration">proc </aside>update_appearance<aside>(updates) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L574"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 574"></a></aside></h3><p>Updates the appearence of the icon</p>
<p>Mostly delegates to update_name, update_desc, and update_icon</p>
<p>Arguments:</p>
<ul>
<li>updates: A set of bitflags dictating what should be updated. Defaults to [ALL]</li>
</ul><h3 id="proc/update_desc"><aside class="declaration">proc </aside>update_desc<aside>(updates) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L593"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 593"></a></aside></h3><p>Updates the description of the atom</p><h3 id="proc/update_icon"><aside class="declaration">proc </aside>update_icon<aside>(updates) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L598"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 598"></a></aside></h3><p>Updates the icon of the atom</p><h3 id="proc/update_icon_state"><aside class="declaration">proc </aside>update_icon_state<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L627"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 627"></a></aside></h3><p>Updates the icon state of the atom</p><h3 id="proc/update_name"><aside class="declaration">proc </aside>update_name<aside>(updates) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L588"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 588"></a></aside></h3><p>Updates the name of the atom</p><h3 id="proc/update_overlays"><aside class="declaration">proc </aside>update_overlays<aside>() <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L636"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 636"></a></aside></h3><p>Builds a list of overlays for the atom, this will not apply them.
If you need to update overlays, use [update_icon(UPDATE_OVERLAYS)],
This proc is intended to be overridden.</p><h3 id="proc/visible_message"><aside class="declaration">proc </aside>visible_message<aside>(message, self_message, blind_message, vision_distance, ignored_mobs, /<a href="mob.html">mob</a>/target, target_message, omni) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/modules/mob/mob.dm#L143"><img src="git.png" width="16" height="16" title="code/modules/mob/mob.dm 143"></a></aside></h3><p>Generate a visible message from this atom</p>
<p>Show a message to all player mobs who sees this atom</p>
<p>Show a message to the src mob (if the src is a mob)</p>
<p>Use for atoms performing visible actions</p>
<p>message is output to anyone who can see, e.g. &quot;The [src] does something!&quot;</p>
<p>Vars:</p>
<ul>
<li>self_message (optional) is what the src mob sees e.g. &quot;You do something!&quot;</li>
<li>blind_message (optional) is what blind people will hear e.g. &quot;You hear something!&quot;</li>
<li>vision_distance (optional) define how many tiles away the message can be seen.</li>
<li>ignored_mobs (optional) doesn't show any message to any given mob in the list.</li>
<li>target (optional) is the other mob involved with the visible message. For example, the attacker in many combat messages.</li>
<li>target_message (optional) is what the target mob will see e.g. &quot;[src] does something to you!&quot;</li>
<li>omni (optional) if TRUE, will show to users no matter what.</li>
</ul><h3 id="proc/wave_ex_act"><aside class="declaration">proc </aside>wave_ex_act<aside>(power, /<a href="datum.html">datum</a>/<a href="datum/wave_explosion.html">wave_explosion</a>/explosion, dir) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L681"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 681"></a></aside></h3><p>Called when a wave explosion hits this atom.</p>
<p>Returns explosion power to &quot;allow through&quot;. Standard handling and flag overrides in [wave_explode()].</p><h3 id="proc/wave_explode"><aside class="declaration">proc </aside>wave_explode<aside>(power, /<a href="datum.html">datum</a>/<a href="datum/wave_explosion.html">wave_explosion</a>/explosion, dir) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L662"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 662"></a></aside></h3><p>Called when a wave explosion hits this atom. Do not override this.</p>
<p>Returns explosion power to &quot;allow through&quot;.</p><h3 id="proc/zap_act"><aside class="declaration">proc </aside>zap_act<aside>(power, zap_flags, shocked_targets) <a href="https://github.com/evilew/GS13-Citadel/blob/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e/code/game/atoms.dm#L911"><img src="git.png" width="16" height="16" title="code/game/atoms.dm 911"></a></aside></h3><p>Respond to a electric bolt action on our item</p>
<p>Default behaviour is to return, we define here to allow for cleaner code later on</p></main><footer>tgstation.dme <a href="https://github.com/evilew/GS13-Citadel/tree/e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e">e8e0068</a> (master) — <a href="https://github.com/SpaceManiac/SpacemanDMM/blob/master/crates/dmdoc/README.md">dmdoc 1.9.0</a></footer></body></html>