__DEFINES - This folder is full of #define statements. They are similar to constants,
but must come before any code that references them, and they do not take up
memory the way constants do.
render_plate - Custom rendering solution to allow for advanced effects
We (ab)use plane masters and render source/target to cheaply render 2+ planes as 1
if you want to read more read the _render_readme.md
materials - How material datums work
Materials are now instanced datums, with an associative list of them being kept in SSmaterials. We only instance the materials once and then re-use these instances for everything.
edible - This component makes it possible to make things edible. What this means is that you can take a bite or force someone to take a bite (in the case of items).
These items take a specific time to eat, and can do most of the things our original food items could.
material_container - This datum should be used for handling mineral contents of machines and whatever else is supposed to hold minerals and make use of them.
swabbing - This component is used in vat growing to swab for microbiological samples which can then be mixed with reagents in a petridish to create a culture plate.
Contextual screentips (and when to not use this folder) - Contextual screentips provide information in the form of text at the top of your screen to inform you of the possibilities of an item. The "contextual" here refers to this being handled entirely through code, what it displays and when is completely up to you.
Progression Traitor Balance Guide - This guide will explain how the values for progression traitor works, how to balance progression traitors and what you should NOT do when balancing.
This guide will only explain progression values.
Preferences (by Mothblocks) - This does not contain all the information on specific values--you can find those as doc-comments in relevant paths, such as /datum/preference. Rather, this gives you an overview for creating most preferences, and getting your foot in the door to create more advanced ones.
In-code keypress handling system - This whole system is heavily based off of forum_account's keyboard library.
Thanks to forum_account for saving the day, the library can be found
here!
language/language_holder - Language holders will either exist in an atom/movable or a mind. Creation of language holders happens
automatically when they are needed, for example when something tries to speak.
Where a mind is available, the mind language holder will be the one "in charge". The mind holder
will update its languages based on the atom holder, and will get updated as part of
transformations and other events that cause new languages to become available.
screenshots - This folder contains the results for screenshot tests. Screenshot tests make sure an icon looks the same as it did before a change to prevent regressions.
emissive_blocker - Internal atom that copies an appearance on to the blocker plane
plane_master_controller - Atom that manages and controls multiple planes. It's an atom so we can hook into add_filter etc. Multiple controllers can control one plane.
colorblind - Controller of all planes we're ok with changing with colorblind logic
render_plane_relay - Render relay object assigned to a plane master to be able to relay it's render onto other planes that are not it's own
ready - Button that appears before the game has started
map_view - A screen object, which acts as a container for turfs and other things
you want to show on the map, which you usually attach to "vis_contents".
blackness - Plane master handling byond internal blackness
vars are set as to replicate behavior when rendering to other planes
do not touch this unless you know what you are doing
emissive - Handles emissive overlays and emissive blockers.
floor - Contains just the floor
game_world - Contains most things in the game world
lighting - Contains all lighting objects
openspace_backdrop - Things rendered on "openspace"; holes in multi-z
consume - This action lets you consume the mob you're currently pulling. I'M GONNA CONSUUUUUME (this is considered one of the funny memes in the 2019-2020 era)
addiction - base class for addiction, handles when you become addicted and what the effects of that are. By default you become addicted when you hit a certain threshold, and stop being addicted once you go below another one.
alcohol - Alcohol
medicine - Makes you a hypochondriac - I'd like to call it hypochondria, but "I could use some hypochondria" doesn't work
basic_controller/cow/moonicorn - stop killing my FRIENDS
cursed item ai! - Haunted AI tries to not be interacted with, and will attack people who do.
Cursed AI instead tries to be interacted with, and will attempt to equip itself onto people.
Added by /datum/element/cursed, and as such will try to remove this element and go dormant when it finds a victim to curse
ai_module - The base module type, which holds info about each ability.
destructive - Modules causing destruction
blackout - Blackout: Overloads a random number of lights across the station. Three uses.
destroy_rcd - Destroy RCDs: Detonates all non-cyborg RCDs on the station.
lockdown - Hostile Station Lockdown: Locks, bolts, and electrifies every airlock on the station. After 90 seconds, the doors reset.
megahonk - HIGH IMPACT HONKING
nuke_station - Doomsday Device: Starts the self-destruct timer. It can only be stopped by killing the AI completely.
overload_machine - Overload Machine: Allows the AI to overload a machine, detonating it after a delay. Two uses per purchase.
override_machine - Override Machine: Allows the AI to override a machine, animating it into an angry, living version of itself.
upgrade - Modules that are improving AI abilities and assets
eavesdrop - Enhanced Surveillance: Enables AI to hear conversations going on near its active vision.
mecha_domination - Unlock Mech Domination: Unlocks the ability to dominate mechs. Big shocker, right?
upgrade_cameras - Upgrade Camera Network: EMP-proofs all cameras, in addition to giving them X-ray vision.
upgrade_turrets - AI Turret Upgrade: Increases the health and damage of all turrets.
utility - Modules with stealthy and utility uses
break_air_alarms - Air Alarm Safety Override: Unlocks the ability to enable flooding on all air alarms.
break_fire_alarms - Thermal Sensor Override: Unlocks the ability to disable all fire alarms from doing their job.
emergency_lights - Disable Emergency Lights
place_cyborg_transformer - Robotic Factory: Places a large machine that converts humans that go through it into cyborgs. Unlocking this ability removes shunting.
reactivate_cameras - Reactivate Camera Network: Reactivates up to 30 cameras across the station.
ai_movement - This datum is an abstract class that can be overriden for different types of movement
dumb - The most braindead type of movement, bee-line to the target with no concern of whats infront of us.
jps - This movement datum represents smart-pathing
ai_planning_subtree - A subtree is attached to a controller and is occasionally called by /ai_controller/SelectBehaviors(), this mainly exists to act as a way to subtype and modify SelectBehaviors() without needing to subtype the ai controller itself
enemy_of_the_revolution - When the revolution wins, any remaining heads and security become Enemies of the Revolution.
Previously being nonantagonists, they only have one simple objective: survive!
enemy_of_the_state - When the station wins, any remaining living headrevs become Enemies of the State, a small solo antagonist.
They either have the choice to fuck off and do their own thing, or try and regain their honor with a hijack.
body_zones - Spritesheet for body zones. Necessary if your tgui uses BodyZoneSelector
namespaced - Namespace'ed assets (for static css and html files)
When sent over a cdn transport, all assets in the same asset datum will exist in the same folder, as their plain names.
Used to ensure css files can reference files by url() without having to generate the css at runtime, both the css file and the files it depends on must exist in the same namespace asset datum. (Also works for html)
For example blah.css with asset blah.png will get loaded as namespaces/a3d..14f/f12..d3c.css and namespaces/a3d..14f/blah.png. allowing the css file to load blah.png by a relative url rather then compute the generated url with get_url_mappings().
The namespace folder's name will change if any of the assets change. (excluding parent assets)
centcom_announcer - Data holder for the announcers that can be used in a game, this can be used to have alternative announcements outside of the default e.g.the intern
metalgen - Random recipe for meme chem metalgen. Always requires wittel and resets every 3 days
slime - End example
surfactant - foam and foam precursor
virus_food - VIROLOGY
cinematic - Cinematic datum. Used to show an animation to everyone.
cult_arm - A blood cult summoned Nar'sie, and most of the station was harvested or converted!
cult_fail - A blood cult summoned Nar'sie, but some badass (or admin) managed to destroy Nar'sie themselves.
malf - A malfunctioning AI has activated the doomsday device and wiped the station!
nuke - Simple, base cinematic for all animations based around a nuke detonating.
clown - The clown operative nuclear bomb was activated and clowned the station!
cult - A blood cult summoned Nar'sie, but central command deployed a nuclear package to stop them.
fake - A fake version of the nuclear detonation, where it winds up, but doesn't explode.
far_explosion - The syndicate nuclear bomb was activated, but just missed the station by a whole z-level!
mutual_destruction - The syndicate nuclear bomb was activated, and the nuclear operatives failed to extract on their shuttle before it detonated on the station!
no_core - A fake version of the nuclear detonation, where it winds up, but doesn't explode as the nuke core within was missing.
ops_miss - The syndicate nuclear bomb was activated, but just barely missed the station!
ops_victory - The syndicate nuclear bomb was activated, and destroyed the station!
self_destruct - The self destruct, or another station-destroying entity like a blob, destroyed the station!
self_destruct_miss - The self destruct was activated, yet somehow avoided destroying the station!
circuit_composite_template - A template used to make composite datatypes for circuits.
Used so that we don't have to generate every single possible combination of types
circuit_datatype - A circuit datatype. Used to determine the datatype of a port and also handle any additional behaviour.
circuit_variable - A circuit variable that holds the name, the datatype and the colour of the variable (taken from the datatype).
client_colour - Client Colour Priority System By RemieRichards (then refactored by another contributor)
A System that gives finer control over which client.colour value to display on screen
so that the "highest priority" one is always displayed as opposed to the default of
"whichever was set last is displayed".
client_interface - This should match the interface of /client wherever necessary.
colorblind_tester - Used to test the game for issues with different types of color blindness
WARNING ASSHOLE: Because we can only apply matrixes, and can't preform gamma correction
https://web.archive.org/web/20220227030606/https://ixora.io/projects/colorblindness/color-blindness-simulation-research/
The results of this tool aren't perfect. It's way better then nothing, but IT IS NOT A PROPER SIMULATION
Please do not make us look like assholes by assuming it is. Thanks.
colored_assistant - Defines a style of jumpsuit/jumpskirt for assistants.
Jumpsuit and jumpskirt lists should match in colors, as they are used interchangably.
solid - Will pick one color, and stick with it
command_report_menu - Datum for holding the TGUI window for command reports.
admin_popup - Applied to clients when they receive an admin popup, alerting them to
their ticket.
anti_magic - This provides different types of magic resistance on an object
aquarium_content - Allows movables to be inserted/displayed in aquariums.
area_sound_manager - Allows you to set a theme for a set of areas without tying them to looping sounds explicitly
areabound - Movables with this component will automatically return to their original turf if moved outside their initial area
atmos_reaction_recorder - Component for atmos-related atoms to be able to record and transmit their reaction_results data
Use this ONLY for atoms, gasmixtures will be accessed by calling return air on the object.
Add this component after gasmixes has been initialized.
aura_healing - Applies healing to those in the area.
Will provide them with an alert while they're in range, as well as
give them a healing particle.
Can be applied to those only with a trait conditionally.
bakeable - This component indicates this object can be baked in an oven.
bloodysoles - Component for clothing items that can pick up blood from decals and spread it around everywhere when walking, such as shoes or suits with integrated shoes.
feet - Like its parent but can be applied to carbon mobs instead of clothing items
boomerang - If an ojvect is given the boomerang component, it should be thrown back to the thrower after either hitting it's target, or landing on the thrown tile.
Thrown objects should be thrown back to the original thrower with this component, a number of tiles defined by boomerang_throw_range.
clickbox - This component adds a near-invisible underlay to a movable target to expand the clickable surface of its icon without
resorting to MOUSE_OPACITY_OPAQUE.
The underlay ignores the parent's color and alpha and can be offset.
The name is a portmanteau of "click" and "hitbox", because technically this isn't an hitbox,
but it helps catch clicks, and I don't want to give it a loooong name like openspace_item_click_handler
clothing_fov_visor - An element to add a FOV trait to the wearer, removing it when an item is unequipped, but only as long as the visor is up.
codeword_hearing - Component that allows for highlighting of words or phrases in chat based on regular expressions.
connect_containers - This component behaves similar to connect_loc_behalf, but it's nested and hooks a signal onto all MOVABLES containing this atom.
connect_loc_behalf - This component behaves similar to connect_loc, hooking into a signal on a tracked object's turf
It has the ability to react to that signal on behalf of a separate listener however
This has great use, primarily for components, but it carries with it some overhead
So we do it separately as it needs to hold state which is very likely to lead to bugs if it remains as an element.
connect_mob_behalf - This component behaves similar to connect_loc_behalf, but working off clients and mobs instead of loc
To be clear, we hook into a signal on a tracked client's mob
We retain the ability to react to that signal on a seperate listener, which makes this quite powerful
connect_range - This component behaves similar to connect_loc_behalf but for all turfs in range, hooking into a signal on each of them.
Just like connect_loc_behalf, It can react to that signal on behalf of a seperate listener.
Good for components, though it carries some overhead. Can't be an element as that may lead to bugs.
container_item - Container item, an item which can be stored by specialized containers.
tank_holder - Tank holder item - Added to an object which can be added to a tank holder.
convey - Manages the loop caused by being on a conveyor belt
Prevents movement while you're floating, etc
Takes the direction to move, delay between steps, and time before starting to move as arguments
cracked - Tracks damage to add or remove crack overlays, when none are needed this components is qdeleted
crate_carrier - Component for simplemobs and basicmobs that allow them to carry crates.
curse_of_hunger - curse of hunger component; for very hungry items.
customizable_reagent_holder - check hp
poisoned food damages it
no food found, but you're dead: it bites you slightly, and doesn't regain health.
no food found: it bites you and regains some health.
dejavu - A component to reset the parent to its previous state after some time passes
timeline - differently themed dejavu for modsuits.
deployable - Deployable - Bring your big guns with you, and smack em' down where you want.
drift - Component that handles drifting
Manages a movement loop that actually does the legwork of moving someone
Alongside dealing with the post movement input blocking required to make things look nice
egg layer component! - Component that manages how many eggs to lay, what can be fed to the mob to make them lay more, and what is actually laid.
Since the only real interaction with the component is an attackby, the nice part is that we're able to make this an atom level proc.
egg_layer will loudly fail if you do not provide it the arguments, as to encourage explicicy(?)
electrified_buckle component: - attach it to any atom/movable that can be buckled to in order to have it shock mobs buckled to it. by default it shocks mobs buckled to parent every shock_loop_time.
the parent is supposed to define its behavior with arguments in AddComponent
engraved component! - component for walls that applies an engraved overlay and lets you examine it to read a story (+ art element yay)
new creations will get a high art value, cross round scrawlings will get a low one.
MUST be a component, though it doesn't look like it. SSPersistence demandeth
Experiment Handler - This is the component for interacting with experiments from a connected techweb. It is generic
and should be set-up to automatically work on any class it is attached to without outside code
(Excluding potential callbacks)
explodable - Component specifically for explosion sensetive things, currently only applies to heat based explosions but can later perhaps be used for things that are dangerous to handle carelessly like nitroglycerin.
food_storage - --Food storage component--
This component lets you slide one item into large foods, such as bread, cheese wheels, or cakes.
Consuming food storages with an item inside can cause unique interactions, such as eating glass shards.
force_move - Forced directional movement, but with a twist
Let's block pressure and client movements while doing it so we can't be interrupted
Supports spinning on each move, for lube related reasons
fov_handler - Component which handles Field of View masking for clients. FoV attributes are at /mob/living
gas_leaker - A component to leak gas over time from damaged objects with gas storage
geiger_sound - Atoms with this component will play sounds depending on nearby radiation
genetic_damage - Genetic damage, given by DNA consoles, will start to deal toxin damage
past a certain threshold, and will go down consistently.
Adding multiple of this component will increase the total damage.
Can turn monkeys into gorillas.
gps - GPS component. Atoms that have this show up on gps. Pretty simple stuff.
item - GPS component subtype. Only gps/item's can be used to open the UI.
hazard_area - This is a relatively simple component that attempts to deter the parent of the component away
from a specific area or areas. By default it simply applies a penalty where all movement is
four times slower than usual and any action that would affect your 'next move' has a penalty
multiplier of 4 attached.
heirloom - Heirloom component. For use with the family heirloom quirk, tracks that an item is someone's family heirloom.
knockoff - Items with this component will have a chance to get knocked off
(unequipped and sent to the ground) when the wearer is disarmed or knocked down.
light_eater - Makes anything it attaches to capable of removing something's ability to produce light until it is destroyed
Living Heart Component - Applied to a heart to turn it into a heretic's 'living heart'.
The living heart is what they use to track people they need to sacrifice.
Mind Linker - A component that handles linking multiple player's minds
into one network which allows them to talk directly to one another.
Like telepathy but for multiple people at once!
multiple_lives - Sanity is low, stay addicted.
A simple component that spawns a mob of the same type and transfers itself to it when parent dies.
For more complex behaviors, use the COMSIG_ON_MULTIPLE_LIVES_RESPAWN comsig.
omen - omen.dm: For when you want someone to have a really bad day
overlay_lighting - Movable atom overlay-based lighting component.
palette - A component that stores colors for use by painting-related items like spraycans or palettes
which can be accessed through a radial menu by right clicking the item while it's held by the user mob.
Right-clicking a color will open a color input prompt to edit it. Left clicking will instead select it
and call set_painting_tool_color() on the parent for more specific object behavior.
payment - Handles simple payment operations where the cost of the object in question doesn't change.
acidic_input - Special connect that we currently use for reaction chambers. Being used so we can keep certain inputs separate, like into a special internal acid container
alkaline_input - Special connect that we currently use for reaction chambers. Being used so we can keep certain inputs separate, like into a special internal base container
buffer - Baby component for the buffer plumbing machine
filter - The magical plumbing component used by the chemical filters. The different supply connects behave differently depending on the filters set on the chemical filter
iv_drip - Component for IVs that tracks the current person being IV'd. Input received through plumbing is instead routed to the whoever is attached
simple_demand - has one pipe input that only takes, example is manual output pipe
simple_supply - has one pipe output that only supplies. example is liquid pump and manual input pipe
puzzgrid - Attaches a puzzgrid to the atom.
You are expected to pass in the puzzgrid, likely from create_random_puzzgrid().
This is so you can handle when a puzzgrid can't be generated, either because the
config does not exist, or because the config is not set up properly.
radiation_countdown - Begins the countdown before a target can be irradiated.
Added by the radiation subsystem when a pulse information has a minimum exposure time.
Will clear itself out after a while.
religious_tool - Allows the parent to act similarly to the Altar of Gods with modularity. Invoke and Sect Selection is done via attacking with a bible. This means you cannot sacrifice Bibles (you shouldn't want to do this anyways although now that I mentioned it you probably will want to).
subtype_picker - subtype picker component allows for an item to transform into its subtypes (this is not enforced and you can turn in whatever types, but
i used this name as it was incredibly accurate for current usage of the behavior)
traitor_objective_register - Helper component that registers signals on an object
This is not necessary to use and gives little control over the conditions
zparallax - Component that hooks into the client, listens for COMSIG_MOVABLE_Z_CHANGED, and depending on whether or not the
Z-level has ZTRAIT_NOPARALLAX enabled, disable or reenable parallax.
computer_file
data - Data files. Doesn't really hold many important functionalities, here for organization.
allow_admin_asaycolor - allows admins with relevant permissions to have a personalized asay color
allow_admin_ooccolor - allows admins with relevant permissions to have their own ooc colour
allow_vote_map - allow votes to change map
allow_vote_restart - allow votes to restart
autoadmin - if autoadmin is enabled
default_no_vote - If disabled, no-voters will automatically have their votes added to certain vote options
(For eample: restart votes will default to "no restart", map votes will default to their preferred map / default map)
hub - if the game appears on the hub or not
log_access - log login/logout
log_admin - log admin actions
log_adminchat - log admin chat messages
log_asset - log assets
log_attack - log attack messages
log_econ - log economy actions
log_emote - log emotes
log_game - log game events
log_job_debug - log roundstart divide occupations debug information to a file
master - Start of queue linked list
End of queue linked list (used for appending to the list)
Are we loading in a new map?
for scheduling different subsystems for different stages of the round
decompose_matrix - Datum which stores information about a matrix decomposed with decompose().
design - Design Datums
All the data for building stuff.
advmop - Janitor Designs
alienscalpel - Alien Surgical Tools
alienwrench - Alien Tools
basic_cell - Power
beacon - Bluespace
board - Computer Boards
aicore - AI Module Disks
electrolyzer - MISC Boards
ripley_main - Mecha Module Disks
subspace_receiver - Subspace Telecomms
borg_upgrade_rename - Borg Upgrades
bucket - Autolathe Designs
c38/sec - Weapons
cargo_express - Mining
cyberimp_welding - Cybernetic Implants
design_disk - Disk Construction Disks
disk/normal - Computer Parts
fishing_rod_tech - Fishing Equipment
handdrill - Tools
health_hud - HUDs
healthanalyzer - Medical Tools
holosign - Holobarriers
restaurant - Restaurant Equipment
implanter - Regular Implants
intellicard - Non-Board Computer Stuff
leftarm - Limb Grower Designs
mech_scattershot - Mecha Equpment
milk - Biogenerator Designs
plasteel_alloy - SMELTABLE ALLOYS
reactive_armour - Armour
rped - Stock Parts
seclite - Security
super_sticky_tape - Tape
surgery - Surgery Designs
tackle_dolphin - Tackle Gloves
welding_goggles - Misc
discord_embed - Documentation for the embed object and all of its variables can be found at
https://discord.com/developers/docs/resources/channel#embed-object
It is recommended to read the documentation on the discord website, as the information below could become outdated in the future.
discord_link_record - Represents a record from the discord link table in a nicer format
traitor - Probability the AI going malf will be accompanied by an ion storm announcement and some ion laws.
The probability to replace an existing law with an ion law instead of adding a new ion law.
dynamic_snapshot - A "snapshot" of dynamic at an important point in time.
Exported to JSON in the dynamic.json log file.
trail_follow - ///// Attach a trail to any object, that spawns when it moves (like for the jetpack)
just pass in the object to attach it to in set_up
Then do start() to start it and stop() to stop it, obviously
and don't call start() in a loop that will be repeated otherwise it'll get spammed!
element - A holder for simple behaviour that can be attached to many different types
animal variety element! - bespoke element that picks an suffix to append onto the icon state from a list given on creation, among some pixel shifting stuff
basically you will see VARIETY in a batch of simplemobs.
atmos_requirements - Atmos effect - Yes, you can make creatures that require plasma or co2 to survive. N2O is a trace gas and handled separately, hence why it isn't here. It'd be hard to add it. Hard and me don't mix (Yes, yes make all the dick jokes you want with that.) - Errorage
Leaving something at 0 means it's off - has no maximum.
This damage is taken when atmos doesn't fit all the requirements above.
backblast - When attached to a gun and the gun is successfully fired, this element creates a "backblast" of fire and pain, like you'd find in a rocket launcher or recoilless rifle
bane - Deals extra damage to mobs of a certain type or species.
basic_body_temp_sensitive - When attached to a basic mob, it gives it the ability to be hurt by cold/hot body temperatures
beauty - Beauty element. It makes the indoor area the parent is in prettier or uglier depending on the beauty var value.
Clean and well decorated areas lead to positive moodlets for passerbies;
Shabbier, dirtier ones lead to negative moodlets EXCLUSIVE to characters with the snob quirk.
bed_tuckable - Tucking element, for things that can be tucked into bed.
blood_walk - Blood walk, a bespoke element that causes you to make blood wherever you walk.
connect_loc - This element hooks a signal onto the loc the current object is on.
When the object moves, it will unhook the signal and rehook it to the new object.
contextual_screentip_bare_hands - Apply basic contextual screentips when the user hovers over this item with an empty hand.
A "Type B" interaction.
This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
contextual_screentip_item_typechecks - Apply basic contextual screentips when the user hovers over this item with a provided item.
A "Type B" interaction.
This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
contextual_screentip_tools - Apply basic contextual screentips when the user hovers over this item with an item of the given tool behavior.
A "Type B" interaction.
This stacks with other contextual screentip elements, though you may want to register the signal/flag manually at that point for performance.
crackable - Adds crack overlays to an object when integrity gets low
curse announcement element! - Bespoke element that sends a harrowing message when you first pick up an item, applying a spooky color outline and renaming the item.
For most items, it will announce when picked up. If the item can be equipped, though, it will only announce when the item is worn.
Possible improvements for the future: add an option to allow the cursed affix to be a prefix. right now only coded for suffixes
cursed element! - Attaching this element to something will make it float, and get a special ai controller!
haunted - Attaching this element to something will make it float, get a special ai controller, and gives it a spooky outline.
heretic_focus - Heretic focus element, simple element for making an item a heretic focus,
allowing heretics to cast advanced spells (examine message included).
honkspam - Attachable to items. Plays a bikehorn sound whenever attack_self is called (with a cooldown).
item_fov - An element to unconditonally add a FOV trait to the wearer, removing it when an item is unequipped
item_scaling - Element for scaling item appearances in the overworld or in inventory/storage.
kneecapping - Kneecapping element replaces the item's secondary attack with an aimed attack at the kneecaps under certain circumstances.
kneejerk - An element which enables certain items to tap people on their knees to measure brain health
knockback - Mobs and items with this element will knock movable targets they hit away from them.
Guns and turrets will instead fire projectiles with similar effects.
lifesteal - Heals the user (if attached to an item) or the mob itself (if attached to a hostile simple mob)
by a flat amount whenever a successful attack is performed against another living mob.
light_blocking - Attached to movable atoms with opacity. Listens to them move and updates their old and new turf loc's opacity accordingly.
light_eaten - Makes anything that it attaches to incapable of producing light
light_eater - Makes anything it attaches to capable of permanently removing something's ability to produce light.
movement_turf_changer - movement_turf_changer element; which makes the movement of a movable atom change the turf it moved to
movetype_handler - An element that enables and disables movetype bitflags whenever the relative traits are added or removed.
It also handles the +2/-2 pixel y anim loop typical of mobs possessing the FLYING or FLOATING movetypes.
This element is necessary for the TRAIT_MOVE_ traits to work correctly, so make sure to attach this element
before adding them to non-living movables.
nerfed_pulling - This living will be slower when pulling/moving anything in the given typecache
obj_regen - Object integrity regeneration element added by alien alloy.
openspace_item_click_handler - allow players to easily use items such as iron rods, rcds on open space without
having to pixelhunt for portions not occupied by object or mob visuals.
Pet bonus element! - Bespoke element that plays a fun message, sends a heart out, and gives a stronger mood bonus when you pet this animal.
I may have been able to make this work for carbons, but it would have been interjecting on some help mode interactions anyways.
plant_backfire - -- Plant backfire element --
Certain high-danger plants, like death-nettles, will backfire and harm the holder if they're not properly protected.
If a user is protected with something like leather gloves, they can handle them normally.
If they're not protected properly, we invoke a callback on the user, harming or inconveniencing them.
point_of_interest - Designates the atom as a "point of interest", meaning it can be directly orbited
prevent_attacking_of_types - This hostile will not be able to attack a given typecache, and will receive
a balloon alert when it tries to.
radiation_protected_clothing - Marks the item as being radiation protected.
Adds the TRAIT_RADIATION_PROTECTED_CLOTHING trait, as well as adding an
extra bit to the examine descrpition.
radioactive - This atom will regularly pulse radiation.
As this is only applied on uranium objects for now, this defaults to uranium constants.
ranged_attacks - This proc is used by basic mobs to give them a simple ranged attack! In theory this could be extended to
ridable - This element is used to indicate that a movable atom can be mounted by mobs in order to ride it. The movable is considered mounted when a mob is buckled to it,
at which point a riding component is created on the movable, and that component handles the actual riding behavior.
rust - Adding this element to an atom will have it automatically render an overlay.
The overlay can be specified in new as the first paramter; if not set it defaults to rust_overlay's rust_default
simple flying element! - Non bespoke element (1 in existence) that makes animals fly while living and... not while dead!
Note: works for carbons and above, but please do something better. humans have wings got dangit!
undertile - Add to an object if you want to be able to be hidden under tiles
venomous - Venomous element; which makes the attacks of the simplemob attached poison the enemy.
venue_price - This component can be used to give something value for venues
volatile_gas_storage - An element to make an /obj explode based on gas pressure when broken
wall_engraver - An element that lets you engrave walls when right click is used
weapon_description - The purpose of this element is to widely provide the ability to examine an object and determine its stats, with the ability to add
additional notes or information based on type or other factors
weather_listener - This element just handles creating and destroying an area sound manager that's hooked into weather stuff
Emote - Most of the text that's not someone talking is based off of this.
ordnance - A ordnance experiment datum. What gives the science in the first place.
One is instantiated by the techweb, another one is also kept on SSresearch for the briefing.
A disk should contain several of these in a list. Only one should get picked for the final paper.
machinery_tiered_scan - This experiment type will turn up TRUE if at least one of the stock parts in the scanned machine is of the required_tier.
Pretend to upgrade security's techfab but in reality apply only one better matter bin!
food - Original Food export file got eaten somewhere along the line and I have no idea when or where it got completely deleted.
Foods given a venue value are exportable to cargo as a backup to selling from venues, however at the expense of elasticity.
large/gas_canister - Gas canister exports.
I'm going to put a quick aside here as this has been a pain to balance for several years now, and I'd like to at least break how to keep gas exports tame.
So: Gasses are sold in canisters below, which have a variable amount of maximum pressure before they start to break. The largest of which is 9.2e13 kPa.
This means we can determine a theoretical maximum value for gas sale prices using the ideal gas laws, as we know we have a minimum gas temperature of 2.7 kelvin.
fish_source - Where the fish actually come from - every fishing spot has one assigned but multiple fishing holes can share single source, ie single shared one for ocean/lavaland river
Families gamemode / dynamic ruleset handler - A special datum used by the families gamemode and dynamic rulesets to centralize code. "Family" and "gang" used interchangeably in code.
gang_theme - Gang themes for the Families gamemode. Used to determine the RP theme of the round, what gangs are present, and what their objectives are.
pluox_formation - If n2o-plasma ratio is less than 1:3 start decomposing n2o.
Rate of decomposition vs BZ production increases as n2o concentration gets lower
Plasma acts as a catalyst on decomposition, so it doesn't get consumed in the process.
N2O decomposes with its normal decomposition energy
color_matrix - A layer to modify the previous layer's colors with a color matrix
icon_state - The most basic greyscale layer; a layer which is created from a single icon_state in the given icon file
reference - A layer created by using another greyscale icon's configuration
greyscale_modify_menu - The controller for the ui in charge of all runtime greyscale configuration/debug.
If Unlock() is not called the menu is safe for players to use.
spray_paint - Used for spray painting items in the gags_recolorable component
hallucination
fake_health_doll - Causes the target to see incorrect health damages on the healthdoll
xeno_attack - Xeno crawls from nearby vent,jumps at you, and goes back in
Heretic Knowledge - The datums that allow heretics to progress and learn new spells and rituals.
amber_focus - Allows the heretic to craft a spell focus.
They require a focus to cast advanced spells.
highlander_controller - The highlander controller handles the admin highlander mode, if enabled.
It is first created when "there can only be one" triggers it, and it can be referenced from GLOB.highlander_controller
id_trim - Simple datum that holds the basic information associated with an ID card trim.
admin - Trim for admins and debug cards. Has every single access in the game.
away - Generic away/pffstation trim.
cat_surgeon - Trim for the cat surgeon ruin.
hilbert - Trim for Hilber in Hilbert's Hotel.
hotel - Trim for the hotel ruin. Not Hilbert's Hotel.
security - Trim for the hotel ruin. Not Hilbert's Hotel.
old
apc - Trim for the oldstation ruin/Charlie station to access APCs and other equipment
eng - Trim for the oldstation ruin/Charlie station
robo - Trim for the oldstation ruin/Charlie station to access robots, and downloading of paper publishing software for experiments
sci - Trim for the oldstation ruin/Charlie station
sec - Trim for the oldstation ruin/Charlie station
battlecruiser - Trim for Syndicate mobs, outfits and corpses.
captain - Trim for Syndicate mobs, outfits and corpses.
bounty_hunter - Trim for Bounty Hunters NOT hired by centcom. (?)
centcom - Trim for basic Centcom cards.
admiral - Trim for Centcom (Soviet) Admirals. All Centcom and Station Access.
bartender - Trim for Centcom Bartenders.
bounty_hunter - Trim for Bounty Hunters hired by centcom.
commander - Trim for Centcom Commanders. All Centcom and Station Access.
corpse
assault - Trim for various Centcom corpses.
bridge_officer - Trim for various Centcom corpses.
commander - Trim for various Centcom corpses.
private_security - Trim for various Centcom corpses.
tradepost_officer - Trim for various Centcom corpses.
custodian - Trim for Centcom Custodians.
deathsquad - Trim for Deathsquad officers. All Centcom and Station Access.
ert - Trim for generic ERT interns. No universal ID card changing access.
chaplain - Trim for generic ERT chaplains. No universal ID card changing access.
clown - Trim for generic ERT clowns. No universal ID card changing access.
commander - Trim for ERT Commanders. All station and centcom access.
engineer - Trim for generic ERT engineers. No universal ID card changing access.
janitor - Trim for generic ERT janitors. No universal ID card changing access.
medical - Trim for generic ERT medics. No universal ID card changing access.
security - Trim for generic ERT seccies. No universal ID card changing access.
intern - Trim for Centcom Interns.
head - Trim for Centcom Head Interns. Different assignment, common station access added on.
medical_officer - Trim for Centcom Medical Officers.
official - Trim for Centcom Officials.
research_officer - Trim for Centcom Research Officers.
specops_officer - Trim for Centcom Specops Officers. All Centcom and Station Access.
thunderdome_overseer - Trim for Centcom Thunderdome Overseers.
vip - Trim for Centcom VIPs
chameleon - Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards.
operative - Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards.
clown - Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards.
clown_leader - Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards.
nuke_leader - Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards.
engioutpost - Trim for various various ruins.
highlander - Trim for highlander cards, used during the highlander adminbus event.
job - This file contains all the trims associated with station jobs.
It also contains special prisoner trims and the miner's spare ID trim.
ID Trims for station jobs.
Instrument Datums - Instrument datums hold the data for any given instrument, as well as data on how to play it and what bounds there are to playing it.
instrument_key - Instrument key datums contain everything needed to know how to play a specific
note of an instrument.*
interview - Represents a new-player interview form
Interview Manager - Handles all interviews in the duration of a round, includes the primary functionality for
handling the interview queue.
servant_golem - For late joiners, we're forced to put them in an alone department at some point.
unassigned - This type is used to indicate a lack of a job.
The mind variable assigned_role will point here by default.
As any other job datum, this is a singleton.
job_department - Singleton representing a category of jobs forming a department.
assistant - A special assistant only department, primarily for use by the preferences menu
captain - A special captain only department, for use by the preferences menu
undefined - Catch-all department for undefined jobs.
jps_node - The JPS Node datum represents a turf that we find interesting enough to add to the open list and possibly search for new tiles from
json_reader - Takes a json list and extracts a single value.
Subtypes represent different conversions of that value.
lift_master - coordinate and control movement across linked industrial_lift's. allows moving large single multitile platforms and many 1 tile platforms.
also is capable of linking platforms across linked z levels
map_generator - This type is responsible for any map generation behavior that is done in areas, override this to allow for area-specific map generation. This generation is ran by areas in initialize.
biomass - Force decrease and mushy sound effect. (Not yet implemented)
bluespace - Can cause bluespace effects on use. (Teleportation) (Not yet implemented)
diamond - Has no special properties
glass - Breaks extremely easily but is transparent.
gold - Slight force increase
iron - Has no special properties.
meat - It's gross, gets the name of it's owner, and is all kinds of fucked up
mythril - RPG Magic.
plasma - Adds firestacks on hit (Still needs support to turn into gas on destruction)
plastic - Force decrease
silver - Has no special properties. Could be good against vampires in the future perhaps.
titanium - Mediocre force increase
uranium - Is slightly radioactive
memory - little tidbits of past events generated by the player doing things. can be used in engravings, dreams, and changeling succs.
all of those things are supposed to be taken vaguely (engravings crossround and should not include names, dreams and succs are memory goop)
and as such the generated text of the memory is vague. also, no references held so hard delling isn't an issue, thank god
merger - A datum that tracks a type or types of objects in a cluster
move_loop - Template class of the movement datums, handles the timing portion of the loops
disposal_holder - Disposal holders need to move through a chain of pipes
Rather then through the world. This supports this
If this ever changes, get rid of this, add drift component like logic to the holder
And move them to move()
move_towards - Used as a alternative to walk_towards
move_towards_budget - The actual implementation of walk_towards()
move - Replacement for walk()
move_rand - This isn't actually the same as walk_rand
Because walk_rand is really more like walk_to_rand
It appears to pick a spot outside of range, and move towards it, then pick a new spot, etc.
I can't actually replicate this on our side, because of how bad our pathfinding is, and cause I'm not totally sure I know what it's doing.
I can just implement a random-walk though
move_to_rand - Wrapper around step_rand
movement_detector - A datum to handle the busywork of registering signals to handle in depth tracking of a movable
movement_packet - A packet of information that describes the current state of a moving object
all_access - steal a shit ton of unique ids, escape with them. The part that makes this not "hold a box of blank ids" is the fact they need a registered bank account
assassinate/obsessed - CREEPY objectives (few chosen per obsession)
chronicle - exactly what it sounds like, steal someone's heirloom.
black_hole - Black Hole - final (emag can spawn singulo, see death event)
black_hole_death - You died to a black hole, have some fluff text
electronic_part - Malfunction - spend one engine part or wait 3 days (emag effect randomizes some stats)
engine_part - Engine Breakdown - spend one engine part or wait 3 days (harmless emag effect)
hull_part - Collision - spend one engine part or wait 3 days (has a nasty emag effect)
space_port - You found a space port!
tau_ceti - You found the midway mark!
space_port_raid - You raided a space port!
Outfit datums - This is a clean system of applying outfits to mobs, if you need to equip someone in a uniform
this is the way to do it cleanly and properly.
job/scientist/consistent - A version of the scientist outfit that is guaranteed to be the same every time
stacks_in_hands - See #66313 and #60901. outfit_sanity used to runtime whenever you had two mergable sheets in either hand. Previously, this only had a 3% chance of occuring. Now 100%.
pai_candidate - Created when a user clicks the "pAI candidate" window
chem_cooling - This trait is the opposite of above - it cools down the plant's chemical contents on harvest.
This requires nutriment to fuel. 1u nutriment = -5 K.
chem_heating - This trait automatically heats up the plant's chemical contents when harvested.
This requires nutriment to fuel. 1u nutriment = 25 K.
eyes - A plant trait that causes the plant to gain aesthetic googly eyes.
fire_resistance - Makes the plant and its seeds fireproof. From lavaland plants.
gas_production - Corpseflower's miasma production.
Can be generalized in the future to spawn any gas, but I don't think that's necessarily a good idea.
juicing - Similar to auto-distilling, but instead of brewing the plant's contents it juices it.
maxchem - A plant trait that causes the plant's capacity to double.
mob_transformation - Traits for plants that can be activated to turn into a mob.
shroom - Walking Mushroom's transformation gene
tomato - Killer Tomato's transformation gene.
modified_volume - Traits for plants with a different base max_volume.
cherry_bomb - Cherry Bomb's increased max volume gene
omega_weed - Omegaweed's funny 420 max volume gene
never_mutate - Prevents species mutation, while still allowing wild mutation harvest and Floral Somatoray species mutation. Trait acts as a tag for hydroponics.dm to recognise.
one_bite - Traiit for plants eaten in 1 bite.
plant_laughter - Plays a laughter sound when someone slips on it.
Like the sitcom component but for plants.
Just like slippery skin, if we have a trash type this only functions on that. (Banana peels)
plant_type - Plant type traits. Incompatible with one another.
alien_properties - Currently unused and does nothing. Appears in strange seeds.
fungal_metabolism - Mushrooms need less light and have a minimum yield.
weed_hardy - Weeds don't get annoyed by weeds in their tray.
preserved - Traits for flowers, makes plants not decompose.
repeated_harvest - Allows a plant to be harvested multiple times.
choiced - A preference that is a choice of one option among a fixed set.
Used for preferences such as clothing.
ai_core_display - What to show on the AI screen
backpack - Backpack preference
brief_outfit - What outfit to equip when spawning as a briefing officer for an ERT
gender - Gender preference
ghost_accessories - Determines what accessories your ghost will look like they have.
ghost_form - Determines the appearance of your ghost to others, when you are a BYOND member
ghost_lighting - How bright a ghost's lighting plane is
ghost_orbit - Determines what ghosts orbiting look like to you.
ghost_others - Determines how to show other ghosts
jumpsuit - Jumpsuit preference
mod_select - Switches between mouse buttons for MODsuit active modules
parallax - Determines parallax, "fancy space"
preferred_map - During map rotation, this will help determine the chosen map.
scaling_method - The scaling method to show the world in, e.g. nearest neighbor
security_department - Which department to put security officers in, when the config is enabled
socks - Socks preference
species - Species preference
ui_style - UI style preference
undershirt - Undershirt preference
underwear - Underwear preference
color - A preference that represents an RGB color of something.
Will give the value as 6 hex digits, without a hash.
ooc_color - The color admins will speak in for OOC.
name - A preference for a name. Used not just for normal names, but also for clown names, etc.
backup_human - The name for a backup human, when nonhumans are made into head of staff
real_name - A character's real name
numeric - A numeric preference with a minimum and maximum value
toggle - A prefernece whose value is always TRUE or FALSE
ambient_occlusion - Whether or not to toggle ambient occlusion, the shadows around people
broadcast_login_logout - Whether or not to announce when the player logs in or out.
darkened_flash - When toggled, being flashed will show a dark screen rather than a light one.
ghost_hud - Toggles the HUD for ghosts
inquisitive_ghost - Whether or not ghosts can examine things by clicking on them.
playtime_reward_cloak - This can be set to TRUE from the prefs menu only once the user has
gained over 5K playtime hours.
If true, it allows the user to get a cool looking roundstart cloak.
tgui_input_large - Large button preference. Error text is in tooltip.
tgui_input_swapped - Swapped button state - sets buttons to SS13 traditional SUBMIT/CANCEL
tgui_say_light_mode - Light mode for tgui say
typing_indicator - Whether or not to show a typing indicator when speaking. Defaults to on.
window_flashing - Enables flashing the window in your task tray for important events
preference_middleware - Preference middleware is code that helps to decentralize complicated preference features.
keybindings - Middleware to handle keybindings
legacy_toggles - In the before times, toggles were all stored in one bitfield.
In order to preserve this existing data (and code) without massive
migrations, this middleware attempts to handle this in a way
transparent to the preferences UI itself.
In the future, the existing toggles data should just be migrated to
individual /datum/preference/toggles.
names - Middleware that handles telling the UI which name to show, and waht names
they have.
quirks - Middleware to handle quirks
random - Middleware for handling randomization preferences
advanced - Movable and easily code-modified fields! Allows for custom AOE effects that affect movement
and anything inside of them, and can do custom turf effects!
Supports automatic recalculation/reset on movement.
puzzgrid_group - Represents an individual group in a puzzgrid
qdel_item - Qdel Item: Holds statistics on each type that passes thru qdel
Holds the type as a string for this type
Total number of times it's passed thru qdel.
Total amount of milliseconds spent processing this type's Destroy()
Times it was queued for soft deletion but failed to soft delete.
Different from failures because it also includes QDEL_HINT_HARDDEL deletions
Total amount of milliseconds spent hard deleting this type.
Highest time spent hard_deleting this in ms.
Number of times hard deletes took longer than the configured threshold
Number of times it's not respected force=TRUE
Number of times it's not even bother to give a qdel hint
Number of times it's slept in its destroy
junkie - If this is defined, reagent_id will be unused and the defined reagent type will be instead.
actual instanced version of the reagent
Where the drug spawned
If this is defined before pill generation, pill generation will be skipped. This is the type of the pill bottle.
where the accessory spawned
If this is null, an accessory won't be spawned.
how frequently the quirk processes
ticker for processing
penthrite - Can bring a corpse back to life temporarily (if heart is intact)
Makes wounds bleed more, if it brought someone back, they take additional brute and heart damage
They can't die during this, but if they're past crit then take increasing stamina damage
If they're past fullcrit, their movement is slowed by half
If they OD, their heart explodes (if they were brought back from the dead)
deaconize - Honorbound God
Makes the person holy, but they now also have to follow the honorbound code (CBT). Actually earns favor, convincing others to uphold the code (tm) is not easy
Religious Sects - Religious Sects are a way to convert the fun of having an active 'god' (admin) to code-mechanics so you aren't having to press adminwho.
market_crash - An event which decreases the station target temporarily, causing the inflation var to increase heavily.
spooky - You will appear adjacent to the beacon
stray_cargo - Spawns a cargo pod containing a random cargo supply pack on a random area of the station
syndicate - Places that shouldn't explode
Subtypes from the above that actually should explode.
A rare variant that drops a crate containing syndicate uplink items
scan_condition - Scan condition, these require some specific setup for the dish to count for the scan power for the given site
scanner_controller - Helper datum to calculate and store scanning power and track in progress scans
scar - scars are cosmetic datums that are assigned to bodyparts once they recover from wounds. Each wound type and severity have their own descriptions for what the scars
look like, and then each body part has a list of "specific locations" like your elbow or wrist or wherever the scar can appear, to make it more interesting than "right arm"
scientific_paper - Scientific paper datum for retrieval and re-reading. A lot of the variables are there for fluff & flavor.
Spatial Grid Cell - used by /datum/controller/subsystem/spatial_grid to cover every z level so that the coordinates of every turf in the world corresponds to one of these in
the subsystems list of grid cells by z level. each one of these contains content lists holding all atoms meeting a certain criteria that is in our borders.
these datums shouldnt have significant behavior, they should just hold data. the lists are filled and emptied by the subsystem.
species datum - Datum that handles different species in the game.
station_request - A combined all in one datum that stores everything about the request, the requester's account, as well as the requestee's account
All of this is passed to the Request Console UI in order to present in organized way.
station_state - For counting up how much of the station exists at the start of the shift, and how much is left behind by the end of it.
station_trait - Base class of station traits. These are used to influence rounds in one way or the other by influencing the levers of the station.
revenge_of_pun_pun - The bot's language holder - so we can randomize and change their language
status_effect - Status effects are used to apply temporary or permanent effects to mobs.
This file contains their code, plus code for applying and removing them.
incapacitated - This status effect represents anything that leaves a character unable to perform basic tasks (interrupting do-afters, for example), but doesn't incapacitate them further than that (no stuns etc..)
inebriated - The drunk status effect.
Slowly decreases in drunk_value over time, causing effects based on that value.
drunk - Stage 2 of being drunk, applied at drunk values between 6 and onward.
Has all the main side effects of being drunk, scaling up as they get more drunk.
tipsy - Stage 1 of drunk, applied at drunk values between 0 and 6.
Basically is the "drunk but no side effects" stage.
protective_blades - Summons multiple foating knives around the owner.
Each knife will block an attack straight up.
recharging - A subtype that doesn't self-delete / disappear when all blades are gone
It instead regenerates over time back to the max after blades are consumed
song - Type of status effect applied by music played by the festival sect. Stacks upon itself, and removes all other song subtypes other than itself.
tgui_alert - Datum used for instantiating and using a TGUI-controlled modal that prompts the user with
a message and has buttons for responses.
tgui_input_number - Datum used for instantiating and using a TGUI-controlled number input that prompts the user with
a message and has an input for number entry.
tgui_list_input - Client does NOT have tgui_input on: Returns regular input
tgui_panel - tgui_panel datum
Hosts tgchat and other nice features.
tgui_say - The tgui say modal. This initializes an input window which hides until
the user presses one of the speech hotkeys. Once something is entered, it will
delegate the speech to the proper channel.
Timed Event - This is the actual timer, it contains the callback and necessary data to maintain
the timer.
traitor_category_handler - The traitor category handler. This is where the probability of all objectives are managed.
traitor_objective - A traitor objective. Traitor objectives should not be deleted after they have been created and established, only failed.
If a traitor objective needs to be removed from the failed/completed objective list of their handler, then you are doing something wrong
and you should reconsider. When an objective is failed/completed, that is final and the only way you can change that is by refactoring the code.
less_common - This is only for assistants, because the syndies are a lot less likely to give a shit about what an assistant does, so they're a lot less likely to appear
traitor_objective_category - The objective category.
Used to group up entire objectives into 1 weight objects to prevent having a
higher chance of getting an objective due to an increased number of different objective subtypes.
These are nothing but informational holders and will have no other purpose.
triple_ai_controller - The triple ai controller handles the admin triple AI mode, if enabled.
It is first created when "Toggle AI Triumvirate" triggers it, and it can be referenced from GLOB.triple_ai_controller
After it handles roundstart business, it cleans itself up.
bloody_footprints - Tests to make sure bloody footprits work as expected
So no stacking, they actually apply, and shoe staining thrown in for free
breath_sanity - Tests to make sure humans can breath in normal situations
Built to prevent regression on an issue surrounding QUANTIZE() and BREATH_VOLUME
See the comment on BREATH_VOLUME for more details
breath_sanity_ashwalker - Tests to make sure ashwalkers can breath from the lavaland air
breath_sanity_plasmamen - Tests to make sure plasmaman can breath from their internal tanks
chat_filter_sanity - Tests the sanity of the chat filter, ensuring it properly blocks words and gives the reason
circuit_component_category - Tests to make sure each circuit component that could potentially be available to a player has a category
closets - Checks that the length of the initial contents of a closet doesn't exceed its storage capacity
connect_loc_basic - Test that the connect_loc element handles basic movement cases
connect_loc_change_turf - Test that the connect_loc element handles turf changes
connect_loc_multiple_on_turf - Tests that multiple objects can have connect_loc on the same turf without runtimes.
crayon_naming - Makes sure that crayons have their crayon_color in their initial name (to differentiate them in the crafting menu).
create_and_destroy - Delete one of every type, sleep a while, then check to see if anything has gone fucky
dummy_spawn_outfit - Equips and devests our dummy of one of every job outfit
dummy_spawn_species - This set of tests is focused on ensuring the stability of preference dummies
And by extension the hacks built to make them fast
Organ consistency, object pooling via the wardrobe ss, etc
dynamic_roundstart_ruleset_sanity - Verifies that roundstart dynamic rulesets are setup properly without external configuration.
dynamic_unique_antag_flags - Verifies that dynamic rulesets have unique antag_flag.
egg_glands - Verifies that all glands for an egg are valid
food_edibility_check - Makes sure that spawned food has reagents and the edible component (or else it can't be eaten).
mob_faction - Checks if any mob's faction var initial value is not a list, which is not supported by the current code
mob_spawn - Right now taken from create_and_destroy
Verifies that all glands for an egg are valid
modsuit_checks - Checks all pre-equipped MODsuit paths to see if they have something set wrong.
novaflower_burn - Unit tests that the novaflower's unique genes function.
nuke_cinematic - Unit tests that a nuke going off plays a cinematic,
and that it actually kills people.
paintings - Checks that all kind of painting frames have a sprite for each canvas type in the game.
preference_species - Checks that all enabled roundstart species
selectable within the preferences menu
have their info / page setup correctly.
preferences_implement_everything - Requires all preferences to implement required methods.
preferences_valid_main_feature_name - Requires all main features have a main_feature_name
preferences_valid_savefile_key - Requires all preferences to have a valid, unique savefile_identifier.
quirk_icons - Ensure every quirk has a unique icon
reagent_names - Test that all reagent names are different in order to prevent #65231
screenshot_antag_icons - A screenshot test to make sure every antag icon in the preferences menu is consistent
screenshot_basic - This is an example for screenshot tests, and a meta-test to make sure they work in the success case.
It creates a picture that is red on the left side, green on the other.
screenshot_humanoids - A screenshot test for every humanoid species with a handful of jobs.
species_unique_id - Every species should use a species ID unique to it and it alone. This test runs through every subtype of /datum/species, and checks for a species ID.
Every ID is written to a list, gathered_species_ids, and if a previously written ID is written again, this test will fail.
stack_singular_name - Goes through every subtype of /obj/item/stack to check for a singular name, var/singular_name.
Everything within the blacklist does not need to be tested because it exists to be overriden.
This test will fail if a subtype of /obj/item/stack is missing a singular name.
start_tend_wounds - Ensures that the tend wounds surgery can be started
basic - Simple animals 2.0, This time, let's really try to keep it simple. This basetype should purely be used as a base-level for implementing simplified behaviours for things such as damage and attacks. Everything else should be in components or AI behaviours.
robot_defines - Definitions for /mob/living/silicon/robot and its children, including AI shells.
nocell - Defining specific kinds of robots
This is the subtype that gets created by robot suits. It's needed so that those kind of borgs don't have a useless cell in them
simple_animal - Simple, mostly AI-controlled critters, such as pets, bots, and drones.
Goliath Broodmother - A stronger, faster variation of the goliath. Has the ability to spawn baby goliaths, which it can later detonate at will.
When it's health is below half, tendrils will spawn randomly around it. When it is below a quarter of health, this effect is doubled.
It's attacks are as follows:
Herald - A slow-moving projectile user with a few tricks up it's sleeve. Less unga-bunga than Colossus, with more cleverness in it's fighting style.
As it's health gets lower, the amount of projectiles fired per-attack increases.
It's attacks are as follows:
Legionnaire - A towering skeleton, embodying the power of Legion.
As it's health gets lower, the head does more damage.
It's attacks are as follows:
Pandora - A box with a similar design to the Hierophant which trades large, single attacks for more frequent smaller ones.
As it's health gets lower, the time between it's attacks decrease.
It's attacks are as follows:
Wumborian Fugu - A strange alien creature capable of increasing its mass when threatened,
giving it unmatched defensive capabilities temporarily. The rest of the
time, it is quite fragile.
lobstrosity - Lobstrosities, the poster boy of charging AI mobs. Drops crab meat and bones.
Outside of charging, it's intended behavior is that it is generally slow moving, but makes up for that with a knockdown attack to score additional hits.
bear/fightpit - If the atom entering the gate is a vehicle, we store it here to add to the approved list to enter/leave the scanner gate.
We store the driver of vehicles separately so that we can add them to the approved list once payment is fully processed.
blob - retreat doesn't obey pass_flags, so won't work on blob mobs.
vatbeast - Vatbeasts are creatures from vatgrowing and are literaly a beast in a vat, yup. They are designed to be a powerful mount roughly equal to a gorilla in power.
proccall_handler - Used to handle proccalls called indirectly by an admin (e.g. tgs, circuits).
Has to be a mob because IsAdminAdvancedProcCall() checks usr, which is a mob variable.
So usr is set to this for any proccalls that don't have any usr mob/client to refer to.
durand_shield - Shield processing
*An object to take the hit for us when using the Durand's defense mode.
It is spawned in during the durand's initilization, and always stays on the same tile.
Normally invisible, until defense mode is actvated. When the durand detects an attack that should be blocked, the
attack is passed to the shield. The shield takes the damage, uses it to calculate charge cost, and then sets its
own integrity back to max. Shield is automatically dropped if we run out of power or the user gets out.
effect
abstract - The abstract effect ignores even more effects and is often typechecked for atoms that should truly not be fucked with.
info - An info button that, when clicked, puts some text in the user's chat
particle_holder - objects can only have one particle on them at a time, so we use these abstract effects to hold and display the effects. You know, so multiple particle effects can exist at once.
also because some objects do not display particles due to how their visuals are built
heretic_rune - The heretic's rune, which they use to complete transmutation rituals.
big - A 3x3 heretic rune. The kind heretics actually draw in game.
hotspot - Hotspot objects interfaces with the temperature of turf gasmixtures while also providing visual effects.
One important thing to note about hotspots are that they can roughly be divided into two categories based on the bypassing variable.
heretic - Lardmarks meant to designate where heretic sacrifices are sent.
lift_id - lift_id landmarks. used to map in specific_lift_id to trams. when the trams lift_master encounters one on a trams tile
it sets its specific_lift_id to that landmark. allows you to have multiple trams and multiple controls linking to their specific tram
corpse - these mob spawn subtypes trigger immediately (New or Initialize) and are not player controlled... since they're dead, you know?
ai - dead ai, blue screen and everything.
facehugger - dead facehuggers, great for xeno ruins so you can have a cool ruin without spiraling the entire round into xenomorph hell. also, this is a terrible terrible artifact of time
rust_conversion/small - What we want is the 3 tiles around the user and the tile under him to be rusted, so min(dist,1)-1 causes us to get 0 for these tiles, rest of the tiles are based on chance
aimodule/harmless - AI uploads have the ai_module/reset , ai_module/supplied/freeform , ai_module/reset/purge , and ai_module/core/full/asimov directly mapped in
round_default_fallback - When the default lawset spawner cannot find a module object to spawn, it will spawn this, and this sets itself to the round default.
This is so /datum/lawsets can be picked even if they have no module for themselves.
bounty_cube - Upon completion of a civilian bounty, one of these is created. It is sold to cargo to give the cargo budget bounty money, and the person who completed it cash.
Index Table Component - Gets the row of a table using the index inputted. Will return no value if the index is invalid or a proper table is not returned.
Bar Overlay Component - Basically an advanced verion of object overlay component that shows a horizontal/vertical bar.
Requires a BCI shell.
Pathfinding component - Calcualtes a path, returns a list of entities. Each entity is the next step in the path. Can be used with the direction component to move.
Proximity Pinpointer Component - Return the location of its input.
SDQL Component - A component that performs an sdql operation
Select Component - Selects a list from a list of lists by a specific column. Used only by USBs for communications to and from computers with lists of varying sizes.
recharger/cyborg - This recharger exists only in borg built-in tablets. I would have tied it to the borg's cell but
the program that displays laws should always be usable, and the exceptions were starting to pile.
internal - Base console's internal RCD. Has a large material capacity and a fast buildspeed.
Compact Remote - A handheld device with several buttons.
In game, this translates to having different signals for normal usage, alt-clicking, and ctrl-clicking when in your hand.
monkeycube/syndicate - internal proc called by a monkeycube's suicide_act using a timer and callback. takes as argument the mob/living who activated the suicide
muffin - MUFFINS
patty/plain - Exists purely for the crafting recipe (because itll take subtypes)
Spider Charge - A unique version of c4 possessed only by the space ninja. Has a stronger blast radius.
Can only be detonated by space ninjas with the bombing objective. Can only be set up where the objective says it can.
When it primes, the space ninja responsible will have their objective set to complete.
smokebomb - This is smoke bomb, mezum koman. It is a grenade subtype. All craftmanship is of the highest quality.
It menaces with spikes of iron. On it is a depiction of an assistant.
The assistant is bleeding. The assistant has a painful expression. The assistant is dead.
ballistic - Subtype for any kind of ballistic gun
This has a shitload of vars on it, and I'm sorry for that, but it does make making new subtypes really easy
self_grasp - an abstract item representing you holding your own limb to staunch the bleeding, see [/mob/living/carbon/proc/grabbedby] will probably need to find somewhere else to put this.
exile/noteleport - Used to help the staff of the space hotel resist the urge to use the space hotel's incredibly alluring roundstart teleporter to ignore their flavor/greeting text and come to the station.
implantcase - Item used to store implants. Can be renamed with a pen. Implants are moved between those and implanters when a mob uses an implanter on a case.
sad_trombone - Implant case that spawns with a sad trombone implant, as well as an appropriate name and description
tracking - An implant case that spawns with a tracking implant, as well as an appropriate name and description.
weapons_auth - An implant case that spawns with a firearms authentication implant, as well as an appropriate name and description.
implanter - Players can use this item to put obj/item/implant's in living mobs. Can be renamed with a pen.
sad_trombone - Implanter that spawns with a sad trombone implant, as well as an appropriate name
N-spect scanner - Creates reports for area inspection bounties.
clamp - Hydraulic Clamp - Lets you pick up and drop crates.
constructor - Constructor - Lets you build quicker and create RCD holograms.
criminalcapture - Criminal Capture - Lets you put people in transport bags.
dispenser - Dispenser - Dispenses an item after a time passes.
mirage - Mirage grenade dispenser - Dispenses grenades that copy the user's appearance.
dna_lock - DNA Lock - Prevents people without the set DNA from activating the suit.
drill - Drill - Lets you dig through rock and basalt.
emp_shield - EMP Shield - Protects the suit from EMPs.
energy_net - Energy Net - Ensnares enemies in a net that prevents movement.
energy_shield - Energy Shield - Gives you a rechargeable energy shield that nullifies attacks.
eradication_lock - Eradication lock - Prevents people who aren't the owner of the suit from existing on the timeline via eradicating the suit with the intruder inside
flamethrower - Flamethrower - Launches fire across the area.
flashlight - Flashlight - Gives the suit a customizable flashlight.
gps - Internal GPS - Extends a GPS you can use.
hacker - Hacker - This module hooks onto your right-clicks with empty hands and causes ninja actions.
hat_stabilizer - Hat Stabilizer - Allows displaying a hat over the MOD-helmet, àla plasmamen helmets.
health_analyzer - Health Analyzer - Gives the user a ranged health analyzer and their health status in the panel.
holster - Holster - Instantly holsters any not huge gun.
external - System for drawing organs with overlays. These overlays are drawn directly on the bodypart, attached to a person or not
Works in tandem with the /datum/sprite_accessory datum to generate sprites
Unlike normal organs, we're actually inside a persons limbs at all times
paper - Paper is now using markdown (like in github pull notes) for ALL rendering
so we do loose a bit of functionality but we gain in easy of use of
paper and getting rid of that crashing bug
robot_model - Definition of /obj/item/robot_model, which defines behavior for each model.
Deals with the creation and deletion of modules (tools).
Assigns modules and traits to a borg with a specific model selected.
tcgcard_deck - A stack item that's not actually a stack because ORDER MATTERS with a deck of cards!
The "top" card of the deck will always be the bottom card in the stack for our purposes.
udder item - Abstract item that is held in nullspace and manages reagents. Created by udder component.
While perhaps reagents created by udder component COULD be managed in the mob, it would be somewhat finnicky and I actually like the abstract udders.
gutlunch udder subtype - Used by gutlunches, and generates healing reagents instead of milk on eating gibs instead of a process. Starts empty!
Female gutlunches (ahem, guthens if you will) make babies when their udder is full under processing, instead of milk generation
wirebrush - The wirebrush is a tool whose sole purpose is to remove rust from anything that is rusty.
Because of the inherent nature of hard countering rust heretics it does it very slowly.
hypertorus - This file contain the eight parts surrounding the main core, those are: fuel input, moderator input, waste output, interface and the corners
The file also contain the guicode of the machine
core - This section contain the hfr core with all the variables and the Initialize() and Destroy() procs
chem_master - Roughly 10 - 30s?
Roughly 10 - 30s?
Machine that allows to identify and separate reagents in fitting container
as well as to create new containers with separated reagents in it.
condimaster - Machine that allows to identify and separate reagents in fitting container
as well as to create new containers with separated reagents in it.
secure - We set the plane on mapload such that we can see the holopad render over atmospherics pipe and cabling in a map editor (without initialization), but so it gets that "inset" look in the floor in-game.
microwave/hell - Type of microwave that automatically turns it self on erratically. Probably don't use this outside of the holodeck program "Microwave Paradise".
You could also live your life with a microwave that will continously run in the background of everything while also not having any power draw. I think the former makes more sense.
plumbing - Basic plumbing object.
It doesn't really hold anything special, YET.
Objects that are plumbing but not a subtype are as of writing liquid pumps and the reagent_dispenser tank
Also please note that the plumbing component is toggled on and off by the component using a signal from default_unfasten_wrench, so dont worry about it
acclimator - this the plumbing version of a heater/freezer.
disposer - see if machine has enough to fill, is anchored down and has any inputspot objects to pick from
pick a reagent_container that could be used
see if it would overflow else inject
glass was full so we move it away
slime extracts need inject
no need to move slimecross industrial things
filter - chemical plumbing filter. If it's not filtered by left and right, it goes straight.
growing_vat - Used to make mobs from microbiological samples. Grow grow grow.
input - We can empty beakers in here and everything
layer_manifold - Layer manifold machine that connects a bunch of layers
liquid_pump - We pump liquids from activated(plungerated) geysers to a plumbing outlet. We need to be wired.
output - We can fill beakers in here and everything. we dont inheret from input because it has nothing that we need
pill_press - We take a constant input of reagents, and produce a pill once a set volume is reached
reaction_chamber - a reaction chamber for plumbing. pretty much everything can react, but this one keeps the reagents separated and only reacts under your given terms
receiver - A bluespace output pipe for plumbing. Supports multiple recipients. Must be constructed with a circuit board
splitter - it splits the reagents however you want. So you can "every 60 units, 45 goes left and 15 goes straight". The side direction is EAST, you can change this in the component
synthesizer - A single machine that produces a single chem. Can be placed in unison with others through plumbing to create chemical factories
master - Master R&D server. As long as this still exists and still holds the HDD for the theft objective, research points generate at normal speed. Destroy it or an antag steals the HDD? Half research speed.
roulette - Machine that lets you play roulette. Odds are pre-defined to be the same as European Roulette without the "En Prison" rule
mystery_box_item - This represents the item that comes out of the box and is constantly changing before the box finishes deciding. Can probably be just an /atom or /movable.
geyser - A lavaland geyser that spawns chems and can be mining scanned for points. Made to work with the plumbing pump to extract that sweet rare nectar
misc - Used as a parent type for types that want to allow construction, but do not want to be floors
I wish I could use components for turfs at scale
Please do not bloat this. Love you <3
basalt/lava_land_surface - Surface. The surface is warm, but survivable without a suit. Internals are required. The floors break to chasms, which drop you into the underground.