Paradise Station 13 - Modules - TypesVar Details - Proc Details

(global)

Vars

FailsafeFailsafe
MasterStonedMC
SSambienceThe subsystem used to play ambience to users every now and then, makes them real excited.
SScleanup
SSpersistent_data
SSrunechat
SStguitgui subsystem

Procs

CreateBansDEBUG
RoundDiagBarDiagnostic HUDs!
add_attack_logsCreates attack (old and new) logs for the user and defense logs for the target. Will message admins depending on the custom_level, user and target.
bangCreates a flashing effect that blinds and deafens mobs within range
broadcast_messageMessage Broadcast Proc
check_active_security_force
client2rankcolourProc to generate a "rank colour" from a client
empulseWill cause an EMP on the given epicenter. This proc can sleep depending on the affected objects. So assume it sleeps!
fire_flash_logFlashfire is a proc used to log fire causing chemical reactions.
get_all_linked_levels_zposProc to get a list of all the linked-together Z-Levels
get_allowed_instrument_idsGet all non admin_only instruments as a list of text ids.
get_atoms_of_typeReturns a list of atoms in a location of a given type. Can be refined to look for pixel-shift.
get_bbox_of_atomsGet a bounding box of a list of atoms.
get_channel_nameReturns the clean name of an audio channel.
get_rad_contentsA special GetAllContents that doesn't search past things with rad insulation Components which return COMPONENT_BLOCK_RADIATION prevent further searching into that object's contents. The object itself will get returned still. The ignore list makes those objects never return at all
get_valid_vent_spawnsReturns a list of vents that can be used as a potential spawn if they meet the criteria set by the arguments
getlineGets the turfs which are between the two given atoms. Including their positions Only works for atoms on the same Z level which is not 0. So an atom located in a non turf won't work Arguments:
goonchem_vortexThrows or pulls objects to/from a chem reaction
is_bad_connectionConnection checker
is_special_characterADMIN HELPER PROCS
locateUIDLocates a datum based off of the UID
makeDatumRefListsInitial Building
make_associativeA proc for turning a list into an associative list.
message_adminTicket
message_mentorTicket
setupcult.
shake_cameraShake the camera of the person viewing the mob SO REAL!
start_watchReturns "watch handle" (really just a timestamp :V)
stop_watchReturns number of seconds elapsed. @param wh number The "Watch Handle" from start_watch(). (timestamp)

Var Details

Failsafe

Failsafe

Pretty much pokes the MC to make sure it's still alive.

Master

StonedMC

Designed to properly split up a given tick among subsystems Note: if you read parts of this code and think "why is it doing it that way" Odds are, there is a reason

SSambience

The subsystem used to play ambience to users every now and then, makes them real excited.

SScleanup

Cleanup Subsystem

For now, all it does is periodically clean the supplied global lists of any null values they may contain.

Why is this important?

Sometimes, these lists can gain nulls due to errors. For example, when a dead player trasitions from the dead_mob_list to the alive_mob_list, a null value may get stuck in the dead mob list. This can cause issues when other code tries to do things with the values in the list, but are instead met with null values. These problems are incredibly hard to track down and fix, so this subsystem is a solution to that.

SSpersistent_data

Persistent Data Subsystem

Provides a centralised handler for persistent data reading and writing. The subsystem does not do any actual spawning itself, as this focuses on objects and mobs Should anything that is turf persistence related added in, that can be chucked into this SS Its quite a simple subsystem. For now, anyways.

SSrunechat

Runechat Subsystem

Maintains a timer-like system to handle destruction of runechat messages. Much of this code is modeled after or adapted from the timer subsystem. Made by Bobbahbrown of /tg/station13

Note that this has the same structure for storing and queueing messages as the timer subsystem does for handling timers: the bucket_list is a list of chatmessage datums, each of which are the head of a circularly linked list. Any given index in bucket_list could be null, representing an empty bucket.

AA Note: One of the primary reasons for this is because each chatmessage has a timer attached to it, which is extra load on the GC At 150 population, the GC literally cannot keep up with processing 368,000 runechats and 368,000 extra timers in a 1 hour 30 minute round This also makes performance profiling a lot easier.

SStgui

tgui subsystem

Contains all tgui state and subsystem code.

Proc Details

CreateBans

DEBUG

RoundDiagBar

Diagnostic HUDs!

add_attack_logs

Creates attack (old and new) logs for the user and defense logs for the target. Will message admins depending on the custom_level, user and target.

custom_level will determine the log level set. Unless the target is SSD and there is a user doing it If custom_level is not set then the log level will be determined using the user and the target.

bang

Creates a flashing effect that blinds and deafens mobs within range

Arguments:

broadcast_message

Message Broadcast Proc

This big fat disaster is responsible for sending the message out to all headsets and radios on the station It is absolutely disgusting, but used to take about 20 arguments before I slimmed it down to just one Arguments:

check_active_security_force

client2rankcolour

Proc to generate a "rank colour" from a client

This takes the client and looks at various factors in order, such as patreon status, staff rank, and more Arguments:

empulse

Will cause an EMP on the given epicenter. This proc can sleep depending on the affected objects. So assume it sleeps!

epicenter - The center of the EMP. Can be an atom, as long as the given atom is on a turf (in)directly heavy_range - The max distance from the epicenter where objects will be get heavy EMPed light_range - The max distance from the epicenter where objects will get light EMPed log - Whether or not this action should be logged or not. Will use the cause if provided cause - The cause of the EMP. Used for the logging

fire_flash_log

Flashfire is a proc used to log fire causing chemical reactions.

Call this whenever you have a chemical reaction that makes fire flashes. Arguments:

get_all_linked_levels_zpos

Proc to get a list of all the linked-together Z-Levels

Returns a list of zlevel numbers which can be accessed from travelling space naturally

get_allowed_instrument_ids

Get all non admin_only instruments as a list of text ids.

get_atoms_of_type

Returns a list of atoms in a location of a given type. Can be refined to look for pixel-shift.

Arguments:

get_bbox_of_atoms

Get a bounding box of a list of atoms.

Arguments:

Returns: list(x1, y1, x2, y2)

get_channel_name

Returns the clean name of an audio channel.

Arguments:

get_rad_contents

A special GetAllContents that doesn't search past things with rad insulation Components which return COMPONENT_BLOCK_RADIATION prevent further searching into that object's contents. The object itself will get returned still. The ignore list makes those objects never return at all

get_valid_vent_spawns

Returns a list of vents that can be used as a potential spawn if they meet the criteria set by the arguments

Will not include parent-less vents to the returned list. Arguments:

getline

Gets the turfs which are between the two given atoms. Including their positions Only works for atoms on the same Z level which is not 0. So an atom located in a non turf won't work Arguments:

goonchem_vortex

Throws or pulls objects to/from a chem reaction

Scales the amount of objects thrown with the volume, unless ignore_volume is TRUE

Arguments:

is_bad_connection

Connection checker

Checks the connection frequency against the intended frequency for the message NOTE: I barely know what on earth this does, but it works and it scares me Arguments:

is_special_character

ADMIN HELPER PROCS

locateUID

Locates a datum based off of the UID

Replacement for locate() which takes a UID instead of a ref Returns the datum, if found

makeDatumRefLists

Initial Building

make_associative

A proc for turning a list into an associative list.

A simple proc for turning all things in a list into an associative list, instead Each item in the list will have an associative value of TRUE

Arguments:

message_adminTicket

message_mentorTicket

setupcult

.

shake_camera

Shake the camera of the person viewing the mob SO REAL!

start_watch

Returns "watch handle" (really just a timestamp :V)

stop_watch

Returns number of seconds elapsed. @param wh number The "Watch Handle" from start_watch(). (timestamp)