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.
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.
background - A generic background object.
It is also implicitly used to allocate a rectangle on the map, which will
be used for auto-scaling the map.
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".
plane_master
emissive - Things placed on this mask the lighting plane. Doesn't render directly.
emissive_blocker - Things placed on this layer mask the emissive layer. Doesn't render directly
emissive_unblockable - Things placed on this always mask the lighting plane. Doesn't render directly.
floor - Contains just the floor
game_world - Contains most things in the game world
lighting - Contains all lighting objects
openspace - Things rendered on "openspace"; holes in multi-z
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.
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.
contractor_support - Support unit gets it's own very basic antag datum for admin logging.
asset/simple - If you don't need anything complicated.
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)
asset_cache_item - An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed.
sbiten - DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri
seiver - TOX
surfactant - foam and foam precursor
tirimol - OXY
tofu - FOOD MIXTURES
virus_food - VIROLOGY
yuck - EXPANDED MUTATION TOXINS
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".
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.
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.
footstep - Footstep component. Plays footsteps at parents location when it is appropriate.
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.
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
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
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)
enable_mob_layershifting - Allows clients to shift the visual layer of the mob they are controlling
panic_bunker_interview - Flag for requiring players who would otherwise be denied access by the panic bunker to complete a written interview
popup_admin_pm - Gives the ability to send players a maptext popup.
number/outdated_movedelay - Outdated move delay
str_list - List config entry, used for configuring a list of strings
contractor_item
blackout - We give a reference to the mind that'll be the support unit
contractor_pinpointer - We're not regenerating already completed/aborted/extracting contracts, but we don't want to repeat their targets.
Reroll contracts without duplicates
Set our target list with the new set we've generated.
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
effect_system/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
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.
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.
light_blocking - Attached to movable atoms with opacity. Listens to them move and updates their old and new turf loc's opacity accordingly.
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
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
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.
protocol - A nanite program containing a behaviour protocol. Only one protocol of each class can be active at once.
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
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.
grunt/lead - lead, i guess you could reuse this for "Brig Officer"
vehicle_crew - vehicle crew
inteq
assistant - assistants
captain - captains
ce - Chief Engineer
engineer - engineers
paramedic - paramedic
security - Security Officers
Overmap objects - Everything visible on the overmap: stations, ships, ruins, events, and more.
Dynamic Overmap Encounters - These overmap objects can be docked with and will create a dynamically generated area of many different types depending on the planet variable.
When undocked with, it checks if there's anyone left on the planet, and if not, will move to another random location and wait to create a new encounter.
Overmap Events - These are events that have some sort of effect on overmap ships that are on the same tile.
electric - ELECTRICAL STORM - explodes your computer and IPCs
meteor - METEOR STORMS - explodes your ship if you go too fast
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.
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
The highest amount of refs its had after failing to qdel
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
Flags related to this type's trip thru qdel.
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
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.
Request - A representation of an in-game request, such as a prayer.
Request Manager - Handles all player requests (prayers, centcom requests, syndicate requests)
that occur in the duration of a round.
stack_canary - Stack canary. Will go away if the stack it was primed by is ended by byond for return or stack overflow reasons.
stack_end_detector - Stack End Detector.
Can detect if a given code stack has exited, used by the mc for stack overflow detection.
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.
grouped - Status effect from multiple sources, when all sources are removed, so is the effect
Adds itself to sources and destroys itself if one exists already, there are never multiple
tgs_chat_command - User definable chat command. This abstract version MUST be overridden to be used.
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 - Copyright (c) 2020 Aleksej Komarov
SPDX-License-Identifier: MIT
tgui_list_input - Datum used for instantiating and using a TGUI-controlled list input that prompts the user with
a message and shows a list of selectable options
async tgui_list_input - An asynchronous version of tgui_list_input to be used with callbacks instead of waiting on user responses.
tgui_modal - Datum used for instantiating and using a TGUI-controlled modal that prompts the user with
a message and has buttons for responses.
async tgui_modal - An asynchronous version of tgui_modal to be used with callbacks instead of waiting on user responses.
tgui_panel - Copyright (c) 2020 Aleksej Komarov
SPDX-License-Identifier: MIT
tgui_window - Copyright (c) 2020 Aleksej Komarov
SPDX-License-Identifier: MIT
Alien - The base subtype of all aliens. Used to establish the basic mechanics (such as organs) they use.
humanoid
Alien Hunter - A fast-moving caste of alien capable of pouncing on prey, stunning them for a decent amount of time. They are, however, the squishiest caste as well.
Alien Royal - A subtype of alien which is used for the larger alien castes (queen and praetorian)
Alien Praetorian - A larget, tankier alien who wields an impressive amount of health at the cost of speed and ventcrawling.
Alien Queen - The most important alien caste, the queen is the only reproductive member of the set.
Alien Sentinel - A slightly more durable but less mobile xeno caste. Utilizes neurotoxin to bring down prey, and has a unique cloaking ability.
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:
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.
Facehugger - A simplemob used by aliens to reproduce. Will attempt to impregnate humans on its own, but can also be picked up and thrown for more efficiency.
Toy Facehugger - A toy breed of facehugger which is sterile and can be purchased from the mining vendor.
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.
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
ammo_stack - The ammo stack object itself, making this a magazine was the easiest way to handle it
Practically every casing type needs an associated ammo stack type, because that was the easiest
way for me to handle it.
hard_drive/small/nukeops - For tablets given to nuke ops
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.
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
training_toolbox - Device that simply counts the number of times you've hit a mob or target with. Looks like a toolbox but isn't.
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
bounty_board - A machine that acts basically like a quest board.
Enables crew to create requests, crew can sign up to perform the request, and the requester can chose who to pay-out.
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.
filter - chemical plumbing filter. If it's not filtered by left and right, it goes straight.
input - We can empty beakers in here and everything
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 seperated and only reacts under your given terms
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
boh_tear - BoH tear
The BoH tear is a stationary singularity with a really high gravitational pull, which collapses briefly after being created
The BoH isn't deleted for 10 minutes (only moved to nullspace) so that admins may retrieve the things back in case of a grief