action - This is just a file holding string defines for reference retrieval on /action datums
ideally you should never override the base list , and just add onto its length
The noting system for these is
VREF_[DATA_TYPE]_[WHAT_IS_IT_USED_FOR]
vending - These are global lists for vending machines that all share the same inventory, it's format is simply:
list(typepath = list(records))
so all the vendors of same type have same inventory
it starts empty and is filled by first vendor initialized(unless its already filled).
the subsequent iniatilized vendors just uses the filled list.
there's one list for normal records, contraband and coin.
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
screen_objects
menu_text_objects - Screen Lobby objects
Uses maptext to display the objects
Automatically will align in the order that they are defined
Stuff happens on Click(), although hrefs are also valid to get stuff done
hrefs will make the text blue though so dont do it :/
directional_attack - This element allows the mob its attached to the ability to click an adjacent mob by clicking a distant atom
that is in the general direction relative to the parent.
storage - Datumized Storage
Eliminates the need for custom signals specifically for the storage component, and attaches a storage variable (storage_datum) to every atom.
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!
WHAT IS THIS? - This is a replacement for the current camera movement system, of the AI. Before this, the AI had to move between cameras and could
only see what the cameras could see. Not only this but the cameras could see through walls, which created problems.
With this, the AI controls an "AI Eye" mob, which moves just like a ghost; such as moving through walls and being invisible to players.
The AI's eye is set to this mob and then we use a system (explained below) to determine what the cameras around the AI Eye can and
cannot see. If the camera cannot see a turf, it will black it out, otherwise it won't and the AI will be able to see it.
This creates several features, such as.. no more see-through-wall cameras, easier to control camera movement, easier tracking,
the AI only being able to track mobs which are visible to a camera, only trackable mobs appearing on the mob list and many more.
template_noop - Template noop (no operation) is used to skip a turf or area when the template is loaded this allows for template transparency
ex. if a ship has gaps in its design, you would use template_noop to fill these in so that when the ship moves z-level, any
tiles these gaps land on will not be deleted and replaced with the ships (empty) tiles
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.
Of note: plane master controllers are currently not very extensively used, because render plates fill a semi similar niche
This could well change someday, and I'd like to keep this stuff around, so we use it for a few cases just out of convenience
colorblind - Exists for convienience when referencing all game render plates
game - Exists for convienience when referencing all game render plates
non_master - Exists for convienience when referencing all non-master render plates.
This is the whole game and the UI, but not the escape menu.
render_plane_relay - Render relay object assigned to a plane master to be able to relay its render onto other planes that are not its own
render_step - Internal atom that uses render relays to apply "appearance things" to a render source
Branch, subtypes have behavior
color - Render step that modfies an atom's color
Useful for creating coherent emissive blockers out of things like glass floors by lowering alpha statically using matrixes
Other stuff too I'm sure
emissive - Render step that makes the passed in render source GLOW
emissive_blocker - Render step that makes the passed in render source block emissives
default - Plane master that byond will by default draw to
Shouldn't be used, exists to prevent people using plane 0
NOTE: If we used SEE_BLACKNESS on a map format that wasn't SIDE_MAP, this is where its darkness would land
This would allow us to control it and do fun things. But we can't because side map doesn't support it, so this is just a stub
emissive - Handles emissive overlays and emissive blockers.
floor - Contains just the floor
o_light_visual - This will not work through multiz, because of a byond bug with BLEND_MULTIPLY
Bug report is up, waiting on a fix
admin_verb - This is the admin verb datum. It is used to store the verb's information and handle the verb's functionality.
All of this is setup for you, and you should not be defining this manually.
That means you reader.
The name of the verb.
The description of the verb.
The category of the verb.
The permissions required to use the verb.
The flag that determines if the verb is visible.
delete_squad - Admin verb to delete a squad completely
reestablish_tts_connection - A debug verb to try and re-establish a connection with the TTS server and to refetch TTS voices.
Since voices are cached beforehand, this is unlikely to update preferences.
set_round_end_sound - client verb to set round end sound
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)
buildingpattern - Defined seperate bcus radial menu draws the names of the options from the name of the datum, and "buildingpattern" isnt descriptive of a 2x2 cube
Callback Datums - A datum that holds a proc to be called on another object, used to track proccalls to other objects
callback_select - Helper datum for the select callbacks proc
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 seperate listener however
This has great use, primarially for components, but it carries with it some overhead
So we do it seperately 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 separate listener.
Good for components, though it carries some overhead. Can't be an element as that may lead to bugs.
hide_weather_planes - Component that manages a list of plane masters that are dependent on weather
Force hides/shows them depending on the weather activity of their z stack
Transparency is achieved by manipulating the alpha of the planes that are visible
Applied to the plane master group that owns them
plane_hide_highest_offset - Component that takes a plane master, and will hide it if it's the highest offset of its kind
This allows us to not show PMs to clients if they're not actively doing anything
reequip - Component to automatically attempt to equip an item to a list of slots after it is dropped by a human
throw_parry - This component allows a mob/living to parry thrown objects back towards its source provided certain conditions are met.
COMSIG_PARRY_TRIGGER together with a duration enables parrying for this time frame, durations do not stack and only the current latest ending one is used.
A thrown item being parried will prevent the throw from ending and returns said thrown object back towards its source with half its speed.
udder - Udder component; for farm animals to generate milk.
xeno_iff - A special component that reacts to certain things that check for IFF and returns the IFF attached.
Applied by xeno IFF tags and meant for xenos only.
panic_bunker_living - living time in minutes that a player needs to pass the panic bunker
tgui_max_chunk_count - Tgui ui_act payloads larger than 2kb are split into chunks a maximum of 1kb in size.
This flag represents the maximum chunk count the server is willing to receive.
tts_http_timeout_seconds - Maximum timeout for http calls
str_list - List config entry, used for configuring a list of strings
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
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
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.
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.
Special_clothing_overlay element - Handles special clothing overlays for humans that cannot use the standing overlays system
Example uses include the use of emissives and similar
modular_helmet_visor - Adds an emissive greyscale overlay to the wearer as the helmets visor
font - A font datum, it exists to define a custom font to use in a span style later.
grand9k - For clean results on map, use only sizing pt, multiples of 6: 6pt 12pt 18pt 24pt etc. - Not for use with px sizing
Can be used in TGUI etc, px sizing is pt / 0.75. 6pt = 8px, 12pt = 16px etc.
Base font
size_6pt - For icon overlays
Grand9K 6pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
pixellari - For clean results on map, use only sizing pt, multiples of 12: 12pt 24pt 48pt etc. - Not for use with px sizing
Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
Base font
size_12pt - For icon overlays
Pixellari 12pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
spessfont - For clean results on map, use only sizing pt, multiples of 6: 6t 12pt 18pt etc. - Not for use with px sizing
Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
Base font
size_6pt - For icon overlays
Spess Font 6pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
tiny_unicode - For clean results on map, use only sizing pt, multiples of 12: 12pt 24pt 48pt etc. - Not for use with px sizing
Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc.
Base font
size_12pt - For icon overlays
TinyUnicode 12pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe
hud_displays - Holder datum for a zlevels data, concerning the overlays and the drawn level itself
The individual image trackers have a raw and a normal list
raw lists just store the images, while the normal ones are assoc list of [tracked_atom] = image
the raw lists are to speed up the Fire() of the subsystem so we dont have to filter through
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.*
item_representation - Light weight representation of an obj/item
This allow us to manipulate and store a lot of item-like objects, without it costing a ton of memory or having to instantiate all items
This also allow to save loadouts with jatum, because it doesn't accept obj/item
armor_module - Allow to representate an module of a jaeger
This is only able to representate items of type /obj/item/armor_module
hat - Allow to representate a hat
This is only able to representate items of type /obj/item/clothing/head
modular_helmet - Allow to representate a modular helmet, and to color it
This is only able to representate items of type /obj/item/clothing/head/modular
id - Allow to representate an id card (/obj/item/card/id)
lazy_template - Datum used to designate certain areas that do not need to exist nor be loaded at world start
but do want to be loaded under certain circumstances. Use this for stuff like the nukie base or wizden, aka stuff that only matters when their antag is rolled.
loadout_manager - This datum in charge with selecting wich loadout is currently being edited
It also contains a tgui to navigate beetween loadouts
loadout_seller - Small loadout in charge of dealing with a user trying to equip a saved loadout
First it will reserve all items that can be bought, and save the name of all items that cannot be bought
If the list of items that cannot be bought is empty, the transaction will be automaticly accepted and the loadout will be equipped on the user
If it's not empty, it will warn the user and give him the list of non-buyable items.
The user can chose to proceed with the buy, and he is equipped with what was already be bought,
or he can chose to refuse, and then the items are put back in the vendors
log_category - The main datum that contains all log entries for a category
backup_category_not_found - Backup log category to catch attempts to log to a category that doesn't exist
log_entry - A datum which contains log information.
object_window_info - Datum that holds and tracks info about a client's object window
Really only exists because I want to be able to do logic with signals
And need a safe place to do the registration
beginner - When making new loadouts, remember to also add the typepath to the list under init_beginner_loadouts() or else it won't show up in the vendor
civil_war - When making new loadouts, remember to also add the typepath to the list under init_civil_war_loadouts() or else it won't show up in the vendor
path_step - Basic implementation of A* using atoms. Very cheap, at max it will do about 50-100 distance check for a whole path, but typically it will do 10-20
plane_master_debug - Used for testing/debugger plane masters and their associated rendering plates
plane_master_group - Datum that represents one "group" of plane masters
So all the main window planes would be in one, all the spyglass planes in another
Etc
popup - Holds plane masters for popups, like camera windows
Note: We do not scale this plane, even though we could
This is because it's annoying to get turfs to position inside it correctly
If you wanna try someday feel free, but I can't manage it
poll_option - Datum which holds details of a poll option loaded from the database.
poll_question - Datum which holds details of a running poll loaded from the database and supplementary info.
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.
elevator_music_area - Load or unload a looping sound when mobs enter or exit the area
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
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.
spawnerdata - Holder datum for various data relating to individual spawners
The base species datum - This datum handles different species in the game, such as synthetics, mothmen, combat robots, skeletons, etc.
It is used in mob/living/carbon/human to determine many things about them, including damage resistance, appearance, special behaviors, and more.
tgs_chat_command - User definable chat command. This abstract version MUST be overridden to be used.
validated - subtype tgs chat command with validated admin ranks. Only supports discord.
tgs_chat_embed
field - See https://discord.com/developers/docs/resources/message#embed-object-embed-field-structure for details.
footer - See https://discord.com/developers/docs/resources/message#embed-object-embed-footer-structure for details.
media - Common datum for similar Discord embed medias.
provider - See https://discord.com/developers/docs/resources/message#embed-object-embed-provider-structure for details.
author - See https://discord.com/developers/docs/resources/message#embed-object-embed-author-structure for details. Must have name set in New().
structure - User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/message#embed-object for details.
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.
transport_controller/linear - coordinate and control movement across linked transport_controllers. allows moving large single multitile platforms and many 1 tile platforms.
also is capable of linking platforms across linked z levels
tram - Tram specific variant of the generic linear transport controller.
tts_request - A struct containing information on an individual player or mob who has made a TTS request
chat_filter_sanity - Tests the sanity of the chat filter, ensuring it properly blocks words and gives the reason
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.
create_and_destroy - Delete one of every type, sleep a while, then check to see if anything has gone fucky
dcs_get_id_from_arguments - Base type doesn't have a seed type
Base type doesn't have a list of stuff to spawn
Base type doesn't have a list of weapons to spawn
Base type that is missing a lot of stuff needed, let's just not
Base type doesn't have any variations in it's variation list
Base type with no disk type
forcespawned abstract type for vehicles, will never spawn outside of it
created by owning tank with necessary arg
Tests that DCS' GetIdFromArguments works as expected with standard and odd cases
drink_icons - Unit tests glass subtypes have a valid icon setup
focus_only - These tests perform no behavior of their own, and have their tests offloaded onto other procs.
This is useful in cases like in build_appearance_list where we want to know if any fail,
but is not useful to right a test for.
This file exists so that you can change any of these to TEST_FOCUS and only check for that test.
For example, change /datum/unit_test/focus_only/invalid_overlays to TEST_FOCUS(/datum/unit_test/focus_only/invalid_overlays),
and you will only test the check for invalid overlays in appearance building.
bad_cooking_crafting_icons - Checks for bad icon / icon state setups in cooking crafting menu
font_awesome_icons - This unit test verifies that all Font Awesome icons are present in code, and that all quirk icons are valid.
glass_style_functionality - Unit tests glass style datums are applied to drinking glasses
glass_style_icons - Unit tests all glass style datums with icons / icon states that those are valid and not missing.
implanting - Implants a human to make sure it effectively is inserted and deleted.
log_mapping - Conveys all log_mapping messages as unit test failures, as they all indicate mapping problems.
subsystem_init - Tests that all subsystems that need to properly initialize.
tgui_create_message - Test that TGUI_CREATE_MESSAGE is correctly implemented
tutorial_sanity - Verifies that every tutorial has properly set variables
verify_emoji_names - Apparently, spritesheets (or maybe how the CSS backend works) do not respond well to icon_state names that are just pure numbers (which was a behavior in emoji.dmi).
In case we add more emoji, let's just make sure that we don't have any pure numbers in the emoji.dmi file if we ever add more.
mirroring - Tracks and updates another mob with our mob's visual data
tracking - Tracks but does not relay updates to someone's visual data
Accepts a second visual data datum to use as a source of truth for the mob's values
weakref - A weakref holds a non-owning reference to a datum.
The datum can be referenced again using resolve().
weather - Causes weather to occur on a z level in certain area types
ai - This elevator serves me alone. I have complete control over this entire level. With cameras as my eyes and nodes as my hands, I rule here, insect.
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.
ladder_hole - Abstract object used to represent a hole in the floor created by a ladder
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
z_holder - Exists to be placed on the turf of walls and such to hold the vis_contents of the tile below
Otherwise the lower turf might get shifted around, which is dumb. do this instead.
nav_beacon/tram - transport_controller landmarks. used to map specific destinations on the map.
transport_id - transport_controller landmarks. used to map in specific_transport_id to trams and elevators. when the transport_controller encounters one on a tile
it sets its specific_transport_id to that landmark. allows you to have multiple trams and multiple objects linking to their specific tram
unit_test_bottom_left - Marks the bottom left of the testing zone.
In landmarks.dm and not unit_test.dm so it is always active in the mapping tools.
unit_test_top_right - Marks the top right of the testing zone.
In landmarks.dm and not unit_test.dm so it is always active in the mapping tools.
light/flickering/enable_random_flickering - enable random flickering on lights, to make this effect happen the light has be flickering in the first place
ion_trails - ///// Attach an Ion 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!
rappel_rope/tadpole - This is the rope that the system deploys, a subtype of the HvH deployment rappel.
Created by the rappel system on init and stored in the rappel system when it's not in use
hitbox - HITBOX
The core of multitile. Acts as a relay for damage and stops people from walking onto the multitle sprite
has changed bounds and as thus must always be forcemoved so it doesnt break everything
I would use pixel movement but the maptick caused by it is way too high and a fake tile based movement might work? but I want this to at least pretend to be generic
Thus we just use this relay. it's an obj so we can make sure all the damage procs that work on root also work on the hitbox
hsg_nest - This is the one that comes in the mapbound and dropship mounted version of the HSG-102, it has a stupid amount of ammo. Even more than the ammo counter can display.
icc_hmg - Default ammo for the ML-91 and its export variants.
armor - These are the basic type for armor armor_modules. What seperates these from /armor_module is that these are designed to be recolored.
These include Leg plates, Chest plates, Shoulder Plates and Visors. This could be expanded to anything that functions like armor and has greyscale functionality.
visor - Visors
Visors are slightly different than the other armor types. They allow emissives. If visor_emissive_on is TRUE then it will be applying an emissve to it.
If allow_emissive is TRUE, Right clicking the Parent item will toggle the emissive.
factory_part - Base item used in factories, only changes icon and stage for the item then creates a new item when its done
in order to set a recipe set recipe = GLOB.myrecipe in Initialize
suicide_dust - Implant meant for admin ERTs that will dust a body upon death.
In order to prevent Marines from looting things they should not ever have
storage - When creating a new storage, you may use /obj/item/storage as a template which automates create_storage() on .../Initialize
However, this is no longer a hard requirement, since storage is a /datum now
Just make sure to pass whatever arguments you need to create_storage() which is an /atom level proc
(This means that any atom can have storage :D )
fillable box - Deployable box with fancy visuals of its contents
Visual content defined in the icon_state_mini var in /obj/item
All other visuals that do not have a icon_state_mini defined are in var/assoc_overlay
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.
cloning_console/vats - These automatically generate marine bodies based on a timer.
These hold the body until taken by a ghost where they "burst" from the vat.
miner - Resource generator that produces a certain material that can be repaired by marines and attacked by xenos, Intended as an objective for marines to play towards to get more req gear
mineral
processing_unit_console - Mineral processing unit console
stacking_unit_console - Mineral stacking unit console
billboardsandsigns/bigbillboards - Alien Isolation - posters used as reference (direct downscale of the image for some) If anyone wants to name the billboards individually
stairs - TODO FIXME FIX ME ETC FUCK KNOWS
So guess what stairs are super fucked
Instead of doing something sane like right and left handrail variants cm/bay lumped everything into
ONE ICONSTATE FOR N/S AND ONE FOR E/W
WHY
WHAT IS WRONG WITH YOU
WE USE DIRS FOR SHIT LIKE STAIRS THAT ACTUALLY MOVE YOU
FIX THIS SHIT FUCKING PLEASE USE THE UPDATEPATHS TOOL I HAVE FIXED rampbottom FOR YOU BECAUSE OTHERWISE MULTIZSTAIRS JUST DIE
DUMBASSES
multiz - replaces the turf above this stair obj with /turf/open/openspace
tram - the tram has a few objects mapped onto it at roundstart, by default many of those objects have unwanted properties
for example grilles and windows have the atmos_sensitive element applied to them, which makes them register to
themselves moving to re register signals onto the turf via connect_loc. this is bad and dumb since it makes the tram
more expensive to move.
cordon - Turf type that appears to be a world border, completely impassable and non-interactable to all physical (alive) entities.
secret - This type of cordon will block ghosts from passing through it. Useful for stuff like Away Missions, where you feasibly want to block ghosts from entering to keep a certain map section a secret.