GainStation13/code/datums/bark.dm 
| /datum/bark/moff/short | All of these are from this PR: https://github.com/Bubberstation/Bubberstation/pull/987 |
|---|
commit 705fd9528ee87c3b20bc3c9ad88c14e9d8a6e70f Author: sheepishgoat <100518708+sheepishgoat@users.noreply.github.com> Date: Wed Feb 5 06:19:18 2025 +0000 Deploying to gh-pages from @ e8e0068531dd988f9e65b33ae7866d4fbf1fdd9e π diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/CNAME b/CNAME new file mode 100644 index 0000000000..7281afb141 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +codedocs.citadel-station.net diff --git a/GainStation13/code/datums/bark.html b/GainStation13/code/datums/bark.html new file mode 100644 index 0000000000..2ce1715b84 --- /dev/null +++ b/GainStation13/code/datums/bark.html @@ -0,0 +1 @@ +
| /datum/bark/moff/short | All of these are from this PR: https://github.com/Bubberstation/Bubberstation/pull/987 |
|---|
| /obj/item/paper/fluff/ruins/feeder_den/hidden | feeder den, GS13 |
|---|
| /datum/barsign/the_busted_belt | GS13 BARSIGNS |
|---|
| /obj/structure/medkit_cabinet | Reuses fire extinguisher cabinet wall mount code to create an equivalent for medkits. Honestly not sure how most of this works beyond that it does work. |
|---|
| /turf/closed/indestructible/candy | GS13 CLOSED TURFS |
|---|
| /turf/open/indestructible/chocolate | GS13 OPEN TURFS |
|---|
| /obj/structure/disposaloutlet/industrial_feeding_tube | Contains: +Industrial Feeding Tube |
|---|
| /obj/item/book/granter/spell/fattening | Spellbooks |
|---|
| /obj/item/reagent_containers/food/drinks/bigbottle | GS13 - big bottles |
|---|
| /obj/item/reagent_containers/food/drinks/soda_cans/fizzwiz | GS13 Drinks |
|---|
| /obj/item/reagent_containers/food/snacks/pizza/framewrecker | PIZZA!!! |
|---|
| /datum/reagent/consumable/ethanol/oily_oafs | GS13 drinks! |
|---|
| /datum/chemical_reaction/lesser_pink | SUBTLE GLITTERS |
|---|
| /datum/design/fatoray_weak | GS13 designs / nutri designs |
|---|
| /datum/techweb_node/nutritech_tools | GS13 - NUTRITIONAL TECHNOLOGY |
|---|
| /obj/item/storage/fancy/cigarettes/gatito | GS13 - reflavoring of random items into GATO corp, mostly seperated variants so we don't overwrite NT |
|---|
| /obj/item/trash/fatoray_scrap1 | GS13 - miscellanous items. If it's a small item, a container or something +then it should land here, instead of making a seperate .dm file |
|---|
| /obj/item/gun/energy/laser/alter_ray | GS13 - rayguns for metabolism and breasts/ass manipulation |
|---|
| /obj/item/gun/energy/fatoray | //GS13 - fattening rayguns and ranged weapons +The base fatoray |
|---|---|
| /obj/item/projectile/beam/fattening | The base projectile used by the fatoray |
| /obj/item/gun/energy/fatoray/cannon | Fatoray - cannon variant, strong but can be charged |
| /obj/item/gun/energy/fatoray/weak | /////FATORAYS THAT CAN BE MADE BY LATHES OR RESEARCHED/////////// |
| /obj/item/projectile/beam/fattening/weak | The base projectile used by the fatoray |
| /obj/item/gun/energy/fatoray/cannon_weak | Single shot glass cannon fatoray |
|
|
|
|
|
|
|
|
A grouping of tiles into a logical space, mostly used by map editors
Vars | |
| active_alarms | Alarm type to count of sources. Not usable for ^ because we handle fires differently |
|---|---|
| alarm_manager | We use this just for fire alarms, because they're area based right now so one alarm going poof shouldn't prevent you from clearing your alarms listing |
| always_unpowered | This gets overridden to 1 for space in area/Initialize(mapload). |
| areasize | Size of the area in open turfs, only calculated for indoors areas. |
| beauty | Beauty average per open turf in the area |
| beauty_threshold | If a room is too big it doesn't have beauty. |
| clockwork_warp_allowed | whether servants can warp into this area from Reebe |
| clockwork_warp_fail | Message to display when the clockwork warp fails |
| considered_hull_exterior | Considered space for hull shielding |
| dirt_buildup_allowed | Dirty flooring allowed |
| fire | Do we have an active fire alarm? |
| flora_allowed | If flora are allowed to spawn in this area randomly through tunnel generation |
| hidden | Hides area from player Teleport function. |
| map_generator | This datum, if set, allows terrain generation behavior to be ran on Initialize() |
| map_name | CIT SPECIFIC VARS +Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints. |
| megafauna_spawn_allowed | If megafauna can be spawned by natural random generation |
| minimap_color | Color on minimaps, if it's null (which is default) it makes one at random. |
| mob_spawn_allowed | if mobs can be spawned by natural random generation |
| mood_bonus | Bonus mood for being in this area |
| mood_message | Mood message for being here, only shows up if mood_bonus != 0 |
| outdoors | For space, the asteroid, lavaland, etc. Used with blueprints or with weather to determine if we are adding a new area (vs editing a station room) |
| parallax_move_angle | Parallax move dir - degrees clockwise from north |
| parallax_move_speed | Parallax move speed - 0 to disable |
| parallax_moving | Parallax moving? |
| persistent_debris_allowed | Persistent debris alowed |
| requires_power | Will objects this area be needing power? |
| safe | Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers |
| sound_environment | Used to decide what kind of reverb the area makes sound have |
| sub_areas | These two vars allow for multiple unique areas to be linked to a master area +and share some functionalities such as APC powernet nodes, fire alarms etc, without sacrificing +their own flags, statuses, variables and more snowflakes. +Friendly reminder: no map edited areas. |
| totalbeauty | All beauty in this area combined, only includes indoor area. |
| triggered_firealarms | How many fire alarm sources do we have? |
| tunnel_allowed | If mining tunnel generation is allowed in this area |
| valid_malf_hack | malf ais can hack this |
Procs | |
| Destroy | Destroy an area and clean it up |
| Entered | Call back when an atom enters an area |
| Exited | Called when an atom exits an area |
| Initialize | Initalize this area |
| LateInitialize | Sets machine power levels in the area |
| ModifyFiredoors | Try to close all the firedoors in the area |
| New | Called when an area loads |
| reg_in_areas_in_z | Register this area as belonging to a z level |
| update_beauty | Divides total beauty in the room by roomsize to allow us to get an average beauty per tile. |
| update_icon_state | Update the icon state of the area |
Alarm type to count of sources. Not usable for ^ because we handle fires differently
We use this just for fire alarms, because they're area based right now so one alarm going poof shouldn't prevent you from clearing your alarms listing
This gets overridden to 1 for space in area/Initialize(mapload).
Size of the area in open turfs, only calculated for indoors areas.
Beauty average per open turf in the area
If a room is too big it doesn't have beauty.
whether servants can warp into this area from Reebe
Message to display when the clockwork warp fails
Considered space for hull shielding
Dirty flooring allowed
Do we have an active fire alarm?
If flora are allowed to spawn in this area randomly through tunnel generation
Hides area from player Teleport function.
This datum, if set, allows terrain generation behavior to be ran on Initialize()
CIT SPECIFIC VARS +Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
If megafauna can be spawned by natural random generation
Color on minimaps, if it's null (which is default) it makes one at random.
if mobs can be spawned by natural random generation
Bonus mood for being in this area
Mood message for being here, only shows up if mood_bonus != 0
For space, the asteroid, lavaland, etc. Used with blueprints or with weather to determine if we are adding a new area (vs editing a station room)
Parallax move dir - degrees clockwise from north
Parallax move speed - 0 to disable
Parallax moving?
Persistent debris alowed
Will objects this area be needing power?
Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers
Used to decide what kind of reverb the area makes sound have
These two vars allow for multiple unique areas to be linked to a master area +and share some functionalities such as APC powernet nodes, fire alarms etc, without sacrificing +their own flags, statuses, variables and more snowflakes. +Friendly reminder: no map edited areas.
All beauty in this area combined, only includes indoor area.
How many fire alarm sources do we have?
If mining tunnel generation is allowed in this area
malf ais can hack this
Destroy an area and clean it up
+Removes the area from GLOB.areas_by_type and also stops it processing on SSobj
+This is despite the fact that no code appears to put it on SSobj, but +who am I to argue with old coders
Call back when an atom enters an area
+Sends signals COMSIG_AREA_ENTERED and COMSIG_ENTER_AREA (to the atom)
+If the area has ambience, then it plays some ambience music to the ambience channel
Called when an atom exits an area
+Sends signals COMSIG_AREA_EXITED and COMSIG_EXIT_AREA (to the atom)
Initalize this area
+intializes the dynamic area lighting and also registers the area with the z level via +reg_in_areas_in_z
+returns INITIALIZE_HINT_LATELOAD
Sets machine power levels in the area
Try to close all the firedoors in the area
Called when an area loads
+Adds the item to the GLOB.areas_by_type list based on area type
Register this area as belonging to a z level
+Ensures the item is added to the SSmapping.areas_in_z list for this z
Divides total beauty in the room by roomsize to allow us to get an average beauty per tile.
Update the icon state of the area
+Im not sure what the heck this does, somethign to do with weather being able to set icon +states on areas?? where the heck would that even display?
Procs | |
| update_icon_state | Update the icon of the area (overridden to always be null for space |
|---|---|
Update the icon of the area (overridden to always be null for space
The base type for nearly all physical objects in SS13
+Lots and lots of functionality lives here, although in general we are striving to move +as much as possible to the components/elements system
Vars | |
| add_overlays | a very temporary list of overlays to add |
|---|---|
| article | If non-null, overrides a/an/some in all cases |
| atom_colours | used to store the different colors on an atom |
| attack_hand_is_action | Should we set last action for attack hand? This implies that attack_hands to this atom should flush to clickdelay buffers instead of discarding. |
| attack_hand_speed | Amount of time to check for from a mob's last attack to allow an attack_hand(). |
| attack_hand_unwieldlyness | Amount of time to hard stagger (no clicking at all) the mob post attack_hand(). Lower = better |
| base_icon_state | Used for changing icon states for different base sprites. |
| chat_color | Last color calculated for the the chatmessage overlays |
| chat_color_darkened | A luminescence-shifted value of the last color calculated for chatmessage overlays |
| chat_color_name | Last name used to calculate a color for the chatmessage overlays |
| custom_materials | The custom materials this atom is made of, used by a lot of things like furniture, walls, and floors (if I finish the functionality, that is.) +The list referenced by this var can be shared by multiple objects and should not be directly modified. Instead, use set_custom_materials. |
| custom_premium_price | Price of an item in a vending machine, overriding the premium vending machine price. Define in terms of paycheck defines as opposed to raw numbers. |
| custom_price | Price of an item in a vending machine, overriding the base vending machine price. Define in terms of paycheck defines as opposed to raw numbers. |
| explosion_block | Value used to increment ex_act() if reactionary_explosions is on |
| explosion_flags | Flags for explosions |
| fingerprintslast | Last fingerprints to touch this atom |
| flags_1 | First atom flags var |
| hud_list | This atom's HUD (med/sec, etc) images. Associative list. |
| hud_possible | HUD images that this atom can provide. |
| interaction_flags_atom | Intearaction flags |
| managed_overlays | overlays managed by update_overlays to prevent removing overlays that weren't added by the same proc |
| managed_vis_overlays | vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays |
| material_flags | Bitfield for how the atom handles materials. |
| material_modifier | Modifier that raises/lowers the effect of the amount of a material, prevents small and easy to get items from being death machines. |
| orbit_target | Reference to atom being orbited |
| pass_flags_self | pass_flags that we are. If any of this matches a pass_flag on a moving thing, by default, we let them through. |
| proximity_monitor | Proximity monitor associated with this atom |
| rad_insulation | Radiation insulation types |
| reagents | Reagents holder |
| realized_overlays | List of overlay "keys" (info about the appearance) -> mutable versions of static appearances +Drawn from the overlays list |
| realized_underlays | List of underlay "keys" (info about the appearance) -> mutable versions of static appearances +Drawn from the underlays list |
| remove_overlays | a very temporary list of overlays to remove |
| ricochet_chance_mod | When a projectile tries to ricochet off this atom, the projectile ricochet chance is multiplied by this |
| ricochet_damage_mod | When a projectile ricochets off this atom, it deals the normal damage * this modifier to this atom |
| targeted_by | Mobs that are currently do_after'ing this atom, to be cleared from on Destroy() |
| wave_explosion_block | Amount to decrease wave explosions by |
| wave_explosion_multiply | Amount to multiply wave explosions by |
Procs | |
| AltClickNoInteract | Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction |
| CanAllowThrough | Returns true or false to allow the mover to move through src |
| ComponentInitialize | Put your AddComponent calls here |
| Destroy | Top level of the destroy chain for most atoms |
| Initialize | The primary method that objects are setup in SS13 with |
| LateInitialize | Late Intialization, for code that should run after all atoms have run Intialization |
| New | Called when an atom is created in byond (built in engine proc) |
| _contents | Wrapper to return a copy of contents, as SDQL2 can't tell an internal list from a normal list. |
| add_context | Creates a "Type-B" contextual screentip interaction.
+When a user hovers over this, this proc will be called in order
+to provide context for contextual screentips.
+You must call register_context() in order for this to be registered.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+source can, in all cases, be replaced with src, and only exists because this proc directly connects to a signal. |
| audible_message | Show a message to all mobs in earshot of this atom |
| balloon_alert | Creates text that will float from the atom upwards to the viewer. |
| balloon_alert_to_viewers | Create balloon alerts (text that floats up) to everything within range. +Will only display to people who can see. |
| bullet_act | React to a hit by a projectile object |
| check_projectile_ricochet | Checks if a projectile should ricochet off of us. Projectiles get final say. +[__DEFINES/projectiles.dm] for return values. |
| connect_to_shuttle | Called after a shuttle is loaded from map template initially. |
| examine_more | Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_TIME (default 1.5 seconds) |
| get_examine_string | Generate the full examine string of this atom (including icon for goonchat) |
| get_filter_index | Returns the indice in filters of the given filter name. +If it is not found, returns null. |
| has_gravity | Returns true if this atom has gravity for the passed in turf |
| hitby | React to being hit by a thrown object |
| hitby_react | We have have actually hit the passed in atom |
| mat_update_desc | This proc is called when a material updates an object's description |
| mech_melee_attack | Called when a mech melee attacks an atom |
| ninjadrain_act | Atom level proc for space ninja's glove interactions. |
| onAwayMission | Is the atom in an away mission |
| onCentCom | Is this atom currently located on centcom |
| onSyndieBase | Is the atom in any of the centcom syndicate areas |
| realize_overlays | Takes the atoms's existing overlays and underlays, and makes them mutable so they can be properly vv'd in the realized_overlays/underlays list |
| register_context | Create a "Type-B" contextual screentip interaction, registering to add_context().
+This will run add_context() when the atom is hovered over by an item for context.
+add_context() will not be called unless this is run.
+This is not necessary for Type-B interactions, as you can just apply the flag and register to the signal yourself. |
| rust_heretic_act | Causes effects when the atom gets hit by a rust effect from heretics |
| setClosed | Used to set something as 'closed' if it's being used as a supplypod |
| setOpened | Used to set something as 'open' if it's being used as a supplypod |
| set_custom_materials | Sets the custom materials for an item. |
| set_light_color | Setter for the light color of this atom. |
| set_light_range | Setter for the light range of this atom. |
| shuttleRotate | Base proc |
| update_appearance | Updates the appearence of the icon |
| update_desc | Updates the description of the atom |
| update_icon | Updates the icon of the atom |
| update_icon_state | Updates the icon state of the atom |
| update_name | Updates the name of the atom |
| update_overlays | Builds a list of overlays for the atom, this will not apply them. +If you need to update overlays, use [update_icon(UPDATE_OVERLAYS)], +This proc is intended to be overridden. |
| visible_message | Generate a visible message from this atom |
| wave_ex_act | Called when a wave explosion hits this atom. |
| wave_explode | Called when a wave explosion hits this atom. Do not override this. |
| zap_act | Respond to a electric bolt action on our item |
a very temporary list of overlays to add
If non-null, overrides a/an/some in all cases
used to store the different colors on an atom
+its inherent color, the colored paint applied on it, special color effect etc...
Should we set last action for attack hand? This implies that attack_hands to this atom should flush to clickdelay buffers instead of discarding.
Amount of time to check for from a mob's last attack to allow an attack_hand().
Amount of time to hard stagger (no clicking at all) the mob post attack_hand(). Lower = better
Used for changing icon states for different base sprites.
Last color calculated for the the chatmessage overlays
A luminescence-shifted value of the last color calculated for chatmessage overlays
Last name used to calculate a color for the chatmessage overlays
The custom materials this atom is made of, used by a lot of things like furniture, walls, and floors (if I finish the functionality, that is.) +The list referenced by this var can be shared by multiple objects and should not be directly modified. Instead, use set_custom_materials.
Price of an item in a vending machine, overriding the premium vending machine price. Define in terms of paycheck defines as opposed to raw numbers.
Price of an item in a vending machine, overriding the base vending machine price. Define in terms of paycheck defines as opposed to raw numbers.
Value used to increment ex_act() if reactionary_explosions is on
Flags for explosions
Last fingerprints to touch this atom
First atom flags var
This atom's HUD (med/sec, etc) images. Associative list.
HUD images that this atom can provide.
Intearaction flags
overlays managed by update_overlays to prevent removing overlays that weren't added by the same proc
vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays
Bitfield for how the atom handles materials.
Modifier that raises/lowers the effect of the amount of a material, prevents small and easy to get items from being death machines.
Reference to atom being orbited
pass_flags that we are. If any of this matches a pass_flag on a moving thing, by default, we let them through.
Proximity monitor associated with this atom
Radiation insulation types
Reagents holder
List of overlay "keys" (info about the appearance) -> mutable versions of static appearances +Drawn from the overlays list
List of underlay "keys" (info about the appearance) -> mutable versions of static appearances +Drawn from the underlays list
a very temporary list of overlays to remove
When a projectile tries to ricochet off this atom, the projectile ricochet chance is multiplied by this
When a projectile ricochets off this atom, it deals the normal damage * this modifier to this atom
Mobs that are currently do_after'ing this atom, to be cleared from on Destroy()
Amount to decrease wave explosions by
Amount to multiply wave explosions by
Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction
Returns true or false to allow the mover to move through src
Put your AddComponent calls here
Top level of the destroy chain for most atoms
+Cleans up the following:
+The primary method that objects are setup in SS13 with
+we don't use New as we have better control over when this is called and we can choose +to delay calls or hook other logic in and so forth
+During roundstart map parsing, atoms are queued for intialization in the base atom/New(), +After the map has loaded, then Initalize is called on all atoms one by one. NB: this +is also true for loading map templates as well, so they don't Initalize until all objects +in the map file are parsed and present in the world
+If you're creating an object at any point after SSInit has run then this proc will be +immediately be called from New.
+mapload: This parameter is true if the atom being loaded is either being intialized during +the Atom subsystem intialization, or if the atom is being loaded from the map template. +If the item is being created at runtime any time after the Atom subsystem is intialized then +it's false.
+You must always call the parent of this proc, otherwise failures will occur as the item +will not be seen as initalized (this can lead to all sorts of strange behaviour, like +the item being completely unclickable)
+You must not sleep in this proc, or any subprocs
+Any parameters from new are passed through (excluding loc), naturally if you're loading from a map +there are no other arguments
+Must return an initialization hint or a runtime will occur.
+Note: the following functions don't call the base for optimization and must copypasta handling:
+Late Intialization, for code that should run after all atoms have run Intialization
+To have your LateIntialize proc be called, your atoms Initalization +proc must return the hint +INITIALIZE_HINT_LATELOAD otherwise you will never be called.
+useful for doing things like finding other machines on GLOB.machines because you can guarantee +that all atoms will actually exist in the "WORLD" at this time and that all their Intialization +code has been run
Called when an atom is created in byond (built in engine proc)
+Not a lot happens here in SS13 code, as we offload most of the work to the +Intialization proc, mostly we run the preloader +if the preloader is being used and then call InitAtom of which the ultimate +result is that the Intialize proc is called.
+We also generate a tag here if the DF_USE_TAG flag is set on the atom
Wrapper to return a copy of contents, as SDQL2 can't tell an internal list from a normal list.
Creates a "Type-B" contextual screentip interaction.
+When a user hovers over this, this proc will be called in order
+to provide context for contextual screentips.
+You must call register_context() in order for this to be registered.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+source can, in all cases, be replaced with src, and only exists because this proc directly connects to a signal.
Show a message to all mobs in earshot of this atom
+Use for objects performing audible actions
+vars:
+Creates text that will float from the atom upwards to the viewer.
Create balloon alerts (text that floats up) to everything within range. +Will only display to people who can see.
React to a hit by a projectile object
+Default behaviour is to send the COMSIG_ATOM_BULLET_ACT and then call [on_hit][/obj/item/projectile/proc/on_hit] on the projectile
+@params +P - projectile +def_zone - zone hit +piercing_hit - is this hit piercing or normal?
Checks if a projectile should ricochet off of us. Projectiles get final say. +[__DEFINES/projectiles.dm] for return values.
Called after a shuttle is loaded from map template initially.
+@params
+Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_TIME (default 1.5 seconds)
+This is where you can put extra information on something that may be superfluous or not important in critical gameplay +moments, while allowing people to manually double-examine to take a closer look
+Produces a signal COMSIG_PARENT_EXAMINE_MORE
Generate the full examine string of this atom (including icon for goonchat)
Returns the indice in filters of the given filter name. +If it is not found, returns null.
Returns true if this atom has gravity for the passed in turf
+Sends signals COMSIG_ATOM_HAS_GRAVITY and COMSIG_TURF_HAS_GRAVITY, both can force gravity with +the forced gravity var
+Gravity situations:
+React to being hit by a thrown object
+Default behaviour is to call hitby_react on ourselves after 2 seconds if we are dense +and under normal gravity.
+Im not sure why this the case, maybe to prevent lots of hitby's if the thrown object is +deleted shortly after hitting something (during explosions or other massive events that +throw lots of items around - singularity being a notable example)
We have have actually hit the passed in atom
+Default behaviour is to move back from the item that hit us
This proc is called when a material updates an object's description
Called when a mech melee attacks an atom
Atom level proc for space ninja's glove interactions.
+Proc which only occurs when space ninja uses his gloves on an atom. +Does nothing by default, but effects will vary. +Arguments:
+Is the atom in an away mission
+Must be in the away mission z-level to return TRUE
+Also used in gamemode code for win conditions
Is this atom currently located on centcom
+Specifically, is it on the z level and within the centcom areas
+You can also be in a shuttleshuttle during endgame transit
+Used in gamemode to identify mobs who have escaped and for some other areas of the code +who don't want atoms where they shouldn't be
Is the atom in any of the centcom syndicate areas
+Either in the syndie base on centcom, or any of their shuttles
+Also used in gamemode code for win conditions
Takes the atoms's existing overlays and underlays, and makes them mutable so they can be properly vv'd in the realized_overlays/underlays list
Create a "Type-B" contextual screentip interaction, registering to add_context().
+This will run add_context() when the atom is hovered over by an item for context.
+add_context() will not be called unless this is run.
+This is not necessary for Type-B interactions, as you can just apply the flag and register to the signal yourself.
Causes effects when the atom gets hit by a rust effect from heretics
+Override this if you want custom behaviour in whatever gets hit by the rust
Used to set something as 'closed' if it's being used as a supplypod
+Override this if you want an atom to be usable as a supplypod.
Used to set something as 'open' if it's being used as a supplypod
+Override this if you want an atom to be usable as a supplypod.
Sets the custom materials for an item.
Setter for the light color of this atom.
Setter for the light range of this atom.
Base proc
Updates the appearence of the icon
+Mostly delegates to update_name, update_desc, and update_icon
+Arguments:
+Updates the description of the atom
Updates the icon of the atom
Updates the icon state of the atom
Updates the name of the atom
Builds a list of overlays for the atom, this will not apply them. +If you need to update overlays, use [update_icon(UPDATE_OVERLAYS)], +This proc is intended to be overridden.
Generate a visible message from this atom
+Show a message to all player mobs who sees this atom
+Show a message to the src mob (if the src is a mob)
+Use for atoms performing visible actions
+message is output to anyone who can see, e.g. "The [src] does something!"
+Vars:
+Called when a wave explosion hits this atom.
+Returns explosion power to "allow through". Standard handling and flag overrides in [wave_explode()].
Called when a wave explosion hits this atom. Do not override this.
+Returns explosion power to "allow through".
Respond to a electric bolt action on our item
+Default behaviour is to return, we define here to allow for cleaner code later on
Vars | |
| blocks_emissive | Either FALSE, EMISSIVE_BLOCK_GENERIC, or EMISSIVE_BLOCK_UNIQUE |
|---|---|
| can_be_z_moved | Used for space ztransit stuff |
| em_block | Internal holder for emissive blocker object, do not use directly use blocks_emissive |
| floating_need_update | If we were without gravity and another animation happened, the bouncing will stop, and we need to restart it in next life(). |
| generic_canpass | If false makes CanPass call CanPassThrough on this type instead of using default behaviour |
| last_yell | last time we yelled |
| movement_type | In case you have multiple types, you automatically use the most useful one. +IE: Skating on ice, flippers on water, flying over chasm/space, etc. +I reccomend you use the movetype_handler system and not modify this directly, especially for living mobs. |
| pass_flags | Things we can pass through while moving. If any of this matches the thing we're trying to pass's [pass_flags_self], then we can pass through. |
| tooltips | Should we use tooltips, if the thing does not have the code implemented get_tooltip_data(), it will default to examine(src) |
| yell_power | How loudly we yell |
Procs | |
| CanPassThrough | Returns true or false to allow src to move through the blocker, mover has final say |
| Process_Spacemove | Called whenever an object moves and by mobs when they attempt to move themselves through space +And when an object or action applies a force on src, see newtonian_move |
| abstract_move | meant for movement with zero side effects. only use for objects that are supposed to move "invisibly" (like camera mobs or ghosts) +if you want something to move onto a tile with a beartrap or recycler or tripmine or mouse without that object knowing about it at all, use this +most of the time you want forceMove() |
| add_blocked_language | Adds a language to the blocked language list. Use this over remove_language in cases where you will give languages back later. |
| admin_teleport | Proc to hook user-enacted teleporting behavior and keep logging of the event. |
| can_speak_language | Checks if atom can speak the language. |
| copy_languages | Copies all languages into the supplied atom/language holder. Source should be overridden when you +do not want the language overwritten by later atom updates or want to avoid blocked languages. |
| could_speak_language | Returns the result of tongue specific limitations on spoken languages. |
| forceMove | FORCED MOVEMENT |
| get_language_holder | Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one. |
| get_random_spoken_language | Gets a random spoken language, useful for forced speech and such. |
| get_random_understood_language | Gets a random understood language, useful for hallucinations and such. |
| get_selected_language | Returns selected language, if it can be spoken, or finds, sets and returns a new selected language if possible. |
| get_tooltip_data | If set, will return a list for the tooltip (that will also be put together in a Join())
+However, if returning null, the tooltip will not be shown as #14942 changed it. |
| grant_all_languages | Grants every language. |
| grant_language | Grants the supplied language and sets omnitongue true. |
| has_language | Checks if atom has the language. If spoken is true, only checks if atom can speak the language. |
| mouse_buckle_handling | Does some typechecks and then calls user_buckle_mob |
| newtonian_move | Only moves the object if it's under no gravity |
| on_enter_storage | called when this atom is added into a storage item, which is passed on as S. The loc variable is already set to the storage item. |
| on_exit_storage | called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called. |
| point_at | Point at an atom |
| quoteless_say_quote | Quirky citadel proc for our custom sayverbs to strip the verb out. Snowflakey as hell, say rewrite 3.0 when? |
| recursive_pulled_glidesize_update | Recursively set glide size for atom's pulled things |
| remove_all_languages | Removes every language and sets omnitongue false. |
| remove_blocked_language | Removes a language from the blocked language list. |
| remove_language | Removes a single language. |
| say_emphasis | Converts specific characters, like +, |, and _ to formatted output. |
| setGrabState | Updates the grab state of the movable |
| setMovetype | Proc to modify the movement_type and hook behavior associated with it changing. |
| set_anchored | Sets the anchored var and returns if it was sucessfully changed or not. |
| set_bark | Sets the vocal bark for the atom, using the bark's ID |
| set_pulledby | Reports the event of the change in value of the pulledby variable. |
| throw_at | If this returns FALSE then callback will not be called. |
| update_atom_languages | Empties out the atom specific languages and updates them according to the current atoms language holder. +As a side effect, it also creates missing language holders in the process. |
Either FALSE, EMISSIVE_BLOCK_GENERIC, or EMISSIVE_BLOCK_UNIQUE
Used for space ztransit stuff
Internal holder for emissive blocker object, do not use directly use blocks_emissive
If we were without gravity and another animation happened, the bouncing will stop, and we need to restart it in next life().
If false makes CanPass call CanPassThrough on this type instead of using default behaviour
last time we yelled
In case you have multiple types, you automatically use the most useful one. +IE: Skating on ice, flippers on water, flying over chasm/space, etc. +I reccomend you use the movetype_handler system and not modify this directly, especially for living mobs.
Things we can pass through while moving. If any of this matches the thing we're trying to pass's [pass_flags_self], then we can pass through.
Should we use tooltips, if the thing does not have the code implemented get_tooltip_data(), it will default to examine(src)
How loudly we yell
Returns true or false to allow src to move through the blocker, mover has final say
Called whenever an object moves and by mobs when they attempt to move themselves through space +And when an object or action applies a force on src, see newtonian_move
+return FALSE to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting
+Mobs should return TRUE if they should be able to move of their own volition, see [/client/proc/Move]
+Arguments:
+meant for movement with zero side effects. only use for objects that are supposed to move "invisibly" (like camera mobs or ghosts) +if you want something to move onto a tile with a beartrap or recycler or tripmine or mouse without that object knowing about it at all, use this +most of the time you want forceMove()
Adds a language to the blocked language list. Use this over remove_language in cases where you will give languages back later.
Proc to hook user-enacted teleporting behavior and keep logging of the event.
Checks if atom can speak the language.
Copies all languages into the supplied atom/language holder. Source should be overridden when you +do not want the language overwritten by later atom updates or want to avoid blocked languages.
Returns the result of tongue specific limitations on spoken languages.
FORCED MOVEMENT
Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one.
Gets a random spoken language, useful for forced speech and such.
Gets a random understood language, useful for hallucinations and such.
Returns selected language, if it can be spoken, or finds, sets and returns a new selected language if possible.
If set, will return a list for the tooltip (that will also be put together in a Join())
+However, if returning null, the tooltip will not be shown as #14942 changed it.
Though no tooltips will be created for atoms that have tooltips = FALSE
Grants every language.
Grants the supplied language and sets omnitongue true.
Checks if atom has the language. If spoken is true, only checks if atom can speak the language.
Does some typechecks and then calls user_buckle_mob
+Arguments: +M - The mob being buckled to src +user - The mob buckling M to src
Only moves the object if it's under no gravity
called when this atom is added into a storage item, which is passed on as S. The loc variable is already set to the storage item.
called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
Point at an atom
+Intended to enable and standardise the pointing animation for all atoms
+Not intended as a replacement for the mob verb
Quirky citadel proc for our custom sayverbs to strip the verb out. Snowflakey as hell, say rewrite 3.0 when?
Recursively set glide size for atom's pulled things
Removes every language and sets omnitongue false.
Removes a language from the blocked language list.
Removes a single language.
Converts specific characters, like +, |, and _ to formatted output.
Updates the grab state of the movable
+This exists to act as a hook for behaviour
Proc to modify the movement_type and hook behavior associated with it changing.
Sets the anchored var and returns if it was sucessfully changed or not.
Sets the vocal bark for the atom, using the bark's ID
Reports the event of the change in value of the pulledby variable.
If this returns FALSE then callback will not be called.
Empties out the atom specific languages and updates them according to the current atoms language holder. +As a side effect, it also creates missing language holders in the process.
Internal atom that copies an appearance on to the blocker plane
+Copies an appearance vis render_target and render_source on to the emissive blocking plane. +This means that the atom in question will block any emissive sprites. +This should only be used internally. If you are directly creating more of these, you're +almost guaranteed to be doing something wrong.
The shadow cone's mask and visual images holder which can't locate inside the mob, +lest they inherit the mob opacity and cause a lot of hindrance
Procs | |
| Destroy | Last but not least, these shouldn't be deleted by anything but the component itself |
|---|---|
| forceMove | Prevents people from moving these after creation, because they shouldn't be. |
Last but not least, these shouldn't be deleted by anything but the component itself
Prevents people from moving these after creation, because they shouldn't be.
Procs | |
| onShuttleMove | Misc move procs |
|---|---|
Misc move procs
Vars | |
| assigned_map | Map name assigned to this object. +Automatically set by /client/proc/add_obj_to_map. |
|---|---|
| del_on_map_removal | Mark this object as garbage-collectible after you clean the map +it was registered on. |
| hud | A reference to the owner HUD, if any. |
| master | A reference to the object in the slot. Grabs or items, generally. |
Procs | |
| fill_rect | Sets screen_loc to fill a rectangular area of the map. |
| set_position | Sets screen_loc of this screen object, in form of point coordinates, +with optional pixel offset (px, py). |
Map name assigned to this object. +Automatically set by /client/proc/add_obj_to_map.
Mark this object as garbage-collectible after you clean the map +it was registered on.
+This could probably be changed to be a proc, for conditional removal. +But for now, this works.
A reference to the owner HUD, if any.
A reference to the object in the slot. Grabs or items, generally.
Sets screen_loc to fill a rectangular area of the map.
+If applicable, "assigned_map" has to be assigned before this proc call.
Sets screen_loc of this screen object, in form of point coordinates, +with optional pixel offset (px, py).
+If applicable, "assigned_map" has to be assigned before this proc call.
Exists so you have a place to put your buttons when you move them around
Procs | |
| hit_by | Reacts to having a button dropped on it |
|---|---|
Reacts to having a button dropped on it
Vars | |
| click_master | Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master. |
|---|---|
Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master.
Procs | |
| check_in_range | Simply checks if the other person is still in range |
|---|---|
| handle_transfer | An overrideable proc used simply to hand over the item when claimed, this is a proc so that high-fives can override them since nothing is actually transferred |
| setup | Handles assigning most of the variables for the alert that pops up when an item is offered |
Simply checks if the other person is still in range
An overrideable proc used simply to hand over the item when claimed, this is a proc so that high-fives can override them since nothing is actually transferred
Handles assigning most of the variables for the alert that pops up when an item is offered
+Handles setting the name, description and icon of the alert and tracking the person giving +and the item being offered, also registers a signal that removes the alert from anyone who moves away from the offerer +Arguments:
+Procs | |
| check_fake_out | If someone examine_more's the offerer while they're trying to pull a too-slow, it'll tip them off to the offerer's trickster ways |
|---|---|
| too_slow_p1 | If the person who offered the high five no longer has it when we try to accept it, we get pranked hard |
| too_slow_p2 | Part two of the ultimate prank |
If someone examine_more's the offerer while they're trying to pull a too-slow, it'll tip them off to the offerer's trickster ways
If the person who offered the high five no longer has it when we try to accept it, we get pranked hard
Part two of the ultimate prank
Vars | |
| color_timer_id | Id of any currently running timers that set our color matrix |
|---|---|
Id of any currently running timers that set our color matrix
The screen button.
Procs | |
| Click | Wheter combat mode is enabled or not, so we don't have to store a reference. |
|---|---|
Wheter combat mode is enabled or not, so we don't have to store a reference.
Vars | |
| severity | current severity |
|---|---|
| severity_max | max severity |
| severity_min | min severity |
| show_when_dead | show this while dead |
| view_current | current view we're adapted to |
current severity
max severity
min severity
show this while dead
current view we're adapted to
Vars | |
| size_x | size of sprite in tiles |
|---|---|
| size_y | size of sprite in tiles |
size of sprite in tiles
size of sprite in tiles
Vars | |
| icon_empty | Icon when empty. For now used only by humans. |
|---|---|
| icon_full | Icon when contains an item. For now used only by humans. |
| object_overlay | The overlay when hovering over with an item in your hand |
| slot_id | The identifier for the slot. It has nothing to do with ID cards. |
Icon when empty. For now used only by humans.
Icon when contains an item. For now used only by humans.
The overlay when hovering over with an item in your hand
The identifier for the slot. It has nothing to do with ID cards.
Vars | |
| always_shown | Whether this HUD element can be hidden from the client's "screen" (moved off-screen) or not |
|---|---|
Procs | |
| SlowInit | Run sleeping actions after initialize |
| collapse_button | Animates moving the button off-screen |
| expand_button | Animates moving the button back into place |
Whether this HUD element can be hidden from the client's "screen" (moved off-screen) or not
Run sleeping actions after initialize
Animates moving the button off-screen
Animates moving the button back into place
Vars | |
| enabled | Is the button currently enabled? |
|---|---|
| highlighted | Is the button currently being hovered over with the mouse? |
| owner | The ref of the mob that owns this button. Only the owner can click on it. |
Procs | |
| set_button_status | Updates the button's status: TRUE to enable interaction with the button, FALSE to disable |
Is the button currently enabled?
Is the button currently being hovered over with the mouse?
The ref of the mob that owns this button. Only the owner can click on it.
Updates the button's status: TRUE to enable interaction with the button, FALSE to disable
Vars | |
| new_poll | Whether the button should have a New Poll notification overlay |
|---|---|
Whether the button should have a New Poll notification overlay
Procs | |
| collapse_menu | Moves the button to the top of the screen, leaving only the screen part in view +Sends a signal on the hud for the menu hud elements to listen to |
|---|---|
| expand_menu | Extends the button back to its usual spot +Sends a signal on the hud for the menu hud elements to listen to |
Moves the button to the top of the screen, leaving only the screen part in view +Sends a signal on the hud for the menu hud elements to listen to
Extends the button back to its usual spot +Sends a signal on the hud for the menu hud elements to listen to
Button that appears before the game has started
Vars | |
| ready | Whether we are readied up for the round or not |
|---|---|
Whether we are readied up for the round or not
Procs | |
| setup_shutter_animation | Sets up the shutter pulling down and up. It's the same animation for both collapsing and expanding the menu. |
|---|---|
Sets up the shutter pulling down and up. It's the same animation for both collapsing and expanding the menu.
Procs | |
| mouse_params_to_position | Takes mouse parmas as input, returns a string representing the appropriate mouse position |
|---|---|
Takes mouse parmas as input, returns a string representing the appropriate mouse position
Vars | |
| id | A unique bitflag, combined with the name of our linked action this lets us persistently remember any user changes to our position |
|---|---|
| last_hovored_ref | A weakref of the last thing we hovered over +God I hate how dragging works |
| location | Where we are currently placed on the hud. SCRN_OBJ_DEFAULT asks the linked action what it thinks |
A unique bitflag, combined with the name of our linked action this lets us persistently remember any user changes to our position
A weakref of the last thing we hovered over +God I hate how dragging works
Where we are currently placed on the hud. SCRN_OBJ_DEFAULT asks the linked action what it thinks
Vars | |
| scroll_direction | How should we move the palette's actions? +Positive scrolls down the list, negative scrolls back |
|---|---|
How should we move the palette's actions? +Positive scrolls down the list, negative scrolls back
Vars | |
| absolute | absolute - always determine shift x/y as a function of real x/y instead of allowing for relative scroll. |
|---|---|
| center_x | normal centered x |
| center_y | normal centered y |
| dynamic_self_tile | dynamic self tile - tile to our view size. set this to false for static parallax layers. |
| map_id | map id |
| offset_x | current cached offset x |
| offset_y | current cached offset y |
| parallax_intensity | parallax level required to see this |
| queued_animation | queued animation timerid |
| speed | pixel x/y shift per real x/y |
| view_current | current view we're adapted to |
Procs | |
| GetOverlays | Return "natural" overlays, as we're goin to do some fuckery to overlays above. |
absolute - always determine shift x/y as a function of real x/y instead of allowing for relative scroll.
normal centered x
normal centered y
dynamic self tile - tile to our view size. set this to false for static parallax layers.
map id
current cached offset x
current cached offset y
parallax level required to see this
queued animation timerid
pixel x/y shift per real x/y
current view we're adapted to
Return "natural" overlays, as we're goin to do some fuckery to overlays above.
Procs | |
| set_pixel_size | Sets the size of this box screen object and regenerates its left/right borders. This includes the actual border's size! |
|---|---|
Sets the size of this box screen object and regenerates its left/right borders. This includes the actual border's size!
Vars | |
| cops_arrived | Boolean, have the cops arrived? If so, the icon stops changing and remains the same. |
|---|---|
| level | Wanted level, affects the hud icon. Level 0 is default, and the level 0 icon is blank, so in case of no families gamemode (and thus no wanted level), this HUD element will never appear. |
Boolean, have the cops arrived? If so, the icon stops changing and remains the same.
Wanted level, affects the hud icon. Level 0 is default, and the level 0 icon is blank, so in case of no families gamemode (and thus no wanted level), this HUD element will never appear.
Vars | |
| locked | locked atom |
|---|---|
locked atom
Vars | |
| active_mousedown_item | Autoclick variable referencing the associated item. |
|---|---|
| admin_music_volume | Admin music volume, from 0 to 1. |
| autobunker_last_try | last time they tried to do an autobunker auth |
| block_parry_hinted | Should go in persistent round player data sometime. This tracks what items have already warned the user on pickup that they can block/parry. |
| click_catcher | Click catcher |
| click_intercept_time | Time when the click was intercepted |
| clicklimiter | Used for limiting the rate of clicks sends by the client to avoid abuse |
| client_keysend_amount | Amount of keydowns in the last keysend checking interval |
| completed_asset_jobs | List of all completed blocking send jobs awaiting acknowledgement by send_asset |
| credits | lazy list of all credit object bound to this client |
| cryo_warned | When was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns |
| holder | Contains admin info. Null if client is not an admin. |
| keys_held | Keys currently held |
| keysend_tripped | When set to true, user will be autokicked if they trip the keysends in a second limit again |
| last_activity | AFK tracking |
| last_asset_job | Last asset send job id. |
| last_click | Last time we Click()ed. No clicking twice in one tick! |
| last_macro_fix | Last time they used fix macros |
| mouseParams | Used in MouseDrag to preserve the original mouse click parameters |
| mouse_location_ref | Used in MouseDrag to preserve the last mouse-entered location. Weakref |
| mouse_object_ref | Used in MouseDrag to preserve the last mouse-entered object. Weakref |
| mouse_override_icon | used to override the mouse cursor so it doesnt get reset |
| moused_over_objects | moused over objects, currently capped at 7. this is awful, and should be replaced with a component to track it using signals for parrying at some point. |
| movement_keys | custom movement keys for this client |
| next_keysend_reset | World tick time where client_keysend_amount will reset |
| next_keysend_trip_reset | World tick time where keysend_tripped will reset back to false |
| next_mousemove | The next point in time at which the client is allowed to send a mousemove() or mousedrag() |
| next_move_dir_add | These next two vars are to apply movement for keypresses and releases made while move delayed. +Because discarding that input makes the game less responsive. +On next move, add this dir to the move that would otherwise be done |
| next_move_dir_sub | On next move, subtract this dir from the move that would otherwise be done |
| panel_tabs | list of all tabs |
| parallax_holder | Parallax holder |
| recent_examines | A lazy list of atoms we've examined in the last EXAMINE_MORE_TIME (default 1.5) seconds, so that we will call [atom/proc/examine_more()] instead of [atom/proc/examine()] on them when examining |
| screen_maps | Assoc list with all the active maps - when a screen obj is added to +a map, it's put in here as well. |
| script | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!!HEY LISTEN!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
| seen_messages | Messages currently seen by this client |
| selected_target | Autoclick list of two elements, first being the clicked thing, second being the parameters. |
| show_verb_panel | hides the byond verb panel as we use our own custom version |
| spell_tabs | list of tabs containing spells and abilities |
| stat_tab | our current tab |
| statbrowser_ready | whether our browser is ready or not yet |
| tgui_cache_reloaded | global |
| tgui_windows | global |
| tip_timer | Timers are now handled by clients, not by doing a mess on the item and multiple people overwriting a single timer on the object, have fun. |
| total_count_reset | Next tick to reset the total message counter |
| total_message_count | How many messages sent in the last 10 seconds |
| verb_tabs | list of tabs containing verbs |
| view_size | viewsize datum for holding our view size |
Procs | |
| ForceAllKeysUp | Keyup's all keys held down. |
| NONSENSICAL_VERB_THAT_DOES_NOTHING | *sigh |
| Process_Grab | Process_Grab(): checks for grab, attempts to break if so. Return TRUE to prevent movement. |
| Process_Incorpmove | Process_Incorpmove +Called by client/Move() +Allows mobs to run though walls |
| admin_cmd_remove_ghost_respawn_timer | Allows a ghost to bypass respawn delay without lifting respawn restrictions |
| admin_cmd_respawn_return_to_lobby | Fully returns a player to lobby, allowing them to bypass all respawn restrictions +Works on ghosts or new players (lobby players) +If a lobby player is selected, their restrictions are removed. |
| asset_cache_confirm_arrival | Process asset cache client topic calls for "asset_cache_confirm_arrival=[INT]" |
| asset_cache_preload_data | Process asset cache client topic calls for "asset_cache_preload_data=[HTML+JSON_STRING]" |
| asset_cache_update_json | Updates the client side stored json file used to keep track of what assets the client has between restarts/reconnects. |
| award_heart | Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award. |
| browse_queue_flush | Blocks until all currently sending browse and browse_rsc assets have been sent. +Due to byond limitations, this proc will sleep for 1 client round trip even if the client has no pending asset sends. +This proc will return an untrue value if it had to return before confirming the send, such as timeout or the client going away. |
| clear_all_maps | Clears all the maps of registered screen objects. |
| clear_map | Clears the map of registered screen objects. |
| close_popup | Closes a popup. |
| create_popup | Creates a popup window with a basic map element in it, without any +further initialization. |
| fix_tgui_panel | tgui panel / chat troubleshooting verb |
| forceEvent | Allows an admin to force an event |
| get_award_status | Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award. |
| give_award | Redirect proc that makes it easier to call the unlock achievement proc. Achievement type is the typepath to the award, user is the mob getting the award, and value is an optional variable used for leaderboard value increments |
| handle_popup_close | When the popup closes in any way (player or proc call) it calls this. |
| init_verbs | compiles a full list of verbs and sends it to the browser |
| register_map_obj | Registers screen obj with the client, which makes it visible on the +assigned map, and becomes a part of the assigned map's lifecycle. |
| send_resources | Send resources to the client. +Sends both game resources and browser assets. |
| set_tab | verbs that send information from the browser UI |
| setup_popup | Create the popup, and get it ready for generic use by giving +it a background. |
| uiclose | verb |
| update_clickcatcher | Makes a clickcatcher if necessary, and ensures it's fit to our size. |
| update_special_keybinds | Updates the keybinds for special keys |
Autoclick variable referencing the associated item.
Admin music volume, from 0 to 1.
last time they tried to do an autobunker auth
Should go in persistent round player data sometime. This tracks what items have already warned the user on pickup that they can block/parry.
Click catcher
Time when the click was intercepted
Used for limiting the rate of clicks sends by the client to avoid abuse
Amount of keydowns in the last keysend checking interval
List of all completed blocking send jobs awaiting acknowledgement by send_asset
lazy list of all credit object bound to this client
When was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns
Contains admin info. Null if client is not an admin.
Keys currently held
When set to true, user will be autokicked if they trip the keysends in a second limit again
AFK tracking
Last asset send job id.
Last time we Click()ed. No clicking twice in one tick!
Last time they used fix macros
Used in MouseDrag to preserve the original mouse click parameters
Used in MouseDrag to preserve the last mouse-entered location. Weakref
Used in MouseDrag to preserve the last mouse-entered object. Weakref
used to override the mouse cursor so it doesnt get reset
moused over objects, currently capped at 7. this is awful, and should be replaced with a component to track it using signals for parrying at some point.
custom movement keys for this client
World tick time where client_keysend_amount will reset
World tick time where keysend_tripped will reset back to false
The next point in time at which the client is allowed to send a mousemove() or mousedrag()
These next two vars are to apply movement for keypresses and releases made while move delayed. +Because discarding that input makes the game less responsive. +On next move, add this dir to the move that would otherwise be done
On next move, subtract this dir from the move that would otherwise be done
list of all tabs
Parallax holder
A lazy list of atoms we've examined in the last EXAMINE_MORE_TIME (default 1.5) seconds, so that we will call [atom/proc/examine_more()] instead of [atom/proc/examine()] on them when examining
Assoc list with all the active maps - when a screen obj is added to +a map, it's put in here as well.
+Format: list(
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!!HEY LISTEN!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Messages currently seen by this client
Autoclick list of two elements, first being the clicked thing, second being the parameters.
hides the byond verb panel as we use our own custom version
list of tabs containing spells and abilities
our current tab
whether our browser is ready or not yet
global
+TRUE if cache was reloaded by tgui dev server at least once.
global
+Tracks open windows for a user.
Timers are now handled by clients, not by doing a mess on the item and multiple people overwriting a single timer on the object, have fun.
Next tick to reset the total message counter
How many messages sent in the last 10 seconds
list of tabs containing verbs
viewsize datum for holding our view size
Keyup's all keys held down.
*sigh
Process_Grab(): checks for grab, attempts to break if so. Return TRUE to prevent movement.
Process_Incorpmove +Called by client/Move() +Allows mobs to run though walls
Allows a ghost to bypass respawn delay without lifting respawn restrictions
Fully returns a player to lobby, allowing them to bypass all respawn restrictions +Works on ghosts or new players (lobby players) +If a lobby player is selected, their restrictions are removed.
Process asset cache client topic calls for "asset_cache_confirm_arrival=[INT]"
Process asset cache client topic calls for "asset_cache_preload_data=[HTML+JSON_STRING]"
Updates the client side stored json file used to keep track of what assets the client has between restarts/reconnects.
Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award.
Blocks until all currently sending browse and browse_rsc assets have been sent. +Due to byond limitations, this proc will sleep for 1 client round trip even if the client has no pending asset sends. +This proc will return an untrue value if it had to return before confirming the send, such as timeout or the client going away.
Clears all the maps of registered screen objects.
Clears the map of registered screen objects.
+Not really needed most of the time, as the client's screen list gets reset +on relog. any of the buttons are going to get caught by garbage collection +anyway. they're effectively qdel'd.
Closes a popup.
Creates a popup window with a basic map element in it, without any +further initialization.
+Ratio is how many pixels by how many pixels (keep it simple).
+Returns a map name.
tgui panel / chat troubleshooting verb
Allows an admin to force an event
Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award.
Redirect proc that makes it easier to call the unlock achievement proc. Achievement type is the typepath to the award, user is the mob getting the award, and value is an optional variable used for leaderboard value increments
When the popup closes in any way (player or proc call) it calls this.
compiles a full list of verbs and sends it to the browser
Registers screen obj with the client, which makes it visible on the +assigned map, and becomes a part of the assigned map's lifecycle.
Send resources to the client. +Sends both game resources and browser assets.
verbs that send information from the browser UI
Create the popup, and get it ready for generic use by giving +it a background.
+Width and height are multiplied by 64 by default.
verb
+Called by UIs when they are closed. +Must be a verb so winset() can call it.
+required uiref ref The UI that was closed.
Makes a clickcatcher if necessary, and ensures it's fit to our size.
Updates the keybinds for special keys
+Handles adding macros for the keys that need it +And adding movement keys to the clients movement_keys list +At the time of writing this, communication(OOC, Say, IC) require macros +Arguments:
+Returns list of special keybind in key = Mod1Mod2Mod3Key format, NOT Mod1+Mod2+Mod3+Key format.
| HAS_FLESH | Used for determining which wounds are applicable to this species. +if we have flesh (can suffer slash/piercing/burn wounds, requires they don't have NOBLOOD) |
|---|---|
| HAS_BONE | if we have bones (can suffer bone wounds) |
| STANDARD_ORGAN_THRESHOLD | organ defines |
if we have bones (can suffer bone wounds)
Used for determining which wounds are applicable to this species. +if we have flesh (can suffer slash/piercing/burn wounds, requires they don't have NOBLOOD)
organ defines
SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) | |
| SS_NO_INIT | subsystem does not initialize. |
|---|---|
| SS_NO_FIRE | subsystem does not fire. +(like can_fire = 0, but keeps it from getting added to the processing subsystems list) +(Requires a MC restart to change) |
| SS_BACKGROUND | Subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) +SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump |
| SS_NO_TICK_CHECK | subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background)) |
| SS_TICKER | Treat wait as a tick count, not DS, run every wait ticks. +(also forces it to run first in the tick (unless SS_BACKGROUND)) +(implies all runlevels because of how it works) +This is designed for basically anything that works as a mini-mc (like SStimer) |
| SS_KEEP_TIMING | keep the subsystem's timing on point by firing early if it fired late last fire because of lag +ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds. |
| SS_POST_FIRE_TIMING | Calculate its next fire after its fired. +(IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be) +This flag overrides SS_KEEP_TIMING |
SUBSYSTEM STATES + | |
| SS_IDLE | ain't doing shit. |
| SS_QUEUED | queued to run |
| SS_RUNNING | actively running |
| SS_PAUSED | paused by mc_tick_check |
| SS_SLEEPING | fire() slept. |
| SS_PAUSING | in the middle of pausing |
Subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) +SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump
ain't doing shit.
keep the subsystem's timing on point by firing early if it fired late last fire because of lag +ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds.
subsystem does not fire. +(like can_fire = 0, but keeps it from getting added to the processing subsystems list) +(Requires a MC restart to change)
subsystem does not initialize.
subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background))
paused by mc_tick_check
in the middle of pausing
Calculate its next fire after its fired. +(IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be) +This flag overrides SS_KEEP_TIMING
queued to run
actively running
fire() slept.
Treat wait as a tick count, not DS, run every wait ticks. +(also forces it to run first in the tick (unless SS_BACKGROUND)) +(implies all runlevels because of how it works) +This is designed for basically anything that works as a mini-mc (like SStimer)
| HEAR_1 | This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. |
|---|---|
| DEFAULT_RICOCHET_1 | Projectiles will use default chance-based ricochet handling on things with this. |
| CONDUCT_1 | Conducts electricity (metal etc.). |
| NODECONSTRUCT_1 | For machines and structures that should not break into parts, eg, holodeck stuff. |
| ON_BORDER_1 | Item has priority to check when entering or leaving. |
| NO_SCREENTIPS_1 | Whether or not this atom shows screentips when hovered over |
| PREVENT_CLICK_UNDER_1 | Prevent clicking things below it on the same turf eg. doors/ fulltile windows. |
| SHOCKED_1 | Prevents mobs from getting chainshocked by teslas and the supermatter. |
| INITIALIZED_1 | Whether /atom/Initialize() has already run for the object. |
| ADMIN_SPAWNED_1 | was this spawned by an admin? used for stat tracking stuff. |
| PREVENT_CONTENTS_EXPLOSION_1 | should not get harmed if this gets caught by an explosion? |
| BLOCK_FACE_ATOM_1 | Early returns mob.face_atom() |
| CAN_BE_DIRTY_1 | If a turf can be made dirty at roundstart. This is also used in areas. |
| NO_LAVA_GEN_1 | Blocks lava rivers being generated on the turf |
| NO_RUINS_1 | Blocks ruins spawning on the turf |
| EXCITED_CLEANUP_1 | Should this tile be cleaned up and reinserted into an excited group? |
| HAS_CONTEXTUAL_SCREENTIPS_1 | Whether or not this atom has contextual screentips when hovered OVER |
| VALID_TERRITORY | /////////////Area flags\\\\\\\ +If it's a valid territory for cult summoning or the CRAB-17 phone to spawn |
| BLOBS_ALLOWED | If blobs can spawn there and if it counts towards their score. |
| CAVES_ALLOWED | If mining tunnel generation is allowed in this area |
| FLORA_ALLOWED | If flora are allowed to spawn in this area randomly through tunnel generation |
| MOB_SPAWN_ALLOWED | If mobs can be spawned by natural random generation |
| MEGAFAUNA_SPAWN_ALLOWED | If megafauna can be spawned by natural random generation |
| NOTELEPORT | Are you forbidden from teleporting to the area? (centcom, mobs, wizard, hand teleporter) |
| HIDDEN_AREA | Hides area from player Teleport function. |
| UNIQUE_AREA | If false, loading multiple maps with this area type will create multiple instances. |
| BLOCK_SUICIDE | If people are allowed to suicide in it. Mostly for OOC stuff like minigames |
| XENOBIOLOGY_COMPATIBLE | Can the Xenobio management console transverse this area by default? |
| ABDUCTOR_PROOF | If Abductors are unable to teleport in with their observation console |
| NO_ALERTS | If an area should be hidden from power consoles, power/atmosphere alerts, etc. |
| CULT_PERMITTED | If blood cultists can draw runes or build structures on this AREA. |
| LETPASSTHROW | Let thrown things past us. ONLY MEANINGFUL ON pass_flags_self! |
| PHASING | When moving, will Bump()/Cross()/Uncross() everything, but won't stop or Bump() anything. |
| CRAWLING | Applied if you're crawling around on the ground/resting. |
| CHECK_MOBILITY | any flag |
| MOBILITY_MOVE | can move |
| MOBILITY_STAND | can, and is, standing up. |
| MOBILITY_PICKUP | can pickup items |
| MOBILITY_USE | can use items and interact with world objects like opening closets/etc |
| MOBILITY_UI | can use interfaces like consoles |
| MOBILITY_STORAGE | can use storage item |
| MOBILITY_PULL | can pull things |
| MOBILITY_HOLD | can hold non-nodropped items voluntarily |
| MOBILITY_RESIST | Can resist out of buckling, grabs, cuffs, etc, in the usual order (buckle --> cuffs --> grab) |
| RICOCHET_SHINY | If the thing can reflect light (lasers/energy) |
| RICOCHET_HARD | If the thing can reflect matter (bullets/bomb shrapnel) |
| ISDIAGONALDIR | Returns true if the dir is diagonal, false otherwise |
| NSCOMPONENT | True if the dir is north or south, false therwise |
| EWCOMPONENT | True if the dir is east/west, false otherwise |
| NSDIRFLIP | Flips the dir for north/south directions |
| EWDIRFLIP | Flips the dir for east/west directions |
| DIRFLIP | Turns the dir by 180 degrees |
| MAX_BITFLAG_DIGITS | 33554431 (2^24 - 1) is the maximum value our bitflags can reach. |
If Abductors are unable to teleport in with their observation console
was this spawned by an admin? used for stat tracking stuff.
If blobs can spawn there and if it counts towards their score.
Early returns mob.face_atom()
If people are allowed to suicide in it. Mostly for OOC stuff like minigames
If a turf can be made dirty at roundstart. This is also used in areas.
If mining tunnel generation is allowed in this area
any flag
Conducts electricity (metal etc.).
Applied if you're crawling around on the ground/resting.
If blood cultists can draw runes or build structures on this AREA.
Projectiles will use default chance-based ricochet handling on things with this.
Turns the dir by 180 degrees
True if the dir is east/west, false otherwise
Flips the dir for east/west directions
Should this tile be cleaned up and reinserted into an excited group?
If flora are allowed to spawn in this area randomly through tunnel generation
Whether or not this atom has contextual screentips when hovered OVER
This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not.
Hides area from player Teleport function.
Whether /atom/Initialize() has already run for the object.
Returns true if the dir is diagonal, false otherwise
Let thrown things past us. ONLY MEANINGFUL ON pass_flags_self!
33554431 (2^24 - 1) is the maximum value our bitflags can reach.
If megafauna can be spawned by natural random generation
can hold non-nodropped items voluntarily
can move
can pickup items
can pull things
Can resist out of buckling, grabs, cuffs, etc, in the usual order (buckle --> cuffs --> grab)
can, and is, standing up.
can use storage item
can use interfaces like consoles
can use items and interact with world objects like opening closets/etc
If mobs can be spawned by natural random generation
For machines and structures that should not break into parts, eg, holodeck stuff.
Are you forbidden from teleporting to the area? (centcom, mobs, wizard, hand teleporter)
If an area should be hidden from power consoles, power/atmosphere alerts, etc.
Blocks lava rivers being generated on the turf
Blocks ruins spawning on the turf
Whether or not this atom shows screentips when hovered over
True if the dir is north or south, false therwise
Flips the dir for north/south directions
Item has priority to check when entering or leaving.
When moving, will Bump()/Cross()/Uncross() everything, but won't stop or Bump() anything.
Prevent clicking things below it on the same turf eg. doors/ fulltile windows.
should not get harmed if this gets caught by an explosion?
If the thing can reflect matter (bullets/bomb shrapnel)
If the thing can reflect light (lasers/energy)
Prevents mobs from getting chainshocked by teslas and the supermatter.
If false, loading multiple maps with this area type will create multiple instances.
/////////////Area flags\\\\\\\ +If it's a valid territory for cult summoning or the CRAB-17 phone to spawn
Can the Xenobio management console transverse this area by default?
| IGNORE_TARGET_IN_DOAFTERS | Can do the action even if target is not added to doafters |
|---|---|
| IGNORE_USER_LOC_CHANGE | Can do the action even if mob moves location |
| IGNORE_TARGET_LOC_CHANGE | Can do the action even if the target moves location |
| IGNORE_HELD_ITEM | Can do the action even if the item is no longer being held |
| IGNORE_INCAPACITATED | Can do the action even if the mob is incapacitated (ex. handcuffed) |
Can do the action even if the item is no longer being held
Can do the action even if the mob is incapacitated (ex. handcuffed)
Can do the action even if target is not added to doafters
Can do the action even if the target moves location
Can do the action even if mob moves location
| IN_INVENTORY | is this item equipped into an inventory slot or hand of a mob? used for tooltips |
|---|---|
| FORCE_STRING_OVERRIDE | used for tooltips |
| NEEDS_PERMIT | Used by security bots to determine if this item is safe for public use. |
| NO_MAT_REDEMPTION | Stops you from putting things like an RCD or other items into an ORM or protolathe for materials. |
| DROPDEL | When dropped, it calls qdel on itself |
| NOBLUDGEON | when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() |
| ABSTRACT | for all things that are technically items but used for various different stuff |
| IMMUTABLE_SLOW | When players should not be able to change the slowdown of the item (Speed potions, ect) |
| SURGICAL_TOOL | Tool commonly used for surgery: won't attack targets in an active surgical operation on help intent (in case of mistakes) |
| NO_UNIFORM_REQUIRED | Can be worn on certain slots (currently belt and id) that would otherwise require an uniform. |
| ITEM_CAN_PARRY | This item can be used to parry. Only a basic check used to determine if we should proceed with parry chain at all. |
| ITEM_CAN_BLOCK | This item can be used in the directional blocking system. Only a basic check used to determine if we should proceed with directional block handling at all. |
for all things that are technically items but used for various different stuff
When dropped, it calls qdel on itself
used for tooltips
When players should not be able to change the slowdown of the item (Speed potions, ect)
is this item equipped into an inventory slot or hand of a mob? used for tooltips
This item can be used in the directional blocking system. Only a basic check used to determine if we should proceed with directional block handling at all.
This item can be used to parry. Only a basic check used to determine if we should proceed with parry chain at all.
Used by security bots to determine if this item is safe for public use.
when an item has this it produces no "X has been hit by Y with Z" message in the default attackby()
Stops you from putting things like an RCD or other items into an ORM or protolathe for materials.
Can be worn on certain slots (currently belt and id) that would otherwise require an uniform.
Tool commonly used for surgery: won't attack targets in an active surgical operation on help intent (in case of mistakes)
| EXAMINE_SKIP | Makes the Examine proc not read out this item. |
|---|---|
| ITEM_HAS_CONTEXTUAL_SCREENTIPS | Has contextual screentips when HOVERING OVER OTHER objects |
| CLOTHING_PRISTINE | Integrity defines for clothing (not flags but close enough) |
| FIRST_SOUNDS | Flags for the pod_flags var on /obj/structure/closet/supplypod |
Integrity defines for clothing (not flags but close enough)
Makes the Examine proc not read out this item.
Flags for the pod_flags var on /obj/structure/closet/supplypod
Has contextual screentips when HOVERING OVER OTHER objects
| STOP_ATTACK_PROC_CHAIN | //////// ATTACKCHAIN_FLAGS //////////// +Stop the attack chain if still in melee_attack_chain() |
|---|---|
| DISCARD_LAST_ACTION | This attack should discard last_action instead of flushing (storing) it). You should probably know what you're doing if you use this considering this is how clickdelay is enforced. |
| NO_AUTO_CLICKDELAY_HANDLING | There are a number of "safety nets" intended to default-handle clickdelay. Return this flag to bypass ALL of them. Be sure +you know EXACTLY what you are doing! |
| INTERRUPT_UNARMED_ATTACK | Only used with UnarmedAttack(). Interrupts unarmed attack from progressing. |
| ATTACK_IGNORE_ACTION | Attack should not set next action even if the atom wants it to be an action |
| ATTACK_IGNORE_CLICKDELAY | Attack should not at all check last_action/attack_hand_speed even if the atom wants to |
| ATTACK_IS_PARRY_COUNTERATTACK | This attack is from a parry counterattack |
| ITEM_RELOCATED_BY_DROPPED | dropped() relocated this item, return FALSE for doUnEquip. |
Attack should not set next action even if the atom wants it to be an action
Attack should not at all check last_action/attack_hand_speed even if the atom wants to
This attack is from a parry counterattack
This attack should discard last_action instead of flushing (storing) it). You should probably know what you're doing if you use this considering this is how clickdelay is enforced.
Only used with UnarmedAttack(). Interrupts unarmed attack from progressing.
dropped() relocated this item, return FALSE for doUnEquip.
There are a number of "safety nets" intended to default-handle clickdelay. Return this flag to bypass ALL of them. Be sure +you know EXACTLY what you are doing!
//////// ATTACKCHAIN_FLAGS //////////// +Stop the attack chain if still in melee_attack_chain()
| SHIELD_TRANSPARENT | Transparent, let beams pass |
|---|---|
| SHIELD_ENERGY_WEAK | Flammable, takes more damage from fire |
| SHIELD_KINETIC_WEAK | Fragile, takes more damage from brute |
| SHIELD_KINETIC_STRONG | Strong against kinetic, weak against energy |
| SHIELD_ENERGY_STRONG | Strong against energy, weak against kinetic |
| SHIELD_DISABLER_DISRUPTED | Disabler and other stamina based energy weapons boost the damage done to the sheld |
| SHIELD_NO_RANGED | Doesn't block ranged attacks whatsoever |
| SHIELD_NO_MELEE | Doesn't block melee attacks whatsoever |
| SHIELD_CAN_BASH | Can shield bash |
| SHIELD_BASH_WALL_KNOCKDOWN | Shield bash knockdown on wall hit |
| SHIELD_BASH_ALWAYS_KNOCKDOWN | Shield bash always knockdown |
| SHIELD_BASH_WALL_DISARM | Shield bash disarm on wall hit |
| SHIELD_BASH_ALWAYS_DISARM | Shield bash always disarm |
| SHIELD_BASH_GROUND_SLAM | You can shieldbash target someone on the ground for ground slam |
| SHIELD_BASH_GROUND_SLAM_DISARM | Shield bashing someone on the ground will disarm |
Shield bash always disarm
Shield bash always knockdown
You can shieldbash target someone on the ground for ground slam
Shield bashing someone on the ground will disarm
Shield bash disarm on wall hit
Shield bash knockdown on wall hit
Can shield bash
Disabler and other stamina based energy weapons boost the damage done to the sheld
Strong against energy, weak against kinetic
Flammable, takes more damage from fire
Strong against kinetic, weak against energy
Fragile, takes more damage from brute
Doesn't block melee attacks whatsoever
Doesn't block ranged attacks whatsoever
Transparent, let beams pass
| STRINGIFY | Stringifies whatever you put into it. |
|---|---|
| subtypesof | subtypesof(), typesof() without the parent path |
| UNTIL | Until a condition is true, sleep |
| SLEEP_NOT_DEL | Sleep if we haven't been deleted +Otherwise, return |
| text_ref | Takes a datum as input, returns its ref string |
| EMPTY_BLOCK_GUARD | A null statement to guard against EmptyBlock lint without necessitating the use of pass() +Used to avoid proc-call overhead. But use sparingly. Probably pointless in most places. |
A null statement to guard against EmptyBlock lint without necessitating the use of pass() +Used to avoid proc-call overhead. But use sparingly. Probably pointless in most places.
Sleep if we haven't been deleted +Otherwise, return
Stringifies whatever you put into it.
Until a condition is true, sleep
subtypesof(), typesof() without the parent path
Takes a datum as input, returns its ref string
| MAPTICK_MC_MIN_RESERVE | Percentage of tick to leave for master controller to run |
|---|---|
| TICK_BYOND_RESERVE | Tick limit while running normally |
| TICK_LIMIT_TO_RUN | Tick limit used to resume things in stoplag |
| TICK_LIMIT_MC | Tick limit for MC while running |
| TICK_LIMIT_MC_INIT_DEFAULT | Tick limit while initializing |
| TICK_USAGE | for general usage of tick_usage |
| TICK_USAGE_REAL | to be used where the result isn't checked |
| TICK_CHECK | Returns true if tick_usage is above the limit |
| CHECK_TICK | runs stoplag if tick_usage is above the limit |
| TICK_CHECK_HIGH_PRIORITY | Returns true if tick usage is above 95, for high priority usage |
| CHECK_TICK_HIGH_PRIORITY | runs stoplag if tick_usage is above 95, for high priority usage |
runs stoplag if tick_usage is above the limit
runs stoplag if tick_usage is above 95, for high priority usage
Percentage of tick to leave for master controller to run
Tick limit while running normally
Returns true if tick_usage is above the limit
Returns true if tick usage is above 95, for high priority usage
Tick limit for MC while running
Tick limit while initializing
Tick limit used to resume things in stoplag
for general usage of tick_usage
to be used where the result isn't checked
| ADMINSAY_PING_UNDERLINE_NAME_INDEX | for asay pings, this is the index in the return list for /proc/check_admin_pings that contains the message modified with underlines for the spotted names |
|---|
for asay pings, this is the index in the return list for /proc/check_admin_pings that contains the message modified with underlines for the spotted names
| MAX_KEYPRESS_COMMANDLENGTH | Max length of a keypress command before it's considered to be a forged packet/bogus command |
|---|---|
| MAX_COMMANDS_PER_KEY | Maximum keys that can be bound to one button |
| MAX_KEYS_PER_KEYBIND | Maximum keys per keybind |
| MAX_KEYPRESS_AUTOKICK | Max amount of keypress messages per second over two seconds before client is autokicked |
| MAX_HELD_KEYS | Max keys that can be held down at once by a client |
| SKIN_MACROSET_HOTKEYS | Macroset name of hotkeys/keybind only/modern mode |
| SKIN_MACROSET_CLASSIC_HOTKEYS | Macroset name of classic hotkey mode |
| SKIN_MACROSET_CLASSIC_INPUT | Macroset name of classic input mode |
Maximum keys that can be bound to one button
Max keys that can be held down at once by a client
Max amount of keypress messages per second over two seconds before client is autokicked
Max length of a keypress command before it's considered to be a forged packet/bogus command
Maximum keys per keybind
Macroset name of classic hotkey mode
Macroset name of classic input mode
Macroset name of hotkeys/keybind only/modern mode
| ALARM_ATMOS | Sent by air alarms, indecates something wrong with thier attached atmosphere |
|---|---|
| ALARM_FIRE | Sent by fire alarms when they are toggled |
| ALARM_POWER | Sent by apcs when their power starts to fail |
| ALARM_CAMERA | Sent by cameras when they're disabled in some manner |
| ALARM_BURGLAR | Sent by display cases when they're broken into |
| ALARM_MOTION | Sent by motion detecting cameras when they well, detect motion |
Sent by air alarms, indecates something wrong with thier attached atmosphere
Sent by display cases when they're broken into
Sent by cameras when they're disabled in some manner
Sent by fire alarms when they are toggled
Sent by motion detecting cameras when they well, detect motion
Sent by apcs when their power starts to fail
| IS_MALF_AI | Checks if the given mob is a malf ai. |
|---|---|
| TELECRYSTALS_DEFAULT | How many telecrystals a normal traitor starts with |
| TELECRYSTALS_PRELOADED_IMPLANT | How many telecrystals mapper/admin only "precharged" uplink implant |
| UPLINK_IMPLANT_TELECRYSTAL_COST | The normal cost of an uplink implant; used for calcuating how many +TC to charge someone if they get a free implant through choice or +because they have nothing else that supports an implant. |
| ANTAGONIST_PREVIEW_ICON_SIZE | The dimensions of the antagonist preview icon. Will be scaled to this size. |
The dimensions of the antagonist preview icon. Will be scaled to this size.
Checks if the given mob is a malf ai.
How many telecrystals a normal traitor starts with
How many telecrystals mapper/admin only "precharged" uplink implant
The normal cost of an uplink implant; used for calcuating how many +TC to charge someone if they get a free implant through choice or +because they have nothing else that supports an implant.
| CALLBACK | A shorthand for the callback datum, documented here |
|---|
A shorthand for the callback datum, documented here
| CARGO_CRATE_VALUE | The baseline unit for cargo crates. Adjusting this will change the cost of all in-game shuttles, crate export values, bounty rewards, and all supply pack import values, as they use this as their unit of measurement. |
|---|
The baseline unit for cargo crates. Adjusting this will change the cost of all in-game shuttles, crate export values, bounty rewards, and all supply pack import values, as they use this as their unit of measurement.
| COLOR_SAMPLE_YELLOW | Colors for xenobiology vatgrowing |
|---|---|
| COLOR_THEME_MIDNIGHT | Main colors for UI themes |
| COLOR_PERIWINKLEE | Colors for eigenstates |
| LIGHT_COLOR_GREEN | Some defines to generalise colours used in lighting. |
| LIGHT_COLOR_ELECTRIC_GREEN | Electric green. rgb(0, 255, 0) |
| LIGHT_COLOR_BLUE | Cold, diluted blue. rgb(100, 150, 250) |
| LIGHT_COLOR_BLUEGREEN | Light blueish green. rgb(125, 225, 175) |
| LIGHT_COLOR_CYAN | Diluted cyan. rgb(125, 225, 225) |
| LIGHT_COLOR_ELECTRIC_CYAN | Electric cyan rgb(0, 255, 255) |
| LIGHT_COLOR_LIGHT_CYAN | More-saturated cyan. rgb(64, 206, 255) |
| LIGHT_COLOR_DARK_BLUE | Saturated blue. rgb(51, 117, 248) |
| LIGHT_COLOR_PINK | Diluted, mid-warmth pink. rgb(225, 125, 225) |
| LIGHT_COLOR_YELLOW | Dimmed yellow, leaning kaki. rgb(225, 225, 125) |
| LIGHT_COLOR_BROWN | Clear brown, mostly dim. rgb(150, 100, 50) |
| LIGHT_COLOR_ORANGE | Mostly pure orange. rgb(250, 150, 50) |
| LIGHT_COLOR_PURPLE | Light Purple. rgb(149, 44, 244) |
| LIGHT_COLOR_LAVENDER | Less-saturated light purple. rgb(155, 81, 255) |
| LIGHT_COLOR_HOLY_MAGIC | slightly desaturated bright yellow. |
| LIGHT_COLOR_BLOOD_MAGIC | deep crimson |
| LIGHT_COLOR_FIRE | Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25) |
| LIGHT_COLOR_LAVA | Very warm yellow, leaning slightly towards orange. rgb(196, 138, 24) |
| LIGHT_COLOR_FLARE | Bright, non-saturated red. Leaning slightly towards pink for visibility. rgb(250, 100, 75) |
| LIGHT_COLOR_SLIME_LAMP | Weird color, between yellow and green, very slimy. rgb(175, 200, 75) |
| LIGHT_COLOR_TUNGSTEN | Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175) |
| LIGHT_COLOR_HALOGEN | Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250) |
| COLOR_PRIDE_RED | === LGBT Colors Start === +Black and white colors will not be covered for the flags that do have them. We'll just use COLOR_WHITE and COLOR_BLACK. +Colors for pride |
| COLOR_TRANS_BLUE | Colors for transgender flag |
| COLOR_LESBIAN_ORANGERED | Colors for lesbian flag |
| COLOR_BISEXUAL_MEDIUMVIOLETRED | Colors for bisexual flag |
| COLOR_INTERSEX_GOLD | Colors for intersex flag |
| COLOR_ACE_DARKGRAY | Colors for asexual flag |
| COLOR_PAN_DEEPPINK | Colors for pansexual flag |
Colors for asexual flag
Colors for bisexual flag
Colors for intersex flag
Colors for lesbian flag
Colors for pansexual flag
Colors for eigenstates
=== LGBT Colors Start === +Black and white colors will not be covered for the flags that do have them. We'll just use COLOR_WHITE and COLOR_BLACK. +Colors for pride
Colors for xenobiology vatgrowing
Main colors for UI themes
Colors for transgender flag
deep crimson
Cold, diluted blue. rgb(100, 150, 250)
Light blueish green. rgb(125, 225, 175)
Clear brown, mostly dim. rgb(150, 100, 50)
Diluted cyan. rgb(125, 225, 225)
Saturated blue. rgb(51, 117, 248)
Electric cyan rgb(0, 255, 255)
Electric green. rgb(0, 255, 0)
Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25)
Bright, non-saturated red. Leaning slightly towards pink for visibility. rgb(250, 100, 75)
Some defines to generalise colours used in lighting.
+Important note: colors can end up significantly different from the basic html picture, especially when saturated +Bright but quickly dissipating neon green. rgb(100, 200, 100)
Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250)
slightly desaturated bright yellow.
Very warm yellow, leaning slightly towards orange. rgb(196, 138, 24)
Less-saturated light purple. rgb(155, 81, 255)
More-saturated cyan. rgb(64, 206, 255)
Mostly pure orange. rgb(250, 150, 50)
Diluted, mid-warmth pink. rgb(225, 125, 225)
Light Purple. rgb(149, 44, 244)
Weird color, between yellow and green, very slimy. rgb(175, 200, 75)
Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175)
Dimmed yellow, leaning kaki. rgb(225, 225, 125)
| LUMA_R | === LGBT Colors End === |
|---|
=== LGBT Colors End ===
| COMBAT_FLAGS_DEFAULT | Default combat flags for those affected by sprinting (combat mode has been made into its own component) |
|---|---|
| COMBAT_FLAGS_SPRINT_EXEMPT | Default combat flags for everyone else (so literally everyone but humans). |
| COMBAT_FLAGS_STAMINA_COMBAT | Default combat flags for those in stamina combat system |
| COMBAT_FLAG_SPRINT_TOGGLED | The user wants sprint mode on |
| COMBAT_FLAG_SPRINT_ACTIVE | Sprint is currently active |
| COMBAT_FLAG_ATTEMPTING_CRAWL | Currently attempting to crawl under someone |
| COMBAT_FLAG_HARD_STAMCRIT | Currently stamcritted |
| COMBAT_FLAG_RESISTING_REST | Currently attempting to resist up from the ground |
| COMBAT_FLAG_INTENTIONALLY_RESTING | Intentionally resting |
| COMBAT_FLAG_STAMINA_BUFFER | This mob requires stamina buffer to do things that require stamina buffer. Not having this exempts the mob from stamina combat. |
| COMBAT_FLAG_SPRINT_FORCED | Force sprint mode on at all times, overrides everything including sprint disable traits. |
| COMBAT_FLAG_PARRY_CAPABLE | This mob is capable of using the active parrying system. |
| COMBAT_FLAG_BLOCK_CAPABLE | This mob is capable of using the active blocking system. |
| COMBAT_FLAG_UNARMED_PARRY | This mob is capable of unarmed parrying |
| COMBAT_FLAG_ACTIVE_BLOCKING | This mob is currently actively blocking |
| COMBAT_FLAG_ACTIVE_BLOCK_STARTING | This mob is currently starting an active block |
| STAMINA_CRIT | crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit |
| STAMINA_CRIT_REMOVAL_THRESHOLD | Threshold for leaving stamina critical |
| STAMINA_NO_OVERDRAW_THRESHOLD | Threshold under for which you are unable to draw from stamina health to replace stamina buffer |
| SHOVE_STAGGER_DURATION | how long they're staggered for |
| SHOVE_OFFBALANCE_DURATION | how long they're off balance for |
| SUPPRESSED_QUIET | standard suppressed |
| SUPPRESSED_VERY | no message |
| GUN_AIMING_TIME | Time to spend without clicking on other things required for your shots to become accurate. |
| AUTOFIRE_STAT_IDLE | Compatible firemode is in the gun. Wait until it's held in the user hands. |
| AUTOFIRE_STAT_ALERT | Gun is active and in the user hands. Wait until user does a valid click. |
| AUTOFIRE_STAT_FIRING | Gun is shooting. |
| FEEBLE_ATTACK_MSG_THRESHOLD | should the current-attack-damage be lower than the item force multiplied by this value, +a "inefficiently" prefix will be added to the message. |
| FAT_DAMAGE_TO_FATNESS | What is the rate that one damage is converted to fatness? |
Gun is active and in the user hands. Wait until user does a valid click.
Gun is shooting.
Compatible firemode is in the gun. Wait until it's held in the user hands.
Default combat flags for those affected by sprinting (combat mode has been made into its own component)
Default combat flags for everyone else (so literally everyone but humans).
Default combat flags for those in stamina combat system
This mob is currently actively blocking
This mob is currently starting an active block
Currently attempting to crawl under someone
This mob is capable of using the active blocking system.
Currently stamcritted
Intentionally resting
This mob is capable of using the active parrying system.
Currently attempting to resist up from the ground
Sprint is currently active
Force sprint mode on at all times, overrides everything including sprint disable traits.
The user wants sprint mode on
This mob requires stamina buffer to do things that require stamina buffer. Not having this exempts the mob from stamina combat.
This mob is capable of unarmed parrying
What is the rate that one damage is converted to fatness?
should the current-attack-damage be lower than the item force multiplied by this value, +a "inefficiently" prefix will be added to the message.
Time to spend without clicking on other things required for your shots to become accurate.
how long they're off balance for
how long they're staggered for
crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit
Threshold for leaving stamina critical
Threshold under for which you are unable to draw from stamina health to replace stamina buffer
standard suppressed
no message
| ATTACK_TYPE_MELEE | Attack was melee, whether or not armed. |
|---|---|
| ATTACK_TYPE_PROJECTILE | Attack was with a gun or something that should count as a gun (but not if a gun shouldn't count for a gun, crazy right?) |
| ATTACK_TYPE_UNARMED | Attack was unarmed.. this usually means hand to hand combat. |
| ATTACK_TYPE_THROWN | Attack was a thrown atom hitting the victim. |
| ATTACK_TYPE_TACKLE | Attack was a bodyslam/leap/tackle. See: Xenomorph leap tackles. |
| ATTACK_TYPE_PARRY_COUNTERATTACK | Attack was from a parry counterattack. Do not attempt to parry-this! |
Attack was melee, whether or not armed.
Attack was from a parry counterattack. Do not attempt to parry-this!
Attack was with a gun or something that should count as a gun (but not if a gun shouldn't count for a gun, crazy right?)
Attack was a bodyslam/leap/tackle. See: Xenomorph leap tackles.
Attack was a thrown atom hitting the victim.
Attack was unarmed.. this usually means hand to hand combat.
| mob_check_block | Check whether or not we can block, without "triggering" a block. Basically run checks without effects like depleting shields. +Wrapper for do_run_block(). The arguments on that means the same as for this. |
|---|---|
| mob_run_block | Runs a block "sequence", effectively checking and then doing effects if necessary. +Wrapper for do_run_block(). The arguments on that means the same as for this. |
| BLOCK_NONE | Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS. +Attack was not blocked |
| BLOCK_SUCCESS | Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION! |
| BLOCK_SHOULD_REDIRECT | The below are for "metadata" on "how" the attack was blocked. +Attack was and should be redirected according to list argument REDIRECT_METHOD (NOTE: the SHOULD here is important, as it says "the thing blocking isn't handling the reflecting for you so do it yourself"!) |
| BLOCK_REDIRECTED | Attack was redirected (whether by us or by SHOULD_REDIRECT flagging for automatic handling) |
| BLOCK_PHYSICAL_EXTERNAL | Attack was blocked by something like a shield. |
| BLOCK_PHYSICAL_INTERNAL | Attack was blocked by something worn on you. |
| BLOCK_TARGET_DODGED | Attack outright missed because the target dodged. Should usually be combined with redirection passthrough or something (see martial arts) |
| BLOCK_CONTINUE_CHAIN | Meta-flag for run_block/do_run_block : By default, BLOCK_SUCCESS tells do_run_block() to assume the attack is completely blocked and not continue the block chain. If this is present, it will continue to check other items in the chain rather than stopping. |
| BLOCK_SHOULD_CHANGE_DAMAGE | Attack should change the amount of damage incurred. This means something calling run_block() has to handle it! |
| BLOCK_SHOULD_PARTIAL_MITIGATE | Attack should scale by this percent, 0 for no block and 100 for full blocked |
| BLOCK_RETURN_REDIRECT_METHOD | For keys in associative list/block_return as we don't want to saturate our (somewhat) limited flags. |
| REDIRECT_METHOD_PASSTHROUGH | Pass through victim |
| REDIRECT_METHOD_DEFLECT | Deflect at randomish angle |
| REDIRECT_METHOD_REFLECT | reverse 180 angle, basically (as opposed to "realistic" wall reflections) |
| REDIRECT_METHOD_RETURN_TO_SENDER | "do not taser the bad man with the desword" - actually aims at the firer/attacker rather than just reversing |
| BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE | These keys are generally only applied to the list if real_attack is FALSE. Used incase we want to make "smarter" mob AI in the future or something. +Tells the caller how likely from 0 (none) to 100 (always) we are to reflect energy projectiles |
| BLOCK_RETURN_NORMAL_BLOCK_CHANCE | Tells the caller how likely we are to block attacks from 0 to 100 in general |
| BLOCK_RETURN_BLOCK_CAPACITY | Tells the caller about how many hits we can soak on average before our blocking fails. |
| BLOCK_RETURN_ACTIVE_BLOCK | Tells the caller we got blocked by active directional block. |
| BLOCK_RETURN_ACTIVE_BLOCK_DAMAGE_MITIGATED | Tells the caller our damage mitigation for their attack. |
| BLOCK_RETURN_SET_DAMAGE_TO | For [BLOCK_CHANGE_DAMAGE]. Set damage to this. |
| BLOCK_RETURN_MITIGATION_PERCENT | For BLOCK_SHOULD_PARTIAL_MITIGATE. Percentage mitigation. |
| BLOCK_RETURN_OVERRIDE_PARRY_EFFICIENCY | Used internally by run_parry proc, use on an on_active_parry() proc to override parrying efficiency. |
| BLOCK_RETURN_FORCE_NO_PARRY_COUNTERATTACK | Used internally by run_parry proc, use on an on_active_parry() proc to prevent counterattacks |
| BLOCK_RETURN_PROJECTILE_BLOCK_PERCENTAGE | Always set to 100 by run_block() if BLOCK_SUCCESS is in return value. Otherwise, defaults to mitigation percent if not set. Used by projectile/proc/on_hit(). |
| DEFAULT_REDIRECT_METHOD_PROJECTILE | Default if the above isn't set in the list. |
| BLOCK_PRIORITY_ACTIVE_BLOCK | Block priorities. Higher means it's checked sooner. |
Meta-flag for run_block/do_run_block : By default, BLOCK_SUCCESS tells do_run_block() to assume the attack is completely blocked and not continue the block chain. If this is present, it will continue to check other items in the chain rather than stopping.
Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS. +Attack was not blocked
Attack was blocked by something like a shield.
Attack was blocked by something worn on you.
Block priorities. Higher means it's checked sooner.
Attack was redirected (whether by us or by SHOULD_REDIRECT flagging for automatic handling)
Tells the caller we got blocked by active directional block.
Tells the caller our damage mitigation for their attack.
Tells the caller about how many hits we can soak on average before our blocking fails.
Used internally by run_parry proc, use on an on_active_parry() proc to prevent counterattacks
For BLOCK_SHOULD_PARTIAL_MITIGATE. Percentage mitigation.
Tells the caller how likely we are to block attacks from 0 to 100 in general
Used internally by run_parry proc, use on an on_active_parry() proc to override parrying efficiency.
Always set to 100 by run_block() if BLOCK_SUCCESS is in return value. Otherwise, defaults to mitigation percent if not set. Used by projectile/proc/on_hit().
For keys in associative list/block_return as we don't want to saturate our (somewhat) limited flags.
These keys are generally only applied to the list if real_attack is FALSE. Used incase we want to make "smarter" mob AI in the future or something. +Tells the caller how likely from 0 (none) to 100 (always) we are to reflect energy projectiles
For [BLOCK_CHANGE_DAMAGE]. Set damage to this.
Attack should change the amount of damage incurred. This means something calling run_block() has to handle it!
Attack should scale by this percent, 0 for no block and 100 for full blocked
The below are for "metadata" on "how" the attack was blocked. +Attack was and should be redirected according to list argument REDIRECT_METHOD (NOTE: the SHOULD here is important, as it says "the thing blocking isn't handling the reflecting for you so do it yourself"!)
Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION!
Attack outright missed because the target dodged. Should usually be combined with redirection passthrough or something (see martial arts)
Default if the above isn't set in the list.
Deflect at randomish angle
Pass through victim
reverse 180 angle, basically (as opposed to "realistic" wall reflections)
"do not taser the bad man with the desword" - actually aims at the firer/attacker rather than just reversing
Check whether or not we can block, without "triggering" a block. Basically run checks without effects like depleting shields. +Wrapper for do_run_block(). The arguments on that means the same as for this.
Runs a block "sequence", effectively checking and then doing effects if necessary. +Wrapper for do_run_block(). The arguments on that means the same as for this.
| ACTIVE_BLOCK_STARTING_INTERRUPT | If this is the value of active_block_starting it signals we want to interrupt the start |
|---|---|
| UNARMED_PARRY | ""types"" of parry "items" |
| NOT_PARRYING | Parry phase we're in |
| PARRY_DEFAULT_HANDLE_FEEDBACK | Default handling for audio/visual feedback |
| PARRY_LOCK_SPRINTING | Lock sprinting while parrying |
| PARRY_LOCK_ATTACKING | Lock attacking while parrying |
| PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN | Parry effects. +Automatically melee attacks back normally, LMB equivalent action of an harm intent attack. List association should be defaulting to 1, being the attack damage multiplier for said counterattack |
| PARRY_DISARM_ATTACKER | List association should be TRUE. |
| PARRY_KNOCKDOWN_ATTACKER | List association should be duration or null for just plain knockdown. |
| PARRY_STAGGER_ATTACKER | List association should be duration. |
| PARRY_DAZE_ATTACKER | List association should be amount of time to daze attacker. |
| PARRY_COUNTERATTACK_IGNORE_ADJACENCY | Set to TRUE in list association to ignore adjacency checks |
If this is the value of active_block_starting it signals we want to interrupt the start
Parry phase we're in
Set to TRUE in list association to ignore adjacency checks
Parry effects. +Automatically melee attacks back normally, LMB equivalent action of an harm intent attack. List association should be defaulting to 1, being the attack damage multiplier for said counterattack
List association should be amount of time to daze attacker.
Default handling for audio/visual feedback
List association should be TRUE.
List association should be duration or null for just plain knockdown.
Lock attacking while parrying
Lock sprinting while parrying
List association should be duration.
""types"" of parry "items"
| STAM_COST_W_CLASS_MULT | Base stamina cost for an item of a certain w_class without total_mass set. |
|---|---|
| STAMINA_COST_ITEM_EYESTAB | Usage for eyestabbing with a screwdriver |
| STAMINA_COST_SHOVE_UP | Usage for shoving yourself off the ground instantly |
| LYING_DAMAGE_PENALTY | Damage penalty when fighting prone. |
Damage penalty when fighting prone.
Usage for eyestabbing with a screwdriver
Usage for shoving yourself off the ground instantly
Base stamina cost for an item of a certain w_class without total_mass set.
| CONFIG_GET_ENTRY | Gets the datum of the object, for when editing a const define. |
|---|---|
| CONFIG_CACHE_ENTRY_AND_FETCH_VALUE | Caches an entry in the proc |
| POLICYCONFIG_ON_CLONE | Displayed to cloned patients |
| POLICYCONFIG_ON_DEFIB_INTACT | Displayed to defibbed/revival surgery'd patients before the memory loss time threshold |
| POLICYCONFIG_ON_DEFIB_LATE | Displayed to defibbed/revival surgery'd patients after the memory loss time threshold |
| POLICYCONFIG_ON_PYROCLASTIC_SENTIENT | Displayed to pyroclastic slimes on spawn |
| POLICYCONFIG_PAI | Displayed to pAIs on spawn |
| POLICYCONFIG_ELITE_SPAWN | displayed to lavaland elites on spawn, overriding the default if set |
| POLICYCONFIG_ELITE_SENTIENCE | displayed to lavaland elites on sentience potion, overriding the default if set |
| POLICYCONFIG_ELITE_WIN | displayed to lavaland elites on winning the fight, overriding the default if set |
| POLICYCONFIG_JOB_PRISONER | displayed to prisoners on spawn, overriding the default if set |
Caches an entry in the proc
Gets the datum of the object, for when editing a const define.
displayed to lavaland elites on sentience potion, overriding the default if set
displayed to lavaland elites on spawn, overriding the default if set
displayed to lavaland elites on winning the fight, overriding the default if set
displayed to prisoners on spawn, overriding the default if set
Displayed to cloned patients
Displayed to defibbed/revival surgery'd patients before the memory loss time threshold
Displayed to defibbed/revival surgery'd patients after the memory loss time threshold
Displayed to pyroclastic slimes on spawn
Displayed to pAIs on spawn
| COOLDOWN_EMPLOYMENT_CABINET | COOLDOWN SYSTEMS |
|---|
COOLDOWN SYSTEMS
| COMPONENT_INCOMPATIBLE | Return this from /datum/component/Initialize or datum/component/OnTransfer to have the component be deleted if it's applied to an incorrect type.
+parent must not be modified if this is to be returned.
+This will be noted in the runtime logs |
|---|---|
| COMPONENT_NOTRANSFER | Returned in PostTransfer to prevent transfer, similar to COMPONENT_INCOMPATIBLE |
| ELEMENT_INCOMPATIBLE | Return value to cancel attaching |
| ELEMENT_DETACH | Causes the detach proc to be called when the host object is being deleted |
| ELEMENT_BESPOKE | Only elements created with the same arguments given after id_arg_index share an element instance
+The arguments are the same when the text and number values are the same and all other values have the same ref |
| COMPONENT_DUPE_HIGHLANDER | old component is deleted (default) |
| COMPONENT_DUPE_ALLOWED | duplicates allowed |
| COMPONENT_DUPE_UNIQUE | new component is deleted |
| COMPONENT_DUPE_UNIQUE_PASSARGS | old component is given the initialization args of the new |
| COMPONENT_DUPE_SELECTIVE | each component of the same type is consulted as to whether the duplicate should be allowed |
| ID_COMPONENT_DEL_ON_IDENTIFY | / Identification //// +Delete on successful broad identification (so the main way we "uncover" how an object works, since this won't be on it to obfuscate it) |
| ID_COMPONENT_DECONSTRUCTOR_DEEPSCANNED | We've already been successfully deepscanned by a deconstructive analyzer |
| ID_COMPONENT_EFFECT_NO_ACTIONS | Block user from getting actions if they don't know how to use this. Triggered on equip. |
| ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR | Can be identified in a deconstructive analyzer |
| ID_COMPONENT_KNOWLEDGE_NONE | Has no knowledge, default |
| ID_COMPONENT_KNOWLEDGE_FULL | Has full knowledge |
| COMBAT_MODE_TOGGLED | The user wants combat mode on |
| COMBAT_MODE_ACTIVE | combat mode is active. |
| COMBAT_MODE_INACTIVE | combat mode is not active |
| UPDATE_NAME | Update the atom's name |
| UPDATE_DESC | Update the atom's desc |
| UPDATE_ICON_STATE | Update the atom's icon state |
| UPDATE_OVERLAYS | Update the atom's overlays |
| UPDATE_GREYSCALE | Update the atom's greyscaling |
| UPDATE_SMOOTHING | Update the atom's smoothing. (More accurately, queue it for an update) |
| UPDATE_ICON | Update the atom's icon |
combat mode is active.
combat mode is not active
The user wants combat mode on
duplicates allowed
old component is deleted (default)
each component of the same type is consulted as to whether the duplicate should be allowed
new component is deleted
old component is given the initialization args of the new
Return this from /datum/component/Initialize or datum/component/OnTransfer to have the component be deleted if it's applied to an incorrect type.
+parent must not be modified if this is to be returned.
+This will be noted in the runtime logs
Returned in PostTransfer to prevent transfer, similar to COMPONENT_INCOMPATIBLE
Only elements created with the same arguments given after id_arg_index share an element instance
+The arguments are the same when the text and number values are the same and all other values have the same ref
Causes the detach proc to be called when the host object is being deleted
Return value to cancel attaching
We've already been successfully deepscanned by a deconstructive analyzer
/ Identification //// +Delete on successful broad identification (so the main way we "uncover" how an object works, since this won't be on it to obfuscate it)
Block user from getting actions if they don't know how to use this. Triggered on equip.
Can be identified in a deconstructive analyzer
Has full knowledge
Has no knowledge, default
Update the atom's desc
Update the atom's greyscaling
Update the atom's icon
Update the atom's icon state
Update the atom's name
Update the atom's overlays
Update the atom's smoothing. (More accurately, queue it for an update)
| SEND_SIGNAL | Used to trigger signals and call procs registered for that signal +The datum hosting the signal is automaticaly added as the first argument +Returns a bitfield gathered from all registered procs +Arguments given here are packaged in a list and given to _SendSignal |
|---|---|
| SIGNAL_HANDLER | Signifies that this proc is used to handle signals. +Every proc you pass to RegisterSignal must have this. |
| SIGNAL_HANDLER_DOES_SLEEP | Signifies that this proc is used to handle signals, but also sleeps. +Do not use this for new work. |
| AddElement | A wrapper for _AddElement that allows us to pretend we're using normal named arguments |
| RemoveElement | A wrapper for _RemoveElement that allows us to pretend we're using normal named arguments |
| AddComponent | A wrapper for _AddComponent that allows us to pretend we're using normal named arguments |
A wrapper for _AddComponent that allows us to pretend we're using normal named arguments
A wrapper for _AddElement that allows us to pretend we're using normal named arguments
A wrapper for _RemoveElement that allows us to pretend we're using normal named arguments
Used to trigger signals and call procs registered for that signal +The datum hosting the signal is automaticaly added as the first argument +Returns a bitfield gathered from all registered procs +Arguments given here are packaged in a list and given to _SendSignal
Signifies that this proc is used to handle signals. +Every proc you pass to RegisterSignal must have this.
Signifies that this proc is used to handle signals, but also sleeps. +Do not use this for new work.
| COMSIG_GLOB_NEW_Z | from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args) |
|---|---|
| COMSIG_GLOB_VAR_EDIT | called after a successful var edit somewhere in the world: (list/args) |
| COMSIG_GLOB_EXPLOSION | called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range) |
| COMSIG_GLOB_MOB_CREATED | mob was created somewhere : (mob) |
| COMSIG_GLOB_MOB_DEATH | mob died somewhere : (mob , gibbed) |
| COMSIG_GLOB_LIVING_SAY_SPECIAL | global living say plug - use sparingly: (mob/speaker , message) |
| COMSIG_GLOB_PLAY_CINEMATIC | called by datum/cinematic/play() : (datum/cinematic/new_cinematic) |
| COMSIG_GLOB_JOB_AFTER_SPAWN | job subsystem has spawned and equipped a new mob |
| COMSIG_GLOB_JOB_AFTER_LATEJOIN_SPAWN | job datum has been called to deal with the aftermath of a latejoin spawn |
| CANCEL_PRE_RANDOM_EVENT | Do not allow this random event to continue. |
| COMSIG_WEATHER_TELEGRAPH | a weather event of some kind occured |
| COMSIG_ALARM_FIRE | An alarm of some form was sent (datum/alarm_handler/source, alarm_type, area/source_area) |
| COMSIG_ALARM_CLEAR | An alarm of some form was cleared (datum/alarm_handler/source, alarm_type, area/source_area) |
| COMSIG_GLOB_NEW_GAS | called by auxgm add_gas: (gas_id) |
| COMSIG_SUN_MOVED | from SSsun when the sun changes position : (primary_sun, suns) |
| COMSIG_SECURITY_LEVEL_CHANGED | from SSsecurity_level when the security level changes : (new_level) |
| COMSIG_THREAT_CALC | from SSactivity for things that add threat but aren't "global" (e.g. phylacteries) |
| COMSIG_COMPONENT_ADDED | when a component is added to a datum: (/datum/component) |
| COMSIG_COMPONENT_REMOVING | before a component is removed from a datum because of RemoveComponent: (/datum/component) |
| COMSIG_PARENT_PREQDELETED | before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation |
| COMSIG_PARENT_QDELETING | just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called |
| COMSIG_TOPIC | generic topic handler (usr, href_list) |
| COMSIG_UI_ACT | from datum ui_act (usr, action) |
| COMSIG_ELEMENT_ATTACH | fires on the target datum when an element is attached to it (/datum/element) |
| COMSIG_ELEMENT_DETACH | fires on the target datum when an element is attached to it (/datum/element) |
| COMSIG_COMPONENT_UNREGISTER_PARENT | sent to the component itself when unregistered from a parent |
| COMSIG_COMPONENT_REGISTER_PARENT | sent to the component itself when registered to a parent |
| COMPONENT_ADD_TRAIT | Trait signals |
| COMSIG_ATOM_GET_EXAMINE_NAME | from base of atom/get_examine_name(): (/mob, list/overrides) |
| COMSIG_PARENT_EXAMINE_MORE | from base of atom/examine_more(): (/mob) |
| COMSIG_ATOM_UPDATE_APPEARANCE | from base of /atom/proc/update_appearance: (updates) |
| COMSIG_ATOM_NO_UPDATE_NAME | If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its name. |
| COMSIG_ATOM_NO_UPDATE_DESC | If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its desc. |
| COMSIG_ATOM_NO_UPDATE_ICON | If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its icon. |
| COMSIG_ATOM_UPDATE_NAME | from base of /atom/proc/update_name: (updates) |
| COMSIG_ATOM_UPDATE_DESC | from base of /atom/proc/update_desc: (updates) |
| COMSIG_ATOM_UPDATE_ICON | from base of /atom/update_icon: () |
| COMSIG_ATOM_NO_UPDATE_ICON_STATE | If returned from COMSIG_ATOM_UPDATE_ICON it prevents the atom from updating its icon state. |
| COMSIG_ATOM_NO_UPDATE_OVERLAYS | If returned from COMSIG_ATOM_UPDATE_ICON it prevents the atom from updating its overlays. |
| COMSIG_ATOM_UPDATE_ICON_STATE | from base of atom/update_icon_state: () |
| COMSIG_ATOM_UPDATE_OVERLAYS | from base of /atom/update_overlays: (list/new_overlays) |
| COMSIG_ATOM_UPDATED_ICON | from base of /atom/update_icon: (signalOut, did_anything) |
| COMSIG_ATOM_WAVE_EX_ACT | From base of atom/wave_ex_act(): (datum/wave_explosion/explosion, args) |
| COMSIG_ATOM_EX_ACT | from base of atom/ex_act(): (severity, target) |
| COMSIG_ATOM_EMP_ACT | from base of atom/emp_act(): (severity) |
| COMSIG_ATOM_FIRE_ACT | from base of atom/fire_act(): (exposed_temperature, exposed_volume) |
| COMSIG_ATOM_BULLET_ACT | from base of atom/bullet_act(): (/obj/item/projectile, def_zone) |
| COMSIG_ATOM_BLOB_ACT | from base of atom/blob_act(): (/obj/structure/blob) |
| COMSIG_ATOM_ACID_ACT | from base of atom/acid_act(): (acidpwr, acid_volume) |
| COMSIG_ATOM_EMAG_ACT | from base of atom/emag_act(): (/mob/user) |
| COMSIG_ATOM_RAD_ACT | from base of atom/rad_act(intensity) |
| COMSIG_ATOM_NARSIE_ACT | from base of atom/narsie_act(): () |
| COMSIG_ATOM_RATVAR_ACT | from base of atom/ratvar_act(): () |
| COMSIG_ATOM_RCD_ACT | from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode) |
| COMSIG_ATOM_SING_PULL | from base of atom/singularity_pull(): (S, current_size) |
| COMSIG_ATOM_BSA_BEAM | from obj/machinery/bsa/full/proc/fire(): () |
| COMSIG_ATOM_DIR_CHANGE | from base of atom/setDir(): (old_dir, new_dir). Called before the direction changes. |
| COMSIG_ATOM_CONTENTS_DEL | from base of atom/handle_atom_del(): (atom/deleted) |
| COMSIG_ATOM_HAS_GRAVITY | from base of atom/has_gravity(): (turf/location, list/forced_gravities) |
| COMSIG_ATOM_RAD_PROBE | from proc/get_rad_contents(): () |
| COMSIG_ATOM_RAD_CONTAMINATING | from base of datum/radiation_wave/radiate(): (strength) |
| COMSIG_ATOM_RAD_WAVE_PASSING | from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width) |
| COMSIG_ATOM_CANREACH | from internal loop in atom/movable/proc/CanReach(): (list/next) |
| COMSIG_ATOM_ORBIT_BEGIN | Called from orbit component: (atom/movable/orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation) |
| COMSIG_ATOM_ORBIT_END | Called from orbit component: (atom/movable/orbiter, refreshing) |
| COMSIG_TURF_CHANGE | from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps) |
| COMSIG_TURF_HAS_GRAVITY | from base of atom/has_gravity(): (atom/asker, list/forced_gravities) |
| COMSIG_TURF_MULTIZ_DEL | from base of turf/multiz_turf_del(): (turf/source, direction) |
| COMSIG_TURF_MULTIZ_NEW | from base of turf/multiz_turf_new: (turf/source, direction) |
| COMSIG_MOVABLE_PRE_MOVE | from base of atom/movable/Moved(): (/atom) |
| COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH | if true, flip if the impact will push what it hits |
| COMPONENT_MOVABLE_IMPACT_NEVERMIND | return true if you destroyed whatever it was you're impacting and there won't be anything for hitby() to run on |
| COMSIG_MOB_STATCHANGE | from base of mob/set_stat(): (new_stat, old_stat) |
| COMSIG_MOB_EYECONTACT | from /mob/living/handle_eye_contact(): (mob/living/other_mob) |
| COMSIG_BLOCK_EYECONTACT | return this if you want to block printing this message to this person, if you want to print your own (does not affect the other person's message) |
| COMSIG_MOB_ALTCLICKON | from base of mob/AltClickOn(): (atom/A) |
| COMSIG_GUN_AUTOFIRE_SELECTED | When a gun is switched to automatic fire mode |
| COMSIG_GUN_AUTOFIRE_DESELECTED | When a gun is switched off of automatic fire mode |
| COMSIG_ATOM_SET_LIGHT | from base of [atom/proc/set_light]: (l_range, l_power, l_color, l_on) |
| COMPONENT_BLOCK_LIGHT_UPDATE | Blocks [/atom/proc/set_light], [/atom/proc/set_light_power], /atom/proc/set_light_range, /atom/proc/set_light_color, [/atom/proc/set_light_on], and [/atom/proc/set_light_flags]. |
| COMSIG_ATOM_SET_LIGHT_POWER | Called right before the atom changes the value of light_power to a different one, from base [atom/proc/set_light_power]: (new_power) |
| COMSIG_ATOM_UPDATE_LIGHT_POWER | Called right after the atom changes the value of light_power to a different one, from base of [/atom/proc/set_light_power]: (old_power) |
| COMSIG_ATOM_SET_LIGHT_RANGE | Called right before the atom changes the value of light_range to a different one, from base atom/proc/set_light_range: (new_range) |
| COMSIG_ATOM_UPDATE_LIGHT_RANGE | Called right after the atom changes the value of light_range to a different one, from base of /atom/proc/set_light_range: (old_range) |
| COMSIG_ATOM_SET_LIGHT_COLOR | Called right before the atom changes the value of light_color to a different one, from base atom/proc/set_light_color: (new_color) |
| COMSIG_ATOM_UPDATE_LIGHT_COLOR | Called right after the atom changes the value of light_color to a different one, from base of /atom/proc/set_light_color: (old_color) |
| COMSIG_ATOM_SET_LIGHT_ON | Called right before the atom changes the value of light_on to a different one, from base [atom/proc/set_light_on]: (new_value) |
| COMSIG_ATOM_UPDATE_LIGHT_ON | Called right after the atom changes the value of light_on to a different one, from base of [/atom/proc/set_light_on]: (old_value) |
| COMSIG_ATOM_SET_LIGHT_FLAGS | Called right before the atom changes the value of light_flags to a different one, from base [atom/proc/set_light_flags]: (new_flags) |
| COMSIG_ATOM_UPDATE_LIGHT_FLAGS | Called right after the atom changes the value of light_flags to a different one, from base of [/atom/proc/set_light_flags]: (old_flags) |
| COMSIG_MOB_CLIENT_LOGIN | sent when a mob/login() finishes: (client) |
| COMSIG_CARBON_ATTACH_LIMB | from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment |
| COMSIG_MACHINERY_POWER_LOST | from base power_change() when power is lost |
| COMSIG_MACHINERY_POWER_RESTORED | from base power_change() when power is restored |
| COMSIG_MACHINERY_BROKEN | from /obj/machinery/obj_break(damage_flag): (damage_flag) |
| COMSIG_SUPERMATTER_DELAM_START_ALARM | from /obj/machinery/power/supermatter_crystal/process_atmos(); when the SM delam reaches the point of sounding alarms |
| COMSIG_SUPERMATTER_DELAM_ALARM | from /obj/machinery/power/supermatter_crystal/process_atmos(); when the SM sounds an audible alarm |
| COMSIG_MOB_UNEQUIPPED_ITEM | A mob has just unequipped an item. |
| COMSIG_ITEM_DISABLE_EMBED | from /obj/item/proc/disableEmbedding: |
| COMSIG_MINE_TRIGGERED | from [/obj/effect/mine/proc/triggermine]: |
| COMSIG_ITEM_OFFERING | Called when an item is being offered, from [/obj/item/proc/on_offered(mob/living/carbon/offerer)] |
| COMPONENT_OFFER_INTERRUPT | Interrupts the offer proc |
| COMSIG_ITEM_OFFER_TAKEN | Called when an someone tries accepting an offered item, from [/obj/item/proc/on_offer_taken(mob/living/carbon/offer, mob/living/carbon/taker)] |
| COMPONENT_OFFER_TAKE_INTERRUPT | Interrupts the offer acceptance |
| COMSIG_SUPPLYPOD_LANDED | from [/obj/structure/closet/supplypod/proc/endlaunch]: |
| COMSIG_PROJECTILE_SELF_ON_HIT | from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle, hit_limb) |
| COMSIG_PROJECTILE_ON_HIT | from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle, hit_limb) |
| COMSIG_PROJECTILE_FIRE | from the base of /obj/item/projectile/proc/fire(): () |
| COMSIG_PROJECTILE_PREHIT | sent to targets during the process_hit proc of projectiles |
| COMSIG_MECHA_MELEE_CLICK | sent from clicking while you have no equipment selected. Sent before cooldown and adjacency checks, so you can use this for infinite range things if you want. |
| COMPONENT_CANCEL_MELEE_CLICK | Prevents click from happening. |
| COMSIG_MECHA_EQUIPMENT_CLICK | sent from clicking while you have equipment selected. |
| COMPONENT_CANCEL_EQUIPMENT_CLICK | Prevents click from happening. |
| COMSIG_LIVING_PREDEATH | from base of mob/living/death(): (gibbed) |
| COMSIG_TURF_IS_WET | Component Specific Signals |
| COMSIG_VOID_MASK_ACT | Mask of Madness |
| COMSIG_NANITE_CHECK_CONSOLE_LOCK | Checks if a nanite component is able to be controlled by console |
| COMSIG_NANITE_CHECK_HOST_LOCK | Checks if a nanite component is able to be interfaced with by a host with innate nanite control |
| COMSIG_NANITE_CHECK_VIRAL_PREVENTION | Checks if a nanite component is able to be overwritten by viral replica |
| COMSIG_TWITCH_PLAYS_MOVEMENT_DATA | Returns direction: (wipe_votes) |
| COMSIG_ON_MULTIPLE_LIVES_RESPAWN | from base of [/datum/component/multiple_lives/proc/respawn]: (mob/respawned_mob, gibbed, lives_left) |
| COMSIG_ALARM_TRIGGERED | Sent when an alarm is fired (alarm, area/source_area) |
| COMSIG_ALARM_CLEARED | Send when an alarm source is cleared (alarm_type, area/source_area) |
Do not allow this random event to continue.
Trait signals
Blocks [/atom/proc/set_light], [/atom/proc/set_light_power], /atom/proc/set_light_range, /atom/proc/set_light_color, [/atom/proc/set_light_on], and [/atom/proc/set_light_flags].
Prevents click from happening.
Prevents click from happening.
if true, flip if the impact will push what it hits
return true if you destroyed whatever it was you're impacting and there won't be anything for hitby() to run on
Interrupts the offer proc
Interrupts the offer acceptance
An alarm of some form was cleared (datum/alarm_handler/source, alarm_type, area/source_area)
Send when an alarm source is cleared (alarm_type, area/source_area)
An alarm of some form was sent (datum/alarm_handler/source, alarm_type, area/source_area)
Sent when an alarm is fired (alarm, area/source_area)
from base of atom/acid_act(): (acidpwr, acid_volume)
from base of atom/blob_act(): (/obj/structure/blob)
from obj/machinery/bsa/full/proc/fire(): ()
from base of atom/bullet_act(): (/obj/item/projectile, def_zone)
from internal loop in atom/movable/proc/CanReach(): (list/next)
from base of atom/handle_atom_del(): (atom/deleted)
from base of atom/setDir(): (old_dir, new_dir). Called before the direction changes.
from base of atom/emag_act(): (/mob/user)
from base of atom/emp_act(): (severity)
from base of atom/ex_act(): (severity, target)
from base of atom/fire_act(): (exposed_temperature, exposed_volume)
from base of atom/get_examine_name(): (/mob, list/overrides)
from base of atom/has_gravity(): (turf/location, list/forced_gravities)
from base of atom/narsie_act(): ()
If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its desc.
If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its icon.
If returned from COMSIG_ATOM_UPDATE_ICON it prevents the atom from updating its icon state.
If returned from COMSIG_ATOM_UPDATE_APPEARANCE it prevents the atom from updating its name.
If returned from COMSIG_ATOM_UPDATE_ICON it prevents the atom from updating its overlays.
Called from orbit component: (atom/movable/orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation)
Called from orbit component: (atom/movable/orbiter, refreshing)
from base of atom/rad_act(intensity)
from base of datum/radiation_wave/radiate(): (strength)
from proc/get_rad_contents(): ()
from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width)
from base of atom/ratvar_act(): ()
from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode)
from base of [atom/proc/set_light]: (l_range, l_power, l_color, l_on)
Called right before the atom changes the value of light_color to a different one, from base atom/proc/set_light_color: (new_color)
Called right before the atom changes the value of light_flags to a different one, from base [atom/proc/set_light_flags]: (new_flags)
Called right before the atom changes the value of light_on to a different one, from base [atom/proc/set_light_on]: (new_value)
Called right before the atom changes the value of light_power to a different one, from base [atom/proc/set_light_power]: (new_power)
Called right before the atom changes the value of light_range to a different one, from base atom/proc/set_light_range: (new_range)
from base of atom/singularity_pull(): (S, current_size)
from base of /atom/update_icon: (signalOut, did_anything)
from base of /atom/proc/update_appearance: (updates)
from base of /atom/proc/update_desc: (updates)
from base of /atom/update_icon: ()
from base of atom/update_icon_state: ()
Called right after the atom changes the value of light_color to a different one, from base of /atom/proc/set_light_color: (old_color)
Called right after the atom changes the value of light_flags to a different one, from base of [/atom/proc/set_light_flags]: (old_flags)
Called right after the atom changes the value of light_on to a different one, from base of [/atom/proc/set_light_on]: (old_value)
Called right after the atom changes the value of light_power to a different one, from base of [/atom/proc/set_light_power]: (old_power)
Called right after the atom changes the value of light_range to a different one, from base of /atom/proc/set_light_range: (old_range)
from base of /atom/proc/update_name: (updates)
from base of /atom/update_overlays: (list/new_overlays)
From base of atom/wave_ex_act(): (datum/wave_explosion/explosion, args)
return this if you want to block printing this message to this person, if you want to print your own (does not affect the other person's message)
from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment
when a component is added to a datum: (/datum/component)
sent to the component itself when registered to a parent
before a component is removed from a datum because of RemoveComponent: (/datum/component)
sent to the component itself when unregistered from a parent
fires on the target datum when an element is attached to it (/datum/element)
fires on the target datum when an element is attached to it (/datum/element)
called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range)
job datum has been called to deal with the aftermath of a latejoin spawn
job subsystem has spawned and equipped a new mob
global living say plug - use sparingly: (mob/speaker , message)
mob was created somewhere : (mob)
mob died somewhere : (mob , gibbed)
called by auxgm add_gas: (gas_id)
from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args)
called by datum/cinematic/play() : (datum/cinematic/new_cinematic)
called after a successful var edit somewhere in the world: (list/args)
When a gun is switched off of automatic fire mode
When a gun is switched to automatic fire mode
from /obj/item/proc/disableEmbedding:
Called when an item is being offered, from [/obj/item/proc/on_offered(mob/living/carbon/offerer)]
Called when an someone tries accepting an offered item, from [/obj/item/proc/on_offer_taken(mob/living/carbon/offer, mob/living/carbon/taker)]
from base of mob/living/death(): (gibbed)
from /obj/machinery/obj_break(damage_flag): (damage_flag)
from base power_change() when power is lost
from base power_change() when power is restored
sent from clicking while you have equipment selected.
sent from clicking while you have no equipment selected. Sent before cooldown and adjacency checks, so you can use this for infinite range things if you want.
from [/obj/effect/mine/proc/triggermine]:
from base of mob/AltClickOn(): (atom/A)
sent when a mob/login() finishes: (client)
from /mob/living/handle_eye_contact(): (mob/living/other_mob)
from base of mob/set_stat(): (new_stat, old_stat)
A mob has just unequipped an item.
from base of atom/movable/Moved(): (/atom)
Checks if a nanite component is able to be controlled by console
Checks if a nanite component is able to be interfaced with by a host with innate nanite control
Checks if a nanite component is able to be overwritten by viral replica
from base of [/datum/component/multiple_lives/proc/respawn]: (mob/respawned_mob, gibbed, lives_left)
from base of atom/examine_more(): (/mob)
before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation
just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called
from the base of /obj/item/projectile/proc/fire(): ()
from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle, hit_limb)
sent to targets during the process_hit proc of projectiles
from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle, hit_limb)
from SSsecurity_level when the security level changes : (new_level)
from SSsun when the sun changes position : (primary_sun, suns)
from /obj/machinery/power/supermatter_crystal/process_atmos(); when the SM sounds an audible alarm
from /obj/machinery/power/supermatter_crystal/process_atmos(); when the SM delam reaches the point of sounding alarms
from [/obj/structure/closet/supplypod/proc/endlaunch]:
from SSactivity for things that add threat but aren't "global" (e.g. phylacteries)
generic topic handler (usr, href_list)
from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps)
from base of atom/has_gravity(): (atom/asker, list/forced_gravities)
Component Specific Signals
from base of turf/multiz_turf_del(): (turf/source, direction)
from base of turf/multiz_turf_new: (turf/source, direction)
Returns direction: (wipe_votes)
from datum ui_act (usr, action)
Mask of Madness
a weather event of some kind occured
| COMSIG_MOB_ABILITY_STARTED | From base of /datum/action/cooldown/proc/PreActivate(), sent to the action owner: (datum/action/cooldown/activated) |
|---|---|
| COMPONENT_BLOCK_ABILITY_START | Return to block the ability from starting / activating |
| COMSIG_MOB_ABILITY_FINISHED | From base of /datum/action/cooldown/proc/PreActivate(), sent to the action owner: (datum/action/cooldown/finished) |
Return to block the ability from starting / activating
From base of /datum/action/cooldown/proc/PreActivate(), sent to the action owner: (datum/action/cooldown/finished)
From base of /datum/action/cooldown/proc/PreActivate(), sent to the action owner: (datum/action/cooldown/activated)
| COMSIG_ATOM_HITBY | from base of atom/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) |
|---|
from base of atom/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
| COMSIG_CLIENT_CLICK | from base of client/Click(): (atom/target, atom/location, control, params, mob/user) |
|---|---|
| COMSIG_CLICK | from base of atom/Click(): (atom/location, control, params, mob/user) |
| COMSIG_CLICK_SHIFT | from base of atom/ShiftClick(): (/mob) |
| COMPONENT_ALLOW_EXAMINATE | Allows the user to examinate regardless of client.eye. |
| COMPONENT_DENY_EXAMINATE | Higher priority compared to the above one |
| COMSIG_CLICK_CTRL | from base of atom/CtrlClickOn(): (/mob) |
| COMSIG_CLICK_ALT | from base of atom/AltClick(): (/mob) |
| COMSIG_CLICK_CTRL_SHIFT | from base of atom/CtrlShiftClick(/mob) |
| COMSIG_MOUSEDROP_ONTO | from base of atom/MouseDrop(): (/atom/over, /mob/user) |
| COMSIG_MOUSEDROPPED_ONTO | from base of atom/MouseDrop_T: (/atom/from, /mob/user) |
Allows the user to examinate regardless of client.eye.
Higher priority compared to the above one
from base of atom/Click(): (atom/location, control, params, mob/user)
from base of atom/AltClick(): (/mob)
from base of atom/CtrlClickOn(): (/mob)
from base of atom/CtrlShiftClick(/mob)
from base of atom/ShiftClick(): (/mob)
from base of client/Click(): (atom/target, atom/location, control, params, mob/user)
from base of atom/MouseDrop_T: (/atom/from, /mob/user)
from base of atom/MouseDrop(): (/atom/over, /mob/user)
| COMSIG_LIVING_PUSHING_MOVABLE | Called from /mob/living/PushAM -- Called when this mob is about to push a movable, but before it moves +(aotm/movable/being_pushed) |
|---|
Called from /mob/living/PushAM -- Called when this mob is about to push a movable, but before it moves +(aotm/movable/being_pushed)
| COMSIG_GLOB_CARBON_THROW_THING | a person somewhere has thrown something : (mob/living/carbon/carbon_thrower, target) |
|---|
a person somewhere has thrown something : (mob/living/carbon/carbon_thrower, target)
| COMSIG_HUD_LOBBY_COLLAPSED | Sent from /atom/movable/screen/lobby/button/collapse/proc/collapse_buttons() : () |
|---|---|
| COMSIG_HUD_LOBBY_EXPANDED | Sent from /atom/movable/screen/lobby/button/collapse/proc/expand_buttons() : () |
Sent from /atom/movable/screen/lobby/button/collapse/proc/collapse_buttons() : ()
Sent from /atom/movable/screen/lobby/button/collapse/proc/expand_buttons() : ()
| COMSIG_MOB_SURGERY_STARTED | From /datum/surgery/New(): (datum/surgery/surgery, surgery_location (body zone), obj/item/bodypart/targeted_limb) |
|---|---|
| COMSIG_MOB_SURGERY_STEP_SUCCESS | From /datum/surgery_step/success(): (datum/surgery_step/step, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) |
| COMSIG_DEFIBRILLATOR_SUCCESS | From /obj/item/shockpaddles/proc/do_success(): (obj/item/shockpaddles/source) |
| COMSIG_SURGERY_STARTING | From /datum/surgery/can_start(): (mob/source, datum/surgery/surgery, mob/living/patient) |
From /obj/item/shockpaddles/proc/do_success(): (obj/item/shockpaddles/source)
From /datum/surgery/New(): (datum/surgery/surgery, surgery_location (body zone), obj/item/bodypart/targeted_limb)
From /datum/surgery_step/success(): (datum/surgery_step/step, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
From /datum/surgery/can_start(): (mob/source, datum/surgery/surgery, mob/living/patient)
| COMSIG_LIVING_MOB_BUMP | From base of mob/living/MobBump() (mob/living) |
|---|
From base of mob/living/MobBump() (mob/living)
| COMSIG_MOB_DROPPING_ITEM | from mob/proc/dropItemToGround() |
|---|
from mob/proc/dropItemToGround()
| COMSIG_MOD_MODULE_SELECTED | Called when a module is selected to be the active one from on_select(obj/item/mod/module/module) |
|---|---|
| COMSIG_MOD_DEPLOYED | Called when a MOD deploys one or more of its parts. |
| COMSIG_MOD_RETRACTED | Called when a MOD retracts one or more of its parts. |
| COMSIG_MOD_TOGGLED | Called when a MOD is finished toggling itself. |
| COMSIG_MOD_ACTIVATE | Called when a MOD activation is called from toggle_activate(mob/user) |
| MOD_CANCEL_ACTIVATE | Cancels the suit's activation |
| COMSIG_MOD_MODULE_REMOVED | Called when a MOD finishes having a module removed from it. |
| COMSIG_MOD_MODULE_ADDED | Called when a MOD finishes having a module added to it. |
| COMSIG_MOD_MODULE_REMOVAL | Called when a MOD is having modules removed from crowbar_act(mob/user, obj/crowbar) |
| MOD_CANCEL_REMOVAL | Cancels the removal of modules |
| COMSIG_MODULE_TRIGGERED | Called when a module attempts to activate, however it does. At the end of checks so you can add some yourself, or work on trigger behavior (mob/user) |
| MOD_ABORT_USE | Cancels activation, with no message. Include feedback on your cancel. |
| COMSIG_MODULE_ACTIVATED | Called when a module activates, after all checks have passed and cooldown started. |
| COMSIG_MODULE_DEACTIVATED | Called when a module deactivates, after all checks have passed. |
| COMSIG_MODULE_USED | Called when a module is used, after all checks have passed and cooldown started. |
| COMSIG_MOD_WEARER_SET | Called when the MODsuit wearer is set. |
| COMSIG_MOD_WEARER_UNSET | Called when the MODsuit wearer is unset. |
Called when a module activates, after all checks have passed and cooldown started.
Called when a module deactivates, after all checks have passed.
Called when a module attempts to activate, however it does. At the end of checks so you can add some yourself, or work on trigger behavior (mob/user)
Called when a module is used, after all checks have passed and cooldown started.
Called when a MOD activation is called from toggle_activate(mob/user)
Called when a MOD deploys one or more of its parts.
Called when a MOD finishes having a module added to it.
Called when a MOD is having modules removed from crowbar_act(mob/user, obj/crowbar)
Called when a MOD finishes having a module removed from it.
Called when a module is selected to be the active one from on_select(obj/item/mod/module/module)
Called when a MOD retracts one or more of its parts.
Called when a MOD is finished toggling itself.
Called when the MODsuit wearer is set.
Called when the MODsuit wearer is unset.
Cancels activation, with no message. Include feedback on your cancel.
Cancels the suit's activation
Cancels the removal of modules
| COMSIG_PAINTING_TOOL_SET_COLOR | from base of /item/proc/set_painting_tool_color(): (chosen_color) |
|---|---|
| COMSIG_PAINTING_TOOL_GET_ADDITIONAL_DATA | from base of /item/canvas/ui_data(): (data) |
from base of /item/canvas/ui_data(): (data)
from base of /item/proc/set_painting_tool_color(): (chosen_color)
| COMSIG_ATOM_EXPOSE_REAGENTS | Sent by /datum/reagents/proc/reaction, used for /obj/item/mod/module/springlock |
|---|
Sent by /datum/reagents/proc/reaction, used for /obj/item/mod/module/springlock
| COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET | A "Type-A" contextual screentip interaction.
+These are used for items that are defined by their behavior. They define their contextual text within themselves,
+not in their targets.
+Examples include syringes (LMB to inject, RMB to draw) and health analyzers (LMB to scan health/wounds, RMB for chems)
+Items can override add_item_context(), and call register_item_context() in order to easily connect to this.
+Called on /obj/item with a mutable screentip context list, the hovered target, and the mob hovering.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET. |
|---|---|
| COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM | A "Type-B" contextual screentip interaction. +These are atoms that are defined by what happens to them. These should define contextual text within themselves, and +not in their operating tools. +Examples include construction objects (LMB with glass to put in screen for computers). +Called on /atom with a mutable screentip context list, the item being used, and the mob hovering. +A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm) +that map to the action as text. +If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET. |
| CONTEXTUAL_SCREENTIP_SET | Tells the contextual screentips system that the list context was mutated. |
A "Type-B" contextual screentip interaction. +These are atoms that are defined by what happens to them. These should define contextual text within themselves, and +not in their operating tools. +Examples include construction objects (LMB with glass to put in screen for computers). +Called on /atom with a mutable screentip context list, the item being used, and the mob hovering. +A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm) +that map to the action as text. +If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
A "Type-A" contextual screentip interaction.
+These are used for items that are defined by their behavior. They define their contextual text within themselves,
+not in their targets.
+Examples include syringes (LMB to inject, RMB to draw) and health analyzers (LMB to scan health/wounds, RMB for chems)
+Items can override add_item_context(), and call register_item_context() in order to easily connect to this.
+Called on /obj/item with a mutable screentip context list, the hovered target, and the mob hovering.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
Tells the contextual screentips system that the list context was mutated.
| COMSIG_SUBSYSTEM_POST_INITIALIZE | Subsystem signals +From base of datum/controller/subsystem/Initialize: (start_timeofday) |
|---|---|
| COMSIG_TICKER_ENTER_PREGAME | Called when the ticker enters the pre-game phase |
| COMSIG_TICKER_ENTER_SETTING_UP | Called when the ticker sets up the game for start |
| COMSIG_TICKER_ERROR_SETTING_UP | Called when the ticker fails to set up the game for start |
| COMSIG_TICKER_ROUND_STARTING | Called when the round has started, but before GAME_STATE_PLAYING |
| COMSIG_ADDED_POINT_OF_INTEREST | Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_added : (atom/new_poi) |
| COMSIG_REMOVED_POINT_OF_INTEREST | Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_removed : (atom/old_poi) |
Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_added : (atom/new_poi)
Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_removed : (atom/old_poi)
Subsystem signals +From base of datum/controller/subsystem/Initialize: (start_timeofday)
Called when the ticker enters the pre-game phase
Called when the ticker sets up the game for start
Called when the ticker fails to set up the game for start
Called when the round has started, but before GAME_STATE_PLAYING
| ONLY_RULESET | This is the only ruleset that should be picked this round, used by admins and should not be on rulesets in code. |
|---|---|
| HIGH_IMPACT_RULESET | Only one ruleset with this flag will be picked. |
| LONE_RULESET | This ruleset can only be picked once. Anything that does not have a scaling_cost MUST have this. |
| HIJACKED_NOTHING | No round event was hijacked this cycle |
| HIJACKED_TOO_RECENT | This cycle, a round event was hijacked when the last midround event was too recent. |
| HIJACKED_TOO_SOON | This cycle, a round event was hijacked when the next midround event is too soon. |
Only one ruleset with this flag will be picked.
No round event was hijacked this cycle
This cycle, a round event was hijacked when the last midround event was too recent.
This cycle, a round event was hijacked when the next midround event is too soon.
This ruleset can only be picked once. Anything that does not have a scaling_cost MUST have this.
This is the only ruleset that should be picked this round, used by admins and should not be on rulesets in code.
| STARTING_PAYCHECKS | Number of paychecks jobs start with at the creation of a new bank account for a player (So at shift-start or game join, but not a blank new account.) |
|---|---|
| MAX_MAIL_PER_MINUTE | How much mail the Economy SS will create per minute, regardless of firing time. |
| FULL_CRATE_LETTER_ODDS | Probability of using letters of envelope sprites on all letters. |
Probability of using letters of envelope sprites on all letters.
How much mail the Economy SS will create per minute, regardless of firing time.
Number of paychecks jobs start with at the creation of a new bank account for a player (So at shift-start or game join, but not a blank new account.)
| EVENT_CATEGORY_AI | Events that mess with or create artificial intelligences, such as vending machines and the AI itself |
|---|---|
| EVENT_CATEGORY_ANOMALIES | Events that spawn anomalies, which might be the source of anomaly cores |
| EVENT_CATEGORY_BUREAUCRATIC | Events pertaining cargo, messages incoming to the station and job slots |
| EVENT_CATEGORY_ENGINEERING | Events that cause breakages and malfunctions that could be fixed by engineers |
| EVENT_CATEGORY_ENTITIES | Events that spawn creatures with simple desires, such as to hunt |
| EVENT_CATEGORY_FRIENDLY | Events that should have no harmful effects, and might be useful to the crew |
| EVENT_CATEGORY_HEALTH | Events that affect the body and mind |
| EVENT_CATEGORY_HOLIDAY | Events reserved for special occassions |
| EVENT_CATEGORY_INVASION | Events with enemy groups with a more complex plan |
| EVENT_CATEGORY_JANITORIAL | Events that make a mess |
| EVENT_CATEGORY_SPACE | Events that summon meteors and other debris, and stationwide waves of harmful space weather |
| EVENT_CATEGORY_WIZARD | Events summoned by a wizard |
| ADMIN_CANCEL_EVENT | Return from admin setup to stop the event from triggering entirely. |
Return from admin setup to stop the event from triggering entirely.
Events that mess with or create artificial intelligences, such as vending machines and the AI itself
Events that spawn anomalies, which might be the source of anomaly cores
Events pertaining cargo, messages incoming to the station and job slots
Events that cause breakages and malfunctions that could be fixed by engineers
Events that spawn creatures with simple desires, such as to hunt
Events that should have no harmful effects, and might be useful to the crew
Events that affect the body and mind
Events reserved for special occassions
Events with enemy groups with a more complex plan
Events that make a mess
Events that summon meteors and other debris, and stationwide waves of harmful space weather
Events summoned by a wizard
| BORG_MODULE_SECURITY | Module is compatible with Security Cyborg models |
|---|---|
| BORG_MODULE_MINER | Module is compatible with Miner Cyborg models |
| BORG_MODULE_JANITOR | Module is compatible with Janitor Cyborg models |
| BORG_MODULE_MEDICAL | Module is compatible with Medical Cyborg models |
| BORG_MODULE_ENGINEERING | Module is compatible with Engineering Cyborg models |
| EXOSUIT_MODULE_RIPLEY | Module is compatible with Ripley Exosuit models |
| EXOSUIT_MODULE_ODYSSEUS | Module is compatible with Odyseeus Exosuit models |
| EXOSUIT_MODULE_FIREFIGHTER | Module is compatible with Clarke Exosuit models. Rebranded to firefighter because tg nerfed it to this. |
| EXOSUIT_MODULE_GYGAX | Module is compatible with Gygax Exosuit models |
| EXOSUIT_MODULE_DURAND | Module is compatible with Durand Exosuit models |
| EXOSUIT_MODULE_HONK | Module is compatible with H.O.N.K Exosuit models |
| EXOSUIT_MODULE_PHAZON | Module is compatible with Phazon Exosuit models |
| EXOSUIT_MODULE_GYGAX_MED | Module is compatable with N models |
| EXOSUIT_MODULE_WORKING | Module is compatible with "Working" Exosuit models - Ripley and Clarke |
| EXOSUIT_MODULE_COMBAT | Module is compatible with "Combat" Exosuit models - Gygax, H.O.N.K, Durand and Phazon |
| EXOSUIT_MODULE_MEDICAL | Module is compatible with "Medical" Exosuit modelsm - Odysseus |
Module is compatible with Engineering Cyborg models
Module is compatible with Janitor Cyborg models
Module is compatible with Medical Cyborg models
Module is compatible with Miner Cyborg models
Module is compatible with Security Cyborg models
Module is compatible with "Combat" Exosuit models - Gygax, H.O.N.K, Durand and Phazon
Module is compatible with Durand Exosuit models
Module is compatible with Clarke Exosuit models. Rebranded to firefighter because tg nerfed it to this.
Module is compatible with Gygax Exosuit models
Module is compatable with N models
Module is compatible with H.O.N.K Exosuit models
Module is compatible with "Medical" Exosuit modelsm - Odysseus
Module is compatible with Odyseeus Exosuit models
Module is compatible with Phazon Exosuit models
Module is compatible with Ripley Exosuit models
Module is compatible with "Working" Exosuit models - Ripley and Clarke
| EXPLOSION_POWER_DEAD | Default explosion power to consider an explosion over |
|---|---|
| EXPLOSION_DEFAULT_FALLOFF_MULTIPLY | Default explosion falloff |
| EXPLOSION_DEFAULT_FALLOFF_SUBTRACT | Default explosion constant falloff |
| EXPLOSION_POWER_NO_RESIST_THRESHOLD | Block amount at which point having 0 block resistance will result in a full block |
| EXPLOSION_POWER_QUANTIZATION_ACCURACY | Explosion power quantization |
| EXPLOSION_FLAG_DENSITY_DEPENDENT | No blocking if we're not dense |
| EXPLOSION_FLAG_HARD_OBSTACLE | If we survive the explosion, we block ALL the power and ignore the results of wave_ex_act(). |
| EXPLOSION_POWER_MAXCAP | Maxcap |
| EXPLOSION_POWER_ERASE_SHREDS | erases shreds from explosions/item damage |
| EXPLOSION_POWER_NORMAL_MOB_GIB | Gibs most mobs |
| EXPLOSION_POWER_STANDARD_SCALE_OBJECT_DAMAGE | Explosion power to object damage (without taking into consideration armor) |
| EXPLOSION_POWER_STANDARD_SCALE_HARD_OBSTACLE_DAMAGE | Explosion power to object damage for hard obstacles |
| EXPLOSION_POWER_STANDARD_SCALE_WINDOW_DAMAGE | Explosion power to object damage for windows |
| EXPLOSION_POWER_STANDARD_SCALE_MOB_DAMAGE | Default brute damage to do to living things |
| EXPLOSION_DAMAGE_OPEN_DOOR_FACTOR | Factor to multiply damage to a door by if it's open (and therefore not blocking the explosion) |
Factor to multiply damage to a door by if it's open (and therefore not blocking the explosion)
Default explosion falloff
Default explosion constant falloff
No blocking if we're not dense
If we survive the explosion, we block ALL the power and ignore the results of wave_ex_act().
Default explosion power to consider an explosion over
erases shreds from explosions/item damage
Maxcap
Gibs most mobs
Block amount at which point having 0 block resistance will result in a full block
Explosion power quantization
Explosion power to object damage for hard obstacles
Default brute damage to do to living things
Explosion power to object damage (without taking into consideration armor)
Explosion power to object damage for windows
| INCLUDE_AC | Include leading A width and trailing C width in GetWidth() or in DrawText() |
|---|
Include leading A width and trailing C width in GetWidth() or in DrawText()
| HUD_STYLE_STANDARD | Standard hud |
|---|---|
| HUD_STYLE_REDUCED | Reduced hud (just hands and intent switcher) |
| HUD_STYLE_NOHUD | No hud (for screenshots) |
| HUD_VERSIONS | Used in show_hud(); Please ensure this is the same as the maximum index. |
| APPEARANCE_UI_IGNORE_ALPHA | Used for progress bars and chat messages |
| APPEARANCE_UI | Used for HUD objects |
| SCRN_OBJ_DEFAULT | Whatever the base action datum thinks is best |
| SCRN_OBJ_FLOATING | Floating somewhere on the hud, not in any predefined place |
| SCRN_OBJ_IN_LIST | In the list of buttons stored at the top of the screen |
| SCRN_OBJ_IN_PALETTE | In the collapseable palette |
| HOVER_OUTLINE_FILTER | The filter name for the hover outline |
Used for HUD objects
Used for progress bars and chat messages
The filter name for the hover outline
No hud (for screenshots)
Reduced hud (just hands and intent switcher)
Standard hud
Used in show_hud(); Please ensure this is the same as the maximum index.
Whatever the base action datum thinks is best
Floating somewhere on the hud, not in any predefined place
In the list of buttons stored at the top of the screen
In the collapseable palette
| CHANNELS_PER_INSTRUMENT | Max number of playing notes per instrument. |
|---|---|
| INSTRUMENT_DISTANCE_FALLOFF_BUFF | Distance multiplier that makes us not be impacted by 3d sound as much. This is a multiplier so lower it is the closer we will pretend to be to people. |
| INSTRUMENT_DISTANCE_NO_FALLOFF | How many tiles instruments have no falloff for |
| INSTRUMENT_MAX_TOTAL_SUSTAIN | Maximum length a note should ever go for |
| INSTRUMENT_EXP_FALLOFF_MIN | These are per decisecond. |
| INSTRUMENT_MIN_SUSTAIN_DROPOFF | Minimum volume for when the sound is considered dead. |
Max number of playing notes per instrument.
Distance multiplier that makes us not be impacted by 3d sound as much. This is a multiplier so lower it is the closer we will pretend to be to people.
How many tiles instruments have no falloff for
These are per decisecond.
Maximum length a note should ever go for
Minimum volume for when the sound is considered dead.
| ITEM_SLOT_OCLOTHING | Suit slot (armors, costumes, space suits, etc.) |
|---|---|
| ITEM_SLOT_ICLOTHING | Jumpsuit slot |
| ITEM_SLOT_GLOVES | Glove slot |
| ITEM_SLOT_EYES | Glasses slot |
| ITEM_SLOT_EARS | Ear slot (radios, earmuffs) |
| ITEM_SLOT_MASK | Mask slot |
| ITEM_SLOT_HEAD | Head slot (helmets, hats, etc.) |
| ITEM_SLOT_FEET | Shoe slot |
| ITEM_SLOT_ID | ID slot |
| ITEM_SLOT_BELT | Belt slot |
| ITEM_SLOT_BACK | Back slot |
| ITEM_SLOT_DEX_STORAGE | Dextrous simplemob "hands" (used for Drones and Dextrous Guardians) |
| ITEM_SLOT_NECK | Neck slot (ties, bedsheets, scarves) |
| ITEM_SLOT_HANDS | A character's hand slots |
| ITEM_SLOT_BACKPACK | Inside of a character's backpack |
| ITEM_SLOT_SUITSTORE | Suit Storage slot |
| ITEM_SLOT_LPOCKET | Left Pocket slot |
| ITEM_SLOT_RPOCKET | Right Pocket slot |
| ITEM_SLOT_HANDCUFFED | Handcuff slot |
| ITEM_SLOT_LEGCUFFED | Legcuff slot (bolas, beartraps) |
| ITEM_SLOT_ACCESSORY | To attach to a jumpsuit |
| SLOTS_AMT | Total amount of slots |
| AFK_THEFT_MAX_MESSAGES | How many messages you can remember while logged out before you stop remembering new ones |
| AFK_THEFT_FORGET_DETAILS_TIME | If someone logs back in and there are entries older than this, just tell them they can't remember who it was or when |
| AFK_THEFT_NAME | The index of the entry in 'afk_thefts' with the person's visible name at the time |
| AFK_THEFT_MESSAGE | The index of the entry in 'afk_thefts' with the text |
| AFK_THEFT_TIME | The index of the entry in 'afk_thefts' with the time it happened |
If someone logs back in and there are entries older than this, just tell them they can't remember who it was or when
How many messages you can remember while logged out before you stop remembering new ones
The index of the entry in 'afk_thefts' with the text
The index of the entry in 'afk_thefts' with the person's visible name at the time
The index of the entry in 'afk_thefts' with the time it happened
To attach to a jumpsuit
Back slot
Inside of a character's backpack
Belt slot
Dextrous simplemob "hands" (used for Drones and Dextrous Guardians)
Ear slot (radios, earmuffs)
Glasses slot
Shoe slot
Glove slot
Handcuff slot
A character's hand slots
Head slot (helmets, hats, etc.)
Jumpsuit slot
ID slot
Legcuff slot (bolas, beartraps)
Left Pocket slot
Mask slot
Neck slot (ties, bedsheets, scarves)
Suit slot (armors, costumes, space suits, etc.)
Right Pocket slot
Suit Storage slot
Total amount of slots
| is_object_datatype | Checks if something is a BYOND object datatype rather than a primitive, or whatever's closest to one. |
|---|
Checks if something is a BYOND object datatype rather than a primitive, or whatever's closest to one.
| SPACE_LAYER | Layers most often used by atoms of plane lower than GAME_PLANE |
|---|---|
| CATWALK_LAYER | catwalk overlay of /turf/open/floor/plating/plating_catwalk |
| BELOW_OPEN_DOOR_LAYER | Layers most often used by atoms of plane equal or higher than GAME_PLANE |
| BALLOON_CHAT_PLANE | Plane for balloon text (text that fades up) +It's over lighting and every other crap because this is nearly as important as hud content and only visible to the user. |
| LOBBY_BELOW_MENU_LAYER | Layer for lobby menu collapse button |
| LOBBY_MENU_LAYER | Layer for lobby menu background image and main buttons (Join/Ready, Observe, Charater Prefs) |
| LOBBY_SHUTTER_LAYER | Layer for lobby menu shutter, which covers up the menu to collapse/expand it |
| LOBBY_BOTTOM_BUTTON_LAYER | Layer for lobby menu buttons that are hanging away from and lower than the main panel |
| SCREENTIP_LAYER | Layer for screentips |
Plane for balloon text (text that fades up) +It's over lighting and every other crap because this is nearly as important as hud content and only visible to the user.
Layers most often used by atoms of plane equal or higher than GAME_PLANE
catwalk overlay of /turf/open/floor/plating/plating_catwalk
Layer for lobby menu collapse button
Layer for lobby menu buttons that are hanging away from and lower than the main panel
Layer for lobby menu background image and main buttons (Join/Ready, Observe, Charater Prefs)
Layer for lobby menu shutter, which covers up the menu to collapse/expand it
Layer for screentips
Layers most often used by atoms of plane lower than GAME_PLANE
| EMISSIVE_BLOCK_GENERIC | Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all. |
|---|---|
| EMISSIVE_BLOCK_UNIQUE | Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans. |
| EMISSIVE_COLOR | The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with EM_BLOCK_COLOR. |
| EM_BLOCK_COLOR | The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with EMISSIVE_COLOR. |
| EM_MASK_MATRIX | The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of EMISSIVE_COLOR, and be independant of the RGB value of EM_BLOCK_COLOR. |
| GETREDPART | Returns the red part of a #RRGGBB hex sequence as number |
| GETGREENPART | Returns the green part of a #RRGGBB hex sequence as number |
| GETBLUEPART | Returns the blue part of a #RRGGBB hex sequence as number |
| PARSE_LIGHT_COLOR | Parse the hexadecimal color into lumcounts of each perspective. |
Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all.
Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans.
The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with EM_BLOCK_COLOR.
The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with EMISSIVE_COLOR.
The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of EMISSIVE_COLOR, and be independant of the RGB value of EM_BLOCK_COLOR.
Returns the blue part of a #RRGGBB hex sequence as number
Returns the green part of a #RRGGBB hex sequence as number
Returns the red part of a #RRGGBB hex sequence as number
Parse the hexadecimal color into lumcounts of each perspective.
| PERLIN_LAYER_HEIGHT | Map generation defines |
|---|
Map generation defines
| MINERAL_MATERIAL_AMOUNT | cm3 of material matter per sheet |
|---|
cm3 of material matter per sheet
| MAT_CATEGORY_ORE | Is the material from an ore? currently unused but exists atm for categorizations sake |
|---|---|
| MAT_CATEGORY_RIGID | Hard materials, such as iron or metal |
| MAT_CATEGORY_BASE_RECIPES | Use this flag on TRUE if you want the basic recipes |
| MATERIAL_COLOR | Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes. |
Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes.
Use this flag on TRUE if you want the basic recipes
Is the material from an ore? currently unused but exists atm for categorizations sake
Hard materials, such as iron or metal
| TOBITSHIFT | Gets shift x that would be required the bitflag (1<<x) +We need the round because log has floating-point inaccuracy, and if we undershoot at all on list indexing we'll get the wrong index. |
|---|---|
| DT_PROB_RATE | Converts a probability/second chance to probability/delta_time chance
+For example, if you want an event to happen with a 10% per second chance, but your proc only runs every 5 seconds, do if(prob(100*DT_PROB_RATE(0.1, 5))) |
| DT_PROB | Like DT_PROB_RATE but easier to use, simply put if(DT_PROB(10, 5)) |
| MANHATTAN_DISTANCE | Taxicab distance--gets you the actual time it takes to get from one turf to another due to how we calculate diagonal movement |
| LOGISTIC_FUNCTION | A function that exponentially approaches a maximum value of L +k is the rate at which is approaches L, x_0 is the point where the function = 0 |
| FORCE_BOOLEAN | Make sure something is a boolean TRUE/FALSE 1/0 value, since things like bitfield & bitflag doesn't always give 1s and 0s. |
| TILES_TO_PIXELS | Gives the number of pixels in an orthogonal line of tiles. |
Like DT_PROB_RATE but easier to use, simply put if(DT_PROB(10, 5))
Converts a probability/second chance to probability/delta_time chance
+For example, if you want an event to happen with a 10% per second chance, but your proc only runs every 5 seconds, do if(prob(100*DT_PROB_RATE(0.1, 5)))
Make sure something is a boolean TRUE/FALSE 1/0 value, since things like bitfield & bitflag doesn't always give 1s and 0s.
A function that exponentially approaches a maximum value of L +k is the rate at which is approaches L, x_0 is the point where the function = 0
Taxicab distance--gets you the actual time it takes to get from one turf to another due to how we calculate diagonal movement
Gives the number of pixels in an orthogonal line of tiles.
Gets shift x that would be required the bitflag (1<<x) +We need the round because log has floating-point inaccuracy, and if we undershoot at all on list indexing we'll get the wrong index.
| CANNOT_INTERACT | blocks using equipment and melee attacking. |
|---|---|
| MMI_COMPATIBLE | posibrains can drive this mecha |
blocks using equipment and melee attacking.
posibrains can drive this mecha
| DEBUG_LINE | yeah yeah i'm a lazy asshole who can't debug yeah yeah |
|---|---|
| PIXELS | world.icon_size |
yeah yeah i'm a lazy asshole who can't debug yeah yeah
world.icon_size
| MOB_NANITES | Mobs that otherwise support nanites |
|---|---|
| SPAWN_MEGAFAUNA | Define for spawning megafauna instead of a mob for cave gen |
Mobs that otherwise support nanites
Define for spawning megafauna instead of a mob for cave gen
| ABILITY_SOURCE_SPECIES | Species |
|---|---|
| ABILITY_SOURCE_CHANGELING | Changeling |
| INNATE_ABILITY_HUMANOID_CUSTOMIZATION | Full customization and transformation of mutantparts/hair/sprite accessories/etc - excludes name by default |
| INNATE_ABILITY_SLIME_BLOBFORM | Slime blobform |
| INNATE_ABILITY_LIMB_REGROWTH | limb regrowth |
| PROPERTY_CUSTOMIZATION_SILENT | ability properties +is this silent? |
| PROPERTY_BLOBFORM_COLOR | Blobform color |
| PROPERTY_LIMB_REGROWTH_USAGE_TYPE | limb regrowth usage type |
| REGROWTH_USES_BLOOD | blood |
Changeling
Species
Full customization and transformation of mutantparts/hair/sprite accessories/etc - excludes name by default
limb regrowth
Slime blobform
Blobform color
ability properties +is this silent?
limb regrowth usage type
blood
| PULL_PRONE_SLOWDOWN | How much someone is slowed from pulling a prone human |
|---|---|
| FIREMAN_CARRY_SLOWDOWN | How much someone is slowed from fireman carrying a human |
| PIGGYBACK_CARRY_SLOWDOWN | How much someone is slowed by piggybacking a human |
| SOFTCRIT_ADD_SLOWDOWN | slowdown when in softcrit. Note that crawling slowdown will also apply at the same time! |
| CRAWLING_ADD_SLOWDOWN | slowdown when crawling |
slowdown when crawling
How much someone is slowed from fireman carrying a human
How much someone is slowed by piggybacking a human
How much someone is slowed from pulling a prone human
slowdown when in softcrit. Note that crawling slowdown will also apply at the same time!
| DEFAULT_MAX_COMPLEXITY | Default value for the max_complexity var on MODsuits |
|---|---|
| DEFAULT_CHARGE_DRAIN | Default cell drain per process on MODsuits |
| MOD_ACTIVATION_STEP_TIME | Default time for a part to seal |
| MODULE_PASSIVE | Passive module, just acts when put in naturally. |
| MODULE_USABLE | Usable module, does something when you press a button. |
| MODULE_TOGGLE | Toggle module, you turn it on/off and it does stuff. |
| MODULE_ACTIVE | Actively usable module, you may only have one selected at a time. |
Default cell drain per process on MODsuits
Default value for the max_complexity var on MODsuits
Actively usable module, you may only have one selected at a time.
Passive module, just acts when put in naturally.
Toggle module, you turn it on/off and it does stuff.
Usable module, does something when you press a button.
Default time for a part to seal
| MIN_GLIDE_SIZE | The minimum for glide_size to be clamped to. |
|---|---|
| MAX_GLIDE_SIZE | The maximum for glide_size to be clamped to. +This shouldn't be higher than the icon size, and generally you shouldn't be changing this, but it's here just in case. |
| DELAY_TO_GLIDE_SIZE | Broken down, here's what this does: +divides the world icon_size (32) by delay divided by ticklag to get the number of pixels something should be moving each tick. +The division result is given a min value of 1 to prevent obscenely slow glide sizes from being set +Then that's multiplied by the global glide size multiplier. 1.25 by default feels pretty close to spot on. This is just to try to get byond to behave. +The whole result is then clamped to within the range above. +Not very readable but it works |
| SMOOTH_MOVEMENT | Enables smooth movement |
| SET_APPEARANCE_FLAGS | Set appearance flags in vars |
Broken down, here's what this does: +divides the world icon_size (32) by delay divided by ticklag to get the number of pixels something should be moving each tick. +The division result is given a min value of 1 to prevent obscenely slow glide sizes from being set +Then that's multiplied by the global glide size multiplier. 1.25 by default feels pretty close to spot on. This is just to try to get byond to behave. +The whole result is then clamped to within the range above. +Not very readable but it works
The maximum for glide_size to be clamped to. +This shouldn't be higher than the icon size, and generally you shouldn't be changing this, but it's here just in case.
The minimum for glide_size to be clamped to.
Set appearance flags in vars
Enables smooth movement
| NANITE_PROTOCOL_REPLICATION | Nanite Protocol types |
|---|---|
| NESTYPE_TEXT | Nanite extra settings types: used to help uis know what type an extra setting is |
| NES_SENT_CODE | Nanite Extra Settings - Note that these will also be the names displayed in the UI |
Nanite Protocol types
Nanite extra settings types: used to help uis know what type an extra setting is
Nanite Extra Settings - Note that these will also be the names displayed in the UI
| VALIDATE_OVERLAY_LIMIT | Checks if an atom has reached the overlay limit, and make a loud error if it does. |
|---|
Checks if an atom has reached the overlay limit, and make a loud error if it does.
| TRACK_NUKE_DISK | Performs any operations that ought to run after an appearance change |
|---|
Performs any operations that ought to run after an appearance change
| WATTS | conversion ratio from joules to watts |
|---|---|
| JOULES | conversion ratio from watts to joules |
conversion ratio from watts to joules
conversion ratio from joules to watts
| /procpath | Represents a proc or verb path. |
|---|
| PROJECTILE_PIERCE_NONE | Default behavior: hit and delete self |
|---|---|
| PROJECTILE_PIERCE_HIT | Hit the thing but go through without deleting. Causes on_hit to be called with pierced = TRUE |
| PROJECTILE_PIERCE_PHASE | Entirely phase through the thing without ever hitting. |
| PROJECTILE_RICOCHET_YES | This atom should be ricocheted off of from its inherent properties using standard % chance handling. |
| PROJECTILE_RICOCHET_NO | This atom should not be ricocheted off of from its inherent properties. |
| PROJECTILE_RICOCHET_PREVENT | This atom should prevent any kind of projectile ricochet from its inherent properties. |
| PROJECTILE_RICOCHET_FORCE | This atom should force a projectile ricochet from its inherent properties. |
Hit the thing but go through without deleting. Causes on_hit to be called with pierced = TRUE
Default behavior: hit and delete self
Entirely phase through the thing without ever hitting.
This atom should force a projectile ricochet from its inherent properties.
This atom should not be ricocheted off of from its inherent properties.
This atom should prevent any kind of projectile ricochet from its inherent properties.
This atom should be ricocheted off of from its inherent properties using standard % chance handling.
Defines that give qdel hints. +These can be given as a return in /atom/proc/Destroy or by calling /proc/qdel. | |
| QDEL_HINT_QUEUE | qdel should queue the object for deletion. |
|---|---|
| QDEL_HINT_LETMELIVE | qdel should let the object live after calling /atom/proc/Destroy. |
| QDEL_HINT_IWILLGC | Functionally the same as the above. qdel should assume the object will gc on its own, and not check it. |
| QDEL_HINT_HARDDEL | Qdel should assume this object won't GC, and queue a hard delete using a hard reference. |
| QDEL_ITEM_ADMINS_WARNED | Set when admins are told about lag causing qdels in this type. |
| QDEL_ITEM_SUSPENDED_FOR_LAG | Set when a type can no longer be hard deleted on failure because of lag it causes while this happens. |
Qdel should assume this object won't GC, and queue a hard delete using a hard reference.
Functionally the same as the above. qdel should assume the object will gc on its own, and not check it.
qdel should let the object live after calling /atom/proc/Destroy.
qdel should queue the object for deletion.
Set when admins are told about lag causing qdels in this type.
Set when a type can no longer be hard deleted on failure because of lag it causes while this happens.
| REAGENT_VALUE_NONE | Standard reagents value defines. +Take a grain of salt, only "rare" reagents should have a decent value here, for balance reasons. +TL;DR Think of it also like general market request price more than rarity. |
|---|
Standard reagents value defines. +Take a grain of salt, only "rare" reagents should have a decent value here, for balance reasons. +TL;DR Think of it also like general market request price more than rarity.
| ANOMALY_CORE_BLUESPACE | Bluespace cores |
|---|---|
| ANOMALY_CORE_GRAVITATIONAL | Gravitational cores |
| ANOMALY_CORE_FLUX | Flux |
| ANOMALY_CORE_VORTEX | Vortex |
| ANOMALY_CORE_PYRO | Pyro |
| SUPERMATTER_ANOMALY_DROP_CHANCE | chance supermatter anomalies drop real cores |
Bluespace cores
Flux
Gravitational cores
Pyro
Vortex
chance supermatter anomalies drop real cores
| STANDARD_PART_LEVEL_LATHE_COEFFICIENT | Efficiency scaling for stock part level to material usage. All code concerning lathing and production from raw material sheet should be using this. |
|---|---|
| STANDARD_PART_LEVEL_ORE_COEFFICIENT | Efficiency scaling for stock part level to ore factor. All code concerning lathing and production from raw ores to raw material sheets should be using this. |
Efficiency scaling for stock part level to material usage. All code concerning lathing and production from raw material sheet should be using this.
Efficiency scaling for stock part level to ore factor. All code concerning lathing and production from raw ores to raw material sheets should be using this.
| BORG_MODULE_ALL_DISABLED | Defines for whether or not module slots are broken. |
|---|
Defines for whether or not module slots are broken.
| /proc/rustg_get_version | Gets the version of rust_g |
|---|---|
| rustg_cnoise_generate | This proc generates a cellular automata noise grid which can be used in procedural generation methods. |
This proc generates a cellular automata noise grid which can be used in procedural generation methods.
+Returns a single string that goes row by row, with values of 1 representing an alive cell, and a value of 0 representing a dead cell.
+Arguments:
+| SCREENTIP_CONTEXT_LMB | Context applied to LMB actions |
|---|---|
| SCREENTIP_CONTEXT_RMB | Context applied to RMB actions |
| SCREENTIP_CONTEXT_SHIFT_LMB | Context applied to Shift-LMB actions |
| SCREENTIP_CONTEXT_CTRL_LMB | Context applied to Ctrl-LMB actions |
| SCREENTIP_CONTEXT_CTRL_RMB | Context applied to Ctrl-RMB actions |
| SCREENTIP_CONTEXT_ALT_LMB | Context applied to Alt-LMB actions |
| SCREENTIP_CONTEXT_ALT_RMB | Context applied to Alt-RMB actions |
| SCREENTIP_CONTEXT_CTRL_SHIFT_LMB | Context applied to Ctrl-Shift-LMB actions |
| SCREENTIP_PREFERENCE_DISABLED | Screentips are always disabled |
| SCREENTIP_PREFERENCE_ENABLED | Screentips are always enabled |
| SCREENTIP_PREFERENCE_CONTEXT_ONLY | Screentips are only enabled when they have context |
| SCREENTIP_PREFERENCE_NO_CONTEXT | Screentips enabled, no context |
| INTENT_ANY | Regardless of intent |
Regardless of intent
Context applied to Alt-LMB actions
Context applied to Alt-RMB actions
Context applied to Ctrl-LMB actions
Context applied to Ctrl-RMB actions
Context applied to Ctrl-Shift-LMB actions
Context applied to LMB actions
Context applied to RMB actions
Context applied to Shift-LMB actions
Screentips are only enabled when they have context
Screentips are always disabled
Screentips are always enabled
Screentips enabled, no context
| SKILL_PROGRESSION_BINARY | true/false |
|---|---|
| SKILL_PROGRESSION_NUMERICAL | numerical |
| SKILL_PROGRESSION_ENUM | Enum |
| SKILL_PROGRESSION_LEVEL | Levels |
| SKILL_USE_TOOL | Items skill_traits and other defines |
| THRESHOLD_UNTRAINED | competency_threshold defines |
| STD_XP_LVL_UP | Level/Experience skills defines. |
| MODIFIER_SKILL_VALUE | Skill modifier defines and flags. |
| MODIFIER_SKILL_MULT | makes the skill modifier a multiplier, not an addendum. |
| MODIFIER_SKILL_VIRTUE | Sets the skill to the defined value if lower than that. Highly reccomended you don't use it with MODIFIER_SKILL_MULT. |
| MODIFIER_SKILL_HANDICAP | Does the opposite of the above. combining both effectively results in the skill being locked to the specified value. |
| MODIFIER_SKILL_BODYBOUND | Makes it untransferred by mind.transfer_to() |
| MODIFIER_SKILL_ORIGIN_DIFF | Adds the difference of the current value and the value stored at the time the modifier was added to the result. |
| MODIFIER_USE_THRESHOLDS | Will this skill use competency thresholds instead of preset values |
| MODIFIER_SKILL_PRIORITY_LOW | Ascending priority defines. |
| SKILL_UI_CAT_ENG | Categories of skills, these will be displayed alphabetically. |
Makes it untransferred by mind.transfer_to()
Does the opposite of the above. combining both effectively results in the skill being locked to the specified value.
makes the skill modifier a multiplier, not an addendum.
Adds the difference of the current value and the value stored at the time the modifier was added to the result.
Ascending priority defines.
Skill modifier defines and flags.
Sets the skill to the defined value if lower than that. Highly reccomended you don't use it with MODIFIER_SKILL_MULT.
Will this skill use competency thresholds instead of preset values
true/false
Enum
Levels
numerical
Categories of skills, these will be displayed alphabetically.
Items skill_traits and other defines
Level/Experience skills defines.
competency_threshold defines
| SANITIZE_SKILL_LEVEL | Doesn't automatically round the value. |
|---|---|
| GET_SKILL_MOD_ID | Simple generic identifier macro. |
| ADD_SKILL_MODIFIER_BODY | A simple universal comsig for body bound skill modifiers. +Technically they are still bound to the mind, but other signal procs will take care of adding and removing the modifier +from/to new/old minds. |
| REMOVE_SKILL_MODIFIER_BODY | Same as above but to remove the skill modifier. |
| ADD_SINGLETON_SKILL_MODIFIER | Macro used when adding generic singleton skill modifiers. |
Macro used when adding generic singleton skill modifiers.
A simple universal comsig for body bound skill modifiers. +Technically they are still bound to the mind, but other signal procs will take care of adding and removing the modifier +from/to new/old minds.
Simple generic identifier macro.
Same as above but to remove the skill modifier.
Doesn't automatically round the value.
| SOUND_RANGE | Default range of a sound. |
|---|---|
| SHORT_RANGE_SOUND_EXTRARANGE | default extra range for sounds considered to be quieter |
| SILENCED_SOUND_EXTRARANGE | The range deducted from sound range for things that are considered silent / sneaky |
| SOUND_DEFAULT_FALLOFF_DISTANCE | Percentage of sound's range where no falloff is applied |
| SOUND_FALLOFF_EXPONENT | The default exponent of sound falloff |
| SOUND_DEFAULT_DISTANCE_MULTIPLIER | Default distance multiplier for sounds |
| SOUND_DEFAULT_MULTIPLIER_EFFECT_RANGE | Default range at which sound distance multiplier applies |
| FALLOFF_SOUNDS | remove |
| ANNOUNCER_AIMALF | Announcer audio keys |
Announcer audio keys
remove
default extra range for sounds considered to be quieter
The range deducted from sound range for things that are considered silent / sneaky
Default distance multiplier for sounds
Percentage of sound's range where no falloff is applied
Default range at which sound distance multiplier applies
The default exponent of sound falloff
Default range of a sound.
| RETURN_TYPE | Sets a return type expression for a proc. The return type can take the forms: |
|---|---|
| SHOULD_CALL_PARENT | If set, will enable a diagnostic on children of the proc it is set on which do
+not contain any ..() parent calls. This can help with finding situations
+where a signal or other important handling in the parent proc is being skipped.
+Child procs may set this setting to 0 instead to override the check. |
| SHOULD_NOT_OVERRIDE | If set, raise a warning for any child procs that override this one,
+regardless of if it calls parent or not.
+This functions in a similar way to the final keyword in some languages.
+This cannot be disabled by child overrides. |
| SHOULD_NOT_SLEEP | If set, raise a warning if the proc or one of the sub-procs it calls
+uses a blocking call, such as sleep() or input() without using set waitfor = 0
+This cannot be disabled by child overrides. |
| SHOULD_BE_PURE | If set, ensure a proc is 'pure', such that it does not make any changes +outside itself or output. This also checks to make sure anything using +this proc doesn't invoke it without making use of the return value. +This cannot be disabled by child overrides. |
| PRIVATE_PROC | Private procs can only be called by things of exactly the same type. |
| PROTECTED_PROC | Protected procs can only be call by things of the same type or subtypes. |
| UNLINT | If set, will not lint. |
| VAR_FINAL | If set, overriding their value isn't permitted by types that inherit it. |
| VAR_PRIVATE | Private vars can only be called by things of exactly the same type. |
| VAR_PROTECTED | Protected vars can only be called by things of the same type or subtypes. |
Private procs can only be called by things of exactly the same type.
Protected procs can only be call by things of the same type or subtypes.
Sets a return type expression for a proc. The return type can take the forms:
+/typepath - a raw typepath. The return type of the proc is the type named.
param - a typepath given as a parameter, for procs which return an instance of the passed-in type.
param.type - the static type of a passed-in parameter, for procs which
+return their input or otherwise another value of the same type.
param[_].type - the static type of a passed-in parameter, with one level
+of /list stripped, for procs which select one item from a list. The [_]
+may be repeated to strip more levels of /list.
If set, ensure a proc is 'pure', such that it does not make any changes +outside itself or output. This also checks to make sure anything using +this proc doesn't invoke it without making use of the return value. +This cannot be disabled by child overrides.
If set, will enable a diagnostic on children of the proc it is set on which do
+not contain any ..() parent calls. This can help with finding situations
+where a signal or other important handling in the parent proc is being skipped.
+Child procs may set this setting to 0 instead to override the check.
If set, raise a warning for any child procs that override this one,
+regardless of if it calls parent or not.
+This functions in a similar way to the final keyword in some languages.
+This cannot be disabled by child overrides.
If set, raise a warning if the proc or one of the sub-procs it calls
+uses a blocking call, such as sleep() or input() without using set waitfor = 0
+This cannot be disabled by child overrides.
If set, will not lint.
If set, overriding their value isn't permitted by types that inherit it.
Private vars can only be called by things of exactly the same type.
Protected vars can only be called by things of the same type or subtypes.
| FUTURE_STATION_TRAITS_FILE | The data file that future station traits are stored in |
|---|
The data file that future station traits are stored in
| STATUS_EFFECT_STUN | The affected is unable to move, or to use, hold, or pickup items. |
|---|---|
| STATUS_EFFECT_DAZED | The affected is unable to use or pickup items |
| STATUS_EFFECT_STAGGERED | Blocks sprint |
| STATUS_EFFECT_OFF_BALANCE | shoves inflict this to indicate the next shove while this is in effect should disarm guns |
| IGNORE_STASIS | If the incapacitated status effect will ignore a mob in stasis (stasis beds) |
If the incapacitated status effect will ignore a mob in stasis (stasis beds)
The affected is unable to use or pickup items
shoves inflict this to indicate the next shove while this is in effect should disarm guns
Blocks sprint
The affected is unable to move, or to use, hold, or pickup items.
| STORAGE_LIMIT_MAX_ITEMS | Check max_items and contents.len when trying to insert |
|---|---|
| STORAGE_LIMIT_COMBINED_W_CLASS | Check max_combined_w_class. |
| STORAGE_LIMIT_VOLUME | Use the new volume system. Will automatically force rendering to use the new volume/baystation scaling UI so this is kind of incompatible with stuff like stack storage etc etc. |
| STORAGE_LIMIT_MAX_W_CLASS | Use max_w_class |
| VOLUMETRIC_STORAGE_BOX_ICON_SIZE | Size of volumetric box icon |
| VOLUMETRIC_STORAGE_BOX_BORDER_SIZE | Size of EACH left/right border icon for volumetric boxes |
| MINIMUM_PIXELS_PER_ITEM | Minimum pixels an item must have in volumetric scaled storage UI |
| MAXIMUM_VOLUMETRIC_ITEMS | Maximum number of objects that will be allowed to be displayed using the volumetric display system. Arbitrary number to prevent server lockups. |
| VOLUMETRIC_STORAGE_ITEM_PADDING | How much padding to give between items |
| VOLUMETRIC_STORAGE_EDGE_PADDING | How much padding to give to edges |
| WEIGHT_CLASS_TINY | Usually items smaller then a human hand, ex: Playing Cards, Lighter, Scalpel, Coins/Money |
| WEIGHT_CLASS_SMALL | Pockets can hold small and tiny items, ex: Flashlight, Multitool, Grenades, GPS Device |
| WEIGHT_CLASS_NORMAL | Standard backpacks can carry tiny, small & normal items, ex: Fire extinguisher, Stunbaton, Gas Mask, Metal Sheets |
| WEIGHT_CLASS_BULKY | Items that can be weilded or equipped but not stored in a normal bag, ex: Defibrillator, Backpack, Space Suits |
| WEIGHT_CLASS_HUGE | Usually represents objects that require two hands to operate, ex: Shotgun, Two Handed Melee Weapons - Can not fit in Boh |
| WEIGHT_CLASS_GIGANTIC | Essentially means it cannot be picked up or placed in an inventory, ex: Mech Parts, Safe - Can not fit in Boh |
Maximum number of objects that will be allowed to be displayed using the volumetric display system. Arbitrary number to prevent server lockups.
Minimum pixels an item must have in volumetric scaled storage UI
Check max_combined_w_class.
Check max_items and contents.len when trying to insert
Use max_w_class
Use the new volume system. Will automatically force rendering to use the new volume/baystation scaling UI so this is kind of incompatible with stuff like stack storage etc etc.
Size of EACH left/right border icon for volumetric boxes
Size of volumetric box icon
How much padding to give to edges
How much padding to give between items
Items that can be weilded or equipped but not stored in a normal bag, ex: Defibrillator, Backpack, Space Suits
Essentially means it cannot be picked up or placed in an inventory, ex: Mech Parts, Safe - Can not fit in Boh
Usually represents objects that require two hands to operate, ex: Shotgun, Two Handed Melee Weapons - Can not fit in Boh
Standard backpacks can carry tiny, small & normal items, ex: Fire extinguisher, Stunbaton, Gas Mask, Metal Sheets
Pockets can hold small and tiny items, ex: Flashlight, Multitool, Grenades, GPS Device
Usually items smaller then a human hand, ex: Playing Cards, Lighter, Scalpel, Coins/Money
| AUTO_SCALE_VOLUME | Macro for automatically getting the volume of an item from its w_class. |
|---|---|
| AUTO_SCALE_STORAGE_VOLUME | Macro for automatically getting the volume of a storage item from its max_w_class and max_combined_w_class. |
| ITEM_VOLUME_DISK | volume for a data disk |
| ITEM_VOLUME_STRIPPER_CLIP | volume for a shotgun stripper clip holding 4 shells |
Macro for automatically getting the volume of a storage item from its max_w_class and max_combined_w_class.
Macro for automatically getting the volume of an item from its w_class.
volume for a data disk
volume for a shotgun stripper clip holding 4 shells
| STRIPPABLE_OBSCURING_NONE | This slot is not obscured. |
|---|---|
| STRIPPABLE_OBSCURING_COMPLETELY | This slot is completely obscured, and cannot be accessed. |
| STRIPPABLE_OBSCURING_HIDDEN | This slot can't be seen, but can be accessed. |
This slot is completely obscured, and cannot be accessed.
This slot can't be seen, but can be accessed.
This slot is not obscured.
Defines for subsystems and overlays +Lots of important stuff in here, make sure you have your brain switched on +when editing this file +DB defines | |
| DB_MAJOR_VERSION | DB major schema version |
|---|---|
| DB_MINOR_VERSION | DB minor schema version |
Timing subsystem | |
| TIMER_UNIQUE | Don't run if there is an identical unique timer active |
| TIMER_OVERRIDE | For unique timers: Replace the old timer rather then not start this one |
| TIMER_CLIENT_TIME | Timing should be based on how timing progresses on clients, not the server. |
| TIMER_STOPPABLE | Timer can be stopped using deltimer() |
| TIMER_NO_HASH_WAIT | prevents distinguishing identical timers with the wait variable |
| TIMER_LOOP | Loops the timer repeatedly until qdeleted |
| TIMER_DELETE_ME | Delete the timer on parent datum Destroy() and when deltimer'd |
| TIMER_ID_NULL | Empty ID define |
Initialization subsystem | |
| INITIALIZATION_INSSATOMS | New should not call Initialize |
| INITIALIZATION_INNEW_MAPLOAD | New should call Initialize(TRUE) |
| INITIALIZATION_INNEW_REGULAR | New should call Initialize(FALSE) |
Initialization hints | |
| INITIALIZE_HINT_NORMAL | Nothing happens |
| INITIALIZE_HINT_LATELOAD | call LateInitialize at the end of all atom Initalization |
| INITIALIZE_HINT_QDEL | Call qdel on the atom after intialization |
| INITIALIZE_IMMEDIATE | type and all subtypes should always immediately call Initialize in New() |
| addtimer | Create a new timer and add it to the queue. |
DB major schema version
+Update this whenever the db schema changes
+make sure you add an update to the schema_version stable in the db changelog
DB minor schema version
+Update this whenever the db schema changes
+make sure you add an update to the schema_version stable in the db changelog
New should call Initialize(TRUE)
New should call Initialize(FALSE)
New should not call Initialize
call LateInitialize at the end of all atom Initalization
+The item will be added to the late_loaders list, this is iterated over after +initalization of subsystems is complete and calls LateInitalize on the atom +see this file for the LateIntialize proc
Nothing happens
Call qdel on the atom after intialization
type and all subtypes should always immediately call Initialize in New()
Timing should be based on how timing progresses on clients, not the server.
+Tracking this is more expensive, +should only be used in conjuction with things that have to progress client side, such as +animate() or sound()
Delete the timer on parent datum Destroy() and when deltimer'd
Empty ID define
Loops the timer repeatedly until qdeleted
+In most cases you want a subsystem instead, so don't use this unless you have a good reason
prevents distinguishing identical timers with the wait variable
+To be used with TIMER_UNIQUE
For unique timers: Replace the old timer rather then not start this one
Timer can be stopped using deltimer()
Don't run if there is an identical unique timer active
+if the arguments to addtimer are the same as an existing timer, it doesn't create a new timer, +and returns the id of the existing timer
Create a new timer and add it to the queue.
+| FOURSPACES | Does 4 spaces. Used as a makeshift tabulator. |
|---|---|
| MAPTEXT | Standard maptext +Prepares a text to be used for maptext. Use this so it doesn't look hideous. |
| MAPTEXT_PIXELLARI | Pixel-perfect scaled fonts for use in the MAP element as defined in skin.dmf |
| MAPTEXT_GRAND9K | Standard size (ie: normal runechat) - Size options: 6pt 12pt 18pt. |
| MAPTEXT_TINY_UNICODE | Small size. (ie: context subtooltips, spell delays) - Size options: 12pt 24pt. |
| MAPTEXT_SPESSFONT | Smallest size. (ie: whisper runechat) - Size options: 6pt 12pt 18pt. |
| MAPTEXT_VCR_OSD_MONO | Prepares a text to be used for maptext, using a variable size font. |
| WXH_TO_HEIGHT | Macro from Lummox used to get height from a MeasureText proc. +resolves the MeasureText() return value once, then resolves the height, then sets return_var to that. |
Does 4 spaces. Used as a makeshift tabulator.
Standard maptext +Prepares a text to be used for maptext. Use this so it doesn't look hideous.
Standard size (ie: normal runechat) - Size options: 6pt 12pt 18pt.
Pixel-perfect scaled fonts for use in the MAP element as defined in skin.dmf
+Four sizes to choose from, use the sizes as mentioned below. +Between the variations and a step there should be an option that fits your use case. +BYOND uses pt sizing, different than px used in TGUI. Using px will make it look blurry due to poor antialiasing.
+Default sizes are prefilled in the macro for ease of use and a consistent visual look. +To use a step other than the default in the macro, specify it in a span style. +For example: MAPTEXT_PIXELLARI("Some large maptext here") +Large size (ie: context tooltips) - Size options: 12pt 24pt.
Smallest size. (ie: whisper runechat) - Size options: 6pt 12pt 18pt.
Small size. (ie: context subtooltips, spell delays) - Size options: 12pt 24pt.
Prepares a text to be used for maptext, using a variable size font.
+More flexible but doesn't scale pixel perfect to BYOND icon resolutions. +(May be blurry.) Can use any size in pt or px.
+You MUST Specify the size when using the macro +For example: MAPTEXT_VCR_OSD_MONO("Some large maptext here") +Prepares a text to be used for maptext, using a variable size font. +Variable size font. More flexible but doesn't scale pixel perfect to BYOND icon resolutions. (May be blurry.) Can use any size in pt or px.
Macro from Lummox used to get height from a MeasureText proc. +resolves the MeasureText() return value once, then resolves the height, then sets return_var to that.
| TGS_FILE2TEXT_NATIVE | Consumers SHOULD create this define if you want to do TGS configuration outside of this file. |
|---|---|
| TGS_EVENT_REBOOT_MODE_CHANGE | Before a reboot mode change, extras parameters are the current and new reboot mode enums. |
| TGS_EVENT_PORT_SWAP | Before a port change is about to happen, extra parameters is new port. |
| TGS_EVENT_INSTANCE_RENAMED | Before the instance is renamed, extra parameter is the new name. |
| TGS_EVENT_WATCHDOG_REATTACH | After the watchdog reattaches to DD, extra parameter is the new /datum/tgs_version of the server. |
| TGS_EVENT_HEALTH_CHECK | When the watchdog sends a health check to DD. No parameters. |
| TGS_EVENT_REPO_RESET_ORIGIN | When the repository is reset to its origin reference. Parameters: Reference name, Commit SHA. |
| TGS_EVENT_REPO_CHECKOUT | When the repository performs a checkout. Parameters: Checkout git object. |
| TGS_EVENT_REPO_FETCH | When the repository performs a fetch operation. No parameters. |
| TGS_EVENT_REPO_MERGE_PULL_REQUEST | When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user. |
| TGS_EVENT_REPO_PRE_SYNCHRONIZE | Before the repository makes a sychronize operation. Parameters: Absolute repostiory path. |
| TGS_EVENT_ENGINE_INSTALL_START | Before a engine install operation begins. Parameters: Version string of the installing engine. |
| TGS_EVENT_ENGINE_INSTALL_FAIL | When a engine install operation fails. Parameters: Error message |
| TGS_EVENT_ENGINE_ACTIVE_VERSION_CHANGE | When the active engine version changes. Parameters: (Nullable) Version string of the current engine, version string of the new engine. |
| TGS_EVENT_COMPILE_START | When the compiler starts running. Parameters: Game directory path, origin commit SHA. |
| TGS_EVENT_COMPILE_CANCELLED | When a compile is cancelled. No parameters. |
| TGS_EVENT_COMPILE_FAILURE | When a compile fails. Parameters: Game directory path, [TRUE]/[FALSE] based on if the cause for failure was DMAPI validation. |
| TGS_EVENT_COMPILE_COMPLETE | When a compile operation completes. Note, this event fires before the new .dmb is loaded into the watchdog. Consider using the TGS_EVENT_DEPLOYMENT_COMPLETE instead. Parameters: Game directory path. |
| TGS_EVENT_INSTANCE_AUTO_UPDATE_START | When an automatic update for the current instance begins. No parameters. |
| TGS_EVENT_REPO_MERGE_CONFLICT | When the repository encounters a merge conflict: Parameters: Base SHA, target SHA, base reference, target reference. |
| TGS_EVENT_DEPLOYMENT_COMPLETE | When a deployment completes. No Parameters. |
| TGS_EVENT_WATCHDOG_SHUTDOWN | Before the watchdog shuts down. Not sent for graceful shutdowns. No parameters. |
| TGS_EVENT_WATCHDOG_DETACH | Before the watchdog detaches for a TGS update/restart. No parameters. |
| TGS_EVENT_WORLD_PRIME | Watchdog event when TgsInitializationComplete() is called. No parameters. |
| TGS_EVENT_REPO_SUBMODULE_UPDATE | After a single submodule update is performed. Parameters: Updated submodule name. |
| TGS_EVENT_PRE_DREAM_MAKER | After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, version string of the used engine. |
| TGS_EVENT_DEPLOYMENT_CLEANUP | Whenever a deployment folder is deleted from disk. Parameters: Game directory path. |
| TGS_REBOOT_MODE_NORMAL | The server will reboot normally. |
| TGS_REBOOT_MODE_SHUTDOWN | The server will stop running on reboot. |
| TGS_REBOOT_MODE_RESTART | The watchdog will restart on reboot. |
| TGS_SECURITY_TRUSTED | DreamDaemon Trusted security level. |
| TGS_SECURITY_SAFE | DreamDaemon Safe security level. |
| TGS_SECURITY_ULTRASAFE | DreamDaemon Ultrasafe security level. |
| TGS_VISIBILITY_PUBLIC | DreamDaemon public visibility level. |
| TGS_VISIBILITY_PRIVATE | DreamDaemon private visibility level. |
| TGS_VISIBILITY_INVISIBLE | DreamDaemon invisible visibility level. |
| TGS_ENGINE_TYPE_BYOND | The Build Your Own Net Dream engine. |
| TGS_ENGINE_TYPE_OPENDREAM | The OpenDream engine. |
| TGS_TOPIC | Consumers MUST run this macro at the start of [/world/proc/Topic]. |
| /datum/tgs_revision_information | Represents git revision information. |
| /datum/tgs_version | Represents a version. |
| /datum/tgs_revision_information/test_merge | Represents a merge of a GitHub pull request. |
| /datum/tgs_chat_channel | Represents a connected chat channel. |
| /datum/tgs_event_handler | User definable handler for TGS events This abstract version SHOULD be overridden to be used. |
| /datum/tgs_http_handler | User definable handler for HTTP calls. This abstract version MUST be overridden to be used. |
| /datum/tgs_http_result | Result of a /datum/tgs_http_handler call. MUST NOT be overridden. |
| /datum/tgs_chat_command | User definable chat command. This abstract version MUST be overridden to be used. |
| /datum/tgs_message_content | User definable chat message. MUST NOT be overridden. |
| /datum/tgs_chat_embed/structure | User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/message#embed-object for details. |
| /datum/tgs_chat_embed/media | Common datum for similar Discord embed medias. |
| /datum/tgs_chat_embed/footer | See https://discord.com/developers/docs/resources/message#embed-object-embed-footer-structure for details. |
| /datum/tgs_chat_embed/provider | See https://discord.com/developers/docs/resources/message#embed-object-embed-provider-structure for details. |
| /datum/tgs_chat_embed/provider/author | See https://discord.com/developers/docs/resources/message#embed-object-embed-author-structure for details. Must have name set in New(). |
| /datum/tgs_chat_embed/field | See https://discord.com/developers/docs/resources/message#embed-object-embed-field-structure for details. |
The Build Your Own Net Dream engine.
The OpenDream engine.
When a compile is cancelled. No parameters.
When a compile operation completes. Note, this event fires before the new .dmb is loaded into the watchdog. Consider using the TGS_EVENT_DEPLOYMENT_COMPLETE instead. Parameters: Game directory path.
When a compile fails. Parameters: Game directory path, [TRUE]/[FALSE] based on if the cause for failure was DMAPI validation.
When the compiler starts running. Parameters: Game directory path, origin commit SHA.
Whenever a deployment folder is deleted from disk. Parameters: Game directory path.
When a deployment completes. No Parameters.
When the active engine version changes. Parameters: (Nullable) Version string of the current engine, version string of the new engine.
When a engine install operation fails. Parameters: Error message
Before a engine install operation begins. Parameters: Version string of the installing engine.
When the watchdog sends a health check to DD. No parameters.
When an automatic update for the current instance begins. No parameters.
Before the instance is renamed, extra parameter is the new name.
Before a port change is about to happen, extra parameters is new port.
After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, version string of the used engine.
Before a reboot mode change, extras parameters are the current and new reboot mode enums.
When the repository performs a checkout. Parameters: Checkout git object.
When the repository performs a fetch operation. No parameters.
When the repository encounters a merge conflict: Parameters: Base SHA, target SHA, base reference, target reference.
When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user.
Before the repository makes a sychronize operation. Parameters: Absolute repostiory path.
When the repository is reset to its origin reference. Parameters: Reference name, Commit SHA.
After a single submodule update is performed. Parameters: Updated submodule name.
Before the watchdog detaches for a TGS update/restart. No parameters.
After the watchdog reattaches to DD, extra parameter is the new /datum/tgs_version of the server.
Before the watchdog shuts down. Not sent for graceful shutdowns. No parameters.
Watchdog event when TgsInitializationComplete() is called. No parameters.
Consumers SHOULD create this define if you want to do TGS configuration outside of this file.
The server will reboot normally.
The watchdog will restart on reboot.
The server will stop running on reboot.
DreamDaemon Safe security level.
DreamDaemon Trusted security level.
DreamDaemon Ultrasafe security level.
Consumers MUST run this macro at the start of [/world/proc/Topic].
DreamDaemon invisible visibility level.
DreamDaemon private visibility level.
DreamDaemon public visibility level.
| UI_INTERACTIVE | Green eye; fully interactive |
|---|---|
| UI_UPDATE | Orange eye; updates but is not interactive |
| UI_DISABLED | Red eye; disabled, does not update |
| UI_CLOSE | UI Should close |
| TGUI_WINDOW_SOFT_LIMIT | Maximum number of windows that can be suspended/reused |
| TGUI_WINDOW_HARD_LIMIT | Maximum number of open windows |
| TGUI_PING_TIMEOUT | Maximum ping timeout allowed to detect zombie windows |
| TGUI_WINDOW_CLOSED | Window does not exist |
| TGUI_WINDOW_LOADING | Window was just opened, but is still not ready to be sent data |
| TGUI_WINDOW_READY | Window is free and ready to receive data |
| TGUI_WINDOW_ID | Get a window id based on the provided pool index |
| TGUI_WINDOW_INDEX | Get a pool index of the provided window id |
| TGUI_CREATE_MESSAGE | Creates a message packet for sending via output() |
Creates a message packet for sending via output()
Maximum ping timeout allowed to detect zombie windows
Window does not exist
Maximum number of open windows
Get a window id based on the provided pool index
Get a pool index of the provided window id
Window was just opened, but is still not ready to be sent data
Window is free and ready to receive data
Maximum number of windows that can be suspended/reused
UI Should close
Red eye; disabled, does not update
Green eye; fully interactive
Orange eye; updates but is not interactive
| TRAIT_IMMOBILIZED | Prevents voluntary movement. |
|---|---|
| TRAIT_HANDS_BLOCKED | Prevents usage of manipulation appendages (picking, holding or using items, manipulating storage). |
| TRAIT_ANTIMAGIC_NO_SELFBLOCK | Like antimagic, but doesn't block the user from casting |
| TRAIT_XRAY_VISION | Gives us turf, mob and object vision through walls |
| TRAIT_THERMAL_VISION | Gives us mob vision through walls and slight night vision |
| TRAIT_MESON_VISION | Gives us turf vision through walls and slight night vision |
| TRAIT_TRUE_NIGHT_VISION | Gives us Night vision |
| TRAIT_REAGENT_SCANNER | Lets us scan reagents |
| TRAIT_NO_STAMINA_BUFFER_REGENERATION | Prevents stamina buffer regeneration |
| TRAIT_NO_STAMINA_REGENERATION | Prevents stamina regeneration |
| TRAIT_LIVING_NO_DENSITY | forces update_density to make us not dense |
| TRAIT_HUMAN_NO_RENDER | forces us to not render our overlays |
| TRAIT_BEING_CARRIED | Used for fireman carry to have mobe not be dropped when passing by a prone individual. |
| TRAIT_MOBILITY_NOMOVE | Disallow movement |
| TRAIT_MOBILITY_NOPICKUP | Disallow pickup |
| TRAIT_MOBILITY_NOUSE | Disallow item use |
| TRAIT_MOBILITY_NOREST | Disallow resting/unresting |
| TRAIT_COMBAT_MODE_LOCKED | COMBAT MODE/SPRINT MODE TRAITS +Prevents combat mode from being active. |
| TRAIT_SPRINT_LOCKED | Prevents sprinting from being active. |
| TRAIT_LAVA_IMMUNE | Weather immunities, also protect mobs inside them. |
| TRAIT_KEEP_TOGETHER | Used for managing KEEP_TOGETHER in [appearance_flags] |
| TURF_Z_TRANSPARENT_TRAIT | Turf trait for when a turf is transparent |
| ACTIVE_BLOCK_TRAIT | This trait is added by the active directional block system. |
| ACTIVE_PARRY_TRAIT | This trait is added by the parry system. |
| MAPPING_HELPER_TRAIT | obtained from mapping helper |
| MAFIA_TRAIT | Trait associated with mafia |
| STATION_TRAIT_BANANIUM_SHIPMENTS | Traits given by station traits |
| MOD_TRAIT | Trait applied by MODsuits. |
This trait is added by the active directional block system.
This trait is added by the parry system.
Trait associated with mafia
obtained from mapping helper
Trait applied by MODsuits.
Traits given by station traits
Like antimagic, but doesn't block the user from casting
Used for fireman carry to have mobe not be dropped when passing by a prone individual.
COMBAT MODE/SPRINT MODE TRAITS +Prevents combat mode from being active.
Prevents usage of manipulation appendages (picking, holding or using items, manipulating storage).
forces us to not render our overlays
Prevents voluntary movement.
Used for managing KEEP_TOGETHER in [appearance_flags]
Weather immunities, also protect mobs inside them.
forces update_density to make us not dense
Gives us turf vision through walls and slight night vision
Disallow movement
Disallow pickup
Disallow resting/unresting
Disallow item use
Prevents stamina buffer regeneration
Prevents stamina regeneration
Lets us scan reagents
Prevents sprinting from being active.
Gives us mob vision through walls and slight night vision
Gives us Night vision
Gives us turf, mob and object vision through walls
Turf trait for when a turf is transparent
| ITEM_SCALING_TRAIT | From the item_scaling element |
|---|
From the item_scaling element
| UPLINK_TRAITORS | This item is purchasable to traitors |
|---|---|
| UPLINK_NUKE_OPS | This item is purchasable to nuke ops |
| UPLINK_CLOWN_OPS | This item is purchasable to clown ops |
This item is purchasable to clown ops
This item is purchasable to nuke ops
This item is purchasable to traitors
| VEHICLE_CONTROL_DRIVE | controls the vehicles movement |
|---|---|
| VEHICLE_CONTROL_KIDNAPPED | Can't leave vehicle voluntarily, has to resist. |
| VEHICLE_CONTROL_MELEE | melee attacks/shoves a vehicle may have |
| VEHICLE_CONTROL_EQUIPMENT | using equipment/weapons on the vehicle |
| VEHICLE_CONTROL_SETTINGS | changing around settings and the like. |
| FULL_MECHA_CONTROL | ez define for giving a single pilot mech all the flags it needs. |
| CAN_KIDNAP | Will this car kidnap people by ramming into them? |
Will this car kidnap people by ramming into them?
ez define for giving a single pilot mech all the flags it needs.
controls the vehicles movement
using equipment/weapons on the vehicle
Can't leave vehicle voluntarily, has to resist.
melee attacks/shoves a vehicle may have
changing around settings and the like.
| SMELLABLE | Can be smelled? |
|---|---|
| ABSORBABLE | Can get absorbed? |
| MOBVORE | Can get simplemob vored? |
| MAX_VORE_FLAG | Change this whenever you add a vore flag, must be largest vore flag*2-1 |
Can get absorbed?
Change this whenever you add a vore flag, must be largest vore flag*2-1
Can get simplemob vored?
Can be smelled?
| WOUND_MINIMUM_DAMAGE | an attack must do this much damage after armor in order to roll for being a wound (incremental pressure damage need not apply) |
|---|---|
| DISMEMBER_MINIMUM_DAMAGE | an attack must do this much damage after armor in order to be eliigible to dismember a suitably mushed bodypart |
| WOUND_MAX_CONSIDERED_DAMAGE | any damage dealt over this is ignored for damage rolls unless the target has the frail quirk (35^1.4=145) |
| WOUND_BLUNT | any brute weapon/attack that doesn't have sharpness. rolls for blunt bone wounds |
| WOUND_SLASH | any brute weapon/attack with sharpness = SHARP_EDGED. rolls for slash wounds |
| WOUND_PIERCE | any brute weapon/attack with sharpness = SHARP_POINTY. rolls for piercing wounds |
| WOUND_BURN | any concentrated burn attack (lasers really). rolls for burning wounds |
| WOUND_DETERMINATION_MAX | the max amount of determination you can have |
| CANT_WOUND | set wound_bonus on an item or attack to this to disable checking wounding for the attack |
| WOUND_INFECTION_MODERATE | below this has no ill effects from infection |
| WOUND_INFECTION_SEVERE | then below here, you ooze some pus and suffer minor tox damage, but nothing serious |
| WOUND_INFECTION_CRITICAL | then below here, your limb occasionally locks up from damage and infection and briefly becomes disabled. Things are getting really bad |
| WOUND_INFECTION_SEPTIC | below here, your skin is almost entirely falling off and your limb locks up more frequently. You are within a stone's throw of septic paralysis and losing the limb |
| WOUND_BURN_SANITIZATION_RATE | how quickly sanitization removes infestation and decays per tick |
| WOUND_SLASH_MAX_BLOODFLOW | how much blood you can lose per tick per slash max. 8 is a LOT of blood for one cut so don't worry about hitting it easily |
| WOUND_SLASH_DEAD_CLOT_MIN | dead people don't bleed, but they can clot! this is the minimum amount of clotting per tick on dead people, so even critical cuts will slowly clot in dead people |
| WOUND_BONE_HEAD_TIME_VARIANCE | if we suffer a bone wound to the head that creates brain traumas, the timer for the trauma cycle is +/- by this percent (0-100) |
| SCAR_SAVE_VERS | The version number of the scar we're saving |
| SCAR_SAVE_ZONE | The body_zone we're applying to on granting |
| SCAR_SAVE_DESC | The description we're loading |
| SCAR_SAVE_PRECISE_LOCATION | The precise location we're loading |
| SCAR_SAVE_SEVERITY | The severity the scar had |
| SCAR_SAVE_LENGTH | how many fields there are above (NOT INCLUDING THIS OBVIOUSLY) |
| SCAR_CURRENT_VERSION | saved scars with a version lower than this will be discarded |
| BIO_INORGANIC | golems and androids, cannot suffer any wounds |
| BIO_JUST_BONE | skeletons and plasmemes, can only suffer bone wounds, only needs mangled bone to be able to dismember |
| BIO_JUST_FLESH | nothing right now, maybe slimepeople in the future, can only suffer slashing, piercing, and burn wounds |
| BIO_FLESH_BONE | standard humanoids, can suffer all wounds, needs mangled bone and flesh to dismember |
| FLESH_WOUND | If this wound requires having the HAS_FLESH flag for humanoids |
| BONE_WOUND | If this wound requires having the HAS_BONE flag for humanaoids |
| MANGLES_FLESH | If having this wound counts as mangled flesh for dismemberment |
| MANGLES_BONE | If having this wound counts as mangled bone for dismemberment |
| ACCEPTS_GAUZE | If this wound marks the limb as being allowed to have gauze applied |
If this wound marks the limb as being allowed to have gauze applied
standard humanoids, can suffer all wounds, needs mangled bone and flesh to dismember
golems and androids, cannot suffer any wounds
skeletons and plasmemes, can only suffer bone wounds, only needs mangled bone to be able to dismember
nothing right now, maybe slimepeople in the future, can only suffer slashing, piercing, and burn wounds
If this wound requires having the HAS_BONE flag for humanaoids
set wound_bonus on an item or attack to this to disable checking wounding for the attack
an attack must do this much damage after armor in order to be eliigible to dismember a suitably mushed bodypart
If this wound requires having the HAS_FLESH flag for humanoids
If having this wound counts as mangled bone for dismemberment
If having this wound counts as mangled flesh for dismemberment
saved scars with a version lower than this will be discarded
The description we're loading
how many fields there are above (NOT INCLUDING THIS OBVIOUSLY)
The precise location we're loading
The severity the scar had
The version number of the scar we're saving
The body_zone we're applying to on granting
any brute weapon/attack that doesn't have sharpness. rolls for blunt bone wounds
if we suffer a bone wound to the head that creates brain traumas, the timer for the trauma cycle is +/- by this percent (0-100)
any concentrated burn attack (lasers really). rolls for burning wounds
how quickly sanitization removes infestation and decays per tick
the max amount of determination you can have
then below here, your limb occasionally locks up from damage and infection and briefly becomes disabled. Things are getting really bad
below this has no ill effects from infection
below here, your skin is almost entirely falling off and your limb locks up more frequently. You are within a stone's throw of septic paralysis and losing the limb
then below here, you ooze some pus and suffer minor tox damage, but nothing serious
any damage dealt over this is ignored for damage rolls unless the target has the frail quirk (35^1.4=145)
an attack must do this much damage after armor in order to roll for being a wound (incremental pressure damage need not apply)
any brute weapon/attack with sharpness = SHARP_POINTY. rolls for piercing wounds
any brute weapon/attack with sharpness = SHARP_EDGED. rolls for slash wounds
dead people don't bleed, but they can clot! this is the minimum amount of clotting per tick on dead people, so even critical cuts will slowly clot in dead people
how much blood you can lose per tick per slash max. 8 is a LOT of blood for one cut so don't worry about hitting it easily
| LIST_VALUE_WRAP_LISTS | If value is a list, wrap it in a list so it can be used with list add/remove operations |
|---|---|
| UNTYPED_LIST_ADD | Add an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun |
| UNTYPED_LIST_REMOVE | Remove an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun |
| LAZYLISTDUPLICATE | Like LAZYCOPY - copies an input list if the list has entries, If it doesn't the assigned list is nulled |
| LAZYACCESS | returns L[I] if L exists and I is a valid index of L, runtimes if L is not a list |
| LAZYADDASSOCLIST | This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects) |
| LAZYADDASSOC | This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects) |
| LAZYORASSOCLIST | Performs an insertion on the given lazy list with the given key and value. If the value already exists, a new one will not be made. |
| COMPARE_KEY | Passed into BINARY_INSERT to compare keys |
| COMPARE_VALUE | Passed into BINARY_INSERT to compare values |
| BINARY_INSERT | Binary search sorted insert +INPUT: Object to be inserted +LIST: List to insert object into +TYPECONT: The typepath of the contents of the list +COMPARE: The object to compare against, usualy the same as INPUT +COMPARISON: The variable on the objects to compare +COMPTYPE: How should the values be compared? Either COMPARE_KEY or COMPARE_VALUE. |
| /proc/english_list_assoc | English_list but associative supporting. Higher overhead. +@depricated |
| /proc/listgetindex | @depricated |
| /proc/safepick | @depricated |
| /proc/isemptylist | @depricated |
| /proc/typecacheof | Like typesof() or subtypesof(), but returns a typecache instead of a list |
| /proc/pick_n_take | Pick a random element from the list and remove it from the list. |
| /proc/find_record | Returns datum/data/record |
Binary search sorted insert +INPUT: Object to be inserted +LIST: List to insert object into +TYPECONT: The typepath of the contents of the list +COMPARE: The object to compare against, usualy the same as INPUT +COMPARISON: The variable on the objects to compare +COMPTYPE: How should the values be compared? Either COMPARE_KEY or COMPARE_VALUE.
Passed into BINARY_INSERT to compare keys
Passed into BINARY_INSERT to compare values
returns L[I] if L exists and I is a valid index of L, runtimes if L is not a list
This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects)
This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects)
Like LAZYCOPY - copies an input list if the list has entries, If it doesn't the assigned list is nulled
Performs an insertion on the given lazy list with the given key and value. If the value already exists, a new one will not be made.
If value is a list, wrap it in a list so it can be used with list add/remove operations
Add an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun
Remove an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun
| /proc/log_suspicious_login | Writes to a special log file if the log_suspicious_login config flag is set, +which is intended to contain all logins that failed under suspicious circumstances. |
|---|---|
| /proc/log_tgui | Appends a tgui-related log entry. All arguments are optional. |
| /proc/get_base_area | Returns the base area the target is located in if there is one. +Alternatively, returns the area as is. |
|---|---|
| /proc/get_sub_areas | Returns either null, or a list containing every sub area associated with our base area. +If include_base is TRUE, the base area will also be added to the return list. |
| /proc/get_sub_areas_turfs | Proc used for purposes similar to get_areas_turfs(), but aimed to include associated areas. +Only accepts area instances and paths for the first arg, no text strings. +Returns a list of all turfs found in the sub areas (including the base's if include_base is TRUE) +and located in a z level matching target_z, or anywhere if target_z is 0 |
| /proc/get_sub_areas_contents | Simple proc that returns a sum of all contents from every sub area, +Think of the above but for all contents, not just turfs, and without target z. |
| /proc/send2chat | Sends a message to TGS chat channels. |
|---|---|
| /proc/send2adminchat | Sends a message to TGS admin chat channels. |
| /proc/is_guest_key | Returns whether or not a player is a guest using their ckey as an input |
|---|
| /proc/md5filepath | Returns the md5 of a file at a given path. |
|---|---|
| /proc/md5asfile | Save file as an external file then md5 it. +Used because md5ing files stored in the rsc sometimes gives incorrect md5 results. |
| GET_ERROR_ROOM | Returns either the error landmark or the location of the room. Needless to say, if this is used, it means things have gone awry. |
|---|---|
| /proc/get_bbox_of_atoms | Get a bounding box of a list of atoms. |
| /proc/recursive_organ_check | |
| /proc/remove_image_from_client | Removes an image from a client's .images. Useful as a callback. |
| /proc/announce_arrival | Send a message in common radio when a player arrives |
Returns either the error landmark or the location of the room. Needless to say, if this is used, it means things have gone awry.
| /proc/make_datum_references_lists | Initial Building |
|---|
| /proc/generate_asset_name | Generate a filename for this asset +The same asset will always lead to the same asset name +(Generated names do not include file extention.) |
|---|---|
| /proc/icon2base64 | Converts an icon to base64. Operates by putting the icon in the iconCache savefile, +exporting it as text, and then parsing the base64 from that. +(This relies on byond automatically storing icons in savefiles as base64) |
| /proc/emissive_appearance | Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the EMISSIVE_COLOR. |
|---|
| /proc/color_matrix_saturation_percent | Exxagerates or removes colors |
|---|---|
| /proc/color_matrix_contrast_percent | Exxagerates or removes brightness |
| /proc/color_matrix_rotation | Moves all colors angle degrees around the color wheel while maintaining intensity of the color and not affecting whites +TODO: Need a version that only affects one color (ie shift red to blue but leave greens and blues alone) |
| /proc/color_matrix_hsv | Builds a color matrix that transforms the hue, saturation, and value, all in one operation. |
| /proc/rgb_construct_color_matrix | Assembles a color matrix, defaulting to identity |
| /proc/rgba_construct_color_matrix | Assembles a color matrix, defaulting to identity |
| /proc/transform_matrix_construct | constructs a transform matrix, defaulting to identity |
|---|
| GET_CLIENT | Gets the client of the mob, allowing for mocking of the client. +You only need to use this if you know you're going to be mocking clients somewhere else. |
|---|
Gets the client of the mob, allowing for mocking of the client. +You only need to use this if you know you're going to be mocking clients somewhere else.
| NAMEOF | NAMEOF: Compile time checked variable name to string conversion +evaluates to a string equal to "X", but compile errors if X isn't a var on datum. +datum may be null, but it does need to be a typed var. |
|---|
NAMEOF: Compile time checked variable name to string conversion +evaluates to a string equal to "X", but compile errors if X isn't a var on datum. +datum may be null, but it does need to be a typed var.
| /proc/get_path_to | This file contains the stuff you need for using JPS (Jump Point Search) pathing, an alternative to A* that skips +over large numbers of uninteresting tiles resulting in much quicker pathfinding solutions. Mind that diagonals +cost the same as cardinal moves currently, so paths may look a bit strange, but should still be optimal. |
|---|---|
| CAN_STEP | A helper macro to see if it's possible to step from the first turf into the second one, minding things like door access and directional windows. +Note that this can only be used inside the [datum/pathfind][pathfind datum] since it uses variables from said datum. +If you really want to optimize things, optimize this, cuz this gets called a lot. |
| STEP_NOT_HERE_BUT_THERE | Another helper macro for JPS, for telling when a node has forced neighbors that need expanding |
| /datum/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 |
| /proc/HeapPathWeightCompare | TODO: Macro this to reduce proc overhead |
| /datum/pathfind | The datum used to handle the JPS pathfinding, completely self-contained |
A helper macro to see if it's possible to step from the first turf into the second one, minding things like door access and directional windows. +Note that this can only be used inside the [datum/pathfind][pathfind datum] since it uses variables from said datum. +If you really want to optimize things, optimize this, cuz this gets called a lot.
Another helper macro for JPS, for telling when a node has forced neighbors that need expanding
| /proc/call_emergency_meeting | Summon the crew for an emergency meeting |
|---|
| /proc/sanitize_frequency | Ensure the frequency is within bounds of what it should be sending/receiving at |
|---|---|
| /proc/format_frequency | Format frequency by moving the decimal. |
| /proc/unformat_frequency | Opposite of format, returns as a number |
| /proc/return_unused_frequency | returns a random unused frequency between MIN_FREE_FREQ & MAX_FREE_FREQ if free = TRUE, and MIN_FREQ & MAX_FREQ if FALSE |
| /proc/sanitize_hexcolor | Sanitizes a hexadecimal color. Always outputs lowercase. |
|---|---|
| /proc/sanitize_ooccolor | Makes sure the input color is text with a # at the start followed by 6 hexadecimal characters. Examples: "#ff1234", "#A38321", COLOR_GREEN_GRAY |
| /proc/screen_loc_to_offset | Takes a screen loc string in the format +"+-left-offset:+-pixel,+-bottom-offset:+-pixel" +Where the :pixel is optional, and returns +A list in the format (x_offset, y_offset) +We require context to get info out of screen locs that contain relative info, so NORTH, SOUTH, etc |
|---|---|
| /proc/offset_to_screen_loc | Takes a list in the form (x_offset, y_offset) +And converts it to a screen loc string +Accepts an optional view string/size to force the screen_loc around, so it can't go out of scope |
| /proc/get_valid_screen_location | Returns a valid location to place a screen object without overflowing the viewport |
| /proc/cut_relative_direction | Takes a screen_loc string and cut out any directions like NORTH or SOUTH |
| /proc/stripped_multiline_input_or_reflect | stripped_multiline_input but reflects to the user instead if it's too big and returns null. |
|---|---|
| /proc/scramble_message_replace_chars | Slightly expensive proc to scramble a message using equal probabilities of character replacement from a list. DOES NOT SUPPORT HTML! |
| /proc/sanitize_css_class_name | Removes all non-alphanumerics from the text, keep in mind this can lead to id conflicts |
| /proc/zone2body_parts_covered | For finding out what body parts a body zone covers, the inverse of the below basically |
|---|---|
| /proc/url2htmlloader | Return html to load a url. +for use inside of browse() calls to html assets that might be loaded on a cdn. |
| /proc/get_atom_on_turf | Returns the top-most atom sitting on the turf. +For example, using this on a disk, which is in a bag, on a mob, +will return the mob because it's on the turf. |
|---|---|
| /proc/get_ranged_target_turf_direct | Get ranged target turf, but with direct targets as opposed to directions |
| /proc/parse_caught_click_modifiers | Returns a turf based on text inputs, original turf and viewing client |
| /proc/valid_window_location | Checks whether the target turf is in a valid state to accept a directional window +or other directional pseudo-dense object such as railings. |
| /proc/___TraitAdd | DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback. |
| /proc/___TraitRemove | DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback. |
| /proc/add_verb | handles adding verbs and updating the stat panel browser |
|---|---|
| /proc/remove_verb | handles removing verb and sending it to browser to update, use this for removing verbs |
| /proc/view_to_pixels | Takes a string or num view, and converts it to pixel width/height in a list(pixel_width, pixel_height) |
|---|
| IS_WEAKREF_OF | Checks if potential_weakref is a weakref of thing. |
|---|
Checks if potential_weakref is a weakref of thing.
| PROC_REF | Call by name proc reference, checks if the proc exists on this type or as a global proc |
|---|---|
| VERB_REF | Call by name verb references, checks if the verb exists on either this type or as a global verb. |
| TYPE_PROC_REF | Call by name proc reference, checks if the proc exists on given type or as a global proc |
| TYPE_VERB_REF | Call by name verb reference, checks if the verb exists on either the given type or as a global verb |
| GLOBAL_PROC_REF | Call by name proc reference, checks if the proc is existing global proc |
Call by name proc reference, checks if the proc is existing global proc
Call by name proc reference, checks if the proc exists on this type or as a global proc
Call by name proc reference, checks if the proc exists on given type or as a global proc
Call by name verb reference, checks if the verb exists on either the given type or as a global verb
Call by name verb references, checks if the verb exists on either this type or as a global verb.
| /datum/bitfield | Specifies a bitfield for smarter debugging |
|---|---|
| /proc/generate_bitfields | Turns /datum/bitfield subtypes into a list for use in debugging |
| /proc/init_keybindings | Creates and sorts all the keybinding datums |
|---|---|
| /proc/add_keybinding | Adds an instanced keybinding to the global tracker |
| /proc/single_path_typecache_immutable | Makes a typecache of a single typecache |
|---|
| /atom/movable/screen/action_landing | Exists so you have a place to put your buttons when you move them around |
|---|
| /atom/movable/screen/alert/give/secret_handshake | Families handshakes |
|---|
| /atom/movable/screen/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". |
|---|---|
| /atom/movable/screen/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. |
| /atom/movable/screen/lobby/button/character_setup | Prefs menu |
|---|---|
| /atom/movable/screen/lobby/button/ready | Button that appears before the game has started |
| /atom/movable/screen/lobby/button/join | Shown when the game has started |
| /atom/movable/screen/plane_master/openspace | Things rendered on "openspace"; holes in multi-z |
|---|---|
| /atom/movable/screen/plane_master/floor | Contains just the floor |
| /atom/movable/screen/plane_master/game_world | Contains most things in the game world |
| /atom/movable/screen/plane_master/field_of_vision | Contains all shadow cone masks, whose image overrides are displayed only to their respective owners. |
| /atom/movable/screen/plane_master/field_of_vision_blocker | Used to display the owner and its adjacent surroundings through the FoV plane mask. |
| /atom/movable/screen/plane_master/field_of_vision_visual | Stores the visible portion of the FoV shadow cone. |
| /atom/movable/screen/plane_master/lighting | Contains all lighting objects |
This system works by exploiting BYONDs color matrix filter to use layers to handle emissive blockers. +Emissive overlays are pasted with an atom color that converts them to be entirely some specific color. +Emissive blockers are pasted with an atom color that converts them to be entirely some different color. +Emissive overlays and emissive blockers are put onto the same plane. +The layers for the emissive overlays and emissive blockers cause them to mask eachother similar to normal BYOND objects. +A color matrix filter is applied to the emissive plane to mask out anything that isn't whatever the emissive color is. +This is then used to alpha mask the lighting plane. | |
| /atom/movable/screen/plane_master/emissive | Handles emissive overlays and emissive blockers. |
| /atom/movable/screen/plane_master/parallax | Contains space parallax |
| /atom | The base type for nearly all physical objects in SS13 |
|---|
| /datum/parallax | Holds parallax information. |
|---|
| /datum/parallax_holder | Holds all the information about a client's parallax |
|---|
| /datum/config_entry/str_list | List config entry, used for configuring a list of strings |
|---|
| /datum/config_entry/keyed_list/cross_server_bunker_override | cit config |
|---|
| /datum/config_entry/number/turf_dirt_threshold | Amount of dirtyness tiles need to spawn dirt. |
|---|---|
| /datum/config_entry/number/dirt_alpha_starting | Alpha dirt starts at |
| /datum/config_entry/number/turf_dirty_multiplier | Dirtyness multiplier for making turfs dirty |
| /datum/config_entry/number/initial_gear_points | Initial loadout points |
|---|---|
| /datum/config_entry/flag/use_field_of_vision | Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh. +Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best. |
| /datum/config_entry/flag/log_ooc | log OOC channel |
|---|---|
| /datum/config_entry/flag/log_access | log login/logout |
| /datum/config_entry/flag/log_suspicious_login | Config entry which special logging of failed logins under suspicious circumstances. |
| /datum/config_entry/flag/log_say | log client say |
| /datum/config_entry/flag/log_admin | log admin actions |
| /datum/config_entry/flag/log_prayer | log prayers |
| /datum/config_entry/flag/log_law | log lawchanges |
| /datum/config_entry/flag/log_game | log game events |
| /datum/config_entry/flag/log_mecha | log mech data |
| /datum/config_entry/flag/log_virus | log virology data |
| /datum/config_entry/flag/log_vote | log voting |
| /datum/config_entry/flag/log_craft | log crafting |
| /datum/config_entry/flag/log_whisper | log client whisper |
| /datum/config_entry/flag/log_attack | log attack messages |
| /datum/config_entry/flag/log_victim | log attack messages |
| /datum/config_entry/flag/log_emote | log emotes |
| /datum/config_entry/flag/log_adminchat | log admin chat messages |
| /datum/config_entry/flag/log_shuttle | log shuttle related actions, ie shuttle computers, shuttle manipulator, emergency console |
| /datum/config_entry/flag/log_pda | log pda messages |
| /datum/config_entry/flag/log_telecomms | log telecomms messages |
| /datum/config_entry/flag/log_econ | log economy |
| /datum/config_entry/flag/log_twitter | log certain expliotable parrots and other such fun things in a JSON file of twitter valid phrases. |
| /datum/config_entry/flag/log_world_topic | log all world.Topic() calls |
| /datum/config_entry/flag/log_manifest | log crew manifest to seperate file |
| /datum/config_entry/flag/log_job_debug | log roundstart divide occupations debug information to a file |
| /datum/config_entry/flag/log_pictures | log photos taken by players with a camera |
| /datum/config_entry/flag/picture_logging_camera | This is... shitcode, literally same as above, if one of them is inactive, won't log at all, PLEASE FUCKING REMOVE THIS. |
| /datum/config_entry/flag/emergency_tgui_logging | forces log_href for tgui |
| /datum/config_entry/number/error_cooldown | The "cooldown" time for each occurrence of a unique error |
| /datum/config_entry/number/error_limit | How many occurrences before the next will silence them |
| /datum/config_entry/number/error_silence_time | How long a unique error will be silenced for |
| /datum/config_entry/number/error_msg_delay | How long to wait between messaging admins about occurrences of a unique error |
| /datum/config_entry/number/outdated_movedelay | Outdated move delay |
|---|
| /datum/config_entry/flag/persistent_debris | Whether or not to use the persistence system for cleanable objects |
|---|---|
| /datum/config_entry/flag/persistent_debris_only | Whether or not to nuke all roundstart debris that isn't due to persistence if the above is true |
| /datum/config_entry/number/persistent_debris_global_max | Max amount of objects to store, total |
| /datum/config_entry/number/persistent_debris_type_max | Max amount of objects to store per type |
| /datum/config_entry/flag/persistent_debris_wipe_on_nuke | Wipe dirty stuff on nuke |
| /datum/config_entry/number/defib_cmd_time_limit | Seconds for CMD on defib-with-memory-loss policy config to display instead of defib-intact config |
|---|
| /datum/config_entry/flag/respawns_enabled | Allows usage of respawn system |
|---|---|
| /datum/config_entry/number/respawn_delay | Minutes before allowing respawns. |
| /datum/config_entry/number/respawn_delay_cryo | Minutes before allowing respawn, if user cryo'd. |
| /datum/config_entry/flag/allow_non_assistant_respawn | Allows respawning as non-assistant. Overrides all others of this type. |
| /datum/config_entry/flag/allow_combat_role_respawn | Allows respawning as a combat role, defined as security/head. |
| /datum/config_entry/flag/allow_same_character_respawn | Allows respawning as the same character as a previous life |
| /datum/config_entry/flag/respawn_penalty_includes_observe | Observing penalizes for respawns, not just joining. |
| /datum/config_entry/number/respawn_minimum_delay_roundstart | Minutes from roundstart before someone can respawn |
| /datum/config_entry/keyed_list/respawn_chaos_gamemodes | Gamemode config tags that are banned from respawning |
| /datum/config_entry/number/stamina_combat/buffer_max | Maximum stamina buffer |
|---|---|
| /datum/config_entry/number/stamina_combat/out_of_combat_timer | Seconds until percent_regeneration_out_of_combat kicks in |
| /datum/config_entry/number/stamina_combat/base_regeneration | Base regeneration per second |
| /datum/config_entry/number/stamina_combat/percent_regeneration_out_of_combat | After out_of_combat_timer elapses, additionally regenerate this percent of total stamina per second. Unaffected by combat mode. |
| /datum/config_entry/number/stamina_combat/post_action_penalty_delay | Seconds after an action for which your regeneration is penalized |
| /datum/config_entry/number/stamina_combat/post_action_penalty_factor | Factor to multiply by for penalizing post-action-stamina-regen |
| /datum/config_entry/number/stamina_combat/overdraw_penalty_factor | Factor to multiply by for stamina usage past buffer into health |
| /datum/config_entry/number/vote_autotransfer_initial | Length of time before the first autotransfer vote is called (deciseconds, default 2 hours) +Set to 0 to disable the subsystem altogether. |
|---|---|
| /datum/config_entry/number/vote_autotransfer_interval | length of time to wait before subsequent autotransfer votes (deciseconds, default 30 minutes) |
| /datum/config_entry/number/vote_autotransfer_maximum | maximum extensions until the round autoends. +Set to 0 to force automatic crew transfer after the 'vote_autotransfer_initial' elapsed. +Set to -1 to disable the maximum extensions cap. |
| /var/Failsafe | Failsafe |
|---|---|
| /proc/recover_all_SS_and_recreate_master | Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars |
| /proc/delete_all_SS_and_recreate_master | Delete all existing SS to basically start over |
| /proc/callHook | @file hooks.dm +Implements hooks, a simple way to run code on pre-defined events. |
|---|
| /var/Master | StonedMC |
|---|
| /datum/controller/subsystem | Defines a subsystem to be managed by the Master Controller |
|---|
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Debugging GC issues+In order to debug First is a verb called "Find References", which lists every refererence to an object in the world. This allows you to track down any indirect or obfuscated references that you might have missed. +Complementing this is another verb, "qdel() then Find References".
+This does exactly what you'd expect; it calls If you have a datum or something you are not destroying directly (say via the singulo),
+the next tool is Finally is a verb, "Show qdel() Log", which shows the deletion log that the garbage subsystem keeps. This is helpful if you are having race conditions or need to review the order of deletions. +Note that for any of these tools to work | |
| /datum/qdel_item | Qdel Item: Holds statistics on each type that passes thru qdel |
|---|---|
| /proc/qdel | Should be treated as a replacement for the 'del' keyword. |
| TRACK_NAME | Name of the track |
|---|---|
| TRACK_LENGTH | Length of the track (in deciseconds) |
| TRACK_BEAT | BPM of the track (in deciseconds) |
| TRACK_ID | Unique code-facing identifier for this track |
BPM of the track (in deciseconds)
Unique code-facing identifier for this track
Length of the track (in deciseconds)
Name of the track
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. +These materials call on_applied() on whatever item they are applied to, common effects are adding components, changing color and changing description. This allows us to differentiate items based on the material they are made out of.area |
| /proc/overlays2text | Converts an overlay list into text for debug printing +Of note: overlays aren't actually mutable appearances, they're just appearances +Don't have access to that type tho, so this is the best you're gonna get |
|---|---|
| /proc/realize_appearance_queue | Takes a list of appearnces, makes them mutable so they can be properly vv'd and inspected |
| /proc/diff_appearances | Takes two appearances as args, prints out, logs, and returns a text representation of their differences +Including suboverlays |
| /datum/controller/subsystem/persistence | Persistence for cleanable debris. |
|---|
| BUCKET_LEN | Controls how many buckets should be kept, each representing a tick. (30 seconds worth) |
|---|---|
| BUCKET_POS | Helper for getting the correct bucket for a given chatmessage |
| BUCKET_LIMIT | Gets the maximum time at which messages will be handled in buckets, used for deferring to secondary queue |
| /var/SSrunechat |
Controls how many buckets should be kept, each representing a tick. (30 seconds worth)
Gets the maximum time at which messages will be handled in buckets, used for deferring to secondary queue
Helper for getting the correct bucket for a given chatmessage
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
| /var/SStgui | tgui subsystem |
|---|---|
| BUCKET_LEN | Controls how many buckets should be kept, each representing a tick. (1 minutes worth) |
|---|---|
| BUCKET_POS | Helper for getting the correct bucket for a given timer |
| TIMER_MAX | Gets the maximum time at which timers will be invoked from buckets, used for deferring to secondary queue |
| TIMER_ID_MAX | Max float with integer precision |
| /var/SStimer | |
| /datum/timedevent | This is the actual timer, it contains the callback and necessary data to maintain +the timer. |
| /proc/_addtimer | Create a new timer and insert it in the queue. +You should not call this directly, and should instead use the addtimer macro, which includes source information. |
| /proc/deltimer | Delete a timer |
| /proc/timeleft | Get the remaining deciseconds on a timer |
Controls how many buckets should be kept, each representing a tick. (1 minutes worth)
Helper for getting the correct bucket for a given timer
Max float with integer precision
Gets the maximum time at which timers will be invoked from buckets, used for deferring to secondary queue
| /datum/achievement_data | Datum that handles |
|---|
| /datum/award/achievement | Achievements are one-off awards for usually doing cool things. |
|---|---|
| /datum/award/score | Scores are for leaderboarded things, such as killcount of a specific boss |
| /datum/award/achievement/mafia/assistant | ALL THE ACHIEVEMENTS FOR WINNING A ROUND AS A ROLE |
|---|---|
| /datum/award/achievement/mafia/universally_hated | ALL THE ACHIEVEMENTS FOR MISC MAFIA ODDITIES |
| /datum/award/score/hardcore_random | How many times did we survive being a cripple? |
|---|---|
| /datum/award/score/maintenance_pill | How many maintenance pills did you eat? |
| /datum/award/score/intento_score | How high of a score on the Intento did we get? |
| /datum/alarm_handler | Represents a single source of alarms, one alarm handler will only ever count for one alarm per listener |
|---|
| /datum/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 |
|---|
| /datum/brain_trauma/severe/split_personality/brainwashing | BRAINWASHING |
|---|
| /proc/tgalert | DEPRECATED: USE tgui_alert(...) INSTEAD |
|---|
| /datum/callback | A datum that holds a proc to be called on another object, used to track proccalls to other objects |
|---|---|
| /datum/callback_select | Helper datum for the select callbacks proc |
| /proc/callback_select | Runs a list of callbacks asyncronously, returning only when all have finished |
| CHAT_MESSAGE_SPAWN_TIME | How long the chat message's spawn-in animation will occur for |
|---|---|
| CHAT_MESSAGE_LIFESPAN | How long the chat message will exist prior to any exponential decay |
| CHAT_MESSAGE_EOL_FADE | How long the chat message's end of life fading animation will occur for |
| CHAT_MESSAGE_EXP_DECAY | Factor of how much the message index (number of messages) will account to exponential decay |
| CHAT_MESSAGE_HEIGHT_DECAY | Factor of how much height will account to exponential decay |
| CHAT_MESSAGE_APPROX_LHEIGHT | Approximate height in pixels of an 'average' line, used for height decay |
| CHAT_MESSAGE_WIDTH | Max width of chat message in pixels |
| CHAT_MESSAGE_MAX_LENGTH | Max length of chat message in characters |
| CHAT_LAYER_Z_STEP | Maximum precision of float before rounding errors occur (in this context) |
| CHAT_LAYER_MAX_Z | The number of z-layer 'slices' usable by the chat message layering |
| /datum/chatmessage | Datum for generating a message overlay on the map |
The number of z-layer 'slices' usable by the chat message layering
Maximum precision of float before rounding errors occur (in this context)
Approximate height in pixels of an 'average' line, used for height decay
How long the chat message's end of life fading animation will occur for
Factor of how much the message index (number of messages) will account to exponential decay
Factor of how much height will account to exponential decay
How long the chat message will exist prior to any exponential decay
Max length of chat message in characters
How long the chat message's spawn-in animation will occur for
Max width of chat message in pixels
Concept+Loosely adapted from /vg/. This is an entity component system for adding behaviours to datums when inheritance doesn't quite cut it. By using signals and events instead of direct inheritance, you can inject behaviours without hacky overloads. It requires a different method of thinking, but is not hard to use correctly. If a behaviour can have application across more than one thing. Make it generic, make it a component. Atom/mob/obj event? Give it a signal, and forward it's arguments with a See this thread for an introduction to the system as a whole. +See/Define signals and their arguments in __DEFINES\components.dm |
| /datum/component | The component datum |
|---|
| /datum/component/area_sound_manager | Allows you to set a theme for a set of areas without tying them to looping sounds explicitly |
|---|
| /datum/component/butchering/recycler | Special snowflake component only used for the recycler. |
|---|
| /datum/component/combat_mode | Combat mode component. It makes the user face whichever atom the mouse pointer is hovering, +amongst other things designed outside of this file, namely PvP and PvE stuff, hence the name. +Can be toggled on and off by clicking the screen hud object or by pressing the assigned hotkey (default 'C') |
|---|---|
| /atom/movable/screen/combattoggle | The screen button. |
| /obj/item/glasswork/glass_base/dish | Chem Disk |
|---|---|
| /obj/item/glasswork/glass_base/glass_lens | Lens |
| /obj/item/glasswork/glass_base/spouty | Spouty Flask |
| /obj/item/glasswork/glass_base/flask_small | Small Bulb Flask |
| /obj/item/glasswork/glass_base/flask_large | Large Bulb Flask |
| /obj/item/glasswork/glass_base/tea_plate | Tea Plates |
| /obj/item/glasswork/glass_base/tea_cup | Tea Cup |
| /datum/crafting_recipe/chemical_payload | BOMB CRAFTING |
|---|---|
| /datum/crafting_recipe/pipebow | GUNS CRAFTING |
| /datum/crafting_recipe/arrow | AMMO CRAFTING |
| /datum/component/dejavu | A component to reset the parent to its previous state after some time passes |
|---|
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. +Behavior that's still missing from this component that original food items had that should either be put into seperate components or somewhere else: +Components: +Drying component (jerky etc) +Customizable component (custom pizzas etc) +Processable component (Slicing and cooking behavior essentialy, making it go from item A to B when conditions are met.) +Dunkable component (Dunking things into reagent containers to absorb a specific amount of reagents) +Misc: +Something for cakes (You can store things inside) |
| /datum/component/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. |
|---|
| /datum/fantasy_affix/bane | Good suffixes |
|---|---|
| /datum/fantasy_affix/fool | Bad suffixes |
| /datum/component/field_of_vision | Field of Vision component. Does totally what you probably think it does, +ergo preventing players from seeing what's behind them. |
|---|---|
| FOV_ANGLE_CHECK | Byond doc is not entirely correct on the integrated arctan() proc. +When both x and y are negative, the output is also negative, cycling clockwise instead of counter-clockwise. +That's also why I am extensively using the SIMPLIFY_DEGREES macro here. |
| /atom/movable/fov_holder | The shadow cone's mask and visual images holder which can't locate inside the mob, +lest they inherit the mob opacity and cause a lot of hindrance |
Byond doc is not entirely correct on the integrated arctan() proc. +When both x and y are negative, the output is also negative, cycling clockwise instead of counter-clockwise. +That's also why I am extensively using the SIMPLIFY_DEGREES macro here.
+Overall this is the main macro that calculates wheter a target is within the shadow cone angle or not.
| /datum/component/footstep | Footstep component. Plays footsteps at parents location when it is appropriate. |
|---|
This component essentially encapsulates frying and utilizes the edible component +This means fried items can work like regular ones, and generally the code is far less messy |
| /datum/component/gps | GPS component. Atoms that have this show up on gps. Pretty simple stuff. |
|---|---|
| /datum/component/gps/item | GPS component subtype. Only gps/item's can be used to open the UI. |
| /datum/component/identification | Identification components |
|---|---|
| /datum/component/identification/syndicate | Identification component subtype - Syndicate |
| /datum/component/killerqueen | KILLER QUEEN |
|---|
| /datum/component/label | The label component. |
|---|
This datum should be used for handling mineral contents of machines and whatever else is supposed to hold minerals and make use of them. +Variables: +amount - raw amount of the mineral this container is holding, calculated by the defined value MINERAL_MATERIAL_AMOUNT=2000. +max_amount - max raw amount of mineral this container can hold. +sheet_type - type of the mineral sheet the container handles, used for output. +parent - object that this container is being used by, used for output. +MAX_STACK_SIZE - size of a stack of mineral sheets. Constant. |
| /datum/component/multiple_lives | 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. |
|---|
| /datum/component/nanites/permanent | Subtype that doesn't erase itself from running out |
|---|
| /datum/component/omen | omen.dm: For when you want someone to have a really bad day |
|---|
| /datum/component/plumbing/simple_demand | has one pipe input that only takes, example is manual output pipe |
|---|---|
| /datum/component/plumbing/simple_supply | has one pipe output that only supplies. example is liquid pump and manual input pipe |
| /datum/component/plumbing/tank | input and output, like a holding tank |
| /datum/component/plumbing/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 |
|---|
| /datum/component/riding/human | Yes, I said humans. No, this won't end well... |
|---|
| /datum/component/storage/concrete/tcg | A storage component to be used on card piles, for use as hands/decks/discard piles. Don't use on something that's not a card pile! |
|---|
| /datum/component/tackler | #tackle.dm |
|---|
| /datum/component/twitch_plays | Observers voting on things through orbiting |
|---|---|
| /datum/component/twitch_plays/simple_movement | Simple movement one |
| /datum/component/two_handed | Two Handed Component |
|---|---|
| /obj/item/offhand | The offhand dummy item for two handed items |
| /datum/component/uplink | Uplinks |
|---|
| /datum/component/virtual_reality | The virtual reality turned component. +Originally created to overcome issues of mob polymorphing locking the player inside virtual reality +and allow for a more "immersive" virtual reality in a virtual reality experience. +It relies on comically complex order of logic, expect things to break if procs such as mind/transfer_to() are revamped. +In short, a barebone not so hardcoded VR framework. +If you plan to add more devices that make use of this component, remember to isolate their code outta here where possible. |
|---|
| /datum | The absolute base class for everything |
|---|---|
| /proc/json_serialize_datum | Convert a datum into a json blob |
| /proc/json_deserialize_datum | Convert a list of json to datum |
| /proc/end_cooldown | Callback called by a timer to end an associative-list-indexed cooldown. |
| /proc/reset_cooldown | Proc used by stoppable timers to end a cooldown before the time has ran out. |
| /datum/dna | DNA DATUM |
|---|---|
| /proc/getleftblocks | DNA HELPER-PROCS |
| /datum/ductnet | We handle the unity part of plumbing. We track who is connected to who. |
|---|
| /datum/element | A holder for simple behaviour that can be attached to many different types |
|---|
| /datum/element/bed_tuckable | Tucking element, for things that can be tucked into bed. |
|---|
| /datum/element/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. |
|---|
| /datum/element/dwarfism | Very similar to squish, but for dwarves and shorties |
|---|
| /datum/element/firestacker | Can be applied to /atom/movable subtypes to make them apply fire stacks to things they hit |
|---|
| /datum/element/item_scaling | Element for scaling item appearances in the overworld or in inventory/storage. |
|---|
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. +The elements (and this folder)+This folder provides several useful shortcuts to be able to handle 95% of situations. +
+ |
| /datum/element/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. |
|---|
| /datum/element/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. |
|---|
| /datum/element/contextual_screentip_sharpness | 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. |
|---|
| /datum/element/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. |
|---|
| /datum/element/series |
|---|
| /datum/element/strippable | An element for atoms that, when dragged and dropped onto a mob, opens a strip panel. |
|---|---|
| /datum/strippable_item | A representation of an item that can be stripped down |
| /datum/strippable_item/mob_item_slot | A preset for equipping items onto mob slots |
| /proc/start_unequip_mob | A utility function for /datum/strippable_items to start unequipping an item from a mob. |
| /proc/finish_unequip_mob | A utility function for /datum/strippable_items to finish unequipping an item from a mob. |
| /datum/strip_menu | A representation of the stripping UI |
| /proc/create_strippable_list | Creates an assoc list of keys to /datum/strippable_item |
| /datum/element/swimming | Just for marking when someone's swimming. |
|---|
| /datum/element/weather_listener | This element just handles creating and destroying an area sound manager that's hooked into weather stuff |
|---|
| /proc/wave_explosion | Creates a wave explosion at a certain place |
|---|---|
| /datum/wave_explosion | New force-blastwave explosion system |
| /datum/stack_end_detector | Stack End Detector. +Can detect if a given code stack has exited, used by the mc for stack overflow detection. |
|---|---|
| /datum/stack_canary | Stack canary. Will go away if the stack it was primed by is ended by byond for return or stack overflow reasons. |
| /datum/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. |
|---|
| /datum/biome | This datum handles the transitioning from a turf to a specific biome, and handles spawning decorative structures and mobs. |
|---|
| /datum/martial_art/cqc/under_siege | Subtype of CQC. Only used for the chef. |
|---|
Material datum +Simple datum which is instanced once per type and is used for every object of said material. It has a variety of variables that define behavior. Subtyping from this makes it easier to create your own materials. |
| /datum/material/iron | Has no special properties. |
|---|---|
| /datum/material/glass | Breaks extremely easily but is transparent. |
| /datum/material/silver | Has no special properties. Could be good against vampires in the future perhaps. |
| /datum/material/gold | Slight force decrease. It's gold, it's soft as fuck. |
| /datum/material/diamond | Small force increase, for diamond swords |
| /datum/material/uranium | Is slightly radioactive |
| /datum/material/plasma | Adds firestacks on hit (Still needs support to turn into gas on destruction) |
| /datum/material/bluespace | Can cause bluespace effects on use. (Teleportation) (Not yet implemented) |
| /datum/material/bananium | Honks and slips |
| /datum/material/titanium | Mediocre force increase |
| /datum/material/plastic | Force decrease |
| /datum/material/biomass | Force decrease and mushy sound effect. (Not yet implemented) |
| /datum/material/adamantine | Stronk force increase |
| /datum/material/mythril | RPG Magic. (Admin only) |
| /datum/material/meat | It's gross, gets the name of it's owner, and is all kinds of fucked up |
|---|
| /datum/client_interface | This should match the interface of /client wherever necessary. |
|---|
| /datum/mutation/human/thermal | Thermal Vision lets you see mobs through walls |
|---|---|
| /datum/mutation/human/thermal/x_ray | X-ray Vision lets you see through walls. |
| /datum/outfit | 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. |
|---|
| /datum/skill | Skill datums |
|---|---|
| /datum/skill/level | Classing r p g styled skills, tiered by lvl, and current/nextlvl experience. |
| /datum/skill_holder | Skill holder datums +All procs are tied to the mind, since they are always expected to have a skill holder anyway. |
|---|
| /datum/skill_modifier | Base skill modifier datum, used to modify a player skills without directly touching their values, levels and affinity +and cause lots of edge cases. These are fairly simple overall... make a subtype though, don't use this one. |
|---|
| /datum/skill_modifier/job | Jobbie skill modifiers. |
|---|---|
| /datum/skill_modifier/job/level | Level skill modifiers below. |
| /mob/living | Mob Living |
|---|
| /datum/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. |
|---|
| /datum/status_effect/grouped | Status effect from multiple sources, when all sources are removed, so is the effect |
|---|
| /atom/movable/screen/alert/status_effect/wound | WOUNDS |
|---|
| /datum/view_data | Container for client viewsize |
|---|
| /datum/weather | Causes weather to occur on a z level in certain area types |
|---|
| /datum/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" |
|---|
| /area | A grouping of tiles into a logical space, mostly used by map editors |
|---|---|
| /proc/process_teleport_locs | Generate a list of turfs you can teleport to from the areas list |
| /area/edina/street | Nova Edina Streets |
|---|---|
| /area/edina/crew_quarters | Edina specific derivitives |
| /obj/effect/mapping_helpers/planet_z | Mapping helper |
| /area/mine | Mine areas |
|---|---|
| /area/lavaland | Lavaland Areas |
| /area/icemoon | Ice Moon Areas |
| /area/shuttle/syndicate | Multi-area shuttles +Syndicate infiltrator |
|---|---|
| /area/shuttle/pirate | Pirate Shuttle |
| /area/shuttle/hunter | Bounty Hunter Shuttles |
| /area/shuttle/abandoned | White Ship |
| /area/shuttle/transit | Single-area shuttles |
| /proc/log_combat | Log a combat message in the attack log |
|---|---|
| /proc/log_wound | log_wound() is for when someone is attacked and suffers a wound. Note that this only captures wounds from damage, so smites/forced wounds aren't logged, as well as demotions like cuts scabbing over |
Roundstart+Dynamic rolls threat based on a special sauce formula: +++ This threat is split into two separate budgets--
This split is done with a similar method, known as the "lorentz distribution", exists to create a bell curve that ensures that while most rounds will have a threat level around ~50, chaotic and tame rounds still exist for variety. +The process of creating these numbers occurs in Deciding roundstart threats+In
After this process is done, any leftover roundstart threat will be given to the existing midround budget (done in Deciding midround threats+Latejoin and midround injection cooldowns are set using exponential distribution between +
this value is then added to rigged_roundstart is called instead if there are forced rules (an admin set the mode) +
Rule Processing+Calls rule_process on every rule which is in the current_rules list. +Every sixty seconds, update_playercounts() +Midround injection time is checked against world.time to see if an injection should happen. +If midround injection time is lower than world.time, it updates playercounts again, then tries to inject and generates a new cooldown regardless of whether a rule is picked. +Latejoin+make_antag_chance(newPlayer) -> (For each latespawn rule...) +-> acceptable(living players, threat_level) -> trim_candidates() -> ready(forced=FALSE) +**If true, add to drafted rules +**NOTE that acceptable uses threat_level not threat! +**NOTE Latejoin timer is ONLY reset if at least one rule was drafted. +**NOTE the new_player.dm AttemptLateSpawn() calls OnPostSetup for all roles (unless assigned role is MODE) +(After collecting all draftble rules...) +-> picking_latejoin_ruleset(drafted_rules) -> spend threat -> ruleset.execute() +Midround+process() -> (For each midround rule... +-> acceptable(living players, threat_level) -> trim_candidates() -> ready(forced=FALSE) +(After collecting all draftble rules...) +-> picking_midround_ruleset(drafted_rules) -> spend threat -> ruleset.execute() +Forced+For latejoin, it simply sets forced_latejoin_rule +make_antag_chance(newPlayer) -> trim_candidates() -> ready(forced=TRUE) **NOTE no acceptable() call +For midround, calls the below proc with forced = TRUE +picking_specific_rule(ruletype,forced) -> forced OR acceptable(living_players, threat_level) -> trim_candidates() -> ready(forced) -> spend threat -> execute() +**NOTE specific rule can be called by RS traitor->MR autotraitor w/ forced=FALSE +**NOTE that due to short circuiting acceptable() need not be called if forced. +Ruleset+acceptable(population,threat) just checks if enough threat_level for population indice. +**NOTE that we currently only send threat_level as the second arg, not threat. +ready(forced) checks if enough candidates and calls the map's map_ruleset(dynamic_ruleset) at the parent level +trim_candidates() varies significantly according to the ruleset type +Roundstart: All candidates are new_player mobs. Check them for standard stuff: connected, desire role, not banned, etc. +**NOTE Roundstart deals with both candidates (trimmed list of valid players) and mode.candidates (everyone readied up). Don't confuse them! +Latejoin: Only one candidate, the latejoiner. Standard checks. +Midround: Instead of building a single list candidates, candidates contains four lists: living, dead, observing, and living antags. Standard checks in trim_list(list). +Midround - Rulesets have additional types +/from_ghosts: execute() -> send_applications() -> review_applications() -> finish_setup(mob/newcharacter, index) -> setup_role(role) +**NOTE: execute() here adds dead players and observers to candidates list +Configuration and variablesConfiguration+Configuration can be done through a The format of this file is: +
+Note: Comments are not possible in this format, and are just in this document for the sake of readability. +Rulesets+Rulesets have the following variables notable to developers and those interested in tuning. +
Dynamic+The "Dynamic" key has the following configurable values: +
Random Event "Hijacking"+Random events have the potential to be hijacked by Dynamic to keep the pace of midround injections, while also allowing greenshifts to contain some antagonists. +
In
|
| /datum/dynamic_snapshot | A "snapshot" of dynamic at an important point in time. +Exported to JSON in the dynamic.json log file. |
|---|---|
| /datum/dynamic_snapshot_ruleset | A ruleset chosen during a snapshot |
| MALF_ION_PROB | Probability the AI going malf will be accompanied by an ion storm announcement and some ion laws. |
|---|---|
| REPLACE_LAW_WITH_ION_PROB | The probability to replace an existing law with an ion law instead of adding a new ion law. |
| /datum/dynamic_ruleset/midround/blob_infection | Infects a random player, making them explode into a blob. |
| /datum/dynamic_ruleset/midround/from_ghosts/revenant | Revenant ruleset |
| /datum/dynamic_ruleset/midround/from_ghosts/sentient_disease | Sentient Disease ruleset |
| /datum/dynamic_ruleset/midround/pirates | Space Pirates ruleset |
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.
| /datum/dynamic_ruleset/roundstart/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. |
|---|
| /obj/machinery/piratepad/civilian | Pad for the Civilian Bounty Control. |
|---|---|
| /obj/machinery/computer/piratepad_control/civilian | Computer for assigning new civilian bounties, and sending bounties for collection. |
| /obj/item/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. |
| /obj/item/civ_bounty_beacon | Beacon to launch a new bounty setup when activated. |
| INJECTOR_TIMEOUT | Base timeout for creating mutation activators and other injectors |
|---|---|
| NUMBER_OF_BUFFERS | Maximum number of genetic makeup storage slots in DNA Console |
| SCRAMBLE_TIMEOUT | Timeout for DNA Scramble in DNA Consoles |
| JOKER_TIMEOUT | Timeout for using the Joker feature to solve a gene in DNA Console |
| JOKER_UPGRADE | How much time DNA Scanner upgrade tiers remove from JOKER_TIMEOUT |
| RADIATION_STRENGTH_MAX | Maximum value for radiaton strength when pulsing enzymes |
| RADIATION_STRENGTH_MULTIPLIER | Larger multipliers will affect the range of values when pulsing enzymes |
| RADIATION_DURATION_MAX | Maximum value for the radiation pulse duration when pulsing enzymes |
| RADIATION_ACCURACY_MULTIPLIER | Large values reduce pulse accuracy and may pulse other enzymes than selected |
| STATUS_TRANSFORMING | Special status indicating a scanner occupant is transforming eg. from monkey to human |
| RADIATION_IRRADIATION_MULTIPLIER | Multiplier for how much radiation received from DNA Console functionality |
| SEARCH_OCCUPANT | Flag for the mutation ref search system. Search will include scanner occupant |
| SEARCH_STORED | Flag for the mutation ref search system. Search will include console storage |
| SEARCH_DISKETTE | Flag for the mutation ref search system. Search will include diskette storage |
| SEARCH_ADV_INJ | Flag for the mutation ref search system. Search will include advanced injector mutations |
Base timeout for creating mutation activators and other injectors
Timeout for using the Joker feature to solve a gene in DNA Console
How much time DNA Scanner upgrade tiers remove from JOKER_TIMEOUT
Maximum number of genetic makeup storage slots in DNA Console
Large values reduce pulse accuracy and may pulse other enzymes than selected
Maximum value for the radiation pulse duration when pulsing enzymes
Multiplier for how much radiation received from DNA Console functionality
Maximum value for radiaton strength when pulsing enzymes
Larger multipliers will affect the range of values when pulsing enzymes
Timeout for DNA Scramble in DNA Consoles
Flag for the mutation ref search system. Search will include advanced injector mutations
Flag for the mutation ref search system. Search will include diskette storage
Flag for the mutation ref search system. Search will include scanner occupant
Flag for the mutation ref search system. Search will include console storage
Special status indicating a scanner occupant is transforming eg. from monkey to human
| /obj/item/storage/box/blue/cryostorage_items | The box |
|---|
| /obj/structure/barricade/wooden | BARRICADE TYPES |
|---|
| /obj/machinery/light_switch | The light switch. Can have multiple per area. |
|---|
| /obj/machinery/limbgrower | The limbgrower. Makes organd and limbs with synthflesh and chems. +See [limbgrower_designs.dm] for everything we can make. |
|---|
| /obj/machinery/porta_turret_cover | PORTABLE TURRET COVER |
|---|
| /obj/machinery/shieldwall | Containment Field START |
|---|
| SPIN_PRICE | * +| Slot Machines | +| Original code by Glloyd | +| Tgstation port by Miauw | +* |
|---|
*
+| Slot Machines |
+| Original code by Glloyd |
+| Tgstation port by Miauw |
+*
| /obj/machinery/status_display | Status display which can show images and scrolling text. |
|---|---|
| /obj/effect/overlay/status_display_text | Nice overlay to make text smoothly scroll with no client updates after setup. |
| /obj/machinery/status_display/evac | Evac display which shows shuttle timer or message set by Command. |
| /obj/machinery/status_display/supply | Supply display which shows the status of the supply shuttle. |
| /obj/machinery/status_display/shuttle | General-purpose shuttle status display. |
| /obj/machinery/status_display/ai | Pictograph display which the AI can use to emote. |
| /obj/machinery/syndicatebomb/training | Bomb Subtypes |
|---|---|
| /obj/item/bombcore | Bomb Cores |
| /obj/item/bombcore/training | Bomb Core Subtypes |
| /obj/item/syndicatedetonator | Syndicate Detonator (aka the big red button) |
| /datum/signal/subspace | Here is the big, bad function that broadcasts a message given the appropriate +parameters. |
|---|
| /datum/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! |
|---|
| /obj/effect/particle_effect/smoke | SMOKE SYSTEMS |
|---|
| /obj/effect/forcefield/mime | Mimewalls |
|---|
| /obj/effect/spawner/lootdrop/space/fancytool/engineonly | Mail loot spawner. Some sort of random and rare building tool. No alien tech here. |
|---|---|
| /obj/effect/spawner/lootdrop/space/fancytool/advmedicalonly | Mail loot spawner. Drop pool of advanced medical tools typically from research. Not endgame content. |
| /obj/effect/spawner/lootdrop/space/fancytool/raremedicalonly | Mail loot spawner. Some sort of random and rare surgical tool. Alien tech found here. |
| /obj/item/ai_module/supplied | Modules |
|---|---|
| /obj/item/ai_module/supplied/safeguard | Safeguard |
| /obj/item/ai_module/zeroth/oneHuman | OneCrew |
| /obj/item/ai_module/supplied/protectStation | ProtectStation |
| /obj/item/ai_module/supplied/quarantine | Quarantine |
| /obj/item/ai_module/supplied/oxygen | OxygenIsToxicToHumans |
| /obj/item/ai_module/supplied/freeform | New Freeform |
| /obj/item/ai_module/remove | Law Removal |
| /obj/item/ai_module/reset | Reset |
| /obj/item/ai_module/reset/purge | Purge |
| /obj/item/ai_module/core | Full Core Boards |
| /obj/item/ai_module/core/full/asimov | Asimov |
| /obj/item/ai_module/core/full/asimovpp | Asimov++ |
| /obj/item/ai_module/core/full/corp | Corporate |
| /obj/item/ai_module/core/full/paladin | P.A.L.A.D.I.N. 3.5e |
| /obj/item/ai_module/core/full/paladin_devotion | P.A.L.A.D.I.N. 5e |
| /obj/item/ai_module/core/full/custom | Custom |
| /obj/item/ai_module/core/full/tyrant | T.Y.R.A.N.T. |
| /obj/item/ai_module/core/full/robocop | Robocop |
| /obj/item/ai_module/core/full/antimov | Antimov |
| /obj/item/ai_module/core/freeformcore | Freeform Core |
| /obj/item/ai_module/core/full/overthrow | Overthrow |
| /obj/item/ai_module/syndicate | Hacked AI Module |
| /obj/item/ai_module/toyAI | Ion Module |
| /obj/item/ai_module/core/full/drone | Mother Drone |
| /obj/item/ai_module/core/full/hippocratic | Robodoctor |
| /obj/item/ai_module/core/full/reporter | Reporter |
| /obj/item/ai_module/core/full/thermurderdynamic | Thermodynamic |
| /obj/item/ai_module/core/full/liveandletlive | Live And Let Live |
| /obj/item/ai_module/core/full/balance | Guardian of Balance |
| /obj/item/ai_module/core/full/hulkamania | H.O.G.A.N. |
| /obj/item/bong | BONGS |
|---|
| /obj/item/toy/crayon/red | Gang end |
|---|
| /obj/item/disk/medical | Defibrillator Disks |
|---|
| /obj/item/multitool | Multitool -- A multitool is used for hacking electronic devices. |
|---|
| /obj/item/radio/borg | Borg Radios |
|---|
| /proc/woundscan | Displays wounds with extended information on their status vs medscanners |
|---|
| /obj/item/storage/dice | Dice Bags |
|---|---|
| /obj/item/dice | Dice |
| /obj/item/book/granter | books that teach things (intrinsic actions like bar flinging, spells like fireball or smoke, or martial arts) |
|---|---|
| /obj/item/book/granter/trait | TRAITS |
| /obj/item/book/granter/action | ACTION BUTTONS |
| /obj/item/book/granter/spell | SPELLS |
| /obj/item/book/granter/martial | MARTIAL ARTS |
| /obj/item/grenade/chem_grenade/metalfoam | PREMADE GRENADES |
|---|
| /obj/item/grenade/plastic/c4 | The Explosives |
|---|
| /obj/item/mail | Mail is tamper-evident and unresealable, postmarked by CentCom for an individual recepient. |
|---|---|
| /obj/structure/closet/crate/mail | Crate for mail from CentCom. |
| /obj/structure/closet/crate/mail/full | Crate for mail that automatically generates a lot of mail. Usually only normal mail, but on lowpop it may end up just being junk. |
| /obj/structure/closet/crate/mail/preopen | Used in the mail strike shuttle loan event +Opened mail crate |
| /obj/item/storage/bag/mail | Mailbag. |
| /obj/item/book/manual | MANUALS (BOOKS) |
|---|
| /obj/item/melee/transforming/energy/sword/cx/traitor | Tatortot NEB /////////////// (same stats as regular esword) |
|---|
| /obj/item/malf_upgrade | AI Upgrades |
|---|
| /obj/item/borg | Cyborg Spec Items |
|---|---|
| /obj/item/borg/sight | HUD/SIGHT things |
| /obj/item/gripper | Grippers oh god oh fuck |
| /obj/item/dogborg_tongue | Dogborg stuff +Mere cosmetic dogborg items, remnants of what were once the most annoying cyborg modules. |
| /obj/item/stack/sheet/animalhide/goliath_hide | Goliath Hide |
|---|
| /obj/item/storage/box/clown | clown box & honkbot assembly |
|---|
| STATE_IDLE | doing nothing/orbiting idly |
|---|---|
| STATE_RESET | performing reset animation |
| STATE_ATTACK | performing attack animation |
| STATE_RECOVER | performing animation between attacks |
| /obj/item/summon | Simple summon weapon code in this file |
| /datum/summon_weapon_host | Serves as the master datum for summon weapons |
| /datum/summon_weapon | A singular summoned object |
performing attack animation
doing nothing/orbiting idly
performing animation between attacks
performing reset animation
| SPECIAL_ATTACK_HEAL | Mech prizes + MECHA COMBAT!! +Mech battle special attack types. |
|---|---|
| MAX_BATTLE_LENGTH | Max length of a mech battle |
Max length of a mech battle
Mech prizes + MECHA COMBAT!! +Mech battle special attack types.
| /obj/item/bokken_blade | BOKKEN CRAFTNG PIECES |
|---|---|
| /obj/item/slapper/secret_handshake | Gangster secret handshakes. |
| /obj/structure/chair/greyscale | Material chair |
|---|
| /obj/structure/girder/cult | cult girder |
|---|
| /datum/lift_master | Collect and command |
|---|
| VIABLE_MOB_CHECK | Kitchen Spike |
|---|
Kitchen Spike
| /obj/structure/loom | This is a loom. It's usually made out of wood and used to weave fabric like durathread or cotton into their respective cloth types. |
|---|
| /obj/machinery/manned_turret | MANNED TURRET |
|---|
| SOUND_CHANCE | Chance for a sound clue |
|---|---|
| BROKEN_THRESHOLD | Explosion number threshold for opening safe |
Explosion number threshold for opening safe
Chance for a sound clue
| /obj/structure/statue/uranium | //////////////STATUES////////////////////////// +uranium |
|---|---|
| /obj/structure/statue/plasma | plasma |
| /obj/structure/statue/gold | gold |
| /obj/structure/statue/silver | silver |
| /obj/structure/statue/diamond | diamond |
| /obj/structure/statue/bananium | bananium |
| /obj/structure/statue/sandstone | sandstone |
| /obj/structure/statue/snow | snow |
| /obj/structure/statue/bronze | bronze |
| /obj/item/chisel | Elder Atmosian |
| /obj/structure/table/rolling | Table on wheels |
|---|
playsound +playsound is a proc used to play a 3D sound in a specific range. This uses SOUND_RANGE + extra_range to determine that. +source - Origin of sound +soundin - Either a file, or a string that can be used to get an SFX +vol - The volume of the sound, excluding falloff and pressure affection. +vary - bool that determines if the sound changes pitch every time it plays +extrarange - modifier for sound range. This gets added on top of SOUND_RANGE +falloff_exponent - Rate of falloff for the audio. Higher means quicker drop to low volume. Should generally be over 1 to indicate a quick dive to 0 rather than a slow dive. +frequency - playback speed of audio +channel - The channel the sound is played at +pressure_affected - Whether or not difference in pressure affects the sound (E.g. if you can hear in space) +ignore_walls - Whether or not the sound can pass through walls. +falloff_distance - Distance at which falloff begins. Sound is at peak volume (in regards to falloff) aslong as it is in this range. +playsound +playsound_local is a proc used to play a sound directly on a mob from a specific turf. +This is called by playsound to send sounds to players, in which case it also gets the max_distance of that sound. +turf_source - Origin of sound +soundin - Either a file, or a string that can be used to get an SFX +vol - The volume of the sound, excluding falloff +vary - bool that determines if the sound changes pitch every time it plays +frequency - playback speed of audio +falloff_exponent - Rate of falloff for the audio. Higher means quicker drop to low volume. Should generally be over 1 to indicate a quick dive to 0 rather than a slow dive. +channel - The channel the sound is played at +pressure_affected - Whether or not difference in pressure affects the sound (E.g. if you can hear in space) +max_distance - The peak distance of the sound, if this is a 3D sound +falloff_distance - Distance at which falloff begins, if this is a 3D sound +distance_multiplier - Can be used to multiply the distance at which the sound is heard |
| /turf/open/floor/catwalk_floor |
|---|
| /turf/open/floor/plating/asteroid | Asteroid |
|---|---|
| /turf/open/floor/plating/asteroid/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. |
| /turf/open/lava | LAVA |
|---|---|
| LAVA_BE_IGNORING | Generic return value of the can_burn_stuff() proc. Does nothing. |
| LAVA_BE_PROCESSING | Another. Won't burn the target but will make the turf start processing. |
| LAVA_BE_BURNING | Burns the target and makes the turf process (depending on the return value of do_burn()). |
Burns the target and makes the turf process (depending on the return value of do_burn()).
Generic return value of the can_burn_stuff() proc. Does nothing.
Another. Won't burn the target but will make the turf start processing.
| /turf/closed/mineral | Mineral deposits |
|---|
| /turf/closed/wall/mineral/titanium | Titanium walls |
|---|---|
| /turf/closed/wall/mineral/plastitanium | Plastitanium walls |
| /turf/closed/wall/r_wall/syndicate/pirate | Pirate Ship walls |
|---|
| /turf | Any floor or wall. What makes up the station and the rest of the map. |
|---|
Actionspeed modification datums. +
+Action speed is now calculated by using modifier datums which are added to mobs. Some of them (nonvariable ones) are globally cached, the variable ones are instanced and changed based on need. +This gives us the ability to have multiple sources of actionspeed, reliabily keep them applied and remove them when they should be +THey can have unique sources and a bunch of extra fancy flags that control behaviour +Previously trying to update action speed was a shot in the dark that usually meant mobs got stuck going faster or slower +Actionspeed modification list is a simple key = datum system. Key will be the datum's ID if it is overridden to not be null, or type if it is not. +DO NOT override datum IDs unless you are going to have multiple types that must overwrite each other. It's more efficient to use types, ID functionality is only kept for cases where dynamic creation of modifiers need to be done. +When update actionspeed is called, the list of items is iterated, according to flags priority and a bunch of conditions +this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob +can next move | |
| /proc/get_cached_actionspeed_modifier | Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO! |
|---|---|
Used for variable slowdowns like hunger/health loss/etc, works somewhat like the old list-based modification adds. Returns the modifier datum if successful +How this SHOULD work is: +1. Ensures type_id_datum one way or another refers to a /variable datum. This makes sure it can't be cached. This includes if it's already in the modification list. +2. Instantiate a new datum if type_id_datum isn't already instantiated + in the list, using the type. Obviously, wouldn't work for ID only. +3. Add the datum if necessary using the regular add proc +4. If any of the rest of the args are not null (see: multiplicative slowdown), modify the datum +5. Update if necessary + | |
| /proc/actionspeed_data_null_check | Checks if a action speed modifier is valid and not missing any data |
| /proc/CreateBans | DEBUG |
|---|
| /proc/WrapAdminProcCall | Wrapper for proccalls where the datum is flagged as vareditted |
|---|
| /datum/force_event | Force Event Panel |
|---|
| TAGS_REFRESH | Quick define for readability |
|---|
Quick define for readability
| /proc/_turf_in_offset | Locating turfs |
|---|
| /proc/send2otherserver | Sends a message to a set of cross-communications-enabled servers using world topic calls |
|---|---|
| /proc/check_admin_pings | Checks a given message to see if any of the words contain an active admin's ckey with an @ before it |
| /proc/message_centcom | Used by communications consoles to message CentCom |
|---|---|
| /proc/message_syndicate | Used by communications consoles to message the Syndicate |
| /proc/nuke_request | Used by communications consoles to request the nuclear launch codes |
| /proc/firing_squad | firing_squad is a proc for the :B:erforate smite to shoot each individual bullet at them, so that we can add actual delays without sleep() nonsense |
|---|
| /proc/debug_variable | Get displayed variable in VV variable list |
|---|
| ICON_STATE_CHECKED | this dmi is checked. We don't check this one anymore. |
|---|---|
| ICON_STATE_NULL | this dmi has null-named icon_state, allowing it to show a sprite on vv editor. |
this dmi is checked. We don't check this one anymore.
this dmi has null-named icon_state, allowing it to show a sprite on vv editor.
| /obj/item/antag_spawner/contract | WIZARD |
|---|---|
| /obj/item/antag_spawner/nuke_ops | BORGS AND OPERATIVES |
| /obj/item/antag_spawner/nuke_ops/clown | CLOWN OP |
| /obj/item/antag_spawner/nuke_ops/borg_tele | SYNDICATE BORG |
| /obj/item/antag_spawner/slaughter_demon | SLAUGHTER DEMON |
| /datum/action/cooldown/bloodsucker/targeted | TARGETTED POWERS |
|---|
| FORMAT_CHEM_CHARGES_TEXT | Helper to format the text that gets thrown onto the chem hud element. |
|---|
Helper to format the text that gets thrown onto the chem hud element.
| /datum/action/changeling/weapon/arm_blade | * +|ARM BLADE| +* |
|---|---|
| /datum/action/changeling/weapon/tentacle | +|COMBAT TENTACLES| +** |
| /datum/action/changeling/weapon/shield | +|SHIELD| +* |
| /datum/action/changeling/suit/organic_space_suit | +|SPACE SUIT + HELMET| +** |
| /datum/action/changeling/suit/armor | * +|ARMOR| +* |
| /datum/action/changeling/gloves | * +|CLAWS| +* |
| /datum/action/innate/cult/master/pulse | ELDRITCH PULSE |
|---|
| /mob/living/simple_animal/imp | The Monster |
|---|
| /datum/disease_ability/symptom/mild | BASE SYMPTOM TYPES |
|---|---|
| /datum/disease_ability/symptom/mild/cough | MILD |
| /datum/disease_ability/symptom/medium/shedding | MEDIUM |
| /datum/disease_ability/symptom/powerful/fire | POWERFUL |
| /datum/disease_ability/symptom/powerful/heal/starlight | HEALING SUBTYPE |
| /datum/reality_smash_tracker | #Reality smash tracker |
|---|
| /datum/eldritch_knowledge | #Eldritch Knowledge |
|---|---|
| /datum/eldritch_knowledge/spell | Subtypes |
| /datum/eldritch_knowledge/spell/basic | Base lore |
| /datum/antagonist/heretic_monster | Tracking reasons |
|---|
| /datum/rust_spread | #Rust spread datum |
|---|
| /datum/gang_handler | A special datum used by the families gamemode and dynamic rulesets to centralize code. "Family" and "gang" used interchangeably in code. |
|---|
| /datum/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. |
|---|
| /datum/antagonist/revolution_enemy | "Enemy of the Revolutionary", given to heads and security when the revolution wins |
|---|
| /mob/living/simple_animal/slaughter | The Monster |
|---|
| /obj/item/deactivated_swarmer | Deactivated swarmer shell |
|---|---|
| /mob/living/simple_animal/hostile/swarmer | The Mob itself |
| /datum/antagonist/traitor/contractor_support | Support unit gets it's own very basic antag datum for admin logging. |
|---|---|
| /datum/team/contractor_team | Team for storing both the contractor and their support unit - only really for the HUD and admin logging. |
| /obj/item/veilrender | Veil Render |
|---|---|
| /obj/singularity/wizard | TEAR IN REALITY |
| /obj/item/scrying | Scrying |
| /obj/item/necromantic_stone | Necromantic Stone |
| /obj/structure/constructshell | Transferring to constructs |
|---|
| /datum/species | Datum that handles different species in the game. |
|---|
| /obj/effect/beam/i_beam | IBeam |
|---|
Framework for managing browser assets (javascript,css,images,etc)+This manages getting the asset to the client without doing unneeded re-sends, as well as utilizing any configured cdns. +There are two frameworks for using this system: +Asset datum:+Make a datum in asset_list_items.dm with your browser assets for your thing. +Checkout asset_list.dm for the helper subclasses +The Call get_asset_datum() with the type of the datum you created to get your asset cache datum +Call .send(client|usr) on that datum to send the asset to the client. Depending on the asset transport this may or may not block. +Call .get_url_mappings() to get an associated list with the urls your assets can be found at. +Manual backend:+See the documentation for The global variable Notes:+Because byond browse() calls use non-blocking queues, if your code uses output() (which bypasses all of these queues) to invoke javascript functions you will need to first have the javascript announce to the server it has loaded before trying to invoke js functions. +To make your code work with any CDNs configured by the server, you must make sure assets are referenced from the url returned by CSS files that use url() can be made to use the CDN without needing to rewrite all url() calls in code by using the namespaced helper datum. See the documentation for |
| /datum/asset_cache_item | An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed. |
|---|
| /datum/asset/simple | If you don't need anything complicated. |
|---|---|
| /datum/asset/simple/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_TELL_CLIENT_AMOUNT | When sending mutiple assets, how many before we give the client a quaint little sending resources message |
|---|---|
| /datum/asset_transport | Base browse_rsc asset transport |
When sending mutiple assets, how many before we give the client a quaint little sending resources message
| /datum/asset_transport/webroot | CDN Webroot asset transport. |
|---|
| /proc/release_gas_to | Releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure. +a global proc due to rustmos |
|---|
| /obj/machinery/atmospherics/pipe/simple/multiz | This is an atmospherics pipe which can relay air up/down a deck. |
|---|
| /obj/effect/mob_spawn/human/corpse/assistant | Civilians |
|---|---|
| /obj/effect/mob_spawn/human/bridgeofficer | Officers+Nanotrasen Security |
| /obj/effect/mob_spawn/human/skeleton | Spooky Undead |
| /datum/gateway_destination | Corresponds to single entry in gateway control. |
|---|
| /obj/item/paper/crumpled/ruins/snowdin/foreshadowing | papers |
|---|
| /obj/item/paper/fluff/awaymissions/wildwest/grinder | wildwest papers |
|---|---|
| /obj/effect/meatgrinder | Meatgrinder |
| BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MULT | The increase in duration per character in seconds |
|---|---|
| BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MIN | The amount of characters needed before this increase takes into effect |
The amount of characters needed before this increase takes into effect
The increase in duration per character in seconds
Code layoutBuildmode+Manager for buildmode modes. Contains logic to manage switching between each mode, and presenting a suitable user interface. +Effects+Special graphics used by buildmode modes for user interface purposes. +Buildmode Mode+Implementer of buildmode behaviors. +Existing varieties: +
|
| /datum/supply_pack/security/armory | Armory |
|---|
| /datum/supply_pack/costumes_toys | Toys |
|---|---|
| /datum/supply_pack/costumes_toys/formalwear | Costumes |
| /datum/supply_pack/emergency | Emergency |
|---|
| /datum/supply_pack/engine | Engine Construction |
|---|
| /datum/supply_pack/engineering | Engineering |
|---|
| /datum/supply_pack/critter | Livestock |
|---|
| /datum/supply_pack/materials | Canisters & Materials |
|---|---|
| /datum/supply_pack/materials/cardboard50 | Materials |
| /datum/supply_pack/materials/bz | Canisters |
| /datum/supply_pack/materials/fueltank | Tanks |
| /datum/supply_pack/medical | Medical |
|---|---|
| /datum/supply_pack/medical/bodybags | Equipment |
| /datum/supply_pack/medical/sprays | Medical Kits |
| /datum/supply_pack/medical/virus | Virology |
| /datum/supply_pack/misc | Miscellaneous |
|---|---|
| /datum/supply_pack/misc/anvil | Paperwork and Writing Supplies |
| /datum/supply_pack/misc/coloredsheets | Entertainment |
| /datum/supply_pack/misc/candles | Misc Supplies |
| /datum/supply_pack/misc/carpet | Misc + Decor |
| /datum/supply_pack/misc/lewd | Lewd Supplies |
| /datum/supply_pack/misc/syndicate | Special supply crate that generates random syndicate gear up to a determined TC value |
| /datum/supply_pack/organic | Organic |
|---|---|
| /datum/supply_pack/organic/combomeal2 | Meals |
| /datum/supply_pack/organic/food | Raw Ingredients |
| /datum/supply_pack/organic/hydroponics/beekeeping_suits | Hydroponics |
| /datum/supply_pack/organic/party | Misc |
| /datum/supply_pack/science | Science |
|---|---|
| /datum/supply_pack/science/raw_flux_anomaly | RAW ANOMALY CORES |
| /datum/supply_pack/security | Security |
|---|
| /datum/supply_pack/service | Service |
|---|---|
| /datum/supply_pack/service/wrapping_paper | Cargo |
| /datum/supply_pack/service/buildabar | Chef, Botanist, Bartender |
| /datum/supply_pack/service/advlighting | Janitor |
| /datum/supply_pack/vending | Vending |
|---|---|
| /datum/supply_pack/vending/bartending | Service, Medical, Sec |
| /datum/supply_pack/vending/wardrobes/autodrobe | Wardrobe Vendors |
| /obj/item/clothing/mask/luchador | This makes it so that your name shows up as unknown when wearing the mask. |
|---|
| /obj/item/clothing/mask/frog | frog mask - reeee!! |
|---|
| /obj/item/clothing/suit/space/hardsuit/shielded | SHIELDED |
|---|---|
| /obj/item/clothing/suit/space/hardsuit/shielded/ctf | Capture the Flag |
| /obj/item/clothing/suit/space/hardsuit/shielded/syndi | Syndicate Version |
| /obj/item/clothing/suit/space/hardsuit/shielded/swat | SWAT version |
| /datum/round_event_control/spooky | You will appear adjacent to the beacon |
|---|
| /datum/round_event_control/stray_cargo | Spawns a cargo pod containing a random cargo supply pack on a random area of the station |
|---|---|
| /datum/round_event/stray_cargo | Spawns a cargo pod containing a random cargo supply pack on a random area of the station |
| /datum/round_event_control/stray_cargo/syndicate | A rare variant that drops a crate containing syndicate uplink items |
| /obj/item/reagent_containers/food/drinks | Drinks. |
|---|---|
| /obj/item/reagent_containers/food/drinks/trophy | Drinks. END |
| /obj/item/reagent_containers/food/drinks/coffee | Drinks |
| /obj/item/reagent_containers/food/drinks/shaker | drinkingglass and shaker |
| /obj/item/reagent_containers/food/drinks/soda_cans | soda_cans |
| /obj/item/reagent_containers/food/drinks/bottle | Alchohol bottles! -Agouri |
|---|---|
| /obj/item/reagent_containers/food/drinks/bottle/orangejuice | JUICES AND STUFF |
| /obj/item/reagent_containers/food/drinks/bottle/molotov | MOLOTOV |
| /obj/item/reagent_containers/food | Food. |
|---|
| /obj/item/reagent_containers/food/condiment | Condiments |
|---|
| /obj/item/reagent_containers/food/snacks/customizable/burger | Customizable Food Types |
|---|
| /obj/item/reagent_containers/food/snacks | |
|---|---|
| /obj/item/reagent_containers/food/snacks/store | All the food items that can store an item inside itself, like bread or cake. |
| /obj/item/reagent_containers/food/snacks/dough | Dough Ingredients |
|---|
| /obj/item/reagent_containers/food/snacks/meat/slab/human | HUMAN MEATS |
|---|---|
| /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat | OTHER MEATS |
| /obj/item/reagent_containers/food/snacks/meat/steak | MEAT STEAKS |
| /obj/item/reagent_containers/food/snacks/meat/rawcutlet | MEAT CUTLETS |
| /obj/item/reagent_containers/food/snacks/chocolateegg | EGGS |
|---|
| /obj/item/reagent_containers/food/snacks/cubancarp | FISH |
|---|---|
| /obj/item/reagent_containers/food/snacks/tofu | MEATS AND ALIKE |
| /obj/item/reagent_containers/food/snacks/cube | Cubes |
| /obj/item/reagent_containers/food/snacks/store/cheesewheel | OTHER |
|---|
| /obj/item/reagent_containers/food/snacks/donut | DONUTS |
|---|---|
| /obj/item/reagent_containers/food/snacks/donut/jelly | JELLY DONUTS |
| /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly | SLIME DONUTS |
| /obj/item/reagent_containers/food/snacks/muffin | MUFFINS |
| /obj/item/reagent_containers/food/snacks/waffles | WAFFLES |
| /obj/item/reagent_containers/food/snacks/cookie | OTHER |
| /obj/item/reagent_containers/food/snacks/pizza | PIZZA |
|---|
| /obj/item/reagent_containers/food/snacks/salad | SALAD |
|---|
| /obj/item/reagent_containers/food/snacks/sushi_rice | Sushi Components |
|---|---|
| /obj/item/reagent_containers/food/snacks/sushie_basic | Sushi |
| /obj/item/reagent_containers/food/snacks/candy | SNACKS FROM VENDING MACHINES |
|---|
| /datum/chemical_reaction/goldschlager | COCKTAILS |
|---|---|
| /datum/chemical_reaction/sbiten | DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri |
| /datum/chemical_reaction/mush | Tea Base Drinks |
| /datum/chemical_reaction/coldscales | Race Base Drinks |
| /datum/chemical_reaction/tofu | FOOD MIXTURES |
|---|
| /datum/crafting_recipe/food/bread | BREAD |
|---|---|
| /datum/crafting_recipe/food/butteredtoast | TOAST |
| /datum/crafting_recipe/food/baguette | MISC |
| /datum/crafting_recipe/food/burger | STANDARD BURGS |
|---|---|
| /datum/crafting_recipe/food/appendixburger | EXOTIC |
| /datum/crafting_recipe/food/clownburger | MYSTICAL |
| /datum/crafting_recipe/food/redburger | COLORED BURGERS |
| /datum/crafting_recipe/food/applecake | FRUIT CAKE |
|---|---|
| /datum/crafting_recipe/food/birthdaycake | FANCY |
| /datum/crafting_recipe/food/holycake | SPECIAL |
| /datum/crafting_recipe/food/donut | DONUTS |
|---|---|
| /datum/crafting_recipe/food/donut/jelly/apple | JELLY DONUTS |
| /datum/crafting_recipe/food/donut/slimejelly/apple | SLIME DONUTS |
| /datum/crafting_recipe/food/friedegg | EGG RECIPE's |
|---|
| /datum/crafting_recipe/food/apple_sc | SNOW CONES |
|---|---|
| /datum/crafting_recipe/food/mime_sc | I don't like seperating the clown and mime. |
| /datum/crafting_recipe/food/humankebab | KEBABS |
|---|---|
| /datum/crafting_recipe/food/spidereggsham | MR SPIDER |
| /datum/crafting_recipe/food/meatslab | MISC RECIPE's |
| /datum/crafting_recipe/food/burrito | "MEXICAN" |
|---|
| /datum/crafting_recipe/food/chawanmushi | Eastern Foods |
|---|---|
| /datum/crafting_recipe/food/dough | MISC |
| /datum/crafting_recipe/food/muffin | MUFFINS |
|---|---|
| /datum/crafting_recipe/food/cherrycupcake | CUPCAKES |
| /datum/crafting_recipe/food/raisincookie | COOKIES |
| /datum/crafting_recipe/food/waffles | WAFFLES AND PANCAKES |
| /datum/crafting_recipe/food/donkpocket | DONKPOCCKETS |
| /datum/crafting_recipe/food/piedough | OTHER |
| /datum/crafting_recipe/food/applepie | FRUITS |
|---|---|
| /datum/crafting_recipe/food/amanitapie | OTHER PIES |
| /datum/crafting_recipe/food/goldenappletart | TARTS |
| /datum/crafting_recipe/food/candiedapple | SWEETS |
| /datum/crafting_recipe/food/dankpizza | PIZZA!!! |
|---|---|
| /datum/crafting_recipe/food/pineapplepizza/anomaly | Special Pizzas |
| /datum/crafting_recipe/food/aesirsalad | SALADS |
|---|
| /datum/crafting_recipe/food/sandwich | SANDWICHES |
|---|
| /datum/crafting_recipe/food/sushi_rice | Sushi Components |
|---|---|
| /datum/crafting_recipe/food/sashimi | Sushi |
| /datum/crafting_recipe/food/tuna_can | FISH |
| /datum/crafting_recipe/food/amanitajelly | SOUP |
|---|
| /datum/crafting_recipe/food/copypasta | SPAGHETTI |
|---|---|
| /datum/crafting_recipe/food/beefnoodle | NOODLES |
| /obj/item/toy/cards/deck/unum | A deck of unum cards. Classic. |
|---|
| /datum/round_event_control/jacqueen | EVENT |
|---|---|
| /mob/living/simple_animal/jacq | MOBS |
| /obj/structure/bonfire | BONFIRES |
|---|
| /proc/seedify | Finds and extracts seeds from an object |
|---|
| /proc/get_allowed_instrument_ids | Get all non admin_only instruments. |
|---|
| /datum/song | These are the actual backend behind instruments. +They attach to an atom and provide the editor + playback functionality. |
|---|
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! +.dmf macros have some very serious shortcomings. For example, they do not allow reusing parts
+of one macro in another, so giving cyborgs their own shortcuts to swap active module couldn't
+inherit the movement that all mobs should have anyways. The webclient only supports one macro,
+so having more than one was problematic. Additionally each keybind has to call an actual
+verb, which meant a lot of hidden verbs that just call one other proc. Also our existing
+macro was really bad and tied unrelated behavior into The basic premise of this system is to not screw with .dmf macro setup at all and handle
+pressing those keys in the code instead. We have every key call Movement is handled by having each client call You can also tell which keys are being held down now. Each client a list of keys pressed called
+ No client-set keybindings at this time, but it shouldn't be too hard if someone wants. +Notes about certain keys: +
You cannot |
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. +Every language holder has three lists of languages (and sources for each of them): +
|
| /atom/movable/emissive_blocker | Internal atom that copies an appearance on to the blocker plane |
|---|
| MAFIA_MAX_PLAYER_COUNT | how many people can play mafia without issues (running out of spawns, procs not expecting more than this amount of people, etc) |
|---|---|
| TOWN_OVERFLOW | Add this if you don't want a role to be a choice in the selection |
| TOWN_INVEST | roles that learn info about others in the game (chaplain, detective, psych) |
| TOWN_PROTECT | roles that keep other roles safe (doctor, sec officer, and weirdly enough lawyer counts) |
| TOWN_KILLING | roles that are only there to kill bad guys. |
| TOWN_SUPPORT | roles that don't fit into anything else (hop) |
| MAFIA_REGULAR | normal vote kill changelings |
| MAFIA_SPECIAL | every other changeling role that has extra abilities |
| NEUTRAL_KILL | role that wins solo that nobody likes |
| NEUTRAL_DISRUPT | role that upsets the game aka obsessed, usually worse for town than mafia but they can vote against mafia |
| ROLE_UNDETECTABLE | to all forms of detection, shows themselves as an assistant. |
| ROLE_CAN_KILL | has the ability to kill at night and thus, blocks the game from ending with other teams alive. |
| ROLE_UNIQUE | can only be one in a randomly generated game |
| ROLE_REVEALED | role is public to all other players in the game. |
| ROLE_VULNERABLE | can not be defended, protected, or any other form of protection. all kills succeed no matter what. |
| ROLE_ROLEBLOCKED | cannot perform any actions that night, preselected actions fail |
| COMSIG_MAFIA_SUNDOWN | when the shutters fall, before the 45 second wait and night event resolution |
| COMSIG_MAFIA_NIGHT_START | after the 45 second wait, for actions that must go first |
| COMSIG_MAFIA_NIGHT_ACTION_PHASE | most night actions now resolve |
| COMSIG_MAFIA_NIGHT_KILL_PHASE | now killing happens from the roles that do that. the reason this is post action phase is to ensure doctors can protect and lawyers can block |
| COMSIG_MAFIA_NIGHT_END | now undoing states like protection, actions that must happen last, etc. right before shutters raise and the day begins |
| COMSIG_MAFIA_GAME_END | signal sent to roles when the game is confirmed ending |
signal sent to roles when the game is confirmed ending
most night actions now resolve
now undoing states like protection, actions that must happen last, etc. right before shutters raise and the day begins
now killing happens from the roles that do that. the reason this is post action phase is to ensure doctors can protect and lawyers can block
after the 45 second wait, for actions that must go first
when the shutters fall, before the 45 second wait and night event resolution
how many people can play mafia without issues (running out of spawns, procs not expecting more than this amount of people, etc)
normal vote kill changelings
every other changeling role that has extra abilities
role that upsets the game aka obsessed, usually worse for town than mafia but they can vote against mafia
role that wins solo that nobody likes
has the ability to kill at night and thus, blocks the game from ending with other teams alive.
role is public to all other players in the game.
cannot perform any actions that night, preselected actions fail
to all forms of detection, shows themselves as an assistant.
can only be one in a randomly generated game
can not be defended, protected, or any other form of protection. all kills succeed no matter what.
roles that learn info about others in the game (chaplain, detective, psych)
roles that are only there to kill bad guys.
Add this if you don't want a role to be a choice in the selection
roles that keep other roles safe (doctor, sec officer, and weirdly enough lawyer counts)
roles that don't fit into anything else (hop)
| /datum/mafia_controller | The mafia controller handles the mafia minigame in progress. +It is first created when the first ghost signs up to play. |
|---|---|
| /proc/create_mafia_game | Creates the global datum for playing mafia games, destroys the last if that's required and returns the new. |
| /datum/mafia_role/mafia | MAFIA ROLES/// they're the "anti-town" working to kill off townies to win |
|---|---|
| /datum/mafia_role/traitor | SOLO ROLES/// they range from anomalous factors to deranged killers that try to win alone. |
|
| /obj/effect/mapping_helpers/custom_icon | Fetches an external dmi and applies to the target object |
|---|
| /obj/effect/mapping_helpers/network_builder/power_cable | Automatically links on init to power cables and other cable builder helpers. Only supports cardinals. |
|---|
| /datum/map_preloader | Preloader datum |
|---|
| /proc/load_map | Shortcut function to parse a map and apply it to the world. |
|---|
| /datum/map_report | An error report generated by /datum/parsed_map/proc/check_for_errors. |
|---|
| ZONE_SET | Mining Base |
|---|
Mining Base
| /obj/item/clothing/suit/hooded/explorer | Explorer's Suit and Mask |
|---|---|
| /obj/item/clothing/suit/hooded/explorer/heva | HEVA Suit and Mask |
| /obj/item/clothing/suit/hooded/explorer/exo | Exo-Suit and Mask |
| /obj/item/kinetic_crusher | Mining Hammer |
|---|
| /obj/item/lazarus_injector | Lazarus Injector |
|---|
| /obj/item/mining_scanner | Mining Scanners |
|---|
| /obj/item/pickaxe | Pickaxes & Drills & Shovels |
|---|
| /obj/item/hivelordstabilizer | Hivelord stabilizer |
|---|---|
| /obj/item/organ/regenerative_core | Hivelord core |
| /obj/item/organ/regenerative_core/legion | Legion core |
| /obj/item/resonator | Resonator |
|---|
| /area/survivalpod | Survival Pod |
|---|
| /obj/item/clothing/mask/facehugger/toy | Mining Equipment Vendor Items |
|---|
| /obj/item/wormhole_jaunter | Jaunter |
|---|
| /obj/machinery/mineral/labor_claim_console | Prisoners' Console |
|---|---|
| /obj/machinery/mineral/stacking_machine/laborstacker | Prisoner Collection Unit |
| /obj/machinery/mineral/labor_points_checker | Point Lookup Console |
| /obj/item/seeds/lavaland | LAVALAND FLORA |
|---|
| /obj/item/melee/transforming/cleaving_saw | Bosses |
|---|
| /obj/machinery/mineral | Mineral processing unit console |
|---|---|
| /obj/machinery/mineral/processing_unit | Mineral processing unit |
| /obj/machinery/mineral/ore_redemption | Ore Redemption Unit |
|---|
| /obj/machinery/mineral/stacking_unit_console | Mineral stacking unit console |
|---|---|
| /obj/machinery/mineral/stacking_machine | Mineral stacking unit |
| /obj/machinery/mineral/unloading_machine | Unloading unit |
|---|
| /obj/machinery/mineral/equipment_vendor | Mining Equipment Vendor |
|---|---|
| /obj/machinery/mineral/equipment_vendor/golem | Golem Point Vendor |
| /obj/item/mining_voucher | Mining Equipment Vendor Items |
| /obj/item/card/mining_point_card | Mining Point Card |
| /obj/item/card/mining_access_card | Conscript kit |
| /obj/effect/light_emitter | Light |
|---|---|
| /obj/structure/closet/wardrobe/miner | Miner Lockers |
| /obj/machinery/computer/shuttle/mining | Shuttle Computer |
| /obj/structure/closet/crate/miningcar | Mining car (Crate like thing, not the rail car) |
| MINEDRONE_COLLECT | Mining drone |
|---|---|
| /obj/item/mine_bot_upgrade | Minebot Upgrades |
Mining drone
| /obj/item/storage/bag/money | Money bag |
|---|
| /obj/item/stack/ore | Mineral ores |
|---|---|
| /obj/item/coin | Coin |
| /obj/structure/ore_box | Ore box |
|---|
| /mob | CLICKDELAY HANDLING SYSTEM +How this works is mobs can never do actions until their next_action is at or below world.time, but things can specify extra cooldown +to check for either from the time of last_action or from the end of next_action. |
|---|
| RESET_HUD_INTERVAL | Cooldown for the Reset Lobby Menu HUD verb |
|---|
Cooldown for the Reset Lobby Menu HUD verb
| /datum/sprite_accessory/xeno_dorsal | Xeno Dorsal Tubes |
|---|---|
| /datum/sprite_accessory/xeno_tail | Xeno Tails |
| /datum/sprite_accessory/xeno_head | Xeno Heads |
| /datum/sprite_accessory/mam_body_markings | Furry Markings |
|---|---|
| /datum/sprite_accessory/insect_fluff | Insect Markings |
| /datum/sprite_accessory/ears/human/axolotl | Human Ears |
|---|---|
| /datum/sprite_accessory/ears/mam_ears | Furry Ears |
| /datum/sprite_accessory/ears/human/bnnuy | Tall Ears |
| /datum/sprite_accessory/screen | IPC SCREENS |
|---|---|
| /datum/sprite_accessory/antenna | IPC Antennas |
| /datum/sprite_accessory/legs/none | Leggy |
|---|---|
| /datum/sprite_accessory/taur | Taur Bodies |
| /datum/sprite_accessory/snouts/mam_snouts | ************ Lizard compatable snoots *********** +/datum/sprite_accessory/snouts/bird +name = "Beak" +icon_state = "bird" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED |
|---|---|
| /datum/sprite_accessory/snouts/mam_snouts/fbird | *** Snouts *** +but higher up |
| /datum/sprite_accessory/tails/human/none | Human Tails |
|---|---|
| /datum/sprite_accessory/tails/mam_tails | Furry Tails |
| EXOTIC_BLEED_MULTIPLIER | BLOOD SYSTEM |
|---|
BLOOD SYSTEM
| /obj/effect/proc_holder/alien | STUN |
|---|
| /datum/strippable_item/hand | A strippable item for a hand |
|---|
| /mob/living/carbon/human/dummy/consistent | Provides a dummy that is consistently bald, white, naked, etc. |
|---|
| /datum/block_parry_data/unarmed/human | Unarmed parry data for human |
|---|---|
| /datum/block_parry_data/unarmed/pugilist | Unarmed parry data for pugilists |
| /proc/generate_selectable_species | Generates species available to choose in character setup at roundstart |
|---|
| /datum/species/jelly/slime | SLIMEPEOPLE |
|---|---|
| /datum/species/jelly/roundstartslime | Round Start Slimes |
| /datum/species/jelly/luminescent | LUMINESCENTS |
| /datum/species/jelly/stargazer | STARGAZERS |
Proc that actually does the grab resisting. Return TRUE if successful. Does not check that a grab exists! Use attempt_resist_grab() instead of this in general! +Forced is if something other than the user mashing movement keys/pressing resist button did it, silent is if it makes messages (like "attempted to resist" and "broken free"). +Forced does NOT force success! |
| /obj/effect/abstract/parry | Effects |
|---|
| /proc/block_calculate_resultant_damage | Considers a block return_list and calculates damage to use from that. |
|---|
| /datum/block_parry_data | Carries data like list data that would be a waste of memory if we initialized the list on every /item as we can cache datums easier. |
|---|
| /mob/living/silicon/robot/nocell | 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 |
|---|
| /mob/living/simple_animal/hostile/construct/armored | Juggernaut |
|---|---|
| /mob/living/simple_animal/hostile/construct/wraith | Wraith |
| /mob/living/simple_animal/hostile/construct/builder | Artificer |
| /mob/living/simple_animal/hostile/construct/builder/noncult | Non-cult Artificer |
| /mob/living/simple_animal/hostile/construct/harvester | Harvester |
| /datum/action/innate/seek_master | Master-Tracker |
| /obj/item/guardiancreator | Creation |
|---|
| /mob/living/simple_animal/hostile/illusion/escape | Actual Types |
|---|
| ACTIVATE_TOUCH | Anomolous Crystal |
|---|
Anomolous Crystal
| DRAKE_FIRE_TEMP | used whenever the drake generates a hotspot |
|---|---|
| DRAKE_FIRE_EXPOSURE | used whenever the drake generates a hotspot |
used whenever the drake generates a hotspot
used whenever the drake generates a hotspot
| /obj/structure/legionturret | A basic turret that shoots at nearby mobs. Intended to be used for the legion megafauna. |
|---|---|
| /obj/item/projectile/beam/legion | Used for the legion turret. |
| /obj/effect/projectile/tracer/legion/tracer | Used for the legion turret tracer. |
| /obj/effect/projectile/tracer/legion | Used for the legion turret beam. |
| /mob/living/simple_animal/hostile/asteroid/elite/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: |
|---|
| /mob/living/simple_animal/hostile/asteroid/elite/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: |
|---|
| /mob/living/simple_animal/hostile/asteroid/elite/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: |
|---|
| /mob/living/simple_animal/hostile/asteroid/elite/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: |
|---|
| /mob/living/simple_animal/hostile/asteroid/lobstrosity |
|---|
| /datum/action/cooldown/scavenge | Creates a chance to spawn more trash or gibs to repopulate. Otherwise, spawns a corpse or dirt. |
|---|
| /datum/action/cooldown/coffer | This action creates trash, money, dirt, and cheese. |
|---|---|
| /datum/action/cooldown/riot | This action checks all nearby mice, and converts them into hostile rats. If no mice are nearby, creates a new one. |
| CHARGE_ONGOING | The carp rift is currently charging. |
|---|---|
| CHARGE_FINALWARNING | The carp rift is currently charging and has output a final warning. |
| CHARGE_COMPLETED | The carp rift is now fully charged. |
| DARKNESS_THRESHOLD | The darkness threshold for space dragon when choosing a color |
| /mob/living/simple_animal/hostile/space_dragon | A space-faring leviathan-esque monster which breathes fire and summons carp. Spawned during its respective midround antagonist event. |
| /obj/structure/carp_rift | The portals Space Dragon summons to bring carp onto the station. |
The carp rift is now fully charged.
The carp rift is currently charging and has output a final warning.
The carp rift is currently charging.
The darkness threshold for space dragon when choosing a color
| /obj/effect/light_emitter/red_energy_sword | Base mob |
|---|---|
| /mob/living/simple_animal/hostile/syndicate/space | Melee |
| /mob/living/simple_animal/hostile/syndicate/ranged | Guns |
| /mob/living/simple_animal/hostile/syndicate/civilian | Misc |
| /obj/structure/alien/resin/flower_bud_enemy | Kudzu Flower Bud |
|---|---|
| /mob/living/simple_animal/hostile/venus_human_trap | Venus Human Trap |
| /proc/stars | Convert random parts of a passed in message to stars |
|---|---|
| /proc/slur | Makes you speak like you're drunk |
| /proc/cultslur | Makes you talk like you got cult stunned, which is slurring but with some dark messages |
| /proc/stutter | Adds stuttering to the message passed in |
| /datum/emote/living/subtle | EMOTE CODE |
|---|---|
| /datum/emote/living/subtler | SUBTLE 2: NO GHOST BOOGALOO |
| /datum/emote/living/subtler_table | SUBTLE 3: DARE DICE |
| /obj/effect/overlay/typing_indicator | Default typing indicator |
|---|
| /obj/item/mod | MODsuits, trade-off between armor and utility |
|---|
| /proc/setup_mod_themes | Global proc that sets up all MOD themes as singletons in a list and returns it. |
|---|---|
| /datum/mod_theme | MODsuit theme, instanced once and then used by MODsuits to grab various statistics. |
| /obj/item/mod/module/welding | Welding Protection - Makes the helmet protect from flashes and welding. |
|---|---|
| /obj/item/mod/module/t_ray | T-Ray Scan - Scans the terrain for undertile objects. |
| /obj/item/mod/module/magboot | Magnetic Stability - Gives the user a slowdown but makes them negate gravity and be immune to slips. |
| /obj/item/mod/module/tether | Emergency Tether - Shoots a grappling hook projectile in 0g that throws the user towards it. |
| /obj/item/mod/module/rad_protection | Radiation Protection - Protects the user from radiation, gives them a geiger counter and rad info in the panel. |
| /obj/item/mod/module/constructor | Constructor - Lets you build quicker and create RCD holograms. |
| /obj/item/mod/module/mister | Mister - Sprays water over an area. |
| /obj/item/mod/module/mister/atmos | Resin Mister - Sprays resin over an area. |
| /obj/item/mod/module/storage | Storage - Adds a storage component to the suit. |
|---|---|
| /obj/item/mod/module/jetpack | Ion Jetpack - Lets the user fly freely through space using battery charge. |
| /obj/item/mod/module/mouthhole | Eating Apparatus - Lets the user eat/drink with the suit on. |
| /obj/item/mod/module/emp_shield | EMP Shield - Protects the suit from EMPs. |
| /obj/item/mod/module/flashlight | Flashlight - Gives the suit a customizable flashlight. |
| /obj/item/mod/module/dispenser | Dispenser - Dispenses an item after a time passes. |
| /obj/item/mod/module/dna_lock | Longfall +Thermal Regulator - Naw. +DNA Lock - Prevents people without the set DNA from activating the suit. |
| /obj/item/mod/module/springlock | Sign Language Translator - I want, but no +Springlock Mechanism - allows your modsuit to activate faster, but reagents are very dangerous. |
|---|---|
| /obj/item/mod/module/balloon | Rave Visor - Pointless +Tanner - Maybe another time +Balloon Blower - Blows a balloon. |
| /obj/item/mod/module/paper_dispenser | Paper Dispenser - Dispenses (sometimes burning) paper sheets. |
| /obj/item/mod/module/stamp | Stamper - Extends a stamp that can switch between accept/deny modes. |
| HEALTH_SCAN | Atrocinator - Perhaps another time |
|---|---|
| /obj/item/mod/module/health_analyzer | Health Analyzer - Gives the user a ranged health analyzer and their health status in the panel. |
| /obj/item/mod/module/quick_carry | Quick Carry - Lets the user carry bodies quicker. |
| /obj/item/mod/module/defibrillator | Injector - No piercing syringes, replace another time +Organ Thrower +Patrient Transport +Defibrillator - Gives the suit an extendable pair of shock paddles. |
| /obj/item/mod/module/surgical_processor | Thread Ripper +Surgical Processor - Lets you do advanced surgeries portably. |
Atrocinator - Perhaps another time
| /obj/item/mod/module/reagent_scanner | Reagent Scanner - Lets the user scan reagents. |
|---|---|
| /obj/item/mod/module/anomaly_locked/antigrav | Anti-Gravity - Makes the user weightless. |
| /obj/item/mod/module/anomaly_locked/teleporter | Teleporter - Lets the user teleport to a nearby location. |
| /obj/item/mod/module/stealth | Cloaking - Lowers the user's visibility, can be interrupted by being touched or attacked. |
|---|---|
| /obj/item/mod/module/magnetic_harness | Magnetic Harness - Automatically puts guns in your suit storage when you drop them. |
| /obj/item/mod/module/holster | Pepper Shoulders +Holster - Instantly holsters any not huge gun. |
| /obj/item/mod/module/megaphone | Megaphone - Lets you speak loud. |
| /obj/item/mod/module/bikehorn | Criminal Capture +Mirage grenade dispenser +Projectile Dampener +Active Sonar +Bike Horn - Plays a bike horn sound. |
|---|---|
| /obj/item/mod/module/microwave_beam | Microwave Beam - Microwaves items instantly. |
| /obj/item/mod/module/gps | Internal GPS - Extends a GPS you can use. |
|---|---|
| /obj/item/mod/module/clamp | Hydraulic Clamp - Lets you pick up and drop crates. |
| /obj/item/mod/module/drill | Drill - Lets you dig through rock and basalt. |
| /obj/item/mod/module/visor | Base Visor - Adds a specific HUD and traits to you. |
|---|
| /obj/item/modular_computer/tablet/nukeops | Given to Nuke Ops members. |
|---|---|
| /obj/item/modular_computer/tablet/integrated | Borg Built-in tablet interface |
How module computer programs work +Ok. so a quick rundown on how to make a program. This is kind of a shitty documentation, but oh well I was asked to. +Base setup+This is how the base program is setup. the rest is mostly tgui stuff. I'll use the ntnetmonitor as a base +
+Preinstalls+Now. for pre-installing stuff. +Primarily done for consoles, there's an install_programs() proc in the console presets file in the machines folder. +for example, the command console one. +
+Basically, you want to do cpu.hard_drive.store_file(new/program path here()) and put it in the subtype's install_programs(). +Probably pretty self explanatory, but just in case. +Will probably be expanded when new features come around or I get asked to mention something. |
| /datum/computer_file/program/job_management | The time since the last job opening was created |
|---|
| /datum/computer_file/program/ntnetdownload/syndicate | This app only lists programs normally found in the emagged section of the normal downloader app |
|---|
| CANVAS_PAPER_COST | how much paper it takes from the printer to create a canvas. |
|---|---|
| /datum/computer_file/program/portrait_printer |
how much paper it takes from the printer to create a canvas.
| /datum/computer_file/program/radar/lifeline | A program that tracks crew members via suit sensors |
|---|---|
| /datum/computer_file/program/radar/fission360 | A program that tracks nukes and nuclear accessories |
| /obj/item/computer_hardware/hard_drive/small/nukeops | For tablets given to nuke ops |
|---|
| /obj/item/computer_hardware/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. |
|---|
Movespeed modification datums. +
+Move speed is now calculated by using modifier datums which are added to mobs. Some of them (nonvariable ones) are globally cached, the variable ones are instanced and changed based on need. +This gives us the ability to have multiple sources of movespeed, reliabily keep them applied and remove them when they should be +THey can have unique sources and a bunch of extra fancy flags that control behaviour +Previously trying to update move speed was a shot in the dark that usually meant mobs got stuck going faster or slower +Movespeed modification list is a simple key = datum system. Key will be the datum's ID if it is overridden to not be null, or type if it is not. +DO NOT override datum IDs unless you are going to have multiple types that must overwrite each other. It's more efficient to use types, ID functionality is only kept for cases where dynamic creation of modifiers need to be done. +When update movespeed is called, the list of items is iterated, according to flags priority and a bunch of conditions +this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob +can next move +Key procs + | |
| /proc/get_cached_movespeed_modifier | Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO! |
|---|---|
Used for variable slowdowns like hunger/health loss/etc, works somewhat like the old list-based modification adds. Returns the modifier datum if successful +How this SHOULD work is: +1. Ensures type_id_datum one way or another refers to a /variable datum. This makes sure it can't be cached. This includes if it's already in the modification list. +2. Instantiate a new datum if type_id_datum isn't already instantiated + in the list, using the type. Obviously, wouldn't work for ID only. +3. Add the datum if necessary using the regular add proc +4. If any of the rest of the args are not null (see: multiplicative slowdown), modify the datum +5. Update if necessary + | |
| /proc/movespeed_data_null_check | Checks if a move speed modifier is valid and not missing any data |
| /datum/news_network | Contains all the news datum of a newscaster system. |
|---|
| /obj/item/energy_katana | The space ninja's katana. |
|---|
| /obj/item/grenade/plastic/c4/ninja | 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. |
|---|
| /obj/item/clothing/gloves/space_ninja | Space ninja's gloves. Gives access to a number of special interactions. |
|---|
| /obj/item/clothing/head/helmet/space/space_ninja | Space ninja's hood. Provides armor and blocks AI tracking. |
|---|
| /obj/item/clothing/mask/gas/space_ninja | Space ninja's mask. Makes you sound like a real anime girl. Barely able to be considered a real upside. |
|---|
| /obj/structure/energy_net | Energy net which ensnares prey until it is destroyed. Used by space ninjas. |
|---|
| /obj/item/throwing_star/stamina/ninja | a throwing star which specifically makes sure you know it came from a real ninja. |
|---|
| /obj/item/clothing/shoes/space_ninja | Space ninja's shoes. Gives him armor on his feet. |
|---|
| /obj/item/clothing/suit/space/space_ninja | Space ninja's suit. Provides him with most of his powers. |
|---|
| /obj/item/clipboard | Clipboard |
|---|
| MAX_PAPER_LENGTH | Paper +also scraps of paper |
|---|---|
| /obj/item/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 |
| /obj/item/paper/construction | Construction paper |
Paper +also scraps of paper
+lipstick wiping is in code/game/objects/items/weapons/cosmetics.dm!
| /obj/item/paper/guides/jobs/hydroponics | Job guides n' fluff |
|---|---|
| /obj/item/paper/guides/cogstation/job_changes | Cogstation. |
| /obj/item/paper/fluff/stations/centcom/disk_memo | CentCom |
| /obj/item/paper/fluff/stations/lavaland/orm_notice | Lavaland |
| PHOTO_GREYSCALE | For use with the color_mode var. Photos will be printed in greyscale while the var has this value. |
|---|---|
| PHOTO_COLOR | For use with the color_mode var. Photos will be printed in full color while the var has this value. |
| PAPER_TONER_USE | How much toner is used for making a copy of a paper. |
| PHOTO_TONER_USE | How much toner is used for making a copy of a photo. |
| DOCUMENT_TONER_USE | How much toner is used for making a copy of a document. |
| ASS_TONER_USE | How much toner is used for making a copy of an ass. |
| MAX_COPIES_AT_ONCE | The maximum amount of copies you can make with one press of the copy button. |
How much toner is used for making a copy of an ass.
How much toner is used for making a copy of a document.
The maximum amount of copies you can make with one press of the copy button.
How much toner is used for making a copy of a paper.
For use with the color_mode var. Photos will be printed in full color while the var has this value.
For use with the color_mode var. Photos will be printed in greyscale while the var has this value.
How much toner is used for making a copy of a photo.
| /obj/machinery/duct/multilayered | has a total of 5 layers and doesnt give a shit about color. its also dumb so doesnt autoconnect. |
|---|
| /obj/machinery/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 |
|---|---|
| /obj/machinery/plumbing/input | We can empty beakers in here and everything |
| /obj/machinery/plumbing/output | We can fill beakers in here and everything. we dont inheret from input because it has nothing that we need |
| /obj/machinery/plumbing/acclimator | this the plumbing version of a heater/freezer. |
|---|
| /obj/machinery/plumbing/filter | chemical plumbing filter. If it's not filtered by left and right, it goes straight. |
|---|
| /obj/machinery/plumbing/pill_press | We take a constant input of reagents, and produce a pill once a set volume is reached |
|---|
| /obj/machinery/plumbing/liquid_pump | We pump liquids from activated(plungerated) geysers to a plumbing outlet. We don't need to be wired. |
|---|
| /obj/machinery/plumbing/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 |
|---|
| /obj/machinery/plumbing/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 |
|---|
| /obj/machinery/plumbing/synthesizer | A single machine that produces a single chem. Can be placed in unison with others through plumbing to create chemical factories |
|---|
| APC_ELECTRONICS_MISSING | There are no electronics in the APC. |
|---|---|
| APC_ELECTRONICS_INSTALLED | The electronics are installed but not secured. |
| APC_ELECTRONICS_SECURED | The electronics are installed and secured. |
| APC_COVER_CLOSED | The APCs cover is closed. |
| APC_COVER_OPENED | The APCs cover is open. |
| APC_COVER_REMOVED | The APCs cover is missing. |
| APC_NOT_CHARGING | The APC is not charging. |
| APC_CHARGING | The APC is charging. |
| APC_FULLY_CHARGED | The APC is fully charged. |
| APC_CHANNEL_OFF | The APCs power channel is manually set off. |
| APC_CHANNEL_AUTO_OFF | The APCs power channel is automatically off. |
| APC_CHANNEL_ON | The APCs power channel is manually set on. |
| APC_CHANNEL_AUTO_ON | The APCs power channel is automatically on. |
| AUTOSET_FORCE_OFF | The APC turns automated and manual power channels off. |
| AUTOSET_OFF | The APC turns automated power channels off. |
| AUTOSET_ON | The APC turns automated power channels on. |
| APC_NO_POWER | The APC either isn't attached to a powernet or there is no power on the external powernet. |
| APC_LOW_POWER | The APCs external powernet does not have enough power to charge the APC. |
| APC_HAS_POWER | The APCs external powernet has enough power to charge the APC. |
| APC_DRAIN_TIME | How long it takes an ethereal to drain or charge APCs. Also used as a spam limiter. |
| APC_POWER_GAIN | How much power ethereals gain/drain from APCs. |
| APC_RESET_EMP | The wire value used to reset the APCs wires after one's EMPed. |
| UPSTATE_COVER_SHIFT | The bit shift for the APCs cover status. |
| UPSTATE_OPENED1 | The bitflag representing the APCs cover being open for icon purposes. |
| UPSTATE_OPENED2 | The bitflag representing the APCs cover being missing for icon purposes. |
| UPSTATE_CELL_IN | The APC has a power cell. |
| UPSTATE_BROKE | The APC is broken or damaged. |
| UPSTATE_MAINT | The APC is undergoing maintenance. |
| UPSTATE_BLUESCREEN | The APC is emagged or malfed. |
| UPSTATE_WIREEXP | The APCs wires are exposed. |
| UPOVERLAY_OPERATING | Bitflag indicating that the APCs operating status overlay should be shown. |
| UPOVERLAY_LOCKED | Bitflag indicating that the APCs locked status overlay should be shown. |
| UPOVERLAY_CHARGING_SHIFT | Bit shift for the charging status of the APC. |
| UPOVERLAY_EQUIPMENT_SHIFT | Bit shift for the equipment status of the APC. |
| UPOVERLAY_LIGHTING_SHIFT | Bit shift for the lighting channel status of the APC. |
| UPOVERLAY_ENVIRON_SHIFT | Bit shift for the environment channel status of the APC. |
| UPOVERLAY_HIJACKED | Update for hijack overlays |
The APCs power channel is automatically off.
The APCs power channel is automatically on.
The APCs power channel is manually set off.
The APCs power channel is manually set on.
The APC is charging.
The APCs cover is closed.
The APCs cover is open.
The APCs cover is missing.
How long it takes an ethereal to drain or charge APCs. Also used as a spam limiter.
The electronics are installed but not secured.
There are no electronics in the APC.
The electronics are installed and secured.
The APC is fully charged.
The APCs external powernet has enough power to charge the APC.
The APCs external powernet does not have enough power to charge the APC.
The APC is not charging.
The APC either isn't attached to a powernet or there is no power on the external powernet.
How much power ethereals gain/drain from APCs.
The wire value used to reset the APCs wires after one's EMPed.
The APC turns automated and manual power channels off.
The APC turns automated power channels off.
The APC turns automated power channels on.
Bit shift for the charging status of the APC.
Bit shift for the environment channel status of the APC.
Bit shift for the equipment status of the APC.
Update for hijack overlays
Bit shift for the lighting channel status of the APC.
Bitflag indicating that the APCs locked status overlay should be shown.
Bitflag indicating that the APCs operating status overlay should be shown.
The APC is emagged or malfed.
The APC is broken or damaged.
The APC has a power cell.
The bit shift for the APCs cover status.
The APC is undergoing maintenance.
The bitflag representing the APCs cover being open for icon purposes.
The bitflag representing the APCs cover being missing for icon purposes.
The APCs wires are exposed.
| /obj/machinery/atmospherics/components/trinary/nuclear_reactor | What is this? +Moderators list (Not gonna keep this accurate forever): +Fuel Type: +Oxygen: Power production multiplier. Allows you to run a low plasma, high oxy mix, and still get a lot of power. +Plasma: Power production gas. More plasma -> more power, but it enriches your fuel and makes the reactor much, much harder to control. +Tritium: Extremely efficient power production gas. Will cause chernobyl if used improperly. +Moderation Type: +N2: Helps you regain control of the reaction by increasing control rod effectiveness, will massively boost the rad production of the reactor. +CO2: Super effective shutdown gas for runaway reactions. MASSIVE RADIATION PENALTY! +Pluoxium: Same as N2, but no cancer-rads! +Permeability Type: +BZ: Increases your reactor's ability to transfer its heat to the coolant, thus letting you cool it down faster (but your output will get hotter) +Water Vapour: More efficient permeability modifier +Hyper Noblium: Extremely efficient permeability increase. (10x as efficient as bz) +Depletion type: +Nitryl: When you need weapons grade plutonium yesterday. Causes your fuel to deplete much, much faster. Not a huge amount of use outside of sabotage. +Sabotage: +Meltdown: +Flood reactor moderator with plasma, they won't be able to mitigate the reaction with control rods. +Shut off coolant entirely. Raise control rods. +Swap all fuel out with spent fuel, as it's way stronger. +Blowout: +Shut off exit valve for quick overpressure. +Cause a pipefire in the coolant line (LETHAL). +Tack heater onto coolant line (can also cause straight meltdown) +Tips: +Be careful to not exhaust your plasma supply. I recommend you DON'T max out the moderator input when youre running plasma + o2, or you're at a tangible risk of running out of those gasses from atmos. +The reactor CHEWS through moderator. It does not do this slowly. Be very careful with that! |
|---|
| /obj/machinery/the_singularitygen | SINGULARITY SPAWNER |
|---|
| SUPERMATTER_ACCENT_SOUND_MIN_COOLDOWN | to prevent accent sounds from layering |
|---|
to prevent accent sounds from layering
| /obj/item/gun/ballistic/automatic/magrifle/pistol | magpistol |
|---|
| /obj/item/gun/ballistic/automatic/pistol/antitank | Anti Tank Pistol |
|---|
| /obj/item/gun/energy/lasercannon | Laser Cannon |
|---|---|
| /obj/item/gun/energy/laser/bluetag | Laser Tag |
| /obj/item/gun/medbeam/mech | Mech Version |
|---|
| MINIMUM_PIXELS_TO_ANIMATE | Minimum projectile pixels to move before it animate()S, below this it's a direct set. |
|---|---|
| PROJECTILE_FIRING_INSTANT_TRAVEL_AMOUNT | Pixels to instantly travel on firing. |
| /proc/is_energy_reflectable_projectile | //// MISC HELPERS //////// +Is this atom reflectable with ""standardized"" reflection methods like you know eshields and deswords and similar |
Minimum projectile pixels to move before it animate()S, below this it's a direct set.
Pixels to instantly travel on firing.
NOTE: IF YOU UPDATE THE REAGENT-SYSTEM, ALSO UPDATE THIS README. +
+Random important notes:+An objects on_reagent_change will be called every time the objects reagents change. Useful if you want to update the objects icon etc. +About the Holder:+The holder (reagents datum) is the datum that holds a list of all reagents currently in the object.It also has all the procs needed to manipulate reagents +
+About Reagents:+Reagents are all the things you can mix and fille in bottles etc. This can be anything from rejuvs over water to ... iron. Each reagent also has a few procs - i'll explain those below. +
+Important variables:+
+A good website for color calculations: http://www.psyclops.com/tools/rgb/ +About Recipes:+Recipes are simple datums that contain a list of required reagents and a result. They also have a proc that is called when the recipe is matched. +
+About the Tools:+By default, all atom have a reagents var - but its empty. if you want to use an object for the chem. system you'll need to add something like this in its new proc: +
+Other important stuff:+
+GOON CHEMS README:+Credit goes to Cogwerks, and all the other goonstation coders for the original idea and implementation of this over at goonstation. +
|
How to code fermichem reactions: +First off, probably read though the readme for standard reagent mechanisms, this builds on top of that. +#bitflags
+for
+for |
| /obj/machinery/chem_dispenser/apothecary | An unique, less efficient model found in the medbay apothecary room. |
|---|
| /datum/reagent/consumable/ethanol | I don't know who made this header before I refactored alcohols but I'm going to fucking strangle them because it was so ugly, holy Christ |
|---|
| /datum/reagent/consumable/orangejuice | DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum |
|---|
| /datum/reagent/consumable/entpoly | Lavaland Flora Reagents |
|---|
| /datum/reagent/lube/superlube | Stronger kind of lube. Applies TURF_WET_SUPERLUBE. |
|---|---|
| /datum/reagent/colorful_reagent/crayonpowder | Coloured Crayon Powder |
| /datum/reagent/plantnutriment | Hydroponics stuff |
| /datum/reagent/toxin | Poison stuff (Toxins & Acids) |
|---|
| /datum/chemical_reaction/virus_food | VIROLOGY |
|---|---|
| /datum/chemical_reaction/surfactant | foam and foam precursor |
| /datum/chemical_reaction/ammonia | Cleaning and hydroponics |
| /datum/chemical_reaction/acetone | Other goon stuff |
| /datum/chemical_reaction/white_glitter/blue | Glitter |
| /datum/chemical_reaction/synth_blood | Synthblood |
| /obj/item/reagent_containers/pill/shadowtoxin | this pill is used only in a legion mob drop |
|---|---|
| /obj/item/reagent_containers/pill/zoom | drugs |
| /obj/item/reagent_containers/spray/waterflower/superlube | Subtype used for the lavaland clown ruin. |
|---|
| MULTIZ_PIPE_UP | Defines for determining which way a multiz disposal element should travel |
|---|---|
| MULTIZ_PIPE_DOWN | Defines for determining which way a multiz disposal element should travel |
| /obj/structure/disposalpipe/trunk/multiz/down | Set the multiz direction of your trunk. 1 = up, 2 = down |
Defines for determining which way a multiz disposal element should travel
Defines for determining which way a multiz disposal element should travel
| /obj/machinery/research/explosive_compressor | The explosive compressor machine used in anomaly core production. |
|---|
| /obj/item/raw_anomaly_core | The current precursor to anomaly cores, these are manufactured into 'finished' anomaly cores for use in research, items, and more. |
|---|
| /datum/design |
|---|
| /datum/design/board/aicore | AI Module Disks |
|---|
| /datum/design/board/autobottler | AutoBottler Designs |
|---|
| /datum/design/rods | ///////Autolathe Designs///// |
|---|
| /datum/design/apc_board | ///////Autolathe Designs ///// |
|---|
| /datum/design/kitchen_knife | //////Autolathe Designs ///// |
|---|---|
| /datum/design/scalpel | Medical |
| /datum/design/beanbag_slug | //////Autolathe Designs ///// |
|---|---|
| /datum/design/large_welding_tool | Hacked Gear |
| /datum/design/signaler | //////Autolathe Designs ///// |
|---|---|
| /datum/design/camera | MISC |
| /datum/design/bucket | //////Autolathe Designs////// |
|---|
| /datum/design/milk | Biogenerator Designs |
|---|
| /datum/design/beacon | Blue Space |
|---|
| /datum/design/board | Computer Boards |
|---|
| /datum/design/board/cargo | CARGO Boards |
|---|
| /datum/design/board/comm_monitor | ENGINE Boards |
|---|
| /datum/design/board/pandemic | MEDICAL Boards |
|---|
| /datum/design/board/rdcamera | SCI Boards |
|---|
| /datum/design/board/seccamera | SECURITY Boards |
|---|
| /datum/design/disk/normal | Computer Parts |
|---|
| /datum/design/intellicard | Non-Board Computer Stuff |
|---|---|
| /datum/design/nanite_remote | Nanite Devices |
| /datum/design/design_disk | Disk Construction Disks |
| /datum/design/chestmob | Limb Grower Designs |
|---|
| /datum/design/board/recycler | MISC Boards |
|---|
| /datum/design/board/ore_silo | CARGO Boards |
|---|
| /datum/design/board/smes | ENGINE Boards |
|---|
| /datum/design/board/limbgrower | MEDICAL Boards |
|---|
| /datum/design/board/teleport_station | SCI Boards |
|---|
| /datum/design/board/gibber | CIV Boards |
|---|
| /datum/design/board/ripley_main | Mecha Module Disks |
|---|---|
| /datum/design/mech_scattershot | Mecha Equpment |
| /datum/design/borg_upgrade_rename | Borg Upgrades |
|---|
| /datum/design/mmi | Medical Tools |
|---|---|
| /datum/design/bodybag | Body Bags |
| /datum/design/defibrillator | Defibrillator Tech |
| /datum/design/cyberimp_welding | Cybernetic Implants |
| /datum/design/implanter | Regular Implants |
| /datum/design/ipc_stomach | Synth Organs |
| /datum/design/surgery | Surgery Designs |
| /datum/design/basic_l_arm | Medical Prosthetics |
| /datum/design/acclimator | Plumbing |
| /datum/design/cargo_express | Mining |
|---|
| /datum/design/health_hud | HUDs |
|---|---|
| /datum/design/welding_mask | Misc |
| /datum/design/broom | Janitor Designs |
| /datum/design/holosign | Holosign Designs |
| /datum/design/quantum_keycard | Tools |
| /datum/design/reactive_armour | Armour |
| /datum/design/seclite | Security |
| /datum/design/meteor_defence | Meteors |
| /datum/design/tackle_dolphin | Tackle Gloves |
| /datum/design/oxygen_tank | Internal Tanks |
| /datum/design/sticky_tape | Tape |
| /datum/design/shuttle_speed_upgrade | Shuttle Upgrades |
| /datum/design/nanites/metabolic_synthesis | UTILITY NANITES |
|---|---|
| /datum/design/nanites/regenerative | MEDICAL NANITES |
| /datum/design/nanites/nervous | AUGMENTATION NANITES |
| /datum/design/nanites/glitch | DEFECTIVE NANITES |
| /datum/design/nanites/flesh_eating | WEAPONIZED NANITES |
| /datum/design/nanites/shock | SUPPRESSION NANITES |
| /datum/design/nanites/sensor_health | SENSOR NANITES |
| /datum/design/nanites/kickstart | NANITE PROTOCOLS |
| /datum/design/basic_cell | Power |
|---|
| /datum/design/plasteel_alloy | SMELTABLE ALLOYS |
|---|
| /datum/design/RPED | Stock Parts |
|---|
| /datum/design/board/subspace_receiver | Subspace Telecomms |
|---|
| /datum/design/rcd_upgrade/frames | Tools |
|---|---|
| /datum/design/alienwrench | Alien Tools |
| /datum/design/alienscalpel | Alien Surgical Tools |
| /datum/design/c38/sec | Weapons & Ammo |
|---|
| /obj/item/relic | SPECIAL ITEMS |
|---|
| /datum/nanite_program/protocol | A nanite program containing a behaviour protocol. Only one protocol of each class can be active at once. |
|---|
| /datum/techweb_node/alientech | Alien technology |
|---|
| /datum/techweb_node/light_apps | B.E.P.I.S. Locked Techs |
|---|
| /datum/techweb_node/biotech | Biotech |
|---|
| /datum/techweb_node/bluespace_basic | Bluespace tech |
|---|---|
| /datum/techweb_node/basic_shuttle_tech | shuttle tech |
| /datum/techweb_node/comptech | Computer tech |
|---|
| /datum/techweb_node/engineering | engineering tech |
|---|
| /datum/techweb_node/mech | mech technology |
|---|
| /datum/techweb_node/cloning | Medical |
|---|---|
| /datum/techweb_node/surplus_limbs | Cybernetics |
| /datum/techweb_node/imp_wt_surgery | Advanced Surgery |
| /datum/techweb_node/datatheory | data theory tech |
|---|---|
| /datum/techweb_node/basic_plasma | plasma tech |
| /datum/techweb_node/emp_basic | EMP tech |
| /datum/techweb_node/clown | Clown tech |
| /datum/techweb_node/sticky_basic | Tape tech |
| /datum/techweb_node/nanite_base | Nanites |
|---|
| /datum/techweb_node/robotics | robotics tech |
|---|
| /datum/techweb_node/basic_tools | Tools |
|---|
| /datum/techweb_node/weaponry | weaponry tech |
|---|
| /obj/item/slimecross | SLIME CROSSBREEDS |
|---|
| /datum/status_effect/firecookie | CONSUMING EXTRACTS |
|---|---|
| /datum/status_effect/stabilized | STABILIZED EXTRACTS |
| /obj/item/slimepotion/slime_reviver | Unique things. |
|---|
| /obj/item/slime_extract | Slime Extracts |
|---|---|
| /obj/item/slimepotion | Slime-derived potions |
| /turf/open/water/cursed_spring | Turns whoever enters into a mob |
|---|
| /obj/item/disk/design_disk/adv/knight_gear | Wizard tower item |
|---|---|
| /obj/effect/mob_spawn/human/lavaland_syndicate | Syndicate Listening Post |
| /obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/escape | lavaland clown planet papers |
|---|
| /obj/item/paper/fluff/stations/lavaland/sloth/note | lavaland slot ruin items |
|---|
| /obj/item/paper/fluff/stations/lavaland/surface/henderson_report | lavaland surface papers |
|---|
| /obj/item/paper/fluff/ruins/djstation | djstation items |
|---|
| /obj/item/paper/fluff/ruins/thederelict/equipment | thederelict items |
|---|---|
| /obj/machinery/computer/vaultcontroller | Vault controller for use on the derelict/KS13. |
| /obj/machinery/door/airlock/vault/derelict | Airlock that can't be deconstructed, broken or hacked. |
| /obj/item/paper/fluff/ruins/asteroid4/extraction | asteroid4 items |
|---|
| /obj/item/paper/crumpled/ruins/bigderelict1/manifest | bigderelict1 items |
|---|
| /obj/item/disk/design_disk/adv/cleric_mace | cleric's den items. |
|---|
| /obj/item/paper/fluff/ruins/crashedclownship/true_nation | crashedclownship items |
|---|
| /obj/item/paper/fluff/ruins/deepstorage/water_concern | deepstorage items |
|---|
| /obj/item/paper/fluff/ruins/listeningstation/reports | listening station |
|---|
| /obj/item/storage/backpack/satchel/flat/secret/miracle_ruin | miracle ruin |
|---|
| /obj/item/paper/fluff/ruins/oldstation | Oldstation items |
|---|
| /obj/item/paper/crumpled/ruins/originalcontent | originalcontent items |
|---|
| /obj/item/paper/fluff/ruins/skelter/cloner | skelter items |
|---|
| /obj/item/paper/fluff/ruins/spacehotel/notice | spacehotel items |
|---|
| /obj/item/circuitboard/computer/white_ship/ruin | ruined whiteship |
|---|
| /proc/hull_shielding_get_tiles_around_area | HELPER FILE FOR SHIELDING +Gets hull exterior adjacent tiles of a certain area +Area method. +EXPENSIVE. +If the area itself is already considered exterior, it'll find all tiles inside it that's next to an interior area. |
|---|---|
| /proc/hull_shielding_get_tiles_in_z | Gets hull adjacent exterior tiles of an entire zlevel +EXPENSIVE. +Gets the tiles in the exterior area touching to a non-exterior area |
| GOODY_FREE_SHIPPING_MAX | How many goody orders we can fit in a lockbox before we upgrade to a crate |
|---|---|
| CRATE_TAX | How much to charge oversized goody orders |
How much to charge oversized goody orders
How many goody orders we can fit in a lockbox before we upgrade to a crate
| /obj/effect/proc_holder/spell/cone/staggered | This type of cone gradually affects each level of the cone instead of affecting the entire area at once. |
|---|
| /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser | Construct Spells |
|---|
| /datum/surgery/repair_bone_hairline | BONE FIXING SURGERIES////// +Repair Hairline Fracture (Severe) |
|---|---|
| /datum/surgery/repair_bone_compound | Repair Compound Fracture (Critical) |
| /datum/surgery_step/repair_bone_hairline | Repair Hairline Fracture (Severe) |
| /datum/surgery_step/reset_compound_fracture | Reset Compound Fracture (Crticial) |
| /datum/surgery_step/repair_bone_compound | Repair Compound Fracture (Crticial) |
| /datum/surgery/debride | BURN FIXING SURGERIES////// +Debride burnt flesh |
|---|---|
| /datum/surgery_step/debride | Debride |
| /datum/surgery_step/dress | Dressing burns |
| /datum/surgery/healing/brute | BRUTE |
|---|---|
| /datum/surgery_step/heal/brute/basic | BRUTE STEPS |
| /datum/surgery/healing/burn | BURN |
| /datum/surgery_step/heal/burn/basic | BURN STEPS |
| /datum/surgery/healing/combo | COMBO |
| /datum/surgery_step/heal/combo | COMBO STEPS |
| /datum/surgery_step/replace_limb | AUGMENTATION SURGERIES |
|---|
| /obj/item/organ/eyes/robotic | Robotic |
|---|
| VOG_MAX_STANDARD_POWER | anything above this requires adminbus, to prevent a cultist from stacking chaplain + cult + specific listener = 8x, which is enough to instantly kill someone with damage. |
|---|---|
| VOG_MAX_BURST_DAMAGE | max damage we can do in one "blast" to a listener |
| VOG_MAX_BURST_HEAL | max healing we can do in one "blast" to a listener |
| /proc/voice_of_god | VOICE OF GOD |
| /proc/get_vog_special | get special role multiplier for voice of god. No double dipping. |
| /obj/item/organ/vocal_cords/velvet | ENTHRAL VELVET CHORDS |
| /proc/velvetspeech | FermiChem |
max damage we can do in one "blast" to a listener
max healing we can do in one "blast" to a listener
anything above this requires adminbus, to prevent a cultist from stacking chaplain + cult + specific listener = 8x, which is enough to instantly kill someone with damage.
| REALIGN_INNARDS | PUNCTURE FIXING SURGERIES |
|---|---|
| /datum/surgery/repair_puncture | Repair puncture wounds |
| /datum/surgery_step/repair_innards | realign the blood vessels so we can reweld them |
| /datum/surgery_step/seal_veins | Sealing the vessels back together |
PUNCTURE FIXING SURGERIES
| /datum/surgery_step/robot_heal/basic | STEPS |
|---|
| /proc/message_to_html | Message-related procs |
|---|
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
| /proc/to_chat_immediate | Circumvents the message queue and sends the message +to the recipient (target) as soon as possible. |
|---|---|
| /proc/to_chat | Sends the message to the recipient (target). |
This folder should be placed on its own inside a codebase that wishes to use the TGS DMAPI. Warranty void if modified. +
APIs communicate with TGS in two ways. All versions implement TGS -> DM communication using /world/Topic. DM -> TGS communication, called the bridge method, is different for each version. |
This folder contains all DMAPI code not directly involved in an API. +
|
This DMAPI implements bridge using file output which TGS monitors for. +
|
This DMAPI implements bridge requests using file output which TGS monitors for. It has a safe mode restriction. +
|
This DMAPI implements bridge requests using HTTP GET requests to TGS. It has no security restrictions. +
|
External tgui definitions, such as src_object APIs. +Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
| /proc/tgui_Topic | Middleware for /client/Topic. |
|---|---|
Base state and helpers for states. Just does some sanity checks, +implement a proper state for in-depth checks. +Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
| /proc/default_ui_state | The sane defaults for a UI such as a computer or a machine. |
|---|---|
| /proc/ui_status_user_is_adjacent | Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living] check for finer observer interactions. |
| /proc/ui_status_only_living | Returns a UI status such that the dead will be able to watch, but not interact. |
| /proc/ui_status_user_is_abled | Returns a UI status such that users with debilitating conditions, such as +being dead or not having power for silicons, will not be able to interact. +Being dead will disable UI, being incapacitated will continue updating it, +and anything else will make it interactive. |
| /proc/ui_status_user_has_free_hands | Returns a UI status such that those without blocked hands will be able to interact, +but everyone else can only watch. |
| /proc/ui_status_user_is_advanced_tool_user | Returns a UI status such that advanced tool users will be able to interact, +but everyone else can only watch. |
| /proc/ui_status_silicon_has_access | Returns a UI status such that silicons will be able to interact with whatever +they would have access to if this was a machine. For example, AIs can +interact if there's cameras with wireless control is enabled. |
| /proc/ui_status_user_is_conscious_and_lying_down | Returns UI_INTERACTIVE if the user is conscious and lying down. +Returns UI_UPDATE otherwise. |
| /proc/ui_status_user_strictly_adjacent | Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not. +Return UI_CLOSE otherwise. |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
| /datum/tgui | tgui datum (represents a UI). |
|---|---|
| /proc/tgui_alert | Creates a TGUI alert window and returns the user's response. |
|---|---|
| /proc/tgui_alert_async | Creates an asynchronous TGUI alert window with an associated callback. |
| /datum/tgui_modal | Datum used for instantiating and using a TGUI-controlled modal that prompts the user with +a message and has buttons for responses. |
| /datum/tgui_modal/async | An asynchronous version of tgui_modal to be used with callbacks instead of waiting on user responses. |
| /proc/tgui_input_list | Creates a TGUI input list window and returns the user's response. |
|---|---|
| /proc/tgui_input_list_async | Creates an asynchronous TGUI input list window with an associated callback. |
| /datum/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 |
| /datum/tgui_list_input/async | An asynchronous version of tgui_list_input to be used with callbacks instead of waiting on user responses. |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
| TGUI_TELEMETRY_MAX_CONNECTIONS | Maximum number of connection records allowed to analyze. +Should match the value set in the browser. |
|---|---|
| TGUI_TELEMETRY_RESPONSE_WINDOW | Maximum time allocated for sending a telemetry packet. |
Maximum number of connection records allowed to analyze. +Should match the value set in the browser.
Maximum time allocated for sending a telemetry packet.
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
| /datum/tgui_panel | tgui_panel datum +Hosts tgchat and other nice features. |
|---|---|
What is unit testing?+Unit tests are automated code to verify that parts of the game work exactly as they should. For example, a test to make sure that the amputation surgery actually amputates the limb. These are ran every time a PR is made, and thus are very helpful for preventing bugs from cropping up in your code that would've otherwise gone unnoticed. For example, would you have thought to check that beach boys would still work the same after editing pizza? If you value your time, probably not. +On their most basic level, when How do I write one?+
All unit test related code is in
To make a new unit test, you simply need to define a For example, let's suppose that we are creating a test to make sure a proc
+This defines our new unit test,
+As you can hopefully tell, we're simply checking if the output of
Open
+Then, run tgstation.dmb in Dream Daemon. Don't bother trying to connect, you won't need to. You'll be able to see the outputs of all the tests. You'll get to see which tests failed and for what reason. If they all pass, you're set! +How to think about tests+Unit tests exist to prevent bugs that would happen in a real game. Thus, they should attempt to emulate the game world wherever possible. For example, the quick swap sanity test emulates a real scenario of the bug it fixed occurring by creating a character and giving it real items. The unrecommended alternative would be to create special test-only items. This isn't a hard rule, the reagent method exposure tests create a test-only reagent for example, but do keep it in mind. +Unit tests should also be just that--testing units of code. For example, instead of having one massive test for reagents, there are instead several smaller tests for testing exposure, metabolization, etc. +The unit testing API+You can find more information about all of these from their respective doc comments, but for a brief overview: +
Final Notes+
|
| TEST_ASSERT | Asserts that a condition is true +If the condition is not true, fails the test |
|---|---|
| TEST_ASSERT_EQUAL | Asserts that the two parameters passed are equal, fails otherwise +Optionally allows an additional message in the case of a failure |
| TEST_ASSERT_NOTEQUAL | Asserts that the two parameters passed are not equal, fails otherwise +Optionally allows an additional message in the case of a failure |
| TEST_FOCUS | Only run the test provided within the parentheses
+This is useful for debugging when you want to reduce noise, but should never be pushed
+Intended to be used in the manner of TEST_FOCUS(/datum/unit_test/math) |
| UNIT_TEST_PASSED | Constants indicating unit test completion status |
| TRAIT_SOURCE_UNIT_TESTS | A trait source when adding traits through unit tests |
Asserts that a condition is true +If the condition is not true, fails the test
Asserts that the two parameters passed are equal, fails otherwise +Optionally allows an additional message in the case of a failure
Asserts that the two parameters passed are not equal, fails otherwise +Optionally allows an additional message in the case of a failure
Only run the test provided within the parentheses
+This is useful for debugging when you want to reduce noise, but should never be pushed
+Intended to be used in the manner of TEST_FOCUS(/datum/unit_test/math)
A trait source when adding traits through unit tests
Constants indicating unit test completion status
| UNIT_TEST_SAVING_FLAVOR_TEXT | CIT TESTS |
|---|
CIT TESTS
| /datum/unit_test/dynamic_roundstart_ruleset_sanity | Verifies that roundstart dynamic rulesets are setup properly without external configuration. |
|---|---|
| /datum/unit_test/dynamic_unique_antag_flags | Verifies that dynamic rulesets have unique antag_flag. |
| /datum/unit_test/spawn_mobs | Unit test that spawns all mobs that can be spawned by golden slimes |
|---|
| /datum/unit_test/tgui_create_message | Test that TGUI_CREATE_MESSAGE is correctly implemented |
|---|
| /datum/uplink_item | Uplink Items |
|---|
| /obj/vehicle/sealed/mecha | WELCOME TO MECHA.DM, ENJOY YOUR STAY |
|---|
| /obj/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. |
|---|
| /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun | Syringe Gun |
|---|---|
| /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam | Medical Beam |
| /obj/item/mecha_parts/mecha_equipment/teleporter | TELEPORTER |
|---|---|
| /obj/item/mecha_parts/mecha_equipment/wormhole_generator | WORMHOLE GENERATOR |
| /obj/item/mecha_parts/mecha_equipment/gravcatapult | GRAVITATIONAL CATAPULT |
| /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster | ARMOR BOOSTER MODULES |
| /obj/item/mecha_parts/mecha_equipment/repair_droid | REPAIR DROID |
| /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay | TESLA ENERGY RELAY |
| /obj/item/mecha_parts/mecha_equipment/generator | GENERATOR |
| /obj/item/mecha_parts/mecha_equipment/thrusters | THRUSTERS |
| /datum/action/vehicle/sealed/mecha/mech_defense_mode | Specific Ability Actions |
|---|---|
| /datum/action/vehicle/sealed/mecha/swap_seat | swap seats, for two person mecha |
| /datum/component/construction/mecha | Construction datums |
|---|
| /obj/item/mecha_parts | Mecha Parts |
|---|---|
| /obj/item/mecha_parts/chassis/ripley | Ripley |
| /obj/item/mecha_parts/chassis/odysseus | Odysseus |
| /obj/item/mecha_parts/chassis/gygax | Gygax |
| /obj/item/mecha_parts/chassis/medigax | Medical Gygax |
| /obj/item/mecha_parts/chassis/durand | Durand |
| /obj/item/mecha_parts/chassis/honker | HONK |
| /obj/item/mecha_parts/chassis/phazon | Phazon |
| /obj/item/circuitboard/mecha | Circuitboards |
| /obj/structure/mecha_wreckage | Mecha wreckage |
|---|
| /datum/data/vending_product | A datum that represents a product that is vendable |
|---|---|
| /obj/machinery/vending | Captalism in the year 2525, everything in a vending machine, even love |
| /world | Two possibilities exist: either we are alone in the Universe or we are not. Both are equally terrifying. ~ Arthur C. Clarke |
|---|
The absolute base class for everything
+A datum instantiated has no physical world prescence, use an atom if you want something +that actually lives in the world
+Be very mindful about adding variables to this class, they are inherited by every single +thing in the entire game, and so you can easily cause memory usage to rise a lot with careless +use of variables at this level
Vars | |
| active_timers | Active timers with this datum as the target |
|---|---|
| comp_lookup | Any datum registered to receive signals from this datum is in this list |
| datum_components | Components attached to this datum |
| datum_flags | Datum level flags |
| gc_destroyed | Tick count time when this object was destroyed. |
| signal_enabled | Is this datum capable of sending signals? |
| signal_procs | Lazy associated list in the structure of signals:proctype that are run when the datum receives that signal |
| status_traits | Status traits attached to this datum |
| tgui_shared_states | global |
| weak_reference | A weak reference to another datum |
Procs | |
| Destroy | Default implementation of clean-up code. |
| GetComponent | Return any component assigned to this datum of the given type +This will throw an error if it's possible to have more than one component of that type on the parent |
| GetComponents | Get all components of a given type that are attached to this datum |
| GetExactComponent | Return any component assigned to this datum of the exact given type +This will throw an error if it's possible to have more than one component of that type on the parent |
| LoadComponent | Get existing component of type, or create it and return a reference to it |
| RegisterSignal | Register to listen for a signal from the passed in target |
| TakeComponent | Transfer this component to another parent |
| Topic | Called when a href for this datum is clicked |
| TransferComponents | Transfer all components to target |
| UnregisterSignal | Stop listening to a given signal from target |
| _AddComponent | Creates an instance of new_type in the datum and attaches to it as parent
+Sends the COMSIG_COMPONENT_ADDED signal to the datum
+Returns the component that was created. Or the old component in a dupe situation where COMPONENT_DUPE_UNIQUE was set
+If this tries to add an component to an incompatible type, the component will be deleted and the result will be null. This is very unperformant, try not to do it
+Properly handles duplicate situations based on the dupe_mode var |
| _AddElement | Finds the singleton for the element type given and attaches it to src |
| _RemoveElement | Finds the singleton for the element type given and detaches it from src +You only need additional arguments beyond the type if you're using ELEMENT_BESPOKE |
| _SendSignal | Internal proc to handle most all of the signaling procedure
+Will runtime if used on datums with an empty component list
+Use the SEND_SIGNAL define instead |
| deserialize_json | Deserializes from JSON. Does not parse type. |
| deserialize_list | Accepts a LIST from deserialize_datum. Should return src or another datum. |
| process | This proc is called on a datum on every "cycle" if it is being processed by a subsystem. The time between each cycle is determined by the subsystem's "wait" setting. +You can start and stop processing a datum using the START_PROCESSING and STOP_PROCESSING defines. |
| serialize_json | Serializes into JSON. Does not encode type. |
| serialize_list | Return a LIST for serialize_datum to encode! Not the actual json! |
| ui_act | public |
| ui_assets | public |
| ui_close | public |
| ui_data | public |
| ui_host | private |
| ui_interact | public |
| ui_state | private |
| ui_static_data | public |
| ui_status | public |
| update_static_data | public |
Active timers with this datum as the target
Any datum registered to receive signals from this datum is in this list
+Lazy associated list in the structure of signal:registree/list of registrees
Components attached to this datum
+Lazy associated list in the structure of type:component/list of components
Datum level flags
Tick count time when this object was destroyed.
+If this is non zero then the object has been garbage collected and is awaiting either +a hard del by the GC subsystme, or to be autocollected (if it has no references)
Is this datum capable of sending signals?
+Set to true when a signal has been registered
Lazy associated list in the structure of signals:proctype that are run when the datum receives that signal
Status traits attached to this datum
global
+Associative list of JSON-encoded shared states that were set by +tgui clients.
A weak reference to another datum
Default implementation of clean-up code.
+This should be overridden to remove all references pointing to the object being destroyed, if +you do override it, make sure to call the parent and return it's return value by default
+Return an appropriate QDEL_HINT to modify handling of your deletion; +in most cases this is QDEL_HINT_QUEUE.
+The base case is responsible for doing the following
+Returns QDEL_HINT_QUEUE
Return any component assigned to this datum of the given type +This will throw an error if it's possible to have more than one component of that type on the parent
+Arguments:
+Get all components of a given type that are attached to this datum
+Arguments:
+Return any component assigned to this datum of the exact given type +This will throw an error if it's possible to have more than one component of that type on the parent
+Arguments:
+Get existing component of type, or create it and return a reference to it
+Use this if the item needs to exist at the time of this call, but may not have been created before now
+Arguments:
+Register to listen for a signal from the passed in target
+This sets up a listening relationship such that when the target object emits a signal +the source datum this proc is called upon, will recieve a callback to the given proctype +Return values from procs registered must be a bitfield
+Arguments:
+Transfer this component to another parent
+Component is taken from source datum
+Arguments:
+Called when a href for this datum is clicked
+Sends a COMSIG_TOPIC signal
Transfer all components to target
+All components from source datum are taken
+Arguments:
+Stop listening to a given signal from target
+Breaks the relationship between target and source datum, removing the callback when the signal fires +Doesn't care if a registration exists or not
+Arguments:
+Creates an instance of new_type in the datum and attaches to it as parent
+Sends the COMSIG_COMPONENT_ADDED signal to the datum
+Returns the component that was created. Or the old component in a dupe situation where COMPONENT_DUPE_UNIQUE was set
+If this tries to add an component to an incompatible type, the component will be deleted and the result will be null. This is very unperformant, try not to do it
+Properly handles duplicate situations based on the dupe_mode var
Finds the singleton for the element type given and attaches it to src
Finds the singleton for the element type given and detaches it from src +You only need additional arguments beyond the type if you're using ELEMENT_BESPOKE
Internal proc to handle most all of the signaling procedure
+Will runtime if used on datums with an empty component list
+Use the SEND_SIGNAL define instead
Deserializes from JSON. Does not parse type.
Accepts a LIST from deserialize_datum. Should return src or another datum.
This proc is called on a datum on every "cycle" if it is being processed by a subsystem. The time between each cycle is determined by the subsystem's "wait" setting. +You can start and stop processing a datum using the START_PROCESSING and STOP_PROCESSING defines.
+Since the wait setting of a subsystem can be changed at any time, it is important that any rate-of-change that you implement in this proc is multiplied by the delta_time that is sent as a parameter, +Additionally, any "prob" you use in this proc should instead use the DT_PROB define to make sure that the final probability per second stays the same even if the subsystem's wait is altered. +Examples where this must be considered:
+mytimer -= delta_time, not mytimer -= 1. This way, mytimer will always have the unit of secondsL.adjustFireLoss(20 * delta_time), not L.adjustFireLoss(20). This way, the damage per second stays constant even if the wait of the subsystem is changedif(DT_PROB(25, delta_time)), not if(prob(25)). This way, if the subsystem wait is e.g. lowered, there won't be a higher chance of this event happening per secondIf you override this do not call parent, as it will return PROCESS_KILL. This is done to prevent objects that dont override process() from staying in the processing list
Serializes into JSON. Does not encode type.
Return a LIST for serialize_datum to encode! Not the actual json!
public
+Called on a UI when the UI receieves a href. +Think of this as Topic().
+required action string The action/button that has been invoked by the user. +required params list A list of parameters attached to the button.
+return bool If the user's input has been handled and the UI should update.
public
+Called on an object when a tgui object is being created, allowing you to +push various assets to tgui, for examples spritesheets.
+return list List of asset datums or file paths.
public
+Called on a UI's object when the UI is closed, not to be confused with +client/verb/uiclose(), which closes the ui window
public
+Data to be sent to the UI. +This must be implemented for a UI to work.
+required user mob The mob interacting with the UI.
+return list Data to be sent to the UI.
private
+The UI's host object (usually src_object). +This allows modules/datums to have the UI attached to them, +and be a part of another object.
public
+Used to open and update UIs. +If this proc is not implemented properly, the UI will not update correctly.
+required user mob The mob who opened/is using the UI. +optional ui datum/tgui The UI to be updated, if it exists.
private
+The UI's state controller to be used for created uis +This is a proc over a var for memory reasons
public
+Static Data to be sent to the UI.
+Static data differs from normal data in that it's large data that should be +sent infrequently. This is implemented optionally for heavy uis that would +be sending a lot of redundant data frequently. Gets squished into one +object on the frontend side, but the static part is cached.
+required user mob The mob interacting with the UI.
+return list Statuic Data to be sent to the UI.
public
+Checks the UI state for a mob.
+required user mob The mob who opened/is using the UI. +required state datum/ui_state The state to check.
+return UI_state The state of the UI.
public
+Forces an update on static data. Should be done manually whenever something +happens to change static data.
+required user the mob currently interacting with the ui +optional ui ui to be updated
Procs | |
| SDQL_print | Recursively prints out an object to text list for SDQL2 output to admins, with VV links and all. +Recursion limit: 50 +Limit imposed by callers should be around 10000 objects +Seriously, if you hit those limits, you're doing something wrong. |
|---|---|
Recursively prints out an object to text list for SDQL2 output to admins, with VV links and all. +Recursion limit: 50 +Limit imposed by callers should be around 10000 objects +Seriously, if you hit those limits, you're doing something wrong.
Vars | |
| build_path | Build path of the gear itself |
|---|---|
| category | Category of the gear |
| cost | Credit cost of the gear |
| description | Description of the gear |
| id | Unique ID of the gear |
| name | Name of the gear |
Build path of the gear itself
Category of the gear
Credit cost of the gear
Description of the gear
Unique ID of the gear
Name of the gear
Datum that handles
Vars | |
| data | Up to date list of all achievements and their info. |
|---|---|
| initialized | Have we done our set-up yet? |
| original_cached_data | Original status of achievement. |
| owner_ckey | Ckey of this achievement data's owner |
Procs | |
| get_achievement_status | Getter for the status/score of an achievement |
| get_changed_data | Gets list of changed rows in MassInsert format |
| get_data | Updates local cache with db data for the given achievement type if it wasn't loaded yet. |
| reset | Resets an achievement to default values. |
| unlock | Unlocks an achievement of a specific type. achievement type is a typepath to the award, user is the mob getting the award, and value is an optional value to be used for defining a score to add to the leaderboard |
Up to date list of all achievements and their info.
Have we done our set-up yet?
Original status of achievement.
Ckey of this achievement data's owner
Getter for the status/score of an achievement
Gets list of changed rows in MassInsert format
Updates local cache with db data for the given achievement type if it wasn't loaded yet.
Resets an achievement to default values.
Unlocks an achievement of a specific type. achievement type is a typepath to the award, user is the mob getting the award, and value is an optional value to be used for defining a score to add to the leaderboard
Vars | |
| background_icon_state | This is the icon state state for the BACKGROUND underlay icon of the button +(If set to ACTION_BUTTON_DEFAULT_BACKGROUND, uses the hud's default background) |
|---|---|
| button_icon | This is the file for the BACKGROUND underlay icon of the button |
| button_icon_state | This is the icon state for the icon that appears on the button |
| buttontooltipstyle | The style the button's tooltips appear to be |
| check_flags | Flags that will determine of the owner / user of the action can... use the action |
| default_button_position | Where any buttons we create should be by default. Accepts screen_loc and location defines |
| desc | The description of what the action does, shown in button tooltips |
| icon_icon | This is the file for the icon that appears on the button |
| name | The name of the action |
| owner | This is who currently owns the action, and most often, this is who is using the action if it is triggered +This can be the same as "target" but is not ALWAYS the same - this is set and unset with Grant() and Remove() |
| target | The target the action is attached to. If the target datum is deleted, the action is as well. +Set in New() via the proc link_to(). PLEASE set a target if you're making an action |
| transparent_when_unavailable | Whether the button becomes transparent when it can't be used, or just reddened |
| viewers | List of all mobs that are viewing our action button -> A unique movable for them to view. |
Procs | |
| GiveAction | Gives our action to the passed viewer. +Puts our action in their actions list and shows them the button. |
| HideFrom | Removes our action from the passed viewer. |
| IsAvailable | Whether our action is currently available to use or not |
| ShowTo | Adds our action button to the screen of the passed viewer. |
| Trigger | Actually triggers the effects of the action. +Called when the on-screen button is clicked, for example. |
| clear_ref | Signal proc that clears any references based on the owner or target deleting +If the owner's deleted, we will simply remove from them, but if the target's deleted, we will self-delete |
| update_status_on_signal | A general use signal proc that reacts to an event and updates JUST our button's status |
This is the icon state state for the BACKGROUND underlay icon of the button +(If set to ACTION_BUTTON_DEFAULT_BACKGROUND, uses the hud's default background)
This is the file for the BACKGROUND underlay icon of the button
This is the icon state for the icon that appears on the button
The style the button's tooltips appear to be
Flags that will determine of the owner / user of the action can... use the action
Where any buttons we create should be by default. Accepts screen_loc and location defines
The description of what the action does, shown in button tooltips
This is the file for the icon that appears on the button
The name of the action
This is who currently owns the action, and most often, this is who is using the action if it is triggered +This can be the same as "target" but is not ALWAYS the same - this is set and unset with Grant() and Remove()
The target the action is attached to. If the target datum is deleted, the action is as well. +Set in New() via the proc link_to(). PLEASE set a target if you're making an action
Whether the button becomes transparent when it can't be used, or just reddened
List of all mobs that are viewing our action button -> A unique movable for them to view.
Gives our action to the passed viewer. +Puts our action in their actions list and shows them the button.
Removes our action from the passed viewer.
Whether our action is currently available to use or not
+Adds our action button to the screen of the passed viewer.
Actually triggers the effects of the action. +Called when the on-screen button is clicked, for example.
Signal proc that clears any references based on the owner or target deleting +If the owner's deleted, we will simply remove from them, but if the target's deleted, we will self-delete
A general use signal proc that reacts to an event and updates JUST our button's status
Procs | |
| Activate | To be implemented by subtypes |
|---|---|
| InterceptClickOn | Intercepts client owner clicks to activate the ability |
| PreActivate | For signal calling |
| StartCooldown | Starts a cooldown time to be shared with similar abilities, will use default cooldown time if an override is not specified |
| StartCooldownSelf | Starts a cooldown time for this ability only, will use default cooldown time if an override is not specified |
To be implemented by subtypes
Intercepts client owner clicks to activate the ability
For signal calling
Starts a cooldown time to be shared with similar abilities, will use default cooldown time if an override is not specified
Starts a cooldown time for this ability only, will use default cooldown time if an override is not specified
Vars | |
| background_icon_state_off | Background icon when the Power is NOT active. |
|---|---|
| background_icon_state_on | Background icon when the Power is active. |
| cooldown_time | Cooldown you'll have to wait between each use, decreases depending on level. |
Background icon when the Power is NOT active.
Background icon when the Power is active.
Cooldown you'll have to wait between each use, decreases depending on level.
Vars | |
| speed_override | If set, uses this speed in deciseconds instead of world.tick_lag |
|---|---|
If set, uses this speed in deciseconds instead of world.tick_lag
This action checks all nearby mice, and converts them into hostile rats. If no mice are nearby, creates a new one.
Procs | |
| Activate | Checks to see if there are any nearby mice. Does not count Rats. |
|---|---|
Checks to see if there are any nearby mice. Does not count Rats.
Vars | |
| my_gang_datum | The family antagonist datum of the "owner" of this action. |
|---|---|
The family antagonist datum of the "owner" of this action.
Procs | |
| change_form | // NOTICE: This currently doens't support skin tone - if anyone wants to add this to non slimes, it's up to YOU to do this. +/ (someone should also add genital color switching, more mutant color selection) +maybe just make this entire thing tgui based. maybe. |
|---|---|
// NOTICE: This currently doens't support skin tone - if anyone wants to add this to non slimes, it's up to YOU to do this. +/ (someone should also add genital color switching, more mutant color selection) +maybe just make this entire thing tgui based. maybe.
Vars | |
| positioned | Have we already been positioned into our starting location? |
|---|---|
Have we already been positioned into our starting location?
Vars | |
| sword | Reference to the rune knife it is inside of |
|---|---|
Reference to the rune knife it is inside of
Vars | |
| ai_action | Whether this action is intended for the AI. Stuff breaks a lot if this is done differently. |
|---|---|
Whether this action is intended for the AI. Stuff breaks a lot if this is done differently.
Procs | |
| rally | Rallies your army of stickmen to whichever target the user is pointing. +Should the user be on harm intent and the target be a living mob that's not the user or a fellow stickman, +said target will be added to a list of foes which the stickmen will gladly dispose regardless of faction. +This is designed so stickmen will move toward whatever you point at even when you don't want to, that's the downside. |
|---|---|
Rallies your army of stickmen to whichever target the user is pointing. +Should the user be on harm intent and the target be a living mob that's not the user or a fellow stickman, +said target will be added to a list of foes which the stickmen will gladly dispose regardless of faction. +This is designed so stickmen will move toward whatever you point at even when you don't want to, that's the downside.
Vars | |
| next_ollie | Cooldown to next jump |
|---|---|
Cooldown to next jump
Vars | |
| actions | The actions we're managing |
|---|---|
| column_max | Max amount of buttons we can have per row +Indexes at 1 |
| landing | Our landing screen object |
| location | The screen location we go by |
| max_rows | How many rows of actions we can have at max before we just stop hiding +Indexes at 1 |
| north_offset | The initial vertical offset of our action buttons |
| owner | The hud we're owned by |
| pixel_north_offset | The pixel vertical offset of our action buttons |
| row_offset | How far "ahead" of the first row we start. Lets us "scroll" our rows +Indexes at 1 |
Procs | |
| ButtonNumberToScreenCoords | Accepts a number represeting our position in the group, indexes at 0 to make the math nicer |
| clear_landing | Clears any landing objects we may currently have |
| generate_landing | Generates a landing object that can be dropped on to join this group |
| size | Returns the amount of objects we're storing at the moment |
The actions we're managing
Max amount of buttons we can have per row +Indexes at 1
Our landing screen object
The screen location we go by
How many rows of actions we can have at max before we just stop hiding +Indexes at 1
The initial vertical offset of our action buttons
The hud we're owned by
The pixel vertical offset of our action buttons
How far "ahead" of the first row we start. Lets us "scroll" our rows +Indexes at 1
Accepts a number represeting our position in the group, indexes at 0 to make the math nicer
Clears any landing objects we may currently have
Generates a landing object that can be dropped on to join this group
Returns the amount of objects we're storing at the moment
Vars | |
| conflicts_with | Other modification datums this conflicts with. |
|---|---|
| id | Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID. |
| multiplicative_slowdown | Multiplicative slowdown |
| priority | Higher ones override lower priorities. This is NOT used for ID, ID must be unique, if it isn't unique the newer one overwrites automatically if overriding. |
| variable | Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason) |
Other modification datums this conflicts with.
Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID.
Multiplicative slowdown
Higher ones override lower priorities. This is NOT used for ID, ID must be unique, if it isn't unique the newer one overwrites automatically if overriding.
Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason)
Vars | |
| answered | did we send "answered" to irc yet |
|---|---|
did we send "answered" to irc yet
Vars | |
| tagged_datums | A lazylist of tagged datums, for quick reference with the View Tags verb |
|---|---|
Procs | |
| BC_RemoveKeyVerb | client/proc/BC_RemoveKeyVerb() |
| BC_ToggleState | client/proc/BC_ToggleState() |
| BC_WhitelistKeyVerb | client/proc/BC_WhitelistKeyVerb() |
| add_tagged_datum | Inserts the target_datum into /datum/admins/var/tagged_datums, for later reference. |
| clear_tags | Clears tagged datums |
| display_tags | Display all of the tagged datums |
| forceEvent | Opens up the Force Event Panel |
| handle_tagged_del | Get ahead of the curve with deleting |
| modify_traits | Allow admin to add or remove traits of datum |
| remove_tagged_datum | Attempts to remove the specified datum from /datum/admins/var/tagged_datums if it exists |
| restart | admins2.dm merge |
| show_player_panel | Panels |
| spawn_atom | ADMIN HELPER PROCS |
| station_traits_panel | Opens the station traits admin panel |
A lazylist of tagged datums, for quick reference with the View Tags verb
client/proc/BC_RemoveKeyVerb()
client/proc/BC_ToggleState()
client/proc/BC_WhitelistKeyVerb()
Inserts the target_datum into /datum/admins/var/tagged_datums, for later reference.
+Arguments:
+Clears tagged datums
Display all of the tagged datums
Opens up the Force Event Panel
Get ahead of the curve with deleting
Allow admin to add or remove traits of datum
Attempts to remove the specified datum from /datum/admins/var/tagged_datums if it exists
+Arguments:
+admins2.dm merge
Panels
ADMIN HELPER PROCS
Opens the station traits admin panel
Procs | |
| get_law_list | Generates a list of all laws on this datum, including rendered HTML tags if required |
|---|---|
Generates a list of all laws on this datum, including rendered HTML tags if required
+Arguments:
+Represents a single source of alarms, one alarm handler will only ever count for one alarm per listener
Vars | |
| sent_alarms | A list of alarm type -> list of areas we currently have alarms in |
|---|---|
| source_atom | Our source atom |
Procs | |
| clear_alarm | Clears an alarm from any interested listeners |
| clear_alarm_from_area | Exists so we can request that the alarms from an area are cleared, even if our source atom is no longer in that area |
| send_alarm | Sends an alarm to any interested things, does some checks to prevent unneeded work +Important to note is that source_atom is not held as a ref, we're used as a proxy to prevent hard deletes +optional_camera should only be used when you have one camera you want to pass along to alarm listeners, most of the time you should have no use for it |
A list of alarm type -> list of areas we currently have alarms in
Our source atom
Clears an alarm from any interested listeners
Exists so we can request that the alarms from an area are cleared, even if our source atom is no longer in that area
Sends an alarm to any interested things, does some checks to prevent unneeded work +Important to note is that source_atom is not held as a ref, we're used as a proxy to prevent hard deletes +optional_camera should only be used when you have one camera you want to pass along to alarm listeners, most of the time you should have no use for it
Vars | |
| accepting_alarm_changes | Should we allow alarm changes to go through or not |
|---|---|
| alarms | List of alarm type -> list of area name -> list(area, ref to area's cameras, list(sources)) |
| allowed_areas | List of allowed areas. if this is null it's ignored |
| allowed_z_levels | List of valid source z levels, ignored if null |
Procs | |
| New | Accepts a list of alarm types to pay attention to, a list of valid z levels, and a list of valid areas. areas and zlevels are ignored if null |
| add_alarm | Adds an alarm to our alarms list, you shouldn't be calling this manually +It should all be handled by the signal listening we do, unless you want to only send an alarm to one listener |
| allow_alarm_changes | Does what it says on the tin, exists for signal hooking |
| clear_alarm | Removes an alarm to our alarms list, you probably shouldn't be calling this manually +It should all be handled by the signal listening we do, unless you want to only remove an alarm to one listener |
| clear_camera_ref | Used to manually clear camera refs if one is ref'd directly |
| prevent_alarm_changes | Does what it says on the tin, exists for signal hooking |
Should we allow alarm changes to go through or not
List of alarm type -> list of area name -> list(area, ref to area's cameras, list(sources))
List of allowed areas. if this is null it's ignored
List of valid source z levels, ignored if null
Accepts a list of alarm types to pay attention to, a list of valid z levels, and a list of valid areas. areas and zlevels are ignored if null
Adds an alarm to our alarms list, you shouldn't be calling this manually +It should all be handled by the signal listening we do, unless you want to only send an alarm to one listener
Does what it says on the tin, exists for signal hooking
Removes an alarm to our alarms list, you probably shouldn't be calling this manually +It should all be handled by the signal listening we do, unless you want to only remove an alarm to one listener
Used to manually clear camera refs if one is ref'd directly
Does what it says on the tin, exists for signal hooking
Vars | |
| antag_hud_name | Name of the antag hud we provide to this mob. |
|---|---|
| antag_hud_type | What is the configuration of this antagonist's hud icon, such as it's screen position and style, so thatit doesn't break other in-game hud icons. |
| antag_memory | String dialogue that is added to the player's in-round notes and memories regarding specifics of that antagonist, eg. the nuke code for nuke ops, or your unlock code for traitors. |
| antag_moodlet | typepath of moodlet that the mob will gain when granted this antagonist type. |
| antagpanel_category | Antagpanel will display these together, REQUIRED |
| blacklisted_quirks | Quirks that will be removed upon gaining this antag. Pacifist and mute are default. |
| can_coexist_with_others | Whether or not the person will be able to have more than one datum |
| hijack_speed | If above 0, this is the multiplier for the speed at which we hijack the shuttle. Do not directly read, use hijack_speed(). |
| info_button | button to access antag interface |
| job_rank | The define string we use to identify the role for bans/player polls to spawn a random new one in. |
| name | Public name for this antagonist. Appears for player prompts and round-end reports. |
| objectives | List of the objective datums that this role currently has, completing all objectives at round-end will cause this antagonist to greentext. |
| owner | Mind that owns this datum |
| prevent_roundtype_conversion | If false, the roundtype will still convert with this antag active |
| preview_outfit | The typepath for the outfit to show in the preview for the preferences menu. |
| replace_banned | Should replace jobbanned player with ghosts if granted. |
| requested_objective_changes | Lazy list for antagonists to request the admins objectives. |
| roundend_category | Section of roundend report, datums with same category will be displayed together, also default header for the section |
| show_in_antagpanel | This will hide adding this antag type in antag panel, use only for internal subtypes that shouldn't be added directly but still show if possessed by mind |
| show_in_roundend | Set to false to hide the antagonists from roundend report |
| show_name_in_check_antagonists | Will append antagonist name in admin listings - use for categories that share more than one antag type |
| show_to_ghosts | Should this antagonist be shown as antag to ghosts? Shouldn't be used for stealthy antagonists like traitors |
| silent | Silent will prevent the gain/lose texts to show |
| soft_antag | If set to true, the antag will not be added to the living antag list. |
| suicide_cry | The battlecry this antagonist shouts when suiciding with C4/X4. |
| threat | Amount of threat this antag poses, for dynamic mode |
| typecache_datum_blacklist | List of datums this type can't coexist with |
| ui_name | name of the UI that will try to open, right now having nothing means this won't exist but in the future all should. |
Procs | |
| antag_panel_data | Additional data to display in the antagonist panel section. +For example, nuke disk code, genome count, etc |
| clean_request_from_del_objective | Clears change requests from deleted objectives to avoid broken references. |
| clear_antag_moodies | Proc that removes this antagonist's ascribed moodlet from the player. |
| farewell | Proc that sends fluff or instructional messages to the player when they lose this antag datum. +Use this proc for playing sounds, sending alerts, or otherwise informing the player that they're no longer a specific antagonist type. |
| finish_preview_icon | Given an icon, will crop it to be consistent of those in the preferences menu. +Not necessary, and in fact will look bad if it's anything other than a human. |
| get_admin_commands | List of ["Command"] = CALLBACK(), user will be appeneded to callback arguments on execution |
| get_objectives | generic helper to send objectives as data through tgui. supports smart objectives too! |
| get_preview_icon | Returns the icon to show on the preferences menu. |
| get_team | Proc that will return the team this antagonist belongs to, when called. Helpful with antagonists that may belong to multiple potential teams in a single round, like families. |
| give_antag_moodies | Proc that assigns this antagonist's ascribed moodlet to the player. |
| greet | Proc that sends fluff or instructional messages to the player when they are given this antag datum. +Use this proc for playing sounds, sending alerts, or helping to setup non-gameplay influencing aspects of the antagonist type. |
| handle_clown_mutation | Handles adding and removing the clumsy mutation from clown antags. Gets called in apply/remove_innate_effects |
| hijack_speed | Gets how fast we can hijack the shuttle, return FALSE for can not hijack. +Defaults to hijack_speed var, override for custom stuff like buffing hijack speed for hijack objectives or something. |
| is_banned | Proc that checks the sent mob aganst the banlistfor this antagonist. +Returns FALSE if no mob is sent, or the mob is not found to be banned. |
| on_body_transfer | Called by the transfer_to() mind proc after the mind (mind.current and new_character.mind) has moved but before the player (key and client) is transfered. |
| on_gain | Called by the add_antag_datum() mind proc after the instanced datum is added to the mind's antag_datums list. |
| on_mindshield | This is called when the antagonist is successfully mindshielded. |
| on_removal | Called by the remove_antag_datum() and remove_all_antag_datums() mind procs for the antag datum to handle its own removal and deletion. |
| pre_mindshield | This is called when the antagonist is being mindshielded. |
| remove_blacklisted_quirks | Removes invalid quirks. |
| render_preview_outfit | Creates an icon from the preview outfit.
+Custom implementors of get_preview_icon should use this, as the
+result of get_preview_icon is expected to be the completed version. |
| replace_banned_player | Proc that replaces a player who cannot play a specific antagonist due to being banned via a poll, and alerts the player of their being on the banlist. |
| roundend_report | Proc that sends string information for the end-round report window to the server. +This runs on every instance of every antagonist that exists at the end of the round. +This is the body of the message, sandwiched between roundend_report_header and roundend_report_footer. |
| roundend_report_footer | Proc that sends string data for the round-end report. +Displayed after roundend_report and roundend_report_footer. +Appears at the end of the roundend_catagory section. |
| roundend_report_header | Proc that sends string data for the round-end report. +Displayed before roundend_report and roundend_report_footer. +Appears at start of roundend_catagory section. |
| threat | Gets our threat level. Override this proc for custom functionality/dynamic threat level. |
| ui_interact | ANTAGONIST UI STUFF |
Name of the antag hud we provide to this mob.
What is the configuration of this antagonist's hud icon, such as it's screen position and style, so thatit doesn't break other in-game hud icons.
String dialogue that is added to the player's in-round notes and memories regarding specifics of that antagonist, eg. the nuke code for nuke ops, or your unlock code for traitors.
typepath of moodlet that the mob will gain when granted this antagonist type.
Antagpanel will display these together, REQUIRED
Quirks that will be removed upon gaining this antag. Pacifist and mute are default.
Whether or not the person will be able to have more than one datum
If above 0, this is the multiplier for the speed at which we hijack the shuttle. Do not directly read, use hijack_speed().
button to access antag interface
The define string we use to identify the role for bans/player polls to spawn a random new one in.
Public name for this antagonist. Appears for player prompts and round-end reports.
List of the objective datums that this role currently has, completing all objectives at round-end will cause this antagonist to greentext.
Mind that owns this datum
If false, the roundtype will still convert with this antag active
The typepath for the outfit to show in the preview for the preferences menu.
Should replace jobbanned player with ghosts if granted.
Lazy list for antagonists to request the admins objectives.
Section of roundend report, datums with same category will be displayed together, also default header for the section
This will hide adding this antag type in antag panel, use only for internal subtypes that shouldn't be added directly but still show if possessed by mind
Set to false to hide the antagonists from roundend report
Will append antagonist name in admin listings - use for categories that share more than one antag type
Should this antagonist be shown as antag to ghosts? Shouldn't be used for stealthy antagonists like traitors
Silent will prevent the gain/lose texts to show
If set to true, the antag will not be added to the living antag list.
The battlecry this antagonist shouts when suiciding with C4/X4.
Amount of threat this antag poses, for dynamic mode
List of datums this type can't coexist with
name of the UI that will try to open, right now having nothing means this won't exist but in the future all should.
Additional data to display in the antagonist panel section. +For example, nuke disk code, genome count, etc
Clears change requests from deleted objectives to avoid broken references.
Proc that removes this antagonist's ascribed moodlet from the player.
Proc that sends fluff or instructional messages to the player when they lose this antag datum. +Use this proc for playing sounds, sending alerts, or otherwise informing the player that they're no longer a specific antagonist type.
Given an icon, will crop it to be consistent of those in the preferences menu. +Not necessary, and in fact will look bad if it's anything other than a human.
List of ["Command"] = CALLBACK(), user will be appeneded to callback arguments on execution
generic helper to send objectives as data through tgui. supports smart objectives too!
Returns the icon to show on the preferences menu.
Proc that will return the team this antagonist belongs to, when called. Helpful with antagonists that may belong to multiple potential teams in a single round, like families.
Proc that assigns this antagonist's ascribed moodlet to the player.
Proc that sends fluff or instructional messages to the player when they are given this antag datum. +Use this proc for playing sounds, sending alerts, or helping to setup non-gameplay influencing aspects of the antagonist type.
Handles adding and removing the clumsy mutation from clown antags. Gets called in apply/remove_innate_effects
Gets how fast we can hijack the shuttle, return FALSE for can not hijack. +Defaults to hijack_speed var, override for custom stuff like buffing hijack speed for hijack objectives or something.
Proc that checks the sent mob aganst the banlistfor this antagonist. +Returns FALSE if no mob is sent, or the mob is not found to be banned.
+Called by the transfer_to() mind proc after the mind (mind.current and new_character.mind) has moved but before the player (key and client) is transfered.
Called by the add_antag_datum() mind proc after the instanced datum is added to the mind's antag_datums list.
This is called when the antagonist is successfully mindshielded.
Called by the remove_antag_datum() and remove_all_antag_datums() mind procs for the antag datum to handle its own removal and deletion.
This is called when the antagonist is being mindshielded.
Removes invalid quirks.
Creates an icon from the preview outfit.
+Custom implementors of get_preview_icon should use this, as the
+result of get_preview_icon is expected to be the completed version.
Proc that replaces a player who cannot play a specific antagonist due to being banned via a poll, and alerts the player of their being on the banlist.
Proc that sends string information for the end-round report window to the server. +This runs on every instance of every antagonist that exists at the end of the round. +This is the body of the message, sandwiched between roundend_report_header and roundend_report_footer.
Proc that sends string data for the round-end report. +Displayed after roundend_report and roundend_report_footer. +Appears at the end of the roundend_catagory section.
Proc that sends string data for the round-end report. +Displayed before roundend_report and roundend_report_footer. +Appears at start of roundend_catagory section.
Gets our threat level. Override this proc for custom functionality/dynamic threat level.
ANTAGONIST UI STUFF
Vars | |
| hostile_absorbed | did we get succed by another changeling |
|---|---|
Procs | |
| check_menu | Checks if we are allowed to interact with a radial menu |
| select_dna | Gives a changeling a list of all possible dnas in their profiles to choose from and returns profile containing their chosen dna |
did we get succed by another changeling
Checks if we are allowed to interact with a radial menu
+Arguments:
+Gives a changeling a list of all possible dnas in their profiles to choose from and returns profile containing their chosen dna
Vars | |
| acceptable_clothes | The list of clothes that are acceptable to show allegiance to this family. |
|---|---|
| free_clothes | The list of clothes that are given to family members upon induction into the family. |
| gang_id | The abbreviation of the family corresponding to this family member datum. |
| gang_name | The name of the family corresponding to this family member datum. |
| gang_team_type | Type of team to create when creating the gang in the first place. Used for renames. |
| handler | A reference to the handler datum that manages the families gamemode. In case of no handler (admin-spawned during round), this will be null; this is fine. |
| my_gang | The overarching family that the owner of this datum is a part of. Family teams are generic and imprinted upon by the per-person antagonist datums. |
| original_name | The gangster's original real name. Used for renaming stuff, kept between gang switches. |
| package_spawner | The action used to spawn family induction packages. |
| starter_gangster | Whether or not this family member is the first of their family. |
Procs | |
| equip_gangster_in_inventory | Gives a gangster their equipment in their backpack and / or pockets. |
The list of clothes that are acceptable to show allegiance to this family.
The list of clothes that are given to family members upon induction into the family.
The abbreviation of the family corresponding to this family member datum.
The name of the family corresponding to this family member datum.
Type of team to create when creating the gang in the first place. Used for renames.
A reference to the handler datum that manages the families gamemode. In case of no handler (admin-spawned during round), this will be null; this is fine.
The overarching family that the owner of this datum is a part of. Family teams are generic and imprinted upon by the per-person antagonist datums.
The gangster's original real name. Used for renaming stuff, kept between gang switches.
The action used to spawn family induction packages.
Whether or not this family member is the first of their family.
Gives a gangster their equipment in their backpack and / or pockets.
Procs | |
| on_death | What happens to the heretic once he dies, used to remove any custom perks |
|---|---|
What happens to the heretic once he dies, used to remove any custom perks
Vars | |
| give_equipment | Whether or not this ninja receives the standard equipment |
|---|---|
| give_objectives | Whether or not this ninja will obtain objectives |
Procs | |
| addMemories | Proc that adds the proper memories to the antag datum |
| addObjectives | Proc that adds all the ninja's objectives to the antag datum. |
| equip_space_ninja | Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum. |
Whether or not this ninja receives the standard equipment
Whether or not this ninja will obtain objectives
Proc that adds the proper memories to the antag datum
+Proc that adds the ninja starting memories to the owner of the antagonist datum.
Proc that adds all the ninja's objectives to the antag datum.
+Proc that adds all the ninja's objectives to the antag datum. Called when the datum is gained.
Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum.
+Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum. +Arguments:
+Vars | |
| deconversion_reason | when this antagonist is being de-antagged, this is why |
|---|---|
| victory_message | What message should the player receive when they are being demoted, and the revolution has won? |
Procs | |
| announce_victorious | Checks if the revolution succeeded, and lets them know. |
when this antagonist is being de-antagged, this is why
What message should the player receive when they are being demoted, and the revolution has won?
Checks if the revolution succeeded, and lets them know.
Vars | |
| traitor_kind | special datum about what kind of employer the trator has |
|---|---|
| uplink | reference to the uplink this traitor was given, if they were. |
Procs | |
| contractor_round_end | Proc detailing contract kit buys/completed contracts/additional info |
| forge_traitor_objectives | Generates a complete set of traitor objectives up to the traitor objective limit, including non-generic objectives such as martyr and hijack. |
| give_codewords | Outputs this shift's codewords and responses to the antag's chat and copies them to their memory. |
special datum about what kind of employer the trator has
reference to the uplink this traitor was given, if they were.
Proc detailing contract kit buys/completed contracts/additional info
Generates a complete set of traitor objectives up to the traitor objective limit, including non-generic objectives such as martyr and hijack.
Outputs this shift's codewords and responses to the antag's chat and copies them to their memory.
Support unit gets it's own very basic antag datum for admin logging.
Vars | |
| contractor_team | Don't give them an uplink. |
|---|---|
| give_objectives | We're already adding them in to the contractor's roundend. |
| should_equip | Not a proper/full antag. |
| show_in_antagpanel | We give them their own custom objective. |
Don't give them an uplink.
We're already adding them in to the contractor's roundend.
Not a proper/full antag.
We give them their own custom objective.
Procs | |
| get_serialized_url_mappings | Returns a cached tgui message of URL mappings |
|---|---|
Returns a cached tgui message of URL mappings
If you don't need anything complicated.
Vars | |
| assets | list of assets for this datum in the form of: +asset_filename = asset_file. At runtime the asset_file will be +converted into a asset_cache datum. |
|---|---|
| keep_local_name | TRUE for keeping local asset names when browse_rsc backend is used |
| legacy | Set to true to have this asset also be sent via the legacy browse_rsc +system when cdn transports are enabled? |
list of assets for this datum in the form of: +asset_filename = asset_file. At runtime the asset_file will be +converted into a asset_cache datum.
TRUE for keeping local asset names when browse_rsc backend is used
Set to true to have this asset also be sent via the legacy browse_rsc +system when cdn transports are enabled?
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)
Vars | |
| parents | parents - list of the parent asset or assets (in name = file assoicated format) for this namespace. +parent assets must be referenced by their generated url, but if an update changes a parent asset, it won't change the namespace's identity. |
|---|---|
Procs | |
| get_htmlloader | Get a html string that will load a html asset. +Needed because byond doesn't allow you to browse() to a url. |
parents - list of the parent asset or assets (in name = file assoicated format) for this namespace. +parent assets must be referenced by their generated url, but if an update changes a parent asset, it won't change the namespace's identity.
Get a html string that will load a html asset. +Needed because byond doesn't allow you to browse() to a url.
Procs | |
| ModifyInserted | A simple proc handing the Icon for you to modify before it gets turned into an asset. |
|---|---|
| icon_size_id | Returns the size class (ex design32x32) for a given sprite's icon |
A simple proc handing the Icon for you to modify before it gets turned into an asset.
+Arguments:
+Returns the size class (ex design32x32) for a given sprite's icon
+Arguments:
+Vars | |
| painter_type | The associated decal painter type to grab decals, colors, etc from. |
|---|---|
| preview_floor_icon | The floor icon used for blend_preview_floor() |
| preview_floor_state | The floor icon state used for blend_preview_floor() |
Procs | |
| blend_preview_floor | Underlay an example floor for preview purposes, and return the new icon. |
| insert_state | Insert a specific state into the spritesheet. |
The associated decal painter type to grab decals, colors, etc from.
The floor icon used for blend_preview_floor()
The floor icon state used for blend_preview_floor()
Underlay an example floor for preview purposes, and return the new icon.
+Arguments:
+Insert a specific state into the spritesheet.
+Arguments:
+An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed.
Vars | |
| keep_local_name | TRUE for keeping local asset names when browse_rsc backend is used |
|---|---|
| legacy | Should this file also be sent via the legacy browse_rsc system +when cdn transports are enabled? |
| namespace | Used by the cdn system to keep legacy css assets with their parent +css file. (css files resolve urls relative to the css file, so the +legacy system can't be used if the css file itself could go out over +the cdn) |
| namespace_parent | True if this is the parent css or html file for an asset's namespace |
TRUE for keeping local asset names when browse_rsc backend is used
Should this file also be sent via the legacy browse_rsc system +when cdn transports are enabled?
Used by the cdn system to keep legacy css assets with their parent +css file. (css files resolve urls relative to the css file, so the +legacy system can't be used if the css file itself could go out over +the cdn)
True if this is the parent css or html file for an asset's namespace
Base browse_rsc asset transport
Vars | |
| dont_mutate_filenames | Don't mutate the filename of assets when sending via browse_rsc. +This is to make it easier to debug issues with assets, and allow server operators to bypass issues that make it to production. +If turning this on fixes asset issues, something isn't using get_asset_url and the asset isn't marked legacy, fix one of those. |
|---|---|
Procs | |
| Initialize | Initialize - Called when SSassets initializes. |
| Load | Called when the transport is loaded by the config controller, not called on the default transport unless it gets loaded by a config change. |
| get_asset_url | Returns a url for a given asset. +asset_name - Name of the asset. +asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name |
| register_asset | Register a browser asset with the asset cache system +asset_name - the identifier of the asset +asset - the actual asset file (or an asset_cache_item datum) +returns a /datum/asset_cache_item. +mutiple calls to register the same asset under the same asset_name return the same datum |
| send_assets | Sends a list of browser assets to a client +client - a client or mob +asset_list - A list of asset filenames to be sent to the client. Can optionally be assoicated with the asset's asset_cache_item datum. +Returns TRUE if any assets were sent. |
| send_assets_slow | Precache files without clogging up the browse() queue, used for passively sending files on connection start. |
| validate_config | Check the config is valid to load this transport +Returns TRUE or FALSE |
Don't mutate the filename of assets when sending via browse_rsc. +This is to make it easier to debug issues with assets, and allow server operators to bypass issues that make it to production. +If turning this on fixes asset issues, something isn't using get_asset_url and the asset isn't marked legacy, fix one of those.
Initialize - Called when SSassets initializes.
Called when the transport is loaded by the config controller, not called on the default transport unless it gets loaded by a config change.
Returns a url for a given asset. +asset_name - Name of the asset. +asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name
Register a browser asset with the asset cache system +asset_name - the identifier of the asset +asset - the actual asset file (or an asset_cache_item datum) +returns a /datum/asset_cache_item. +mutiple calls to register the same asset under the same asset_name return the same datum
Sends a list of browser assets to a client +client - a client or mob +asset_list - A list of asset filenames to be sent to the client. Can optionally be assoicated with the asset's asset_cache_item datum. +Returns TRUE if any assets were sent.
Precache files without clogging up the browse() queue, used for passively sending files on connection start.
Check the config is valid to load this transport +Returns TRUE or FALSE
CDN Webroot asset transport.
Procs | |
| get_asset_url | Returns a url for a given asset. +asset_name - Name of the asset. +asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name |
|---|---|
| load_existing_assets | Processes thru any assets that were registered before we were loaded as a transport. |
| register_asset | Register a browser asset with the asset cache system +We also save it to the CDN webroot at this step instead of waiting for send_assets() +asset_name - the identifier of the asset +asset - the actual asset file or an asset_cache_item datum. |
| save_asset_to_webroot | Saves the asset to the webroot taking into account namespaces and hashes. |
| send_assets | webroot asset sending - does nothing unless passed legacy assets |
| send_assets_slow | webroot slow asset sending - does nothing. |
Returns a url for a given asset. +asset_name - Name of the asset. +asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name
Processes thru any assets that were registered before we were loaded as a transport.
Register a browser asset with the asset cache system +We also save it to the CDN webroot at this step instead of waiting for send_assets() +asset_name - the identifier of the asset +asset - the actual asset file or an asset_cache_item datum.
Saves the asset to the webroot taking into account namespaces and hashes.
webroot asset sending - does nothing unless passed legacy assets
webroot slow asset sending - does nothing.
Vars | |
| database_id | What ID do we use in db, limited to 32 characters |
|---|---|
| icon | Found in ui_icons/achievements |
| name | Name of the achievement, If null it won't show up in the achievement browser. (Handy for inheritance trees) |
Procs | |
| get_changed_rows | This saves the changed data to the hub. |
| get_raw_value | Get raw numerical achievement value from the database |
| load | This proc loads the achievement data from the hub. |
| on_unlock | Can be overriden for achievement specific events |
What ID do we use in db, limited to 32 characters
Found in ui_icons/achievements
Name of the achievement, If null it won't show up in the achievement browser. (Handy for inheritance trees)
This saves the changed data to the hub.
Get raw numerical achievement value from the database
This proc loads the achievement data from the hub.
Can be overriden for achievement specific events
Procs | |
| bounty_num | Returns the required item count, or required chemical units required to submit a bounty. |
|---|---|
| bounty_text | Returns a string with the civilian bounty's description on it. |
| bounty_value | Produces the value of the account's civilian bounty reward, if able. |
| reset_bounty | Performs house-cleaning on variables when a civilian bounty is replaced, or, when a bounty is claimed. |
Returns the required item count, or required chemical units required to submit a bounty.
Returns a string with the civilian bounty's description on it.
Produces the value of the account's civilian bounty reward, if able.
Performs house-cleaning on variables when a civilian bounty is replaced, or, when a bounty is claimed.
This datum handles the transitioning from a turf to a specific biome, and handles spawning decorative structures and mobs.
Vars | |
| fauna_density | Chance of having a mob from the fauna types list spawn |
|---|---|
| fauna_types | list of type paths of mobs that can be spawned when the turf spawns fauna |
| flora_density | Chance of having a structure from the flora types list spawn |
| flora_types | list of type paths of objects that can be spawned when the turf spawns flora |
| turf_type | Type of turf this biome creates |
Procs | |
| generate_turf | This proc handles the creation of a turf of a specific biome type |
Chance of having a mob from the fauna types list spawn
list of type paths of mobs that can be spawned when the turf spawns fauna
Chance of having a structure from the flora types list spawn
list of type paths of objects that can be spawned when the turf spawns flora
Type of turf this biome creates
This proc handles the creation of a turf of a specific biome type
Specifies a bitfield for smarter debugging
Vars | |
| flags | An associative list of the readable flag and its true value |
|---|---|
| variable | The variable name that contains the bitfield |
An associative list of the readable flag and its true value
The variable name that contains the bitfield
Carries data like list data that would be a waste of memory if we initialized the list on every /item as we can cache datums easier.
Vars | |
| autoparry_cooldown_absolute | Hard autoparry cooldown |
|---|---|
| autoparry_mouse_delay_maximum | ADVANCED - Autoparry requirement for time since last moused over for a specific object |
| autoparry_sequence_simulation | Autoparry : Simulate a parry sequence starting at a certain tick, or simply simulate a single attack parry? |
| autoparry_sequence_start_time | Decisecond of sequence to start on. -1 to start to 0th tick of active parry window. |
| autoparry_single_efficiency | Single attack autoparry - efficiency |
| autoparry_single_efficiency_override | Single attack autoparry - efficiency overrides by attack type, see above |
| block_active_priority | The priority we get in mob/do_run_block() while we're being used to parry. |
| block_automatic_directions | Directions that you can autoblock in. Null to default to normal directions. |
| block_automatic_enabled | Can this item automatically block? |
| block_automatic_mitigation_multiplier | Effectiveness multiplier for automated block. Only applies to efficiency, absorption and limits stay the same! |
| block_automatic_stamina_multiplier | Stamina cost multiplier for automated block |
| block_damage_absorption | Amount of "free" damage blocking absorbs |
| block_damage_absorption_override | Override absorption, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_absorption] |
| block_damage_limit | Upper bound of damage block, anything above this will go right through. |
| block_damage_limit_override | Override upper bound of damage block, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_limit] |
| block_damage_multiplier | Ratio of damage to allow through above absorption and below limit. Multiplied by damage to determine how much to let through. Lower is better. |
| block_damage_multiplier_override | Override damage overrun efficiency, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_efficiency] |
| block_end_click_cd_add | Clickdelay added to user after block ends |
| block_lock_attacking | Disallow attacking during block |
| block_lock_sprinting | Disallow sprinting during block |
| block_no_stambuffer_regeneration | Prevent stamina buffer regeneration while block? |
| block_no_stamina_regeneration | Prevent stamina regeneration while block? |
| block_projectile_mitigation | The blocked variable of on_hit() on projectiles is impacted by this. Higher is better, 0 to 100, percentage. |
| block_resting_attack_types_anydir | Bitfield for attack types that we can block while down. This will work in any direction. |
| block_resting_attack_types_directional | Bitfield for attack types that we can block while down but only in our normal directions. |
| block_resting_stamina_penalty_multiplier | Multiplier to stamina damage taken for attacks blocked while downed. |
| block_resting_stamina_penalty_multiplier_override | Override list for multiplier to stamina damage taken for attacks blocked while down. list("[ATTACK_TYPE_DEFINE]" = multiplier_number) |
| block_slowdown | Our slowdown added while blocking |
| block_sounds | Sounds for blocking |
| block_stamina_buffer_ratio | Ratio of stamina incurred by chest (so after [block_stamina_limb_ratio] runs) that is buffered. |
| block_stamina_cost_per_second | Stamina dealt directly via UseStaminaBuffer() per SECOND of block. |
| block_stamina_efficiency | Default damage-to-stamina coefficient, higher is better. This is based on amount of damage BLOCKED, not initial damage, to prevent damage from "double dipping". |
| block_stamina_efficiency_override | Override damage-to-stamina coefficient, see [block_efficiency], this should be list("[ATTACK_TYPE_DEFINE]" = coefficient_number) |
| block_stamina_limb_ratio | Ratio of stamina incurred by blocking that goes to the arm holding the object instead of the chest. Has no effect if this is not held in hand. |
| block_start_delay | Windup before we have our blocking active. |
| can_block_attack_types | Attacks we can block |
| can_block_directions | //////// BLOCKING //////////// +NOTE: FOR ATTACK_TYPE_DEFINE, you MUST wrap it in "[DEFINE_HERE]"! The defines are bitflags, and therefore, NUMBERS! +See defines. Point of reference is someone facing north. |
| parry_allow_repeated_counterattacks | Allow multiple counterattacks per parry sequence. Bad idea. |
| parry_attack_types | Attack types we can block |
| parry_automatic_enabled | Can this data automatically parry? This is off by default because this is something that requires thought to balance. |
| parry_cooldown | Parrying cooldown, separate of clickdelay. It must be this much deciseconds since their last parry for them to parry with this object. |
| parry_data | Parry effect data. |
| parry_effect_icon_state | Visual icon state override for parrying |
| parry_efficiency_considered_successful | Efficiency must be at least this to be considered successful |
| parry_efficiency_perfect | Efficiency in percent on perfect parry. |
| parry_efficiency_perfect_override | Override for attack types, list("[ATTACK_TYPE_DEFINE]" = perecntage) for perfect efficiency. |
| parry_efficiency_to_counterattack | Efficiency must be at least this to run automatic counterattack |
| parry_failed_clickcd_duration | Clickdelay duration post-parry if you fail to parry an attack |
| parry_failed_cooldown_duration | Parry cooldown post-parry if failed. This is ADDED to parry_cooldown!!! |
| parry_failed_stagger_duration | Stagger duration post-parry if you fail to parry an attack |
| parry_flags | Parry flags |
| parry_imperfect_falloff_percent | Parry "efficiency" falloff in percent per decisecond once perfect window is over. |
| parry_imperfect_falloff_percent_override | [parry_imperfect_falloff_percent] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds) |
| parry_max_attacks | Maximum attacks to parry successfully or unsuccessfully (but not efficiency < 0) during active period, hitting this immediately ends the sequence. |
| parry_respect_clickdelay | //////// PARRYING //////////// +Priority for mob/do_run_block() while we're being used to parry. +Parry doesn't work if you aren't able to otherwise attack due to clickdelay |
| parry_sounds | Sounds for parrying |
| parry_stamina_cost | Parry stamina cost |
| parry_start_sound | Parry start sound |
| parry_time_active | Main parry window in deciseconds. This is between [parry_time_windup] and [parry_time_spindown] |
| parry_time_active_visual_override | If set, overrides visual duration of active period |
| parry_time_perfect | Perfect parry window in deciseconds from the start of the main window. 3 with main 5 = perfect on third decisecond of main window. |
| parry_time_perfect_leeway | Time on both sides of perfect parry that still counts as part of the perfect window. |
| parry_time_perfect_leeway_override | [parry_time_perfect_leeway] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds) |
| parry_time_spindown | Parry spindown duration in deciseconds. main stage end to this is the spindown stage, afterwards the parry fully ends. |
| parry_time_spindown_visual_override | If set, overrides visual duration of spindown |
| parry_time_windup | Parry windup duration in deciseconds. 0 to this is windup, afterwards is main stage. |
| parry_time_windup_visual_override | If set, overrides visual duration of windup |
| perfect_parry_block_return_flags | Flags added to return value |
| perfect_parry_block_return_list | List appended to block return |
Procs | |
| attack_type_list_scan | Quirky proc to get average of flags in list that are in attack_type because why is attack_type a flag. |
| get_parry_efficiency | Gets the percentage efficiency of our parry. |
| render_html_readout | Generates a HTML render of this datum for self-documentation +Maybe make this tgui-next someday haha god this is ugly as sin. +Does NOT include the popout or title or anything. Just the variables and explanations.. |
Hard autoparry cooldown
ADVANCED - Autoparry requirement for time since last moused over for a specific object
Autoparry : Simulate a parry sequence starting at a certain tick, or simply simulate a single attack parry?
Decisecond of sequence to start on. -1 to start to 0th tick of active parry window.
Single attack autoparry - efficiency
Single attack autoparry - efficiency overrides by attack type, see above
The priority we get in mob/do_run_block() while we're being used to parry.
Directions that you can autoblock in. Null to default to normal directions.
Can this item automatically block?
Effectiveness multiplier for automated block. Only applies to efficiency, absorption and limits stay the same!
Stamina cost multiplier for automated block
Amount of "free" damage blocking absorbs
Override absorption, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_absorption]
Upper bound of damage block, anything above this will go right through.
Override upper bound of damage block, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_limit]
Ratio of damage to allow through above absorption and below limit. Multiplied by damage to determine how much to let through. Lower is better.
Override damage overrun efficiency, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_efficiency]
Clickdelay added to user after block ends
Disallow attacking during block
Disallow sprinting during block
Prevent stamina buffer regeneration while block?
Prevent stamina regeneration while block?
The blocked variable of on_hit() on projectiles is impacted by this. Higher is better, 0 to 100, percentage.
Bitfield for attack types that we can block while down. This will work in any direction.
Bitfield for attack types that we can block while down but only in our normal directions.
Multiplier to stamina damage taken for attacks blocked while downed.
Override list for multiplier to stamina damage taken for attacks blocked while down. list("[ATTACK_TYPE_DEFINE]" = multiplier_number)
Our slowdown added while blocking
Sounds for blocking
Ratio of stamina incurred by chest (so after [block_stamina_limb_ratio] runs) that is buffered.
Stamina dealt directly via UseStaminaBuffer() per SECOND of block.
Default damage-to-stamina coefficient, higher is better. This is based on amount of damage BLOCKED, not initial damage, to prevent damage from "double dipping".
Override damage-to-stamina coefficient, see [block_efficiency], this should be list("[ATTACK_TYPE_DEFINE]" = coefficient_number)
Ratio of stamina incurred by blocking that goes to the arm holding the object instead of the chest. Has no effect if this is not held in hand.
Windup before we have our blocking active.
Attacks we can block
//////// BLOCKING //////////// +NOTE: FOR ATTACK_TYPE_DEFINE, you MUST wrap it in "[DEFINE_HERE]"! The defines are bitflags, and therefore, NUMBERS! +See defines. Point of reference is someone facing north.
Allow multiple counterattacks per parry sequence. Bad idea.
Attack types we can block
Can this data automatically parry? This is off by default because this is something that requires thought to balance.
Parrying cooldown, separate of clickdelay. It must be this much deciseconds since their last parry for them to parry with this object.
Parry effect data.
Visual icon state override for parrying
Efficiency must be at least this to be considered successful
Efficiency in percent on perfect parry.
Override for attack types, list("[ATTACK_TYPE_DEFINE]" = perecntage) for perfect efficiency.
Efficiency must be at least this to run automatic counterattack
Clickdelay duration post-parry if you fail to parry an attack
Parry cooldown post-parry if failed. This is ADDED to parry_cooldown!!!
Stagger duration post-parry if you fail to parry an attack
Parry flags
Parry "efficiency" falloff in percent per decisecond once perfect window is over.
[parry_imperfect_falloff_percent] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds)
Maximum attacks to parry successfully or unsuccessfully (but not efficiency < 0) during active period, hitting this immediately ends the sequence.
//////// PARRYING //////////// +Priority for mob/do_run_block() while we're being used to parry. +Parry doesn't work if you aren't able to otherwise attack due to clickdelay
Sounds for parrying
Parry stamina cost
Parry start sound
Main parry window in deciseconds. This is between [parry_time_windup] and [parry_time_spindown]
If set, overrides visual duration of active period
Perfect parry window in deciseconds from the start of the main window. 3 with main 5 = perfect on third decisecond of main window.
Time on both sides of perfect parry that still counts as part of the perfect window.
[parry_time_perfect_leeway] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds)
Parry spindown duration in deciseconds. main stage end to this is the spindown stage, afterwards the parry fully ends.
If set, overrides visual duration of spindown
Parry windup duration in deciseconds. 0 to this is windup, afterwards is main stage.
If set, overrides visual duration of windup
Flags added to return value
List appended to block return
Quirky proc to get average of flags in list that are in attack_type because why is attack_type a flag.
Gets the percentage efficiency of our parry.
+Returns a percentage in normal 0 to 100 scale, but not clamped to just 0 to 100. +This is a proc to allow for overriding. +@params
+Generates a HTML render of this datum for self-documentation +Maybe make this tgui-next someday haha god this is ugly as sin. +Does NOT include the popout or title or anything. Just the variables and explanations..
A datum that holds a proc to be called on another object, used to track proccalls to other objects
+var/datum/callback/C = new(object|null, PROC_REF(procname), arg1, arg2, ... argn)
+var/timerid = addtimer(C, time, timertype)
+you can also use the compiler define shorthand
+var/timerid = addtimer(CALLBACK(object|null, PROC_REF(procname), arg1, arg2, ... argn), time, timertype)
+
+Note: proc strings can only be given for datum proc calls, global procs must be proc paths
+Also proc strings are strongly advised against because they don't compile error if the proc stops existing
+In some cases you can provide a shortform of the procname, see the proc typepath shortcuts documentation below
+var/result = C.Invoke(args, to, add) additional args are added after the ones given when the callback was created
var/result = C.InvokeAsync(args, to, add) Asyncronous - returns . on the first sleep then continues on in the background
+after the sleep/block ends, otherwise operates normally.
(these operate on paths, not types, so to these shortcuts, datum is NOT a parent of atom, etc...)
+PROC_REF(procname)
+CALLBACK(src, PROC_REF(some_proc_here))
GLOBAL_PROC_REF(procname)
+CALLBACK(src, GLOBAL_PROC_REF(some_proc_here))
TYPE_PROC_REF(/some/type, some_proc_here)
Vars | |
| arguments | A list of arguments to pass into the proc |
|---|---|
| delegate | The proc we will be calling on the object |
| object | The object we will be calling the proc on |
| user | A weak reference to the user who triggered this callback |
Procs | |
| Invoke | Invoke this callback |
| InvokeAsync | Invoke this callback async (waitfor=false) |
| New | Create a new callback datum |
A list of arguments to pass into the proc
The proc we will be calling on the object
The object we will be calling the proc on
A weak reference to the user who triggered this callback
Invoke this callback
+Calls the registered proc on the registered object, if the user ref +can be resolved it also inclues that as an arg
+If the datum being called on is varedited, the call is wrapped via WrapAdminProcCall
Invoke this callback async (waitfor=false)
+Calls the registered proc on the registered object, if the user ref +can be resolved it also inclues that as an arg
+If the datum being called on is varedited, the call is wrapped via WrapAdminProcCall
Create a new callback datum
+Arguments
+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
Vars | |
| alert_sounds | Sounds made when announcement is receivedc |
|---|---|
| command_report_sounds | Sounds made when command report is received |
| custom_alert_message | Override this to have a custom message to show instead of the normal priority announcement |
| event_sounds | Event audio, can be used for specific event announcements and is assoc key - sound. If no sound is found the default is used.area |
| welcome_sounds | Roundshift start audio |
Sounds made when announcement is receivedc
Sounds made when command report is received
Override this to have a custom message to show instead of the normal priority announcement
Event audio, can be used for specific event announcements and is assoc key - sound. If no sound is found the default is used.area
Roundshift start audio
Vars | |
| profile_snapshot | Icon snapshot of the profile |
|---|---|
Icon snapshot of the profile
Datum for generating a message overlay on the map
Vars | |
| approx_lines | Contains the approximate amount of lines for height decay |
|---|---|
| current_z_idx | The current index used for adjusting the layer of each sequential chat message such that recent messages will overlay older ones |
| eol_complete | Contains the time that the EOL for the message will be complete, used for qdel scheduling |
| message | The visual element of the chat messsage |
| message_loc | The location in which the message is appearing |
| next | Contains the reference to the next chatmessage in the bucket, used by runechat subsystem |
| owned_by | The client who heard this message |
| prev | Contains the reference to the previous chatmessage in the bucket, used by runechat subsystem |
| scheduled_destruction | Contains the scheduled destruction time, used for scheduling EOL |
Procs | |
| New | Constructs a chat message overlay |
| colorize_string | Gets a color for a name, will return the same color for a given string consistently within a round.atom |
| end_of_life | Applies final animations to overlay CHAT_MESSAGE_EOL_FADE deciseconds prior to message deletion +Arguments: |
| enter_subsystem | Enters the runechat subsystem with this chatmessage, inserting it into the end-of-life queue |
| generate_image | Generates a chat message image representation |
| leave_subsystem | Removes this chatmessage datum from the runechat subsystem |
| on_parent_qdel | Calls qdel on the chatmessage when its parent is deleted, used to register qdel signal |
Contains the approximate amount of lines for height decay
The current index used for adjusting the layer of each sequential chat message such that recent messages will overlay older ones
Contains the time that the EOL for the message will be complete, used for qdel scheduling
The visual element of the chat messsage
The location in which the message is appearing
Contains the reference to the next chatmessage in the bucket, used by runechat subsystem
The client who heard this message
Contains the reference to the previous chatmessage in the bucket, used by runechat subsystem
Contains the scheduled destruction time, used for scheduling EOL
Constructs a chat message overlay
+Arguments:
+Gets a color for a name, will return the same color for a given string consistently within a round.atom
+Note that this proc aims to produce pastel-ish colors using the HSL colorspace. These seem to be favorable for displaying on the map.
+Arguments:
+Applies final animations to overlay CHAT_MESSAGE_EOL_FADE deciseconds prior to message deletion +Arguments:
+Enters the runechat subsystem with this chatmessage, inserting it into the end-of-life queue
+This will also account for a chatmessage already being registered, and in which case +the position will be updated to remove it from the previous location if necessary
+Arguments:
+Generates a chat message image representation
+Arguments:
+Removes this chatmessage datum from the runechat subsystem
Calls qdel on the chatmessage when its parent is deleted, used to register qdel signal
Vars | |
| priority | Higher is higher priority, determines which order reactions are checked. |
|---|---|
Higher is higher priority, determines which order reactions are checked.
This should match the interface of /client wherever necessary.
Vars | |
| prefs | Player preferences datum for the client |
|---|---|
| view | The view of the client, similar to /client/var/view. |
Player preferences datum for the client
The view of the client, similar to /client/var/view.
The component datum
+A component should be a single standalone unit +of functionality, that works by receiving signals from it's parent +object to provide some single functionality (i.e a slippery component) +that makes the object it's attached to cause people to slip over. +Useful when you want shared behaviour independent of type inheritance
Vars | |
| can_transfer | Only set to true if you are able to properly transfer this component +At a minimum RegisterWithParent and UnregisterFromParent should be used +Make sure you also implement PostTransfer for any post transfer handling |
|---|---|
| dupe_mode | Defines how duplicate existing components are handled when added to a datum
+See COMPONENT_DUPE_* definitions for available options |
| dupe_type | The type to check for duplication
+null means exact match on type (default)
+Any other type means that and all subtypes |
| parent | The datum this components belongs to |
Procs | |
| CheckDupeComponent | Called on a component when a component of the same type was added to the same parent with COMPONENT_DUPE_SELECTIVE
+See /datum/component/var/dupe_mode
+C's type will always be the same of the called component
+return TRUE if you are absorbing the component, otherwise FALSE if you are fine having it exist as a duplicate component |
| Destroy | Properly removes the component from parent and cleans up references |
| InheritComponent | Called on a component when a component of the same type was added to the same parent
+See /datum/component/var/dupe_mode
+C's type will always be the same of the called component |
| Initialize | Called during component creation with the same arguments as in new excluding parent.
+Do not call qdel(src) from this function, return COMPONENT_INCOMPATIBLE instead |
| New | Create a new component.
+Additional arguments are passed to Initialize() |
| PostTransfer | Callback Just after a component is transferred |
| PreTransfer | Callback Just before this component is transferred |
| RegisterWithParent | Register the component with the parent object |
| RemoveComponent | Removes the component from parent, ends up with a null parent |
| UnregisterFromParent | Unregister from our parent object |
| _GetInverseTypeList | Internal proc to create a list of our type and all parent types |
| _JoinParent | Internal proc to handle behaviour of components when joining a parent |
| _RemoveFromParent | Internal proc to handle behaviour when being removed from a parent |
| ui_host | Return the object that is the host of any UI's that this component has |
Only set to true if you are able to properly transfer this component +At a minimum RegisterWithParent and UnregisterFromParent should be used +Make sure you also implement PostTransfer for any post transfer handling
Defines how duplicate existing components are handled when added to a datum
+See COMPONENT_DUPE_* definitions for available options
The type to check for duplication
+null means exact match on type (default)
+Any other type means that and all subtypes
The datum this components belongs to
Called on a component when a component of the same type was added to the same parent with COMPONENT_DUPE_SELECTIVE
+See /datum/component/var/dupe_mode
+C's type will always be the same of the called component
+return TRUE if you are absorbing the component, otherwise FALSE if you are fine having it exist as a duplicate component
Properly removes the component from parent and cleans up references
Arguments:
+Called on a component when a component of the same type was added to the same parent
+See /datum/component/var/dupe_mode
+C's type will always be the same of the called component
Called during component creation with the same arguments as in new excluding parent.
+Do not call qdel(src) from this function, return COMPONENT_INCOMPATIBLE instead
Create a new component.
+Additional arguments are passed to Initialize()
Arguments:
+Callback Just after a component is transferred
+Use this to do any special setup you need to do after being moved to a new object
+Do not call qdel(src) from this function, return COMPONENT_INCOMPATIBLE instead
Callback Just before this component is transferred
+Use this to do any special cleanup you might need to do before being deregged from an object
Register the component with the parent object
+Use this proc to register with your parent object +Overridable proc that's called when added to a new parent
Removes the component from parent, ends up with a null parent
Unregister from our parent object
+Use this proc to unregister from your parent object +Overridable proc that's called when removed from a parent
Internal proc to create a list of our type and all parent types
Internal proc to handle behaviour of components when joining a parent
Internal proc to handle behaviour when being removed from a parent
Return the object that is the host of any UI's that this component has
Allows you to set a theme for a set of areas without tying them to looping sounds explicitly
Vars | |
| accepted_zs | A list of "acceptable" z levels to be on. If you leave this, we're gonna delete ourselves |
|---|---|
| area_to_looping_type | area -> looping sound type |
| our_loop | Current sound loop |
| timerid | The timer id of our current start delay, if it exists |
A list of "acceptable" z levels to be on. If you leave this, we're gonna delete ourselves
area -> looping sound type
Current sound loop
The timer id of our current start delay, if it exists
Combat mode component. It makes the user face whichever atom the mouse pointer is hovering, +amongst other things designed outside of this file, namely PvP and PvE stuff, hence the name. +Can be toggled on and off by clicking the screen hud object or by pressing the assigned hotkey (default 'C')
Procs | |
| check_flags | Returns a field of flags that are contained in both the second arg and our bitfield variable. |
|---|---|
| disable_combat_mode | Disables combat mode. Please use 'safe_disable_combat_mode' instead, if you wish to also disable the toggle flag. |
| enable_combat_mode | Enables combat mode. Please use 'safe_enable_combat_mode' instead, if you wish to also enable the toggle flag. |
| onMouseMove | Changes the user direction to (try) match the pointer. |
| on_death | Disables combat mode upon death. |
| on_logout | Disables combat mode upon logout |
| on_mob_hud_created | Creates the hud screen object. |
| on_move | Changes the user direction to (try) keep match the pointer. |
| safe_disable_combat_mode | Disables intentionally being in combat mode. Please try to use the COMSIG_COMBAT_MODE_CHECK signal for feedback when possible. |
| safe_enable_combat_mode | Enables intentionally being in combat mode. Please try to use the COMSIG_COMBAT_MODE_CHECK signal for feedback when possible. |
| update_combat_lock | Combat mode can be locked out, forcibly disabled by a status trait. |
| user_toggle_intentional_combat_mode | Toggles whether the user is intentionally in combat mode. THIS should be the proc you generally use! Has built in visual/to other player feedback, as well as an audible cue to ourselves. |
Returns a field of flags that are contained in both the second arg and our bitfield variable.
Disables combat mode. Please use 'safe_disable_combat_mode' instead, if you wish to also disable the toggle flag.
Enables combat mode. Please use 'safe_enable_combat_mode' instead, if you wish to also enable the toggle flag.
Changes the user direction to (try) match the pointer.
Disables combat mode upon death.
Disables combat mode upon logout
Creates the hud screen object.
Changes the user direction to (try) keep match the pointer.
Disables intentionally being in combat mode. Please try to use the COMSIG_COMBAT_MODE_CHECK signal for feedback when possible.
Enables intentionally being in combat mode. Please try to use the COMSIG_COMBAT_MODE_CHECK signal for feedback when possible.
Combat mode can be locked out, forcibly disabled by a status trait.
Toggles whether the user is intentionally in combat mode. THIS should be the proc you generally use! Has built in visual/to other player feedback, as well as an audible cue to ourselves.
A component to reset the parent to its previous state after some time passes
Vars | |
| brain_loss | The starting value of brain loss at the beginning of the effect |
|---|---|
| brute_loss | The starting value of brute loss at the beginning of the effect +This only applies to simple animals |
| clone_loss | The starting value of clone loss at the beginning of the effect |
| integrity | The starting value of integrity at the beginning of the effect +This only applies to objects |
| oxy_loss | The starting value of oxygen loss at the beginning of the effect |
| rewind_interval | How long to wait between each rewind |
| rewind_type | Determined by the type of the parent so different behaviours can happen per type |
| rewinds_remaining | How many rewinds will happen before the effect ends |
| saved_bodyparts | A list of body parts saved at the beginning of the effect |
| starting_turf | The turf the parent was on when this components was applied, they get moved back here after the duration |
| tox_loss | The starting value of toxin loss at the beginning of the effect |
The starting value of brain loss at the beginning of the effect
The starting value of brute loss at the beginning of the effect +This only applies to simple animals
The starting value of clone loss at the beginning of the effect
The starting value of integrity at the beginning of the effect +This only applies to objects
The starting value of oxygen loss at the beginning of the effect
How long to wait between each rewind
Determined by the type of the parent so different behaviours can happen per type
How many rewinds will happen before the effect ends
A list of body parts saved at the beginning of the effect
The turf the parent was on when this components was applied, they get moved back here after the duration
The starting value of toxin loss at the beginning of the effect
Vars | |
| after_eat | Callback to be ran for when you take a bite of something |
|---|---|
| bite_consumption | Amount of reagents taken per bite |
| bitecount | Amount of bites taken so far |
| eat_time | Amount of seconds it takes to eat this food |
| eatverbs | Message to send when eating |
| food_flags | Flags for food |
| foodtypes | Bitfield of the types of this food |
| junkiness | Defines how much it lowers someones satiety (Need to eat, essentialy) |
| last_check_time | Last time we checked for food likes |
Procs | |
| CanConsume | Checks whether or not the eater can actually consume the food |
| On_Consume | Delete the item when it is fully eaten |
| TakeBite | This function lets the eater take a bite and transfers the reagents to the eater. |
| TryToEat | All the checks for the act of eating itself and |
| UseByAnimal | Ability to feed food to puppers |
| checkLiked | Check foodtypes to see if we should send a moodlet |
Callback to be ran for when you take a bite of something
Amount of reagents taken per bite
Amount of bites taken so far
Amount of seconds it takes to eat this food
Message to send when eating
Flags for food
Bitfield of the types of this food
Defines how much it lowers someones satiety (Need to eat, essentialy)
Last time we checked for food likes
Checks whether or not the eater can actually consume the food
Delete the item when it is fully eaten
This function lets the eater take a bite and transfers the reagents to the eater.
All the checks for the act of eating itself and
Ability to feed food to puppers
Check foodtypes to see if we should send a moodlet
Vars | |
| harmful | if both our pain multiplier and jostle pain multiplier are 0, we're harmless and can omit most of the damage related stuff |
|---|---|
Procs | |
| Topic | Someone is ripping out the item from the turf by hand |
| byeItemCarbon | Something deleted or moved our weapon while it was embedded, how rude! |
| fallOutCarbon | Called when then item randomly falls out of a carbon. This handles the damage and descriptors, then calls safe_remove() |
| initCarbon | //////////HUMAN PROCS//////////////// |
| initTurf | ///////////TURF PROCS//////////////// |
| itemMoved | This proc handles if something knocked the invisible item loose from the turf somehow (probably an explosion). Just make it visible and say it fell loose, then get outta here. |
| jostleCheck | Called every time a carbon with a harmful embed moves, rolling a chance for the item to cause pain. The chance is halved if the carbon is crawling or walking. |
| processCarbon | Items embedded/stuck to carbons both check whether they randomly fall out (if applicable), as well as if the target mob and limb still exists. +Items harmfully embedded in carbons have an additional check for random pain (if applicable) |
| ripOutCarbon | Called when a carbon with an object embedded/stuck to them inspects themselves and clicks the appropriate link to begin ripping the item out. This handles the ripping attempt, descriptors, and dealing damage, then calls safe_remove() |
| safeRemoveCarbon | This proc handles the final step and actual removal of an embedded/stuck item from a carbon, whether or not it was actually removed safely. +Pass TRUE for to_hands if we want it to go to the victim's hands when they pull it out |
if both our pain multiplier and jostle pain multiplier are 0, we're harmless and can omit most of the damage related stuff
Someone is ripping out the item from the turf by hand
Something deleted or moved our weapon while it was embedded, how rude!
Called when then item randomly falls out of a carbon. This handles the damage and descriptors, then calls safe_remove()
//////////HUMAN PROCS////////////////
+Set up an instance of embedding for a carbon. This is basically an extension of Initialize() so not much to say
///////////TURF PROCS////////////////
+Turfs are much lower maintenance, since we don't care if they're in pain, but since they don't bleed or scream, we draw an overlay to show their status. +The only difference pointy/sticky items make here is text descriptors and pointy objects making a spark shower on impact.
This proc handles if something knocked the invisible item loose from the turf somehow (probably an explosion). Just make it visible and say it fell loose, then get outta here.
Called every time a carbon with a harmful embed moves, rolling a chance for the item to cause pain. The chance is halved if the carbon is crawling or walking.
Items embedded/stuck to carbons both check whether they randomly fall out (if applicable), as well as if the target mob and limb still exists. +Items harmfully embedded in carbons have an additional check for random pain (if applicable)
Called when a carbon with an object embedded/stuck to them inspects themselves and clicks the appropriate link to begin ripping the item out. This handles the ripping attempt, descriptors, and dealing damage, then calls safe_remove()
This proc handles the final step and actual removal of an embedded/stuck item from a carbon, whether or not it was actually removed safely. +Pass TRUE for to_hands if we want it to go to the victim's hands when they pull it out
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.
Procs | |
| detonate | Expldoe and remove the object |
|---|---|
| explodable_attack | Called when you use this object to attack sopmething |
| explodable_attack_zone | Called when you attack a specific body part of the thing this is equipped on. Useful for exploding pants. |
| is_hitting_zone | Checks if we're hitting the zone this component is covering |
Expldoe and remove the object
Called when you use this object to attack sopmething
Called when you attack a specific body part of the thing this is equipped on. Useful for exploding pants.
Checks if we're hitting the zone this component is covering
Field of Vision component. Does totally what you probably think it does, +ergo preventing players from seeing what's behind them.
Vars | |
| adj_mask | A circle image used to somewhat uncover the adjacent portion of the shadow cone, making mobs and objects behind us somewhat visible. +The owner mask is still required for those mob going over the default 32x32 px size btw. |
|---|---|
| angle | How much is the cone rotated clockwise, purely backend. Please use rotate_shadow_cone() if you must. |
| current_fov_size | The current screen size this field of vision is meant to fit for. |
| fov | That special invisible, almost neigh indestructible movable +that holds both shadow cone mask and image and follows the player around. |
| nested_locs | A list of nested locations the mob is in, to ensure the above image works correctly. |
| owner_mask | An image whose render_source is kept up to date to prevent the mob (or the topmost movable holding it) from being hidden by the mask. +Will make it use vis_contents instead once a few byonds bugs with images and vis contents are fixed. |
| rot_scale | Used to scale the shadow cone when rotating it to fit over the edges of the screen. |
| shadow_angle | The inner angle of this cone, right hardset to 90, 180, or 270 degrees, until someone figures out a way to make it dynamic. |
| shadow_mask | The mask portion of the cone, placed on a * render target plane so while not visible it still applies the filter. |
| visual_shadow | The visual portion of the cone, placed on the highest layer of the wall plane |
| width_n_height_offsets | A static list of offsets based on icon width and height, because render sources are centered unlike most other visuals, +and that gives us some problems when the icon is larger or smaller than world.icon_size |
Procs | |
| generate_fov_holder | Generates the holder and images (if not generated yet) and adds them to client.images. +Run when the component is registered to a player mob, or upon login. |
| hide_fov | Hides the shadow, other visibility comsig procs will take it into account. Called when the mob dies. |
| manual_centered_render_source | A hacky comsig proc for things that somehow decide to change icon on the go. may make a change_icon_file() proc later but... |
| on_change_view | Called when the client view size is changed. |
| on_loc_moved | Pretty much like the above, but meant for other movables the mob is stored in (bodybags, boxes, mechs etc). |
| on_mob_moved | Called when the owner mob moves around. Used to keep shadow located right behind us, +As well as modify the owner mask to match the topmost item. |
| on_reset_perspective | Hides the shadow when looking through other items, shows it otherwise. |
| resize_fov | Resizes the shadow to match the current screen size. +Run when the client view size is changed, or if the player has a viewsize different than "15x15" on login/comp registration. |
| rotate_shadow_cone | Rotates the shadow cone to a certain degree. Backend shenanigans. |
| show_fov | Shows the shadow. Called when the mob is revived. |
A circle image used to somewhat uncover the adjacent portion of the shadow cone, making mobs and objects behind us somewhat visible. +The owner mask is still required for those mob going over the default 32x32 px size btw.
How much is the cone rotated clockwise, purely backend. Please use rotate_shadow_cone() if you must.
The current screen size this field of vision is meant to fit for.
That special invisible, almost neigh indestructible movable +that holds both shadow cone mask and image and follows the player around.
A list of nested locations the mob is in, to ensure the above image works correctly.
An image whose render_source is kept up to date to prevent the mob (or the topmost movable holding it) from being hidden by the mask. +Will make it use vis_contents instead once a few byonds bugs with images and vis contents are fixed.
Used to scale the shadow cone when rotating it to fit over the edges of the screen.
The inner angle of this cone, right hardset to 90, 180, or 270 degrees, until someone figures out a way to make it dynamic.
The mask portion of the cone, placed on a * render target plane so while not visible it still applies the filter.
The visual portion of the cone, placed on the highest layer of the wall plane
A static list of offsets based on icon width and height, because render sources are centered unlike most other visuals, +and that gives us some problems when the icon is larger or smaller than world.icon_size
Generates the holder and images (if not generated yet) and adds them to client.images. +Run when the component is registered to a player mob, or upon login.
Hides the shadow, other visibility comsig procs will take it into account. Called when the mob dies.
A hacky comsig proc for things that somehow decide to change icon on the go. may make a change_icon_file() proc later but...
Called when the client view size is changed.
Pretty much like the above, but meant for other movables the mob is stored in (bodybags, boxes, mechs etc).
Called when the owner mob moves around. Used to keep shadow located right behind us, +As well as modify the owner mask to match the topmost item.
Hides the shadow when looking through other items, shows it otherwise.
Resizes the shadow to match the current screen size. +Run when the client view size is changed, or if the player has a viewsize different than "15x15" on login/comp registration.
Rotates the shadow cone to a certain degree. Backend shenanigans.
Shows the shadow. Called when the mob is revived.
Footstep component. Plays footsteps at parents location when it is appropriate.
Vars | |
| e_range | e_range stands for extra range - aka how far the sound can be heard. This is added to the base value and ignored if there isn't a base value. |
|---|---|
| footstep_sounds | This can be a list OR a soundfile OR null. Determines whatever sound gets played. |
| footstep_type | footstep_type is a define which determines what kind of sounds should get chosen. |
| steps | How many steps the parent has taken since the last time a footstep was played |
| volume | volume determines the extra volume of the footstep. This is multiplied by the base volume, should there be one. |
Procs | |
| prepare_step | Prepares a footstep. Determines if it should get played. Returns the turf it should get played on. Note that it is always a /turf/open |
e_range stands for extra range - aka how far the sound can be heard. This is added to the base value and ignored if there isn't a base value.
This can be a list OR a soundfile OR null. Determines whatever sound gets played.
footstep_type is a define which determines what kind of sounds should get chosen.
How many steps the parent has taken since the last time a footstep was played
volume determines the extra volume of the footstep. This is multiplied by the base volume, should there be one.
Prepares a footstep. Determines if it should get played. Returns the turf it should get played on. Note that it is always a /turf/open
GPS component subtype. Only gps/item's can be used to open the UI.
Vars | |
| state | UI state of GPS, altering when it can be used. |
|---|---|
Procs | |
| interact | Called on COMSIG_ITEM_ATTACK_SELF |
| on_AltClick | Calls toggletracking |
| on_emp_act | Called on COMSIG_ATOM_EMP_ACT |
| on_examine | Called on COMSIG_PARENT_EXAMINE |
| reboot | Restarts the GPS after getting turned off by an EMP. |
| toggletracking | Toggles the tracking for the gps |
UI state of GPS, altering when it can be used.
Called on COMSIG_ITEM_ATTACK_SELF
Calls toggletracking
Called on COMSIG_ATOM_EMP_ACT
Called on COMSIG_PARENT_EXAMINE
Restarts the GPS after getting turned off by an EMP.
Toggles the tracking for the gps
Identification components
Vars | |
| additional_examine_text | If this is set, show this on examine to the examiner if they know how to use it. |
|---|---|
| deconstructor_reveal_text | Added to deconstructive analyzer say on success if set |
| identification_effect_flags | General flags for what we should do. |
| identification_flags | General flags for how we should work. |
| identification_method_flags | General flags for how we can be identified. |
If this is set, show this on examine to the examiner if they know how to use it.
Added to deconstructive analyzer say on success if set
General flags for what we should do.
General flags for how we should work.
General flags for how we can be identified.
Identification component subtype - Syndicate
+Checks if the user is a traitor.
KILLER QUEEN
+Simple contact bomb component +Blows up the first person to touch it.
Vars | |
| dev | dev explosion radius |
|---|---|
| ex_strength | strength of explosion on the touch-er. 0 to disable. usually only used if the normal explosion is disabled (this is the default). |
| examine_message | examine message |
| exploded | did we explode |
| failure | callback to invoke with (parent) when deleting without an explosion |
| flame | flame explosion radius |
| heavy | heavy explosion radius |
| light | light explosion radius |
| living_only | only triggered by living mobs |
| pre_explode | callback to invoke with (parent, victim) before standard detonation - useful for losing a reference to this component or implementing custom behavior. return FALSE to prevent explosion. |
dev explosion radius
strength of explosion on the touch-er. 0 to disable. usually only used if the normal explosion is disabled (this is the default).
examine message
did we explode
callback to invoke with (parent) when deleting without an explosion
flame explosion radius
heavy explosion radius
light explosion radius
only triggered by living mobs
callback to invoke with (parent, victim) before standard detonation - useful for losing a reference to this component or implementing custom behavior. return FALSE to prevent explosion.
Vars | |
| throw_anchored | whether this can throw anchored targets (tables, etc) |
|---|---|
| throw_distance | distance the atom will be thrown |
| throw_gentle | whether this is a gentle throw (default false means people thrown into walls are stunned / take damage) |
Procs | |
| do_knockback | Throw a target in a direction |
| hostile_attackingtarget | triggered after a hostile simplemob attacks something |
| item_afterattack | triggered after an item attacks something |
| projectile_hit | triggered after a projectile hits something |
whether this can throw anchored targets (tables, etc)
distance the atom will be thrown
whether this is a gentle throw (default false means people thrown into walls are stunned / take damage)
Throw a target in a direction
+Arguments:
+triggered after a hostile simplemob attacks something
triggered after an item attacks something
triggered after a projectile hits something
The label component.
+This component is used to manage labels applied by the hand labeler.
+Atoms can only have one instance of this component, and therefore only one label at a time. +This is to avoid having names like "Backpack (label1) (label2) (label3)". This is annoying and abnoxious to read.
+When a player clicks the atom with a hand labeler to apply a label, this component gets applied to it. +If the labeler is off, the component will be removed from it, and the label will be removed from its name.
Vars | |
| label_name | The name of the label the player is applying to the parent. |
|---|---|
Procs | |
| Examine | This proc will trigger when someone examines the parent.
+It will attach the text found in the body of the proc to the examine_list and display it to the player examining the parent. |
| InheritComponent | This proc will fire after the parent is hit by a hand labeler which is trying to apply another label. +Since the parent already has a label, it will remove the old one from the parent's name, and apply the new one. |
| OnAttackby | This proc will trigger when any object is used to attack the parent. |
| apply_label | Applies a label to the name of the parent in the format of: "parent_name (label)" |
| remove_label | Removes the label from the parent's name |
The name of the label the player is applying to the parent.
This proc will trigger when someone examines the parent.
+It will attach the text found in the body of the proc to the examine_list and display it to the player examining the parent.
Arguments:
+This proc will fire after the parent is hit by a hand labeler which is trying to apply another label. +Since the parent already has a label, it will remove the old one from the parent's name, and apply the new one.
This proc will trigger when any object is used to attack the parent.
+If the attacking object is not a hand labeler, it will return. +If the attacking object is a hand labeler it will restore the name of the parent to what it was before this component was added to it, and the component will be deleted.
+Arguments:
+Applies a label to the name of the parent in the format of: "parent_name (label)"
Removes the label from the parent's name
Vars | |
| after_insert | A callback invoked after materials are inserted into this container |
|---|---|
| allowed_materials | The list of materials that this material container can accept |
| last_inserted_id | The last main material that was inserted into this container |
| materials | Map of material ref -> amount |
| max_amount | The maximum amount of materials this material container can contain |
| precise_insertion | Whether or not this material container allows specific amounts from sheets to be inserted |
| precondition | A callback invoked before materials are inserted into this container |
| total_amount | The total amount of materials this material container contains |
Procs | |
| Initialize | Sets up the proper signals and fills the list of materials with the appropriate references. |
| amount2sheet | Turns a material amount into the amount of sheets it should output |
| can_hold_material | The default check for whether we can add materials to this material container. |
| can_insert_amount_mat | Proc for checking if there is room in the component, returning the amount or else the amount lacking. |
| get_categories | Returns all the categories in a recipe. |
| get_item_material_amount | returns the amount of material relevant to this container; if this container does not support glass, any glass in 'I' will not be taken into account |
| get_material_amount | Returns the amount of a specific material in this container. |
| has_enough_of_category | Returns TRUE if you have enough of a specified material category (Which could be multiple materials) |
| has_enough_of_material | Returns TRUE if you have enough of the specified material. |
| has_materials | Checks if its possible to afford a certain amount of materials. Takes a dictionary of materials. |
| has_space | Proc that returns TRUE if the container has space |
| insert_amount_mat | For inserting an amount of material |
| insert_item | Proc specifically for inserting items, returns the amount of materials entered. |
| insert_item_materials | Inserts the relevant materials from an item into this material container. |
| on_attackby | Proc that allows players to fill the parent with mats |
| retrieve_all | Proc to get all the materials and dump them as sheets |
| retrieve_sheets | For spawning mineral sheets at a specific location. Used by machines to output sheets. |
| sheet2amount | Turns an amount of sheets into the amount of material amount it should output |
| transer_amt_to | Proc for transfering materials to another container. |
| use_amount_mat | Uses an amount of a specific material, effectively removing it. |
| use_materials | For consuming a dictionary of materials. mats is the map of materials to use and the corresponding amounts, example: list(M/datum/material/glass =100, datum/material/iron=200) |
| user_insert | Proc used for when player inserts materials |
A callback invoked after materials are inserted into this container
The list of materials that this material container can accept
The last main material that was inserted into this container
Map of material ref -> amount
The maximum amount of materials this material container can contain
Whether or not this material container allows specific amounts from sheets to be inserted
A callback invoked before materials are inserted into this container
The total amount of materials this material container contains
Sets up the proper signals and fills the list of materials with the appropriate references.
Turns a material amount into the amount of sheets it should output
The default check for whether we can add materials to this material container.
+Arguments:
+Proc for checking if there is room in the component, returning the amount or else the amount lacking.
Returns all the categories in a recipe.
returns the amount of material relevant to this container; if this container does not support glass, any glass in 'I' will not be taken into account
Returns the amount of a specific material in this container.
Returns TRUE if you have enough of a specified material category (Which could be multiple materials)
Returns TRUE if you have enough of the specified material.
Checks if its possible to afford a certain amount of materials. Takes a dictionary of materials.
Proc that returns TRUE if the container has space
For inserting an amount of material
Proc specifically for inserting items, returns the amount of materials entered.
Inserts the relevant materials from an item into this material container.
+Arguments:
+Proc that allows players to fill the parent with mats
Proc to get all the materials and dump them as sheets
For spawning mineral sheets at a specific location. Used by machines to output sheets.
Turns an amount of sheets into the amount of material amount it should output
Proc for transfering materials to another container.
Uses an amount of a specific material, effectively removing it.
For consuming a dictionary of materials. mats is the map of materials to use and the corresponding amounts, example: list(M/datum/material/glass =100, datum/material/iron=200)
Proc used for when player inserts materials
Procs | |
| direct_sanity_drain | Causes direct drain of someone's sanity, call it with a numerical value corresponding how badly you want to hurt their sanity |
|---|---|
| on_revive | Called when parent is revived. |
| update_mood | Called after moodevent/s have been added/removed. |
Causes direct drain of someone's sanity, call it with a numerical value corresponding how badly you want to hurt their sanity
Called when parent is revived.
Called after moodevent/s have been added/removed.
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.
Vars | |
| lives_left | The number of respawns the living mob has left. |
|---|---|
The number of respawns the living mob has left.
Vars | |
| can_be_deleted | Allow deletion |
|---|---|
| emp_desync_mod | EMP severity div for cloudsync reset chance |
| emp_flat_deletion_lower | EMP flat deletion lower |
| emp_flat_deletion_upper | EMP flat deletion upper |
| emp_percent_deletion_lower | EMP percent deletion lower |
| emp_percent_deletion_upper | EMP percent deletion upper |
| emp_severity_mod | EMP severity multiplier, capping to 0 to 100 |
| minor_shock_deletion_lower | minor shock deletion lower |
| minor_shock_deletion_upper | minor shock deletion upper |
| permanent_programs | Permanent programs - can never be deleted. does not count towards max_programs. |
| qdel_self_on_depletion | Delete ourselves when we're depleted. |
| requires_cloud_sync | Whether or not we can survive no cloud syncing without errors |
| shock_flat_deletion_lower | Shock flat deletion lower |
| shock_flat_deletion_upper | Shock flat deletion upper |
| shock_percent_deletion_lower | Shock percent deletion lower |
| shock_percent_deletion_upper | Shock percent deletion upper |
| start_time | Separate list of protocol programs, to avoid looping through the whole programs list when checking for conflicts |
| stealth | Timestamp to when the nanites were first inserted in the host |
Procs | |
| add_permanent_program | Adds permanent programs |
| add_program | Adds a nanite program, replacing existing unique programs of the same type. A source program can be specified to copy its programming onto the new one. |
| adjust_nanites | Modifies the current nanite volume, then checks if the nanites are depleted or exceeding the maximum amount |
| check_console_locking | Checks if we can block out console modification |
| check_host_lockout | Checks if we can lock out host internal conscious modification |
| check_viral_prevention | Checks if we can block out viral replica |
| cloud_sync | Syncs the nanites to their assigned cloud copy, if it is available. If it is not, there is a small chance of a software error instead. |
| delete_nanites | Used to rid ourselves +Deletes nanites! |
| nanites_depleted | Called when nanites are depleted. +Deletes ourselves by default. |
| reject_excess_nanites | |
| set_nanite_bar | Updates the nanite volume bar visible in diagnostic HUDs |
| sync | Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status) |
Allow deletion
EMP severity div for cloudsync reset chance
EMP flat deletion lower
EMP flat deletion upper
EMP percent deletion lower
EMP percent deletion upper
EMP severity multiplier, capping to 0 to 100
minor shock deletion lower
minor shock deletion upper
Permanent programs - can never be deleted. does not count towards max_programs.
Delete ourselves when we're depleted.
Whether or not we can survive no cloud syncing without errors
Shock flat deletion lower
Shock flat deletion upper
Shock percent deletion lower
Shock percent deletion upper
Separate list of protocol programs, to avoid looping through the whole programs list when checking for conflicts
Timestamp to when the nanites were first inserted in the host
Adds permanent programs
+WARNING: Has no sanity checks. Make sure you know what you are doing! (make sure programs do not conflict)
Adds a nanite program, replacing existing unique programs of the same type. A source program can be specified to copy its programming onto the new one.
Modifies the current nanite volume, then checks if the nanites are depleted or exceeding the maximum amount
Checks if we can block out console modification
Checks if we can lock out host internal conscious modification
Checks if we can block out viral replica
Syncs the nanites to their assigned cloud copy, if it is available. If it is not, there is a small chance of a software error instead.
Used to rid ourselves +Deletes nanites!
Called when nanites are depleted. +Deletes ourselves by default.
Handles how nanites leave the host's body if they find out that they're currently exceeding the maximum supported amount
+
+IC explanation: +Normally nanites simply discard excess volume by slowing replication or 'sweating' it out in imperceptible amounts, +but if there is a large excess volume, likely due to a programming change that leaves them unable to support their current volume, +the nanites attempt to leave the host as fast as necessary to prevent nanite poisoning. This can range from minor oozing to nanites +rapidly bursting out from every possible pathway, causing temporary inconvenience to the host.
Updates the nanite volume bar visible in diagnostic HUDs
Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status)
omen.dm: For when you want someone to have a really bad day
+When you attach an omen component to someone, they start running the risk of all sorts of bad environmental injuries, like nearby vending machines randomly falling on you, +or hitting your head really hard when you slip and fall, or... well, for now those two are all I have. More will come.
+Omens are removed once the victim is either maimed by one of the possible injuries, or if they receive a blessing (read: bashing with a bible) from the chaplain.
Vars | |
| vessel | Whatever's causing the omen, if there is one. Destroying the vessel won't stop the omen, but we destroy the vessel (if one exists) upon the omen ending |
|---|---|
Procs | |
| check_accident | check_accident() is called each step we take |
| check_bless | Hijack the mood system to see if we get the blessing mood event to cancel the omen |
| check_slip | If we get knocked down, see if we have a really bad slip and bash our head hard |
Whatever's causing the omen, if there is one. Destroying the vessel won't stop the omen, but we destroy the vessel (if one exists) upon the omen ending
check_accident() is called each step we take
+While we're walking around, roll to see if there's any environmental hazards (currently only vending machines) on one of the adjacent tiles we can trigger. +We do the prob() at the beginning to A. add some tension for /when/ it will strike, and B. (more importantly) ameliorate the fact that we're checking up to 5 turfs's contents each time
Hijack the mood system to see if we get the blessing mood event to cancel the omen
If we get knocked down, see if we have a really bad slip and bash our head hard
Vars | |
| bodies | For grenades, any /mob/living's the grenade is moved onto, see /datum/component/pellet_cloud/proc/handle_martyrs |
|---|---|
| hits | how many pellets impacted something |
| num_pellets | How many shrapnel projectiles are we responsible for tracking? May be reduced for grenades if someone dives on top of it. Defined by ammo casing for casings, derived from magnitude otherwise |
| pellet_delta | For grenades, tracking how many pellets are removed due to martyrs and how many pellets are added due to the last person to touch it being on top of it |
| pellets | The list of pellets we're responsible for tracking, once these are all accounted for, we finalize. |
| projectile_type | What's the projectile path of the shrapnel we're shooting? |
| purple_hearts | For grenades, tracking people who die covering a grenade for achievement purposes, see [/datum/component/pellet_cloud/proc/handle_martyrs()] |
| queued_delete | If the parent tried deleting and we're not done yet, we send it to nullspace then delete it after |
| radius | For grenades/landmines, how big is the radius of turfs we're targeting? Note this does not effect the projectiles range, only how many we generate |
| shooter | for if we're an ammo casing being fired |
| targets_hit | An associated list with the atom hit as the key and how many pellets they've eaten for the value, for printing aggregate messages |
| terminated | how many pellets ranged out without hitting anything |
| wound_info_by_part | Another associated list for hit bodyparts on carbons so we can track how much wounding potential we have for each bodypart |
Procs | |
| create_blast_pellets | create_blast_pellets() is for when we have a central point we want to shred the surroundings of with a ring of shrapnel, namely frag grenades and landmines. |
| create_casing_pellets | create_casing_pellets() is for directed pellet clouds for ammo casings that have multiple pellets (buckshot and scatter lasers for instance) |
| finalize | All of our pellets are accounted for, time to go target by target and tell them how many things they got hit by. |
| grenade_armed | Look alive, we're armed! Now we start watching to see if anyone's covering us |
| grenade_dropped | Someone dropped the grenade, so set them to the shooter in case they're on top of it when it goes off |
| grenade_moved | Our grenade has moved, reset var/list/bodies so we're "on top" of any mobs currently on the tile |
| grenade_uncrossed | Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it |
| handle_martyrs | handle_martyrs() is used for grenades that shoot shrapnel to check if anyone threw themselves/were thrown on top of the grenade, thus absorbing a good chunk of the shrapnel |
| nullspace_parent | Our grenade or landmine or caseless shell or whatever tried deleting itself, so we intervene and nullspace it until we're done here |
| on_target_qdel | Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it |
| pellet_hit | One of our pellets hit something, record what it was and check if we're done (terminated == num_pellets) |
| pellet_range | One of our pellets disappeared due to hitting their max range (or just somehow got qdel'd), remove it from our list and check if we're done (terminated == num_pellets) |
| pew | Minor convenience function for creating each shrapnel piece with circle explosions, mostly stolen from the MIRV component |
For grenades, any /mob/living's the grenade is moved onto, see /datum/component/pellet_cloud/proc/handle_martyrs
how many pellets impacted something
How many shrapnel projectiles are we responsible for tracking? May be reduced for grenades if someone dives on top of it. Defined by ammo casing for casings, derived from magnitude otherwise
For grenades, tracking how many pellets are removed due to martyrs and how many pellets are added due to the last person to touch it being on top of it
The list of pellets we're responsible for tracking, once these are all accounted for, we finalize.
What's the projectile path of the shrapnel we're shooting?
For grenades, tracking people who die covering a grenade for achievement purposes, see [/datum/component/pellet_cloud/proc/handle_martyrs()]
If the parent tried deleting and we're not done yet, we send it to nullspace then delete it after
For grenades/landmines, how big is the radius of turfs we're targeting? Note this does not effect the projectiles range, only how many we generate
for if we're an ammo casing being fired
An associated list with the atom hit as the key and how many pellets they've eaten for the value, for printing aggregate messages
how many pellets ranged out without hitting anything
Another associated list for hit bodyparts on carbons so we can track how much wounding potential we have for each bodypart
create_blast_pellets() is for when we have a central point we want to shred the surroundings of with a ring of shrapnel, namely frag grenades and landmines.
+Note that grenades have extra handling for someone throwing themselves/being thrown on top of it, while landmines do not (obviously, it's a landmine!). See [/datum/component/pellet_cloud/proc/handle_martyrs()]
create_casing_pellets() is for directed pellet clouds for ammo casings that have multiple pellets (buckshot and scatter lasers for instance)
+Honestly this is mostly just a rehash of [/obj/item/ammo_casing/proc/fire_casing()] for pellet counts > 1, except this lets us tamper with the pellets and hook onto them for tracking purposes. +The arguments really don't matter, this proc is triggered by COMSIG_PELLET_CLOUD_INIT which is only for this really, it's just a big mess of the state vars we need for doing the stuff over here.
All of our pellets are accounted for, time to go target by target and tell them how many things they got hit by.
Look alive, we're armed! Now we start watching to see if anyone's covering us
Someone dropped the grenade, so set them to the shooter in case they're on top of it when it goes off
Our grenade has moved, reset var/list/bodies so we're "on top" of any mobs currently on the tile
Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it
handle_martyrs() is used for grenades that shoot shrapnel to check if anyone threw themselves/were thrown on top of the grenade, thus absorbing a good chunk of the shrapnel
+Between the time the grenade is armed and the actual detonation, we set var/list/bodies to the list of mobs currently on the new tile, as if the grenade landed on top of them, tracking if any of them move off the tile and removing them from the "under" list +Once the grenade detonates, handle_martyrs() is called and gets all the new mobs on the tile, and add the ones not in var/list/bodies to var/list/martyrs +We then iterate through the martyrs and reduce the shrapnel magnitude for each mob on top of it, shredding each of them with some of the shrapnel they helped absorb. This can snuff out all of the shrapnel if there's enough bodies
+Note we track anyone who's alive and client'd when they get shredded in var/list/purple_hearts, for achievement checking later
Our grenade or landmine or caseless shell or whatever tried deleting itself, so we intervene and nullspace it until we're done here
Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it
One of our pellets hit something, record what it was and check if we're done (terminated == num_pellets)
One of our pellets disappeared due to hitting their max range (or just somehow got qdel'd), remove it from our list and check if we're done (terminated == num_pellets)
Minor convenience function for creating each shrapnel piece with circle explosions, mostly stolen from the MIRV component
Procs | |
| check_contents | Check that the contents of the recipe meet the requirements. |
|---|---|
Check that the contents of the recipe meet the requirements.
+user: The /mob that initated the crafting. +R: The /datum/crafting_recipe being attempted. +contents: List of items to search for R's reqs.
Vars | |
| active | FALSE to pretty much just not exist in the plumbing world so we can be moved, TRUE to go plumbo mode |
|---|---|
| demand_connects | direction in wich we act as a demander |
| ducterlays | We can't just cut all of the parents' overlays, so we'll track them here |
| ducts | Index with "1" = /datum/ductnet/theductpointingnorth etc. "1" being the num2text from NORTH define |
| reagents | shortcut to our parents' reagent holder |
| supply_connects | directions in wich we act as a supplier |
| turn_connects | if TRUE connects will spin with the parent object visually and codually, so you can have it work in any direction. FALSE if you want it to be static |
| use_overlays | TRUE if we wanna add proper pipe outless under our parent object. this is pretty good if i may so so myself |
Procs | |
| can_add | Can we be added to the ductnet? |
| can_give | returns TRUE when they can give the specified amount and reagent. called by process request |
| create_overlays | We create our luxurious piping overlays/underlays, to indicate where we do what. only called once if use_overlays = TRUE in Initialize() |
| disable | we stop acting like a plumbing thing and disconnect if we are, so we can safely be moved and stuff |
| enable | settle wherever we are, and start behaving like a piece of plumbing |
| get_original_direction | Give the direction of a pipe, and it'll return wich direction it originally was when it's object pointed SOUTH |
| process_request | check who can give us what we want, and how many each of them will give us |
| send_request | called from in process(). only calls process_request(), but can be overwritten for children with special behaviour |
| toggle_active | Toggle our machinery on or off. This is called by a hook from default_unfasten_wrench with anchored as only param, so we dont have to copypaste this on every object that can move |
| transfer_to | this is where the reagent is actually transferred and is thus the finish point of our process() |
| update_dir | We update our connects only when we settle down by taking our current and original direction to find our new connects +If someone wants it to fucking spin while connected to something go actually knock yourself out |
FALSE to pretty much just not exist in the plumbing world so we can be moved, TRUE to go plumbo mode
direction in wich we act as a demander
We can't just cut all of the parents' overlays, so we'll track them here
Index with "1" = /datum/ductnet/theductpointingnorth etc. "1" being the num2text from NORTH define
shortcut to our parents' reagent holder
directions in wich we act as a supplier
if TRUE connects will spin with the parent object visually and codually, so you can have it work in any direction. FALSE if you want it to be static
TRUE if we wanna add proper pipe outless under our parent object. this is pretty good if i may so so myself
Can we be added to the ductnet?
returns TRUE when they can give the specified amount and reagent. called by process request
We create our luxurious piping overlays/underlays, to indicate where we do what. only called once if use_overlays = TRUE in Initialize()
we stop acting like a plumbing thing and disconnect if we are, so we can safely be moved and stuff
settle wherever we are, and start behaving like a piece of plumbing
Give the direction of a pipe, and it'll return wich direction it originally was when it's object pointed SOUTH
check who can give us what we want, and how many each of them will give us
called from in process(). only calls process_request(), but can be overwritten for children with special behaviour
Toggle our machinery on or off. This is called by a hook from default_unfasten_wrench with anchored as only param, so we dont have to copypaste this on every object that can move
this is where the reagent is actually transferred and is thus the finish point of our process()
We update our connects only when we settle down by taking our current and original direction to find our new connects +If someone wants it to fucking spin while connected to something go actually knock yourself out
Procs | |
| process | We're overriding process and not send_request, because all process does is do the requests, so we might aswell cut out the middle man and save some code from running |
|---|---|
We're overriding process and not send_request, because all process does is do the requests, so we might aswell cut out the middle man and save some code from running
The magical plumbing component used by the chemical filters. The different supply connects behave differently depending on the filters set on the chemical filter
Procs | |
| can_give_in_direction | We check if the direction and reagent are valid to give. Needed for filters since different outputs have different behaviours |
|---|---|
We check if the direction and reagent are valid to give. Needed for filters since different outputs have different behaviours
Vars | |
| default_profit_ratio | Payee gets 100% of the value if no ratio has been set. |
|---|---|
| payees | List of bank accounts this pricetag pays out to. Format is payees[bank_account] = profit_ratio. |
Payee gets 100% of the value if no ratio has been set.
List of bank accounts this pricetag pays out to. Format is payees[bank_account] = profit_ratio.
Vars | |
| cross_squeak_delay_chance | chance we'll be stopped from squeaking by cooldown when something crossing us squeaks |
|---|---|
| sound_extra_range | extra-range for this component's sound |
| sound_falloff_distance | when sounds start falling off for the squeak |
| sound_falloff_exponent | sound exponent for squeak. Defaults to 10 as squeaking is loud and annoying enough. |
chance we'll be stopped from squeaking by cooldown when something crossing us squeaks
extra-range for this component's sound
when sounds start falling off for the squeak
sound exponent for squeak. Defaults to 10 as squeaking is loud and annoying enough.
Vars | |
| max_combined_w_class | Max combined w_class. Applies to STORAGE_LIMIT_COMBINED_W_CLASS |
|---|---|
| max_items | Max items we can hold. Applies to STORAGE_LIMIT_MAX_ITEMS |
| max_volume | Max volume we can hold. Applies to STORAGE_LIMIT_VOLUME. Auto scaled on New() if unset. |
| max_w_class | Max w_class we can hold. Applies to STORAGE_LIMIT_COMBINED_W_CLASS and STORAGE_LIMIT_VOLUME |
| storage_flags | Storage flags, including what kinds of limiters we use for how many items we can hold |
| ui_by_mob | Ui objects by person. mob = list(objects) |
Procs | |
| _process_numerical_display | Generates a list of numbered_display datums for the numerical display system. |
| check_on_found | Check if we should trigger on_found() +If this returns TRUE, it means an on_found() returned TRUE and immediately broke the chain. +In most contexts, this should mean to stop. |
| get_max_volume | Gets our max volume |
| get_ui_boxes | Gets our ui_boxes, making it if it doesn't exist. |
| get_ui_close | Gets our ui_close, making it if it doesn't exist. |
| get_ui_continuous | Gets our ui_continuous, making it if it doesn't exist. |
| get_ui_left | Gets our ui_left, making it if it doesn't exist. |
| on_logout | Proc triggered by signal to ensure logging out clients don't linger. |
| orient2hud_legacy | Orients all objects in legacy mode, and returns the objects to show to the user. |
| orient2hud_volumetric | Orients all objects in .. volumetric mode. Does not support numerical display! |
| ui_hide | Hides our UI from a mob |
| ui_show | Shows our UI to a mob. |
| volumetric_ui | Returns TRUE if we are using volumetric UI instead of box UI |
| vv_edit_var | VV hooked to ensure no lingering screen objects. |
Max combined w_class. Applies to STORAGE_LIMIT_COMBINED_W_CLASS
Max items we can hold. Applies to STORAGE_LIMIT_MAX_ITEMS
Max volume we can hold. Applies to STORAGE_LIMIT_VOLUME. Auto scaled on New() if unset.
Max w_class we can hold. Applies to STORAGE_LIMIT_COMBINED_W_CLASS and STORAGE_LIMIT_VOLUME
Storage flags, including what kinds of limiters we use for how many items we can hold
Ui objects by person. mob = list(objects)
Generates a list of numbered_display datums for the numerical display system.
Check if we should trigger on_found() +If this returns TRUE, it means an on_found() returned TRUE and immediately broke the chain. +In most contexts, this should mean to stop.
Gets our max volume
Gets our ui_boxes, making it if it doesn't exist.
Gets our ui_close, making it if it doesn't exist.
Gets our ui_continuous, making it if it doesn't exist.
Gets our ui_left, making it if it doesn't exist.
Proc triggered by signal to ensure logging out clients don't linger.
Orients all objects in legacy mode, and returns the objects to show to the user.
Orients all objects in .. volumetric mode. Does not support numerical display!
Hides our UI from a mob
Shows our UI to a mob.
Returns TRUE if we are using volumetric UI instead of box UI
VV hooked to ensure no lingering screen objects.
A storage component to be used on card piles, for use as hands/decks/discard piles. Don't use on something that's not a card pile!
Procs | |
| can_be_inserted | The deck that the card pile is using for FAIR PLAY. |
|---|---|
The deck that the card pile is using for FAIR PLAY.
#tackle.dm
+For when you want to throw a person at something and have fun stuff happen
+This component is made for carbon mobs (really, humans), and allows its parent to throw themselves and perform tackles. This is done by enabling throw mode, then clicking on your +intended target with an empty hand. You will then launch toward your target. If you hit a carbon, you'll roll to see how hard you hit them. If you hit a solid non-mob, you'll +roll to see how badly you just messed yourself up. If, along your journey, you hit a table, you'll slam onto it and send up to MAX_TABLE_MESSES (8) /obj/items on the table flying, +and take a bit of extra damage and stun for each thing launched.
+There are 2 """skill rolls""" involved here, which are handled and explained in sack() and rollTackle() (for roll 1, carbons), and splat() (for roll 2, walls and solid objects)
Vars | |
| base_knockdown | Launching a tackle calls Knockdown on you for this long, so this is your cooldown. Once you stand back up, you can tackle again. |
|---|---|
| min_distance | Some gloves, generally ones that increase mobility, may have a minimum distance to fly. Rocket gloves are especially dangerous with this, be sure you'll hit your target or have a clear background if you miss, or else! |
| range | Your max range for how far you can tackle. |
| skill_mod | A flat modifier to your roll against your target, as described in rollTackle(). Slightly misleading, skills aren't relevant here, this is a matter of what type of gloves (or whatever) is granting you the ability to tackle. |
| speed | How fast you sail through the air. Standard tackles are 1 speed, but gloves that throw you faster come at a cost: higher speeds make it more likely you'll be badly injured if you fly into a non-mob obstacle. |
| stamina_cost | How much stamina it takes to launch a tackle |
| tackle | The throwdatum we're currently dealing with, if we need it |
Procs | |
| checkObstacle | Check to see if we hit a table, and if so, make a big mess! |
| checkTackle | See if we can tackle or not. If we can, leap! |
| registerTackle | Store the thrownthing datum for later use |
| rollTackle | rollTackle() |
| sack | sack() |
| splat | splat() |
| splatWindow | A special case for splatting for handling windows |
Launching a tackle calls Knockdown on you for this long, so this is your cooldown. Once you stand back up, you can tackle again.
Some gloves, generally ones that increase mobility, may have a minimum distance to fly. Rocket gloves are especially dangerous with this, be sure you'll hit your target or have a clear background if you miss, or else!
Your max range for how far you can tackle.
A flat modifier to your roll against your target, as described in rollTackle(). Slightly misleading, skills aren't relevant here, this is a matter of what type of gloves (or whatever) is granting you the ability to tackle.
How fast you sail through the air. Standard tackles are 1 speed, but gloves that throw you faster come at a cost: higher speeds make it more likely you'll be badly injured if you fly into a non-mob obstacle.
How much stamina it takes to launch a tackle
The throwdatum we're currently dealing with, if we need it
Check to see if we hit a table, and if so, make a big mess!
See if we can tackle or not. If we can, leap!
Store the thrownthing datum for later use
rollTackle()
+This handles all of the modifiers for the actual carbon-on-carbon tackling, and gets its own proc because of how many there are (with plenty more in mind!)
+The base roll is between (-3, 3), with negative numbers favoring the target, and positive numbers favoring the tackler. The target and the tackler are both assessed for +how easy they are to knock over, with clumsiness and dwarfiness being strong maluses for each, and gigantism giving a bonus for each. These numbers and ideas +are absolutely subject to change.
+In addition, after subtracting the defender's mod and adding the attacker's mod to the roll, the component's base (skill) mod is added as well. Some sources of tackles +are better at taking people down, like the bruiser and rocket gloves, while the dolphin gloves have a malus in exchange for better mobility.
sack()
+sack() is called when you actually smack into something, assuming we're mid-tackle. First it deals with smacking into non-carbons, in two cases:
+If it's a carbon we hit, we'll call rollTackle() which rolls a die and calculates modifiers for both the tackler and target, then gives us a number. Negatives favor the target, while positives favor the tackler. +Check rollTackle() for a more thorough explanation on the modifiers at play.
+Then, we figure out what effect we want, and we get to work! Note that with standard gripper gloves and no modifiers, the range of rolls is (-3, 3). The results are as follows, based on what we rolled:
+Finally, we return a bitflag to [COMSIG_MOVABLE_IMPACT] that forces the hitpush to false so that we don't knock them away.
splat()
+This is where we handle diving into dense atoms, generally with effects ranging from bad to REALLY bad. This works as a percentile roll that is modified in two steps as detailed below. The higher +the roll, the more severe the result.
+Mod 1: Speed +* Base tackle speed is 1, which is what normal gripper gloves use. For other sources with higher speed tackles, like dolphin and ESPECIALLY rocket gloves, we obey Newton's laws and hit things harder. +* For every unit of speed above 1, move the lower bound of the roll up by 15. Unlike Mod 2, this only serves to raise the lower bound, so it can't be directly counteracted by anything you can control.
+Mod 2: Misc +-Flat modifiers, these take whatever you rolled and add/subtract to it, with the end result capped between the minimum from Mod 1 and 100. Note that since we can't roll higher than 100 to start with, +wearing a helmet should be enough to remove any chance of permanently paralyzing yourself and dramatically lessen knocking yourself unconscious, even with rocket gloves. Will expand on maybe +* Wearing a helmet: -6 +* Wearing armor: -6 +* Clumsy: +6
+Effects: Below are the outcomes based off your roll, in order of increasing severity +* 1-63: Knocked down for a few seconds and a bit of brute and stamina damage +* 64-83: Knocked silly, gain some confusion as well as the above +* 84-93: Cranial trauma, get a concussion and more confusion, plus more damage +* 94-98: Knocked unconscious, significant chance to get a random mild brain trauma, as well as a fair amount of damage +* 99-100: Break your spinal cord, get paralyzed, take a bunch of damage too. Very unlucky!
A special case for splatting for handling windows
Vars | |
| able_to_emote | Is the mob able to emote as the item? |
|---|---|
| able_to_speak | Is the mob able to speak as the item? |
| able_to_struggle_out | Is the person able to struggle out? |
| mob_removed | Has the mob already been removed? |
| release_mob | Do we release the mob when the parent item is destroyed? |
| scale_object | Does the object scale with the sprite size of the mob inside of it? |
| show_that_object_is_tf | Show custom description. |
| stored_name | Stored name |
| stored_real_name | Stored real name |
| stuck_on_item | Is the component able to be removed? |
| transfer_to_vore | Transfer to vore belly when eaten |
| transformed_mob | What mob do we currently have stuck in us? |
Is the mob able to emote as the item?
Is the mob able to speak as the item?
Is the person able to struggle out?
Has the mob already been removed?
Do we release the mob when the parent item is destroyed?
Does the object scale with the sprite size of the mob inside of it?
Show custom description.
Stored name
Stored real name
Is the component able to be removed?
Transfer to vore belly when eaten
What mob do we currently have stuck in us?
Observers voting on things through orbiting
Vars | |
| players | Observers |
|---|---|
Observers
Simple movement one
Vars | |
| allow_diagonal | Allow diagonals |
|---|---|
| votes | Movement votes by observer |
Allow diagonals
Movement votes by observer
Two Handed Component
+When applied to an item it will make it two handed
Vars | |
| attacksound | Play sound when unwielded |
|---|---|
| force_multiplier | Are we holding the two handed item properly |
| force_unwielded | The force of the item when weilded |
| force_wielded | The multiplier applied to force when wielded, does not work with force_wielded, and force_unwielded |
| icon_wielded | Does it have to be held in both hands |
| offhand_item | The icon that will be used when wielded |
| require_twohands | Play sound on attack when wielded |
| sharpened_increase | Reference to the offhand created for the item |
| unwieldsound | Play sound when wielded |
| wieldsound | The force of the item when unweilded |
Procs | |
| Initialize | The amount of increase recived from sharpening the item +Two Handed component |
| on_attack | on_attack triggers on attack with the parent item |
| on_attack_self | Triggered on attack self of the item containing the component |
| on_drop | Triggered on drop of item containing the component |
| on_equip | Triggered on equip of the item containing the component |
| on_moved | on_moved Triggers on item moved |
| on_sharpen | on_sharpen Triggers on usage of a sharpening stone on the item |
| on_swap_hands | on_swap_hands Triggers on swapping hands, blocks swap if the other hand is busy |
| on_update_icon | on_update_icon triggers on call to update parent items icon |
| unwield | Unwield the two handed item |
| wield | Wield the two handed item in both hands |
Play sound when unwielded
Are we holding the two handed item properly
The force of the item when weilded
The multiplier applied to force when wielded, does not work with force_wielded, and force_unwielded
Does it have to be held in both hands
The icon that will be used when wielded
Play sound on attack when wielded
Reference to the offhand created for the item
Play sound when wielded
The force of the item when unweilded
The amount of increase recived from sharpening the item +Two Handed component
+vars:
+on_attack triggers on attack with the parent item
Triggered on attack self of the item containing the component
Triggered on drop of item containing the component
Triggered on equip of the item containing the component
on_moved Triggers on item moved
on_sharpen Triggers on usage of a sharpening stone on the item
on_swap_hands Triggers on swapping hands, blocks swap if the other hand is busy
on_update_icon triggers on call to update parent items icon
+Updates the icon using icon_wielded if set
Unwield the two handed item
+vars:
+Wield the two handed item in both hands
+vars:
+Uplinks
+All /obj/item(s) have a hidden_uplink var. By default it's null. Give the item one with 'new(src') (it must be in it's contents). Then add 'uses.' +Use whatever conditionals you want to check that the user has an uplink, and then call interact() on their uplink. +You might also want the uplink menu to open if active. Check if the uplink is 'active' and then interact() with it.
Vars | |
| unlock_text | Instructions on how to access the uplink based on location |
|---|---|
Instructions on how to access the uplink based on location
The virtual reality turned component. +Originally created to overcome issues of mob polymorphing locking the player inside virtual reality +and allow for a more "immersive" virtual reality in a virtual reality experience. +It relies on comically complex order of logic, expect things to break if procs such as mind/transfer_to() are revamped. +In short, a barebone not so hardcoded VR framework. +If you plan to add more devices that make use of this component, remember to isolate their code outta here where possible.
Procs | |
| PostTransfer | Required for the component to be transferable from mob to mob. |
|---|---|
| action_trigger | The following procs simply acts as hooks for quit(), since components do not use callbacks anymore |
| connect | Called when attempting to connect a mob to a virtual reality mob. +This will return FALSE if the mob is without player or dead. TRUE otherwise |
| on_player_transfer | Takes care of moving the component from a mob to another when their mind or ckey is transferred. +The very reason this component even exists (else one would be stuck playing as a monky if monkyified) |
| player_hijacked | Called when someone or something else is somewhat about to replace the mastermind's mob key somehow. +And potentially lock the player in a broken virtual reality plot. Not really something to be proud of. |
| pre_player_transfer | Called to stop the player mind from being transferred should the new mob happen to be one of our masterminds'. +Since the target's mind.current is going to be null'd in the mind transfer process, +This has to be done in a different signal proc than on_player_transfer(), by then the mastermind.current will be null. |
| quit | Takes care of deleting itself, moving the player back to the mastermind's current and queueing the parent for deletion. +It supports nested virtual realities by recursively calling vr_in_a_vr(), which in turns calls quit(), +up to the deepest level, where the ckey will be transferred back to our mastermind's mob instead. +The above operation is skipped when session_paused is TRUE (ergo no player in control of the current mob). +vars: |
| switch_player | Called when the mastermind mind is transferred to another mob. +This is pretty much just going to simply quit the session until machineries support polymorphed occupants etcetera. |
| vr_in_a_vr | Used for recursive virtual realities shenanigeans and should be called by the above proc. |
| you_only_live_once | emag_act() hook. Makes the game deadlier, killing the mastermind mob too should the parent die. |
Required for the component to be transferable from mob to mob.
The following procs simply acts as hooks for quit(), since components do not use callbacks anymore
Called when attempting to connect a mob to a virtual reality mob. +This will return FALSE if the mob is without player or dead. TRUE otherwise
Takes care of moving the component from a mob to another when their mind or ckey is transferred. +The very reason this component even exists (else one would be stuck playing as a monky if monkyified)
Called when someone or something else is somewhat about to replace the mastermind's mob key somehow. +And potentially lock the player in a broken virtual reality plot. Not really something to be proud of.
Called to stop the player mind from being transferred should the new mob happen to be one of our masterminds'. +Since the target's mind.current is going to be null'd in the mind transfer process, +This has to be done in a different signal proc than on_player_transfer(), by then the mastermind.current will be null.
Takes care of deleting itself, moving the player back to the mastermind's current and queueing the parent for deletion. +It supports nested virtual realities by recursively calling vr_in_a_vr(), which in turns calls quit(), +up to the deepest level, where the ckey will be transferred back to our mastermind's mob instead. +The above operation is skipped when session_paused is TRUE (ergo no player in control of the current mob). +vars:
+Called when the mastermind mind is transferred to another mob. +This is pretty much just going to simply quit the session until machineries support polymorphed occupants etcetera.
Used for recursive virtual realities shenanigeans and should be called by the above proc.
emag_act() hook. Makes the game deadlier, killing the mastermind mob too should the parent die.
Vars | |
| alert_able | Whether this program can send alerts while minimized or closed. Used to show a mute button per program in the file manager |
|---|---|
| alert_pending | Whether to highlight our program in the main screen. Intended for alerts, but loosely available for any need to notify of changed conditions. Think Windows task bar highlighting. Available even if alerts are muted. |
| alert_silenced | Whether the user has muted this program's ability to send alerts. |
| available_on_ntnet | Whether the program can be downloaded from NTNet. Set to FALSE to disable. |
| available_on_syndinet | Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to TRUE to enable. |
| category | Category in the NTDownloader. |
| computer | Device that runs this program. |
| extended_desc | Short description of this program's function. |
| filedesc | User-friendly name of this program. |
| filename | File name. FILE NAME MUST BE UNIQUE IF YOU WANT THE PROGRAM TO BE DOWNLOADABLE FROM NTNET! |
| ntnet_status | NTNet status, updated every tick by computer running this program. Don't use this for checks if NTNet works, computers do that. Use this for calculations, etc. |
| program_icon | Font Awesome icon to use as this program's icon in the modular computer main menu. Defaults to a basic program maximize window icon if not overridden. |
| program_icon_state | Program-specific screen icon state |
| program_state | PROGRAM_STATE_KILLED or PROGRAM_STATE_BACKGROUND or PROGRAM_STATE_ACTIVE - specifies whether this program is running. |
| required_access | List of required accesses to run the program. |
| requires_ntnet | Set to 1 for program to require nonstop NTNet connection to run. If NTNet connection is lost program crashes. |
| requires_ntnet_feature | Optional, if above is set to 1 checks for specific function of NTNet (currently NTNET_SOFTWAREDOWNLOAD, NTNET_PEERTOPEER, NTNET_SYSTEMCONTROL and NTNET_COMMUNICATION) |
| tgui_id | Name of the tgui interface |
| transfer_access | List of required access to download or file host the program |
| ui_header | Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /icons/program_icons. Be careful not to use too large images! |
| usage_flags | Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination) or PROGRAM_ALL |
Procs | |
| can_run | Check if the user can run program. Only humans can operate computer. Automatically called in run_program() +ID must be inserted into a card slot to be read. If the program is not currently installed (as is the case when +NT Software Hub is checking available software), a list can be given to be used instead. +Arguments: +user is a ref of the mob using the device. +loud is a bool deciding if this proc should use to_chats +access_to_check is an access level that will be checked against the ID +transfer, if TRUE and access_to_check is null, will tell this proc to use the program's transfer_access in place of access_to_check +access can contain a list of access numbers to check against. If access is not empty, it will be used istead of checking any inserted ID. |
| run_emag | Called by the device when it is emagged. |
| tap | Runs when the device is used to attack an atom in non-combat mode. |
Whether this program can send alerts while minimized or closed. Used to show a mute button per program in the file manager
Whether to highlight our program in the main screen. Intended for alerts, but loosely available for any need to notify of changed conditions. Think Windows task bar highlighting. Available even if alerts are muted.
Whether the user has muted this program's ability to send alerts.
Whether the program can be downloaded from NTNet. Set to FALSE to disable.
Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to TRUE to enable.
Category in the NTDownloader.
Device that runs this program.
Short description of this program's function.
User-friendly name of this program.
File name. FILE NAME MUST BE UNIQUE IF YOU WANT THE PROGRAM TO BE DOWNLOADABLE FROM NTNET!
NTNet status, updated every tick by computer running this program. Don't use this for checks if NTNet works, computers do that. Use this for calculations, etc.
Font Awesome icon to use as this program's icon in the modular computer main menu. Defaults to a basic program maximize window icon if not overridden.
Program-specific screen icon state
PROGRAM_STATE_KILLED or PROGRAM_STATE_BACKGROUND or PROGRAM_STATE_ACTIVE - specifies whether this program is running.
List of required accesses to run the program.
Set to 1 for program to require nonstop NTNet connection to run. If NTNet connection is lost program crashes.
Optional, if above is set to 1 checks for specific function of NTNet (currently NTNET_SOFTWAREDOWNLOAD, NTNET_PEERTOPEER, NTNET_SYSTEMCONTROL and NTNET_COMMUNICATION)
Name of the tgui interface
List of required access to download or file host the program
Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /icons/program_icons. Be careful not to use too large images!
Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination) or PROGRAM_ALL
Check if the user can run program. Only humans can operate computer. Automatically called in run_program() +ID must be inserted into a card slot to be read. If the program is not currently installed (as is the case when +NT Software Hub is checking available software), a list can be given to be used instead. +Arguments: +user is a ref of the mob using the device. +loud is a bool deciding if this proc should use to_chats +access_to_check is an access level that will be checked against the ID +transfer, if TRUE and access_to_check is null, will tell this proc to use the program's transfer_access in place of access_to_check +access can contain a list of access numbers to check against. If access is not empty, it will be used istead of checking any inserted ID.
Called by the device when it is emagged.
+Emagging the device allows certain programs to unlock new functions. However, the program will +need to be downloaded first, and then handle the unlock on their own in their run_emag() proc. +The device will allow an emag to be run multiple times, so the user can re-emag to run the +override again, should they download something new. The run_emag() proc should return TRUE if +the emagging affected anything, and FALSE if no change was made (already emagged, or has no +emag functions).
Runs when the device is used to attack an atom in non-combat mode.
+Simulates using the device to read or scan something. Tap is called by the computer during pre_attack +and sends us all of the related info. If we return TRUE, the computer will stop the attack process +there. What we do with the info is up to us, but we should only return TRUE if we actually perform +an action of some sort. +Arguments: +A is the atom being tapped +user is the person making the attack action +params is anything the pre_attack() proc had in the same-named variable.
Vars | |
| restoring | Variable dictating if we are in the process of restoring the AI in the inserted intellicard |
|---|---|
Variable dictating if we are in the process of restoring the AI in the inserted intellicard
Vars | |
| alert_control | Station alert datum for showing alerts UI |
|---|---|
| has_alert | If there is any station alert |
Station alert datum for showing alerts UI
If there is any station alert
Vars | |
| boss_id | Determines which boss image to use on the UI. |
|---|---|
| game_active | Returns TRUE if the game is being played. |
| heads_up | Shows what text is shown on the app, usually showing the log of combat actions taken by the player. |
| pause_state | This disables buttom actions from having any impact if TRUE. Resets to FALSE when the player is allowed to make an action again. |
Determines which boss image to use on the UI.
Returns TRUE if the game is being played.
Shows what text is shown on the app, usually showing the log of combat actions taken by the player.
This disables buttom actions from having any impact if TRUE. Resets to FALSE when the player is allowed to make an action again.
Vars | |
| DL_progress | reference of a borg if we're downloading a log, or null if not. |
|---|---|
| DL_source | A list to copy a borg's IC log list into |
| loglist | Bool of if this app has already been emagged |
Procs | |
| Destroy | Progress of current download, 0 to 100, -1 for no current download |
| checkID | Gets the ID's name, if one is inserted into the device. This is a seperate proc solely to be overridden by the syndicate version of the app. |
| evaluate_borg | This proc is used to determin if a borg should be shown in the list (based on the borg's scrambledcodes var). Syndicate version overrides this to show only syndicate borgs. |
reference of a borg if we're downloading a log, or null if not.
A list to copy a borg's IC log list into
Bool of if this app has already been emagged
Progress of current download, 0 to 100, -1 for no current download
Gets the ID's name, if one is inserted into the device. This is a seperate proc solely to be overridden by the syndicate version of the app.
This proc is used to determin if a borg should be shown in the list (based on the borg's scrambledcodes var). Syndicate version overrides this to show only syndicate borgs.
Vars | |
| blockade_warning | If you're being raided by pirates, what do you tell the crew? |
|---|---|
| can_approve_requests | Can this console approve purchase requests? |
| cargo_account | The account this console processes and displays. Independent from the account the shuttle processes. |
| cargo_shuttle | The name of the shuttle template being used as the cargo shuttle. 'supply' is default and contains critical code. Don't change this unless you know what you're doing. |
| contraband | Can the tablet see or buy illegal stuff? |
| docking_away | The docking port called when leaving the station. |
| docking_home | The docking port called when returning to the station. |
| requestonly | Are you actually placing orders with it? |
| safety_warning | What do we say when the shuttle moves with living beings on it. |
| self_paid | Is it being bought from a personal account, or is it being done via a budget/cargo? |
| stationcargo | If this console can loan the cargo shuttle. Set to false to disable. |
If you're being raided by pirates, what do you tell the crew?
Can this console approve purchase requests?
The account this console processes and displays. Independent from the account the shuttle processes.
The name of the shuttle template being used as the cargo shuttle. 'supply' is default and contains critical code. Don't change this unless you know what you're doing.
Can the tablet see or buy illegal stuff?
The docking port called when leaving the station.
The docking port called when returning to the station.
Are you actually placing orders with it?
What do we say when the shuttle moves with living beings on it.
Is it being bought from a personal account, or is it being done via a budget/cargo?
If this console can loan the cargo shuttle. Set to false to disable.
Vars | |
| target_dept | Which departments this computer has access to. Defined as access regions. null = all departments |
|---|---|
Which departments this computer has access to. Defined as access regions. null = all departments
Program that lets the curator browse all of the portraits in the database +They are free to print them out as they please.
Vars | |
| arrowstyle | Used by the tgui interface, themed NT or Syndicate. |
|---|---|
| last_icon_state | Used to keep track of the last value program_icon_state was set to, to prevent constant unnecessary update_appearance() calls |
| next_scan | Used to store when the next scan is available. Updated by the scan() proc. |
| objects | List of trackable entities. Updated by the scan() proc. |
| pointercolor | Used by the tgui interface, themed for NT or Syndicate colors. |
| selected | Ref of the last trackable object selected by the user in the tgui window. Updated in the ui_act() proc. |
Procs | |
| find_atom | Finds the atom in the appropriate list that the selected var indicates |
| scan | Runs a scan of all the trackable atoms. |
| track | Updates tracking information of the selected target. |
| trackable | Checks the trackability of the selected target. |
Used by the tgui interface, themed NT or Syndicate.
Used to keep track of the last value program_icon_state was set to, to prevent constant unnecessary update_appearance() calls
Used to store when the next scan is available. Updated by the scan() proc.
List of trackable entities. Updated by the scan() proc.
Used by the tgui interface, themed for NT or Syndicate colors.
Ref of the last trackable object selected by the user in the tgui window. Updated in the ui_act() proc.
Finds the atom in the appropriate list that the selected var indicates
The selected var holds a REF, which is a string. A mob REF may be
+something like "mob_209". In order to find the actual atom, we need
+to search the appropriate list for the REF string. This is dependant
+on the program (Lifeline uses GLOB.human_list, while Fission360 uses
+GLOB.poi_list), but the result will be the same; evaluate the string and
+return an atom reference.
Runs a scan of all the trackable atoms.
+Checks each entry in the GLOB of the specific trackable atoms against +the track() proc, and fill the objects list with lists containing the +atoms' names and REFs. The objects list is handed to the tgui screen +for displaying to, and being selected by, the user. A two second +sleep is used to delay the scan, both for thematical reasons as well +as to limit the load players may place on the server using these +somewhat costly loops.
Updates tracking information of the selected target.
+The track() proc updates the entire set of information about the location +of the target, including whether the Ntos window should use a pinpointer +crosshair over the up/down arrows, or none in favor of a rotating arrow +for far away targets. This information is returned in the form of a list.
Checks the trackability of the selected target.
+If the target is on the computer's Z level, or both are on station Z +levels, and the target isn't untrackable, return TRUE. +Arguments: +*arg1 is the atom being evaluated.
Vars | |
| botcount | Number of simple robots on-station. |
|---|---|
| current_access | Access granted by the used to summon robots. |
| current_user | Used to find the location of the user for the purposes of summoning robots. |
Number of simple robots on-station.
Access granted by the used to summon robots.
Used to find the location of the user for the purposes of summoning robots.
Vars | |
| tablet | A typed reference to the computer, specifying the borg tablet type |
|---|---|
Procs | |
| force_full_update | Forces a full update of the UI, if currently open. |
A typed reference to the computer, specifying the borg tablet type
Forces a full update of the UI, if currently open.
+Forces an update that includes refreshing ui_static_data. Called by +law changes and borg log additions.
Vars | |
| cam_plane_masters | All the plane masters that need to be applied. |
|---|---|
| last_camera_turf | The turf where the camera was last updated. |
All the plane masters that need to be applied.
The turf where the camera was last updated.
Vars | |
| radio_connection | Radio connection datum used by signalers. |
|---|---|
| signal_code | What is the saved signal code? |
| signal_frequency | What is the saved signal frequency? |
Radio connection datum used by signalers.
What is the saved signal code?
What is the saved signal frequency?
Procs | |
| clear_signals | Removes the signal listener for Supermatter delaminations from the selected supermatter. |
|---|---|
| send_alert | Sends an SM delam alert to the computer. |
| send_start_alert | Sends an SM delam start alert to the computer. |
| set_signals | Sets up the signal listener for Supermatter delaminations. |
Removes the signal listener for Supermatter delaminations from the selected supermatter.
+Pretty much does what it says.
Sends an SM delam alert to the computer.
+Triggered by a signal from the selected supermatter, this proc sends a notification +to the computer if the program is either closed or minimized. We do not send these +notifications to the comptuer if we're the active program, because engineers fixing +the supermatter probably don't need constant beeping to distract them.
Sends an SM delam start alert to the computer.
+Triggered by a signal from the selected supermatter at the start of a delamination, +this proc sends a notification to the computer if this program is the active one. +We do this so that people carrying a tablet with NT CIMS open but with the NTOS window +closed will still get one audio alert. This is not sent to computers with the program +minimized or closed to avoid double-notifications.
Sets up the signal listener for Supermatter delaminations.
+Unregisters any old listners for SM delams, and then registers one for the SM refered
+to in the active variable. This proc is also used with no active SM to simply clear
+the signal and exit.
Vars | |
| abstract_type | Do not instantiate if type matches this |
|---|---|
| config_entry_value | The configured value for this entry. This shouldn't be initialized in code, instead set default |
| default | Read-only default value for this config entry, used for resetting value to defaults when necessary. This is what config_entry_value is initially set to |
| default_protection | Stores the original protection configuration, used for set_default() |
| deprecated_by | The config name of a configuration type that depricates this, if it exists |
| dupes_allowed | Controls if error is thrown when duplicate configuration values for this entry type are encountered |
| modified | Set to TRUE if the default has been overridden by a config entry |
| name | Read-only, this is determined by the last portion of the derived entry type |
| postload_required | Requires running OnPostload() |
| protection | The /datum/config_entry type that supercedes this one |
| resident_file | The file which this was loaded from, if any |
| vv_VAS | Force validate and set on VV. VAS proccall guard will run regardless. |
Procs | |
| set_default | Returns the value of the configuration datum to its default, used for resetting a config value. Note this also sets the protection back to default. |
Do not instantiate if type matches this
The configured value for this entry. This shouldn't be initialized in code, instead set default
Read-only default value for this config entry, used for resetting value to defaults when necessary. This is what config_entry_value is initially set to
Stores the original protection configuration, used for set_default()
The config name of a configuration type that depricates this, if it exists
Controls if error is thrown when duplicate configuration values for this entry type are encountered
Set to TRUE if the default has been overridden by a config entry
Read-only, this is determined by the last portion of the derived entry type
Requires running OnPostload()
The /datum/config_entry type that supercedes this one
The file which this was loaded from, if any
Force validate and set on VV. VAS proccall guard will run regardless.
Returns the value of the configuration datum to its default, used for resetting a config value. Note this also sets the protection back to default.
Vars | |
| lowercase_key | whether the key names will be lowercased on ValidateAndSet or not. |
|---|---|
whether the key names will be lowercased on ValidateAndSet or not.
List config entry, used for configuring a list of strings
Vars | |
| lowercase | whether the string elements will be lowercased on ValidateAndSet or not. |
|---|---|
whether the string elements will be lowercased on ValidateAndSet or not.
Vars | |
| lowercase | whether the string will be lowercased on ValidateAndSet or not. |
|---|---|
whether the string will be lowercased on ValidateAndSet or not.
Procs | |
| GetEntryDatum | Your typical GET but returns a config. |
|---|---|
Your typical GET but returns a config.
Vars | |
| GPS_list | Global GPS_list. All GPS components get saved in here for easy reference. |
|---|---|
| acid_overlay | ACID |
| adamantine_recipes | Others |
| admin_state | tgui state: admin_state |
| always_state | tgui state: always_state |
| announcer_keys | Global list of all of our announcer keys. |
| areas_by_type | An association from typepath to area instance. Only includes areas with unique set. |
| conscious_state | tgui state: conscious_state |
| contained_state | tgui state: contained_state |
| current_living_antags | All alive antags with clients. |
| current_observers_list | All observers with clients that joined as observers. |
| deep_inventory_state | tgui state: deep_inventory_state |
| default_state | tgui state: default_state |
| dummySave | Save file used in icon2base64. Used for converting icons to base64. |
| em_block_color | A globaly cached version of EM_BLOCK_COLOR for quick access. |
| em_mask_matrix | A globaly cached version of EM_MASK_MATRIX for quick access. |
| emissive_color | A globaly cached version of EMISSIVE_COLOR for quick access. |
| families_override_theme | Forces the Families theme to be the one in this variable via variable editing. Used for debugging. |
| fun_state | tgui state: fun_state |
| gateway_destinations | List of possible gateway destinations. |
| glide_size_multiplier | Compensating for time dialation |
| hands_state | tgui state: hands_state |
| human_adjacent_state | tgui state: human_adjacent_state |
| inventory_state | tgui state: inventory_state |
| language_menu_state | tgui state: language_menu_state |
| living_heart_cache | Heretics -- |
| mafia_bad_signup | list of ghosts who want to play mafia that have since disconnected. They are kept in the lobby, but not counted for starting a game. |
| mafia_game | the current global mafia game running. |
| mafia_signup | list of ghosts who want to play mafia, every time someone enters the list it checks to see if enough are in |
| marker_beacon_colors | Marker Beacons |
| megafauna_spawn_list | Global list of megafauna spawns on cave gen |
| mod_themes | Global list of all /datum/mod_theme |
| new_player_state | tgui state: new_player_state |
| not_incapacitated_state | tgui state: not_incapacitated_state |
| not_incapacitated_turf_state | tgui state: not_incapacitated_turf_state |
| notcontained_state | tgui state: notcontained_state |
| observer_state | tgui state: observer_state |
| physical_obscured_state | tgui state: physical_obscured_state |
| physical_state | tgui state: physical_state |
| picture_log_directory | Picture logging |
| random_zlevels_generated | Away missions, VR, random z levels stuff. |
| reality_smash_track | We want reality_smash_tracker to exist only once and be accesable from anywhere. |
| req_console_assistance | Requests Console |
| screentip_context_icons | Stores the cursor hint icons for screentip context. |
| self_state | tgui state: self_state |
| subsystem_log | cit logging |
| teleportlocs | A list of teleport locations |
| the_gateway | Station home gateway |
| trait_name_map | value -> trait name, generated on use from trait_by_type global |
| typing_indicator_overlays | state = overlay/image/object/type/whatever add_overlay will accept |
| ui_vorepanel_state | tgui state: vorepanel_state |
| world_suspicious_login_log | Log associated with [/proc/log_suspicious_login()] - Intended to hold all logins that failed due to suspicious circumstances such as ban detection, CID randomisation etc. |
| z_state | tgui state: z_state |
Global GPS_list. All GPS components get saved in here for easy reference.
ACID
Others
tgui state: admin_state
+Checks that the user is an admin, end-of-story.
tgui state: always_state
+Always grants the user UI_INTERACTIVE. Period.
Global list of all of our announcer keys.
An association from typepath to area instance. Only includes areas with unique set.
tgui state: conscious_state
+Only checks if the user is conscious.
tgui state: contained_state
+Checks that the user is inside the src_object.
All alive antags with clients.
All observers with clients that joined as observers.
tgui state: deep_inventory_state
+Checks that the src_object is in the user's deep +(backpack, box, toolbox, etc) inventory.
tgui state: default_state
+Checks a number of things -- mostly physical distance for humans +and view for robots.
Save file used in icon2base64. Used for converting icons to base64.
A globaly cached version of EM_BLOCK_COLOR for quick access.
A globaly cached version of EM_MASK_MATRIX for quick access.
A globaly cached version of EMISSIVE_COLOR for quick access.
Forces the Families theme to be the one in this variable via variable editing. Used for debugging.
tgui state: fun_state
+Checks that the user has the fun privilige.
List of possible gateway destinations.
Compensating for time dialation
tgui state: hands_state
+Checks that the src_object is in the user's hands.
tgui state: human_adjacent_state
+In addition to default checks, only allows interaction for a +human adjacent user.
tgui state: inventory_state
+Checks that the src_object is in the user's top-level +(hand, ear, pocket, belt, etc) inventory.
tgui state: language_menu_state
Heretics --
list of ghosts who want to play mafia that have since disconnected. They are kept in the lobby, but not counted for starting a game.
the current global mafia game running.
list of ghosts who want to play mafia, every time someone enters the list it checks to see if enough are in
Marker Beacons
Global list of megafauna spawns on cave gen
Global list of all /datum/mod_theme
tgui state: new_player_state
+Checks that the user is a new_player, or if user is an admin
tgui state: not_incapacitated_state
+Checks that the user isn't incapacitated
tgui state: not_incapacitated_turf_state
+Checks that the user isn't incapacitated and that their loc is a turf
tgui state: notcontained_state
+Checks that the user is not inside src_object, and then makes the +default checks.
tgui state: observer_state
+Checks that the user is an observer/ghost.
tgui state: physical_obscured_state
+Short-circuits the default state to only check physical distance, being in view doesn't matter
tgui state: physical_state
+Short-circuits the default state to only check physical distance.
Picture logging
Away missions, VR, random z levels stuff.
We want reality_smash_tracker to exist only once and be accesable from anywhere.
Requests Console
+Originally written by errorage, updated by: Carn, needs more work though. I just added some security fixes
Stores the cursor hint icons for screentip context.
tgui state: self_state
+Only checks that the user and src_object are the same.
cit logging
A list of teleport locations
+Adding a wizard area teleport list because motherfucking lag -- Urist +I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game
Station home gateway
value -> trait name, generated on use from trait_by_type global
state = overlay/image/object/type/whatever add_overlay will accept
tgui state: vorepanel_state
+Only checks that the user and src_object are the same.
Log associated with [/proc/log_suspicious_login()] - Intended to hold all logins that failed due to suspicious circumstances such as ban detection, CID randomisation etc.
tgui state: z_state
+Only checks that the Z-level of the user and src_object are the same.
Vars | |
| current_runlevel | for scheduling different subsystems for different stages of the round |
|---|---|
| current_ticklimit | current tick limit, assigned before running a subsystem. +used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits |
| iteration | How many times have we ran |
| last_run | world.time of last fire, for tracking lag outside of the mc |
| last_type_processed | The type of the last subsystem to be fire()'d. |
| make_runtime | makes the mc main loop runtime |
| map_loading | Are we loading in a new map? |
| processing | Are we processing (higher values increase the processing delay by n ticks) |
| queue_head | Start of queue linked list |
| queue_tail | End of queue linked list (used for appending to the list) |
| skip_ticks | Only run ticker subsystems for the next n ticks. |
| sleep_delta | How long is the MC sleeping between runs, read only (set by Loop() based off of anti-tick-contention heuristics) |
| stack_end_detector | Stack end detector to detect stack overflows that kill the mc's main loop |
| subsystems | List of subsystems to process(). |
Procs | |
| laggy_byond_map_update_incoming | Warns us that the end of tick byond map_update will be laggier then normal, so that we can just skip running subsystems this tick. |
for scheduling different subsystems for different stages of the round
current tick limit, assigned before running a subsystem. +used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits
How many times have we ran
world.time of last fire, for tracking lag outside of the mc
The type of the last subsystem to be fire()'d.
makes the mc main loop runtime
Are we loading in a new map?
Are we processing (higher values increase the processing delay by n ticks)
Start of queue linked list
End of queue linked list (used for appending to the list)
Only run ticker subsystems for the next n ticks.
How long is the MC sleeping between runs, read only (set by Loop() based off of anti-tick-contention heuristics)
Stack end detector to detect stack overflows that kill the mc's main loop
List of subsystems to process().
Warns us that the end of tick byond map_update will be laggier then normal, so that we can just skip running subsystems this tick.
Defines a subsystem to be managed by the Master Controller
+Simply define a child of this subsystem, using the [SUBSYSTEM_DEF] macro, and the MC will handle registration. +Changing the name is required
Vars | |
| can_fire | Set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later +use the SS_NO_FIRE flag instead for systems that never fire to keep it from even being added to list that is checked every tick |
|---|---|
| cost | Running average of the amount of milliseconds it takes the subsystem to complete a run (including all resumes but not the time spent paused) |
| failure_strikes | How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out! |
| flags | Subsystem Flags to control binary behavior. Flags must be set at compile time or before preinit finishes to take full effect. (You can also restart the mc to force them to process again) |
| init_order | Order of initialization. Higher numbers are initialized first, lower numbers later. Use or create defines such as [INIT_ORDER_DEFAULT] so we can see the order in one file. |
| initialized | This var is set to TRUE after the subsystem has been initialized. |
| last_fire | Last world.time the subsystem completed a run (as in wasn't paused by [MC_TICK_CHECK]) |
| name | Name of the subsystem - you must change this |
| next_fire | Scheduled world.time for next fire() |
| paused_tick_usage | Tracks how much of a tick the subsystem has consumed in the current run |
| paused_ticks | Tracks how many fires the subsystem has consecutively paused on in the current run |
| postponed_fires | How many fires have we been requested to postpone |
| priority | Priority Weight: When mutiple subsystems need to run in the same tick, higher priority subsystems will be given a higher share of the tick before MC_TICK_CHECK triggers a sleep, higher priority subsystems also run before lower priority subsystems |
| queue_next | Next subsystem in the queue of subsystems to run this tick |
| queue_prev | Previous subsystem in the queue of subsystems to run this tick |
| queued_priority | Priority at the time the subsystem entered the queue. Needed to avoid changes in priority (by admins and the like) from breaking things. |
| queued_time | Time the subsystem entered the queue, (for timing and priority reasons) |
| runlevels | Bitmap of what game states can this subsystem fire at. See [RUNLEVELS_DEFAULT] for more details. |
| state | Tracks the current execution state of the subsystem. Used to handle subsystems that sleep in fire so the mc doesn't run them again while they are sleeping |
| tick_overrun | Running average of the amount of tick usage (in percents of a game tick) the subsystem has spent past its allocated time without pausing |
| tick_usage | Running average of the amount of tick usage in percents of a tick it takes the subsystem to complete a run |
| ticks | Tracks how many fires the subsystem takes to complete a run on average. |
| times_fired | Tracks the amount of completed runs for the subsystem |
| wait | Time to wait (in deciseconds) between each call to fire(). Must be a positive integer. |
Procs | |
| OnConfigLoad | Called after the config has been loaded or reloaded. |
| PreInit | datum/controller/subsystem/New() |
| postpone | Causes the next "cycle" fires to be missed. Effect is accumulative but can reset by calling update_nextfire(reset_time = TRUE) |
| update_nextfire | |
Set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later +use the SS_NO_FIRE flag instead for systems that never fire to keep it from even being added to list that is checked every tick
Running average of the amount of milliseconds it takes the subsystem to complete a run (including all resumes but not the time spent paused)
How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out!
Subsystem Flags to control binary behavior. Flags must be set at compile time or before preinit finishes to take full effect. (You can also restart the mc to force them to process again)
Order of initialization. Higher numbers are initialized first, lower numbers later. Use or create defines such as [INIT_ORDER_DEFAULT] so we can see the order in one file.
This var is set to TRUE after the subsystem has been initialized.
Last world.time the subsystem completed a run (as in wasn't paused by [MC_TICK_CHECK])
Name of the subsystem - you must change this
Scheduled world.time for next fire()
Tracks how much of a tick the subsystem has consumed in the current run
Tracks how many fires the subsystem has consecutively paused on in the current run
How many fires have we been requested to postpone
Priority Weight: When mutiple subsystems need to run in the same tick, higher priority subsystems will be given a higher share of the tick before MC_TICK_CHECK triggers a sleep, higher priority subsystems also run before lower priority subsystems
Next subsystem in the queue of subsystems to run this tick
Previous subsystem in the queue of subsystems to run this tick
Priority at the time the subsystem entered the queue. Needed to avoid changes in priority (by admins and the like) from breaking things.
Time the subsystem entered the queue, (for timing and priority reasons)
Bitmap of what game states can this subsystem fire at. See [RUNLEVELS_DEFAULT] for more details.
Tracks the current execution state of the subsystem. Used to handle subsystems that sleep in fire so the mc doesn't run them again while they are sleeping
Running average of the amount of tick usage (in percents of a game tick) the subsystem has spent past its allocated time without pausing
Running average of the amount of tick usage in percents of a tick it takes the subsystem to complete a run
Tracks how many fires the subsystem takes to complete a run on average.
Tracks the amount of completed runs for the subsystem
Time to wait (in deciseconds) between each call to fire(). Must be a positive integer.
Called after the config has been loaded or reloaded.
datum/controller/subsystem/New()
Causes the next "cycle" fires to be missed. Effect is accumulative but can reset by calling update_nextfire(reset_time = TRUE)
Vars | |
| achievements | List of achievements |
|---|---|
| awards | List of all awards |
| scores | List of scores |
List of achievements
List of all awards
List of scores
Vars | |
| queued_deletions | Atoms that will be deleted once the subsystem is initialized |
|---|---|
Procs | |
| InitAtom | Init this specific atom |
| prepare_deletion | Prepares an atom to be deleted once the atoms SS is initialized. |
Atoms that will be deleted once the subsystem is initialized
Init this specific atom
Prepares an atom to be deleted once the atoms SS is initialized.
Procs | |
| can_make_emergency_meeting | Check if a mob can call an emergency meeting |
|---|---|
| emergency_meeting | Call an emergency meeting |
Check if a mob can call an emergency meeting
+Should only really happen during april fools. +Checks to see that it's been at least 5 minutes since the last emergency meeting call. +Arguments:
+Call an emergency meeting
+Communications subsystem wrapper for the call_emergency_meeting world proc. +Checks to make sure the proc can be called, and handles +relevant logging and timing. See that proc definition for more detail. +Arguments:
+Vars | |
| bounty_modifier | The modifier multiplied to the value of bounties paid out. |
|---|---|
| export_total | Contains the message to send to newscasters about earnings, updated on price_update() +Total value of exported materials. |
| import_total | Total value of imported goods. |
| mail_waiting | Number of mail items generated. |
| pack_price_modifier | The modifier multiplied to the value of cargo pack prices. |
The modifier multiplied to the value of bounties paid out.
Contains the message to send to newscasters about earnings, updated on price_update() +Total value of exported materials.
Total value of imported goods.
Number of mail items generated.
The modifier multiplied to the value of cargo pack prices.
Vars | |
| all_macrosets | KEEP THIS UP TO DATE! |
|---|---|
| hotkey_mode_macros | Macro set for hotkeys |
| input_mode_macros | Macro set for classic. |
| macroset_classic_hotkey | Classic mode map focused macro set. Manually set because it needs to be clientside and go to macroset_classic_input. |
| macroset_classic_input | Classic mode input focused macro set. Manually set because we can't define ANY or ANY+UP for classic. |
| macroset_hotkey | New hotkey mode macro set. All input goes into map, game keeps incessently setting your focus to map, we can use ANY all we want here; we don't care about the input bar, the user has to force the input bar every time they want to type. |
Procs | |
| setup_macrosets | Sets up the key list for classic mode for when badmins screw up vv's. |
KEEP THIS UP TO DATE!
Macro set for hotkeys
Macro set for classic.
Classic mode map focused macro set. Manually set because it needs to be clientside and go to macroset_classic_input.
Classic mode input focused macro set. Manually set because we can't define ANY or ANY+UP for classic.
New hotkey mode macro set. All input goes into map, game keeps incessently setting your focus to map, we can use ANY all we want here; we don't care about the input bar, the user has to force the input bar every time they want to type.
Sets up the key list for classic mode for when badmins screw up vv's.
Procs | |
| DivideOccupations | |
|---|---|
Procs | |
| init_channels | Creates audio channels for jukeboxes to use, run first to prevent init failing to fill this |
|---|---|
Creates audio channels for jukeboxes to use, run first to prevent init failing to fill this
Vars | |
| biomes | All possible biomes in assoc list as type || instance |
|---|---|
| obfuscation_next_id | next id for separating obfuscated ids. |
| obfuscation_secret | "secret" key |
| random_generated_ids_by_original | Lookup list for random generated IDs. |
| z_to_station_z_index | Lookup for zlevel to station z. text = num. |
Procs | |
| get_obfuscated_id | Generates an obfuscated but constant id for an original id for cases where you don't want players codediving for an id. +WARNING: MAKE SURE PLAYERS ARE NOT ABLE TO ACCESS THIS. To save performance, it's just secret + an incrementing number. Very guessable if you know what the secret is. |
| get_station_center | Prefer not to use this one too often |
| get_turf_above | Attempt to get the turf above the provided one according to Z traits |
| get_turf_below | Attempt to get the turf below the provided one according to Z traits |
| initialize_biomes | Initialize all biomes, assoc as type || instance |
| level_has_all_traits | Check if levels[z] has all of the specified traits |
| level_has_any_trait | Check if levels[z] has any of the specified traits |
| level_trait | Look up levels[z].traits[trait] |
| levels_by_any_trait | Get a list of all z which have any of the specified traits |
| levels_by_trait | Get a list of all z which have the specified trait |
All possible biomes in assoc list as type || instance
next id for separating obfuscated ids.
"secret" key
Lookup list for random generated IDs.
Lookup for zlevel to station z. text = num.
Generates an obfuscated but constant id for an original id for cases where you don't want players codediving for an id. +WARNING: MAKE SURE PLAYERS ARE NOT ABLE TO ACCESS THIS. To save performance, it's just secret + an incrementing number. Very guessable if you know what the secret is.
Prefer not to use this one too often
Attempt to get the turf above the provided one according to Z traits
Attempt to get the turf below the provided one according to Z traits
Initialize all biomes, assoc as type || instance
Check if levels[z] has all of the specified traits
Check if levels[z] has any of the specified traits
Look up levels[z].traits[trait]
Get a list of all z which have any of the specified traits
Get a list of all z which have the specified trait
Vars | |
| base_stack_recipes | List of stackcrafting recipes for materials using base recipes |
|---|---|
| material_combos | A cache of all material combinations that have been used |
| materials | Dictionary of material.type || material ref |
| materials_by_category | Dictionary of category || list of material refs |
| materialtypes_by_category | Dictionary of category || list of material types, mostly used by rnd machines like autolathes. |
| rigid_stack_recipes | List of stackcrafting recipes for materials using rigid recipes |
Procs | |
| FindOrCreateMaterialCombo | Returns a list to be used as an object's custom_materials. Lists will be cached and re-used based on the parameters. |
| InitializeMaterials | Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info) |
List of stackcrafting recipes for materials using base recipes
A cache of all material combinations that have been used
Dictionary of material.type || material ref
Dictionary of category || list of material refs
Dictionary of category || list of material types, mostly used by rnd machines like autolathes.
List of stackcrafting recipes for materials using rigid recipes
Returns a list to be used as an object's custom_materials. Lists will be cached and re-used based on the parameters.
Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info)
Vars | |
| init_order | this hot steaming pile of garbage makes sure theres a minimum of tendrils scattered around |
|---|---|
this hot steaming pile of garbage makes sure theres a minimum of tendrils scattered around
Vars | |
| invoke_start | Invoke start time |
|---|---|
| invoking | catches sleeping |
Invoke start time
catches sleeping
Procs | |
| get_parallax_datum | Gets parallax for zlevel. |
|---|---|
| get_parallax_motion | Gets parallax motion for a zlevel |
| get_parallax_type | Gets parallax type for zlevel. |
| get_parallax_vis_contents | Gets parallax added vis contents for zlevel |
| reset_clients_on_z | resets all parallax for clients on a z |
| update_clients_on_z | updates all parallax for clients on a z |
| update_z_motion | updates motion of all clients on z |
Gets parallax for zlevel.
Gets parallax motion for a zlevel
+Returns null or list(speed, dir deg clockwise from north, windup, turnrate) +THE RETURNED LIST MUST BE A 4-TUPLE, OR PARALLAX WILL CRASH. +DO NOT SCREW WITH THIS UNLESS YOU KNOW WHAT YOU ARE DOING.
+This will override area motion
Gets parallax type for zlevel.
Gets parallax added vis contents for zlevel
resets all parallax for clients on a z
updates all parallax for clients on a z
updates motion of all clients on z
Persistence for cleanable debris.
+Stores recently played gamemodes, maps, etc.
+Secret satchel persistence - allows storing of items in underfloor satchels that's loaded later.
+Stores trophies in curator display cases
Vars | |
| loaded_debris | tracks if we already loaded debris. Unlike everything else, this can actually be a major problem if some badmin procs it twice. |
|---|---|
| station_persistence_save_disabled | Marks if persistence save should be disabled |
| station_was_destroyed | Marks if the station got horribly destroyed |
Procs | |
| get_map_persistence_path | Gets the persistence path of the current map. |
tracks if we already loaded debris. Unlike everything else, this can actually be a major problem if some badmin procs it twice.
Marks if persistence save should be disabled
Marks if the station got horribly destroyed
Gets the persistence path of the current map.
Procs | |
| GetIdFromArguments | Generates an id for bespoke elements when given the argument list +Generating the id here is a bit complex because we need to support named arguments +Named arguments can appear in any order and we need them to appear after ordered arguments +We assume that no one will pass in a named argument with a value of null |
|---|---|
Generates an id for bespoke elements when given the argument list +Generating the id here is a bit complex because we need to support named arguments +Named arguments can appear in any order and we need them to appear after ordered arguments +We assume that no one will pass in a named argument with a value of null
Vars | |
| current_instrument_channels | Current number of channels allocated for instruments |
|---|---|
| instrument_data | List of all instrument data, associative id = datum |
| max_instrument_channels | Maximum instrument channels total instruments are allowed to use. This is so you don't have instruments deadlocking all sound channels. |
| musician_hearcheck_mindelay | Deciseconds between hearchecks. Too high and instruments seem to lag when people are moving around in terms of who can hear it. Too low and the server lags from this. |
| musician_maxlinechars | Max characters per line in songs |
| musician_maxlines | Max lines in songs |
| songs | List of all song datums. |
| synthesizer_instrument_ids | Single cached list for synthesizer instrument ids, so you don't have to have a new list with every synthesizer. |
Current number of channels allocated for instruments
List of all instrument data, associative id = datum
Maximum instrument channels total instruments are allowed to use. This is so you don't have instruments deadlocking all sound channels.
Deciseconds between hearchecks. Too high and instruments seem to lag when people are moving around in terms of who can hear it. Too low and the server lags from this.
Max characters per line in songs
Max lines in songs
List of all song datums.
Single cached list for synthesizer instrument ids, so you don't have to have a new list with every synthesizer.
Vars | |
| announcer | Currently active announcer. Starts as a type but gets initialized after traits are selected |
|---|---|
| selectable_traits_by_types | Assoc list of trait type || assoc list of traits with weighted value. Used for picking traits from a specific category. |
| station_traits | A list of currently active station traits |
Procs | |
| SetupTraits | Rolls for the amount of traits and adds them to the traits list |
| pick_traits | Picks traits of a specific category (e.g. bad or good) and a specified amount, then initializes them and adds them to the list of traits. |
| setup_trait | Creates a given trait of a specific type, while also removing any blacklisted ones from the future pool. |
Currently active announcer. Starts as a type but gets initialized after traits are selected
Assoc list of trait type || assoc list of traits with weighted value. Used for picking traits from a specific category.
A list of currently active station traits
Rolls for the amount of traits and adds them to the traits list
Picks traits of a specific category (e.g. bad or good) and a specified amount, then initializes them and adds them to the list of traits.
Creates a given trait of a specific type, while also removing any blacklisted ones from the future pool.
Vars | |
| anomaly_hard_limit_by_type | The hard limits of cores created for each anomaly type. For faster code lookup without switch statements. |
|---|---|
| created_anomaly_types | The global list of raw anomaly types that have been refined, for hard limits. |
The hard limits of cores created for each anomaly type. For faster code lookup without switch statements.
The global list of raw anomaly types that have been refined, for hard limits.
Vars | |
| bucket_count | How many messages are in the buckets |
|---|---|
| bucket_list | List of buckets, each bucket holds every message that has to be killed that byond tick |
| bucket_resolution | world.tick_lag the bucket was designed for |
| head_offset | world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets |
| practical_offset | Index of the first non-empty bucket |
| second_queue | Queue used for storing messages that are scheduled for deletion too far in the future for the buckets |
How many messages are in the buckets
List of buckets, each bucket holds every message that has to be killed that byond tick
world.tick_lag the bucket was designed for
world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets
Index of the first non-empty bucket
Queue used for storing messages that are scheduled for deletion too far in the future for the buckets
Procs | |
| set_level | Sets a new security level as our current level |
|---|---|
Sets a new security level as our current level
+This is how everything should change the security level.
+Arguments:
+Procs | |
| canEvac | Check if we can call the evac shuttle. +Returns TRUE if we can. Otherwise, returns a string detailing the problem. |
|---|---|
Check if we can call the evac shuttle. +Returns TRUE if we can. Otherwise, returns a string detailing the problem.
Vars | |
| channel_list | List of all channels as numbers |
|---|---|
| channel_random_low | lower iteration position - Incremented and looped to get "random" sound channels for normal sounds. The channel at this index is returned when asking for a random channel. |
| channel_reserve_high | higher reserve position - decremented and incremented to reserve sound channels, anything above this is reserved. The channel at this index is the highest unreserved channel. |
| random_channels_min | Amount of channels to reserve for random usage rather than reservations being allowed to reserve all channels. Also a nice safeguard for when someone screws up. |
| reserved_channels | Associative list of all reserved channels associated to their position. "[channel_number]" = index as number |
| using_channels | Assoc list, "[channel]" = either the datum using it or TRUE for an unsafe-reserved (datumless reservation) channel |
| using_channels_by_datum | Assoc list datum = list(channel1, channel2, ...) for what channels something reserved. |
Procs | |
| available_channels_left | How many channels we have left. |
| free_channel | Frees a channel and updates the datastructure. Private proc. |
| free_datum_channels | Frees all the channels a datum is using. |
| free_datumless_channels | Frees all datumless channels |
| free_sound_channel | Removes a channel from using list. |
| random_available_channel | Random available channel, returns number |
| random_available_channel_text | Random available channel, returns text. |
| reserve_channel | Reserves a channel and updates the datastructure. Private proc. |
| reserve_sound_channel | Reserves a channel for a datum. Automatic cleanup only when the datum is deleted. Returns an integer for channel. |
| reserve_sound_channel_datumless | NO AUTOMATIC CLEANUP - If you use this, you better manually free it later! Returns an integer for channel. |
List of all channels as numbers
lower iteration position - Incremented and looped to get "random" sound channels for normal sounds. The channel at this index is returned when asking for a random channel.
higher reserve position - decremented and incremented to reserve sound channels, anything above this is reserved. The channel at this index is the highest unreserved channel.
Amount of channels to reserve for random usage rather than reservations being allowed to reserve all channels. Also a nice safeguard for when someone screws up.
Associative list of all reserved channels associated to their position. "[channel_number]" = index as number
Assoc list, "[channel]" = either the datum using it or TRUE for an unsafe-reserved (datumless reservation) channel
Assoc list datum = list(channel1, channel2, ...) for what channels something reserved.
How many channels we have left.
Frees a channel and updates the datastructure. Private proc.
Frees all the channels a datum is using.
Frees all datumless channels
Removes a channel from using list.
Random available channel, returns number
Random available channel, returns text.
Reserves a channel and updates the datastructure. Private proc.
Reserves a channel for a datum. Automatic cleanup only when the datum is deleted. Returns an integer for channel.
NO AUTOMATIC CLEANUP - If you use this, you better manually free it later! Returns an integer for channel.
Vars | |
| base_rotation | multiplier against base_rotation |
|---|---|
Procs | |
| Initialize | base rotation in degrees per fire |
multiplier against base_rotation
base rotation in degrees per fire
Vars | |
| basehtml | The HTML base used for all UIs. |
|---|---|
| current_run | A list of UIs scheduled to process |
| open_uis | A list of open UIs |
| open_uis_by_src | A list of open UIs, grouped by src_object. |
Procs | |
| close_all_uis | public |
| close_uis | public |
| close_user_uis | public |
| force_close_all_windows | public |
| force_close_window | public |
| get_open_ui | public |
| on_close | private |
| on_logout | private |
| on_open | private |
| on_transfer | private |
| request_pooled_window | public |
| try_update_ui | public |
| update_uis | public |
| update_user_uis | public |
The HTML base used for all UIs.
A list of UIs scheduled to process
A list of open UIs
A list of open UIs, grouped by src_object.
public
+Close all UIs regardless of their attachment to src_object.
+return int The number of UIs closed.
public
+Close all UIs attached to src_object.
+required src_object datum The object/datum which owns the UIs.
+return int The number of UIs closed.
public
+Close all UIs belonging to a user.
+required user mob The mob who opened/is using the UI. +optional src_object datum If provided, only close UIs belonging this src_object.
+return int The number of UIs closed.
public
+Force closes all tgui windows.
+required user mob
public
+Force closes the tgui window by window_id.
+required user mob +required window_id string
public
+Get a open UI given a user and src_object.
+required user mob The mob who opened/is using the UI. +required src_object datum The object/datum which owns the UI.
+return datum/tgui The found UI.
private
+Remove a UI from the list of open UIs.
+required ui datum/tgui The UI to be removed.
+return bool If the UI was removed or not.
private
+Handle client logout, by closing all their UIs.
+required user mob The mob which logged out.
+return int The number of UIs closed.
private
+Add a UI to the list of open UIs.
+required ui datum/tgui The UI to be added.
private
+Handle clients switching mobs, by transferring their UIs.
+required user source The client's original mob. +required user target The client's new mob.
+return bool If the UIs were transferred.
public
+Requests a usable tgui window from the pool. +Returns null if pool was exhausted.
+required user mob +return datum/tgui
public
+Try to find an instance of a UI, and push an update to it.
+required user mob The mob who opened/is using the UI. +required src_object datum The object/datum which owns the UI. +optional ui datum/tgui The UI to be updated, if it exists. +optional force_open bool If the UI should be re-opened instead of updated.
+return datum/tgui The found UI.
public
+Update all UIs attached to src_object.
+required src_object datum The object/datum which owns the UIs.
+return int The number of UIs updated.
public
+Update all UIs belonging to a user.
+required user mob The mob who opened/is using the UI. +optional src_object datum If provided, only update UIs belonging this src_object.
+return int The number of UIs updated.
Vars | |
| emergency_swap | If the gamemode fails to be run too many times, we swap to a preset gamemode, this should give admins time to set their preferred one |
|---|---|
Procs | |
| HandleRandomHardcoreScore | Handles random hardcore point rewarding if it applies. |
| hardcore_random_report | Generate a report for all players who made it out alive with a hardcore random character and prints their final score |
| log_roundend_report | Log the round-end report as an HTML file |
| market_report | Generate a report for how much money is on station, as well as the richest crewmember on the station. |
If the gamemode fails to be run too many times, we swap to a preset gamemode, this should give admins time to set their preferred one
Handles random hardcore point rewarding if it applies.
Generate a report for all players who made it out alive with a hardcore random character and prints their final score
Log the round-end report as an HTML file
+Composits the roundend report, and saves it in two locations. +The report is first saved along with the round's logs +Then, the report is copied to a fixed directory specifically for +housing the server's last roundend report. In this location, +the file will be overwritten at the end of each shift.
Generate a report for how much money is on station, as well as the richest crewmember on the station.
Vars | |
| bucket_auto_reset | Boolean operator controlling if the timer SS will automatically reset buckets if it fails to invoke callbacks for an extended period of time |
|---|---|
| bucket_count | How many timers are in the buckets |
| bucket_list | List of buckets, each bucket holds every timer that has to run that byond tick |
| bucket_resolution | world.tick_lag the bucket was designed for |
| clienttime_timers | Special timers that run in real-time, not BYOND time; these are more expensive to run and maintain |
| hashes | A hashlist dictionary used for storing unique timers |
| head_offset | world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets |
| last_invoke_tick | Contains the last time that a timer's callback was invoked, or the last tick the SS fired if no timers are being processed |
| last_invoke_warning | Contains the last time that a warning was issued for not invoking callbacks |
| practical_offset | Index of the wrap around pivot for buckets. buckets before this are later running buckets wrapped around from the end of the bucket list. |
| second_queue | Queue used for storing timers that do not fit into the current buckets |
| timer_id_dict | List of all active timers associated to their timer ID (for easy lookup) |
Procs | |
| get_timer_debug_string | Generates a string with details about the timed event for debugging purposes |
| reset_buckets | Destroys the existing buckets and creates new buckets from the existing timed events |
Boolean operator controlling if the timer SS will automatically reset buckets if it fails to invoke callbacks for an extended period of time
How many timers are in the buckets
List of buckets, each bucket holds every timer that has to run that byond tick
world.tick_lag the bucket was designed for
Special timers that run in real-time, not BYOND time; these are more expensive to run and maintain
A hashlist dictionary used for storing unique timers
world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets
Contains the last time that a timer's callback was invoked, or the last tick the SS fired if no timers are being processed
Contains the last time that a warning was issued for not invoking callbacks
Index of the wrap around pivot for buckets. buckets before this are later running buckets wrapped around from the end of the bucket list.
Queue used for storing timers that do not fit into the current buckets
List of all active timers associated to their timer ID (for easy lookup)
Generates a string with details about the timed event for debugging purposes
Destroys the existing buckets and creates new buckets from the existing timed events
Vars | |
| choice_statclicks | List of choice = object for statclick objects for statpanel voting +statclick rework? 2: list("name"="id") |
|---|---|
List of choice = object for statclick objects for statpanel voting +statclick rework? 2: list("name"="id")
Procs | |
| check_requirements | Run custom pre-craft checks for this recipe |
|---|---|
Run custom pre-craft checks for this recipe
+user: The /mob that initiated the crafting +collected_requirements: A list of lists of /obj/item instances that satisfy reqs. Top level list is keyed by requirement path.
Vars | |
| time | obj/item/stack/packageWrap = 8, +obj/item/pipe = 2) |
|---|---|
obj/item/stack/packageWrap = 8, +obj/item/pipe = 2)
Vars | |
| time | obj/item/stack/packageWrap = 8, +obj/item/pipe = 2) |
|---|---|
obj/item/stack/packageWrap = 8, +obj/item/pipe = 2)
A datum that represents a product that is vendable
Vars | |
| age_restricted | Whether spessmen with an ID with an age below AGE_MINOR (20 by default) can buy this item |
|---|---|
| amount | How many of this product we currently have |
| colorable | Whether the product can be recolored by the GAGS system |
| custom_premium_price | Does the item have a custom premium price override |
| custom_price | Does the item have a custom price override |
| max_amount | How many we can store at maximum |
| product_path | Typepath of the product that is created when this record "sells" |
Whether spessmen with an ID with an age below AGE_MINOR (20 by default) can buy this item
How many of this product we currently have
Whether the product can be recolored by the GAGS system
Does the item have a custom premium price override
Does the item have a custom price override
How many we can store at maximum
Typepath of the product that is created when this record "sells"
Vars | |
| locked | This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character(). |
|---|---|
This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
Design Datums
+
+All the data for building stuff.
Vars | |
| min_security_level | minimum and security levels the design can be printed on. Currently only available for rnd production machinery and mechfab. |
|---|---|
minimum and security levels the design can be printed on. Currently only available for rnd production machinery and mechfab.
///////Autolathe Designs /////
+Electronics
//////Autolathe Designs /////
+Secgear
//////Autolathe Designs//////
+Tools
//////Autolathe Designs /////
+Dinnerware
///////Autolathe Designs/////
+Construction
//////Autolathe Designs /////
+T-Comms
We handle the unity part of plumbing. We track who is connected to who.
Procs | |
| add_duct | Add a duct to our network |
|---|---|
| add_plumber | add a plumbing object to either demanders or suppliers |
| assimilate | we combine ductnets. this occurs when someone connects to seperate sets of fluid ducts |
| destroy_network | destroy the network and tell all our ducts and plumbers we are gone |
| remove_duct | Remove a duct from our network and commit suicide, because this is probably easier than to check who that duct was connected to and what part of us was lost |
| remove_plumber | remove a plumber. we dont delete ourselves because ductnets dont persist through plumbing objects |
Add a duct to our network
add a plumbing object to either demanders or suppliers
we combine ductnets. this occurs when someone connects to seperate sets of fluid ducts
destroy the network and tell all our ducts and plumbers we are gone
Remove a duct from our network and commit suicide, because this is probably easier than to check who that duct was connected to and what part of us was lost
remove a plumber. we dont delete ourselves because ductnets dont persist through plumbing objects
Vars | |
| antag_cap | Judges the amount of antagonists to apply, for both solo and teams. +Note that some antagonists (such as traitors, lings, heretics, etc) will add more based on how many times they've been scaled. +Written as a linear equation--ceil(x/denominator) + offset, or as a fixed constant. +If written as a linear equation, will be in the form of `list("denominator" = denominator, "offset" = offset). |
|---|---|
| antag_datum | The antagonist datum that is assigned to the mobs mind on ruleset execution. |
| antag_flag | Preferences flag such as ROLE_WIZARD that need to be turned on for players to be antag |
| antag_flag_override | If a role is to be considered another for the purpose of banning. |
| assigned | List of players that were selected for this rule |
| base_prob | Base probability used in scaling. The higher it is, the more likely to scale. Kept as a var to allow for config editing._SendSignal(sigtype, list/arguments) |
| blocking_rules | If a ruleset type which is in this list has been executed, then the ruleset will not be executed. |
| candidates | List of players that are being drafted for this rule |
| cost | Threat cost for this rule, this is decreased from the mode's threat when the rule is executed. |
| delay | Delay for when execute will get called from the time of post_setup (roundstart) or process (midround/latejoin). +Make sure your ruleset works with execute being called during the game when using this, and that the clean_up proc reverts it properly in case of faliure. |
| enemy_roles | If set, there needs to be a certain amount of players doing those roles (among the players who won't be drafted) for the rule to be drafted IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS. |
| exclusive_roles | If set, rule will only accept candidates from those roles. If on a roundstart ruleset, requires the player to have the correct antag pref enabled and any of the possible roles enabled. |
| flags | A flag that determines how the ruleset is handled. Check __DEFINES/dynamic.dm for an explanation of the accepted values. |
| indice_pop | Calculated during acceptable(), used in scaling and team sizes. |
| maximum_players | The maximum amount of players required for the rule to be considered. +Anything below zero or exactly zero is ignored. |
| minimum_players | The minimum amount of players required for the rule to be considered. |
| minimum_required_age | The required minimum account age for this ruleset. |
| mode | Reference to the mode, use this instead of SSticker.mode. |
| name | For admin logging and round end screen. |
| persistent | If set to TRUE, the rule won't be discarded after being executed, and dynamic will call rule_process() every time it ticks. |
| pop_per_requirement | Pop range per requirement. If zero defaults to mode's pop_per_requirement. |
| protected_roles | If set, and config flag protect_roles_from_antagonist is false, then the rule will not pick players from these roles. |
| repeatable | If set to TRUE, dynamic mode will be able to draft this ruleset again later on. (doesn't apply for roundstart rules) |
| repeatable_weight_decrease | If set higher than 0 decreases weight by itself causing the ruleset to appear less often the more it is repeated. |
| required_candidates | The rule needs this many candidates (post-trimming) to be executed (example: Cult needs 4 players at round start) |
| required_enemies | If enemy_roles was set, this is the amount of enemy job workers needed per threat_level range (0-10,10-20,etc) IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS. |
| requirements | Requirements are the threat level requirements per pop range. +With the default values, The rule will never get drafted below 10 threat level (aka: "peaceful extended"), and it requires a higher threat level at lower pops. |
| restricted_roles | If set, rule will deny candidates from those roles always. |
| ruletype | For admin logging and round end screen, do not change this unless making a new rule type. |
| scaled_times | How many times a rule has scaled up upon getting picked. |
| scaling_cost | Cost per level the rule scales up. |
| total_cost | Used for the roundend report |
| weight | 0 -> 9, probability for this rule to be picked against other rules. If zero this will effectively disable the rule. |
Procs | |
| acceptable | By default, a rule is acceptable if it satisfies the threat level/population requirements. +If your rule has extra checks, such as counting security officers, do that in ready() instead |
| clean_up | Runs from gamemode process() if ruleset fails to start, like delayed rulesets not getting valid candidates. +This one only handles refunding the threat, override in ruleset to clean up the rest. |
| execute | Called on post_setup on roundstart and when the rule executes on midround and latejoin. +Give your candidates or assignees equipment and antag datum here. |
| get_antag_cap | Returns what the antag cap with the given population is. |
| get_weight | Gets weight of the ruleset +Note that this decreases weight if repeatable is TRUE and repeatable_weight_decrease is higher than 0 +Note: If you don't want repeatable rulesets to decrease their weight use the weight variable directly |
| pre_execute | Called on game mode pre_setup for roundstart rulesets. +Do everything you need to do before job is assigned here. +IMPORTANT: ASSIGN special_role HERE |
| ready | Here you can perform any additional checks you want. (such as checking the map etc) +Remember that on roundstart no one knows what their job is at this point. +IMPORTANT: If ready() returns TRUE, that means pre_execute() or execute() should never fail! |
| round_result | Set mode result and news report here. +Only called if ruleset is flagged as HIGH_IMPACT_RULESET |
| rule_process | This is called if persistent variable is true everytime SSTicker ticks. |
| scale_up | When picking rulesets, if dynamic picks the same one multiple times, it will "scale up". +However, doing this blindly would result in lowpop rounds (think under 10 people) where over 80% of the crew is antags! +This function is here to ensure the antag ratio is kept under control while scaling up. +Returns how much threat to actually spend in the end. |
| trim_candidates | Here you can remove candidates that do not meet your requirements. +This means if their job is not correct or they have disconnected you can remove them from candidates here. +Usually this does not need to be changed unless you need some specific requirements from your candidates. |
Judges the amount of antagonists to apply, for both solo and teams. +Note that some antagonists (such as traitors, lings, heretics, etc) will add more based on how many times they've been scaled. +Written as a linear equation--ceil(x/denominator) + offset, or as a fixed constant. +If written as a linear equation, will be in the form of `list("denominator" = denominator, "offset" = offset).
The antagonist datum that is assigned to the mobs mind on ruleset execution.
Preferences flag such as ROLE_WIZARD that need to be turned on for players to be antag
If a role is to be considered another for the purpose of banning.
List of players that were selected for this rule
Base probability used in scaling. The higher it is, the more likely to scale. Kept as a var to allow for config editing._SendSignal(sigtype, list/arguments)
If a ruleset type which is in this list has been executed, then the ruleset will not be executed.
List of players that are being drafted for this rule
Threat cost for this rule, this is decreased from the mode's threat when the rule is executed.
Delay for when execute will get called from the time of post_setup (roundstart) or process (midround/latejoin). +Make sure your ruleset works with execute being called during the game when using this, and that the clean_up proc reverts it properly in case of faliure.
If set, there needs to be a certain amount of players doing those roles (among the players who won't be drafted) for the rule to be drafted IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
If set, rule will only accept candidates from those roles. If on a roundstart ruleset, requires the player to have the correct antag pref enabled and any of the possible roles enabled.
A flag that determines how the ruleset is handled. Check __DEFINES/dynamic.dm for an explanation of the accepted values.
Calculated during acceptable(), used in scaling and team sizes.
The maximum amount of players required for the rule to be considered. +Anything below zero or exactly zero is ignored.
The minimum amount of players required for the rule to be considered.
The required minimum account age for this ruleset.
Reference to the mode, use this instead of SSticker.mode.
For admin logging and round end screen.
If set to TRUE, the rule won't be discarded after being executed, and dynamic will call rule_process() every time it ticks.
Pop range per requirement. If zero defaults to mode's pop_per_requirement.
If set, and config flag protect_roles_from_antagonist is false, then the rule will not pick players from these roles.
If set to TRUE, dynamic mode will be able to draft this ruleset again later on. (doesn't apply for roundstart rules)
If set higher than 0 decreases weight by itself causing the ruleset to appear less often the more it is repeated.
The rule needs this many candidates (post-trimming) to be executed (example: Cult needs 4 players at round start)
If enemy_roles was set, this is the amount of enemy job workers needed per threat_level range (0-10,10-20,etc) IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
Requirements are the threat level requirements per pop range. +With the default values, The rule will never get drafted below 10 threat level (aka: "peaceful extended"), and it requires a higher threat level at lower pops.
If set, rule will deny candidates from those roles always.
For admin logging and round end screen, do not change this unless making a new rule type.
How many times a rule has scaled up upon getting picked.
Cost per level the rule scales up.
Used for the roundend report
0 -> 9, probability for this rule to be picked against other rules. If zero this will effectively disable the rule.
By default, a rule is acceptable if it satisfies the threat level/population requirements. +If your rule has extra checks, such as counting security officers, do that in ready() instead
Runs from gamemode process() if ruleset fails to start, like delayed rulesets not getting valid candidates. +This one only handles refunding the threat, override in ruleset to clean up the rest.
Called on post_setup on roundstart and when the rule executes on midround and latejoin. +Give your candidates or assignees equipment and antag datum here.
Returns what the antag cap with the given population is.
Gets weight of the ruleset +Note that this decreases weight if repeatable is TRUE and repeatable_weight_decrease is higher than 0 +Note: If you don't want repeatable rulesets to decrease their weight use the weight variable directly
Called on game mode pre_setup for roundstart rulesets. +Do everything you need to do before job is assigned here. +IMPORTANT: ASSIGN special_role HERE
Here you can perform any additional checks you want. (such as checking the map etc) +Remember that on roundstart no one knows what their job is at this point. +IMPORTANT: If ready() returns TRUE, that means pre_execute() or execute() should never fail!
Set mode result and news report here. +Only called if ruleset is flagged as HIGH_IMPACT_RULESET
This is called if persistent variable is true everytime SSTicker ticks.
When picking rulesets, if dynamic picks the same one multiple times, it will "scale up". +However, doing this blindly would result in lowpop rounds (think under 10 people) where over 80% of the crew is antags! +This function is here to ensure the antag ratio is kept under control while scaling up. +Returns how much threat to actually spend in the end.
Here you can remove candidates that do not meet your requirements. +This means if their job is not correct or they have disconnected you can remove them from candidates here. +Usually this does not need to be changed unless you need some specific requirements from your candidates.
Vars | |
| revs_win_threat_injection | How much threat should be injected when the revolution wins? |
|---|---|
Procs | |
| check_eligible | Checks for revhead loss conditions and other antag datums. |
How much threat should be injected when the revolution wins?
Checks for revhead loss conditions and other antag datums.
Vars | |
| required_type | What mob type the ruleset is restricted to. |
|---|---|
| restrict_ghost_roles | If the ruleset should be restricted from ghost roles. |
What mob type the ruleset is restricted to.
If the ruleset should be restricted from ghost roles.
Vars | |
| has_failure_chance | Whether or not this instance of sleeper agent should be randomly acceptable. +If TRUE, then this has a threat level% chance to succeed. |
|---|---|
Whether or not this instance of sleeper agent should be randomly acceptable. +If TRUE, then this has a threat level% chance to succeed.
Vars | |
| handler | A reference to the handler that is used to run pre_execute(), execute(), etc.. |
|---|---|
A reference to the handler that is used to run pre_execute(), execute(), etc..
Vars | |
| makeBody | Whether the ruleset should call generate_ruleset_body or not. |
|---|---|
| required_applicants | The rule needs this many applicants to be properly executed. |
Procs | |
| attempt_replacement | Fired when there are no valid candidates. Will try to roll again in a minute. |
| review_applications | Here is where you can check if your ghost applicants are valid for the ruleset. +Called by send_applications(). |
| send_applications | This sends a poll to ghosts if they want to be a ghost spawn from a ruleset. |
Whether the ruleset should call generate_ruleset_body or not.
The rule needs this many applicants to be properly executed.
Fired when there are no valid candidates. Will try to roll again in a minute.
Here is where you can check if your ghost applicants are valid for the ruleset. +Called by send_applications().
This sends a poll to ghosts if they want to be a ghost spawn from a ruleset.
Procs | |
| ready | Do your checks if the ruleset is ready to be executed here. +Should ignore certain checks if forced is TRUE |
|---|---|
| trim_candidates | Checks if candidates are connected and if they are banned or don't want to be the antagonist. |
Do your checks if the ruleset is ready to be executed here. +Should ignore certain checks if forced is TRUE
Checks if candidates are connected and if they are banned or don't want to be the antagonist.
Vars | |
| handler | A reference to the handler that is used to run pre_execute(), execute(), etc.. |
|---|---|
A reference to the handler that is used to run pre_execute(), execute(), etc..
Vars | |
| revs_win_threat_injection | How much threat should be injected when the revolution wins? |
|---|---|
Procs | |
| check_eligible | Checks for revhead loss conditions and other antag datums. |
How much threat should be injected when the revolution wins?
Checks for revhead loss conditions and other antag datums.
A "snapshot" of dynamic at an important point in time. +Exported to JSON in the dynamic.json log file.
Vars | |
| alive_antags | The number of alive antags |
|---|---|
| alive_players | The number of alive players |
| dead_players | The number of dead players |
| observers | The number of observers |
| remaining_threat | The remaining midround threat |
| ruleset_chosen | The rulesets chosen this snapshot |
| serialization | The cached serialization of this snapshot |
| time | The world.time when the snapshot was taken |
| total_players | The total number of players in the server |
Procs | |
| to_list | Convert the snapshot to an associative list |
The number of alive antags
The number of alive players
The number of dead players
The number of observers
The remaining midround threat
The rulesets chosen this snapshot
The cached serialization of this snapshot
The world.time when the snapshot was taken
The total number of players in the server
Convert the snapshot to an associative list
A ruleset chosen during a snapshot
Vars | |
| assigned | The number of assigned antags |
|---|---|
| name | The name of the ruleset chosen |
| scaled | If it is a round start ruleset, how much it was scaled by |
The number of assigned antags
The name of the ruleset chosen
If it is a round start ruleset, how much it was scaled by
#Eldritch Knowledge
+Datum that makes eldritch cultist interesting.
+Eldritch knowledge aren't instantiated anywhere roundstart, and are initalized and destroyed as the round goes on.
Vars | |
| banned_knowledge | What knowledge is incompatible with this. This will simply make it impossible to research knowledges that are in banned_knowledge once this gets researched. |
|---|---|
| cost | Cost of knowledge in souls |
| desc | Description of the knowledge |
| gain_text | What shows up |
| name | Name of the knowledge |
| next_knowledge | Next knowledge in the research tree |
| required_atoms | Used with rituals, how many items this needs |
| result_atoms | What do we get out of this |
| route | What path is this on defaults to "Side" |
| sacs_needed | Required sacrifices to unlock |
Procs | |
| cleanup_atoms | Used atom cleanup |
| on_death | A proc that handles the code when the mob dies |
| on_eldritch_blade | Sickly blade act |
| on_finished_recipe | What happens once the recipe is succesfully finished |
| on_gain | What happens when this is assigned to an antag datum |
| on_life | What happens every tick |
| on_lose | What happens when you loose this |
| on_mansus_grasp | Mansus grasp act |
| on_ranged_attack_eldritch_blade | Sickly blade distant act |
| recipe_snowflake_check | Special check for recipes |
What knowledge is incompatible with this. This will simply make it impossible to research knowledges that are in banned_knowledge once this gets researched.
Cost of knowledge in souls
Description of the knowledge
What shows up
Name of the knowledge
Next knowledge in the research tree
Used with rituals, how many items this needs
What do we get out of this
What path is this on defaults to "Side"
Required sacrifices to unlock
Used atom cleanup
+Overide this proc if you dont want ALL ATOMS to be destroyed. useful in many situations.
A proc that handles the code when the mob dies
+This proc is primarily used to end any soundloops when the heretic dies
Sickly blade act
+Gives addtional effects to sickly blade weapon
What happens once the recipe is succesfully finished
+By default this proc creates atoms from result_atoms list. Override this is you want something else to happen.
What happens when this is assigned to an antag datum
+This proc is called whenever a new eldritch knowledge is added to an antag datum
What happens every tick
+This proc is called on SSprocess in eldritch cultist antag datum. SSprocess happens roughly every second
What happens when you loose this
+This proc is called whenever antagonist looses his antag datum, put cleanup code in here
Mansus grasp act
+Gives addtional effects to mansus grasp spell
Sickly blade distant act
+Same as /datum/eldritch_knowledge/proc/on_eldritch_blade but works on targets that are not in proximity to you.
Special check for recipes
+If you are adding a more complex summoning or something that requires a special check that parses through all the atoms in an area override this.
Vars | |
| sound_loop | soundloop for the void theme |
|---|---|
| storm | Reference to the ongoing voidstorm that surrounds the heretic |
soundloop for the void theme
Reference to the ongoing voidstorm that surrounds the heretic
A holder for simple behaviour that can be attached to many different types
+Only one element of each type is instanced during game init. +Otherwise acts basically like a lightweight component.
Vars | |
| element_flags | Option flags for element behaviour |
|---|---|
| id_arg_index | The index of the first attach argument to consider for duplicate elements |
Procs | |
| Attach | Activates the functionality defined by the element on the given target datum |
| Detach | Deactivates the functionality defines by the element on the given datum |
Option flags for element behaviour
The index of the first attach argument to consider for duplicate elements
+Is only used when flags contains ELEMENT_BESPOKE
+This is infinity so you must explicitly set this
Activates the functionality defined by the element on the given target datum
Deactivates the functionality defines by the element on the given datum
Tucking element, for things that can be tucked into bed.
Vars | |
| rotation_degree | our rotation degree - how much the item turns when in bed (+degrees turns it more parallel) |
|---|---|
| x_offset | our pixel_x offset - how much the item moves x when in bed (+x is closer to the pillow) |
| y_offset | our pixel_y offset - how much the item move y when in bed (-y is closer to the middle) |
Procs | |
| tuck_into_bed | Tuck our object into bed. |
| untuck | If we rotate our object, then we need to un-rotate it when it's picked up |
our rotation degree - how much the item turns when in bed (+degrees turns it more parallel)
our pixel_x offset - how much the item moves x when in bed (+x is closer to the pillow)
our pixel_y offset - how much the item move y when in bed (-y is closer to the middle)
Tuck our object into bed.
+tucked - the object being tucked +target_bed - the bed we're tucking them into +tucker - the guy doing the tucking
If we rotate our object, then we need to un-rotate it when it's picked up
+tucked - the object that is tucked
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.
Vars | |
| connections | An assoc list of signal -> procpath to register to the loc this object is on. |
|---|---|
An assoc list of signal -> procpath to register to the loc this object is on.
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.
Vars | |
| lmb_text | If set, the text to show for LMB |
|---|---|
| lmb_text_combat_mode | If set, the text to show for LMB when in combat mode. Otherwise, defaults to lmb_text. |
| rmb_text | If set, the text to show for RMB |
| rmb_text_combat_mode | If set, the text to show for RMB when in combat mode. Otherwise, defaults to rmb_text. |
If set, the text to show for LMB
If set, the text to show for LMB when in combat mode. Otherwise, defaults to lmb_text.
If set, the text to show for RMB
If set, the text to show for RMB when in combat mode. Otherwise, defaults to rmb_text.
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.
Vars | |
| item_paths_to_contexts | Map of item paths to contexts to usages |
|---|---|
Map of item paths to contexts to usages
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.
Vars | |
| lmb_text | If set, the text to show for LMB |
|---|---|
| rmb_text | If set, the text to show for RMB |
If set, the text to show for LMB
If set, the text to show for RMB
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.
Vars | |
| tool_behaviors | Map of tool behaviors to contexts to usages |
|---|---|
Map of tool behaviors to contexts to usages
Vars | |
| embed_chance | whether we can skip assigning all the vars (since these are bespoke elements, we don't have to reset the vars every time we attach to something, we already know what we are!) |
|---|---|
Procs | |
| checkEmbedMob | Checking to see if we're gonna embed into a human |
| checkEmbedOther | We need the hit_zone if we're embedding into a human, so this proc only handles if we're embedding into a turf |
| checkEmbedProjectile | checkEmbedProjectile() is what we get when a projectile with a defined shrapnel_type impacts a target. |
| detachFromWeapon | If we don't want to be embeddable anymore (deactivating an e-dagger for instance) |
| examined | Someone inspected our embeddable item |
| severancePackage | A different embed element has been attached, so we'll detach and let them handle things |
| tryForceEmbed | Arguments: |
whether we can skip assigning all the vars (since these are bespoke elements, we don't have to reset the vars every time we attach to something, we already know what we are!)
Checking to see if we're gonna embed into a human
We need the hit_zone if we're embedding into a human, so this proc only handles if we're embedding into a turf
checkEmbedProjectile() is what we get when a projectile with a defined shrapnel_type impacts a target.
+If we hit a valid target (carbon or closed turf), we create the shrapnel_type object and immediately call tryEmbed() on it, targeting what we impacted. That will lead +it to call tryForceEmbed() on its own embed element (it's out of our hands here, our projectile is done), where it will run through all the checks it needs to.
If we don't want to be embeddable anymore (deactivating an e-dagger for instance)
Someone inspected our embeddable item
A different embed element has been attached, so we'll detach and let them handle things
Arguments:
+Can be applied to /atom/movable subtypes to make them apply fire stacks to things they hit
Vars | |
| amount | How many firestacks to apply per hit |
|---|---|
How many firestacks to apply per hit
Vars | |
| examine_full_view | Examine FULLY views. Overrides examine_no_preview |
|---|---|
| examine_no_preview | Do not attempt to render a preview on examine. If this is on, it will display as [flavor_name] |
| save_key | For preference/DNA saving/loading. Null to prevent. Prefs are only loaded from obviously if it exists in preferences.features. |
Examine FULLY views. Overrides examine_no_preview
Do not attempt to render a preview on examine. If this is on, it will display as [flavor_name]
For preference/DNA saving/loading. Null to prevent. Prefs are only loaded from obviously if it exists in preferences.features.
Element for scaling item appearances in the overworld or in inventory/storage.
+This bespoke element allows for items to have varying sizes depending on their location. +The overworld simply refers to items being on a turf. Inventory includes HUD item slots, +and storage is anywhere a storage component is used. +Scaling should affect the item's icon and all attached overlays (such as blood decals).
Vars | |
| overworld_scaling | Scaling value when the attached item is in the overworld (on a turf). |
|---|---|
| storage_scaling | Scaling value when the attached item is in a storage component or inventory slot. |
Procs | |
| Attach | Attach proc for the item_scaling element |
| Detach | Detach proc for the item_scaling element. |
| scale | Scales the attached item's matrix. |
| scale_overworld | Shrinks when inworld |
| scale_storage | Enlarges when inhand or in storage. |
Scaling value when the attached item is in the overworld (on a turf).
Scaling value when the attached item is in a storage component or inventory slot.
Attach proc for the item_scaling element
+The proc checks the target's type before attaching. It then initializes +the target to overworld scaling. The target should then rescale if it is placed +in inventory/storage on initialization. Relevant signals are registered to listen +for pickup/drop or storage events. Scaling values of 1 will result in items +returning to their original size. +Arguments:
+Detach proc for the item_scaling element.
+All registered signals are unregistered, and the attached element is removed from the target datum. +Arguments:
+Scales the attached item's matrix.
+The proc first narrows the type of the source to (datums do not have a transform matrix). +It then creates an identity matrix, M, which is transformed by the scaling value. +The object's transform variable (matrix) is then set to the resulting value of M. +Arguments:
+Shrinks when inworld
+Longer detailed paragraph about the proc +including any relevant detail +Arguments:
+Enlarges when inhand or in storage.
+Longer detailed paragraph about the proc +including any relevant detail +Arguments:
+Procs | |
| check_reskin_menu | Checks if we are allowed to interact with a radial menu for reskins |
|---|---|
Checks if we are allowed to interact with a radial menu for reskins
+Arguments:
+Vars | |
| attached_atoms | List of atoms this element is attached to. Doubles as a multiplier if the same element is attached multiple times to a target multiple times. |
|---|---|
| bonus_lum | the minimum lum count over which where the target damage is adjusted. |
| light_bruteheal | how much brute damage (or integrity, for objects) is healed (taken if positive) at maximum luminosity. (if lum_minus were 0) |
| light_burnheal | how much burn damage is restored/taken at maximum luminosity. Mobs only. |
| light_nutrition_gain | how nutrition recovery/expenses factor, not affected by bonus_lum and malus_lum. Mobs only. |
| light_oxyheal | how much oxy damage is restored/taken at maximum luminosity. Mobs only. |
| light_toxheal | how much tox damage is restored/taken at maximum luminosity. Mobs only. |
| lum_minus | A value subtracted to the lum count, which allows targets to wilt or heal in the darkness. |
| malus_lum | the maximum lum count under which the target damage is inversely adjusted. |
List of atoms this element is attached to. Doubles as a multiplier if the same element is attached multiple times to a target multiple times.
the minimum lum count over which where the target damage is adjusted.
how much brute damage (or integrity, for objects) is healed (taken if positive) at maximum luminosity. (if lum_minus were 0)
how much burn damage is restored/taken at maximum luminosity. Mobs only.
how nutrition recovery/expenses factor, not affected by bonus_lum and malus_lum. Mobs only.
how much oxy damage is restored/taken at maximum luminosity. Mobs only.
how much tox damage is restored/taken at maximum luminosity. Mobs only.
A value subtracted to the lum count, which allows targets to wilt or heal in the darkness.
the maximum lum count under which the target damage is inversely adjusted.
Procs | |
| scavenge | This proc has to be asynced (cough cough, do_after) in order to return the comsig values in time to stop the attack chain. |
|---|---|
This proc has to be asynced (cough cough, do_after) in order to return the comsig values in time to stop the attack chain.
bespoke element that assigns a series number to toys on examine, and shows their series name! +used for mechas and rare collectable hats, should totally be used for way more ;)
Procs | |
| on_examine | signal called examining |
|---|---|
signal called examining
An element for atoms that, when dragged and dropped onto a mob, opens a strip panel.
Vars | |
| items | An assoc list of keys to /datum/strippable_item |
|---|---|
| should_strip_proc_path | A proc path that returns TRUE/FALSE if we should show the strip panel for this entity. +If it does not exist, the strip menu will always show. +Will be called with (mob/user). |
| strip_menus | An existing strip menus |
An assoc list of keys to /datum/strippable_item
A proc path that returns TRUE/FALSE if we should show the strip panel for this entity. +If it does not exist, the strip menu will always show. +Will be called with (mob/user).
An existing strip menus
Procs | |
| Attach | This proc sets up the signals to handle updating viscontents when turfs above/below update. Handle plane and layer here too so that they don't cover other obs/turfs in Dream Maker |
|---|---|
| show_bottom_level | Called when there is no real turf below this turf |
| update_multiz | Updates the viscontents or underlays below this tile. |
This proc sets up the signals to handle updating viscontents when turfs above/below update. Handle plane and layer here too so that they don't cover other obs/turfs in Dream Maker
Called when there is no real turf below this turf
Updates the viscontents or underlays below this tile.
Vars | |
| sound | What sound do we want to play? |
|---|---|
What sound do we want to play?
Vars | |
| credit_cost | How much credits does this cost to buy? |
|---|---|
| initial_stock | How much stock of this can be bought? If this is null, infinite can be bought |
| item_to_dispense | What is the path of the item to dispense? |
| name | What is the name of the goodie we want to buy? |
How much credits does this cost to buy?
How much stock of this can be bought? If this is null, infinite can be bought
What is the path of the item to dispense?
What is the name of the goodie we want to buy?
A font datum, it exists to define a custom font to use in a span style later.
Vars | |
| ascent | distance above baseline (including whitespace) |
|---|---|
| average_width | average character width |
| default_character | default character (for undefined chars) |
| descent | distance below baseline |
| end | last character in metrics |
| ex_leading | external leading vertical space, just plain blank |
| font_family | The font file we link to. |
| height | total height of a line |
| in_leading | internal leading vertical space, for accent marks |
| max_width | maximum character width |
| metrics | Font features and metrics +Generated by 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 +list of font size/spacing metrics |
| name | Font name, just so people know what to put in their span style. |
| overhang | extra width, such as from italics, for a line |
| start | first character in metrics |
Procs | |
| get_metrics | Get font metrics +From Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus) |
distance above baseline (including whitespace)
average character width
default character (for undefined chars)
distance below baseline
last character in metrics
external leading vertical space, just plain blank
The font file we link to.
total height of a line
internal leading vertical space, for accent marks
maximum character width
Font features and metrics +Generated by 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 +list of font size/spacing metrics
Font name, just so people know what to put in their span style.
extra width, such as from italics, for a line
first character in metrics
Get font metrics +From Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
Vars | |
| current_players | Associative list of current players, in order: living players, living antagonists, dead players and observers. |
|---|---|
Procs | |
| admin_panel | Mode specific admin panel. |
| can_start | Checks to see if the game can be setup and ran with the current number of players or whatnot. |
| convert_roundtype | Allows rounds to basically be "rerolled" should the initial premise fall through. Also known as mulligan antags. |
| ghost_info | Mode specific info for ghost game_info |
| make_antag_chance | Handles late-join antag assignments |
| post_setup | Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things |
| pre_setup | Attempts to select players for special roles the mode might have. |
| process | Called by the gameSSticker |
Associative list of current players, in order: living players, living antagonists, dead players and observers.
Mode specific admin panel.
Checks to see if the game can be setup and ran with the current number of players or whatnot.
Allows rounds to basically be "rerolled" should the initial premise fall through. Also known as mulligan antags.
Mode specific info for ghost game_info
Handles late-join antag assignments
Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things
Attempts to select players for special roles the mode might have.
Called by the gameSSticker
Vars | |
| candidates | List of candidates used on roundstart rulesets. |
|---|---|
| configuration | Dynamic configuration, loaded on pre_setup |
| current_midround_rulesets | The last drafted midround rulesets (without the current one included). +Used for choosing different midround injections. |
| current_rules | Rules that are processed, rule_process is called on the rules in this list. |
| executed_rules | List of executed rulesets. |
| forced_injection | When TRUE GetInjectionChance returns 100. |
| forced_latejoin_rule | Forced ruleset to be executed for the next latejoin. |
| high_impact_ruleset_executed | If a high impact ruleset was executed. Only one will run at a time in most circumstances. |
| higher_injection_chance | The chance of injection increase when above higher_injection_chance_minimum_threat |
| higher_injection_chance_minimum_threat | If above this threat, increase the chance of injection |
| hijacked_random_event_injection_chance | The amount to inject when a round event is hijacked |
| initial_round_start_budget | The initial round start budget for logging purposes, set once at the beginning of the round. |
| last_midround_injection_attempt | The time when the last midround injection was attempted, whether or not it was successful |
| latejoin_delay_max | The maximum time the recurring latejoin ruleset timer is allowed to be. |
| latejoin_delay_min | The minimum time the recurring latejoin ruleset timer is allowed to be. |
| latejoin_injection_cooldown | When world.time is over this number the mode tries to inject a latejoin ruleset. |
| latejoin_rules | List of latejoin rules used for selecting the rules. |
| lower_injection_chance | The chance of injection decrease when above lower_injection_chance_minimum_threat |
| lower_injection_chance_minimum_threat | If below this threat, decrease the chance of injection |
| mid_round_budget | Set at the beginning of the round. Spent by midrounds and latejoins. |
| midround_delay_max | The maximum time the recurring midround ruleset timer is allowed to be. |
| midround_delay_min | The minimum time the recurring midround ruleset timer is allowed to be. |
| midround_injection_cooldown | When world.time is over this number the mode tries to inject a midround ruleset. |
| midround_injection_timer_id | The timer ID for the cancellable midround rule injection |
| midround_rules | List of midround rules used for selecting the rules. |
| only_ruleset_executed | If a only ruleset has been executed. |
| peaceful_percentage | How many percent of the rounds are more peaceful. |
| pop_per_requirement | |
| random_event_hijack_maximum | The maximum amount of time for antag random events to be hijacked. |
| random_event_hijack_minimum | The minimum amount of time for antag random events to be hijacked. |
| random_event_hijacked | Whether or not a random event has been hijacked this midround cycle |
| round_start_budget | Set at the beginning of the round. Spent by the mode to "purchase" rules. Everything else goes in the postround budget. |
| roundstart_pop_ready | Number of players who were ready on roundstart. |
| roundstart_split_curve_centre | A number between -5 and +5. +Equivalent to threat_curve_centre, but for the budget split. +A negative value will weigh towards midround rulesets, and a positive +value will weight towards roundstart ones. |
| roundstart_split_curve_width | A number between 0.5 and 4. +Equivalent to threat_curve_width, but for the budget split. +Higher value will favour more variance in splits and +lower value rounds closer to the average. |
| shown_threat | The amount of threat shown on the piece of paper. +Can differ from the actual threat amount. |
| snapshots | A list of recorded "snapshots" of the round, stored in the dynamic.json log |
| threat_curve_centre | A number between -5 and +5. +A negative value will give a more peaceful round and +a positive value will give a round with higher threat. |
| threat_curve_width | A number between 0.5 and 4. +Higher value will favour extreme rounds and +lower value rounds closer to the average. |
| threat_level | The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations |
| threat_log | Running information about the threat. Can store text or datum entries. |
Procs | |
| admin_cancel_midround | Fired when an admin cancels the current midround injection. |
| admin_different_midround | Fired when an admin requests a different midround injection. |
| check_blocking | Checks if a type in blocking_list is in rule_list. |
| configure_ruleset | Apply configurations to rule. |
| create_threat | Generate threat and increase the threat_level if it goes beyond, capped at 100 |
| dynamic_log | Log to messages and to the game |
| execute_midround_latejoin_rule | Mainly here to facilitate delayed rulesets. All midround/latejoin rulesets are executed with a timered callback to this proc. |
| execute_midround_rule | Fired after admins do not cancel a midround injection. |
| execute_roundstart_rule | Mainly here to facilitate delayed rulesets. All roundstart rulesets are executed with a timered callback to this proc. |
| generate_budgets | Generates the midround and roundstart budgets |
| generate_threat | Generates the threat level using lorentz distribution and assigns peaceful_percentage. |
| get_injection_chance | Gets the chance for latejoin injection, the dry_run argument is only used for forced injection. |
| get_midround_injection_chance | Gets the chance for midround injection, the dry_run argument is only used for forced injection. +Usually defers to the latejoin injection chance. |
| init_rulesets | Returns a list of the provided rulesets. +Configures their variables to match config. |
| lorentz_to_amount | Turns the value generated by lorentz distribution to number between 0 and 100. +Used for threat level and splitting the budgets. |
| new_snapshot | Creates a new snapshot with the given rulesets chosen, and writes to the JSON output. |
| pick_latejoin_rule | Executes a random latejoin ruleset from the list of drafted rules. |
| pick_midround_rule | Executes a random midround ruleset from the list of drafted rules. |
| pick_ruleset | From a list of rulesets, returns one based on weight and availability. +Mutates the list that is passed into it to remove invalid rules. |
| picking_roundstart_rule | Initializes the round start ruleset provided to it. Returns how much threat to spend. |
| picking_specific_rule | An experimental proc to allow admins to call rules on the fly or have rules call other rules. |
| refund_threat | Refund threat, but no more than threat_level. |
| remove_from_list | Removes type from the list |
| rigged_roundstart | A simple roundstart proc used when dynamic_forced_roundstart_ruleset has rules in it. |
| setup_rulesets | Initializes the internal ruleset variables |
| spend_midround_budget | Expend midround threat, can't fall under 0. |
| spend_roundstart_budget | Expend round start threat, can't fall under 0. |
| update_log | Updates the log for the current snapshots. |
List of candidates used on roundstart rulesets.
Dynamic configuration, loaded on pre_setup
The last drafted midround rulesets (without the current one included). +Used for choosing different midround injections.
Rules that are processed, rule_process is called on the rules in this list.
List of executed rulesets.
When TRUE GetInjectionChance returns 100.
Forced ruleset to be executed for the next latejoin.
If a high impact ruleset was executed. Only one will run at a time in most circumstances.
The chance of injection increase when above higher_injection_chance_minimum_threat
If above this threat, increase the chance of injection
The amount to inject when a round event is hijacked
The initial round start budget for logging purposes, set once at the beginning of the round.
The time when the last midround injection was attempted, whether or not it was successful
The maximum time the recurring latejoin ruleset timer is allowed to be.
The minimum time the recurring latejoin ruleset timer is allowed to be.
When world.time is over this number the mode tries to inject a latejoin ruleset.
List of latejoin rules used for selecting the rules.
The chance of injection decrease when above lower_injection_chance_minimum_threat
If below this threat, decrease the chance of injection
Set at the beginning of the round. Spent by midrounds and latejoins.
The maximum time the recurring midround ruleset timer is allowed to be.
The minimum time the recurring midround ruleset timer is allowed to be.
When world.time is over this number the mode tries to inject a midround ruleset.
The timer ID for the cancellable midround rule injection
List of midround rules used for selecting the rules.
If a only ruleset has been executed.
How many percent of the rounds are more peaceful.
* If the value is five the range is:
+* 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-54, 45+
+* If it is six the range is:
+* 0-5, 6-11, 12-17, 18-23, 24-29, 30-35, 36-41, 42-47, 48-53, 54+
+* If it is seven the range is:
+* 0-6, 7-13, 14-20, 21-27, 28-34, 35-41, 42-48, 49-55, 56-62, 63+
+
+The maximum amount of time for antag random events to be hijacked.
The minimum amount of time for antag random events to be hijacked.
Whether or not a random event has been hijacked this midround cycle
Set at the beginning of the round. Spent by the mode to "purchase" rules. Everything else goes in the postround budget.
Number of players who were ready on roundstart.
A number between -5 and +5. +Equivalent to threat_curve_centre, but for the budget split. +A negative value will weigh towards midround rulesets, and a positive +value will weight towards roundstart ones.
A number between 0.5 and 4. +Equivalent to threat_curve_width, but for the budget split. +Higher value will favour more variance in splits and +lower value rounds closer to the average.
The amount of threat shown on the piece of paper. +Can differ from the actual threat amount.
A list of recorded "snapshots" of the round, stored in the dynamic.json log
A number between -5 and +5. +A negative value will give a more peaceful round and +a positive value will give a round with higher threat.
A number between 0.5 and 4. +Higher value will favour extreme rounds and +lower value rounds closer to the average.
The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations
Running information about the threat. Can store text or datum entries.
Fired when an admin cancels the current midround injection.
Fired when an admin requests a different midround injection.
Checks if a type in blocking_list is in rule_list.
Apply configurations to rule.
Generate threat and increase the threat_level if it goes beyond, capped at 100
Log to messages and to the game
Mainly here to facilitate delayed rulesets. All midround/latejoin rulesets are executed with a timered callback to this proc.
Fired after admins do not cancel a midround injection.
Mainly here to facilitate delayed rulesets. All roundstart rulesets are executed with a timered callback to this proc.
Generates the midround and roundstart budgets
Generates the threat level using lorentz distribution and assigns peaceful_percentage.
Gets the chance for latejoin injection, the dry_run argument is only used for forced injection.
Gets the chance for midround injection, the dry_run argument is only used for forced injection. +Usually defers to the latejoin injection chance.
Returns a list of the provided rulesets. +Configures their variables to match config.
Turns the value generated by lorentz distribution to number between 0 and 100. +Used for threat level and splitting the budgets.
Creates a new snapshot with the given rulesets chosen, and writes to the JSON output.
Executes a random latejoin ruleset from the list of drafted rules.
Executes a random midround ruleset from the list of drafted rules.
From a list of rulesets, returns one based on weight and availability. +Mutates the list that is passed into it to remove invalid rules.
Initializes the round start ruleset provided to it. Returns how much threat to spend.
An experimental proc to allow admins to call rules on the fly or have rules call other rules.
Refund threat, but no more than threat_level.
Removes type from the list
A simple roundstart proc used when dynamic_forced_roundstart_ruleset has rules in it.
Initializes the internal ruleset variables
Expend midround threat, can't fall under 0.
Expend round start threat, can't fall under 0.
Updates the log for the current snapshots.
Vars | |
| handler | A reference to the handler that is used to run pre_setup(), post_setup(), etc.. |
|---|---|
A reference to the handler that is used to run pre_setup(), post_setup(), etc..
A special datum used by the families gamemode and dynamic rulesets to centralize code. "Family" and "gang" used interchangeably in code.
+This datum centralizes code used for the families gamemode / dynamic rulesets. Families incorporates a significant +amount of unique processing; without this datum, that could would be duplicated. To ensure the maintainability +of the families gamemode / rulesets, the code was moved to this datum. The gamemode / rulesets instance this +datum, pass it lists (lists are passed by reference; removing candidates here removes candidates in the gamemode), +and call its procs. Additionally, the families antagonist datum and families induction package also +contain vars that reference this datum, allowing for new families / family members to add themselves +to this datum's lists thereof (primarily used for point calculation). Despite this, the basic team mechanics +themselves should function regardless of this datum's instantiation, should a player have the gang or cop +antagonist datum added to them through methods external to the families gamemode / rulesets.
Vars | |
| antag_candidates | List of all eligible starting family members / undercover cops. Set externally (passed by reference) by gamemode / ruleset; used internally. Note that dynamic uses a list of mobs to handle candidates while game_modes use lists of minds! Don't be fooled! |
|---|---|
| check_counter | A counter used to minimize the overhead of computationally intensive, periodic family point gain checks. Used and set internally. |
| cops_arrived | Whether the space cops have arrived. Set internally; used internally, and for updating the wanted HUD. |
| current_theme | The current chosen gamemode theme. Decides the available Gangs, objectives, and equipment. |
| deaths_during_shift_at_beginning | Keeps track of the amount of deaths since the calling of pre_setup_analogue() if this is a midround handler. Used to prevent a high wanted level due to a large amount of deaths during the shift prior to the activation of this handler / the midround ruleset. |
| end_time | The time, in deciseconds, that the space cops will arrive at. Calculated based on wanted level and start_time. Used and set internally. |
| gang_balance_cap | The number of family members more that a family may have over other active families. Can be set externally; used internally. |
| gangbangers | List of all family member minds. Used internally; added to internally, and externally by /obj/item/gang_induction_package when used to induct a new family member. |
| gangs | List of all /datum/team/gang. Used internally; added to externally by /datum/antagonist/gang when it generates a new /datum/team/gang. |
| gangs_to_generate | The number of families (and 1:1 corresponding undercover cops) that should be generated. Can be set externally; used internally. |
| midround_ruleset | Whether the handler corresponds to a ruleset that does not trigger at round start. Should be set externally only if applicable; used internally. |
| restricted_jobs | List of jobs not eligible for starting family member / undercover cop. Set externally (passed by reference) by gamemode / ruleset; used internally. |
| sent_announcement | Whether the gamemode-announcing announcement has been sent. Used and set internally. |
| sent_second_announcement | Whether the "5 minute warning" announcement has been sent. Used and set internally. |
| start_time | The time, in deciseconds, that the datum's pre_setup() occured at. Used in end_time. Used and set internally. |
| undercover_cops | List of all undercover cop minds. Used and set internally. |
| use_dynamic_timing | Whether we want to use the 30 to 15 minute timer instead of the 60 to 30 minute timer, for Dynamic. |
| wanted_level | The current wanted level. Set internally; used internally, and for updating the wanted HUD. |
Procs | |
| New | Sets antag_candidates and restricted_jobs. |
| announce_gang_locations | Internal. Announces the presence of families to the entire station and sets sent_announcement to true to allow other checks to occur. |
| check_wanted_level | Internal. Checks if our wanted level has changed; calls update_wanted_level. Only updates wanted level post the initial announcement and until the cops show up. After that, it's locked. |
| on_gain_wanted_level | Internal. Updates the end_time and sends out an announcement if the wanted level has increased. Called by update_wanted_level(). |
| on_lower_wanted_level | Internal. Updates the end_time and sends out an announcement if the wanted level has decreased. Called by update_wanted_level(). |
| post_setup_analogue | post_setup() or execute() equivalent. |
| pre_setup_analogue | pre_setup() or pre_execute() equivalent. |
| process_analogue | process() or rule_process() equivalent. |
| send_in_the_fuzz | Internal. Polls ghosts and sends in a team of space cops according to the wanted level, accompanied by an announcement. Will let the shuttle leave 10 minutes after sending. Freezes the wanted level. |
| set_round_result_analogue | set_round_result() or round_result() equivalent. |
| update_wanted_level | Internal. Updates the icon states for everyone, and calls procs that send out announcements / change the end_time if the wanted level has changed. |
List of all eligible starting family members / undercover cops. Set externally (passed by reference) by gamemode / ruleset; used internally. Note that dynamic uses a list of mobs to handle candidates while game_modes use lists of minds! Don't be fooled!
A counter used to minimize the overhead of computationally intensive, periodic family point gain checks. Used and set internally.
Whether the space cops have arrived. Set internally; used internally, and for updating the wanted HUD.
The current chosen gamemode theme. Decides the available Gangs, objectives, and equipment.
Keeps track of the amount of deaths since the calling of pre_setup_analogue() if this is a midround handler. Used to prevent a high wanted level due to a large amount of deaths during the shift prior to the activation of this handler / the midround ruleset.
The time, in deciseconds, that the space cops will arrive at. Calculated based on wanted level and start_time. Used and set internally.
The number of family members more that a family may have over other active families. Can be set externally; used internally.
List of all family member minds. Used internally; added to internally, and externally by /obj/item/gang_induction_package when used to induct a new family member.
List of all /datum/team/gang. Used internally; added to externally by /datum/antagonist/gang when it generates a new /datum/team/gang.
The number of families (and 1:1 corresponding undercover cops) that should be generated. Can be set externally; used internally.
Whether the handler corresponds to a ruleset that does not trigger at round start. Should be set externally only if applicable; used internally.
List of jobs not eligible for starting family member / undercover cop. Set externally (passed by reference) by gamemode / ruleset; used internally.
Whether the gamemode-announcing announcement has been sent. Used and set internally.
Whether the "5 minute warning" announcement has been sent. Used and set internally.
The time, in deciseconds, that the datum's pre_setup() occured at. Used in end_time. Used and set internally.
List of all undercover cop minds. Used and set internally.
Whether we want to use the 30 to 15 minute timer instead of the 60 to 30 minute timer, for Dynamic.
The current wanted level. Set internally; used internally, and for updating the wanted HUD.
Sets antag_candidates and restricted_jobs.
+Sets the antag_candidates and restricted_jobs lists to the equivalent +lists of its instantiating game_mode / dynamic_ruleset datum. As lists +are passed by reference, the variable set in this datum and the passed list +list used to set it are literally the same; changes to one affect the other. +Like all New() procs, called when the datum is first instantiated. +There's an annoying caveat here, though -- dynamic rulesets don't have +lists of minds for candidates, they have lists of mobs. Ghost mobs, before +the round has started. But we still want to preserve the structure of the candidates +list by not duplicating it and making sure to remove the candidates as we use them. +So there's a little bit of boilerplate throughout to preserve the sanctity of this reference. +Arguments:
+Internal. Announces the presence of families to the entire station and sets sent_announcement to true to allow other checks to occur.
Internal. Checks if our wanted level has changed; calls update_wanted_level. Only updates wanted level post the initial announcement and until the cops show up. After that, it's locked.
Internal. Updates the end_time and sends out an announcement if the wanted level has increased. Called by update_wanted_level().
Internal. Updates the end_time and sends out an announcement if the wanted level has decreased. Called by update_wanted_level().
post_setup() or execute() equivalent.
+This proc is always called externally, by the instantiating game_mode / dynamic_ruleset. +This is done during the post_setup() or execute() phase, after the pre_setup() / pre_execute() phase. +It is intended to take the place of the code that would normally occupy the pre_setup() +or pre_execute() proc. As such, it ensures that all prospective starting family members / +undercover cops are eligible, and picks replacements if there were ineligible cops / family members. +It then assigns gear to the finalized family members and undercover cops, adding them to its lists, +and sets the families announcement proc (that does the announcing) to trigger in five minutes. +Additionally, if given the argument TRUE, it will return FALSE if there are no eligible starting family members. +This is only to be done if the instantiating datum is a dynamic_ruleset, as these require returns +while a game_mode is not expected to return early during this phase. +Arguments:
+pre_setup() or pre_execute() equivalent.
+This proc is always called externally, by the instantiating game_mode / dynamic_ruleset. +This is done during the pre_setup() or pre_execute() phase, after first instantiation +and the modification of gangs_to_generate, gang_balance_cap, and midround_ruleset. +It is intended to take the place of the code that would normally occupy the pre_setup() +or pre_execute() proc, were the code localized to the game_mode or dynamic_ruleset datum respectively +as opposed to this handler. As such, it picks players to be chosen for starting familiy members +or undercover cops prior to assignment to jobs. Sets start_time, default end_time, +and the current value of deaths_during_shift, to ensure the wanted level only cares about +the deaths since this proc has been called. +Takes no arguments.
process() or rule_process() equivalent.
+This proc is always called externally, by the instantiating game_mode / dynamic_ruleset. +This is done during the process() or rule_process() phase, after post_setup() or +execute() and at regular intervals thereafter. process() and rule_process() are optional +for a game_mode / dynamic_ruleset, but are important for this gamemode. It is of central +importance to the gamemode's flow, calculating wanted level updates, family point gain, +and announcing + executing the arrival of the space cops, achieved through calling internal procs. +Takes no arguments.
Internal. Polls ghosts and sends in a team of space cops according to the wanted level, accompanied by an announcement. Will let the shuttle leave 10 minutes after sending. Freezes the wanted level.
set_round_result() or round_result() equivalent.
+This proc is always called externally, by the instantiating game_mode / dynamic_ruleset. +This is done by the set_round_result() or round_result() procs, at roundend. +Sets the ticker subsystem to the correct result based off of the relative populations +of space cops and family members. +Takes no arguments.
Internal. Updates the icon states for everyone, and calls procs that send out announcements / change the end_time if the wanted level has changed.
Gang themes for the Families gamemode. Used to determine the RP theme of the round, what gangs are present, and what their objectives are.
Vars | |
| bonus_first_gangster_items | Stuff given to the starting gangster at roundstart. Assoc list, type = list(item_type) |
|---|---|
| bonus_items | Stuff given to every gangster in this theme. |
| description | The radio announcement played after 5 minutes. |
| everyone_objective | If this isn't null, everyone gets this objective. |
| gang_objectives | The objectives for the gangs. Associative list, type = "objective" |
| involved_gangs | All gangs in the theme, typepaths of gangs. |
| name | The name of the theme. |
| starting_gangsters | How many gangsters should each gang start with? Recommend to keep this in the ballpark of ensuring 9-10 total gangsters spawn. |
Stuff given to the starting gangster at roundstart. Assoc list, type = list(item_type)
Stuff given to every gangster in this theme.
The radio announcement played after 5 minutes.
If this isn't null, everyone gets this objective.
The objectives for the gangs. Associative list, type = "objective"
All gangs in the theme, typepaths of gangs.
The name of the theme.
How many gangsters should each gang start with? Recommend to keep this in the ballpark of ensuring 9-10 total gangsters spawn.
Vars | |
| gas_list_view_only | Never ever set this variable, hooked into vv_get_var for view variables viewing. |
|---|---|
Never ever set this variable, hooked into vv_get_var for view variables viewing.
Corresponds to single entry in gateway control.
+Will NOT be added automatically to GLOB.gateway_destinations list.
Vars | |
| enabled | How long after roundstart this destination becomes active |
|---|---|
| hidden | If disabled, the destination won't be available |
Procs | |
| is_available | Will not show on gateway controls at all. |
How long after roundstart this destination becomes active
If disabled, the destination won't be available
Will not show on gateway controls at all.
Vars | |
| target_gateway | The gateway this destination points at |
|---|---|
The gateway this destination points at
Vars | |
| id | Used by away landmarks |
|---|---|
Used by away landmarks
Vars | |
| output_file | If present response body will be saved to this file. |
|---|---|
If present response body will be saved to this file.
Vars | |
| screentip_text | UI for screentips that appear when you mouse over things |
|---|---|
| toggle_palette | Whether or not screentips are enabled. +This is updated by the preference for cheaper reads than would be +had with a proc call, especially on one of the hottest procs in the +game (MouseEntered). +The color to use for the screentips. +This is updated by the preference for cheaper reads than would be +had with a proc call, especially on one of the hottest procs in the +game (MouseEntered). |
Procs | |
| build_action_groups | Generates and fills new action groups with our mob's current actions |
| generate_landings | Generates visual landings for all groups that the button is not a memeber of |
| get_action_buttons_icons | This is a silly proc used in hud code code to determine what icon and icon state we should be using +for hud elements (such as action buttons) that don't have their own icon and icon state set. |
| hide_action | Removes the passed in action from its current position on the screen |
| hide_landings | Clears all currently visible landings |
| view_audit_buttons | Ensures all of our buttons are properly within the bounds of our client's view, moves them if they're not |
UI for screentips that appear when you mouse over things
Whether or not screentips are enabled. +This is updated by the preference for cheaper reads than would be +had with a proc call, especially on one of the hottest procs in the +game (MouseEntered). +The color to use for the screentips. +This is updated by the preference for cheaper reads than would be +had with a proc call, especially on one of the hottest procs in the +game (MouseEntered).
Generates and fills new action groups with our mob's current actions
Generates visual landings for all groups that the button is not a memeber of
This is a silly proc used in hud code code to determine what icon and icon state we should be using +for hud elements (such as action buttons) that don't have their own icon and icon state set.
+It returns a list, which is pretty much just a struct of info
Removes the passed in action from its current position on the screen
Clears all currently visible landings
Ensures all of our buttons are properly within the bounds of our client's view, moves them if they're not
Vars | |
| menu_hud_status | Whether the menu is currently on the client's screen or not |
|---|---|
Whether the menu is currently on the client's screen or not
Vars | |
| HIGHEST_KEY | Don't touch this |
|---|---|
| LOWEST_KEY | Don't touch this x2 |
| abstract_type | Used for categorization subtypes |
| admin_only | Oh no - For truly troll instruments. |
| category | Category |
| id | Uniquely identifies this instrument so runtime changes are possible as opposed to paths. If this is unset, things will use path instead. |
| instrument_flags | See __DEFINES/flags/instruments.dm |
| legacy_instrument_ext | For legacy instruments, our file extension |
| legacy_instrument_path | For legacy instruments, the path to our notes |
| name | Name of the instrument |
| real_samples | Write here however many samples, follow this syntax: "%note num%"='%sample file%' eg. "27"='synthesizer/e2.ogg'. Key must never be lower than 0 and higher than 127 |
| samples | assoc list key = /datum/instrument_key. do not fill this yourself! |
| songs_using | What songs are using us |
| volume_multiplier | Volume multiplier. Synthesized instruments are quite loud and I don't like to cut off potential detail via editing. (someone correct me if this isn't a thing) |
Don't touch this
Don't touch this x2
Used for categorization subtypes
Oh no - For truly troll instruments.
Category
Uniquely identifies this instrument so runtime changes are possible as opposed to paths. If this is unset, things will use path instead.
See __DEFINES/flags/instruments.dm
For legacy instruments, our file extension
For legacy instruments, the path to our notes
Name of the instrument
Write here however many samples, follow this syntax: "%note num%"='%sample file%' eg. "27"='synthesizer/e2.ogg'. Key must never be lower than 0 and higher than 127
assoc list key = /datum/instrument_key. do not fill this yourself!
What songs are using us
Volume multiplier. Synthesized instruments are quite loud and I don't like to cut off potential detail via editing. (someone correct me if this isn't a thing)
Vars | |
| allow_bureaucratic_error | Should this job be allowed to be picked for the bureaucratic error event? |
|---|---|
| alt_titles | What alternate titles does this job currently have? |
| always_can_respawn_as | Can you always join as this job even while respawning (should probably only be on for assistant) |
| considered_combat_role | Is this job considered a combat role for respawning? (usually sec/command) |
| departments | Bitfield of departments this job belongs wit |
| exclusive_mail_goodies | If this job's mail goodies compete with generic goodies. |
| family_heirlooms | List of family heirlooms this job can get with the family heirloom quirk. List of types. |
| mail_goodies | Goodies that can be received via the mail system. +Keep the _job definition for this empty and use /obj/item/mail to define general gifts. |
| random_spawns_possible | Is this job affected by weird spawns like the ones from station traits |
| starting_modifiers | Starting skill modifiers. |
Procs | |
| after_latejoin_spawn | Called after a successful latejoin spawn. +Client is in the mob. +This happens after after_spawn() |
| after_roundstart_spawn | Called after a successful roundstart spawn. +Client is not yet in the mob. +This happens after after_spawn() |
| get_default_roundstart_spawn_point | Handles finding and picking a valid roundstart effect landmark spawn point, in case no uncommon different spawning events occur. |
| get_latejoin_spawn_point | Finds a valid latejoin spawn point, checking for events and special conditions. |
| get_mail_goodies | An overridable getter for more dynamic goodies. |
| get_roundstart_spawn_point | Returns an atom where the mob should spawn in. |
| map_check | Checks if we should be created on a certain map |
| process_map_overrides | Processes map specific overrides |
Should this job be allowed to be picked for the bureaucratic error event?
What alternate titles does this job currently have?
Can you always join as this job even while respawning (should probably only be on for assistant)
Is this job considered a combat role for respawning? (usually sec/command)
Bitfield of departments this job belongs wit
If this job's mail goodies compete with generic goodies.
List of family heirlooms this job can get with the family heirloom quirk. List of types.
Goodies that can be received via the mail system. +Keep the _job definition for this empty and use /obj/item/mail to define general gifts.
Is this job affected by weird spawns like the ones from station traits
Starting skill modifiers.
Called after a successful latejoin spawn. +Client is in the mob. +This happens after after_spawn()
Called after a successful roundstart spawn. +Client is not yet in the mob. +This happens after after_spawn()
Handles finding and picking a valid roundstart effect landmark spawn point, in case no uncommon different spawning events occur.
Finds a valid latejoin spawn point, checking for events and special conditions.
An overridable getter for more dynamic goodies.
Returns an atom where the mob should spawn in.
Checks if we should be created on a certain map
Processes map specific overrides
Vars | |
| paycheck_department | Not necessarily easy itself, but it can be trivial to make lot of cash on this job. |
|---|---|
Not necessarily easy itself, but it can be trivial to make lot of cash on this job.
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
Vars | |
| f_value | The A* node weight (f_value = number_of_tiles + heuristic) |
|---|---|
| heuristic | The A* node heuristic (a rough estimate of how far we are from the goal) |
| jumps | How many steps it took to get here from the last node |
| node_goal | Nodes store the endgoal so they can process their heuristic without a reference to the pathfind datum |
| number_tiles | How many steps it's taken to get here from the start (currently pulling double duty as steps taken & cost to get here, since all moves incl diagonals cost 1 rn) |
| previous_node | The node we just came from |
| tile | The turf associated with this node |
The A* node weight (f_value = number_of_tiles + heuristic)
The A* node heuristic (a rough estimate of how far we are from the goal)
How many steps it took to get here from the last node
Nodes store the endgoal so they can process their heuristic without a reference to the pathfind datum
How many steps it's taken to get here from the start (currently pulling double duty as steps taken & cost to get here, since all moves incl diagonals cost 1 rn)
The node we just came from
The turf associated with this node
Vars | |
| clientside | Is this a clientside verb trigger? If so, this should be set to the name of the verb. |
|---|---|
| special | Special - Needs to update special keys on update. clientside implis special. |
Is this a clientside verb trigger? If so, this should be set to the name of the verb.
Special - Needs to update special keys on update. clientside implis special.
Procs | |
| can_use | Technically you shouldn't be doing any actions if you were sleeping either but... |
|---|---|
Technically you shouldn't be doing any actions if you were sleeping either but...
Vars | |
| blocked_languages | A list of blocked languages. Used to prevent understanding and speaking certain languages, ie for certain mobs, mutations etc. |
|---|---|
| language_menu | Handles displaying the language menu UI. |
| omnitongue | If true, overrides tongue limitations. |
| owner | Tracks the entity that owns the holder. |
| selected_language | Currently spoken language |
| spoken_languages | A list of languages that can be spoken. Tongue organ may also set limits beyond this list. |
| understood_languages | Understood languages. |
Procs | |
| New | Initializes, and copies in the languages from the current atom if available. |
| add_blocked_language | Adds a single language or list of languages to the blocked language list. |
| can_speak_language | Checks if you can speak the language. Tongue limitations should be supplied as an argument. |
| copy_languages | Copies all languages from the supplied atom/language holder. Source should be overridden when you +do not want the language overwritten by later atom updates or want to avoid blocked languages. |
| get_atom | Gets the atom, since we some times need to check if the tongue has limitations. |
| get_random_spoken_language | Gets a random spoken language, useful for forced speech and such. |
| get_random_understood_language | Gets a random understood language, useful for hallucinations and such. |
| get_selected_language | Returns selected language if it can be spoken, or decides, sets and returns a new selected language if possible. |
| grant_all_languages | Grants every language to understood and spoken, and gives omnitongue. |
| grant_language | Grants the supplied language. |
| has_language | Checks if you have the language. If spoken is true, only checks if you can speak the language. |
| open_language_menu | Opens a language menu reading from the language holder. |
| remove_all_languages | Removes every language and optionally sets omnitongue false. If a non default source is supplied, only removes that source. |
| remove_blocked_language | Removes a single language or list of languages from the blocked language list. |
| remove_language | Removes a single language or source, removing all sources returns the pre-removal state of the language. |
| update_atom_languages | Empties out the atom specific languages and updates them according to the supplied atoms language holder. |
A list of blocked languages. Used to prevent understanding and speaking certain languages, ie for certain mobs, mutations etc.
Handles displaying the language menu UI.
If true, overrides tongue limitations.
Tracks the entity that owns the holder.
Currently spoken language
A list of languages that can be spoken. Tongue organ may also set limits beyond this list.
Understood languages.
Initializes, and copies in the languages from the current atom if available.
Adds a single language or list of languages to the blocked language list.
Checks if you can speak the language. Tongue limitations should be supplied as an argument.
Copies all languages from the supplied atom/language holder. Source should be overridden when you +do not want the language overwritten by later atom updates or want to avoid blocked languages.
Gets the atom, since we some times need to check if the tongue has limitations.
Gets a random spoken language, useful for forced speech and such.
Gets a random understood language, useful for hallucinations and such.
Returns selected language if it can be spoken, or decides, sets and returns a new selected language if possible.
Grants every language to understood and spoken, and gives omnitongue.
Grants the supplied language.
Checks if you have the language. If spoken is true, only checks if you can speak the language.
Opens a language menu reading from the language holder.
Removes every language and optionally sets omnitongue false. If a non default source is supplied, only removes that source.
Removes a single language or list of languages from the blocked language list.
Removes a single language or source, removing all sources returns the pre-removal state of the language.
Empties out the atom specific languages and updates them according to the supplied atoms language holder.
Collect and command
Procs | |
| Check_lift_move | Check destination turfs |
|---|---|
| MoveLift | Moves the lift UP or DOWN, this is what users invoke with their hand. +This is a SAFE proc, ensuring every part of the lift moves SANELY. +It also locks controls for the (miniscule) duration of the movement, so the elevator cannot be broken by spamming. +Arguments: +going - UP or DOWN directions, where the lift should go. Keep in mind by this point checks of whether it should go up or down have already been done. +user - Whomever made the lift movement. |
| MoveLiftHorizontal | Moves the lift, this is what users invoke with their hand. +This is a SAFE proc, ensuring every part of the lift moves SANELY. +It also locks controls for the (miniscule) duration of the movement, so the elevator cannot be broken by spamming. |
| Rebuild_lift_plaform | Collect all bordered platforms |
| set_controls | Sets all lift parts's controls_locked variable. Used to prevent moving mid movement, or cooldowns. |
Check destination turfs
Moves the lift UP or DOWN, this is what users invoke with their hand. +This is a SAFE proc, ensuring every part of the lift moves SANELY. +It also locks controls for the (miniscule) duration of the movement, so the elevator cannot be broken by spamming. +Arguments: +going - UP or DOWN directions, where the lift should go. Keep in mind by this point checks of whether it should go up or down have already been done. +user - Whomever made the lift movement.
Moves the lift, this is what users invoke with their hand. +This is a SAFE proc, ensuring every part of the lift moves SANELY. +It also locks controls for the (miniscule) duration of the movement, so the elevator cannot be broken by spamming.
Collect all bordered platforms
Sets all lift parts's controls_locked variable. Used to prevent moving mid movement, or cooldowns.
Vars | |
| end_volume | Override for volume of end sound |
|---|---|
| start_volume | Override for volume of start sound |
Override for volume of end sound
Override for volume of start sound
The mafia controller handles the mafia minigame in progress. +It is first created when the first ghost signs up to play.
Vars | |
| all_roles | all roles in the game, dead or alive. check their game status if you only want living or dead. |
|---|---|
| current_map | template picked when the game starts. used for the name and desc reading |
| current_setup_text | Readable list of roles in current game, sent to the tgui panel for roles list > list("Psychologist x1", "Clown x2") |
| custom_setup | for debugging and testing a full game, or adminbuse. If this is not empty, it will use this as a setup. clears when game is over |
| day_phase_period | talk with others about the last night |
| debug | used for debugging in testing (doesn't put people out of the game, some other shit i forgot, who knows just don't set this in live) honestly kinda deprecated |
| first_day_phase_period | first day has no voting, and thus is shorter |
| judgement_abstain_votes | and these (judgement_innocent_votes, judgement_abstain_votes and judgement_guilty_votes) are the judgement phase votes, aka people sorting themselves into guilty and innocent, and "eh, i don't really care" lists. whichever has more inno or guilty wins! |
| judgement_lynch_period | guilty or innocent, we want a bit of time for players to process the outcome of the vote |
| judgement_phase_period | defend yourself! don't get lynched! sometimes skipped if nobody votes. |
| landmarks | spawn points for players, each one has a house |
| low_pop_mode | Prioritizes clients to have cool antag roles |
| map_deleter | map generation tool that deletes the current map after the game finishes |
| max_player | Max player count |
| next_phase_timer | current timer for phase |
| night_phase_period | mafia talk at night and pick someone to kill, some town roles use their actions, etc etc. |
| on_trial | current role on trial for the judgement phase, will die if guilty is greater than innocent |
| phase | what part of the game you're playing in. day phases, night phases, judgement phases, etc. |
| player_outfit | starting outfit for all mafia players. it's just a grey jumpsuit. |
| player_role_lookup | exists to speed up role retrieval, it's a dict. player_role_lookup[player ckey] will give you the role they play |
| required_player | Required player count |
| spectators | list of observers that should get game updates. |
| speed_up | if enabled, the game has fallen under half pop and is sped up |
| town_center_landmark | town center for when people get put on trial |
| turn | how long the game has gone on for, changes with every sunrise. day one, night one, day two, etc. |
| victory_lap_period | like the lynch period, players need to see what the other players in the game's roles were |
| votes | group voting on one person, like putting people to trial or choosing who to kill as mafia |
| voting_phase_period | vote someone to get put on trial |
Procs | |
| add_setup_role | Helper proc that adds a random role of a type to a setup. if it doesn't exist in the setup, it adds the path to the list and otherwise bumps the path in the list up one. unique roles can only get added once. |
| award_role | Lets the game award roles with all their checks and sanity, prevents achievements given out for debug games |
| basic_setup | Called when enough players have signed up to fill a setup. DOESN'T NECESSARILY MEAN THE GAME WILL START. |
| check_signups | Filters inactive player into a different list until they reconnect, and removes players who are no longer ghosts. |
| check_trial | Players have voted someone up, and now the person must defend themselves while the town votes innocent or guilty. |
| check_victory | Checks to see if a faction (or solo antagonist) has won. |
| create_bodies | Called when the game is setting up, AFTER map is loaded but BEFORE the phase timers start. Creates and places each role's body and gives the correct player key |
| display_votes | Adds mutable appearances to people who get publicly voted on (so not night votes) showing how many people are picking them +Arguments: |
| end_game | Cleans up the game, resetting variables back to the beginning and removing the map with the generator. |
| generate_random_setup | Returns a semirandom setup with 12 roles. balance not guaranteed! |
| get_random_voter | Returns a random person who voted for whatever vote (day vote, night kill vote) +Arguments: |
| get_vote_count | Returns how many people voted for the role, in whatever vote (day vote, night kill vote) +Arguments: |
| get_vote_winner | Returns whichever role got the most votes, in whatever vote (day vote, night kill vote) +returns null if no votes +Arguments: |
| lockdown | After the voting and judgement phases, the game goes to night shutting the windows and beginning night with a proc. |
| lynch | Players have voted innocent or guilty on the person on trial, and that person is now killed or returned home. |
| prepare_game | Triggers at beginning of the game when there is a confirmed list of valid, ready players. +Creates a 100% ready game that has NOT started (no players in bodies) +Followed by start game |
| reset_votes | Clears out the votes of a certain type (day votes, mafia kill votes) while leaving others untouched |
| resolve_night | The end of the night, and a series of signals for the order of events on a night. |
| send_home | Teenie helper proc to move players back to their home. +Used in the above, but also used in the debug button "send all players home" +Arguments: |
| start_day | How every day starts. |
| start_game | The game by this point is now all set up, and so we can put people in their bodies and start the first phase. |
| start_night | The actual start of night for players. Mostly info is given at the start of the night as the end of the night is when votes and actions are submitted and tried. |
| start_the_end | The end of the game is in two procs, because we want a bit of time for players to see eachothers roles. +Because of how check_victory works, the game is halted in other places by this point. |
| start_voting_phase | Players have finished the discussion period, and now must put up someone to the chopping block. |
| toggle_night_curtains | Shuts poddoors attached to mafia. +Arguments: |
| try_autostart | Called when someone signs up, and sees if there are enough people in the signup list to begin. |
| vote_for | Proc that goes off when players vote for something with their mafia panel. |
all roles in the game, dead or alive. check their game status if you only want living or dead.
template picked when the game starts. used for the name and desc reading
Readable list of roles in current game, sent to the tgui panel for roles list > list("Psychologist x1", "Clown x2")
for debugging and testing a full game, or adminbuse. If this is not empty, it will use this as a setup. clears when game is over
talk with others about the last night
used for debugging in testing (doesn't put people out of the game, some other shit i forgot, who knows just don't set this in live) honestly kinda deprecated
first day has no voting, and thus is shorter
and these (judgement_innocent_votes, judgement_abstain_votes and judgement_guilty_votes) are the judgement phase votes, aka people sorting themselves into guilty and innocent, and "eh, i don't really care" lists. whichever has more inno or guilty wins!
guilty or innocent, we want a bit of time for players to process the outcome of the vote
defend yourself! don't get lynched! sometimes skipped if nobody votes.
spawn points for players, each one has a house
Prioritizes clients to have cool antag roles
map generation tool that deletes the current map after the game finishes
Max player count
current timer for phase
mafia talk at night and pick someone to kill, some town roles use their actions, etc etc.
current role on trial for the judgement phase, will die if guilty is greater than innocent
what part of the game you're playing in. day phases, night phases, judgement phases, etc.
starting outfit for all mafia players. it's just a grey jumpsuit.
exists to speed up role retrieval, it's a dict. player_role_lookup[player ckey] will give you the role they play
Required player count
list of observers that should get game updates.
if enabled, the game has fallen under half pop and is sped up
town center for when people get put on trial
how long the game has gone on for, changes with every sunrise. day one, night one, day two, etc.
like the lynch period, players need to see what the other players in the game's roles were
group voting on one person, like putting people to trial or choosing who to kill as mafia
vote someone to get put on trial
Helper proc that adds a random role of a type to a setup. if it doesn't exist in the setup, it adds the path to the list and otherwise bumps the path in the list up one. unique roles can only get added once.
Lets the game award roles with all their checks and sanity, prevents achievements given out for debug games
+Arguments:
+Called when enough players have signed up to fill a setup. DOESN'T NECESSARILY MEAN THE GAME WILL START.
+Checks for a custom setup, if so gets the required players from that and if not it sets the player requirement to MAFIA_MAX_PLAYER_COUNT and generates one IF basic setup starts a game. +Checks if everyone signed up is an observer, and is still connected. If people aren't, they're removed from the list. +If there aren't enough players post sanity, it aborts. otherwise, it selects enough people for the game and starts preparing the game for real.
Filters inactive player into a different list until they reconnect, and removes players who are no longer ghosts.
+If a disconnected player gets a non-ghost mob and reconnects, they will be first put back into mafia_signup then filtered by that.
Players have voted someone up, and now the person must defend themselves while the town votes innocent or guilty.
+What players do in this phase:
+Checks to see if a faction (or solo antagonist) has won.
+Calculates in this order:
+Called when the game is setting up, AFTER map is loaded but BEFORE the phase timers start. Creates and places each role's body and gives the correct player key
+Notably:
+Adds mutable appearances to people who get publicly voted on (so not night votes) showing how many people are picking them +Arguments:
+Cleans up the game, resetting variables back to the beginning and removing the map with the generator.
Returns a semirandom setup with 12 roles. balance not guaranteed!
+please check the variables at the top of the proc to see how much of each role types it picks
Returns a random person who voted for whatever vote (day vote, night kill vote) +Arguments:
+Returns how many people voted for the role, in whatever vote (day vote, night kill vote) +Arguments:
+Returns whichever role got the most votes, in whatever vote (day vote, night kill vote) +returns null if no votes +Arguments:
+After the voting and judgement phases, the game goes to night shutting the windows and beginning night with a proc.
Players have voted innocent or guilty on the person on trial, and that person is now killed or returned home.
+What players do in this phase:
+Triggers at beginning of the game when there is a confirmed list of valid, ready players. +Creates a 100% ready game that has NOT started (no players in bodies) +Followed by start game
+Does the following:
+Clears out the votes of a certain type (day votes, mafia kill votes) while leaving others untouched
The end of the night, and a series of signals for the order of events on a night.
+Order of events, and what they mean:
+Teenie helper proc to move players back to their home. +Used in the above, but also used in the debug button "send all players home" +Arguments:
+How every day starts.
+What players do in this phase:
+The game by this point is now all set up, and so we can put people in their bodies and start the first phase.
+Does the following:
+The actual start of night for players. Mostly info is given at the start of the night as the end of the night is when votes and actions are submitted and tried.
+What players do in this phase:
+The end of the game is in two procs, because we want a bit of time for players to see eachothers roles. +Because of how check_victory works, the game is halted in other places by this point.
+What players do in this phase:
+Players have finished the discussion period, and now must put up someone to the chopping block.
+What players do in this phase:
+Shuts poddoors attached to mafia. +Arguments:
+Called when someone signs up, and sees if there are enough people in the signup list to begin.
+Only checks if everyone is actually valid to start (still connected and an observer) if there are enough players (basic_setup)
Proc that goes off when players vote for something with their mafia panel.
+If teams, it hides the tally overlay and only sends the vote messages to the team that is voting +Arguments:
+Vars | |
| actions | action = uses |
|---|---|
| game_status | so mafia have to also kill them to have a majority |
| hud_icon | icon state in the mafia dmi of the hud of the role, used in the mafia ui |
| revealed_icon | icon state in the mafia dmi of the hud of the role, used in the mafia ui |
| revealed_outfit | what they get equipped with when they are revealed |
| role_flags | role flags (special status of roles like detection immune) |
| role_type | how the random setup chooses which roles get put in |
| special_theme | set this to something cool for antagonists and their window will look different |
| vote_potential | how many votes your role COULD count for, now or later. used in checking victory |
| vote_power | how many votes submitted when you vote. used in voting, but not victory |
| winner_award | what the role gets when it wins a game |
Procs | |
| can_action | Tests if a visitor can actually perform an action on this role. Verbose on purpose! |
| kill | Tests kill immunities, if nothing prevents the kill, kills this role. |
action = uses
so mafia have to also kill them to have a majority
icon state in the mafia dmi of the hud of the role, used in the mafia ui
icon state in the mafia dmi of the hud of the role, used in the mafia ui
what they get equipped with when they are revealed
role flags (special status of roles like detection immune)
how the random setup chooses which roles get put in
set this to something cool for antagonists and their window will look different
how many votes your role COULD count for, now or later. used in checking victory
how many votes submitted when you vote. used in voting, but not victory
what the role gets when it wins a game
Tests if a visitor can actually perform an action on this role. Verbose on purpose!
+Will return false if: Your visit is roleblocked, they have perished, or your visit was interrupted
Tests kill immunities, if nothing prevents the kill, kills this role.
+Does not count as visiting, see visit proc.
Vars | |
| job_access_add | Add these accesses to jobs - type = list() |
|---|---|
| job_access_override | Override job accesses - type = list() - overrides everything else |
| job_access_remove | Remove these accesses from jobs - type = list() |
| job_blacklist | Jobs blacklist - if this is not empty, jobs in this aren't allowed. |
| job_override_spawn_positions | Job spawn position mod - type = number |
| job_override_total_positions | Job total position mod - type = number |
| job_whitelist | Jobs whitelist - if this is not empty, ONLY these jobs are allowed. Overrides blacklist. |
| orientation | Orientation to load in by default. |
| persistence_key | Persistence key: Defaults to ckey(map_name). If set to "NO_PERSIST", this map will have NO persistence. |
Procs | |
| WriteNextMap | badmin moments. Keep up to date with LoadConfig()! |
Add these accesses to jobs - type = list()
Override job accesses - type = list() - overrides everything else
Remove these accesses from jobs - type = list()
Jobs blacklist - if this is not empty, jobs in this aren't allowed.
Job spawn position mod - type = number
Job total position mod - type = number
Jobs whitelist - if this is not empty, ONLY these jobs are allowed. Overrides blacklist.
Orientation to load in by default.
Persistence key: Defaults to ckey(map_name). If set to "NO_PERSIST", this map will have NO persistence.
badmin moments. Keep up to date with LoadConfig()!
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.
Procs | |
| generate_terrain | This proc will be ran by areas on Initialize, and provides the areas turfs as argument to allow for generation. |
|---|---|
This proc will be ran by areas on Initialize, and provides the areas turfs as argument to allow for generation.
Vars | |
| birth_limit | How much neighbours does a dead cell need to become alive |
|---|---|
| closed_turf_types | Weighted list of the types that spawns if the turf is closed |
| death_limit | How little neighbours does a alive cell need to die |
| feature_spawn_chance | Base chance of spawning features |
| feature_spawn_list | Weighted list of extra features that can spawn in the area, such as geysers. |
| flora_spawn_chance | Base chance of spawning flora |
| flora_spawn_list | Weighted list of flora that can spawn in the area. |
| initial_closed_chance | Chance of cells starting closed |
| mob_spawn_chance | Base chance of spawning a mob |
| mob_spawn_list | Weighted list of mobs that can spawn in the area. |
| open_turf_types | Weighted list of the types that spawns if the turf is open |
| smoothing_iterations | Amount of smoothing iterations |
| string_gen | Unique ID for this spawner |
How much neighbours does a dead cell need to become alive
Weighted list of the types that spawns if the turf is closed
How little neighbours does a alive cell need to die
Base chance of spawning features
Weighted list of extra features that can spawn in the area, such as geysers.
Base chance of spawning flora
Weighted list of flora that can spawn in the area.
Chance of cells starting closed
Base chance of spawning a mob
Weighted list of mobs that can spawn in the area.
Weighted list of the types that spawns if the turf is open
Amount of smoothing iterations
Unique ID for this spawner
Vars | |
| perlin_zoom | Used to select "zoom" level into the perlin noise, higher numbers result in slower transitions |
|---|---|
| possible_biomes | 2D list of all biomes based on heat and humidity combos. |
Procs | |
| generate_terrain | Seeds the rust-g perlin noise with a random number. |
Used to select "zoom" level into the perlin noise, higher numbers result in slower transitions
2D list of all biomes based on heat and humidity combos.
Seeds the rust-g perlin noise with a random number.
An error report generated by /datum/parsed_map/proc/check_for_errors.
Vars | |
| loadable | Whether this map can be loaded safely despite the errors. |
|---|---|
Procs | |
| show_to | Show a rendered version of this report to a client. |
Whether this map can be loaded safely despite the errors.
Show a rendered version of this report to a client.
Procs | |
| load | Proc to trigger a load at a specific area. Calls on_map_loaded(T.z, loaded_bounds) afterwards. |
|---|---|
Proc to trigger a load at a specific area. Calls on_map_loaded(T.z, loaded_bounds) afterwards.
+@params
+Vars | |
| can_be_bought | Can the be legitimately purchased by the station? Used by hardcoded or pre-mapped shuttles like the lavaland or cargo shuttle. |
|---|---|
| credit_cost | How much does this shuttle cost the cargo budget to purchase? Put in terms of CARGO_CRATE_VALUE to properly scale the cost with the current balance of cargo's income. |
| movement_force | If set, overrides default movement_force on shuttle |
Can the be legitimately purchased by the station? Used by hardcoded or pre-mapped shuttles like the lavaland or cargo shuttle.
How much does this shuttle cost the cargo budget to purchase? Put in terms of CARGO_CRATE_VALUE to properly scale the cost with the current balance of cargo's income.
If set, overrides default movement_force on shuttle
Procs | |
| prerequisites_met | The joke is the number so no defines |
|---|---|
The joke is the number so no defines
Vars | |
| block_parry_data | Set this variable to something not null, this'll be the preferred unarmed parry in most cases if [can_martial_parry] is TRUE. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING! |
|---|---|
| can_martial_parry | Can we be used to unarmed parry? |
Procs | |
| active_parry_reflex_counter | Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack. |
| on_active_parry | Called when an attack is parried using this, whether or not the parry was successful. |
| on_projectile_hit | Gets called when a projectile hits the owner. Returning anything other than BULLET_ACT_HIT will stop the projectile from hitting the mob. |
Set this variable to something not null, this'll be the preferred unarmed parry in most cases if [can_martial_parry] is TRUE. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING!
Can we be used to unarmed parry?
Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
Called when an attack is parried using this, whether or not the parry was successful.
Gets called when a projectile hits the owner. Returning anything other than BULLET_ACT_HIT will stop the projectile from hitting the mob.
Subtype of CQC. Only used for the chef.
Procs | |
| can_use | Prevents use if the cook is not in the kitchen. |
|---|---|
Prevents use if the cook is not in the kitchen.
Procs | |
| dropKick | Keelhaul: Harm Grab combo, knocks people down, deals stamina damage while they're on the floor |
|---|---|
| launchKick | Crashing Wave Kick: Harm Disarm combo, throws people seven tiles backwards |
| strongPunch | Gnashing Teeth: Harm Harm, high force punch on every second harm punch, has a chance to crit for near triple damage |
Keelhaul: Harm Grab combo, knocks people down, deals stamina damage while they're on the floor
Crashing Wave Kick: Harm Disarm combo, throws people seven tiles backwards
Gnashing Teeth: Harm Harm, high force punch on every second harm punch, has a chance to crit for near triple damage
Vars | |
| alpha | Base alpha of the material, is used for greyscale icons. |
|---|---|
| armor_modifiers | Armor modifiers, multiplies an items normal armor vars by these amounts. |
| beauty_modifier | How beautiful is this material per unit. |
| cached_texture_filter | a cached icon for the texture filter |
| categories | Bitflags that influence how SSmaterials handles this material. +Materials "Traits". its a map of key = category | Value = Bool. Used to define what it can be used for |
| color | Base color of the material, is used for greyscale. Item isn't changed in color if this is null. |
| desc | A short description of the material. Not used anywhere, yet... |
| id | What the material is indexed by in the SSmaterials.materials list. Defaults to the type of the material. |
| integrity_modifier | This is a modifier for integrity, and resembles the strength of the material |
| item_sound_override | Can be used to override the sound items make, lets add some SLOSHing. |
| name | What the material is referred to as IC. |
| shard_type | What type of shard the material will shatter to |
| sheet_type | The type of sheet this material creates. This should be replaced as soon as possible by greyscale sheets |
| strength_modifier | This is a modifier for force, and resembles the strength of the material |
| texture_layer_icon_state | what texture icon state to overlay |
| turf_sound_override | Can be used to override the stepsound a turf makes. MORE SLOOOSH |
| value_per_unit | This is the amount of value per 1 unit of the material |
Procs | |
| Initialize | |
| on_accidental_mat_consumption | This proc is called when the mat is found in an item that's consumed by accident. see /obj/item/proc/on_accidental_consumption. +Arguments |
| on_applied | This proc is called when the material is added to an object. |
| on_applied_obj | This proc is called when the material is added to an object specifically. |
| on_removed | This proc is called when the material is removed from an object. |
| on_removed_obj | This proc is called when the material is removed from an object specifically. |
| return_composition | |
Base alpha of the material, is used for greyscale icons.
Armor modifiers, multiplies an items normal armor vars by these amounts.
How beautiful is this material per unit.
a cached icon for the texture filter
Bitflags that influence how SSmaterials handles this material. +Materials "Traits". its a map of key = category | Value = Bool. Used to define what it can be used for
Base color of the material, is used for greyscale. Item isn't changed in color if this is null.
A short description of the material. Not used anywhere, yet...
What the material is indexed by in the SSmaterials.materials list. Defaults to the type of the material.
This is a modifier for integrity, and resembles the strength of the material
Can be used to override the sound items make, lets add some SLOSHing.
What the material is referred to as IC.
What type of shard the material will shatter to
The type of sheet this material creates. This should be replaced as soon as possible by greyscale sheets
This is a modifier for force, and resembles the strength of the material
what texture icon state to overlay
Can be used to override the stepsound a turf makes. MORE SLOOOSH
This is the amount of value per 1 unit of the material
Handles initializing the material.
+Arugments:
+This proc is called when the mat is found in an item that's consumed by accident. see /obj/item/proc/on_accidental_consumption. +Arguments
+This proc is called when the material is added to an object.
This proc is called when the material is added to an object specifically.
This proc is called when the material is removed from an object.
This proc is called when the material is removed from an object specifically.
Returns the composition of this material.
+Mostly used for alloys when breaking down materials.
+Arguments:
+Vars | |
| ambitions | Lazy list for antagonists to set goals they wish to achieve, to be shown at the round-end report. |
|---|---|
| has_ever_been_ai | has this mind ever been an AI |
| original_character | Weakref to the character we spawned in as- either at roundstart or latejoin, so we know for persistent scars if we ended as the same person or not |
| skill_holder | Our skill holder. |
| special_statuses | A lazy list of statuses to add next to this mind in the traitor panel |
Procs | |
| action_skill_mod | Generic value modifier proc that uses one skill. +Args: |
| auto_gain_experience | Automatic skill increase, multiplied by skill affinity if existing. +Only works if skill is numerical or levelled.. |
| boost_skill_value_to | Boosts a skill to a value if not aobve |
| equip_traitor | |
| get_hijack_speed | Sets our can_hijack to the fastest speed our antag datums allow. |
| get_skill_affinity | Grabs our affinity for a skill. !!This is a multiplier!! |
| get_skill_level | Grabs the level of a skill. Only supported by skills with tiers or levels. |
| get_skill_value | Grabs the value of a skill. |
| item_action_skills_mod | Generic value modifier proc that uses several skills, intended for items. +Args: |
| remove_antags_for_borging | Remove the antagonists that should not persist when being borged |
| set_skill_value | Sets the value of a skill. |
Lazy list for antagonists to set goals they wish to achieve, to be shown at the round-end report.
has this mind ever been an AI
Weakref to the character we spawned in as- either at roundstart or latejoin, so we know for persistent scars if we ended as the same person or not
Our skill holder.
A lazy list of statuses to add next to this mind in the traitor panel
Generic value modifier proc that uses one skill. +Args:
+Automatic skill increase, multiplied by skill affinity if existing. +Only works if skill is numerical or levelled..
Boosts a skill to a value if not aobve
A mind proc for giving anyone an uplink. +arguments:
+Sets our can_hijack to the fastest speed our antag datums allow.
Grabs our affinity for a skill. !!This is a multiplier!!
Grabs the level of a skill. Only supported by skills with tiers or levels.
Grabs the value of a skill.
Generic value modifier proc that uses several skills, intended for items. +Args:
+ the value.
+
+Remove the antagonists that should not persist when being borged
Sets the value of a skill.
MODsuit theme, instanced once and then used by MODsuits to grab various statistics.
Vars | |
| allowed | Allowed items in the chestplate's suit storage. |
|---|---|
| armor | Armor shared across the MOD pieces. |
| cell_drain | How much battery power the MOD uses by just being on |
| complexity_max | How much modules can the MOD carry without malfunctioning. |
| default_skin | Default skin of the MOD. |
| desc | Description added to the MOD. |
| extended_desc | Extended description on examine_more |
| inbuilt_modules | List of inbuilt modules. These are different from the pre-equipped suits, you should mainly use these for unremovable modules with 0 complexity. |
| max_heat_protection_temperature | Max heat protection shared across the MOD pieces. |
| min_cold_protection_temperature | Max cold protection shared across the MOD pieces. |
| module_blacklist | Modules blacklisted from the MOD. |
| name | Theme name for the MOD. |
| permeability_coefficient | Permeability shared across the MOD pieces. |
| resistance_flags | Resistance flags shared across the MOD pieces. |
| siemens_coefficient | Siemens shared across the MOD pieces. |
| skins | List of skins with their appropriate clothing flags. |
| slowdown_active | Slowdown of the MOD when active. |
| slowdown_inactive | Slowdown of the MOD when not active. |
| ui_theme | Theme used by the MOD TGUI. |
Allowed items in the chestplate's suit storage.
Armor shared across the MOD pieces.
How much battery power the MOD uses by just being on
How much modules can the MOD carry without malfunctioning.
Default skin of the MOD.
Description added to the MOD.
Extended description on examine_more
List of inbuilt modules. These are different from the pre-equipped suits, you should mainly use these for unremovable modules with 0 complexity.
Max heat protection shared across the MOD pieces.
Max cold protection shared across the MOD pieces.
Modules blacklisted from the MOD.
Theme name for the MOD.
Permeability shared across the MOD pieces.
Resistance flags shared across the MOD pieces.
Siemens shared across the MOD pieces.
List of skins with their appropriate clothing flags.
Slowdown of the MOD when active.
Slowdown of the MOD when not active.
Theme used by the MOD TGUI.
Vars | |
| mood_change | For descriptions, use the span classes bold nicegreen, nicegreen, none, warning and boldwarning in order from great to horrible. |
|---|---|
For descriptions, use the span classes bold nicegreen, nicegreen, none, warning and boldwarning in order from great to horrible.
Vars | |
| absolute_max_tiles_per_second | Absolute max tiles we can boost to |
|---|---|
| blacklisted_movetypes | Movetypes this never applies to |
| complex_calculation | Next two variables depend on this: Should we do advanced calculations? |
| conflicts_with | Other modification datums this conflicts with. |
| id | Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID. |
| max_tiles_per_second_boost | Max tiles per second we can boost |
| movetypes | Movetypes this applies to |
| multiplicative_slowdown | Multiplicative slowdown |
| priority | Determines order. Lower priorities are applied first. |
| variable | Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason) |
Procs | |
| apply_multiplicative | Returns new multiplicative movespeed after modification. |
Absolute max tiles we can boost to
Movetypes this never applies to
Next two variables depend on this: Should we do advanced calculations?
Other modification datums this conflicts with.
Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID.
Max tiles per second we can boost
Movetypes this applies to
Multiplicative slowdown
Determines order. Lower priorities are applied first.
Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason)
Returns new multiplicative movespeed after modification.
Procs | |
| apply_multiplicative | for speed reasons this is sorta copypasty. |
|---|---|
for speed reasons this is sorta copypasty.
Vars | |
| chem_to_add | Which chem is added (lipo default) and how much? |
|---|---|
Which chem is added (lipo default) and how much?
Procs | |
| break_an_arm | Checks damage of a hulk's arm and applies bone wounds as necessary. |
|---|---|
Checks damage of a hulk's arm and applies bone wounds as necessary.
+Called by specific atoms being attacked, such as walls. If an atom +does not call this proc, than punching that atom will not cause +arm breaking (even if the atom deals recoil damage to hulks). +Arguments: +arg1 is the arm to evaluate damage of and possibly break.
Vars | |
| corruptable | Corruptable - able to have code/configuration changed |
|---|---|
| error_flicking | error flicking - able to be randomly toggled by errors |
| extra_settings | Don't ever override this or I will come to your house and stand menacingly behind a bush |
| immutable | immutable - cannot be overwritten by other programs |
Procs | |
| copy_extra_settings_to | Copy of the list instead of direct reference for obvious reasons |
| get_extra_setting_value | You probably shouldn't be overriding this one, but I'm not a cop. |
| get_extra_settings_frontend | Used for getting information about the extra settings to the frontend |
| is_permanent | Checks if we're a permanent program |
| register_extra_settings | Register extra settings by overriding this. +extra_settings[name] = new typepath() for each extra setting |
| self_destruct | Attempts to destroy ourselves |
| set_extra_setting | You can override this if you need to have special behavior after setting certain settings. |
Corruptable - able to have code/configuration changed
error flicking - able to be randomly toggled by errors
Don't ever override this or I will come to your house and stand menacingly behind a bush
immutable - cannot be overwritten by other programs
Copy of the list instead of direct reference for obvious reasons
You probably shouldn't be overriding this one, but I'm not a cop.
Used for getting information about the extra settings to the frontend
Checks if we're a permanent program
Register extra settings by overriding this. +extra_settings[name] = new typepath() for each extra setting
Attempts to destroy ourselves
You can override this if you need to have special behavior after setting certain settings.
Vars | |
| active_clients | chat clients who are active or minimized |
|---|---|
| muted_clients | clients muted by operator |
| offline_clients | chat clients who have exited out of the program. |
chat clients who are active or minimized
clients muted by operator
chat clients who have exited out of the program.
Vars | |
| doors_required | How many doors that need to be opened using the gloves to pass the objective |
|---|---|
How many doors that need to be opened using the gloves to pass the objective
Vars | |
| hijack_speed_override | Overrides the hijack speed of any antagonist datum it is on ONLY, no other datums are impacted. |
|---|---|
Overrides the hijack speed of any antagonist datum it is on ONLY, no other datums are impacted.
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.
+You can also specify an outfit datum on a job to have it auto equipped to the mob on join
+/mob/living/carbon/human/proc/equipOutfit(outfit) is the mob level proc to equip an outfit +and you pass it the relevant datum outfit
+outfits can also be saved as json blobs downloadable by a client and then can be uploaded +by that user to recreate the outfit, this is used by admins to allow for custom event outfits +that can be restored at a later date
Vars | |
| accessory | Any clothing accessory item |
|---|---|
| back | Type path of item to go in back slot |
| backpack_contents | list of items that should go in the backpack of the user |
| belt | Type path of item to go in belt slot |
| box | Internals box. Will be inserted at the start of backpack_contents |
| chameleon_extras | extra types for chameleon outfit changes, mostly guns |
| ears | Type path of item to go in ears slot |
| glasses | Type path of item to go in the glasses slot |
| gloves | Type path of item to go in gloves slot |
| head | Type path of item to go in head slot |
| id | Type path of item to go in the idcard slot |
| implants | Any implants the mob should start implanted with |
| internals_slot | ID of the slot containing a gas tank |
| l_hand | Type path of item to go in the right hand |
| l_pocket | Type path of item for left pocket slot |
| mask | Type path of item to go in mask slot |
| name | Name of the outfit (shows up in the equip admin verb) |
| neck | Type path of item to go in neck slot |
| r_pocket | Type path of item for right pocket slot |
| shoes | Type path of item to go in shoes slot |
| suit | Type path of item to go in suit slot |
| suit_store | Type path of item to go in suit storage slot |
| toggle_helmet | Should the toggle helmet proc be called on the helmet during equip |
| undershirt | Any undershirt. While on humans it is a string, here we use paths to stay consistent with the rest of the equips. |
| uniform | Type path of item to go in uniform slot |
Procs | |
| apply_fingerprints | Apply a fingerprint from the passed in human to all items in the outfit |
| copy_from | Copy most vars from another outfit to this one |
| equip | Equips all defined types and paths to the mob passed in |
| get_chameleon_disguise_info | Return a list of all the types that are required to disguise as this outfit type |
| get_json_data | Return a json list of this outfit |
| load_from | Create an outfit datum from a list of json data |
| post_equip | Called after the equip proc has finished |
| pre_equip | Called at the start of the equip proc |
| save_to_file | Prompt the passed in mob client to download this outfit as a json blob |
Any clothing accessory item
Type path of item to go in back slot
list of items that should go in the backpack of the user
+Format of this list should be: list(path=count,otherpath=count)
Type path of item to go in belt slot
Internals box. Will be inserted at the start of backpack_contents
extra types for chameleon outfit changes, mostly guns
+Format of this list is (typepath, typepath, typepath)
+These are all added and returns in the list for get_chamelon_diguise_info proc
Type path of item to go in ears slot
Type path of item to go in the glasses slot
Type path of item to go in gloves slot
Type path of item to go in head slot
Type path of item to go in the idcard slot
Any implants the mob should start implanted with
+Format of this list is (typepath, typepath, typepath)
ID of the slot containing a gas tank
Type path of item to go in the right hand
Type path of item for left pocket slot
Type path of item to go in mask slot
Name of the outfit (shows up in the equip admin verb)
Type path of item to go in neck slot
Type path of item for right pocket slot
Type path of item to go in shoes slot
Type path of item to go in suit slot
Type path of item to go in suit storage slot
+(make sure it's valid for that suit)
Should the toggle helmet proc be called on the helmet during equip
Any undershirt. While on humans it is a string, here we use paths to stay consistent with the rest of the equips.
Type path of item to go in uniform slot
Apply a fingerprint from the passed in human to all items in the outfit
+Used for forensics setup when the mob is first equipped at roundstart +essentially calls add_fingerprint to every defined item on the human
Copy most vars from another outfit to this one
Equips all defined types and paths to the mob passed in
+Extra Arguments
+If visualsOnly is true, you can omit any work that doesn't visually appear on the character sprite
Return a list of all the types that are required to disguise as this outfit type
Return a json list of this outfit
Create an outfit datum from a list of json data
Called after the equip proc has finished
+All items are on the mob at this point, use this proc to toggle internals +fiddle with id bindings and accesses etc
+Extra Arguments
+If visualsOnly is true, you can omit any work that doesn't visually appear on the character sprite
Called at the start of the equip proc
+Override to change the value of the slots depending on client prefs, species and +other such sources of change
+Extra Arguments
+If visualsOnly is true, you can omit any work that doesn't visually appear on the character sprite
Prompt the passed in mob client to download this outfit as a json blob
Holds parallax information.
Vars | |
| layers | Parallax layers |
|---|---|
| objects | List of parallax objects - these are cloned to a parallax holder using Clone on each. |
Procs | |
| GetObjects | Gets a new version of the objects inside - used when applying to a holder. |
Parallax layers
List of parallax objects - these are cloned to a parallax holder using Clone on each.
Gets a new version of the objects inside - used when applying to a holder.
Holds all the information about a client's parallax
+Not on mob because parallax is area based, not mob based.
+How parallax works:
+Vars | |
| cached_eye | Eye we were last anchored to - used to detect eye changes |
|---|---|
| forced_eye | force this eye as the "real" eye - useful for secondary maps |
| last | last turf loc |
| last_area | last area - for parallax scrolling/loop animations |
| layers | all layers |
| owner | Client that owns us |
| parallax | The parallax object we're currently rendering |
| planemaster_override | override planemaster we manipulate for turning and other effects |
| scroll_speed | current scroll speed in DS per scroll |
| scroll_turn | current scroll turn - applied after angle. if angle is 0 (picture moving north) and turn is 90, it would be like if you turned your viewport 90 deg clockwise. |
| scrolling | currently scrolling? |
| secondary_map | are we not on the main map? if so, put map id here |
| vis | vis contents |
| vis_holder | Holder object for vis |
Procs | |
| Animation | Runs a modifier to parallax as an animation. |
| Eye | Gets the eye we should be centered on |
| GetPlaneMaster | Gets the base parallax planemaster for things like turning |
| HardResetAnimations | fully resets animation state |
| StopScrolling | Smoothly stops the animation, turning to a certain angle as needed. |
| Sync | Syncs us to our parallax objects. Does NOT check if we should have those objects, that's Reset()'s job. |
| UpdateMotion | Updates motion if needed |
Eye we were last anchored to - used to detect eye changes
force this eye as the "real" eye - useful for secondary maps
last turf loc
last area - for parallax scrolling/loop animations
all layers
Client that owns us
The parallax object we're currently rendering
override planemaster we manipulate for turning and other effects
current scroll speed in DS per scroll
current scroll turn - applied after angle. if angle is 0 (picture moving north) and turn is 90, it would be like if you turned your viewport 90 deg clockwise.
currently scrolling?
are we not on the main map? if so, put map id here
vis contents
Holder object for vis
Runs a modifier to parallax as an animation.
+@params +speed - ds per loop +turn - angle clockwise from north to turn the motion to +windup - ds to spend on windups. 0 for immediate. +turn_speed - ds to spend on turning. 0 for immediate.
Gets the eye we should be centered on
Gets the base parallax planemaster for things like turning
fully resets animation state
Smoothly stops the animation, turning to a certain angle as needed.
Syncs us to our parallax objects. Does NOT check if we should have those objects, that's Reset()'s job.
+Doesn't move/update positions/screen locs either.
+Also ensures movedirs are correct for the eye's pos.
Updates motion if needed
Vars | |
| bounds | Offset bounds. Same as parsed_bounds until load(). |
|---|---|
| parsed_bounds | Unoffset bounds. Null on parse failure. |
Procs | |
| New | Parse a map, possibly cropping it. +Do not use the crop function unless strictly necessary. +WARNING: Crop function crops based on the tiles you'd see in the map editor. If you're planning to load it in in a different orientation later, you better have done the math. +It's recommended that you do not crop using this at all. |
| check_for_errors | Check a parsed but not yet loaded map for errors. |
| load | Load the parsed map into the world. See /proc/load_map for arguments. |
Offset bounds. Same as parsed_bounds until load().
Unoffset bounds. Null on parse failure.
Parse a map, possibly cropping it. +Do not use the crop function unless strictly necessary. +WARNING: Crop function crops based on the tiles you'd see in the map editor. If you're planning to load it in in a different orientation later, you better have done the math. +It's recommended that you do not crop using this at all.
Check a parsed but not yet loaded map for errors.
+Returns a /datum/map_report if there are errors or FALSE otherwise.
Load the parsed map into the world. See /proc/load_map for arguments.
The datum used to handle the JPS pathfinding, completely self-contained
Vars | |
| avoid | A specific turf we're avoiding, like if a mulebot is being blocked by someone t-posing in a doorway we're trying to get through |
|---|---|
| caller | The thing that we're actually trying to path for |
| end | The turf we're trying to path to (note that this won't track a moving target) |
| id | An ID card representing what access we have and what doors we can open. Its location relative to the pathing atom is irrelevant |
| max_distance | I don't know what this does vs , but they limit how far we can search before giving up on a path |
| mintargetdist | How far away we have to get to the end target before we can call it quits |
| open | The open list/stack we pop nodes out from (TODO: make this a normal list and macro-ize the heap operations to reduce proc overhead) |
| path | The list we compile at the end if successful to pass back |
| simulated_only | Space is big and empty, if this is TRUE then we ignore pathing through unsimulated tiles |
| sources | An assoc list that serves as the closed list & tracks what turfs came from where. Key is the turf, and the value is what turf it came from |
| start | The turf where we started at |
Procs | |
| diag_scan_spec | For performing diagonal scans from a given starting turf. |
| lateral_scan_spec | For performing lateral scans from a given starting turf. |
| search | search() is the proc you call to kick off and handle the actual pathfinding, and kills the pathfind datum instance when it's done. |
| unwind_path | Called when we've hit the goal with the node that represents the last tile, then sets the path var to that path so it can be returned by datum/pathfind/proc/search |
A specific turf we're avoiding, like if a mulebot is being blocked by someone t-posing in a doorway we're trying to get through
The thing that we're actually trying to path for
The turf we're trying to path to (note that this won't track a moving target)
An ID card representing what access we have and what doors we can open. Its location relative to the pathing atom is irrelevant
I don't know what this does vs , but they limit how far we can search before giving up on a path
How far away we have to get to the end target before we can call it quits
The open list/stack we pop nodes out from (TODO: make this a normal list and macro-ize the heap operations to reduce proc overhead)
The list we compile at the end if successful to pass back
Space is big and empty, if this is TRUE then we ignore pathing through unsimulated tiles
An assoc list that serves as the closed list & tracks what turfs came from where. Key is the turf, and the value is what turf it came from
The turf where we started at
For performing diagonal scans from a given starting turf.
+Unlike lateral scans, these only are called from the main search loop, so we don't need to worry about returning anything, +though we do need to handle the return values of our lateral subscans of course.
+Arguments:
+For performing lateral scans from a given starting turf.
+These scans are called from both the main search loop, as well as subscans for diagonal scans, and they treat finding interesting turfs slightly differently. +If we're doing a normal lateral scan, we already have a parent node supplied, so we just create the new node and immediately insert it into the heap, ezpz. +If we're part of a subscan, we still need for the diagonal scan to generate a parent node, so we return a node datum with just the turf and let the diag scan +proc handle transferring the values and inserting them into the heap.
+Arguments:
+search() is the proc you call to kick off and handle the actual pathfinding, and kills the pathfind datum instance when it's done.
+If a valid path was found, it's returned as a list. If invalid or cross-z-level params are entered, or if there's no valid path found, we +return null, which /proc/get_path_to translates to an empty list (notable for simple bots, who need empty lists)
Called when we've hit the goal with the node that represents the last tile, then sets the path var to that path so it can be returned by datum/pathfind/proc/search
Vars | |
| footstep_type | footstep type override for both shoeless and not footstep sounds. |
|---|---|
footstep type override for both shoeless and not footstep sounds.
Procs | |
| get_name | These flags tells the genemodder if we want the gene to be extractable, only removable or neither. |
|---|---|
These flags tells the genemodder if we want the gene to be extractable, only removable or neither.
Procs | |
| on_grow | This proc triggers when the tray processes and a roll is sucessful, the success chance scales with production. |
|---|---|
This proc triggers when the tray processes and a roll is sucessful, the success chance scales with production.
Vars | |
| googly | Our googly eyes appearance. |
|---|---|
Our googly eyes appearance.
Procs | |
| add_cable | ... delete it |
|---|---|
| add_machine | ... delete it |
... delete it
... delete it
Vars | |
| auto_fit_viewport | Should we automatically fit the viewport? |
|---|---|
| blueberry_inflation | Blueberry Inflation |
| broadcast_login_logout | If we want to broadcast deadchat connect/disconnect messages |
| chair_breakage | At what weight will you start to break chairs? |
| characters_joined_as | Characters they have joined the round under - Lazylist of names |
| chat_on_map | Runechat preference. If true, certain messages will be displayed on the map, not ust on the chat area. Boolean. |
| deadmin | A separate variable for deadmin toggles, only deals with those. |
| dnr_triggered | did they DNR? used to prevent respawns. |
| extreme_fatness_vulnerable | Similar to fatness_vulnerable, but with more extreme effects such as transformation/hypno. |
| fatness_vulnerable | Are items that only affect those at high weights able to affect the player? |
| favorite_outfits | What outfit typepaths we've favorited in the SelectEquipment menu |
| gear_points | loadout stuff |
| hardcore_survival_score | This var stores the amount of points the owner will get for making it out alive. |
| hearted | Someone thought we were nice! We get a little heart in OOC until we join the server past the below time (we can keep it until the end of the round otherwise) |
| hearted_until | If we have a hearted commendations, we honor it every time the player loads preferences until this time has been passed |
| helplessness_clothing_back | What fatness level prevents the user from wearing anything on their back |
| helplessness_clothing_jumpsuit | What fatness level prevents the user from wearing jumpsuits |
| helplessness_clothing_misc | What fatness level prevents the user from wearing non-jumpsuit clothing |
| helplessness_clumsy | What fatness level makes the user clumsy? |
| helplessness_hidden_face | What fatness level makes the user's face unrecognizable. |
| helplessness_immobile_arms | What fatness level, makes the user unable to use their arms? |
| helplessness_mute | What fatness level makes the user unable to speak? |
| helplessness_nearsighted | What fatness level makes the user nearsighted |
| helplessness_no_buckle | What fatness level prevents the user from being buckled to anything? |
| helplessness_no_movement | What fatness level disables movement? |
| key_bindings | Custom Keybindings |
| last_id | Last CID the person was seen on |
| last_ip | Last IP the person was seen on |
| log_clicks | Do we log their clicks to disk? |
| long_strip_menu | Strip menu style |
| max_chat_length | Limit preference on the size of the message. Requires chat_on_map to have effect. |
| max_weight | What is the max weight that the person wishes to be? If set to FALSE, there will be no max weight |
| medical_records | Medical record note section |
| modless_key_bindings | List with a key string associated to a list of keybindings. Unlike key_bindings, this one operates on raw key, allowing for binding a key that triggers regardless of if a modifier is depressed as long as the raw key is sent. |
| muted | Flags for admin mutes |
| noncon_weight_gain | Does the person wish to be involved with non-con weight gain events? |
| object_tf | Can the person be transformed into an object? |
| persistent_scars | If we have persistent scars enabled |
| pixel_size | What size should pixels be displayed as? 0 is strech to fit |
| playtime_reward_cloak | The playtime_reward_cloak variable 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. |
| respawn_did_cryo | did they cryo on their last ghost? |
| respawn_restrictions_active | Are we currently subject to respawn restrictions? Usually set by us using the "respawn" verb, but can be lifted by admins. |
| respawn_time_of_death | time of death we consider for respawns |
| scaling_method | What scaling method should we use? |
| scars_index | Which of the 5 persistent scar slots we randomly roll to load for this round, if enabled. Actually rolled in [/datum/preferences/proc/load_character(slot)] |
| scars_list | We have 5 slots for persistent scars, if enabled we pick a random one to load (empty by default) and scars at the end of the shift if we survived as our original person |
| security_records | Security record note section |
| see_chat_non_mob | Whether non-mob messages will be displayed, such as machine vendor announcements. Requires chat_on_map to have effect. Boolean. |
| see_rc_emotes | Whether emotes will be displayed on runechat. Requires chat_on_map to have effect. Boolean. |
| slots_joined_as | Slots they have joined the round under - Lazylist of numbers |
| stuckage | At what weight will you start to get stuck in airlocks? |
| trouble_seeker | Does the person want to get into confrontation? |
| weight_gain_chems | Weight gain from chems |
| weight_gain_extreme | Extreme weight gain |
| weight_gain_food | Weight gain from food |
| weight_gain_items | Weight gain from items |
| weight_gain_magic | Weight gain from magic |
| weight_gain_nanites | Weight gain from nanites |
| weight_gain_permanent | Permanent weight gain |
| weight_gain_persistent | Persistant fatness |
| weight_gain_viruses | Weight gain from viruses |
| weight_gain_weapons | Weight gain from weapons |
| widescreenpref | Should we be in the widescreen mode set by the config? |
Procs | |
| chose_weight | Prompts the user to choose a weight and returns said weight. |
| force_reset_keybindings | Resets the client's keybindings. Asks them for which |
| force_reset_keybindings_direct | Does the actual reset |
Should we automatically fit the viewport?
Blueberry Inflation
If we want to broadcast deadchat connect/disconnect messages
At what weight will you start to break chairs?
Characters they have joined the round under - Lazylist of names
Runechat preference. If true, certain messages will be displayed on the map, not ust on the chat area. Boolean.
A separate variable for deadmin toggles, only deals with those.
did they DNR? used to prevent respawns.
Similar to fatness_vulnerable, but with more extreme effects such as transformation/hypno.
Are items that only affect those at high weights able to affect the player?
What outfit typepaths we've favorited in the SelectEquipment menu
loadout stuff
This var stores the amount of points the owner will get for making it out alive.
Someone thought we were nice! We get a little heart in OOC until we join the server past the below time (we can keep it until the end of the round otherwise)
If we have a hearted commendations, we honor it every time the player loads preferences until this time has been passed
What fatness level prevents the user from wearing anything on their back
What fatness level prevents the user from wearing jumpsuits
What fatness level prevents the user from wearing non-jumpsuit clothing
What fatness level makes the user clumsy?
What fatness level makes the user's face unrecognizable.
What fatness level, makes the user unable to use their arms?
What fatness level makes the user unable to speak?
What fatness level makes the user nearsighted
What fatness level prevents the user from being buckled to anything?
What fatness level disables movement?
Custom Keybindings
Last CID the person was seen on
Last IP the person was seen on
Do we log their clicks to disk?
Strip menu style
Limit preference on the size of the message. Requires chat_on_map to have effect.
What is the max weight that the person wishes to be? If set to FALSE, there will be no max weight
Medical record note section
List with a key string associated to a list of keybindings. Unlike key_bindings, this one operates on raw key, allowing for binding a key that triggers regardless of if a modifier is depressed as long as the raw key is sent.
Flags for admin mutes
Does the person wish to be involved with non-con weight gain events?
Can the person be transformed into an object?
If we have persistent scars enabled
What size should pixels be displayed as? 0 is strech to fit
The playtime_reward_cloak variable 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.
did they cryo on their last ghost?
Are we currently subject to respawn restrictions? Usually set by us using the "respawn" verb, but can be lifted by admins.
time of death we consider for respawns
What scaling method should we use?
Which of the 5 persistent scar slots we randomly roll to load for this round, if enabled. Actually rolled in [/datum/preferences/proc/load_character(slot)]
We have 5 slots for persistent scars, if enabled we pick a random one to load (empty by default) and scars at the end of the shift if we survived as our original person
Security record note section
Whether non-mob messages will be displayed, such as machine vendor announcements. Requires chat_on_map to have effect. Boolean.
Whether emotes will be displayed on runechat. Requires chat_on_map to have effect. Boolean.
Slots they have joined the round under - Lazylist of numbers
At what weight will you start to get stuck in airlocks?
Does the person want to get into confrontation?
Weight gain from chems
Extreme weight gain
Weight gain from food
Weight gain from items
Weight gain from magic
Weight gain from nanites
Permanent weight gain
Persistant fatness
Weight gain from viruses
Weight gain from weapons
Should we be in the widescreen mode set by the config?
Prompts the user to choose a weight and returns said weight.
Resets the client's keybindings. Asks them for which
Does the actual reset
Vars | |
| bar | The progress bar visual element. |
|---|---|
| bar_loc | The target where this progress bar is applied and where it is shown. |
| goal | Effectively the number of steps the progress bar will need to do before reaching completion. |
| last_progress | Control check to see if the progress was interrupted before reaching its goal. |
| listindex | Variable to ensure smooth visual stacking on multiple progress bars. |
| user | The mob whose client sees the progress bar. |
| user_client | The client seeing the progress bar. |
Procs | |
| add_prog_bar_image_to_client | Adds a smoothly-appearing progress bar image to the player's screen. |
| clean_user_client | Removes the progress bar image from the user_client and nulls the variable, if it exists. |
| end_progress | Called on progress end, be it successful or a failure. Wraps up things to delete the datum and bar. |
| on_user_delete | Called right before the user's Destroy() |
| on_user_login | Called by user's Login(), it transfers the progress bar image to the new client. |
| update | Updates the progress bar image visually. |
The progress bar visual element.
The target where this progress bar is applied and where it is shown.
Effectively the number of steps the progress bar will need to do before reaching completion.
Control check to see if the progress was interrupted before reaching its goal.
Variable to ensure smooth visual stacking on multiple progress bars.
The mob whose client sees the progress bar.
The client seeing the progress bar.
Adds a smoothly-appearing progress bar image to the player's screen.
Removes the progress bar image from the user_client and nulls the variable, if it exists.
Called on progress end, be it successful or a failure. Wraps up things to delete the datum and bar.
Called right before the user's Destroy()
Called by user's Login(), it transfers the progress bar image to the new client.
Updates the progress bar image visually.
Qdel Item: Holds statistics on each type that passes thru qdel
Vars | |
| destroy_time | Total amount of milliseconds spent processing this type's Destroy() |
|---|---|
| failures | Times it was queued for soft deletion but failed to soft delete. |
| hard_delete_max | Highest time spent hard_deleting this in ms. |
| hard_delete_time | Total amount of milliseconds spent hard deleting this type. |
| hard_deletes | Different from failures because it also includes QDEL_HINT_HARDDEL deletions |
| hard_deletes_over_threshold | Number of times hard deletes took longer than the configured threshold |
| name | Holds the type as a string for this type |
| no_hint | Number of times it's not even bother to give a qdel hint |
| no_respect_force | Number of times it's not respected force=TRUE |
| qdel_flags | Flags related to this type's trip thru qdel. |
| qdels | Total number of times it's passed thru qdel. |
| slept_destroy | Number of times it's slept in its destroy |
Total amount of milliseconds spent processing this type's Destroy()
Times it was queued for soft deletion but failed to soft delete.
Highest time spent hard_deleting this in ms.
Total amount of milliseconds spent hard deleting this type.
Different from failures because it also includes QDEL_HINT_HARDDEL deletions
Number of times hard deletes took longer than the configured threshold
Holds the type as a string for this type
Number of times it's not even bother to give a qdel hint
Number of times it's not respected force=TRUE
Flags related to this type's trip thru qdel.
Total number of times it's passed thru qdel.
Number of times it's slept in its destroy
Vars | |
| antag_removal_text | Text will be given to the quirk holder if they get an antag that has it blacklisted. |
|---|---|
| desc | The description of the quirk |
| gain_text | Text displayed when this quirk is assigned to a mob (and not transferred) |
| lose_text | Text displayed when this quirk is removed from a mob (and not transferred) |
| mail_goodies | A lazylist of items people can receive from mail who have this quirk enabled +The base weight for the each quirk's mail goodies list to be selected is 5 +then the item selected is determined by pick(selected_quirk.mail_goodies) |
| medical_record_text | This text will appear on medical records for the trait. |
| mob_trait | if applicable, apply and remove this mob trait |
| name | The name of the quirk |
| on_spawn_immediate | should we immediately call on_spawn or add a timer to trigger |
| quirk_holder | Reference to the mob currently tied to this quirk datum. Quirks are not singletons. |
| value | What the quirk is worth in preferences, zero = neutral / free |
Text will be given to the quirk holder if they get an antag that has it blacklisted.
The description of the quirk
Text displayed when this quirk is assigned to a mob (and not transferred)
Text displayed when this quirk is removed from a mob (and not transferred)
A lazylist of items people can receive from mail who have this quirk enabled +The base weight for the each quirk's mail goodies list to be selected is 5 +then the item selected is determined by pick(selected_quirk.mail_goodies)
This text will appear on medical records for the trait.
if applicable, apply and remove this mob trait
The name of the quirk
should we immediately call on_spawn or add a timer to trigger
Reference to the mob currently tied to this quirk datum. Quirks are not singletons.
What the quirk is worth in preferences, zero = neutral / free
Vars | |
| max_scars | the maximum amount of scars we can generate |
|---|---|
| min_scars | the minimum amount of scars we can generate |
the maximum amount of scars we can generate
the minimum amount of scars we can generate
Procs | |
| on_holder_moved | Called when the quirk holder moves. Updates the quirk holder's mood. |
|---|---|
Called when the quirk holder moves. Updates the quirk holder's mood.
Vars | |
| linked_action1 | What action is linked with this quirk? |
|---|---|
What action is linked with this quirk?
Procs | |
| on_hydroponics_apply | New, standardized method for chemicals to affect hydroponics trays. +Defined on a per-chem level as opposed to by the tray. +Can affect plant's health, stats, or cause the plant to react in certain ways. |
|---|---|
New, standardized method for chemicals to affect hydroponics trays. +Defined on a per-chem level as opposed to by the tray. +Can affect plant's health, stats, or cause the plant to react in certain ways.
Vars | |
| significant | Whether we've had at least WOUND_DETERMINATION_SEVERE (2.5u) of determination at any given time. No damage slowdown immunity or indication we're having a second wind if it's just a single moderate wound |
|---|---|
Whether we've had at least WOUND_DETERMINATION_SEVERE (2.5u) of determination at any given time. No damage slowdown immunity or indication we're having a second wind if it's just a single moderate wound
Procs | |
| reaction_turf | What kind of slipperiness gets added to turfs. |
|---|---|
What kind of slipperiness gets added to turfs.
Vars | |
| clot_coeff_per_wound | If we have multiple bleeding wounds, we count the number of bleeding wounds, then multiply the clot rate by this^(n) before applying it to each cut, so more cuts = less clotting per cut (though still more total clotting) |
|---|---|
| clot_rate | How much base clotting we do per bleeding wound, multiplied by the below number for each bleeding wound |
If we have multiple bleeding wounds, we count the number of bleeding wounds, then multiply the clot rate by this^(n) before applying it to each cut, so more cuts = less clotting per cut (though still more total clotting)
How much base clotting we do per bleeding wound, multiplied by the below number for each bleeding wound
Procs | |
| metal_morph | turn an object into a special material |
|---|---|
turn an object into a special material
Procs | |
| on_hydroponics_apply | For weird backwards situations where water manages to get added to trays nutrients, as opposed to being snowflaked away like usual. |
|---|---|
For weird backwards situations where water manages to get added to trays nutrients, as opposed to being snowflaked away like usual.
Procs | |
| end_metabolization | Signals that metabolization has stopped, triggering the end of trait-based effects |
|---|---|
| metabolize | Triggers metabolizing for all the reagents in this holder |
Signals that metabolization has stopped, triggering the end of trait-based effects
Triggers metabolizing for all the reagents in this holder
+Arguments:
+#Reality smash tracker
+Stupid fucking list holder, DONT create new ones, it will break the game, this is automnatically created whenever eldritch cultists are created.
+Tracks relevant data, generates relevant data, useful tool
Vars | |
| smashes | list of tracked reality smashes |
|---|---|
| targets | List of mobs with ability to see the smashes |
Procs | |
| AddMind | Adds a mind to the list of people that can see the reality smashes |
| Generate | Generates a set amount of reality smashes based on the N value |
| RandomSpawnSmash | CIT CHANGE |
| RemoveMind | Removes a mind from the list of people that can see the reality smashes |
| ReworkNetwork | Automatically fixes the target and smash network |
list of tracked reality smashes
List of mobs with ability to see the smashes
Adds a mind to the list of people that can see the reality smashes
+Use this whenever you want to add someone to the list
Generates a set amount of reality smashes based on the N value
+Automatically creates more reality smashes
CIT CHANGE
+Creates a singular reality smash +Credit to slimelust
Removes a mind from the list of people that can see the reality smashes
+Use this whenever you want to remove someone from the list
Automatically fixes the target and smash network
+Fixes any bugs that are caused by late Generate() or exchanging clients
Vars | |
| activeFor | How long the event has existed. You don't need to change this. |
|---|---|
| announce_chance | Probability of announcing, used in prob(), 0 to 100, default 100. Called in process, and for a second time in the ion storm event. |
| announce_when | When in the lifetime to call announce(). If you don't want it to announce use announce_chance, below. +This is in seconds - so 1 = ~2 seconds in. |
| current_players | Amount of of alive, non-AFK human players on server at the time of event start |
| end_when | When in the lifetime the event should end. +This is in seconds - so 1 = ~2 seconds in. |
| fakeable | Can be faked by fake news event. |
| start_when | When in the lifetime to call start(). +This is in seconds - so 1 = ~2 seconds in. |
Procs | |
| announce_to_ghosts | Called after something followable has been spawned by an event +Provides ghosts a follow link to an atom if possible +Only called once. |
How long the event has existed. You don't need to change this.
Probability of announcing, used in prob(), 0 to 100, default 100. Called in process, and for a second time in the ion storm event.
When in the lifetime to call announce(). If you don't want it to announce use announce_chance, below. +This is in seconds - so 1 = ~2 seconds in.
Amount of of alive, non-AFK human players on server at the time of event start
When in the lifetime the event should end. +This is in seconds - so 1 = ~2 seconds in.
Can be faked by fake news event.
When in the lifetime to call start(). +This is in seconds - so 1 = ~2 seconds in.
Called after something followable has been spawned by an event +Provides ghosts a follow link to an atom if possible +Only called once.
Vars | |
| blacklisted_biotypes | Blacklisted mob_biotypes - Hey can we like, not have player controlled megafauna? |
|---|---|
Blacklisted mob_biotypes - Hey can we like, not have player controlled megafauna?
Spawns a cargo pod containing a random cargo supply pack on a random area of the station
Vars | |
| possible_pack_types | Randomly picked area |
|---|---|
| stray_spawnable_supply_packs | List of possible supply packs dropped in the pod, if empty picks from the cargo list |
Procs | |
| announce | List of default spawnable supply packs, filtered from the cargo list |
| find_event_area | Picks an area that wouldn't risk critical damage if hit by a pod explosion |
| make_pod | Handles the creation of the pod, in case it needs to be modified beforehand |
| setup | Tries to find a valid area, throws an error if none are found +Also randomizes the start timer |
| start | Spawns a random supply pack, puts it in a pod, and spawns it on a random tile of the selected area |
Randomly picked area
List of possible supply packs dropped in the pod, if empty picks from the cargo list
List of default spawnable supply packs, filtered from the cargo list
Picks an area that wouldn't risk critical damage if hit by a pod explosion
Handles the creation of the pod, in case it needs to be modified beforehand
Tries to find a valid area, throws an error if none are found +Also randomizes the start timer
Spawns a random supply pack, puts it in a pod, and spawns it on a random tile of the selected area
Procs | |
| make_pod | Apply the syndicate pod skin |
|---|---|
Apply the syndicate pod skin
Vars | |
| dynamic_should_hijack | Whether or not dynamic should hijack this event |
|---|---|
Whether or not dynamic should hijack this event
#Rust spread datum
+Simple datum that automatically spreads rust around it
+Simple implementation of automatically growing entity
Procs | |
| compile_turfs | Compile turfs |
|---|---|
Compile turfs
+Recreates all edge_turfs as well as normal turfs.
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"
+Arguments:
Vars | |
| applicable_zones | What zones this scar can be applied to |
|---|---|
| coverable | Whether this scar can actually be covered up by clothing |
| fake | Scars from the longtimer quirk are "fake" and won't be saved with persistent scarring, since it makes you spawn with a lot by default |
| visibility | How many tiles away someone can see this scar, goes up with severity. Clothes covering this limb will decrease visibility by 1 each, except for the head/face which is a binary "is mask obscuring face" check |
Procs | |
| format | Used to format a scar to safe in preferences for persistent scars |
| format_amputated | Used to format a scar to safe in preferences for persistent scars |
| generate | generate() is used to actually fill out the info for a scar, according to the limb and wound it is provided. |
| get_examine_description | What will show up in examine_more() if this scar is visible |
| is_visible | Whether a scar can currently be seen by the viewer |
| lazy_attach | Used when we finalize a scar from a healing cut |
| load | Used to "load" a persistent scar |
What zones this scar can be applied to
Whether this scar can actually be covered up by clothing
Scars from the longtimer quirk are "fake" and won't be saved with persistent scarring, since it makes you spawn with a lot by default
How many tiles away someone can see this scar, goes up with severity. Clothes covering this limb will decrease visibility by 1 each, except for the head/face which is a binary "is mask obscuring face" check
Used to format a scar to safe in preferences for persistent scars
Used to format a scar to safe in preferences for persistent scars
generate() is used to actually fill out the info for a scar, according to the limb and wound it is provided.
+After creating a scar, call this on it while targeting the scarred bodypart with a given wound to apply the scar.
+Arguments:
+What will show up in examine_more() if this scar is visible
Whether a scar can currently be seen by the viewer
Used when we finalize a scar from a healing cut
Used to "load" a persistent scar
Procs | |
| outfit_entry | Packs up data about an outfit as an assoc list to send to the UI as an outfit entry. |
|---|---|
Packs up data about an outfit as an assoc list to send to the UI as an outfit entry.
+Args:
+category (string) - The tab it will be under
+identifier (typepath or ref) - This will sent this back to ui_act to preview or spawn in an outfit.
+Must be unique between all entries.
+name (string) - Will be the text on the button
+priority (bool)(optional) - If True, the UI will sort the entry to the top, right below favorites.
+custom_entry (bool)(optional) - Send the identifier with a "ref" keyword instead of "path",
+for the UI to tell apart custom outfits from normal ones.
+Returns (list) An outfit entry
Here is the big, bad function that broadcasts a message given the appropriate +parameters.
+@param M: +Reference to the mob/speaker, stored in signal.data["mob"]
+@param vmask: +Boolean value if the mob is "hiding" its identity via voice mask, stored in +signal.data["vmask"]
+@param vmessage: +If specified, will display this as the message; such as "chimpering" +for monkeys if the mob is not understood. Stored in signal.data["vmessage"].
+@param radio: +Reference to the radio broadcasting the message, stored in signal.data["radio"]
+@param message: +The actual string message to display to mobs who understood mob M. Stored in +signal.data["message"]
+@param name: +The name to display when a mob receives the message. signal.data["name"]
+@param job: +The name job to display for the AI when it receives the message. signal.data["job"]
+@param realname: +The "real" name associated with the mob. signal.data["realname"]
+@param vname: +If specified, will use this name when mob M is not understood. signal.data["vname"]
+@param data: +If specified: +1 -- Will only broadcast to intercoms +2 -- Will only broadcast to intercoms and station-bounced radios +3 -- Broadcast to syndicate frequency +4 -- AI can't track down this person. Useful for imitation broadcasts where you can't find the actual mob
+@param compression: +If 0, the signal is audible +If nonzero, the signal may be partially inaudible or just complete gibberish.
+@param level: +The list of Z levels that the sending radio is broadcasting to. Having 0 in the list broadcasts on all levels
+@param freq +The frequency of the signal
Skill datums
Vars | |
| abstract_type | Abstract type |
|---|---|
| base_multiplier | Base multiplier used in skill competency operations. |
| competency_multiplier | Value added to the base multiplier depending on overall competency compared to maximum value/level. |
| competency_thresholds | skill threshold used in generic skill competency operations. |
| desc | Our description |
| item_skill_gain_multi | Experience gain multiplier gained from using items. |
| max_levels | List of max levels. Only used in level skills, but present here for helper macros. |
| name | Our name |
| name_color | Color of the name as shown in the html readout |
| progression_type | Our progression type. These are mostly used to skip typechecks overhead, don't go around messing with these. |
| skill_gain_quantisation | Skill gain quantisation |
| skill_traits | A list of ways this skill can affect or be affected through actions and skill modifiers. |
| ui_category | Index of this skill in the UI |
Procs | |
| get_skill_data | Get a list of data used in the skill panel menu. |
| is_value_greater | Checks if a value is greater |
| sanitize_value | Ensures what someone's setting as a value for this skill is valid. |
| set_skill_value | Sets the new value of this skill in the holder skills list. +As well as possible feedback messages or secondary effects on value change, that's on you. |
Abstract type
Base multiplier used in skill competency operations.
Value added to the base multiplier depending on overall competency compared to maximum value/level.
skill threshold used in generic skill competency operations.
Our description
Experience gain multiplier gained from using items.
List of max levels. Only used in level skills, but present here for helper macros.
Our name
Color of the name as shown in the html readout
Our progression type. These are mostly used to skip typechecks overhead, don't go around messing with these.
Skill gain quantisation
A list of ways this skill can affect or be affected through actions and skill modifiers.
Index of this skill in the UI
Get a list of data used in the skill panel menu.
Checks if a value is greater
Ensures what someone's setting as a value for this skill is valid.
Sets the new value of this skill in the holder skills list. +As well as possible feedback messages or secondary effects on value change, that's on you.
Vars | |
| valid_values | Valid values for the skill |
|---|---|
Valid values for the skill
Classing r p g styled skills, tiered by lvl, and current/nextlvl experience.
Procs | |
| get_skill_level_value | Gets the base value required to reach a level specified by the 'num' arg. |
|---|---|
Gets the base value required to reach a level specified by the 'num' arg.
Vars | |
| max_value | Max value of this skill |
|---|---|
| min_value | Min value of this skill |
Max value of this skill
Min value of this skill
Skill holder datums +All procs are tied to the mind, since they are always expected to have a skill holder anyway.
Vars | |
| all_current_skill_modifiers | List of all current skill modifiers, so we don't add the same ones twice. |
|---|---|
| need_static_data_update | For UI updates. |
| original_values | List of original values stored at the time a modifier with the MODIFIER_SKILL_ORIGIN_DIFF enabled was added. |
| owner | The mind datum this skill is associated with, only used for the check_skills UI |
| see_skill_mods | Whether modifiers and final skill values or only base values are displayed. |
| selected_category | The current selected skill category. |
| skill_affinities | Same as [skills] but affinities, which are multiplied to increase amount when gaining skills. |
| skill_levels | Let's say we want to get a specific skill "level" without looping through a proc everytime. +Only supported by skills with tiers or levels. |
| skill_value_mods | current skill modifiers lists, per value, affinity, level. |
| skills | Our list of skills and values. Lazylist. Associative. Keys are datum typepaths to the skill. |
List of all current skill modifiers, so we don't add the same ones twice.
For UI updates.
List of original values stored at the time a modifier with the MODIFIER_SKILL_ORIGIN_DIFF enabled was added.
The mind datum this skill is associated with, only used for the check_skills UI
Whether modifiers and final skill values or only base values are displayed.
The current selected skill category.
Same as [skills] but affinities, which are multiplied to increase amount when gaining skills.
Let's say we want to get a specific skill "level" without looping through a proc everytime. +Only supported by skills with tiers or levels.
current skill modifiers lists, per value, affinity, level.
Our list of skills and values. Lazylist. Associative. Keys are datum typepaths to the skill.
Base skill modifier datum, used to modify a player skills without directly touching their values, levels and affinity +and cause lots of edge cases. These are fairly simple overall... make a subtype though, don't use this one.
Vars | |
| affinity_mod | skill affinity modifier, can be a multiplier or addendum, depending on the modifier_flags. |
|---|---|
| identifier | The identifier key this skill modifier is associated with. |
| level_mod | skill level modifier, see above. |
| modifier_flags | flags for this skill modifier. |
| name | Name and description of the skill modifier, used in the UI |
| priority | Priority of this skill modifier compared to other ones. |
| target_skills | target skills, can be a specific skill typepath or a list of skill traits. |
| target_skills_key | the GLOB.potential_skills_per_mod key generated on runtime. You shouldn't be var-editing it. |
| value_mod | skill value modifier, see above. |
Procs | |
| on_mind_transfer | Body bound modifier signal procs. |
skill affinity modifier, can be a multiplier or addendum, depending on the modifier_flags.
The identifier key this skill modifier is associated with.
skill level modifier, see above.
flags for this skill modifier.
Name and description of the skill modifier, used in the UI
Priority of this skill modifier compared to other ones.
target skills, can be a specific skill typepath or a list of skill traits.
the GLOB.potential_skills_per_mod key generated on runtime. You shouldn't be var-editing it.
skill value modifier, see above.
Body bound modifier signal procs.
These are the actual backend behind instruments. +They attach to an atom and provide the editor + playback functionality.
Vars | |
| allowed_instrument_ids | What instruments our built in picker can use. The picker won't show unless this is longer than one. |
|---|---|
| cached_exponential_dropoff | Do not directly set, use update_sustain() |
| cached_legacy_dir | Cached legacy dir for legacy instruments |
| cached_legacy_ext | Cached legacy ext for legacy instruments |
| cached_linear_dropoff | /////// DO NOT DIRECTLY SET THESE! +Do not directly set, use update_sustain() |
| cached_samples | Cached list of samples, referenced directly from the instrument for synthesized instruments |
| channels_idle | List of channels that aren't being used, as text. This is to prevent unnecessary freeing and reallocations from SSsounds/SSinstruments. |
| channels_playing | Channel as text = current volume percentage but it's 0 to 100 instead of 0 to 1. |
| compiled_chords | Playing variables +Build by compile_chords() +Must be rebuilt on instrument switch. +Compilation happens when we start playing and is cleared after we finish playing. +Format: list of chord lists, with chordlists having (key1, key2, key3, tempodiv) |
| current_chord | Current chord we're on. |
| debug_mode | If this is enabled, some things won't be strictly cleared when they usually are (liked compiled_chords on play stop) |
| delay_by | Amount of delay to wait before playing the next chord |
| editing | Are we currently editing? |
| elapsed_delay | Current section of a long chord we're on, so we don't need to make a billion chords, one for every unit ticklag. |
| full_sustain_held_note | Should we not decay our last played note? |
| hearing_mobs | The list of mobs that can hear us |
| help | Is the help screen open? |
| instrument_range | How far we can be heard |
| last_channel_played | Last channel to play. text. |
| last_hearcheck | Last world.time we checked for who can hear us |
| legacy | Are we operating in legacy mode (so if the instrument is a legacy instrument) |
| lines | Our song lines |
| max_repeats | Maximum times we can repeat |
| max_sound_channels | Max sound channels to occupy |
| max_volume | Max volume |
| min_volume | Min volume - This is so someone doesn't decide it's funny to set it to 0 and play invisible songs. |
| name | Name of the song |
| note_shift | ////////// !!FUN!! - Only works in synthesized mode! ///////////////// +Note numbers to shift. |
| octave_min | DO NOT TOUCH THESE |
| parent | The atom we're attached to/playing from |
| playing | Are we currently playing? |
| repeat | Repeats left |
| sustain_dropoff_volume | When a note is considered dead if it is below this in volume |
| sustain_exponential_dropoff | Exponential sustain dropoff rate per decisecond |
| sustain_linear_duration | Total duration of linear sustain for 100 volume note to get to SUSTAIN_DROPOFF |
| sustain_mode | The kind of sustain we're using |
| tempo | delay between notes in deciseconds |
| user_playing | Person playing us |
| using_instrument | ///////// Cached instrument variables ///////////// +Instrument we are currently using |
| using_sound_channels | Current channels, so we can save a length() call. |
| volume | Our volume |
Procs | |
| compile_chords | Compiles chords. |
| compile_legacy | Compiles our lines into "chords" with filenames for legacy playback. This makes there have to be a bit of lag at the beginning of the song, but repeats will not have to parse it again, and overall playback won't be impacted by as much lag. |
| compile_synthesized | Compiles our lines into "chords" with numbers. This makes there have to be a bit of lag at the beginning of the song, but repeats will not have to parse it again, and overall playback won't be impacted by as much lag. |
| do_hearcheck | Checks and stores which mobs can hear us. Terminates sounds for mobs that leave our range. |
| get_bpm | Gets our beats per minute based on our tempo. |
| play_chord | Plays a chord. |
| playkey_legacy | Proc to play a legacy note. Just plays the sound to hearing mobs (and does hearcheck if necessary), no fancy channel/sustain/management. |
| playkey_synth | Plays a specific numerical key from our instrument to anyone who can hear us. +Does a hearing check if enough time has passed. |
| pop_channel | Pops a channel we have reserved so we don't have to release and re-request them from SSsounds every time we play a note. This is faster. |
| process_decay | Decays our channels and updates their volumes to mobs who can hear us. |
| process_song | Processes our song. |
| sanitize_tempo | Sanitizes tempo to a value that makes sense and fits the current world.tick_lag. |
| set_bpm | Sets our tempo from a beats-per-minute, sanitizing it to a valid number first. |
| set_dropoff_volume | Setter for setting how low the volume has to get before a note is considered "dead" and dropped |
| set_exponential_drop_rate | Setter for setting exponential falloff factor. |
| set_instrument | Sets our instrument, caching anything necessary for faster accessing. Accepts an ID, typepath, or instantiated instrument datum. |
| set_linear_falloff_duration | Setter for setting linear falloff duration. |
| set_volume | Setter for setting output volume. |
| should_stop_playing | Checks if we should halt playback. |
| start_playing | Attempts to start playing our song. |
| stop_playing | Stops playing, terminating all sounds if in synthesized mode. Clears hearing_mobs. |
| tempodiv_to_delay | Converts a tempodiv to ticks to elapse before playing the next chord, taking into account our tempo. |
| terminate_all_sounds | Stops all sounds we are "responsible" for. Only works in synthesized mode. |
| terminate_sound_mob | Stops all sounds we are responsible for in a given person. Only works in synthesized mode. |
| updateDialog | Updates the window for our users. Override down the line. |
| update_sustain | Updates our cached linear/exponential falloff stuff, saving calculations down the line. |
What instruments our built in picker can use. The picker won't show unless this is longer than one.
Do not directly set, use update_sustain()
Cached legacy dir for legacy instruments
Cached legacy ext for legacy instruments
/////// DO NOT DIRECTLY SET THESE! +Do not directly set, use update_sustain()
Cached list of samples, referenced directly from the instrument for synthesized instruments
List of channels that aren't being used, as text. This is to prevent unnecessary freeing and reallocations from SSsounds/SSinstruments.
Channel as text = current volume percentage but it's 0 to 100 instead of 0 to 1.
Playing variables +Build by compile_chords() +Must be rebuilt on instrument switch. +Compilation happens when we start playing and is cleared after we finish playing. +Format: list of chord lists, with chordlists having (key1, key2, key3, tempodiv)
Current chord we're on.
If this is enabled, some things won't be strictly cleared when they usually are (liked compiled_chords on play stop)
Amount of delay to wait before playing the next chord
Are we currently editing?
Current section of a long chord we're on, so we don't need to make a billion chords, one for every unit ticklag.
Should we not decay our last played note?
The list of mobs that can hear us
Is the help screen open?
How far we can be heard
Last channel to play. text.
Last world.time we checked for who can hear us
Are we operating in legacy mode (so if the instrument is a legacy instrument)
Our song lines
Maximum times we can repeat
Max sound channels to occupy
Max volume
Min volume - This is so someone doesn't decide it's funny to set it to 0 and play invisible songs.
Name of the song
////////// !!FUN!! - Only works in synthesized mode! ///////////////// +Note numbers to shift.
DO NOT TOUCH THESE
The atom we're attached to/playing from
Are we currently playing?
Repeats left
When a note is considered dead if it is below this in volume
Exponential sustain dropoff rate per decisecond
Total duration of linear sustain for 100 volume note to get to SUSTAIN_DROPOFF
The kind of sustain we're using
delay between notes in deciseconds
Person playing us
///////// Cached instrument variables ///////////// +Instrument we are currently using
Current channels, so we can save a length() call.
Our volume
Compiles chords.
Compiles our lines into "chords" with filenames for legacy playback. This makes there have to be a bit of lag at the beginning of the song, but repeats will not have to parse it again, and overall playback won't be impacted by as much lag.
Compiles our lines into "chords" with numbers. This makes there have to be a bit of lag at the beginning of the song, but repeats will not have to parse it again, and overall playback won't be impacted by as much lag.
Checks and stores which mobs can hear us. Terminates sounds for mobs that leave our range.
Gets our beats per minute based on our tempo.
Plays a chord.
Proc to play a legacy note. Just plays the sound to hearing mobs (and does hearcheck if necessary), no fancy channel/sustain/management.
+Arguments:
+Plays a specific numerical key from our instrument to anyone who can hear us. +Does a hearing check if enough time has passed.
Pops a channel we have reserved so we don't have to release and re-request them from SSsounds every time we play a note. This is faster.
Decays our channels and updates their volumes to mobs who can hear us.
+Arguments:
+Processes our song.
Sanitizes tempo to a value that makes sense and fits the current world.tick_lag.
Sets our tempo from a beats-per-minute, sanitizing it to a valid number first.
Setter for setting how low the volume has to get before a note is considered "dead" and dropped
Setter for setting exponential falloff factor.
Sets our instrument, caching anything necessary for faster accessing. Accepts an ID, typepath, or instantiated instrument datum.
Setter for setting linear falloff duration.
Setter for setting output volume.
Checks if we should halt playback.
Attempts to start playing our song.
Stops playing, terminating all sounds if in synthesized mode. Clears hearing_mobs.
Converts a tempodiv to ticks to elapse before playing the next chord, taking into account our tempo.
Stops all sounds we are "responsible" for. Only works in synthesized mode.
Stops all sounds we are responsible for in a given person. Only works in synthesized mode.
Updates the window for our users. Override down the line.
Updates our cached linear/exponential falloff stuff, saving calculations down the line.
Procs | |
| gallopRight | Like gallopLeft, except that if the range contains an element equal to +key, gallopRight returns the index after the rightmost equal element. |
|---|---|
Like gallopLeft, except that if the range contains an element equal to +key, gallopRight returns the index after the rightmost equal element.
+@param key the key whose insertion point to search for +@param a the array in which to search +@param base the index of the first element in the range +@param len the length of the range; must be > 0 +@param hint the index at which to begin the search, 0 <= hint < n. +The closer hint is to the result, the faster this method will run. +@param c the comparator used to order the range, and to search +@return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k]
Datum that handles different species in the game.
+This datum handles species in the game, such as lizardpeople, mothmen, zombies, skeletons, etc. +It is used in carbon humans to determine various things about them, like their food preferences, if they have biological genders, their damage resistances, and more.
Vars | |
| armor | Percentage modifier for overall defense of the race, or less defense, if it's negative. |
|---|---|
| ass_image | For custom overrides for species ass images |
| attack_type | Type of damage attack does. Ethereals attack with burn damage for example. |
| attack_verb | Punch-specific attack verb. |
| breathid | What gas does this species breathe? Used by suffocation screen alerts, most of actual gas breathing is handled by mutantlungs. See [life.dm][code/modules/mob/living/carbon/human/life.dm] |
| brutemod | multiplier for brute damage |
| burnmod | multiplier for burn damage |
| cold_offset | moves their safe minimum temp by this value. |
| coldmod | multiplier for damage from cold temperature |
| damage_overlay_type | What kind of damage overlays (if any) appear on our species when wounded? If this is "", does not add an overlay. |
| disliked_food | Bitfield for food types that the species dislikes, giving them disgust. Humans hate raw food, for example. |
| exotic_blood | If your race bleeds something other than bog standard blood, change this to reagent id. For example, ethereals bleed liquid electricity. |
| exotic_blood_blend_mode | Which blend mode should this species blood use? |
| exotic_blood_color | Assume human as the default blood colour, override this default by species subtypes |
| exotic_bloodtype | If your race uses a non standard bloodtype (A+, O-, AB-, etc). For example, lizards have L type blood. |
| family_heirlooms | List of family heirlooms this species can get with the family heirloom quirk. List of types. |
| fixed_mut_color | To use MUTCOLOR with a fixed color that's independent of the mcolor feature in DNA. |
| fly | The actual flying ability given to flying species |
| flying_species | Is this species a flying species? Used as an easy check for some things |
| grab_sound | Special sound for grabbing |
| grad_color | The gradient color used to color the gradient. |
| grad_style | The gradient style used for the mob's hair. |
| hair_alpha | The alpha used by the hair. 255 is completely solid, 0 is invisible. |
| hair_color | This allows races to have specific hair colors. If null, it uses the H's hair/facial hair colors. If "mutcolor", it uses the H's mutant_color. If "fixedmutcolor", it uses fixedmutcolor |
| heatmod | multiplier for damage from hot temperature |
| hot_offset | moves their safe maximum temp by this value. |
| id | If the game needs to manually check your race to do something not included in a proc here, it will use this. |
| inert_mutation | Special mutation that can be found in the genepool exclusively in this species. Dont leave empty or changing species will be a headache |
| inherent_biotypes | List of biotypes the mob belongs to. Used by diseases. |
| inherent_traits | Generic traits tied to having the species. |
| liked_food | Bitfield for food types that the species likes, giving them a mood boost. Lizards like meat, for example. |
| meat | What the species drops when gibbed by a gibber machine. |
| mutant_bodyparts | Visible CURRENT bodyparts that are unique to a species. +DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK +SHIT UP! Changes to this list for non-species specific bodyparts (ie +cat ears and tails) should be assigned at organ level if possible. +Assoc values are defaults for given bodyparts, also modified by aforementioned organs. +They also allow for faster '[]' list access versus 'in'. Other than that, they are useless right now. +Layer hiding is handled by [/datum/species/proc/handle_mutant_bodyparts] below. |
| mutant_brain | Replaces default brain with a different organ |
| mutant_heart | Replaces default heart with a different organ |
| mutant_organs | Internal organs that are unique to this race, like a tail. |
| mutantappendix | Replaces default appendix with a different organ. |
| mutantears | Replaces default ears with a different organ |
| mutanteyes | Replaces default lungs with a different organ +Replaces default eyes with a different organ |
| mutanthands | Forces an item into this species' hands. Only an honorary mutantthing because this is not an organ and not loaded in the same way, you've been warned to do your research. |
| mutantliver | Replaces default liver with a different organ |
| mutantstomach | Replaces default stomach with a different organ |
| mutanttail | CIT SPECIFIC Mutant tail |
| mutanttongue | Replaces default tongue with a different organ |
| name | This is the fluff name. They are displayed on health analyzers and in the character setup menu. Leave them generic for other servers to customize. |
| no_equip | Inventory slots the race can't equip stuff to. Golems cannot wear jumpsuits, for example. |
| nojumpsuit | Allows the species to equip items that normally require a jumpsuit without having one equipped. Used by golems. |
| offset_features | Clothing offsets. If a species has a different body than other species, you can offset clothing so they look less weird. |
| outfit_important_for_life | A path to an outfit that is important for species life e.g. plasmaman outfit |
| payday_modifier | multiplier for money paid at payday |
| punchdamagehigh | Highest possible punch damage this species can give. |
| punchdamagelow | Lowest possible punch damage this species can give. If this is set to 0, punches will always miss. |
| punchstunthreshold | Damage at which punches from this race will stun |
| say_mod | Affects the speech message, for example: Motharula flutters, "My speech message is flutters!" |
| sexes | Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows |
| siemens_coeff | Base electrocution coefficient. Basically a multiplier for damage from electrocutions. |
| skinned_type | What skin the species drops when gibbed by a gibber machine. |
| special_step_sounds | Sounds to override barefeet walking |
| species_language_holder | What languages this species can understand and say. Use a language holder datum in this var. |
| species_traits | Species-only traits. Can be found in code/__DEFINES/DNA.dm |
| speedmod | Multiplier for the race's speed. Positive numbers make it move slower, negative numbers make it move faster. |
| stunmod | multiplier for stun durations |
| toxic_food | Bitfield for food types that the species absolutely hates, giving them even more disgust than disliked food. Meat is "toxic" to moths, for example. |
| typing_indicator_state | Our default override for typing indicator state |
| use_skintones | Does the species use skintones or not? As of now only used by humans. |
| wings_icon | Current wings icon |
Procs | |
| check_roundstart_eligible | Checks if a species is eligible to be picked at roundstart. |
| copy_properties_from | Copies some vars and properties over that should be kept when creating a copy of this species. |
| get_biological_state | The human species version of /mob/living/carbon/proc/get_biological_state. Depends on the HAS_FLESH and HAS_BONE species traits, having bones lets you have bone wounds, having flesh lets you have burn, slash, and piercing wounds |
| handle_digestion | LIFE |
| on_species_gain | Proc called when a carbon becomes this species. |
| random_name | Generates a random name for a carbon. |
| regenerate_organs | Corrects organs in a carbon, removing ones it doesn't need and adding ones it does. |
Percentage modifier for overall defense of the race, or less defense, if it's negative.
For custom overrides for species ass images
Type of damage attack does. Ethereals attack with burn damage for example.
Punch-specific attack verb.
What gas does this species breathe? Used by suffocation screen alerts, most of actual gas breathing is handled by mutantlungs. See [life.dm][code/modules/mob/living/carbon/human/life.dm]
multiplier for brute damage
multiplier for burn damage
moves their safe minimum temp by this value.
multiplier for damage from cold temperature
What kind of damage overlays (if any) appear on our species when wounded? If this is "", does not add an overlay.
Bitfield for food types that the species dislikes, giving them disgust. Humans hate raw food, for example.
If your race bleeds something other than bog standard blood, change this to reagent id. For example, ethereals bleed liquid electricity.
Which blend mode should this species blood use?
Assume human as the default blood colour, override this default by species subtypes
If your race uses a non standard bloodtype (A+, O-, AB-, etc). For example, lizards have L type blood.
List of family heirlooms this species can get with the family heirloom quirk. List of types.
To use MUTCOLOR with a fixed color that's independent of the mcolor feature in DNA.
The actual flying ability given to flying species
Is this species a flying species? Used as an easy check for some things
Special sound for grabbing
The gradient color used to color the gradient.
The gradient style used for the mob's hair.
The alpha used by the hair. 255 is completely solid, 0 is invisible.
This allows races to have specific hair colors. If null, it uses the H's hair/facial hair colors. If "mutcolor", it uses the H's mutant_color. If "fixedmutcolor", it uses fixedmutcolor
multiplier for damage from hot temperature
moves their safe maximum temp by this value.
If the game needs to manually check your race to do something not included in a proc here, it will use this.
Special mutation that can be found in the genepool exclusively in this species. Dont leave empty or changing species will be a headache
List of biotypes the mob belongs to. Used by diseases.
Generic traits tied to having the species.
Bitfield for food types that the species likes, giving them a mood boost. Lizards like meat, for example.
What the species drops when gibbed by a gibber machine.
Visible CURRENT bodyparts that are unique to a species. +DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK +SHIT UP! Changes to this list for non-species specific bodyparts (ie +cat ears and tails) should be assigned at organ level if possible. +Assoc values are defaults for given bodyparts, also modified by aforementioned organs. +They also allow for faster '[]' list access versus 'in'. Other than that, they are useless right now. +Layer hiding is handled by [/datum/species/proc/handle_mutant_bodyparts] below.
Replaces default brain with a different organ
Replaces default heart with a different organ
Internal organs that are unique to this race, like a tail.
Replaces default appendix with a different organ.
Replaces default ears with a different organ
Replaces default lungs with a different organ +Replaces default eyes with a different organ
Forces an item into this species' hands. Only an honorary mutantthing because this is not an organ and not loaded in the same way, you've been warned to do your research.
Replaces default liver with a different organ
Replaces default stomach with a different organ
CIT SPECIFIC Mutant tail
Replaces default tongue with a different organ
This is the fluff name. They are displayed on health analyzers and in the character setup menu. Leave them generic for other servers to customize.
Inventory slots the race can't equip stuff to. Golems cannot wear jumpsuits, for example.
Allows the species to equip items that normally require a jumpsuit without having one equipped. Used by golems.
Clothing offsets. If a species has a different body than other species, you can offset clothing so they look less weird.
A path to an outfit that is important for species life e.g. plasmaman outfit
multiplier for money paid at payday
Highest possible punch damage this species can give.
Lowest possible punch damage this species can give. If this is set to 0, punches will always miss.
Damage at which punches from this race will stun
Affects the speech message, for example: Motharula flutters, "My speech message is flutters!"
Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows
Base electrocution coefficient. Basically a multiplier for damage from electrocutions.
What skin the species drops when gibbed by a gibber machine.
Sounds to override barefeet walking
What languages this species can understand and say. Use a language holder datum in this var.
Species-only traits. Can be found in code/__DEFINES/DNA.dm
Multiplier for the race's speed. Positive numbers make it move slower, negative numbers make it move faster.
multiplier for stun durations
Bitfield for food types that the species absolutely hates, giving them even more disgust than disliked food. Meat is "toxic" to moths, for example.
Our default override for typing indicator state
Does the species use skintones or not? As of now only used by humans.
Current wings icon
Checks if a species is eligible to be picked at roundstart.
+Checks the config to see if this species is allowed to be picked in the character setup menu. +Used by /proc/generate_selectable_species.
Copies some vars and properties over that should be kept when creating a copy of this species.
+Used by slimepeople to copy themselves, and by the DNA datum to hardset DNA to a species +Arguments:
+The human species version of /mob/living/carbon/proc/get_biological_state. Depends on the HAS_FLESH and HAS_BONE species traits, having bones lets you have bone wounds, having flesh lets you have burn, slash, and piercing wounds
LIFE
Proc called when a carbon becomes this species.
+This sets up and adds/changes/removes things, qualities, abilities, and traits so that the transformation is as smooth and bugfree as possible. +Produces a [COMSIG_SPECIES_GAIN] signal. +Arguments:
+Generates a random name for a carbon.
+This generates a random unique name based on a human's species and gender. +Arguments:
+Corrects organs in a carbon, removing ones it doesn't need and adding ones it does.
+Takes all organ slots, removes organs a species should not have, adds organs a species should have. +can use replace_current to refresh all organs, creating an entirely new set.
+Arguments:
+************ Lizard compatable snoots *********** +/datum/sprite_accessory/snouts/bird +name = "Beak" +icon_state = "bird" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/bigbeak +name = "Big Beak" +icon_state = "bigbeak" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/bug +name = "Bug" +icon_state = "bug" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +extra2 = TRUE +extra2_color_src = MUTCOLORS3
+/datum/sprite_accessory/snouts/elephant +name = "Elephant" +icon_state = "elephant" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED +extra = TRUE +extra_color_src = MUTCOLORS3
+/datum/sprite_accessory/snouts/lcanid +name = "Mammal, Long" +icon_state = "lcanid" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/lcanidalt +name = "Mammal, Long ALT" +icon_state = "lcanidalt" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/scanid +name = "Mammal, Short" +icon_state = "scanid" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/scanidalt +name = "Mammal, Short ALT" +icon_state = "scanidalt" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/wolf +name = "Mammal, Thick" +icon_state = "wolf" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/wolfalt +name = "Mammal, Thick ALT" +icon_state = "wolfalt" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/redpanda +name = "WahCoon" +icon_state = "wah" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/rhino +name = "Horn" +icon_state = "rhino" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED +extra = TRUE +extra = MUTCOLORS3
+/datum/sprite_accessory/snouts/rodent +name = "Rodent" +icon_state = "rodent" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/husky +name = "Husky" +icon_state = "husky" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/otie +name = "Otie" +icon_state = "otie" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/pede +name = "Scolipede" +icon_state = "pede" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/sergal +name = "Sergal" +icon_state = "sergal" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+/datum/sprite_accessory/snouts/shark +name = "Shark" +icon_state = "shark" +color_src = MATRIXED +icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
+/datum/sprite_accessory/snouts/toucan +name = "Toucan" +icon_state = "toucan" +icon = 'modular_citadel/icons/mob/mam_snouts.dmi' +color_src = MATRIXED
+Mammal Snouts
Procs | |
| is_not_visible | Lizard Tails |
|---|---|
Lizard Tails
Stack canary. Will go away if the stack it was primed by is ended by byond for return or stack overflow reasons.
Procs | |
| use_variable | empty proc to avoid warnings about unused variables. Call this proc on your canary in the stack it's watching. |
|---|---|
empty proc to avoid warnings about unused variables. Call this proc on your canary in the stack it's watching.
Stack End Detector. +Can detect if a given code stack has exited, used by the mc for stack overflow detection.
Procs | |
| check | Returns true if the stack is still going. Calling before the canary has been primed also returns true |
|---|---|
| prime_canary | |
Returns true if the stack is still going. Calling before the canary has been primed also returns true
Vars | |
| applies_mats | If TRUE, the created atom will gain custom mat datums |
|---|---|
| max_res_amount | Max amount of resulting atoms made |
| on_floor | If the atom requires a floor below |
| one_per_turf | If only one of the resulting atom is allowed per turf |
| placement_checks | Bitflag of additional placement checks required to place. (STACK_CHECK_CARDINALS|STACK_CHECK_ADJACENT) |
| req_amount | Amount of stack required to make |
| res_amount | Amount of resulting atoms made |
| result_type | What atom the recipe makes, typepath |
| time | How long it takes to make |
| title | The title of the recipe |
| trait_booster | What trait, if any, boosts the construction speed of this item |
| trait_modifier | How much the trait above, if supplied, boosts the construct speed of this item |
If TRUE, the created atom will gain custom mat datums
Max amount of resulting atoms made
If the atom requires a floor below
If only one of the resulting atom is allowed per turf
Bitflag of additional placement checks required to place. (STACK_CHECK_CARDINALS|STACK_CHECK_ADJACENT)
Amount of stack required to make
Amount of resulting atoms made
What atom the recipe makes, typepath
How long it takes to make
The title of the recipe
What trait, if any, boosts the construction speed of this item
How much the trait above, if supplied, boosts the construct speed of this item
Vars | |
| alarm_types | List of all alarm types we are listening to |
|---|---|
| camera_view | If UI will also show and allow jumping to cameras connected to each alert area |
| holder | Holder of the datum |
| listener | Listens for alarms, provides the alarms list for our UI |
| title | Title of our UI |
List of all alarm types we are listening to
If UI will also show and allow jumping to cameras connected to each alert area
Holder of the datum
Listens for alarms, provides the alarms list for our UI
Title of our UI
Base class of station traits. These are used to influence rounds in one way or the other by influencing the levers of the station.
Vars | |
| blacklist | What traits are incompatible with this one? |
|---|---|
| can_revert | Whether or not this trait can be reverted by an admin |
| force | Whether this trait is always enabled; generally used for debugging |
| name | Name of the trait |
| report_message | What message to show in the centcom report? |
| show_in_report | Does this trait show in the centcom report? |
| trait_flags | Extra flags for station traits such as it being abstract |
| trait_processes | Whether or not this trait uses process() |
| trait_to_give | What code-trait does this station trait give? gives none if null |
| trait_type | The type of this trait. Used to classify how this trait influences the station |
| weight | Chance relative to other traits of its type to be picked |
Procs | |
| get_report | type of info the centcom report has on this trait, if any. |
| on_round_start | Proc ran when round starts. Use this for roundstart effects. |
| revert | Will attempt to revert the station trait, used by admins. |
What traits are incompatible with this one?
Whether or not this trait can be reverted by an admin
Whether this trait is always enabled; generally used for debugging
Name of the trait
What message to show in the centcom report?
Does this trait show in the centcom report?
Extra flags for station traits such as it being abstract
Whether or not this trait uses process()
What code-trait does this station trait give? gives none if null
The type of this trait. Used to classify how this trait influences the station
Chance relative to other traits of its type to be picked
type of info the centcom report has on this trait, if any.
Proc ran when round starts. Use this for roundstart effects.
Will attempt to revert the station trait, used by admins.
Procs | |
| do_corgi_respawn | Moves the new dog somewhere safe, equips it with the old one's inventory and makes it deadchat_playable. |
|---|---|
Moves the new dog somewhere safe, equips it with the old one's inventory and makes it deadchat_playable.
Vars | |
| event_control_path | The path to the round_event_control that we modify. |
|---|---|
| max_occurrences_modifier | Flat modifier added to the amount of max occurances the random event can have. |
| weight_multiplier | Multiplier applied to the weight of the event. |
The path to the round_event_control that we modify.
Flat modifier added to the amount of max occurances the random event can have.
Multiplier applied to the weight of the event.
Vars | |
| blocks_sprint | If this is TRUE, the user will have sprint forcefully disabled while this is active. |
|---|---|
| status_type | How many of the effect can be on one mob, and what happens when you try to add another |
| tick | do we tick()? |
Procs | |
| action_cooldown_mod | Multiplied to clickdelays |
| before_remove | Called before being removed; returning FALSE will cancel removal |
If this is TRUE, the user will have sprint forcefully disabled while this is active.
How many of the effect can be on one mob, and what happens when you try to add another
do we tick()?
Multiplied to clickdelays
Called before being removed; returning FALSE will cancel removal
Vars | |
| mob_overlay | This overlay is applied to the owner for the duration of the effect. |
|---|---|
This overlay is applied to the owner for the duration of the effect.
Vars | |
| effect_sprite | path for the underlay |
|---|---|
| marked_underlay | underlay used to indicate that someone is marked |
Procs | |
| on_effect | What happens when this mark gets popped |
path for the underlay
underlay used to indicate that someone is marked
What happens when this mark gets popped
+Adds actual functionality to each mark
Vars | |
| repetitions | Dictates how much damage and stamina loss this mark will cause. |
|---|---|
Dictates how much damage and stamina loss this mark will cause.
Status effect from multiple sources, when all sources are removed, so is the effect
Vars | |
| status_type | Adds itself to sources and destroys itself if one exists already, there are never multiple |
|---|---|
Adds itself to sources and destroys itself if one exists already, there are never multiple
Vars | |
| cube | Stored icon overlay for the hit mob, removed when effect is removed |
|---|---|
Procs | |
| owner_moved | Blocks movement from the status effect owner |
Stored icon overlay for the hit mob, removed when effect is removed
Blocks movement from the status effect owner
Vars | |
| left | The left leg of the limping person |
|---|---|
| next_leg | Which leg we're limping with next |
| right | The right leg of the limping person |
| slowdown_left | How many deciseconds we limp for on the left leg |
| slowdown_right | How many deciseconds we limp for on the right leg |
The left leg of the limping person
Which leg we're limping with next
The right leg of the limping person
How many deciseconds we limp for on the left leg
How many deciseconds we limp for on the right leg
Vars | |
| give_alert_type | The type of alert given to people when offered, in case you need to override some behavior (like for high-fives) |
|---|---|
| offered_item | The actual item being offered |
| possible_takers | The people who were offered this item at the start |
Procs | |
| check_owner_in_range | The offerer moved, see if anyone is out of range now |
| check_taker_in_range | One of our possible takers moved, see if they left us hanging |
| dropped_item | We lost the item, give it up |
| register_candidate | Hook up the specified carbon mob to be offered the item in question, give them the alert and signals and all |
| remove_candidate | Remove the alert and signals for the specified carbon mob. Automatically removes the status effect when we lost the last taker |
The type of alert given to people when offered, in case you need to override some behavior (like for high-fives)
The actual item being offered
The people who were offered this item at the start
The offerer moved, see if anyone is out of range now
One of our possible takers moved, see if they left us hanging
We lost the item, give it up
Hook up the specified carbon mob to be offered the item in question, give them the alert and signals and all
Remove the alert and signals for the specified carbon mob. Automatically removes the status effect when we lost the last taker
Procs | |
| check_remove | check if the wound getting removed is the wound we're tied to |
|---|---|
check if the wound getting removed is the wound we're tied to
A representation of the stripping UI
Vars | |
| interactions | A lazy list of user mobs to a list of strip menu keys that they're interacting with |
|---|---|
| owner | The owner who has the element /datum/element/strippable |
| strippable | The strippable element itself |
A lazy list of user mobs to a list of strip menu keys that they're interacting with
The owner who has the element /datum/element/strippable
The strippable element itself
A representation of an item that can be stripped down
Vars | |
| key | The STRIPPABLE_ITEM_* key |
|---|---|
| warn_dangerous_clothing | Should we warn about dangerous clothing? |
Procs | |
| alternate_action | Performs an alternative action on this strippable_item.
+has_alternate_action needs to be TRUE. |
| finish_equip | The proc that places the item on the source. This should not yield. |
| finish_unequip | The proc that unequips the item from the source. This should not yield. |
| get_alternate_action | Returns the ID of this item's strippable action.
+Return null if there is no alternate action.
+Any return value of this must be in StripMenu. |
| get_item | Gets the item from the given source. |
| get_obscuring | Returns a STRIPPABLE_OBSCURING_* define to report on whether or not this is obscured. |
| should_show | Returns whether or not this item should show. |
| start_equip | Start the equipping process. This is the proc you should yield in. +Returns TRUE/FALSE depending on if it is allowed. |
| start_unequip | Start the unequipping process. This is the proc you should yield in. +Returns TRUE/FALSE depending on if it is allowed. |
| try_equip | Tries to equip the item onto the given source. +Returns TRUE/FALSE depending on if it is allowed. +This should be used for checking if an item CAN be equipped. +It should not perform the equipping itself. |
| try_unequip | Tries to unequip the item from the given source. +Returns TRUE/FALSE depending on if it is allowed. +This should be used for checking if it CAN be unequipped. +It should not perform the unequipping itself. |
The STRIPPABLE_ITEM_* key
Should we warn about dangerous clothing?
Performs an alternative action on this strippable_item.
+has_alternate_action needs to be TRUE.
The proc that places the item on the source. This should not yield.
The proc that unequips the item from the source. This should not yield.
Returns the ID of this item's strippable action.
+Return null if there is no alternate action.
+Any return value of this must be in StripMenu.
Gets the item from the given source.
Returns a STRIPPABLE_OBSCURING_* define to report on whether or not this is obscured.
Returns whether or not this item should show.
Start the equipping process. This is the proc you should yield in. +Returns TRUE/FALSE depending on if it is allowed.
Start the unequipping process. This is the proc you should yield in. +Returns TRUE/FALSE depending on if it is allowed.
Tries to equip the item onto the given source. +Returns TRUE/FALSE depending on if it is allowed. +This should be used for checking if an item CAN be equipped. +It should not perform the equipping itself.
Tries to unequip the item from the given source. +Returns TRUE/FALSE depending on if it is allowed. +This should be used for checking if it CAN be unequipped. +It should not perform the unequipping itself.
A strippable item for a hand
Vars | |
| hand_index | Which hand? |
|---|---|
Which hand?
A preset for equipping items onto mob slots
Vars | |
| item_slot | The ITEM_SLOT_* to equip to. |
|---|---|
Procs | |
| get_equip_delay | Returns the delay of equipping this item to a mob |
The ITEM_SLOT_* to equip to.
Returns the delay of equipping this item to a mob
Vars | |
| pocket_side | Which pocket we're referencing. Used for visible text. |
|---|---|
Which pocket we're referencing. Used for visible text.
A singular summoned object
+How summon weapons work:
+Reset() - makes it go back to its master. +Target() - locks onto a target for a duration
+The biggest challenge is synchronizing animations. +Variables keep track of when things tick, but, +animations are client-timed, and not server-timed
+Animations: +The weapon can only track its "intended" angle and dist +"Current" pixel x/y are always calculated relative to a target from the current orbiting atom the physical effect is on +There's 3 animations, +MoveTo(location, angle, dist, rotation) +Orbit(location) +Rotate(degrees)
+And an non-animation that just snaps it to a location, +HardReset(location)
Vars | |
| angle | current angle from victim - clockwise from 0. null if not attacking. |
|---|---|
| angle_vary | rand dist to rotate during reattack phase |
| animation_lock | animation locked until |
| animation_timerid | animation lock timer |
| appearance | mutable_appearance to use, will skip making from icon/icon state if so |
| atom | the actual effect |
| attack_damage | attack damage |
| attack_length | attack length in deciseconds - this is the attack animation speed in total |
| attack_sound | attack sound |
| attack_speed | attack delay in deciseconds - this is time spent between attacks |
| attack_type | attack damtype |
| attack_verb | attack verb |
| dist | current distance from victim - pixels |
| host | host |
| icon | icon file |
| icon_state | icon state |
| name | name |
| orbit_dist | orbit distance from victim - pixels |
| orbit_dist_vary | orbit distance variation from victim |
| reset_speed | reset animation duration |
| reset_timerid | reset timerid |
| rotation | current rotation - angles clockwise from north |
| state | current state |
| victim | currently locked attack target |
Procs | |
| MoveTo | relative to defaults to current location |
| Rotate | rotation defaults to facing towards locked atom |
current angle from victim - clockwise from 0. null if not attacking.
rand dist to rotate during reattack phase
animation locked until
animation lock timer
mutable_appearance to use, will skip making from icon/icon state if so
the actual effect
attack damage
attack length in deciseconds - this is the attack animation speed in total
attack sound
attack delay in deciseconds - this is time spent between attacks
attack damtype
attack verb
current distance from victim - pixels
host
icon file
icon state
name
orbit distance from victim - pixels
orbit distance variation from victim
reset animation duration
reset timerid
current rotation - angles clockwise from north
current state
currently locked attack target
relative to defaults to current location
rotation defaults to facing towards locked atom
Serves as the master datum for summon weapons
Vars | |
| active | suppressed? |
|---|---|
| attacking | active projectiles - refreshing a projectile reorders the list, so if they all have the same stack durations, you can trust the list to have last-refreshed at [1] |
| controlled | actual projectiles |
| idle | idle projectiles |
| master | master atom |
| range | range |
| stack_time | default stack time |
| weapon_type | projectile type |
suppressed?
active projectiles - refreshing a projectile reorders the list, so if they all have the same stack durations, you can trust the list to have last-refreshed at [1]
actual projectiles
idle projectiles
master atom
range
default stack time
projectile type
Special supply crate that generates random syndicate gear up to a determined TC value
Vars | |
| contains | Cannot be ordered via cargo |
|---|---|
Procs | |
| fill | Total TC worth of contained uplink items |
Cannot be ordered via cargo
Total TC worth of contained uplink items
+///////////////////////////// Syndicate Packs /////////////////////////////
Vars | |
| acceptable_clothes | The list of clothes that are acceptable to show allegiance to this family. |
|---|---|
| current_theme | The current theme. Used to pull important stuff such as spawning equipment and objectives. |
| free_clothes | The list of clothes that are given to family members upon induction into the family. |
| gang_id | The abbreviation of this family. |
| my_gang_datum | The specific, occupied family member antagonist datum that is used to reach the handler / check objectives, and from which the above properties (sans points) are inherited. |
Procs | |
| rename_gangster | Allow gangs to have custom naming schemes for their gangsters. |
The list of clothes that are acceptable to show allegiance to this family.
The current theme. Used to pull important stuff such as spawning equipment and objectives.
The list of clothes that are given to family members upon induction into the family.
The abbreviation of this family.
The specific, occupied family member antagonist datum that is used to reach the handler / check objectives, and from which the above properties (sans points) are inherited.
Allow gangs to have custom naming schemes for their gangsters.
Procs | |
| check_heads_victory | Checks if heads have won |
|---|---|
| check_rev_victory | Checks if revs have won |
| process_victory | Updates the state of the world depending on if revs won or loss. +Returns who won, at which case this method should no longer be called. +If revs_win_injection_amount is passed, then that amount of threat will be added if the revs win. |
| round_result | Mutates the ticker to report that the revs have won |
Checks if heads have won
Checks if revs have won
Updates the state of the world depending on if revs won or loss. +Returns who won, at which case this method should no longer be called. +If revs_win_injection_amount is passed, then that amount of threat will be added if the revs win.
Mutates the ticker to report that the revs have won
Vars | |
| intercepted_message_queue | List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call |
|---|---|
| offline_message_queue | List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call |
List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call
List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call
Represents a connected chat channel.
Vars | |
| connection_name | Name of the chat connection. This is the IRC server address or the Discord guild. |
|---|---|
| custom_tag | Tag string associated with the channel in TGS. |
| embeds_supported | [TRUE]/[FALSE] if the channel supports embeds. |
| friendly_name | User friendly name of the channel. |
| id | TGS internal channel ID. |
| is_admin_channel | [TRUE]/[FALSE] based on if the server operator has marked this channel for game admins only. |
| is_private_channel | [TRUE]/[FALSE] if the channel is a private message channel for a /datum/tgs_chat_user. |
Name of the chat connection. This is the IRC server address or the Discord guild.
Tag string associated with the channel in TGS.
[TRUE]/[FALSE] if the channel supports embeds.
User friendly name of the channel.
TGS internal channel ID.
[TRUE]/[FALSE] based on if the server operator has marked this channel for game admins only.
[TRUE]/[FALSE] if the channel is a private message channel for a /datum/tgs_chat_user.
User definable chat command. This abstract version MUST be overridden to be used.
Vars | |
| admin_only | If this command should be available to game administrators only. |
|---|---|
| help_text | The help text displayed for this command. |
| ignore_type | A subtype of /datum/tgs_chat_command that is ignored when enumerating available commands. Use this to create shared base /datums for commands. |
| name | The string to trigger this command on a chat bot. e.g @bot name ... or !tgs name .... |
Procs | |
| Run | Process command activation. Should return a /datum/tgs_message_content to respond to the issuer with. +MUST be implemented |
If this command should be available to game administrators only.
The help text displayed for this command.
A subtype of /datum/tgs_chat_command that is ignored when enumerating available commands. Use this to create shared base /datums for commands.
The string to trigger this command on a chat bot. e.g @bot name ... or !tgs name ....
Process command activation. Should return a /datum/tgs_message_content to respond to the issuer with. +MUST be implemented
+See https://discord.com/developers/docs/resources/message#embed-object-embed-field-structure for details.
Vars | |
| name | Must be set in New(). |
|---|---|
| value | Must be set in New(). |
Procs | |
| New | Create a /datum/tgs_chat_embed/field. |
Must be set in New().
Must be set in New().
Create a /datum/tgs_chat_embed/field.
See https://discord.com/developers/docs/resources/message#embed-object-embed-footer-structure for details.
Vars | |
| text | Must be set in New(). |
|---|---|
Procs | |
| New | Create a /datum/tgs_chat_embed/footer. |
Must be set in New().
Create a /datum/tgs_chat_embed/footer.
Common datum for similar Discord embed medias.
Vars | |
| url | Must be set in New(). |
|---|---|
Procs | |
| New | Create a /datum/tgs_chat_embed. |
Must be set in New().
Create a /datum/tgs_chat_embed.
See https://discord.com/developers/docs/resources/message#embed-object-embed-author-structure for details. Must have name set in New().
Procs | |
| New | Create a /datum/tgs_chat_embed/footer. |
|---|---|
Create a /datum/tgs_chat_embed/footer.
User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/message#embed-object for details.
Vars | |
| colour | Colour must be #AARRGGBB or #RRGGBB hex string. |
|---|---|
| image | See https://discord.com/developers/docs/resources/message#embed-object-embed-image-structure for details. |
| thumbnail | See https://discord.com/developers/docs/resources/message#embed-object-embed-thumbnail-structure for details. |
| timestamp | Timestamp must be encoded as: time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss"). Use the active timezone. |
| video | See https://discord.com/developers/docs/resources/message#embed-object-embed-video-structure for details. |
Colour must be #AARRGGBB or #RRGGBB hex string.
See https://discord.com/developers/docs/resources/message#embed-object-embed-image-structure for details.
See https://discord.com/developers/docs/resources/message#embed-object-embed-thumbnail-structure for details.
Timestamp must be encoded as: time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss"). Use the active timezone.
See https://discord.com/developers/docs/resources/message#embed-object-embed-video-structure for details.
Vars | |
| channel | The /datum/tgs_chat_channel the user was from. |
|---|---|
| friendly_name | The user's display name. |
| id | TGS internal user ID. |
| mention | The string to use to ping this user in a message. |
The /datum/tgs_chat_channel the user was from.
The user's display name.
TGS internal user ID.
The string to use to ping this user in a message.
User definable handler for TGS events This abstract version SHOULD be overridden to be used.
Vars | |
| receive_health_checks | If the handler receieves TGS_EVENT_HEALTH_CHECK events. |
|---|---|
Procs | |
| HandleEvent | User definable callback for handling TGS events. |
If the handler receieves TGS_EVENT_HEALTH_CHECK events.
User definable callback for handling TGS events.
+event_code - One of the TGS_EVENT_ defines. Extra parameters will be documented in each.
User definable handler for HTTP calls. This abstract version MUST be overridden to be used.
Procs | |
| PerformGet | User definable callback for executing HTTP GET requests. +MUST perform BYOND sleeps while the request is in flight. +MUST return a /datum/tgs_http_result. +SHOULD log its own errors |
|---|---|
User definable callback for executing HTTP GET requests. +MUST perform BYOND sleeps while the request is in flight. +MUST return a /datum/tgs_http_result. +SHOULD log its own errors
+url - The full URL to execute the GET request for including query parameters.
Result of a /datum/tgs_http_handler call. MUST NOT be overridden.
Vars | |
| response_text | HTTP response as text |
|---|---|
| success | Boolean request success flag. Set for any 2XX response code. |
Procs | |
| New | Create a /datum/tgs_http_result. |
HTTP response as text
Boolean request success flag. Set for any 2XX response code.
Create a /datum/tgs_http_result.
+User definable chat message. MUST NOT be overridden.
Vars | |
| embed | The /datum/tgs_chat_embed to embed in the message. Not supported on all chat providers. |
|---|---|
| text | The string content of the message. Must be provided in New(). |
Procs | |
| New | Create a /datum/tgs_message_content. |
The /datum/tgs_chat_embed to embed in the message. Not supported on all chat providers.
The string content of the message. Must be provided in New().
Create a /datum/tgs_message_content.
+Represents git revision information.
Vars | |
| commit | Full SHA of the commit. |
|---|---|
| origin_commit | Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch. |
| timestamp | ISO 8601 timestamp of when the commit was created. |
Full SHA of the commit.
Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch.
ISO 8601 timestamp of when the commit was created.
Represents a merge of a GitHub pull request.
Vars | |
| author | The Username of the test merge source's author. |
|---|---|
| body | The test merge source's body when it was merged. |
| comment | Optional comment left by the TGS user who initiated the merge. |
| head_commit | The SHA of the test merge when that was merged. |
| number | The test merge number. |
| title | The test merge source's title when it was merged. |
| url | An http URL to the test merge source. |
The Username of the test merge source's author.
The test merge source's body when it was merged.
Optional comment left by the TGS user who initiated the merge.
The SHA of the test merge when that was merged.
The test merge number.
The test merge source's title when it was merged.
An http URL to the test merge source.
Represents a version.
Vars | |
| deprecated_patch | Legacy version number. Generally null. |
|---|---|
| deprefixed_parameter | String value minus prefix. |
| minor | The minor version number. null for wildcards. |
| patch | The patch version number. null for wildcards. |
| raw_parameter | Unparsed string value. |
| suite | The suite/major version number. |
Legacy version number. Generally null.
String value minus prefix.
The minor version number. null for wildcards.
The patch version number. null for wildcards.
Unparsed string value.
The suite/major version number.
tgui datum (represents a UI).
Vars | |
| autoupdate | Update the UI every MC tick. |
|---|---|
| closing | Stops further updates when close() was called. |
| initialized | If the UI has been initialized yet. |
| interface | The interface (template) to be used for this UI. |
| opened_at | Time of opening the window. |
| src_object | The object which owns the UI. |
| state | Topic state used to determine status/interactability. |
| status | The status/visibility of the UI. |
| title | The title of te UI. |
| user | The mob who opened/is using the UI. |
| window | The window_id for browse() and onclose(). |
| window_key | Key that is used for remembering the window geometry. |
| window_size | Deprecated: Window size. |
Procs | |
| New | public |
| close | public |
| get_payload | private |
| on_message | private |
| open | public |
| process | private |
| process_status | private |
| send_asset | public |
| send_full_update | public |
| send_update | public |
| set_autoupdate | public |
| set_state | public |
Update the UI every MC tick.
Stops further updates when close() was called.
If the UI has been initialized yet.
The interface (template) to be used for this UI.
Time of opening the window.
The object which owns the UI.
Topic state used to determine status/interactability.
The status/visibility of the UI.
The title of te UI.
The mob who opened/is using the UI.
The window_id for browse() and onclose().
Key that is used for remembering the window geometry.
Deprecated: Window size.
public
+Create a new UI.
+required user mob The mob who opened/is using the UI. +required src_object datum The object or datum which owns the UI. +required interface string The interface used to render the UI. +optional title string The title of the UI. +optional ui_x int Deprecated: Window width. +optional ui_y int Deprecated: Window height.
+return datum/tgui The requested UI.
public
+Close the UI.
+optional can_be_suspended bool
private
+Package the data to send to the UI, as JSON.
+return list
private
+Callback for handling incoming tgui messages.
public
+Open this UI (and initialize it with data).
+return bool - TRUE if a new pooled window is opened, FALSE in all other situations including if a new pooled window didn't open because one already exists.
private
+Run an update cycle for this UI. Called internally by SStgui +every second or so.
private
+Updates the status, and returns TRUE if status has changed.
public
+Makes an asset available to use in tgui.
+required asset datum/asset
+return bool - true if an asset was actually sent
public
+Send a full update to the client (includes static data).
+optional custom_data list Custom data to send instead of ui_data. +optional force bool Send an update even if UI is not interactive.
public
+Send a partial update to the client (excludes static data).
+optional custom_data list Custom data to send instead of ui_data. +optional force bool Send an update even if UI is not interactive.
public
+Enable/disable auto-updating of the UI.
+required value bool Enable/disable auto-updating.
public
+Replace current ui.state with a new one.
+required state datum/ui_state/state Next state
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
Vars | |
| buttons | The list of buttons (responses) provided on the TGUI window |
|---|---|
| buttons_map | Buttons (strings specifically) mapped to the actual value (e.g. a mob or a verb) |
| choice | The button that the user has pressed, null if no selection has been made |
| closed | Boolean field describing if the tgui_list_input was closed by the user. |
| message | The textual body of the TGUI window |
| start_time | The time at which the tgui_list_input was created, for displaying timeout progress. |
| timeout | The lifespan of the tgui_list_input, after which the window will close and delete itself. |
| title | The title of the TGUI window |
Procs | |
| wait | Waits for a user's response to the tgui_list_input's prompt before returning. Returns early if +the window was closed by the user. |
The list of buttons (responses) provided on the TGUI window
Buttons (strings specifically) mapped to the actual value (e.g. a mob or a verb)
The button that the user has pressed, null if no selection has been made
Boolean field describing if the tgui_list_input was closed by the user.
The textual body of the TGUI window
The time at which the tgui_list_input was created, for displaying timeout progress.
The lifespan of the tgui_list_input, after which the window will close and delete itself.
The title of the TGUI window
Waits for a user's response to the tgui_list_input's prompt before returning. Returns early if +the window was closed by the user.
An asynchronous version of tgui_list_input to be used with callbacks instead of waiting on user responses.
Vars | |
| callback | The callback to be invoked by the tgui_list_input upon having a choice made. |
|---|---|
The callback to be invoked by the tgui_list_input upon having a choice made.
Datum used for instantiating and using a TGUI-controlled modal that prompts the user with +a message and has buttons for responses.
Vars | |
| autofocus | The bool that controls if this modal should grab window focus |
|---|---|
| buttons | The list of buttons (responses) provided on the TGUI window |
| choice | The button that the user has pressed, null if no selection has been made |
| closed | Boolean field describing if the tgui_modal was closed by the user. |
| message | The textual body of the TGUI window |
| start_time | The time at which the tgui_modal was created, for displaying timeout progress. |
| timeout | The lifespan of the tgui_modal, after which the window will close and delete itself. |
| title | The title of the TGUI window |
Procs | |
| wait | Waits for a user's response to the tgui_modal's prompt before returning. Returns early if +the window was closed by the user. |
The bool that controls if this modal should grab window focus
The list of buttons (responses) provided on the TGUI window
The button that the user has pressed, null if no selection has been made
Boolean field describing if the tgui_modal was closed by the user.
The textual body of the TGUI window
The time at which the tgui_modal was created, for displaying timeout progress.
The lifespan of the tgui_modal, after which the window will close and delete itself.
The title of the TGUI window
Waits for a user's response to the tgui_modal's prompt before returning. Returns early if +the window was closed by the user.
An asynchronous version of tgui_modal to be used with callbacks instead of waiting on user responses.
Vars | |
| callback | The callback to be invoked by the tgui_modal upon having a choice made. |
|---|---|
The callback to be invoked by the tgui_modal upon having a choice made.
tgui_panel datum +Hosts tgchat and other nice features.
Vars | |
| telemetry_analyzed_at | Time of telemetry analysis completion |
|---|---|
| telemetry_connections | List of previous client connections |
| telemetry_requested_at | Time of telemetry request |
Procs | |
| analyze_telemetry | private |
| initialize | public |
| is_ready | public |
| on_initialize_timed_out | private |
| on_message | private |
| play_music | public |
| request_telemetry | private |
| send_roundrestart | public |
| stop_music | public |
Time of telemetry analysis completion
List of previous client connections
Time of telemetry request
private
+Analyzes a telemetry packet.
+Is currently only useful for detecting ban evasion attempts.
public
+Initializes tgui panel.
public
+TRUE if panel is initialized and ready to receive messages.
private
+Called when initialization has timed out.
private
+Callback for handling incoming tgui messages.
public
+Sends music data to the browser.
+Optional settings:
+required url string Must be an https URL. +optional extra_data list Optional settings.
private
+Requests some telemetry from the client.
public
+Sends a round restart notification.
public
+Stops playing music through the browser.
Procs | |
| New | public |
|---|---|
| acquire_lock | public |
| can_be_suspended | public |
| close | public |
| flush_message_queue | private |
| initialize | public |
| is_ready | public |
| on_message | private |
| release_lock | public |
| send_asset | public |
| send_message | public |
| send_raw_message | public |
| subscribe | public |
| unsubscribe | public |
public
+Create a new tgui window.
+required client /client +required id string A unique window identifier.
public
+Acquire the window lock. Pool will not be able to provide this window +to other UIs for the duration of the lock.
+Can be given an optional tgui datum, which will be automatically +subscribed to incoming messages via the on_message proc.
+optional ui /datum/tgui
public
+Checks if the window can be sanely suspended.
+return bool
public
+Close the UI.
+optional can_be_suspended bool
private
+Sends queued messages if the queue wasn't empty.
public
+Initializes the window with a fresh page. Puts window into the "loading" +state. You can begin sending messages right after initializing. Messages +will be put into the queue until the window finishes loading.
+optional inline_assets list List of assets to inline into the html. +optional inline_html string Custom HTML to inject. +optional fancy bool If TRUE, will hide the window titlebar.
public
+Checks if the window is ready to receive data.
+return bool
private
+Callback for handling incoming tgui messages.
public
+Release the window lock.
public
+Makes an asset available to use in tgui.
+required asset datum/asset
+return bool - TRUE if any assets had to be sent to the client
public
+Sends a message to tgui window.
+required type string Message type +required payload list Message payload +optional force bool Send regardless of the ready status.
public
+Sends a raw payload to tgui window.
+required message string JSON+urlencoded blob to send. +optional force bool Send regardless of the ready status.
public
+Subscribes the datum to consume window messages on a specified proc.
+Note, that this supports only one subscriber, because code for that +is simpler and therefore faster. If necessary, this can be rewritten +to support multiple subscribers.
public
+Unsubscribes the datum. Do not forget to call this when cleaning up.
Vars | |
| callback | If a thrown thing has a callback, it can be invoked here within thrownthing. |
|---|---|
| delayed_time | How long an object has been paused for, to be added to the travel time. |
| diagonal_error | How many tiles that need to be moved in order to travel to the target. |
| diagonals_first | A variable that helps in describing objects thrown at an angle, if it should be moved diagonally first or last. |
| dist_travelled | Tracks how far a thrownthing has traveled mid-throw for the purposes of maxrange |
| dist_x | Distance to travel in the X axis/direction. |
| dist_y | Distance to travel in the y axis/direction. |
| dx | The Horizontal direction we're traveling (EAST or WEST) |
| dy | The VERTICAL direction we're traveling (NORTH or SOUTH) |
| force | The movement force provided to a given object in transit. More info on these in move_force.dm |
| gentle | If the throw is gentle, then the thrownthing is harmless on impact. |
| init_dir | The initial direction of the thrower of the thrownthing for building the trajectory of the throw. |
| initial_target | Weakref to the original intended target of the throw, to prevent hardDels |
| last_move | The last world.time value stored when the thrownthing was moving. |
| maxrange | The maximum number of turfs that the thrownthing will travel to reach it's target. |
| paused | Mainly exists for things that would freeze a thrown object in place, like a timestop'd tile. Or a Tractor Beam. |
| pure_diagonal | Set to TRUE if the throw is exclusively diagonal (45 Degree angle throws for example) |
| speed | The speed of the projectile thrownthing being thrown. |
| start_time | The start_time obtained via world.time for the purposes of tiles moved/tick. |
| target_turf | The turf that the target was on, if it's not a turf itself. |
| target_zone | If the target happens to be a carbon and that carbon has a body zone aimed at, this is carried on here. |
| thrower | If a mob is the one who has thrown the object, then it's moved here. |
| thrownthing | Defines the atom that has been thrown (Objects and Mobs, mostly.) |
Procs | |
| on_thrownthing_qdel | Defines the datum behavior on the thrownthing's qdeletion event. |
If a thrown thing has a callback, it can be invoked here within thrownthing.
How long an object has been paused for, to be added to the travel time.
How many tiles that need to be moved in order to travel to the target.
A variable that helps in describing objects thrown at an angle, if it should be moved diagonally first or last.
Tracks how far a thrownthing has traveled mid-throw for the purposes of maxrange
Distance to travel in the X axis/direction.
Distance to travel in the y axis/direction.
The Horizontal direction we're traveling (EAST or WEST)
The VERTICAL direction we're traveling (NORTH or SOUTH)
The movement force provided to a given object in transit. More info on these in move_force.dm
If the throw is gentle, then the thrownthing is harmless on impact.
The initial direction of the thrower of the thrownthing for building the trajectory of the throw.
Weakref to the original intended target of the throw, to prevent hardDels
The last world.time value stored when the thrownthing was moving.
The maximum number of turfs that the thrownthing will travel to reach it's target.
Mainly exists for things that would freeze a thrown object in place, like a timestop'd tile. Or a Tractor Beam.
Set to TRUE if the throw is exclusively diagonal (45 Degree angle throws for example)
The speed of the projectile thrownthing being thrown.
The start_time obtained via world.time for the purposes of tiles moved/tick.
The turf that the target was on, if it's not a turf itself.
If the target happens to be a carbon and that carbon has a body zone aimed at, this is carried on here.
If a mob is the one who has thrown the object, then it's moved here.
Defines the atom that has been thrown (Objects and Mobs, mostly.)
Defines the datum behavior on the thrownthing's qdeletion event.
This is the actual timer, it contains the callback and necessary data to maintain +the timer.
+See the documentation for the timer subsystem for an explanation of the buckets referenced +below in next and prev
Vars | |
| callBack | The callback to invoke after the timer completes |
|---|---|
| flags | Flags associated with the timer, see _DEFINES/subsystems.dm |
| hash | Unique hash generated when TIMER_UNIQUE flag is present |
| id | ID used for timers when the TIMER_STOPPABLE flag is present |
| name | An informative name generated for the timer as its representation in strings, useful for debugging |
| next | Next timed event in the bucket |
| prev | Previous timed event in the bucket |
| source | The source of the timedevent, whatever called addtimer |
| spent | Time at which the timer was invoked or destroyed |
| timeToRun | The time at which the callback should be invoked at |
| wait | The length of the timer |
Procs | |
| bucketEject | Removes this timed event from any relevant buckets, or the secondary queue |
| bucketJoin | Attempts to add this timed event to a bucket, will enter the secondary queue +if there are no appropriate buckets at this time. |
| getcallingtype | Returns a string of the type of the callback for this timer |
The callback to invoke after the timer completes
Flags associated with the timer, see _DEFINES/subsystems.dm
Unique hash generated when TIMER_UNIQUE flag is present
ID used for timers when the TIMER_STOPPABLE flag is present
An informative name generated for the timer as its representation in strings, useful for debugging
Next timed event in the bucket
Previous timed event in the bucket
The source of the timedevent, whatever called addtimer
Time at which the timer was invoked or destroyed
The time at which the callback should be invoked at
The length of the timer
Removes this timed event from any relevant buckets, or the secondary queue
Attempts to add this timed event to a bucket, will enter the secondary queue +if there are no appropriate buckets at this time.
+Secondary queueing of timed events will occur when the timespan covered by the existing +buckets is exceeded by the time at which this timed event is scheduled to be invoked. +If the timed event is tracking client time, it will be added to a special bucket.
Returns a string of the type of the callback for this timer
Vars | |
| min_players | Minimum players for this to randomly roll via get_random_traitor_kind(). |
|---|---|
| tgui_theme | Specific tgui theme for the player's antag info panel. |
Minimum players for this to randomly roll via get_random_traitor_kind().
Specific tgui theme for the player's antag info panel.
Procs | |
| can_use_topic | private |
|---|---|
private
+Checks if a user can use src_object's UI, and returns the state. +Can call a mob proc, which allows overrides for each mob.
+required src_object datum The object/datum which owns the UI. +required user mob The mob who opened/is using the UI.
+return UI_state The state of the UI.
Vars | |
| priority | The priority of the test, the larger it is the later it fires |
|---|---|
| run_loc_floor_bottom_left | The bottom left floor turf of the testing zone |
| run_loc_floor_top_right | The top right floor turf of the testing zone |
Procs | |
| allocate | Allocates an instance of the provided type, and places it somewhere in an available loc +Instances allocated through this proc will be destroyed when the test is over |
The priority of the test, the larger it is the later it fires
The bottom left floor turf of the testing zone
The top right floor turf of the testing zone
Allocates an instance of the provided type, and places it somewhere in an available loc +Instances allocated through this proc will be destroyed when the test is over
Procs | |
| Run | A test to ensure the sanity of BINARY_INSERT |
|---|---|
A test to ensure the sanity of BINARY_INSERT
Procs | |
| Run | Test that you can resist out of a container |
|---|---|
Test that you can resist out of a container
Procs | |
| Run | Ensures that when disassembling a machine, all the parts are given back |
|---|---|
Ensures that when disassembling a machine, all the parts are given back
Procs | |
| Run | Test that stop, drop, and roll lowers fire stacks |
|---|---|
Test that stop, drop, and roll lowers fire stacks
Procs | |
| Run | This test is used to make sure a flesh-and-bone base human can suffer all the types of wounds, and that suffering more severe wounds removes and replaces the lesser wound. Also tests that [/mob/living/carbon/proc/fully_heal] removes all wounds |
|---|---|
This test is used to make sure a flesh-and-bone base human can suffer all the types of wounds, and that suffering more severe wounds removes and replaces the lesser wound. Also tests that [/mob/living/carbon/proc/fully_heal] removes all wounds
Procs | |
| Run | This test is used for making sure species with bones but no flesh (skeletons, plasmamen) can only suffer BONE_WOUNDS, and nothing tagged with FLESH_WOUND (it's possible to require both) |
|---|---|
This test is used for making sure species with bones but no flesh (skeletons, plasmamen) can only suffer BONE_WOUNDS, and nothing tagged with FLESH_WOUND (it's possible to require both)
Uplink Items
+Items that can be spawned from an uplink. Can be limited by gamemode.
Vars | |
| purchasable_from | A bitfield to represent what uplinks can purchase this item.
+See [code/__DEFINES/uplink.dm]. |
|---|---|
A bitfield to represent what uplinks can purchase this item.
+See [code/__DEFINES/uplink.dm].
New force-blastwave explosion system
Vars | |
| block_resistance | block = block / this, if 0 any block is absolute |
|---|---|
| cycle | What cycle are we on? |
| cycle_speed | Time to wait between cycles |
| cycle_start | When we started the current cycle |
| edges | The "edges" + dirs that need to be processed this cycle. turf = dir flags |
| exploded_last | The last ring that's been exploded. Any turfs in this will completely ignore the current cycle. Turf = TRUE |
| finished | Are we currently finished? |
| fire_probability | Fire probability per tile |
| flash_range | Flash range |
| hard_obstacle_mod | Hard obstcales get this mod INSTEAD of object damage mod |
| id | Our unique nuumerical ID |
| index | Current index for list |
| mob_damage_mod | Mob damage mod |
| mob_deafen_mod | Mob deafen mod |
| mob_gib_mod | Mob gib mod |
| next_id | Next unique numerical ID |
| object_damage_mod | Object damage mod |
| power_considered_dead | Explosion power at which point to consider to be a dead expansion |
| power_falloff_constant | Base explosion power falloff subtract (applied second) |
| power_falloff_factor | Base explosion power falloff multiplier (applied first) |
| power_initial | Explosion power we were initially at |
| powers | The powers of the current turf edges. turf = power |
| running | Are we currently running? |
| silent | Are we silent/do we make the screenshake/sounds? |
| source | What atom we originated from, if any |
| start_time | world.time we started at |
| wall_destroy_mod | Wall destruction mod |
| window_shatter_mod | Window shatter mod. Overrides both [hard_obstcale_mod] and [object_damage_mod] |
Procs | |
| tick | Called by SSexplosions to propagate this. +Return TRUE if postponed |
block = block / this, if 0 any block is absolute
What cycle are we on?
Time to wait between cycles
When we started the current cycle
The "edges" + dirs that need to be processed this cycle. turf = dir flags
The last ring that's been exploded. Any turfs in this will completely ignore the current cycle. Turf = TRUE
Are we currently finished?
Fire probability per tile
Flash range
Hard obstcales get this mod INSTEAD of object damage mod
Our unique nuumerical ID
Current index for list
Mob damage mod
Mob deafen mod
Mob gib mod
Next unique numerical ID
Object damage mod
Explosion power at which point to consider to be a dead expansion
Base explosion power falloff subtract (applied second)
Base explosion power falloff multiplier (applied first)
Explosion power we were initially at
The powers of the current turf edges. turf = power
Are we currently running?
Are we silent/do we make the screenshake/sounds?
What atom we originated from, if any
world.time we started at
Wall destruction mod
Window shatter mod. Overrides both [hard_obstcale_mod] and [object_damage_mod]
Called by SSexplosions to propagate this. +Return TRUE if postponed
Causes weather to occur on a z level in certain area types
+The effects of weather occur across an entire z-level. For instance, lavaland has periodic ash storms that scorch most unprotected creatures. +Weather always occurs on different z levels at different times, regardless of weather type. +Can have custom durations, targets, and can automatically protect indoor areas.
Vars | |
| aesthetic | If the weather has no purpose but aesthetics. |
|---|---|
| area_type | Types of area to affect |
| barometer_predictable | Whether a barometer can predict when the weather will happen |
| desc | description of weather |
| end_duration | In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely |
| end_message | Displayed once the weather is over |
| end_overlay | Area overlay while weather is ending |
| end_sound | Sound that plays while weather is ending |
| immunity_type | Used by mobs (or movables containing mobs, such as enviro bags) to prevent them from being affected by the weather. |
| impacted_areas | Areas to be affected by the weather, calculated when the weather begins |
| impacted_z_levels | The list of z-levels that this weather is actively affecting |
| name | name of weather |
| next_hit_time | For barometers to know when the next storm will hit |
| overlay_layer | Since it's above everything else, this is the layer used by default. TURF_LAYER is below mobs and walls if you need to use that. |
| overlay_plane | Plane for the overlay |
| perpetual | This causes the weather to only end if forced to |
| probability | Weight amongst other eligible weather. if zero, will never happen randomly. |
| protect_indoors | TRUE value protects areas with outdoors marked as false, regardless of area type |
| protected_areas | Areas that are protected and excluded from the affected areas. |
| stage | The stage of the weather, from 1-4 |
| target_trait | The z-level trait to affect when run randomly or when not overridden. |
| telegraph_duration | In deciseconds, how long from the beginning of the telegraph until the weather begins |
| telegraph_message | The message displayed in chat to foreshadow the weather's beginning |
| telegraph_overlay | The overlay applied to all tiles on the z-level |
| telegraph_sound | The sound file played to everyone on an affected z-level |
| weather_color | Color to apply to the area while weather is occuring |
| weather_duration | In deciseconds, how long the weather lasts once it begins |
| weather_duration_lower | See above - this is the lowest possible duration |
| weather_duration_upper | See above - this is the highest possible duration |
| weather_message | Displayed in chat once the weather begins in earnest |
| weather_overlay | Area overlay while the weather is occuring |
| weather_sound | Looping sound while weather is occuring |
Procs | |
| can_weather_act | Returns TRUE if the living mob can be affected by the weather |
| end | Fully ends the weather |
| start | Starts the actual weather and effects from it |
| telegraph | Telegraphs the beginning of the weather on the impacted z levels |
| update_areas | Updates the overlays on impacted areas |
| weather_act | Affects the mob with whatever the weather does |
| wind_down | Weather enters the winding down phase, stops effects |
If the weather has no purpose but aesthetics.
Types of area to affect
Whether a barometer can predict when the weather will happen
description of weather
In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely
Displayed once the weather is over
Area overlay while weather is ending
Sound that plays while weather is ending
Used by mobs (or movables containing mobs, such as enviro bags) to prevent them from being affected by the weather.
Areas to be affected by the weather, calculated when the weather begins
The list of z-levels that this weather is actively affecting
name of weather
For barometers to know when the next storm will hit
Since it's above everything else, this is the layer used by default. TURF_LAYER is below mobs and walls if you need to use that.
Plane for the overlay
This causes the weather to only end if forced to
Weight amongst other eligible weather. if zero, will never happen randomly.
TRUE value protects areas with outdoors marked as false, regardless of area type
Areas that are protected and excluded from the affected areas.
The stage of the weather, from 1-4
The z-level trait to affect when run randomly or when not overridden.
In deciseconds, how long from the beginning of the telegraph until the weather begins
The message displayed in chat to foreshadow the weather's beginning
The overlay applied to all tiles on the z-level
The sound file played to everyone on an affected z-level
Color to apply to the area while weather is occuring
In deciseconds, how long the weather lasts once it begins
See above - this is the lowest possible duration
See above - this is the highest possible duration
Displayed in chat once the weather begins in earnest
Area overlay while the weather is occuring
Looping sound while weather is occuring
Returns TRUE if the living mob can be affected by the weather
Fully ends the weather
+Effects no longer occur and area overlays are removed +Removes weather from processing completely
Starts the actual weather and effects from it
+Updates area overlays and sends sounds and messages to mobs to notify them +Begins dealing effects from weather to mobs in the area
Telegraphs the beginning of the weather on the impacted z levels
+Sends sounds and details to mobs in the area +Calculates duration and hit areas, and makes a callback for the actual weather to start
Updates the overlays on impacted areas
Affects the mob with whatever the weather does
Weather enters the winding down phase, stops effects
+Updates areas to be in the winding down phase +Sends sounds and messages to mobs to notify them
Procs | |
| emp_pulse | Called from [/atom/proc/emp_act] |
|---|---|
Called from [/atom/proc/emp_act]
Vars | |
| a_or_from | needed for "your arm has a compound fracture" vs "your arm has some third degree burns" |
|---|---|
| already_scarred | If we've already tried scarring while removing (since remove_wound calls qdel, and qdel calls remove wound, .....) TODO: make this cleaner |
| attached_surgery | If we're operating on this wound and it gets healed, we'll nix the surgery too |
| base_treat_time | How long it will take to treat this wound with a standard effective tool, assuming it doesn't need surgery |
| blood_flow | How much we're contributing to this limb's bleed_rate |
| cryo_progress | if you're a lazy git and just throw them in cryo, the wound will go away after accumulating severity * 25 power |
| damage_mulitplier_penalty | Incoming damage on this limb will be multiplied by this, to simulate tenderness and vulnerability (mostly burns). |
| desc | The description shown on the scanners |
| disabling | If having this wound makes currently makes the parent bodypart unusable |
| examine_desc | What the limb looks like on a cursory examine |
| from_smite | If we forced this wound through badmin smite, we won't count it towards the round totals |
| interaction_efficiency_penalty | Using this limb in a do_after interaction will multiply the length by this duration (arms) |
| limb | The bodypart we're parented to |
| limp_slowdown | If set and this wound is applied to a leg, we take this many deciseconds extra per step on this leg |
| name | What it's named |
| occur_text | The visible message when this happens |
| processes | If we need to process each life tick |
| scar_keyword | What kind of scars this wound will create description wise once healed |
| severity | Either WOUND_SEVERITY_TRIVIAL (meme wounds like stubbed toe), WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, or WOUND_SEVERITY_CRITICAL (or maybe WOUND_SEVERITY_LOSS) |
| sound_effect | This sound will be played upon the wound being applied |
| status_effect_type | What status effect we assign on application |
| threshold_minimum | The minimum we need to roll on /obj/item/bodypart/proc/check_wounding to begin suffering this wound, see check_wounding_mods() for more |
| threshold_penalty | How much having this wound will add to all future check_wounding() rolls on this limb, to allow progression to worse injuries with repeated damage |
| treat_text | The basic treatment suggested by health analyzers |
| treatable_by | Specific items such as bandages or sutures that can try directly treating this wound |
| treatable_by_grabbed | Specific items such as bandages or sutures that can try directly treating this wound only if the user has the victim in an aggressive grab or higher |
| treatable_tool | Tools with the specified tool flag will also be able to try directly treating this wound |
| viable_zones | What body zones can we affect |
| victim | Who owns the body part that we're wounding |
| wound_flags | What flags apply to this wound |
| wound_type | The list of wounds it belongs in, WOUND_LIST_BLUNT, WOUND_LIST_SLASH, or WOUND_LIST_BURN |
Procs | |
| apply_wound | apply_wound() is used once a wound type is instantiated to assign it to a bodypart, and actually come into play. |
| check_grab_treatments | Return TRUE if we have an item that can only be used while aggro grabbed (unhanded aggro grab treatments go in /datum/wound/proc/try_handling). Treatment is still is handled in /datum/wound/proc/treat |
| crush | Called when we're crushed in an airlock or firedoor, for one of the improvised joint dislocation fixes |
| drag_bleed_amount | Used when we're being dragged while bleeding, the value we return is how much bloodloss this wound causes from being dragged. Since it's a proc, you can let bandages soak some of the blood |
| get_examine_description | get_examine_description() is used in carbon/examine and human/examine to show the status of this wound. Useful if you need to show some status like the wound being splinted or bandaged. |
| handle_process | If var/processing is TRUE, this is run on each life tick |
| on_stasis | Called when the patient is undergoing stasis, so that having fully treated a wound doesn't make you sit there helplessly until you think to unbuckle them |
| on_synthflesh | When synthflesh is applied to the victim, we call this. No sense in setting up an entire chem reaction system for wounds when we only care for a few chems. Probably will change in the future |
| on_xadone | Called from cryoxadone and pyroxadone when they're proc'ing. Wounds will slowly be fixed separately from other methods when these are in effect. crappy name but eh |
| receive_damage | When our parent bodypart is hurt |
| remove_wound | Remove the wound from whatever it's afflicting, and cleans up whateverstatus effects it had or modifiers it had on interaction times. ignore_limb is used for detachments where we only want to forget the victim |
| replace_wound | replace_wound() is used when you want to replace the current wound with a new wound, presumably of the same category, just of a different severity (either up or down counts) |
| second_wind | Additional beneficial effects when the wound is gained, in case you want to give a temporary boost to allow the victim to try an escape or last stand |
| still_exists | For use in do_after callback checks |
| treat | Someone is using something that might be used for treating the wound on this limb |
| try_handling | Like try_treating() but for unhanded interactions from humans, used by joint dislocations for manual bodypart chiropractice for example. |
| try_treating | try_treating() is an intercept run from [/mob/living/carbon/proc/attackby] right after surgeries but before anything else. Return TRUE here if the item is something that is relevant to treatment to take over the interaction. |
| wound_injury | The immediate negative effects faced as a result of the wound |
needed for "your arm has a compound fracture" vs "your arm has some third degree burns"
If we've already tried scarring while removing (since remove_wound calls qdel, and qdel calls remove wound, .....) TODO: make this cleaner
If we're operating on this wound and it gets healed, we'll nix the surgery too
How long it will take to treat this wound with a standard effective tool, assuming it doesn't need surgery
How much we're contributing to this limb's bleed_rate
if you're a lazy git and just throw them in cryo, the wound will go away after accumulating severity * 25 power
Incoming damage on this limb will be multiplied by this, to simulate tenderness and vulnerability (mostly burns).
The description shown on the scanners
If having this wound makes currently makes the parent bodypart unusable
What the limb looks like on a cursory examine
If we forced this wound through badmin smite, we won't count it towards the round totals
Using this limb in a do_after interaction will multiply the length by this duration (arms)
The bodypart we're parented to
If set and this wound is applied to a leg, we take this many deciseconds extra per step on this leg
What it's named
The visible message when this happens
If we need to process each life tick
What kind of scars this wound will create description wise once healed
Either WOUND_SEVERITY_TRIVIAL (meme wounds like stubbed toe), WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, or WOUND_SEVERITY_CRITICAL (or maybe WOUND_SEVERITY_LOSS)
This sound will be played upon the wound being applied
What status effect we assign on application
The minimum we need to roll on /obj/item/bodypart/proc/check_wounding to begin suffering this wound, see check_wounding_mods() for more
How much having this wound will add to all future check_wounding() rolls on this limb, to allow progression to worse injuries with repeated damage
The basic treatment suggested by health analyzers
Specific items such as bandages or sutures that can try directly treating this wound
Specific items such as bandages or sutures that can try directly treating this wound only if the user has the victim in an aggressive grab or higher
Tools with the specified tool flag will also be able to try directly treating this wound
What body zones can we affect
Who owns the body part that we're wounding
What flags apply to this wound
The list of wounds it belongs in, WOUND_LIST_BLUNT, WOUND_LIST_SLASH, or WOUND_LIST_BURN
apply_wound() is used once a wound type is instantiated to assign it to a bodypart, and actually come into play.
+Arguments:
+Return TRUE if we have an item that can only be used while aggro grabbed (unhanded aggro grab treatments go in /datum/wound/proc/try_handling). Treatment is still is handled in /datum/wound/proc/treat
Called when we're crushed in an airlock or firedoor, for one of the improvised joint dislocation fixes
Used when we're being dragged while bleeding, the value we return is how much bloodloss this wound causes from being dragged. Since it's a proc, you can let bandages soak some of the blood
get_examine_description() is used in carbon/examine and human/examine to show the status of this wound. Useful if you need to show some status like the wound being splinted or bandaged.
+Return the full string line you want to show, note that we're already dealing with the 'warning' span at this point, and that \n is already appended for you in the place this is called from
+Arguments:
+If var/processing is TRUE, this is run on each life tick
Called when the patient is undergoing stasis, so that having fully treated a wound doesn't make you sit there helplessly until you think to unbuckle them
When synthflesh is applied to the victim, we call this. No sense in setting up an entire chem reaction system for wounds when we only care for a few chems. Probably will change in the future
Called from cryoxadone and pyroxadone when they're proc'ing. Wounds will slowly be fixed separately from other methods when these are in effect. crappy name but eh
When our parent bodypart is hurt
Remove the wound from whatever it's afflicting, and cleans up whateverstatus effects it had or modifiers it had on interaction times. ignore_limb is used for detachments where we only want to forget the victim
replace_wound() is used when you want to replace the current wound with a new wound, presumably of the same category, just of a different severity (either up or down counts)
+This proc actually instantiates the new wound based off the specific type path passed, then returns the new instantiated wound datum.
+Arguments:
+Additional beneficial effects when the wound is gained, in case you want to give a temporary boost to allow the victim to try an escape or last stand
For use in do_after callback checks
Someone is using something that might be used for treating the wound on this limb
Like try_treating() but for unhanded interactions from humans, used by joint dislocations for manual bodypart chiropractice for example.
try_treating() is an intercept run from [/mob/living/carbon/proc/attackby] right after surgeries but before anything else. Return TRUE here if the item is something that is relevant to treatment to take over the interaction.
+This proc leads into /datum/wound/proc/treat and probably shouldn't be added onto in children types. You can specify what items or tools you want to be intercepted +with var/list/treatable_by and var/treatable_tool, then if an item fulfills one of those requirements and our wound claims it first, it goes over to treat() and treat_self().
+Arguments:
+The immediate negative effects faced as a result of the wound
Vars | |
| active_trauma | If we suffer severe head booboos, we can get brain traumas tied to them |
|---|---|
| brain_trauma_group | What brain trauma group, if any, we can draw from for head wounds |
| gelled | Have we been bone gel'd? |
| internal_bleeding_chance | If this is a chest wound and this is set, we have this chance to cough up blood when hit in the chest |
| next_trauma_cycle | If we deal brain traumas, when is the next one due? |
| regen_points_current | Our current counter for gel + surgical tape regeneration |
| regen_points_needed | If we did the gel + surgical tape healing method for fractures, how many regen points we need |
| taped | Have we been taped? |
| trauma_cycle_cooldown | How long do we wait +/- 20% for the next trauma? |
Procs | |
| attack_with_hurt_hand | If we're a human who's punching something with a broken arm, we might hurt ourselves doing so |
| gel | if someone is using bone gel on our wound |
| tape | if someone is using surgical tape on our wound |
If we suffer severe head booboos, we can get brain traumas tied to them
What brain trauma group, if any, we can draw from for head wounds
Have we been bone gel'd?
If this is a chest wound and this is set, we have this chance to cough up blood when hit in the chest
If we deal brain traumas, when is the next one due?
Our current counter for gel + surgical tape regeneration
If we did the gel + surgical tape healing method for fractures, how many regen points we need
Have we been taped?
How long do we wait +/- 20% for the next trauma?
If we're a human who's punching something with a broken arm, we might hurt ourselves doing so
if someone is using bone gel on our wound
if someone is using surgical tape on our wound
Procs | |
| chiropractice | If someone is snapping our dislocated joint back into place by hand with an aggro grab and help intent |
|---|---|
| malpractice | If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent |
If someone is snapping our dislocated joint back into place by hand with an aggro grab and help intent
If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent
Vars | |
| flesh_damage | How much damage to our flesh we currently have. Once both this and infestation reach 0, the wound is considered healed |
|---|---|
| flesh_healing | Our current counter for how much flesh regeneration we have stacked from regenerative mesh/synthflesh/whatever, decrements each tick and lowers flesh_damage |
| infestation | Our current level of infection |
| infestation_rate | How quickly infection breeds on this burn if we don't have disinfectant |
| sanitization | Our current level of sanitization/anti-infection, from disinfectants/alcohol/UV lights. While positive, totally pauses and slowly reverses infestation effects each tick |
| strikes_to_lose_limb | Once we reach infestation beyond WOUND_INFESTATION_SEPSIS, we get this many warnings before the limb is completely paralyzed (you'd have to ignore a really bad burn for a really long time for this to happen) |
Procs | |
| mesh | if someone is using mesh on our burns |
| ointment | if someone is using ointment on our burns |
| uv | Paramedic UV penlights |
How much damage to our flesh we currently have. Once both this and infestation reach 0, the wound is considered healed
Our current counter for how much flesh regeneration we have stacked from regenerative mesh/synthflesh/whatever, decrements each tick and lowers flesh_damage
Our current level of infection
How quickly infection breeds on this burn if we don't have disinfectant
Our current level of sanitization/anti-infection, from disinfectants/alcohol/UV lights. While positive, totally pauses and slowly reverses infestation effects each tick
Once we reach infestation beyond WOUND_INFESTATION_SEPSIS, we get this many warnings before the limb is completely paralyzed (you'd have to ignore a really bad burn for a really long time for this to happen)
if someone is using mesh on our burns
if someone is using ointment on our burns
Paramedic UV penlights
Procs | |
| apply_dismember | Our special proc for our special dismembering, the wounding type only matters for what text we have |
|---|---|
Our special proc for our special dismembering, the wounding type only matters for what text we have
Vars | |
| gauzed_clot_rate | If gauzed, what percent of the internal bleeding actually clots of the total absorption rate |
|---|---|
| initial_flow | How much blood we start losing when this wound is first applied |
| internal_bleeding_chance | When hit on this bodypart, we have this chance of losing some blood + the incoming damage |
| internal_bleeding_coefficient | If we let off blood when hit, the max blood lost is this * the incoming damage |
Procs | |
| suture | If someone is using a suture to close this cut |
| tool_cauterize | If someone is using either a cautery tool or something with heat to cauterize this pierce |
If gauzed, what percent of the internal bleeding actually clots of the total absorption rate
How much blood we start losing when this wound is first applied
When hit on this bodypart, we have this chance of losing some blood + the incoming damage
If we let off blood when hit, the max blood lost is this * the incoming damage
If someone is using a suture to close this cut
If someone is using either a cautery tool or something with heat to cauterize this pierce
Vars | |
| clot_rate | How fast our blood flow will naturally decrease per tick, not only do larger cuts bleed more faster, they clot slower |
|---|---|
| demotes_to | Once the blood flow drops below minimum_flow, we demote it to this type of wound. If there's none, we're all better |
| highest_flow | The maximum flow we've had so far |
| highest_scar | A bad system I'm using to track the worst scar we earned (since we can demote, we want the biggest our wound has been, not what it was when it was cured (probably moderate)) |
| initial_flow | How much blood we start losing when this wound is first applied |
| max_per_type | How much staunching per type (cautery, suturing, bandaging) you can have before that type is no longer effective for this cut NOT IMPLEMENTED |
| minimum_flow | When we have less than this amount of flow, either from treatment or clotting, we demote to a lower cut or are healed of the wound |
Procs | |
| las_cauterize | If someone's putting a laser gun up to our cut to cauterize it |
| lick_wounds | if a felinid is licking this cut to reduce bleeding |
| suture | If someone is using a suture to close this cut |
| tool_cauterize | If someone is using either a cautery tool or something with heat to cauterize this cut |
How fast our blood flow will naturally decrease per tick, not only do larger cuts bleed more faster, they clot slower
Once the blood flow drops below minimum_flow, we demote it to this type of wound. If there's none, we're all better
The maximum flow we've had so far
A bad system I'm using to track the worst scar we earned (since we can demote, we want the biggest our wound has been, not what it was when it was cured (probably moderate))
How much blood we start losing when this wound is first applied
How much staunching per type (cautery, suturing, bandaging) you can have before that type is no longer effective for this cut NOT IMPLEMENTED
When we have less than this amount of flow, either from treatment or clotting, we demote to a lower cut or are healed of the wound
If someone's putting a laser gun up to our cut to cauterize it
if a felinid is licking this cut to reduce bleeding
If someone is using a suture to close this cut
If someone is using either a cautery tool or something with heat to cauterize this cut
Vars | |
| Failsafe | Failsafe |
|---|---|
| Master | StonedMC |
| SSrunechat | |
| SStgui | tgui subsystem |
| SStimer | |
Procs | |
| CreateBans | DEBUG |
| HeapPathWeightCompare | TODO: Macro this to reduce proc overhead |
| WrapAdminProcCall | Wrapper for proccalls where the datum is flagged as vareditted |
| ___TraitAdd | DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback. |
| ___TraitRemove | DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback. |
| _addtimer | Create a new timer and insert it in the queue. +You should not call this directly, and should instead use the addtimer macro, which includes source information. |
| _turf_in_offset | Locating turfs |
| actionspeed_data_null_check | Checks if a action speed modifier is valid and not missing any data |
| add_keybinding | Adds an instanced keybinding to the global tracker |
| add_verb | handles adding verbs and updating the stat panel browser |
| announce_arrival | Send a message in common radio when a player arrives |
| block_calculate_resultant_damage | Considers a block return_list and calculates damage to use from that. |
| callHook | @file hooks.dm +Implements hooks, a simple way to run code on pre-defined events. |
| call_emergency_meeting | Summon the crew for an emergency meeting |
| callback_select | Runs a list of callbacks asyncronously, returning only when all have finished |
| check_admin_pings | Checks a given message to see if any of the words contain an active admin's ckey with an @ before it |
| color_matrix_contrast_percent | Exxagerates or removes brightness |
| color_matrix_hsv | Builds a color matrix that transforms the hue, saturation, and value, all in one operation. |
| color_matrix_rotation | Moves all colors angle degrees around the color wheel while maintaining intensity of the color and not affecting whites +TODO: Need a version that only affects one color (ie shift red to blue but leave greens and blues alone) |
| color_matrix_saturation_percent | Exxagerates or removes colors |
| create_mafia_game | Creates the global datum for playing mafia games, destroys the last if that's required and returns the new. |
| create_strippable_list | Creates an assoc list of keys to /datum/strippable_item |
| cultslur | Makes you talk like you got cult stunned, which is slurring but with some dark messages |
| cut_relative_direction | Takes a screen_loc string and cut out any directions like NORTH or SOUTH |
| debug_variable | Get displayed variable in VV variable list |
| default_ui_state | The sane defaults for a UI such as a computer or a machine. |
| delete_all_SS_and_recreate_master | Delete all existing SS to basically start over |
| deltimer | Delete a timer |
| diff_appearances | Takes two appearances as args, prints out, logs, and returns a text representation of their differences +Including suboverlays |
| emissive_appearance | Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the EMISSIVE_COLOR. |
| end_cooldown | Callback called by a timer to end an associative-list-indexed cooldown. |
| english_list_assoc | English_list but associative supporting. Higher overhead. +@depricated |
| find_record | Returns datum/data/record |
| finish_unequip_mob | A utility function for /datum/strippable_items to finish unequipping an item from a mob. |
| firing_squad | firing_squad is a proc for the :B:erforate smite to shoot each individual bullet at them, so that we can add actual delays without sleep() nonsense |
| format_frequency | Format frequency by moving the decimal. |
| generate_asset_name | Generate a filename for this asset +The same asset will always lead to the same asset name +(Generated names do not include file extention.) |
| generate_bitfields | Turns /datum/bitfield subtypes into a list for use in debugging |
| generate_selectable_species | Generates species available to choose in character setup at roundstart |
| get_allowed_instrument_ids | Get all non admin_only instruments. |
| get_atom_on_turf | Returns the top-most atom sitting on the turf. +For example, using this on a disk, which is in a bag, on a mob, +will return the mob because it's on the turf. |
| get_base_area | Returns the base area the target is located in if there is one. +Alternatively, returns the area as is. |
| get_bbox_of_atoms | Get a bounding box of a list of atoms. |
| get_cached_actionspeed_modifier | Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO! |
| get_cached_movespeed_modifier | Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO! |
| get_path_to | This file contains the stuff you need for using JPS (Jump Point Search) pathing, an alternative to A* that skips +over large numbers of uninteresting tiles resulting in much quicker pathfinding solutions. Mind that diagonals +cost the same as cardinal moves currently, so paths may look a bit strange, but should still be optimal. |
| get_ranged_target_turf_direct | Get ranged target turf, but with direct targets as opposed to directions |
| get_sub_areas | Returns either null, or a list containing every sub area associated with our base area. +If include_base is TRUE, the base area will also be added to the return list. |
| get_sub_areas_contents | Simple proc that returns a sum of all contents from every sub area, +Think of the above but for all contents, not just turfs, and without target z. |
| get_sub_areas_turfs | Proc used for purposes similar to get_areas_turfs(), but aimed to include associated areas. +Only accepts area instances and paths for the first arg, no text strings. +Returns a list of all turfs found in the sub areas (including the base's if include_base is TRUE) +and located in a z level matching target_z, or anywhere if target_z is 0 |
| get_valid_screen_location | Returns a valid location to place a screen object without overflowing the viewport |
| get_vog_special | get special role multiplier for voice of god. No double dipping. |
| getleftblocks | DNA HELPER-PROCS |
| hull_shielding_get_tiles_around_area | HELPER FILE FOR SHIELDING +Gets hull exterior adjacent tiles of a certain area +Area method. +EXPENSIVE. +If the area itself is already considered exterior, it'll find all tiles inside it that's next to an interior area. |
| hull_shielding_get_tiles_in_z | Gets hull adjacent exterior tiles of an entire zlevel +EXPENSIVE. +Gets the tiles in the exterior area touching to a non-exterior area |
| icon2base64 | Converts an icon to base64. Operates by putting the icon in the iconCache savefile, +exporting it as text, and then parsing the base64 from that. +(This relies on byond automatically storing icons in savefiles as base64) |
| init_keybindings | Creates and sorts all the keybinding datums |
| is_energy_reflectable_projectile | //// MISC HELPERS //////// +Is this atom reflectable with ""standardized"" reflection methods like you know eshields and deswords and similar |
| is_guest_key | Returns whether or not a player is a guest using their ckey as an input |
| isemptylist | @depricated |
| json_deserialize_datum | Convert a list of json to datum |
| json_serialize_datum | Convert a datum into a json blob |
| listgetindex | @depricated |
| load_map | Shortcut function to parse a map and apply it to the world. |
| log_combat | Log a combat message in the attack log |
| log_suspicious_login | Writes to a special log file if the log_suspicious_login config flag is set, +which is intended to contain all logins that failed under suspicious circumstances. |
| log_tgui | Appends a tgui-related log entry. All arguments are optional. |
| log_wound | log_wound() is for when someone is attacked and suffers a wound. Note that this only captures wounds from damage, so smites/forced wounds aren't logged, as well as demotions like cuts scabbing over |
| make_datum_references_lists | Initial Building |
| md5asfile | Save file as an external file then md5 it. +Used because md5ing files stored in the rsc sometimes gives incorrect md5 results. |
| md5filepath | Returns the md5 of a file at a given path. |
| message_centcom | Used by communications consoles to message CentCom |
| message_syndicate | Used by communications consoles to message the Syndicate |
| message_to_html | Message-related procs |
| movespeed_data_null_check | Checks if a move speed modifier is valid and not missing any data |
| nuke_request | Used by communications consoles to request the nuclear launch codes |
| offset_to_screen_loc | Takes a list in the form (x_offset, y_offset) +And converts it to a screen loc string +Accepts an optional view string/size to force the screen_loc around, so it can't go out of scope |
| overlays2text | Converts an overlay list into text for debug printing +Of note: overlays aren't actually mutable appearances, they're just appearances +Don't have access to that type tho, so this is the best you're gonna get |
| parse_caught_click_modifiers | Returns a turf based on text inputs, original turf and viewing client |
| pick_n_take | Pick a random element from the list and remove it from the list. |
| process_teleport_locs | Generate a list of turfs you can teleport to from the areas list |
| qdel | Should be treated as a replacement for the 'del' keyword. |
| realize_appearance_queue | Takes a list of appearnces, makes them mutable so they can be properly vv'd and inspected |
| recover_all_SS_and_recreate_master | Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars |
| recursive_organ_check | |
| release_gas_to | Releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure. +a global proc due to rustmos |
| remove_image_from_client | Removes an image from a client's .images. Useful as a callback. |
| remove_verb | handles removing verb and sending it to browser to update, use this for removing verbs |
| reset_cooldown | Proc used by stoppable timers to end a cooldown before the time has ran out. |
| return_unused_frequency | returns a random unused frequency between MIN_FREE_FREQ & MAX_FREE_FREQ if free = TRUE, and MIN_FREQ & MAX_FREQ if FALSE |
| rgb_construct_color_matrix | Assembles a color matrix, defaulting to identity |
| rgba_construct_color_matrix | Assembles a color matrix, defaulting to identity |
| rustg_get_version | Gets the version of rust_g |
| safepick | @depricated |
| sanitize_css_class_name | Removes all non-alphanumerics from the text, keep in mind this can lead to id conflicts |
| sanitize_frequency | Ensure the frequency is within bounds of what it should be sending/receiving at |
| sanitize_hexcolor | Sanitizes a hexadecimal color. Always outputs lowercase. |
| sanitize_ooccolor | Makes sure the input color is text with a # at the start followed by 6 hexadecimal characters. Examples: "#ff1234", "#A38321", COLOR_GREEN_GRAY |
| scramble_message_replace_chars | Slightly expensive proc to scramble a message using equal probabilities of character replacement from a list. DOES NOT SUPPORT HTML! |
| screen_loc_to_offset | Takes a screen loc string in the format +"+-left-offset:+-pixel,+-bottom-offset:+-pixel" +Where the :pixel is optional, and returns +A list in the format (x_offset, y_offset) +We require context to get info out of screen locs that contain relative info, so NORTH, SOUTH, etc |
| seedify | Finds and extracts seeds from an object |
| send2adminchat | Sends a message to TGS admin chat channels. |
| send2chat | Sends a message to TGS chat channels. |
| send2otherserver | Sends a message to a set of cross-communications-enabled servers using world topic calls |
| setup_mod_themes | Global proc that sets up all MOD themes as singletons in a list and returns it. |
| single_path_typecache_immutable | Makes a typecache of a single typecache |
| slur | Makes you speak like you're drunk |
| stars | Convert random parts of a passed in message to stars |
| start_unequip_mob | A utility function for /datum/strippable_items to start unequipping an item from a mob. |
| stripped_multiline_input_or_reflect | stripped_multiline_input but reflects to the user instead if it's too big and returns null. |
| stutter | Adds stuttering to the message passed in |
| tgalert | DEPRECATED: USE tgui_alert(...) INSTEAD |
| tgui_Topic | Middleware for /client/Topic. |
| tgui_alert | Creates a TGUI alert window and returns the user's response. |
| tgui_alert_async | Creates an asynchronous TGUI alert window with an associated callback. |
| tgui_input_list | Creates a TGUI input list window and returns the user's response. |
| tgui_input_list_async | Creates an asynchronous TGUI input list window with an associated callback. |
| timeleft | Get the remaining deciseconds on a timer |
| to_chat | Sends the message to the recipient (target). |
| to_chat_immediate | Circumvents the message queue and sends the message +to the recipient (target) as soon as possible. |
| transform_matrix_construct | constructs a transform matrix, defaulting to identity |
| typecacheof | Like typesof() or subtypesof(), but returns a typecache instead of a list |
| ui_status_only_living | Returns a UI status such that the dead will be able to watch, but not interact. |
| ui_status_silicon_has_access | Returns a UI status such that silicons will be able to interact with whatever +they would have access to if this was a machine. For example, AIs can +interact if there's cameras with wireless control is enabled. |
| ui_status_user_has_free_hands | Returns a UI status such that those without blocked hands will be able to interact, +but everyone else can only watch. |
| ui_status_user_is_abled | Returns a UI status such that users with debilitating conditions, such as +being dead or not having power for silicons, will not be able to interact. +Being dead will disable UI, being incapacitated will continue updating it, +and anything else will make it interactive. |
| ui_status_user_is_adjacent | Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living] check for finer observer interactions. |
| ui_status_user_is_advanced_tool_user | Returns a UI status such that advanced tool users will be able to interact, +but everyone else can only watch. |
| ui_status_user_is_conscious_and_lying_down | Returns UI_INTERACTIVE if the user is conscious and lying down. +Returns UI_UPDATE otherwise. |
| ui_status_user_strictly_adjacent | Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not. +Return UI_CLOSE otherwise. |
| unformat_frequency | Opposite of format, returns as a number |
| url2htmlloader | Return html to load a url. +for use inside of browse() calls to html assets that might be loaded on a cdn. |
| valid_window_location | Checks whether the target turf is in a valid state to accept a directional window +or other directional pseudo-dense object such as railings. |
| velvetspeech | FermiChem |
| view_to_pixels | Takes a string or num view, and converts it to pixel width/height in a list(pixel_width, pixel_height) |
| voice_of_god | VOICE OF GOD |
| wave_explosion | Creates a wave explosion at a certain place |
| woundscan | Displays wounds with extended information on their status vs medscanners |
| zone2body_parts_covered | For finding out what body parts a body zone covers, the inverse of the below basically |
Failsafe
+Pretty much pokes the MC to make sure it's still alive.
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
Maintains a timer-like system to handle destruction of runechat messages. Much of this code is modeled +after or adapted from the timer subsystem.
+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.
tgui subsystem
+Contains all tgui state and subsystem code.
Handles creation, callbacks, and destruction of timed events.
+It is important to understand the buckets used in the timer subsystem are just a series of circular doubly-linked +lists. The object at a given index in bucket_list is a /datum/timedevent, the head of a circular list, which has prev +and next references for the respective elements in that bucket's circular list.
DEBUG
TODO: Macro this to reduce proc overhead
Wrapper for proccalls where the datum is flagged as vareditted
DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
Create a new timer and insert it in the queue. +You should not call this directly, and should instead use the addtimer macro, which includes source information.
+Arguments:
+Locating turfs
Checks if a action speed modifier is valid and not missing any data
Adds an instanced keybinding to the global tracker
handles adding verbs and updating the stat panel browser
+pass the verb type path to this instead of adding it directly to verbs so the statpanel can update +Arguments:
+Send a message in common radio when a player arrives
Considers a block return_list and calculates damage to use from that.
@file hooks.dm +Implements hooks, a simple way to run code on pre-defined events.
+@page hooks Code hooks
+@section hooks Hooks
+A hook is defined under /hook in the type tree.
+To add some code to be called by the hook, define a proc under the type, as so:
+@code +/hook/foo/proc/bar() +if(1) +return TRUE //Sucessful +else +return FALSE //Error, or runtime.
+@endcode
+All hooks must return nonzero on success, as runtimes will force return null.
+Calls a hook, executing every piece of code that's attached to it. +@param hook Identifier of the hook to call. +@returns 1 if all hooked code runs successfully, 0 otherwise.
Summon the crew for an emergency meeting
+Teleports the crew to a specified area, and tells everyone (via an announcement) who called the meeting. Should only be used during april fools! +Arguments:
+Runs a list of callbacks asyncronously, returning only when all have finished
+Callbacks can be repeated, to call it multiple times
+Arguments:
+Checks a given message to see if any of the words contain an active admin's ckey with an @ before it
+Returns nothing if no pings are found, otherwise returns an associative list with ckey -> client +Also modifies msg to underline the pings, then stores them in the key ADMINSAY_PING_UNDERLINE_NAME_INDEX for returning
+Arguments:
+Exxagerates or removes brightness
Builds a color matrix that transforms the hue, saturation, and value, all in one operation.
Moves all colors angle degrees around the color wheel while maintaining intensity of the color and not affecting whites +TODO: Need a version that only affects one color (ie shift red to blue but leave greens and blues alone)
Exxagerates or removes colors
Creates the global datum for playing mafia games, destroys the last if that's required and returns the new.
Creates an assoc list of keys to /datum/strippable_item
Makes you talk like you got cult stunned, which is slurring but with some dark messages
Takes a screen_loc string and cut out any directions like NORTH or SOUTH
Get displayed variable in VV variable list
The sane defaults for a UI such as a computer or a machine.
Delete all existing SS to basically start over
Delete a timer
+Arguments:
+Takes two appearances as args, prints out, logs, and returns a text representation of their differences +Including suboverlays
Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the EMISSIVE_COLOR.
Callback called by a timer to end an associative-list-indexed cooldown.
+Arguments:
+This sends a signal reporting the cooldown end.
English_list but associative supporting. Higher overhead. +@depricated
Returns datum/data/record
A utility function for /datum/strippable_items to finish unequipping an item from a mob.
firing_squad is a proc for the :B:erforate smite to shoot each individual bullet at them, so that we can add actual delays without sleep() nonsense
+Hilariously, if you drag someone away mid smite, the bullets will still chase after them from the original spot, possibly hitting other people. Too funny to fix imo
+Arguments:
+Format frequency by moving the decimal.
Generate a filename for this asset +The same asset will always lead to the same asset name +(Generated names do not include file extention.)
Turns /datum/bitfield subtypes into a list for use in debugging
Generates species available to choose in character setup at roundstart
+This proc generates which species are available to pick from in character setup. +If there are no available roundstart species, defaults to human.
Get all non admin_only instruments.
Returns the top-most atom sitting on the turf. +For example, using this on a disk, which is in a bag, on a mob, +will return the mob because it's on the turf.
+Arguments
+Returns the base area the target is located in if there is one. +Alternatively, returns the area as is.
Get a bounding box of a list of atoms.
+Arguments:
+Returns: list(x1, y1, x2, y2)
Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
This file contains the stuff you need for using JPS (Jump Point Search) pathing, an alternative to A* that skips +over large numbers of uninteresting tiles resulting in much quicker pathfinding solutions. Mind that diagonals +cost the same as cardinal moves currently, so paths may look a bit strange, but should still be optimal.
+This is the proc you use whenever you want to have pathfinding more complex than "try stepping towards the thing". +If no path was found, returns an empty list, which is important for bots like medibots who expect an empty list rather than nothing.
+Arguments:
+Get ranged target turf, but with direct targets as opposed to directions
+Starts at atom A and gets the exact angle between A and target +Moves from A with that angle, Range amount of times, until it stops, bound to map size +Arguments:
+Returns either null, or a list containing every sub area associated with our base area. +If include_base is TRUE, the base area will also be added to the return list.
Simple proc that returns a sum of all contents from every sub area, +Think of the above but for all contents, not just turfs, and without target z.
Proc used for purposes similar to get_areas_turfs(), but aimed to include associated areas. +Only accepts area instances and paths for the first arg, no text strings. +Returns a list of all turfs found in the sub areas (including the base's if include_base is TRUE) +and located in a z level matching target_z, or anywhere if target_z is 0
Returns a valid location to place a screen object without overflowing the viewport
+Returns a screen loc representing the valid location
get special role multiplier for voice of god. No double dipping.
DNA HELPER-PROCS
HELPER FILE FOR SHIELDING +Gets hull exterior adjacent tiles of a certain area +Area method. +EXPENSIVE. +If the area itself is already considered exterior, it'll find all tiles inside it that's next to an interior area.
Gets hull adjacent exterior tiles of an entire zlevel +EXPENSIVE. +Gets the tiles in the exterior area touching to a non-exterior area
Converts an icon to base64. Operates by putting the icon in the iconCache savefile, +exporting it as text, and then parsing the base64 from that. +(This relies on byond automatically storing icons in savefiles as base64)
Creates and sorts all the keybinding datums
//// MISC HELPERS //////// +Is this atom reflectable with ""standardized"" reflection methods like you know eshields and deswords and similar
Returns whether or not a player is a guest using their ckey as an input
@depricated
Convert a list of json to datum
Convert a datum into a json blob
@depricated
Shortcut function to parse a map and apply it to the world.
+dmm_file: A .dmm file to load (Required).x_offset, y_offset, z_offset: Positions representign where to load the map (Optional).cropMap: When true, the map will be cropped to fit the existing world dimensions (Optional).measureOnly: When true, no changes will be made to the world (Optional).no_changeturf: When true, turf/AfterChange won't be called on loaded turfsx_lower, x_upper, y_lower, y_upper: Coordinates (relative to the game world) to crop to (Optional).placeOnTop: Whether to use turf/PlaceOnTop rather than turf/ChangeTurf (Optional).Log a combat message in the attack log
+Arguments:
+Writes to a special log file if the log_suspicious_login config flag is set, +which is intended to contain all logins that failed under suspicious circumstances.
+Mirrors this log entry to log_access when access_log_mirror is TRUE, so this proc +doesn't need to be used alongside log_access and can replace it where appropriate.
Appends a tgui-related log entry. All arguments are optional.
log_wound() is for when someone is attacked and suffers a wound. Note that this only captures wounds from damage, so smites/forced wounds aren't logged, as well as demotions like cuts scabbing over
+Note that this has no info on the attack that dealt the wound: information about where damage came from isn't passed to the bodypart's damaged proc. When in doubt, check the attack log for attacks at that same time +TODO later: Add logging for healed wounds, though that will require some rewriting of healing code to prevent admin heals from spamming the logs. Not high priority
+Arguments:
+Initial Building
Save file as an external file then md5 it. +Used because md5ing files stored in the rsc sometimes gives incorrect md5 results.
Returns the md5 of a file at a given path.
Used by communications consoles to message CentCom
Used by communications consoles to message the Syndicate
Message-related procs
+Message format (/list):
+code/__DEFINES/chat.dmCopyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT
Checks if a move speed modifier is valid and not missing any data
Used by communications consoles to request the nuclear launch codes
Takes a list in the form (x_offset, y_offset) +And converts it to a screen loc string +Accepts an optional view string/size to force the screen_loc around, so it can't go out of scope
Converts an overlay list into text for debug printing +Of note: overlays aren't actually mutable appearances, they're just appearances +Don't have access to that type tho, so this is the best you're gonna get
Returns a turf based on text inputs, original turf and viewing client
Pick a random element from the list and remove it from the list.
Generate a list of turfs you can teleport to from the areas list
+Includes areas if they're not a shuttle or not not teleport or have no contents
+The chosen turf is the first item in the areas contents that is a station level
+The returned list of turfs is sorted by name
Should be treated as a replacement for the 'del' keyword.
+Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
Takes a list of appearnces, makes them mutable so they can be properly vv'd and inspected
Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars
within 'O', toggling their frozen flag. This check excludes items held within other safe organ
+
+ storage units, so that only the lowest level of container dictates whether we do or don't decompose
+
+Releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure. +a global proc due to rustmos
Removes an image from a client's .images. Useful as a callback.
handles removing verb and sending it to browser to update, use this for removing verbs
+pass the verb type path to this instead of removing it from verbs so the statpanel can update +Arguments:
+Proc used by stoppable timers to end a cooldown before the time has ran out.
+Arguments:
+This sends a signal reporting the cooldown end, passing the time left as an argument.
returns a random unused frequency between MIN_FREE_FREQ & MAX_FREE_FREQ if free = TRUE, and MIN_FREQ & MAX_FREQ if FALSE
Assembles a color matrix, defaulting to identity
Assembles a color matrix, defaulting to identity
Gets the version of rust_g
@depricated
Removes all non-alphanumerics from the text, keep in mind this can lead to id conflicts
Ensure the frequency is within bounds of what it should be sending/receiving at
Sanitizes a hexadecimal color. Always outputs lowercase.
+@params
+Makes sure the input color is text with a # at the start followed by 6 hexadecimal characters. Examples: "#ff1234", "#A38321", COLOR_GREEN_GRAY
Slightly expensive proc to scramble a message using equal probabilities of character replacement from a list. DOES NOT SUPPORT HTML!
Takes a screen loc string in the format +"+-left-offset:+-pixel,+-bottom-offset:+-pixel" +Where the :pixel is optional, and returns +A list in the format (x_offset, y_offset) +We require context to get info out of screen locs that contain relative info, so NORTH, SOUTH, etc
Finds and extracts seeds from an object
+Checks if the object is such that creates a seed when extracted. Used by seed +extractors or posably anything that would create seeds in some way. The seeds +are dropped either at the extractor, if it exists, or where the original object +was and it qdel's the object
+Arguments:
+Sends a message to TGS admin chat channels.
+category - The category of the mssage. +message - The message to send.
Sends a message to TGS chat channels.
+message - The message to send. +channel_tag - Required. If "", the message with be sent to all connected (Game-type for TGS3) channels. Otherwise, it will be sent to TGS4 channels with that tag (Delimited by ','s).
Sends a message to a set of cross-communications-enabled servers using world topic calls
+Arguments:
+Global proc that sets up all MOD themes as singletons in a list and returns it.
Makes a typecache of a single typecache
+Obviously in BYOND we don't have the efficiency around here to have proper enforcement so +If you use this you better know what you're doing. The list you get back is globally cached and if it's modified, you might break multiple things.
Makes you speak like you're drunk
Convert random parts of a passed in message to stars
+This proc is dangerously laggy, avoid it or die
A utility function for /datum/strippable_items to start unequipping an item from a mob.
stripped_multiline_input but reflects to the user instead if it's too big and returns null.
Adds stuttering to the message passed in
DEPRECATED: USE tgui_alert(...) INSTEAD
+Designed as a drop in replacement for alert(); functions the same. (outside of needing User specified) +Arguments:
+Middleware for /client/Topic.
+return bool If TRUE, prevents propagation of the topic call.
Creates a TGUI alert window and returns the user's response.
+This proc should be used to create alerts that the caller will wait for a response from. +Arguments:
+Creates an asynchronous TGUI alert window with an associated callback.
+This proc should be used to create alerts that invoke a callback with the user's chosen option. +Arguments:
+Creates a TGUI input list window and returns the user's response.
+This proc should be used to create alerts that the caller will wait for a response from. +Arguments:
+Creates an asynchronous TGUI input list window with an associated callback.
+This proc should be used to create inputs that invoke a callback with the user's chosen option. +Arguments:
+Get the remaining deciseconds on a timer
+Arguments:
+Sends the message to the recipient (target).
+Recommended way to write to_chat calls:
+to_chat(client,
+ type = MESSAGE_TYPE_INFO,
+ html = "You have found <strong>[object]</strong>")
+Circumvents the message queue and sends the message +to the recipient (target) as soon as possible.
constructs a transform matrix, defaulting to identity
Like typesof() or subtypesof(), but returns a typecache instead of a list
Returns a UI status such that the dead will be able to watch, but not interact.
Returns a UI status such that silicons will be able to interact with whatever +they would have access to if this was a machine. For example, AIs can +interact if there's cameras with wireless control is enabled.
Returns a UI status such that those without blocked hands will be able to interact, +but everyone else can only watch.
Returns a UI status such that users with debilitating conditions, such as +being dead or not having power for silicons, will not be able to interact. +Being dead will disable UI, being incapacitated will continue updating it, +and anything else will make it interactive.
Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living] check for finer observer interactions.
Returns a UI status such that advanced tool users will be able to interact, +but everyone else can only watch.
Returns UI_INTERACTIVE if the user is conscious and lying down. +Returns UI_UPDATE otherwise.
Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not. +Return UI_CLOSE otherwise.
Opposite of format, returns as a number
Return html to load a url. +for use inside of browse() calls to html assets that might be loaded on a cdn.
Checks whether the target turf is in a valid state to accept a directional window +or other directional pseudo-dense object such as railings.
+Returns FALSE if the target turf cannot accept a directional window or railing. +Returns TRUE otherwise.
+Arguments:
+FermiChem
Takes a string or num view, and converts it to pixel width/height in a list(pixel_width, pixel_height)
VOICE OF GOD
Creates a wave explosion at a certain place
Displays wounds with extended information on their status vs medscanners
For finding out what body parts a body zone covers, the inverse of the below basically
Vars | |
| realized_overlays | List of overlay "keys" (info about the appearance) -> mutable versions of static appearances +Drawn from the overlays list |
|---|---|
| realized_underlays | List of underlay "keys" (info about the appearance) -> mutable versions of static appearances +Drawn from the underlays list |
Procs | |
| debug_variable_value | Makes nice short vv names for images |
| get_vv_link_ref | Returns the ref string to use when displaying this image in the vv menu of something else |
| realize_overlays | Takes the image's existing overlays, and makes them mutable so they can be properly vv'd in the realized_overlays list |
| vv_get_header | Shows a header name on top when you investigate an appearance/image |
List of overlay "keys" (info about the appearance) -> mutable versions of static appearances +Drawn from the overlays list
List of underlay "keys" (info about the appearance) -> mutable versions of static appearances +Drawn from the underlays list
Makes nice short vv names for images
Returns the ref string to use when displaying this image in the vv menu of something else
Takes the image's existing overlays, and makes them mutable so they can be properly vv'd in the realized_overlays list
Shows a header name on top when you investigate an appearance/image
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)TGUI_CREATE_MESSAGE is correctly implemented| /datum/font | A font datum, it exists to define a custom font to use in a span style later. |
|---|
| /datum/font/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 |
|---|---|
| /datum/font/grand9k/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 |
|
| /datum/font/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 |
|---|---|
| /datum/font/pixellari/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 |
| /datum/font/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 |
|---|---|
| /datum/font/spessfont/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 |
| /datum/font/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 |
|---|---|
| /datum/font/tiny_unicode/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 |
CLICKDELAY HANDLING SYSTEM +How this works is mobs can never do actions until their next_action is at or below world.time, but things can specify extra cooldown +to check for either from the time of last_action or from the end of next_action.
+Clickdelay should always be checked via [CheckActionCooldown()], never manually!
Vars | |
| LAssailant | The last mob/living/carbon to push/drag/grab this mob (mostly used by slimes friend recognition) |
|---|---|
| ability_actions | ability = action button instance. |
| ability_properties | ability = list(data). see __DEFINES/mobs/innate_abilities.dm |
| action_cooldown_adjust | Simple modification variable added to amount on adjust and on checking time since last action using [CheckActionCooldown()]. +This should only be manually modified via addition. |
| action_cooldown_mod | Simple modification variable multiplied to next action modifier on adjust and on checking time since last action using [CheckActionCooldown()]. +This should only be manually modified using multipliers. |
| actionspeed_mod_immunities | List of action speed modifiers ignored by this mob. List -> List (id) -> List (sources) |
| actionspeed_modification | List of action speed modifiers applying to this mob |
| cached_multiplicative_actions_slowdown | The calculated mob action speed slowdown based on the modifiers list |
| cached_multiplicative_slowdown | The calculated mob speed slowdown based on the modifiers list |
| deathsound | The sound made on death |
| do_afters | For storing what do_after's someone has, in case we want to restrict them to only one of a certain do_after at a time |
| focus | What receives our keyboard input. src by default. |
| fullscreens | Fullscreen objects |
| innate_abilities | Ability system based on action buttons. Can be ported to base /mob or /mob/living later if needed, easily - the procs are currently on living/carbon/human/innate_abilities.dm +datum traits-style lazylist of abilities |
| last_action | Generic clickdelay variable. Marks down the last world.time we did something that should cause or impact generic clickdelay. This should be directly set or set using [DelayNextAction()]. This should only be checked using [CheckActionCooldown()]. |
| last_action_immediate | The difference between the above and this is this is set immediately before even the pre-attack begins to ensure clickdelay is respected. +Then, it is flushed or discarded using [FlushLastAttack()] or [DiscardLastAttack()] respectively. |
| mob_transforming | Whether or not the mob is currently being transformed into another mob or into another state of being. This will prevent it from moving or doing realistically anything. +Don't you DARE use this for a cheap way to ensure someone is stunned in your code. |
| mock_client | A mock client, provided by tests and friends |
| movespeed_mod_immunities | List of movement speed modifiers ignored by this mob. List -> List (id) -> List (sources) |
| movespeed_modification | List of movement speed modifiers applying to this mob |
| next_action | Generic clickdelay variable. Next world.time we should be able to do something that respects generic clickdelay. This should be set using [DelayNextAction()] This should only be checked using [CheckActionCooldown()]. |
| next_action_immediate | Ditto |
| next_resist | Minimum world time for another resist. This should only be checked using [CheckResistCooldown()]. |
| resist_cooldown | How long we should wait before allowing another resist. This should only be manually modified using multipliers. |
| see_resized_others | var to know if one has the toggle activated or not |
| sound_environment_override | Override for sound_environments. If this is set the user will always hear a specific type of reverb (Instead of the area defined reverb) |
| tgui_open_uis | global |
| typing_indicator_current | Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays. |
| typing_indicator_enabled | ////TYPING INDICATORS/////// +Set to true if we want to show typing indicators. |
| typing_indicator_state | Default icon_state of our typing indicator. Currently only supports paths (because anything else is, as of time of typing this, unnecesary. |
| typing_indicator_timerid | The timer that will remove our indicator for early aborts (like when an user finishes their message) |
| unarmed_attack_speed | Default clickdelay for an UnarmedAttack() that successfully passes. Respects action_cooldown_mod. |
Procs | |
| CheckActionCooldown | Checks if we can do another action. +Returns TRUE if we can and FALSE if we cannot. |
| CheckResistCooldown | Checks if we can resist again. |
| CommonClickOn | Common mob click code |
| DelayNextAction | Applies a delay to next_action before we can do our next action. |
| DiscardCurrentAction | Discards last_action and next_action |
| Dizzy | Set the dizzyness of a mob to a passed in amount |
| EstimatedNextActionTime | Get estimated time of next attack. |
| FlushCurrentAction | Flushes last_action and next_action |
| GetActionCooldownAdjust | Gets action_cooldown_adjust |
| GetActionCooldownMod | Gets action_cooldown_mod. |
| Jitter | Set the jitter of a mob |
| Login | Run when a client is put in this mob or reconnets to byond and their client was on this mob |
| MarkResistTime | Mark the last resist as now. |
| Process_Spacemove | Process_Spacemove +Called by /client/Move() +For moving in space +return TRUE for movement 0 for none |
| SetNextAction | Sets our next action to. The difference is DelayNextAction cannot reduce next_action under any circumstances while this can. |
| add_actionspeed_modifier | Add a action speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID. |
| add_movespeed_modifier | Add a move speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID. |
| add_to_alive_mob_list | Adds the mob reference to the list of all mobs alive. If mob is cliented, it adds it to the list of all living player-mobs. |
| add_to_current_dead_players | Adds the cliented mob reference to either the list of dead player-mobs or to the list of observers, depending on how they joined the game. |
| add_to_current_living_antags | Adds the cliented mob reference to the list of living antag player-mobs. |
| add_to_current_living_players | Adds the cliented mob reference to the list of living player-mobs. If the mob is an antag, it adds it to the list of living antag player-mobs. |
| add_to_dead_mob_list | Adds the mob reference to the list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs. |
| add_to_mob_list | Adds the mob reference to the list and directory of all mobs. Called on Initialize(). |
| add_to_player_list | Adds the cliented mob reference to the list of all player-mobs, besides to either the of dead or alive player-mob lists, as appropriate. Called on Login(). |
| adjust_blindness | Adjust a mobs blindness by an amount |
| adjust_blurriness | Adjust the current blurriness of the mobs vision by amount |
| adjust_bodytemperature | Adjust the body temperature of a mob, with min/max settings |
| adjust_disgust | Adjust the disgust level of a mob |
| adjust_drugginess | Adjust the drugginess of a mob |
| adjust_nutrition | Adjust the nutrition of a mob |
| attempt_resist_grab | Proc to resist a grab. moving_resist is TRUE if this began by someone attempting to move. Return FALSE if still grabbed/failed to break out. Use this instead of resist_grab() directly. |
| audible_message | Show a message to all mobs in earshot of this one |
| blind_eyes | Sets a mob's blindness to an amount if it was not above it already, similar to how status effects work |
| blur_eyes | Make the mobs vision blurry |
| check_obscured_slots | Checks for slots that are currently obscured by other garments. |
| clear_fullscreen | Wipes a fullscreen of a certain category |
| clear_typing_indicator | Removes typing indicator. |
| create_chat_message | Creates a message overlay at a defined location for a given speaker |
| display_typing_indicator | Displays typing indicator. +@param timeout_override - Sets how long until this will disappear on its own without the user finishing their message or logging out. Defaults to src.typing_indicator_timeout +@param state_override - Sets the state that we will fetch. Defaults to src.get_typing_indicator_icon_state() +@param force - shows even if src.typing_indcator_enabled is FALSE. |
| dispose_rendering | destroys screen rendering. call on mob del |
| dropItemToGround | Used to drop an item (if it exists) to the ground. |
| equipped_speed_mods | Gets the combined speed modification of all worn items +Except base mob type doesnt really wear items |
| examinate | Examine a mob |
| generate_typing_indicator | Generates the mutable appearance for typing indicator. Should prevent stuck overlays. |
| get_ability_property | Gets an ability property |
| get_actionspeed_modifiers | Get the action speed modifiers list of the mob |
| get_active_hand | Get the bodypart for whatever hand we have active, Only relevant for carbons |
| get_config_multiplicative_speed | Get the global config movespeed of a mob by type |
| get_indicator_overlay | Fetches the typing indicator we'll use from GLOB.typing_indicator_overlays |
| get_movespeed_modifier_datum | Gets the movespeed modifier datum of a modifier on a mob. Returns null if not found. +DANGER: IT IS UP TO THE PERSON USING THIS TO MAKE SURE THE MODIFIER IS NOT MODIFIED IF IT HAPPENS TO BE GLOBAL/CACHED. |
| get_movespeed_modifiers | Get the move speed modifiers list of the mob |
| get_num_held_items | Find number of held items, multihand compatible |
| get_proc_holders | Gets all relevant proc holders for the browser statpenl |
| get_spells_for_statpanel | Convert a list of spells into a displyable list for the statpanel |
| get_status_tab_items | Adds this list to the output to the stat browser |
| get_top_level_mob | SUBTLE COMMAND |
| get_typing_indicator_icon_state | Gets the state we will use for typing indicators. Defaults to src.typing_indicator_state |
| grant_ability_from_source | Grants an ability from a source |
| handle_eye_contact | handle_eye_contact() is called when we examine() something. If we examine an alive mob with a mind who has examined us in the last second within 5 tiles, we make eye contact! |
| has_actionspeed_modifier | Is there a actionspeed modifier for this mob |
| has_movespeed_modifier | Is there a movespeed modifier for this mob |
| hide_fullscreens | Removes fullscreens from client but not the mob |
| init_rendering | initializes screen rendering. call on mob new |
| initialize_actionspeed | Adds a default action speed |
| onShuttleMove | Mob move procs |
| on_item_dropped | Mostly called by doUnEquip() +Like item dropped() on mob side. |
| overlay_fullscreen | Adds a fullscreen overlay |
| pointed | Point at an atom |
| reload_fullscreen | Ensures all fullscreens are on client. |
| reload_rendering | loads screen rendering. call on mob login |
| remove_ability_from_source | Removes an ability from a source |
| remove_actionspeed_modifier | Remove a action speed modifier from a mob, whether static or variable. |
| remove_from_alive_mob_list | Removes the mob reference from the list of all mobs alive. If mob is cliented, it removes it from the list of all living player-mobs. |
| remove_from_current_dead_players | Removes the mob reference from either the list of dead player-mobs or from the list of observers, depending on how they joined the game. |
| remove_from_current_living_antags | Removes the mob reference from the list of living antag player-mobs. |
| remove_from_current_living_players | Removes the mob reference from the list of living player-mobs. If the mob is an antag, it removes it from the list of living antag player-mobs. |
| remove_from_dead_mob_list | Remvoes the mob reference from list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs. |
| remove_from_mob_list | Removes the mob reference from the list and directory of all mobs. Called on Destroy(). |
| remove_from_player_list | Removes the mob reference from the list of all player-mobs, besides from either the of dead or alive player-mob lists, as appropriate. Called on Logout(). |
| remove_movespeed_modifier | Remove a move speed modifier from a mob, whether static or variable. |
| setGrabState | Updates the grab state of the mob and updates movespeed |
| set_ability_property | Sets an ability property |
| set_blindness | Force set the blindness of a mob to some level |
| set_blurriness | Set the mobs blurriness of vision to an amount |
| set_disgust | Set the disgust level of a mob |
| set_dizziness | FOrce set the dizzyness of a mob |
| set_drugginess | Set the drugginess of a mob |
| set_nutrition | Force set the mob nutrition |
| set_species | DNA MOB-PROCS |
| set_stat | Used to wrap stat setting to trigger on-stat-change functionality. +Must be used instead of directly setting a mob's stat var, +so that the signal is sent properly. |
| shared_ui_interaction | public |
| shuttleRotate | Mob rotate procs |
| total_multiplicative_slowdown | Calculate the total slowdown of all movespeed modifiers |
| update_action_buttons | This proc handles adding all of the mob's actions to their screen |
| update_actionspeed | Go through the list of actionspeed modifiers and calculate a final actionspeed. ANY ADD/REMOVE DONE IN UPDATE_actionspeed MUST HAVE THE UPDATE ARGUMENT SET AS FALSE! |
| update_blindness | proc that adds and removes blindness overlays when necessary |
| update_config_movespeed | Set or update the global movespeed config on a mob |
| update_movespeed | Go through the list of movespeed modifiers and calculate a final movespeed. ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE! |
| visible_message | Adds the functionality to self_message. |
| vv_edit_var | Handles the special case of editing the movement var |
| wipe_fullscreens | Wipes all fullscreens |
The last mob/living/carbon to push/drag/grab this mob (mostly used by slimes friend recognition)
ability = action button instance.
ability = list(data). see __DEFINES/mobs/innate_abilities.dm
Simple modification variable added to amount on adjust and on checking time since last action using [CheckActionCooldown()]. +This should only be manually modified via addition.
Simple modification variable multiplied to next action modifier on adjust and on checking time since last action using [CheckActionCooldown()]. +This should only be manually modified using multipliers.
List of action speed modifiers ignored by this mob. List -> List (id) -> List (sources)
List of action speed modifiers applying to this mob
The calculated mob action speed slowdown based on the modifiers list
The calculated mob speed slowdown based on the modifiers list
The sound made on death
+leave null for no sound. used for *deathgasp
For storing what do_after's someone has, in case we want to restrict them to only one of a certain do_after at a time
What receives our keyboard input. src by default.
Fullscreen objects
Ability system based on action buttons. Can be ported to base /mob or /mob/living later if needed, easily - the procs are currently on living/carbon/human/innate_abilities.dm +datum traits-style lazylist of abilities
Generic clickdelay variable. Marks down the last world.time we did something that should cause or impact generic clickdelay. This should be directly set or set using [DelayNextAction()]. This should only be checked using [CheckActionCooldown()].
The difference between the above and this is this is set immediately before even the pre-attack begins to ensure clickdelay is respected. +Then, it is flushed or discarded using [FlushLastAttack()] or [DiscardLastAttack()] respectively.
Whether or not the mob is currently being transformed into another mob or into another state of being. This will prevent it from moving or doing realistically anything. +Don't you DARE use this for a cheap way to ensure someone is stunned in your code.
A mock client, provided by tests and friends
List of movement speed modifiers ignored by this mob. List -> List (id) -> List (sources)
List of movement speed modifiers applying to this mob
Generic clickdelay variable. Next world.time we should be able to do something that respects generic clickdelay. This should be set using [DelayNextAction()] This should only be checked using [CheckActionCooldown()].
Ditto
Minimum world time for another resist. This should only be checked using [CheckResistCooldown()].
How long we should wait before allowing another resist. This should only be manually modified using multipliers.
var to know if one has the toggle activated or not
Override for sound_environments. If this is set the user will always hear a specific type of reverb (Instead of the area defined reverb)
global
+Tracks open UIs for a user.
Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays.
////TYPING INDICATORS/////// +Set to true if we want to show typing indicators.
Default icon_state of our typing indicator. Currently only supports paths (because anything else is, as of time of typing this, unnecesary.
The timer that will remove our indicator for early aborts (like when an user finishes their message)
Default clickdelay for an UnarmedAttack() that successfully passes. Respects action_cooldown_mod.
Checks if we can do another action. +Returns TRUE if we can and FALSE if we cannot.
+@params
+Checks if we can resist again.
Common mob click code
Applies a delay to next_action before we can do our next action.
+@params
+Discards last_action and next_action
Set the dizzyness of a mob to a passed in amount
+Except if dizziness is already higher in which case it does nothing
Get estimated time of next attack.
Flushes last_action and next_action
Gets action_cooldown_adjust
Gets action_cooldown_mod.
Set the jitter of a mob
Run when a client is put in this mob or reconnets to byond and their client was on this mob
+Things it does:
+Mark the last resist as now.
+@params
+Process_Spacemove +Called by /client/Move() +For moving in space +return TRUE for movement 0 for none
Sets our next action to. The difference is DelayNextAction cannot reduce next_action under any circumstances while this can.
Add a action speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID.
Add a move speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID.
Adds the mob reference to the list of all mobs alive. If mob is cliented, it adds it to the list of all living player-mobs.
Adds the cliented mob reference to either the list of dead player-mobs or to the list of observers, depending on how they joined the game.
Adds the cliented mob reference to the list of living antag player-mobs.
Adds the cliented mob reference to the list of living player-mobs. If the mob is an antag, it adds it to the list of living antag player-mobs.
Adds the mob reference to the list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs.
Adds the mob reference to the list and directory of all mobs. Called on Initialize().
Adds the cliented mob reference to the list of all player-mobs, besides to either the of dead or alive player-mob lists, as appropriate. Called on Login().
Adjust a mobs blindness by an amount
+Will apply the blind alerts if needed
Adjust the current blurriness of the mobs vision by amount
Adjust the body temperature of a mob, with min/max settings
Adjust the disgust level of a mob
Adjust the drugginess of a mob
Adjust the nutrition of a mob
Proc to resist a grab. moving_resist is TRUE if this began by someone attempting to move. Return FALSE if still grabbed/failed to break out. Use this instead of resist_grab() directly.
Show a message to all mobs in earshot of this one
+This would be for audible actions by the src mob
+vars:
+Sets a mob's blindness to an amount if it was not above it already, similar to how status effects work
Make the mobs vision blurry
Checks for slots that are currently obscured by other garments.
Wipes a fullscreen of a certain category
+Second argument is for animation delay.
Removes typing indicator.
Creates a message overlay at a defined location for a given speaker
+Arguments:
+Displays typing indicator. +@param timeout_override - Sets how long until this will disappear on its own without the user finishing their message or logging out. Defaults to src.typing_indicator_timeout +@param state_override - Sets the state that we will fetch. Defaults to src.get_typing_indicator_icon_state() +@param force - shows even if src.typing_indcator_enabled is FALSE.
destroys screen rendering. call on mob del
Used to drop an item (if it exists) to the ground.
+Gets the combined speed modification of all worn items +Except base mob type doesnt really wear items
Examine a mob
+mob verbs are faster than object verbs. See +this byond forum post +for why this isn't atom/verb/examine()
Generates the mutable appearance for typing indicator. Should prevent stuck overlays.
Gets an ability property
Get the action speed modifiers list of the mob
Get the bodypart for whatever hand we have active, Only relevant for carbons
Get the global config movespeed of a mob by type
Fetches the typing indicator we'll use from GLOB.typing_indicator_overlays
Gets the movespeed modifier datum of a modifier on a mob. Returns null if not found. +DANGER: IT IS UP TO THE PERSON USING THIS TO MAKE SURE THE MODIFIER IS NOT MODIFIED IF IT HAPPENS TO BE GLOBAL/CACHED.
Get the move speed modifiers list of the mob
Find number of held items, multihand compatible
Gets all relevant proc holders for the browser statpenl
Convert a list of spells into a displyable list for the statpanel
+Shows charge and other important info
Adds this list to the output to the stat browser
SUBTLE COMMAND
Gets the state we will use for typing indicators. Defaults to src.typing_indicator_state
Grants an ability from a source
handle_eye_contact() is called when we examine() something. If we examine an alive mob with a mind who has examined us in the last second within 5 tiles, we make eye contact!
+Note that if either party has their face obscured, the other won't get the notice about the eye contact +Also note that examine_more() doesn't proc this or extend the timer, just because it's simpler this way and doesn't lose much. +The nice part about relying on examining is that we don't bother checking visibility, because we already know they were both visible to each other within the last second, and the one who triggers it is currently seeing them
Is there a actionspeed modifier for this mob
Is there a movespeed modifier for this mob
Removes fullscreens from client but not the mob
initializes screen rendering. call on mob new
Adds a default action speed
Mob move procs
Mostly called by doUnEquip() +Like item dropped() on mob side.
Adds a fullscreen overlay
+@params
+Point at an atom
+mob verbs are faster than object verbs. See +this byond forum post +for why this isn't atom/verb/pointed()
+note: ghosts can point, this is intended
+visible_message will handle invisibility properly
+overridden here and in /mob/dead/observer for different point span classes and sanity checks
Ensures all fullscreens are on client.
loads screen rendering. call on mob login
Removes an ability from a source
Remove a action speed modifier from a mob, whether static or variable.
Removes the mob reference from the list of all mobs alive. If mob is cliented, it removes it from the list of all living player-mobs.
Removes the mob reference from either the list of dead player-mobs or from the list of observers, depending on how they joined the game.
Removes the mob reference from the list of living antag player-mobs.
Removes the mob reference from the list of living player-mobs. If the mob is an antag, it removes it from the list of living antag player-mobs.
Remvoes the mob reference from list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs.
Removes the mob reference from the list and directory of all mobs. Called on Destroy().
Removes the mob reference from the list of all player-mobs, besides from either the of dead or alive player-mob lists, as appropriate. Called on Logout().
Remove a move speed modifier from a mob, whether static or variable.
Updates the grab state of the mob and updates movespeed
Sets an ability property
Force set the blindness of a mob to some level
Set the mobs blurriness of vision to an amount
Set the disgust level of a mob
FOrce set the dizzyness of a mob
Set the drugginess of a mob
Force set the mob nutrition
DNA MOB-PROCS
Used to wrap stat setting to trigger on-stat-change functionality. +Must be used instead of directly setting a mob's stat var, +so that the signal is sent properly.
public
+Standard interaction/sanity checks. Different mob types may have overrides.
+return UI_state The state of the UI.
Mob rotate procs
Calculate the total slowdown of all movespeed modifiers
This proc handles adding all of the mob's actions to their screen
+If you just need to update existing buttons, use [/mob/proc/update_mob_action_buttons]!
+Arguments:
+Go through the list of actionspeed modifiers and calculate a final actionspeed. ANY ADD/REMOVE DONE IN UPDATE_actionspeed MUST HAVE THE UPDATE ARGUMENT SET AS FALSE!
proc that adds and removes blindness overlays when necessary
Set or update the global movespeed config on a mob
Go through the list of movespeed modifiers and calculate a final movespeed. ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE!
Adds the functionality to self_message.
Handles the special case of editing the movement var
Wipes all fullscreens
Vars | |
| age_gate_result | Is there a result we want to read from the age gate |
|---|---|
| ineligible_for_roles | Used to make sure someone doesn't get spammed with messages if they're ineligible for roles |
| new_character | For instant transfer once the round is set up |
| reset_hud_cooldown | Cooldown for the Reset Lobby Menu HUD verb |
| spawning | Referenced when you want to delete the new_player later on in the code. |
Procs | |
| reset_menu_hud | Resets the Lobby Menu HUD, recreating and reassigning it to the new player |
| respawn_latejoin_check | Checks if we can latejoin on the currently selected slot, taking into account respawn status. |
| vote_on_irv_poll | Processes vote form data and saves results to the database for an IRV type poll. |
| vote_on_multi_poll | Processes vote form data and saves results to the database for a multiple choice type poll. |
Is there a result we want to read from the age gate
Used to make sure someone doesn't get spammed with messages if they're ineligible for roles
For instant transfer once the round is set up
Cooldown for the Reset Lobby Menu HUD verb
Referenced when you want to delete the new_player later on in the code.
Resets the Lobby Menu HUD, recreating and reassigning it to the new player
Checks if we can latejoin on the currently selected slot, taking into account respawn status.
Processes vote form data and saves results to the database for an IRV type poll.
Processes vote form data and saves results to the database for a multiple choice type poll.
Procs | |
| do_respawn | Handles respawning |
|---|---|
| respawn | Attempts to respawn. |
| time_left_to_respawn | Gets time left until we can respawn. Returns 0 if we can respawn now. |
| transfer_to_lobby | Actual proc that removes us and puts us back on lobby |
Handles respawning
Attempts to respawn.
Gets time left until we can respawn. Returns 0 if we can respawn now.
Actual proc that removes us and puts us back on lobby
+Returns the new mob.
Mob Living
Vars | |
| active_block_item | The item the user is actively blocking with if any. |
|---|---|
| active_parry_item | The itme the user is currently parrying with, if any. |
| block_parry_data | Our block_parry_data for unarmed blocks/parries. Currently only used for parrying, as unarmed block isn't implemented yet. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING! |
| buckle_message_cooldown | Next world.time when we can get the "you can't move while buckled to [thing]" message. |
| combat_flags | / CITADEL STATION COMBAT //// +See __DEFINES/combat.dm |
| combatmessagecooldown | Next world.time when we will show a visible message on entering combat mode voluntarily again. |
| default_block_parry_data | Default |
| last_autoparry | Last autoparry |
| next_preyloop | Next time vore sounds get played for the prey, do not change manually as it is intended to be set automatically |
| parry_end_time_last | world.time of last parry end |
| parry_start_time | world.time of parry action start |
| parry_visual_effect | Current parry effect. |
| parrying | Whether or not the user is in the middle of an active parry. Set to UNARMED_PARRY, [ITEM_PARRY], [MARTIAL_PARRY] if parrying. |
| pugilist_block_parry_data | If we're a pugilist |
| stamina_buffer | Our stamina buffer |
| stamina_buffer_last_use | Last time we used stamina buffer |
| stamina_buffer_regen_last | Last time stamina buffer regen was done |
| stamina_buffer_regen_mod | Stamina buffer regen modifier |
| successful_parries | Successful parries within the current parry cycle. It's a list of efficiency percentages. |
| successful_parry_counterattacks | Current parry counterattacks. Makes sure we can only counterattack someone once per parry. |
| vore_organs | List of vore containers inside a mob |
| vore_selected | Default to no vore capability. |
| vore_smell | What the character smells like |
| vore_taste | What the character tastes like |
Procs | |
| BiologicalLife | Handles biological life processes like chemical metabolism, breathing, etc +Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop. |
| HealAllImmobilityUpTo | Makes sure all 5 of the non-knockout immobilizing status effects are lower or equal to amount. |
| IsDazed | DAZED |
| IsFrozen | FROZEN |
| IsImmobilized | IMMOBILIZED |
| IsKnockdown | KNOCKDOWN |
| IsParalyzed | PARALYZED |
| IsSleeping | SLEEPING |
| IsStaggered | STAGGERED |
| IsStun | STUN |
| IsUnconscious | UNCONSCIOUS |
| Life | Called by SSmobs at an interval of 2 seconds. +Splits off into PhysicalLife() and BiologicalLife(). Override those instead of this. |
| PhysicalLife | Handles physical life processes like being on fire. Don't ask why this is considered "Life". +Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop. |
| RechargeStaminaBuffer | Boosts our stamina buffer by this much. |
| ShoveOffBalance | OFF BALANCE/SHOVIES |
| UpdateStaminaBuffer | Updates our stamina buffer amount. |
| UseStaminaBuffer | Attempts to use an amount of stamina from our stamina buffer. +Does not use anything if we don't have enough. |
| active_block_effect_end | Visual effect cleanup for starting a directional block |
| active_block_effect_start | Visual effect setup for starting a directional block |
| active_parry_reflex_counter | Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack. |
| add_movespeed_mod_immunities | Ignores specific slowdowns. Accepts a list of slowdowns. |
| add_quirk | DISABILITIES |
| add_stun_absorption | STUN ABSORPTION |
| apply_damage | Applies damage to this mob |
| attempt_auto_parry | Attempts to automatically parry an attacker. |
| bleedDragAmount | Returns how much blood we're losing from being dragged a tile, from [mob/living/proc/makeTrail] |
| can_move_under_living | whether or not we can slide under another living mob. defaults to if we're not dense. CanPass should check "overriding circumstances" like buckled mobs/having PASSMOB flag, etc. |
| check_unarmed_parry_activation_special | Check if we can unarmed parry |
| create_smallsprite | Generate the image based on the mob's current icon and apply matrix transformations to adjust its position and angle |
| cure_blind | TRAIT PROCS |
| determine_parry_method | Massive snowflake proc for getting something to parry with. |
| do_resist | The actual proc for resisting. Return TRUE to give CLICK_CD_RESIST clickdelay. |
| do_run_block | |
| electrocute_act | As the name suggests, this should be called to apply electric shocks. |
| end_parry_sequence | Called via timer when the parry sequence ends. |
| find_active_block_item | Gets the first item we can that can block, but if that fails, default to active held item.COMSIG_ENABLE_COMBAT_MODE |
| find_backup_parry_item | Tries to find a backup parry item. +Does not look at active held item. |
| get_blocking_items | Gets an unsortedlist of objects to run block checks on. List must have associative values for priorities! |
| get_equipped_items | Used to return a list of equipped items on a mob; does not include held items (use get_all_gear) |
| get_parry_data | Gets the datum/block_parry_data we're going to use to parry. |
| get_parry_stage | Gets the stage of our parry sequence we're currently in. |
| get_parry_time | Gets the current decisecond "frame" of an active parry. |
| handle_block_parry | Called every life tick to handle blocking/parrying effects. |
| handle_parry_ending_effects | Handles ending effects for parrying. |
| handle_parry_starting_effects | Handles starting effects for parrying. |
| hasparasites | parasite tracking/finding procs |
| hud_set_nanite_indicator | Diagnostic HUDs! |
| ignore_slowdown | Ignores all slowdowns that lack the IGNORE_NOSLOW flag. |
| initiate_parry_sequence | Initiates a parrying sequence. |
| keybind_parry | Called from keybindings. |
| keybind_start_active_blocking | Proc called by keybindings to start active blocking. |
| keybind_stop_active_blocking | Proc called by keybindings to stop active blocking. |
| keybind_toggle_active_blocking | Proc called by keybindings to toggle active blocking. |
| regenerate_smallsprite | Call to regenerate the sprites and update huds. |
| remove_movespeed_mod_immunities | Unignores specific slowdowns. Accepts a list of slowdowns. |
| resist | Resist verb for attempting to get out of whatever is restraining your motion. Gives you resist clickdelay if do_resist() returns true. |
| run_parry | same return values as normal blocking, called with absolute highest priority in the block "chain". |
| run_parry_countereffects | Run counterattack if any |
| shared_living_ui_distance | public |
| subtle | VERB CODE |
| subtler | VERB CODE 2 |
| subtler_table | VERB CODE 3 |
| transfer_blood_to | BLOOD TRANSFERS |
| unignore_slowdown | Unignores all slowdowns that lack the IGNORE_NOSLOW flag. |
The item the user is actively blocking with if any.
The itme the user is currently parrying with, if any.
Our block_parry_data for unarmed blocks/parries. Currently only used for parrying, as unarmed block isn't implemented yet. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING!
Next world.time when we can get the "you can't move while buckled to [thing]" message.
/ CITADEL STATION COMBAT //// +See __DEFINES/combat.dm
Next world.time when we will show a visible message on entering combat mode voluntarily again.
Default
Last autoparry
Next time vore sounds get played for the prey, do not change manually as it is intended to be set automatically
world.time of last parry end
world.time of parry action start
Current parry effect.
Whether or not the user is in the middle of an active parry. Set to UNARMED_PARRY, [ITEM_PARRY], [MARTIAL_PARRY] if parrying.
If we're a pugilist
Our stamina buffer
Last time we used stamina buffer
Last time stamina buffer regen was done
Stamina buffer regen modifier
Successful parries within the current parry cycle. It's a list of efficiency percentages.
Current parry counterattacks. Makes sure we can only counterattack someone once per parry.
List of vore containers inside a mob
Default to no vore capability.
What the character smells like
What the character tastes like
Handles biological life processes like chemical metabolism, breathing, etc +Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
Makes sure all 5 of the non-knockout immobilizing status effects are lower or equal to amount.
DAZED
FROZEN
IMMOBILIZED
KNOCKDOWN
PARALYZED
SLEEPING
STAGGERED
STUN
UNCONSCIOUS
Called by SSmobs at an interval of 2 seconds. +Splits off into PhysicalLife() and BiologicalLife(). Override those instead of this.
Handles physical life processes like being on fire. Don't ask why this is considered "Life". +Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
Boosts our stamina buffer by this much.
OFF BALANCE/SHOVIES
Updates our stamina buffer amount.
Attempts to use an amount of stamina from our stamina buffer. +Does not use anything if we don't have enough.
+Returns TRUE or FALSE based on if we have it.
Visual effect cleanup for starting a directional block
Visual effect setup for starting a directional block
Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
Ignores specific slowdowns. Accepts a list of slowdowns.
DISABILITIES
STUN ABSORPTION
Applies damage to this mob
+Sends [COMSIG_MOB_APPLY_DAMAGE]
+Arguuments:
+Returns TRUE if damage applied
Attempts to automatically parry an attacker.
Returns how much blood we're losing from being dragged a tile, from [mob/living/proc/makeTrail]
whether or not we can slide under another living mob. defaults to if we're not dense. CanPass should check "overriding circumstances" like buckled mobs/having PASSMOB flag, etc.
Check if we can unarmed parry
Generate the image based on the mob's current icon and apply matrix transformations to adjust its position and angle
TRAIT PROCS
Massive snowflake proc for getting something to parry with.
+@return list of [method, data, tool], where method is the parry method define, data is the block_parry_data var that must be run through return_block_parry_data, and tool is the concept/object/martial art/etc used.
The actual proc for resisting. Return TRUE to give CLICK_CD_RESIST clickdelay.
for populating return_list with blocking metadata.
+
+As the name suggests, this should be called to apply electric shocks.
Called via timer when the parry sequence ends.
Gets the first item we can that can block, but if that fails, default to active held item.COMSIG_ENABLE_COMBAT_MODE
Tries to find a backup parry item. +Does not look at active held item.
Gets an unsortedlist of objects to run block checks on. List must have associative values for priorities!
Used to return a list of equipped items on a mob; does not include held items (use get_all_gear)
+Argument(s):
+Gets the datum/block_parry_data we're going to use to parry.
Gets the stage of our parry sequence we're currently in.
Gets the current decisecond "frame" of an active parry.
Called every life tick to handle blocking/parrying effects.
Handles ending effects for parrying.
Handles starting effects for parrying.
parasite tracking/finding procs
Diagnostic HUDs!
Ignores all slowdowns that lack the IGNORE_NOSLOW flag.
Initiates a parrying sequence.
Called from keybindings.
Proc called by keybindings to start active blocking.
Proc called by keybindings to stop active blocking.
Proc called by keybindings to toggle active blocking.
Call to regenerate the sprites and update huds.
+Unignores specific slowdowns. Accepts a list of slowdowns.
Resist verb for attempting to get out of whatever is restraining your motion. Gives you resist clickdelay if do_resist() returns true.
same return values as normal blocking, called with absolute highest priority in the block "chain".
Run counterattack if any
public
+Distance versus interaction check.
+required src_object atom/movable The object which owns the UI.
+return UI_state The state of the UI.
VERB CODE
VERB CODE 2
VERB CODE 3
BLOOD TRANSFERS
Unignores all slowdowns that lack the IGNORE_NOSLOW flag.
Procs | |
| blind_eyes | EYE_BLIND |
|---|---|
| blur_eyes | EYE_BLURRY |
EYE_BLIND
EYE_BLURRY
Vars | |
| all_scars | All of the scars a carbon has afflicted throughout their limbs |
|---|---|
| all_wounds | All of the wounds a carbon has afflicted throughout their limbs |
| cold_protection | Protection (insulation) from the cold, Value 0-1 corresponding to the percentage of protection |
| heat_protection | Protection (insulation) from the heat, Value 0-1 corresponding to the percentage of protection |
| transformation_timer | Timer id of any transformation |
| weight_gain_rate | At what rate does the parent mob gain weight? 1 = 100% |
Procs | |
| adjustOrganLoss | |
| adjust_fatness | Adjusts the fatness level of the parent mob. |
| check_self_for_injuries | Check ourselves to see if we've got any shrapnel, return true if we do. This is a much simpler version of what humans do, we only indicate we're checking ourselves if there's actually shrapnel |
| check_virus | Medical HUD! Basic mode needs suit sensors on. |
| check_weight_prefs | Checks the parent mob's prefs to see if they can be fattened by the fattening_type |
| doSprintLossTiles | Sprint buffer |
| electrocute_act | Adds to the parent by also adding functionality to propagate shocks through pulling and doing some fluff effects. |
| fatness_until_next_level | How much real fatness does the current mob have to gain until they reach the next level? Return FALSE if they are maxed out. |
| generate_fake_scars | generate_fake_scars()- for when you want to scar someone, but you don't want to hurt them first. These scars don't count for temporal scarring (hence, fake) |
| getOrganLoss | |
| get_biological_state | get_biological_state is a helper used to see what kind of wounds we roll for. By default we just assume carbons (read:monkeys) are flesh and bone, but humans rely on their species datums |
| get_next_fatness_level | Finds what the next fatness level for the parent mob would be based off of fatness_real. |
| get_traumas | TRAUMAS |
| get_wounded_bodyparts | Returns a list of bodyparts with wounds (in case someone has a wound on an otherwise fully healed limb) |
| give | Proc called when offering an item to another player |
| humanize | Humanize |
| immortality | For the Wishgranter |
| remove_all_embedded_objects | Remove all embedded objects from all limbs on the carbon mob |
| remove_embedded_object | Remove a specific embedded item from the carbon mob |
| secondary_shock | Called slightly after electrocute act to reduce jittering and apply a secondary stun. |
| setOrganLoss | |
| take | Proc called when the player clicks the give alert |
| take_overall_damage | damage MANY bodyparts, in random order |
All of the scars a carbon has afflicted throughout their limbs
All of the wounds a carbon has afflicted throughout their limbs
Protection (insulation) from the cold, Value 0-1 corresponding to the percentage of protection
Protection (insulation) from the heat, Value 0-1 corresponding to the percentage of protection
Timer id of any transformation
At what rate does the parent mob gain weight? 1 = 100%
Adjusts the fatness level of the parent mob.
+Check ourselves to see if we've got any shrapnel, return true if we do. This is a much simpler version of what humans do, we only indicate we're checking ourselves if there's actually shrapnel
Medical HUD! Basic mode needs suit sensors on.
Checks the parent mob's prefs to see if they can be fattened by the fattening_type
Sprint buffer
Adds to the parent by also adding functionality to propagate shocks through pulling and doing some fluff effects.
How much real fatness does the current mob have to gain until they reach the next level? Return FALSE if they are maxed out.
generate_fake_scars()- for when you want to scar someone, but you don't want to hurt them first. These scars don't count for temporal scarring (hence, fake)
+If you want a specific wound scar, pass that wound type as the second arg, otherwise you can pass a list like WOUND_LIST_SLASH to generate a random cut scar.
+Arguments:
+get_biological_state is a helper used to see what kind of wounds we roll for. By default we just assume carbons (read:monkeys) are flesh and bone, but humans rely on their species datums
+go look at the species def for more info /datum/species/proc/get_biological_state
Finds what the next fatness level for the parent mob would be based off of fatness_real.
TRAUMAS
Returns a list of bodyparts with wounds (in case someone has a wound on an otherwise fully healed limb)
Proc called when offering an item to another player
+This handles creating an alert and adding an overlay to it
Humanize
For the Wishgranter
Remove all embedded objects from all limbs on the carbon mob
Remove a specific embedded item from the carbon mob
Called slightly after electrocute act to reduce jittering and apply a secondary stun.
set or clear the failing variable on that organ, making it either cease or start functions again, unlike adjustOrganLoss.
+
+Proc called when the player clicks the give alert
+Handles checking if the player taking the item has open slots and is in range of the offerer +Also deals with the actual transferring of the item to the players hands +Arguments:
+damage MANY bodyparts, in random order
Vars | |
| can_ventcrawl | Whether they can ventcrawl; this is set individually for 'humanoid' and 'royal' types +'royal' types (Praetorian, Queen) cannot ventcrawl |
|---|---|
| meleeKnockdownPower | How much power they have for DefaultCombatKnockdown when attacking humans |
| meleeSlashHumanPower | How much brute damage without armor piercing they do against mobs in melee |
| meleeSlashSAPower | How much brute damage they do to simple animals |
Whether they can ventcrawl; this is set individually for 'humanoid' and 'royal' types +'royal' types (Praetorian, Queen) cannot ventcrawl
How much power they have for DefaultCombatKnockdown when attacking humans
How much brute damage without armor piercing they do against mobs in melee
How much brute damage they do to simple animals
Vars | |
| afk_thefts | When an braindead player has their equipment fiddled with, we log that info here for when they come back so they know who took their ID while they were DC'd for 30 seconds |
|---|---|
| combat_flags | Enable stamina combat |
| grad_color | Colour used for the hair gradient. |
| grad_style | Style used for the hair gradient. |
Procs | |
| clothingonpart | Get all the clothing on a specific body part |
| copy_clothing_prefs | copies over clothing preferences like underwear to another human |
| electrocute_act | Calculates the siemens coeff based on clothing and species, can also restart hearts. |
| format_scars | For use formatting all of the scars this human has for saving for persistent scarring |
| get_equipped_items | Used to return a list of equipped items on a human mob; does not include held items (use get_all_gear) |
| handle_fire | FIRE CODE |
| load_scar | Takes a single scar from the persistent scar loader and recreates it from the saved data |
| sec_hud_set_ID | Security HUDs! Basic mode shows only the job. |
| something_horrible | DNA HELPER-PROCS |
| spec_trait_examine_font | |
When an braindead player has their equipment fiddled with, we log that info here for when they come back so they know who took their ID while they were DC'd for 30 seconds
Enable stamina combat
Colour used for the hair gradient.
Style used for the hair gradient.
Get all the clothing on a specific body part
copies over clothing preferences like underwear to another human
Calculates the siemens coeff based on clothing and species, can also restart hearts.
For use formatting all of the scars this human has for saving for persistent scarring
Used to return a list of equipped items on a human mob; does not include held items (use get_all_gear)
+Argument(s):
+FIRE CODE
Takes a single scar from the persistent scar loader and recreates it from the saved data
Security HUDs! Basic mode shows only the job.
DNA HELPER-PROCS
spec_trait_examine_font()This gets a humanoid's special examine font, which is used to color their species name during examine / health analyzing. +The first of these that applies is returned. +Returns:
+Vars | |
| emagged | Whether we have been emagged |
|---|---|
Procs | |
| get_ui_access | Returns a UI status representing this silicon's capability to access
+the given source. Called by ui_status_silicon_has_access. |
Whether we have been emagged
Returns a UI status representing this silicon's capability to access
+the given source. Called by ui_status_silicon_has_access.
Vars | |
| ai_announcement | Announcement UI |
|---|---|
| alert_control | Station alert datum for showing alerts UI |
| announcement_help | Lists possible spoken words for announcements |
| is_anchored | whether AI is anchored or not, used for checks |
| lastloc | remember AI's last location |
| opened | whether its cover is opened, so you can wirecut it for deconstruction |
| posibrain_inside | whether its mmi is a posibrain or regular mmi when going ai mob to ai core structure |
Announcement UI
Station alert datum for showing alerts UI
Lists possible spoken words for announcements
whether AI is anchored or not, used for checks
remember AI's last location
whether its cover is opened, so you can wirecut it for deconstruction
whether its mmi is a posibrain or regular mmi when going ai mob to ai core structure
Vars | |
| alert_control | Station alert datum for showing alerts UI |
|---|---|
| can_ride_typecache | What types of mobs are allowed to ride/buckle to this mob |
| disabled_modules | For checking which modules are disabled or not. |
| ident | Random serial number generated for each cyborg upon its initialization |
| lampButton | Lamp button reference |
| lamp_color | Set lamp color |
| lamp_doom | Set to true if a doomsday event is locking our lamp to on and RED |
| lamp_enabled | If the lamp is turned on |
| lamp_functional | If the lamp isn't broken. |
| lamp_intensity | Lamp brightness. Starts at 3, but can be 1 - 5. |
| modularInterface | The reference to the built-in tablet that borgs carry. |
| opened | If this is a path, this gets created as an object in Initialize. |
| previous_health | the last health before updating - to check net change in health |
| vtec_disabled | vtec shorted out |
Procs | |
| Exited | Checking Exited() to detect if a hat gets up and walks off. +Drones and pAIs might do this, after all. |
| activate_module | Finds the first available slot and attemps to put item item_module in it. |
| activated | Checks if the item is currently in a slot. |
| add_to_upgrades | Moves the upgrade inside the robot and registers relevant signals. |
| apply_upgrade | Called when a mob uses an upgrade on an open borg. Checks to make sure the upgrade can be applied |
| break_all_cyborg_slots | Breaks all of a cyborg's slots. |
| break_cyborg_slot | Breaks the slot number, changing the icon. |
| cycle_modules | Cycles through the list of enabled modules, deselecting the current one and selecting the next one. |
| deploy_init | deploy_init: Deploys AI unit into AI shell |
| deselect_module | Deselects the module in the slot module_num. +Arguments |
| equip_module_to_slot | Is passed an item and a module slot. Equips the item to that borg slot. |
| get_active_held_item | Returns the thing in our active hand (whatever is in our active module-slot, in this case) |
| get_selected_module | Returns the slot number of the selected module, or zero if no modules are selected. |
| is_invalid_module_number | Checks if the provided module number is a valid number. |
| logevent | Records an IC event log entry in the cyborg's internal tablet. |
| make_shell | make_shell: Makes an AI shell out of a cyborg unit |
| observer_screen_update | Updates the observers's screens with cyborg itemss. +Arguments |
| on_upgrade_deleted | Called when an applied upgrade is deleted. |
| remove_from_upgrades | Called when an upgrade is moved outside the robot. So don't call this directly, use forceMove etc. |
| repair_all_cyborg_slots | Repairs all slots. Unbroken slots are unaffected. |
| repair_cyborg_slot | Repairs the slot number, updating the icon. |
| revert_shell | revert_shell: Reverts AI shell back into a normal cyborg unit |
| select_module | Selects the module in the slot module_num. +Arguments |
| smash_headlamp | Handles headlamp smashing |
| toggle_headlamp | Handles headlamp toggling, disabling, and color setting. |
| toggle_module | Toggles selection of the module in the slot module_num. +Arguments |
| uneq_active | Unequips the active held item, if there is one. |
| uneq_all | Unequips all held items. |
| unequip_module_from_slot | Unequips item item_module from slot module_num. Deletes it if delete_after = TRUE. |
| update_icons | this is bad code |
Station alert datum for showing alerts UI
What types of mobs are allowed to ride/buckle to this mob
For checking which modules are disabled or not.
Random serial number generated for each cyborg upon its initialization
Lamp button reference
Set lamp color
Set to true if a doomsday event is locking our lamp to on and RED
If the lamp is turned on
If the lamp isn't broken.
Lamp brightness. Starts at 3, but can be 1 - 5.
The reference to the built-in tablet that borgs carry.
If this is a path, this gets created as an object in Initialize.
the last health before updating - to check net change in health
vtec shorted out
Checking Exited() to detect if a hat gets up and walks off. +Drones and pAIs might do this, after all.
Finds the first available slot and attemps to put item item_module in it.
+Arguments
+Checks if the item is currently in a slot.
+If the item is found in a slot, this returns TRUE. Otherwise, it returns FALSE
+Modified to accept items inside of grippers, used for code\modules\tgui\states\hands.dm:27
+Arguments
Moves the upgrade inside the robot and registers relevant signals.
Called when a mob uses an upgrade on an open borg. Checks to make sure the upgrade can be applied
Breaks all of a cyborg's slots.
Breaks the slot number, changing the icon.
+Arguments
+Cycles through the list of enabled modules, deselecting the current one and selecting the next one.
deploy_init: Deploys AI unit into AI shell
+Arguments:
+Deselects the module in the slot module_num. +Arguments
+Is passed an item and a module slot. Equips the item to that borg slot.
+Arguments
+Returns the thing in our active hand (whatever is in our active module-slot, in this case)
+Arguments
+Returns the slot number of the selected module, or zero if no modules are selected.
Checks if the provided module number is a valid number.
+If the number is between 1 and 3 (if check_all_slots is true) or between 1 and the number of disabled +modules (if check_all_slots is false), then it returns FALSE. Otherwise, it returns TRUE. +Arguments
+Records an IC event log entry in the cyborg's internal tablet.
+Creates an entry in the borglog list of the cyborg's internal tablet, listing the current +in-game time followed by the message given. These logs can be seen by the cyborg in their +BorgUI tablet app. By design, logging fails if the cyborg is dead.
+Arguments: +arg1: a string containing the message to log.
make_shell: Makes an AI shell out of a cyborg unit
+Arguments:
+Updates the observers's screens with cyborg itemss. +Arguments
+Called when an applied upgrade is deleted.
Called when an upgrade is moved outside the robot. So don't call this directly, use forceMove etc.
Repairs all slots. Unbroken slots are unaffected.
Repairs the slot number, updating the icon.
+Arguments
+revert_shell: Reverts AI shell back into a normal cyborg unit
Selects the module in the slot module_num. +Arguments
+Handles headlamp smashing
+When called (such as by the shadowperson lighteater's attack), this proc will break the borg's headlamp +and then call toggle_headlamp to disable the light. It also plays a sound effect of glass breaking, and +tells the borg what happened to its chat. Broken lights can be repaired by using a flashlight on the borg.
Handles headlamp toggling, disabling, and color setting.
+The initial if statment is a bit long, but the gist of it is that should the lamp be on AND the update_color +arg be true, we should simply change the color of the lamp but not disable it. Otherwise, should the turn_off +arg be true, the lamp already be enabled, any of the normal reasons the lamp would turn off happen, or the +update_color arg be passed with the lamp not on, we should set the lamp off. The update_color arg is only +ever true when this proc is called from the borg tablet, when the color selection feature is used.
+Arguments:
+Toggles selection of the module in the slot module_num. +Arguments
+Unequips the active held item, if there is one.
+Will always consider dropping gripper contents first.
Unequips all held items.
Unequips item item_module from slot module_num. Deletes it if delete_after = TRUE.
+Arguments
+this is bad code
Vars | |
| AIStatus | The Status of our AI, can be set to AI_ON (On, usual processing), AI_IDLE (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever), AI_Z_OFF (Temporarily off due to nonpresence of players). |
|---|---|
| access_card | Innate access uses an internal ID card. |
| animal_species | Sorry, no spider+corgi buttbabies. |
| armour_penetration | How much armour they ignore, as a flat reduction from the targets armour value. |
| 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 |
| attack_verb_continuous | Attacking verb in present continuous tense. |
| attack_verb_simple | Attacking verb in present simple tense. |
| attacked_sound | Played when someone punches the creature. |
| blood_volume | How much blud it has for bloodsucking |
| buffed | In the event that you want to have a buffing effect on the mob, but don't want it to stack with other effects, any outside force that applies a buff to a simple mob should at least set this to TRUE, so we have something to check against. |
| can_have_ai | once we have become sentient, we can never go back. |
| childtype | Hot simple_animal baby making vars. |
| damage_coeff | 1 for full damage , 0 for none , -1 for 1:1 heal from that source. |
| death_sound | The sound played on death. |
| del_on_death | causes mob to be deleted on death, useful for mobs that spawn lootable corpses. |
| dextrous | If the creature has, and can use, hands. |
| emote_hear | Hearable emotes |
| emote_see | Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps. |
| environment_smash | Set to 1 to allow breaking of crates,lockers,racks,tables; 2 for walls; 3 for Rwalls. |
| footstep_type | What kind of footstep this mob should have. Null if it shouldn't have any. |
| force_threshold | Minimum force required to deal any damage. |
| friendly_verb_continuous | Attacking, but without damage, verb in present continuous tense. |
| friendly_verb_simple | Attacking, but without damage, verb in present simple tense. |
| gold_core_spawnable | If the mob can be spawned with a gold slime core. HOSTILE_SPAWN are spawned with plasma, FRIENDLY_SPAWN are spawned with blood. |
| healable | Healable by medical stacks? Defaults to yes. |
| icon_dead | icon when the animal is dead. Don't use animated icons for this. |
| icon_gib | We only try to show a gibbing animation if this exists. |
| loot | list of things spawned at mob's loc when it dies. |
| melee_damage_lower | LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly. |
| melee_damage_type | Damage type of a simple mob's melee attack, should it do damage. |
| minbodytemp | Temperature effect. |
| my_z | I don't want to confuse this with client registered_z. |
| obj_damage | How much damage this simple animal does to objects, if any. |
| response_disarm_continuous | Disarm-intent verb in present continuous tense. |
| response_disarm_simple | Disarm-intent verb in present simple tense. |
| response_harm_continuous | Harm-intent verb in present continuous tense. |
| response_harm_simple | Harm-intent verb in present simple tense. |
| response_help_continuous | When someone interacts with the simple animal. +Help-intent verb in present continuous tense. |
| response_help_simple | Help-intent verb in present simple tense. |
| sentience_type | Sentience type, for slime potions. |
| shouldwakeup | convenience var for forcibly waking up an idling AI on next check. |
| speak_emote | Emotes while speaking IE: Ian [emote], [text] -- Ian barks, "WOOF!". Spoken text is generated from the speak variable. |
| speed | LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster. |
| stop_automated_movement | Use this to temporarely stop random movement or to if you write special movement code for animals. |
| stop_automated_movement_when_pulled | When set to 1 this stops the animal from moving when someone is pulling it. |
| tame | Domestication. |
| unsuitable_atmos_damage | This damage is taken when atmos doesn't fit all the requirements above. |
| wander | Does the mob wander around when idle? |
| weather_immunities | List of weather immunity traits that are then added on Initialize(), see traits.dm. |
The Status of our AI, can be set to AI_ON (On, usual processing), AI_IDLE (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever), AI_Z_OFF (Temporarily off due to nonpresence of players).
Innate access uses an internal ID card.
Sorry, no spider+corgi buttbabies.
How much armour they ignore, as a flat reduction from the targets armour value.
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
Attacking verb in present continuous tense.
Attacking verb in present simple tense.
Played when someone punches the creature.
How much blud it has for bloodsucking
In the event that you want to have a buffing effect on the mob, but don't want it to stack with other effects, any outside force that applies a buff to a simple mob should at least set this to TRUE, so we have something to check against.
once we have become sentient, we can never go back.
Hot simple_animal baby making vars.
1 for full damage , 0 for none , -1 for 1:1 heal from that source.
The sound played on death.
causes mob to be deleted on death, useful for mobs that spawn lootable corpses.
If the creature has, and can use, hands.
Hearable emotes
Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps.
Set to 1 to allow breaking of crates,lockers,racks,tables; 2 for walls; 3 for Rwalls.
What kind of footstep this mob should have. Null if it shouldn't have any.
Minimum force required to deal any damage.
Attacking, but without damage, verb in present continuous tense.
Attacking, but without damage, verb in present simple tense.
If the mob can be spawned with a gold slime core. HOSTILE_SPAWN are spawned with plasma, FRIENDLY_SPAWN are spawned with blood.
Healable by medical stacks? Defaults to yes.
icon when the animal is dead. Don't use animated icons for this.
We only try to show a gibbing animation if this exists.
list of things spawned at mob's loc when it dies.
LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly.
Damage type of a simple mob's melee attack, should it do damage.
Temperature effect.
I don't want to confuse this with client registered_z.
How much damage this simple animal does to objects, if any.
Disarm-intent verb in present continuous tense.
Disarm-intent verb in present simple tense.
Harm-intent verb in present continuous tense.
Harm-intent verb in present simple tense.
When someone interacts with the simple animal. +Help-intent verb in present continuous tense.
Help-intent verb in present simple tense.
Sentience type, for slime potions.
convenience var for forcibly waking up an idling AI on next check.
Emotes while speaking IE: Ian [emote], [text] -- Ian barks, "WOOF!". Spoken text is generated from the speak variable.
LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster.
Use this to temporarely stop random movement or to if you write special movement code for animals.
When set to 1 this stops the animal from moving when someone is pulling it.
Domestication.
This damage is taken when atmos doesn't fit all the requirements above.
Does the mob wander around when idle?
List of weather immunity traits that are then added on Initialize(), see traits.dm.
Procs | |
| get_mode_ui | Returns a status string about the bot's current status, if it's moving, manually controlled, or idle. |
|---|---|
Returns a status string about the bot's current status, if it's moving, manually controlled, or idle.
Procs | |
| check_bot_working | Checks a given turf to see if another floorbot is there, working as well. |
|---|---|
Checks a given turf to see if another floorbot is there, working as well.
Procs | |
| show_controls | Add these for now, until it is upgraded to TGUI. |
|---|---|
Add these for now, until it is upgraded to TGUI.
Vars | |
| listener | Alarm listener datum, handes caring about alarm events and such |
|---|---|
Alarm listener datum, handes caring about alarm events and such
Vars | |
| charge_cooldown | Declares a cooldown for potential charges right off the bat. |
|---|---|
| charge_distance | In a charge, how many tiles will the charger travel? |
| charge_frequency | How often can the charging mob actually charge? Effects the cooldown between charges. |
| charge_state | Tracks if the target is actively charging. |
| charger | When a target is found, will the mob attempt to charge at it's target? |
| knockdown_time | If the mob is charging, how long will it stun it's target on success, and itself on failure? |
Procs | |
| AICanContinue | AI Status |
| ListTargets | HOSTILE MOB TARGETTING AND AGGRESSION |
| charge_end | Proc that handles a charge attack after it's concluded. |
| death | END HOSTILE MOB TARGETTING AND AGGRESSION |
| enter_charge | Proc that handles a charge attack windup for a mob. |
| handle_charge_target | Proc that throws the mob at the target after the windup. |
| throw_impact | Proc that handles the charge impact of the charging mob. |
Declares a cooldown for potential charges right off the bat.
In a charge, how many tiles will the charger travel?
How often can the charging mob actually charge? Effects the cooldown between charges.
Tracks if the target is actively charging.
When a target is found, will the mob attempt to charge at it's target?
If the mob is charging, how long will it stun it's target on success, and itself on failure?
AI Status
HOSTILE MOB TARGETTING AND AGGRESSION
Proc that handles a charge attack after it's concluded.
END HOSTILE MOB TARGETTING AND AGGRESSION
Proc that handles a charge attack windup for a mob.
Proc that throws the mob at the target after the windup.
Proc that handles the charge impact of the charging mob.
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:
+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:
+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:
+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:
+Vars | |
| teleport_distance | Distance the demon will teleport from the target |
|---|---|
Distance the demon will teleport from the target
Vars | |
| fire_range | How far the whelps fire can go |
|---|---|
How far the whelps fire can go
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.
Vars | |
| aggressive_message_said | Message for when the polar bear starts to attack faster |
|---|---|
Message for when the polar bear starts to attack faster
Vars | |
| retreat_message_said | Message for when the wolf decides to start running away |
|---|---|
Message for when the wolf decides to start running away
Vars | |
| colored_disk_mouth | Location of the file storing disk overlays +Colored disk mouth appearance for adding it as a mouth overlay |
|---|---|
| disky | Keeping track of the nuke disk for the functionality of storing it. |
Location of the file storing disk overlays +Colored disk mouth appearance for adding it as a mouth overlay
Keeping track of the nuke disk for the functionality of storing it.
Vars | |
| theme | Theme controls color. THEME_CULT is red THEME_WIZARD is purple and THEME_HOLY is blue |
|---|---|
Procs | |
| update_health_hud | ui stuff |
Theme controls color. THEME_CULT is red THEME_WIZARD is purple and THEME_HOLY is blue
ui stuff
Vars | |
| spells_to_add | Innate spells that are supposed to be added when a beast is created |
|---|---|
Procs | |
| add_spells | Add_spells |
Innate spells that are supposed to be added when a beast is created
Add_spells
+Goes through spells_to_add and adds each spell to the mind.
Vars | |
| allow_pulling | Allow / disallow pulling |
|---|---|
| back | Previous segment in the chain |
| current_stacks | Currently eaten arms |
| front | Next segment in the chain |
| oldloc | Your old location |
| stacks_to_grow | How many arms do we have to eat to expand? |
Procs | |
| contract_next_chain_into_single_tile | Updates chain links to force move onto a single tile |
| update_chain_links | Updates the next mob in the chain to move to our last location, fixed the worm if somehow broken. |
Allow / disallow pulling
Previous segment in the chain
Currently eaten arms
Next segment in the chain
Your old location
How many arms do we have to eat to expand?
Updates chain links to force move onto a single tile
Updates the next mob in the chain to move to our last location, fixed the worm if somehow broken.
Vars | |
| music_datum | sigh, fine. |
|---|---|
sigh, fine.
Procs | |
| death | Removes gravity from affected mobs upon guardian death to prevent permanent effects |
|---|---|
Removes gravity from affected mobs upon guardian death to prevent permanent effects
Vars | |
| achievement_type | Achievement given to surrounding players when the megafauna is killed |
|---|---|
| anger_modifier | Modifies attacks when at lower health |
| attack_action_types | Attack actions, sets chosen_attack to the number in the action |
| chosen_attack | The chosen attack by the megafauna |
| crusher_achievement_type | Crusher achievement given to players when megafauna is killed |
| crusher_loot | Crusher loot dropped when the megafauna is killed with a crusher |
| elimination | If the megafauna was actually killed (not just dying, then transforming into another type) |
| internal | Internal tracking GPS inside fauna |
| nest_range | Range the megafauna can move from their nest (if they have one |
| recovery_time | Next time the megafauna can use a melee attack |
| score_achievement_type | Score given to players when megafauna is killed |
| small_sprite_type | If there is a small sprite icon for players controlling the megafauna to use |
| true_spawn | If this is a megafauna that is real (has achievements, gps signal) |
Procs | |
| SetRecoveryTime | Sets the next time the megafauna can use a melee or ranged attack, in deciseconds |
| grant_achievement | Grants medals and achievements to surrounding players |
Achievement given to surrounding players when the megafauna is killed
Modifies attacks when at lower health
Attack actions, sets chosen_attack to the number in the action
The chosen attack by the megafauna
Crusher achievement given to players when megafauna is killed
Crusher loot dropped when the megafauna is killed with a crusher
If the megafauna was actually killed (not just dying, then transforming into another type)
Internal tracking GPS inside fauna
Range the megafauna can move from their nest (if they have one
Next time the megafauna can use a melee attack
Score given to players when megafauna is killed
If there is a small sprite icon for players controlling the megafauna to use
If this is a megafauna that is real (has achievements, gps signal)
Sets the next time the megafauna can use a melee or ranged attack, in deciseconds
Grants medals and achievements to surrounding players
Procs | |
| attackby | Attack by override for bubblegum |
|---|---|
Attack by override for bubblegum
+This is used to award the frenching achievement for hitting bubblegum with a tongue
+Arguments:
+Vars | |
| enraged | If the demonic frost miner is in its enraged state |
|---|---|
| enraging | If the demonic frost miner is currently transforming to its enraged state |
| projectile_speed_multiplier | Modifies the speed of the projectiles the demonic frost miner shoots out |
Procs | |
| check_enraged | Checks if the demonic frost miner is ready to be enraged |
| frost_orbs | Shoots out homing frost orbs that explode into ice blast projectiles after a couple seconds |
| ice_shotgun | Shoots out ice blasts in a shotgun like pattern |
| snowball_machine_gun | Shoots out snowballs with a random spread |
If the demonic frost miner is in its enraged state
If the demonic frost miner is currently transforming to its enraged state
Modifies the speed of the projectiles the demonic frost miner shoots out
Checks if the demonic frost miner is ready to be enraged
Shoots out homing frost orbs that explode into ice blast projectiles after a couple seconds
Shoots out ice blasts in a shotgun like pattern
Shoots out snowballs with a random spread
Procs | |
| AttackingTarget | In addition to parent functionality, this will also turn the target into a small legion if they are unconcious. |
|---|---|
| Split | Splits legion into smaller skulls. |
| adjustHealth | This makes sure that the legion door opens on taking damage, so you can't cheese this boss. |
| charge_target | Attack proc. Gives legion some movespeed buffs and switches the AI to melee. At lower sizes, this also throws the skull at the player. |
| create_legion_skull | Attack proc. Spawns a singular legion skull. |
| create_legion_turrets | Attack proc. Creates up to three legion turrets on suitable turfs nearby. |
| death | Special snowflake death() here. Can only die if size is 1 or lower and HP is 0 or below. |
| reset_charge | Resets the charge buffs. |
| setVarsAfterSplit | Sets the variables for new legion skulls. Usually called after splitting. |
| throw_impact | Deals some extra damage on throw impact. |
| throw_thyself | This is the proc that actually does the throwing. Charge only adds a timer for this. |
In addition to parent functionality, this will also turn the target into a small legion if they are unconcious.
Splits legion into smaller skulls.
This makes sure that the legion door opens on taking damage, so you can't cheese this boss.
Attack proc. Gives legion some movespeed buffs and switches the AI to melee. At lower sizes, this also throws the skull at the player.
Attack proc. Spawns a singular legion skull.
Attack proc. Creates up to three legion turrets on suitable turfs nearby.
Special snowflake death() here. Can only die if size is 1 or lower and HP is 0 or below.
Resets the charge buffs.
Sets the variables for new legion skulls. Usually called after splitting.
Deals some extra damage on throw impact.
This is the proc that actually does the throwing. Charge only adds a timer for this.
Vars | |
| can_move | If the wendigo is allowed to move |
|---|---|
| starting | Saves the turf the megafauna was created at (spawns exit portal here) |
| stomp_range | Range for wendigo stomping when it moves |
| stored_move_dirs | Stores directions the mob is moving, then calls that a move has fully ended when these directions are removed in moved |
Procs | |
| disorienting_scream | Shakes all nearby enemies screens and animates the wendigo shaking up and down |
| ground_slam | Slams the ground around the wendigo throwing back enemies caught nearby |
| heavy_stomp | Larger but slower ground stomp |
| teleport | Teleports to a location 4 turfs away from the enemy in view |
If the wendigo is allowed to move
Saves the turf the megafauna was created at (spawns exit portal here)
Range for wendigo stomping when it moves
Stores directions the mob is moving, then calls that a move has fully ended when these directions are removed in moved
Shakes all nearby enemies screens and animates the wendigo shaking up and down
Slams the ground around the wendigo throwing back enemies caught nearby
Larger but slower ground stomp
Teleports to a location 4 turfs away from the enemy in view
Procs | |
| be_fruitful | Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats. |
|---|---|
Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats.
Procs | |
| Initialize | Number assigned to rats and mice, checked when determining infighting. |
|---|---|
Number assigned to rats and mice, checked when determining infighting.
A space-faring leviathan-esque monster which breathes fire and summons carp. Spawned during its respective midround antagonist event.
+A space-faring monstrosity who has the ability to breathe dangerous fire breath and uses its powerful wings to knock foes away. +Normally spawned as an antagonist during the Space Dragon event, Space Dragon's main goal is to open three rifts from which to pull a great tide of carp onto the station. +Space Dragon can summon only one rift at a time, and can do so anywhere a blob is allowed to spawn. In order to trigger his victory condition, Space Dragon must summon and defend three rifts while they charge. +Space Dragon, when spawned, has five minutes to summon the first rift. Failing to do so will cause Space Dragon to return from whence he came. +When the rift spawns, ghosts can interact with it to spawn in as space carp to help complete the mission. One carp is granted when the rift is first summoned, with an extra one every 30 seconds. +Once the victory condition is met, all current rifts become invulnerable to damage, are allowed to spawn infinite sentient space carp, and Space Dragon gets unlimited rage. +Alternatively, if the shuttle arrives while Space Dragon is still active, their victory condition will automatically be met and all the rifts will immediately become fully charged. +If a charging rift is destroyed, Space Dragon will be incredibly slowed, and the endlag on his gust attack is greatly increased on each use. +Space Dragon has the following abilities to assist him with his objective:
+Vars | |
| chosen_color | The color of the space dragon. |
|---|---|
| gust_distance | The distance Space Dragon's gust reaches |
| gust_tiredness | The amount of tiredness to add to Space Dragon per use of gust |
| maxRiftTimer | Maximum amount of time which can pass without a rift before Space Dragon despawns. |
| objective_complete | Whether or not Space Dragon has completed their objective, and thus triggered the ending sequence. |
| rift | The innate ability to summon rifts |
| riftTimer | Current time since the the last rift was activated. If set to -1, does not increment. |
| rift_list | A list of all of the rifts created by Space Dragon. Used for setting them all to infinite carp spawn when Space Dragon wins, and removing them when Space Dragon dies. |
| rifts_charged | How many rifts have been successfully charged |
| tearing_wall | Determines whether or not Space Dragon is currently tearing through a wall. |
| tiredness | How much endlag using Wing Gust should apply. Each use of wing gust increments this, and it decreases over time. |
| tiredness_mult | A multiplier to how much each use of wing gust should add to the tiredness variable. Set to 5 if the current rift is destroyed. |
| using_special | Determines whether or not Space Dragon is in the middle of using wing gust. If set to true, prevents him from moving and doing certain actions. |
Procs | |
| add_dragon_overlay | Adds the proper overlay to the space dragon. |
| color_selection | Allows space dragon to choose a color for itself. |
| destroy_rifts | Destroys all of Space Dragon's current rifts. |
| dragon_fire_line | What occurs on each tile to actually create the fire. |
| dragon_name | Allows space dragon to choose its own name. |
| eat | Handles consuming and storing consumed things inside Space Dragon |
| empty_contents | Disperses the contents of the mob on the surrounding tiles. |
| fire_stream | Spawns fire at each position in a line from the source to the target. |
| line_target | Determines a line of turfs from sources's position to the target with length range. |
| permanant_empower | Gives Space Dragon their the rift speed buff permanantly. |
| reset_status | Resets Space Dragon's status after using wing gust. |
| rift_depower | Removes Space Dragon's rift speed buff. |
| rift_empower | Handles Space Dragon's temporary empowerment after boosting a rift. |
| useGust | Handles wing gust from the windup all the way to the endlag at the end. |
| victory | Sets up Space Dragon's victory for completing the objectives. |
The color of the space dragon.
The distance Space Dragon's gust reaches
The amount of tiredness to add to Space Dragon per use of gust
Maximum amount of time which can pass without a rift before Space Dragon despawns.
Whether or not Space Dragon has completed their objective, and thus triggered the ending sequence.
The innate ability to summon rifts
Current time since the the last rift was activated. If set to -1, does not increment.
A list of all of the rifts created by Space Dragon. Used for setting them all to infinite carp spawn when Space Dragon wins, and removing them when Space Dragon dies.
How many rifts have been successfully charged
Determines whether or not Space Dragon is currently tearing through a wall.
How much endlag using Wing Gust should apply. Each use of wing gust increments this, and it decreases over time.
A multiplier to how much each use of wing gust should add to the tiredness variable. Set to 5 if the current rift is destroyed.
Determines whether or not Space Dragon is in the middle of using wing gust. If set to true, prevents him from moving and doing certain actions.
Adds the proper overlay to the space dragon.
+Clears the current overlay on space dragon and adds a proper one for whatever animation he's in.
Allows space dragon to choose a color for itself.
+Prompts the space dragon to choose a color, from which it will then apply to itself. +If an invalid color is given, will re-prompt the dragon until a proper color is chosen.
Destroys all of Space Dragon's current rifts.
+QDeletes all the current rifts after removing their references to other objects. +Currently, the only reference they have is to the Dragon which created them, so we clear that before deleting them. +Currently used when Space Dragon dies or one of his rifts is destroyed.
What occurs on each tile to actually create the fire.
+Creates a fire on the given turf. +It creates a hotspot on the given turf, damages any living mob with 30 burn damage, and damages mechs by 50. +It can only hit any given target once. +Arguments:
+Allows space dragon to choose its own name.
+Prompts the space dragon to choose a name, which it will then apply to itself. +If the name is invalid, will re-prompt the dragon until a proper name is chosen.
Handles consuming and storing consumed things inside Space Dragon
+Plays a sound and then stores the consumed thing inside Space Dragon. +Used in AttackingTarget(), paired with a heal should it succeed. +Arguments:
+Disperses the contents of the mob on the surrounding tiles.
+Randomly places the contents of the mob onto surrounding tiles. +Has a 10% chance to place on the same tile as the mob.
Spawns fire at each position in a line from the source to the target.
+Spawns fire at each position in a line from the source to the target. +Stops if it comes into contact with a solid wall, a window, or a door. +Delays the spawning of each fire by 1.5 deciseconds. +Arguments:
+Determines a line of turfs from sources's position to the target with length range.
+Determines a line of turfs from the source's position to the target with length range. +The line will extend on past the target if the range is large enough, and not reach the target if range is small enough. +Arguments:
+Gives Space Dragon their the rift speed buff permanantly.
+Gives Space Dragon the enraged speed buff from charging rifts permanantly. +Only happens in circumstances where Space Dragon completes their objective.
Resets Space Dragon's status after using wing gust.
+Resets Space Dragon's status after using wing gust. +If it isn't dead by the time it calls this method, reset the sprite back to the normal living sprite. +Also sets the using_special variable to FALSE, allowing Space Dragon to move and attack freely again.
Removes Space Dragon's rift speed buff.
+Removes Space Dragon's speed buff from charging a rift. This is only called +in rift_empower, which uses a timer to call this after 30 seconds. Also +removes the red glow from Space Dragon which is synonymous with the speed buff.
Handles Space Dragon's temporary empowerment after boosting a rift.
+Empowers and depowers Space Dragon after a successful rift charge. +Empowered, Space Dragon regains all his health and becomes temporarily faster for 30 seconds, along with being tinted red.
Handles wing gust from the windup all the way to the endlag at the end.
+Handles the wing gust attack from start to finish, based on the timer. +When intially triggered, starts at 0. Until the timer reaches 10, increase Space Dragon's y position by 2 and call back to the function in 1.5 deciseconds. +When the timer is at 10, trigger the attack. Change Space Dragon's sprite. reset his y position, and push all living creatures back in a 3 tile radius and stun them for 5 seconds. +Stay in the ending state for how much our tiredness dictates and add to our tiredness. +Arguments:
+Sets up Space Dragon's victory for completing the objectives.
+Triggers when Space Dragon completes his objective. +Calls the shuttle with a coefficient of 3, making it impossible to recall. +Sets all of his rifts to allow for infinite sentient carp spawns +Also plays appropiate sounds and CENTCOM messages.
The Mob itself
Procs | |
| AttackingTarget | CTRL CLICK FOR SWARMERS AND SWARMER_ACT()'S |
|---|---|
| Fabricate | END CTRL CLICK FOR SWARMERS |
CTRL CLICK FOR SWARMERS AND SWARMER_ACT()'S
END CTRL CLICK FOR SWARMERS
Venus Human Trap
+The result of a kudzu flower bud, these enemies use vines to drag prey close to them for attack.
+A carnivorious plant which uses vines to catch and ensnare prey. Spawns from kudzu flower buds. +Each one has a maximum of four vines, which can be attached to a variety of things. Carbons are stunned when a vine is attached to them, and movable entities are pulled closer over time. +Attempting to attach a vine to something with a vine already attached to it will pull all movable targets closer on command. +Once the prey is in melee range, melee attacks from the venus human trap heals itself for 10% of its max health, assuming the target is alive. +Akin to certain spiders, venus human traps can also be possessed and controlled by ghosts.
Vars | |
| max_vines | The maximum amount of vines a plant can have at one time |
|---|---|
| playable_plant | Whether or not this plant is ghost possessable |
| vine_grab_distance | How far away a plant can attach a vine to something |
| vines | A list of all the plant's vines |
Procs | |
| humanize_plant | Sets a ghost to control the plant if the plant is eligible |
| pull_vines | Manages how the vines should affect the things they're attached to. |
| remove_vine | Removes a vine from the list. |
The maximum amount of vines a plant can have at one time
Whether or not this plant is ghost possessable
How far away a plant can attach a vine to something
A list of all the plant's vines
Sets a ghost to control the plant if the plant is eligible
+Asks the interacting ghost if they would like to control the plant. +If they answer yes, and another ghost hasn't taken control, sets the ghost to control the plant. +Arguments:
+Manages how the vines should affect the things they're attached to.
+Pulls all movable targets of the vines closer to the plant +If the target is on the same tile as the plant, destroy the vine +Removes any QDELETED vines from the vines list.
Removes a vine from the list.
+Removes the vine from our list. +Called specifically when the vine is about to be destroyed, so we don't have any null references. +Arguments:
+MOBS
Vars | |
| busy | I'm busy, don't move. |
|---|---|
I'm busy, don't move.
Procs | |
| be_fruitful | Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats. |
|---|---|
| evolve | Spawns a new regal rat, says some good jazz, and if sentient, transfers the relivant mind. |
Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats.
Spawns a new regal rat, says some good jazz, and if sentient, transfers the relivant mind.
Vars | |
| spawns_with_headset | spawns with headset |
|---|---|
spawns with headset
Vars | |
| colour | TIME FOR SUBSPECIES |
|---|---|
| effectmod | CORE-CROSSING CODE |
TIME FOR SUBSPECIES
CORE-CROSSING CODE
Hooray modularity! +Things that modify core files without directly touching said core files go here. This is similar to how Hippie handles things. +This stops dreammaker from throwing errors and warnings if you try to compile these files while they're inside code/citadel/. |
| /obj/item/gun/ballistic/automatic/toy/pistol/stealth | foam stealth pistol |
|---|---|
| /obj/item/projectile/beam/lasertag/ray | RAYGUN MEMES |
| /obj/item/gun/ballistic/automatic/x9 | XCOM X9 AR |
|---|---|
| /obj/item/ammo_box/magazine/toy/x9 | toy memes +toy memes |
| /obj/item/ammo_casing/c46x30mm/rubber | security rifles special ammo |
| /obj/item/projectile/bullet/cflechetteap | ///Flechette Launcher/// +projectiles |
| /obj/item/ammo_casing/caseless/flechetteap | ammo casings (CASELESS AMMO CASINGS WOOOOOOOO) |
| /obj/item/ammo_box/magazine/flechette | magazine |
| /obj/item/gun/ballistic/automatic/flechette | the gun itself |
| /obj/item/projectile/bullet/cflechetteshredder | unique variant |
| /obj/item/projectile/bullet/spinfusor | spinfusor stuff |
|---|
| /datum/reagent/fermi/butt_enlarger | Ass enhancer |
|---|
|
Vars | |
| always_reskinnable | Can always be modified |
|---|---|
| bare_wound_bonus | If this attacks a human with no wound armor on the affected body part, add this to the wound mod. Some attacks may be significantly worse at wounding if there's even a slight layer of armor to absorb some of it vs bare flesh |
| current_skin | The item reskin |
| damage_deflection | Damage under this value will be completely ignored |
| reskin_binding | How to bring up the reskinning menu |
| unique_reskin | List of options to reskin. |
| wound_bonus | How good a given object is at causing wounds on carbons. Higher values equal better shots at creating serious wounds. |
Procs | |
| CanAStarPass | This proc is used for telling whether something can pass by this object in a given direction, for use by the pathfinding system. |
| fire_act | FIRE |
| reskin_obj | Do you want to make overrides, of course you do! Will be called if an object was reskinned successfully |
| setAnchored | @depricated DO NOT USE |
Can always be modified
If this attacks a human with no wound armor on the affected body part, add this to the wound mod. Some attacks may be significantly worse at wounding if there's even a slight layer of armor to absorb some of it vs bare flesh
The item reskin
Damage under this value will be completely ignored
How to bring up the reskinning menu
List of options to reskin.
How good a given object is at causing wounds on carbons. Higher values equal better shots at creating serious wounds.
This proc is used for telling whether something can pass by this object in a given direction, for use by the pathfinding system.
+Trying to generate one long path across the station will call this proc on every single object on every single tile that we're seeing if we can move through, likely +multiple times per tile since we're likely checking if we can access said tile from multiple directions, so keep these as lightweight as possible.
+Arguments:
+FIRE
Do you want to make overrides, of course you do! Will be called if an object was reskinned successfully
@depricated DO NOT USE
Vars | |
| delete_after | Delete this port after ship fly off. |
|---|---|
| dheight | position relative to covered area, parallel to dir. You shouldn't modify this for mobile dockingports, set automatically. |
| dir | Common standard is for this to point -away- from the dockingport door, ie towards the ship |
| dwidth | position relative to covered area, perpendicular to dir. You shouldn't modify this for mobile dockingports, set automatically. |
| height | size of covered area, parallel to dir. You shouldn't modify this for mobile dockingports, set automatically. |
| hidden | are we invisible to shuttle navigation computers? |
| port_destinations | Possible destinations |
| registered | are we registered in SSshuttles? |
| shuttle_id | The identifier of the port or ship. +This will be used in numerous other places like the console, +stationary ports and whatnot to tell them your ship's mobile +port can be used in these places, or the docking port is compatible, etc. |
| width | size of covered area, perpendicular to dir. You shouldn't modify this for mobile dockingports, set automatically. |
Procs | |
| register | register to SSshuttles |
| return_coords | returns a list(x0,y0, x1,y1) where points 0 and 1 are bounding corners of the projected rectangle |
| return_ordered_turfs | returns turfs within our projected rectangle in a specific order.this ensures that turfs are copied over in the same order, regardless of any rotation |
| return_turfs | returns turfs within our projected rectangle in no particular order |
| unregister | unregister from SSshuttles |
Delete this port after ship fly off.
position relative to covered area, parallel to dir. You shouldn't modify this for mobile dockingports, set automatically.
Common standard is for this to point -away- from the dockingport door, ie towards the ship
position relative to covered area, perpendicular to dir. You shouldn't modify this for mobile dockingports, set automatically.
size of covered area, parallel to dir. You shouldn't modify this for mobile dockingports, set automatically.
are we invisible to shuttle navigation computers?
Possible destinations
are we registered in SSshuttles?
The identifier of the port or ship. +This will be used in numerous other places like the console, +stationary ports and whatnot to tell them your ship's mobile +port can be used in these places, or the docking port is compatible, etc.
size of covered area, perpendicular to dir. You shouldn't modify this for mobile dockingports, set automatically.
register to SSshuttles
returns a list(x0,y0, x1,y1) where points 0 and 1 are bounding corners of the projected rectangle
returns turfs within our projected rectangle in a specific order.this ensures that turfs are copied over in the same order, regardless of any rotation
returns turfs within our projected rectangle in no particular order
unregister from SSshuttles
Vars | |
| callTime | time spent in transit (deciseconds). Should not be lower then 10 seconds without editing the animation of the hyperspace ripples. |
|---|---|
| can_move_docking_ports | if this shuttle can move docking ports other than the one it is docked at |
| ignitionTime | time spent "starting the engines". Also rate limits how often we try to reserve transit space if its ever full of transiting shuttles. |
| mode | current shuttle mode |
| movement_force | Whether or not you want your ship to knock people down, and also whether it will throw them several tiles upon launching. |
| parallax_speed | parallax speed in seconds per loop |
| port_direction | relative direction of the docking port from the front of the shuttle. NORTH is towards front, EAST would be starboard side, WEST port, etc. |
| prearrivalTime | time spent after transit 'landing' before actually arriving |
| preferred_direction | The direction the shuttle prefers to travel in, ie what direction the animation will cause it to appear to be traveling in |
| rechargeTime | time spent after arrival before being able to begin ignition |
| timer | used as a timer (if you want time left to complete move, use timeLeft proc) |
Procs | |
| get_status_text_tgui | Gets shuttle location status in a form of string for tgui interfaces |
| initiate_docking | This is the main proc. It instantly moves our mobile port to stationary port new_dock. |
time spent in transit (deciseconds). Should not be lower then 10 seconds without editing the animation of the hyperspace ripples.
if this shuttle can move docking ports other than the one it is docked at
time spent "starting the engines". Also rate limits how often we try to reserve transit space if its ever full of transiting shuttles.
current shuttle mode
Whether or not you want your ship to knock people down, and also whether it will throw them several tiles upon launching.
parallax speed in seconds per loop
relative direction of the docking port from the front of the shuttle. NORTH is towards front, EAST would be starboard side, WEST port, etc.
time spent after transit 'landing' before actually arriving
The direction the shuttle prefers to travel in, ie what direction the animation will cause it to appear to be traveling in
time spent after arrival before being able to begin ignition
used as a timer (if you want time left to complete move, use timeLeft proc)
Gets shuttle location status in a form of string for tgui interfaces
This is the main proc. It instantly moves our mobile port to stationary port new_dock.
Vars | |
| shuttlekeys | Holds a list of map name strings for the port to pick from |
|---|---|
Holds a list of map name strings for the port to pick from
Vars | |
| edge_distance | Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced" |
|---|---|
| target_area | The area the pod tries to land at |
Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced"
The area the pod tries to land at
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.
Vars | |
| chassis | Our link back to the durand |
|---|---|
| switching | To keep track of things during the animation |
Procs | |
| activate | Handles activating and deactivating the shield. This proc is called by a signal sent from the mech's action button +and relayed by the mech itself. The "forced" variabe, signal_args[1], will skip the to-pilot text and is meant for when +the shield is disabled by means other than the action button (like running out of power) +Arguments: |
Our link back to the durand
To keep track of things during the animation
Handles activating and deactivating the shield. This proc is called by a signal sent from the mech's action button +and relayed by the mech itself. The "forced" variabe, signal_args[1], will skip the to-pilot text and is meant for when +the shield is disabled by means other than the action button (like running out of power) +Arguments:
+Effects
Vars | |
| owner | The person we're on |
|---|---|
The person we're on
Vars | |
| core_drop_chance | chance we drop a core when neutralized |
|---|---|
chance we drop a core when neutralized
Procs | |
| show_presence | Makes this obj appear out of nothing |
|---|---|
Makes this obj appear out of nothing
Procs | |
| hit_thing | proc called to handle us hitting something |
|---|---|
proc called to handle us hitting something
Vars | |
| persistence_allow_stacking | Can we stack multiple in one tile? |
|---|---|
| persistent | Is this kind of cleanable decal persistent |
| wiped_by_floor_change | Are we deleted by turf changes? |
Procs | |
| PersistenceLoad | Loads from a data list. |
| PersistenceSave | A data list is passed into this. +This should return null to skip saving, or the type of data to save. Type must be /cleanable. |
Can we stack multiple in one tile?
Is this kind of cleanable decal persistent
Are we deleted by turf changes?
Loads from a data list.
A data list is passed into this. +This should return null to skip saving, or the type of data to save. Type must be /cleanable.
Vars | |
| parent_item | the parent conveyor sorter lister item, used for deletion |
|---|---|
| sorting_list | the list of items that will be sorted to the sorted direction |
| use_cooldown | To prevent spam |
the parent conveyor sorter lister item, used for deletion
the list of items that will be sorted to the sorted direction
To prevent spam
Vars | |
| is_in_use | Used mainly for summoning ritual to prevent spamming the rune to create millions of monsters. |
|---|---|
Used mainly for summoning ritual to prevent spamming the rune to create millions of monsters.
Vars | |
| debris | A list of everything this hangover spawn created |
|---|---|
Procs | |
| make_hungover | Spawns the mob with some drugginess/drunkeness, and some disgust. |
A list of everything this hangover spawn created
Spawns the mob with some drugginess/drunkeness, and some disgust.
Fetches an external dmi and applies to the target object
Vars | |
| first_match_only | Will inject into all fitting the criteria if false, otherwise first found. |
|---|---|
| icon_url | This should return raw dmi in response to http get request. For example: "https://github.com/tgstation/SS13-sprites/raw/master/mob/medu.dmi?raw=true" |
| target_name | Will inject into atoms with this name. |
| target_type | Will inject into atoms of this type. |
| target_variable | This is the var tha will be set with the fetched icon. In case you want to set some secondary icon sheets like inhands and such. |
Will inject into all fitting the criteria if false, otherwise first found.
This should return raw dmi in response to http get request. For example: "https://github.com/tgstation/SS13-sprites/raw/master/mob/medu.dmi?raw=true"
Will inject into atoms with this name.
Will inject into atoms of this type.
This is the var tha will be set with the fetched icon. In case you want to set some secondary icon sheets like inhands and such.
Vars | |
| custom_spawned | set var to true to not del on lateload |
|---|---|
| network_directions | what directions we know connections are in |
Procs | |
| LateInitialize | How this works: On LateInitialize, detect all directions that this should be applicable to, and do what it needs to do, and then inform all network builders in said directions that it's been around since it won't be around afterwards. |
set var to true to not del on lateload
what directions we know connections are in
How this works: On LateInitialize, detect all directions that this should be applicable to, and do what it needs to do, and then inform all network builders in said directions that it's been around since it won't be around afterwards.
Vars | |
| pipe_color | Color to set our pipes to |
|---|---|
| pipe_layer | Layer to put our pipes on |
| visible_pipes | Whether or not pipes we make are visible |
Procs | |
| build_network | Directions should only ever have cardinals. |
| scan_directions | Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted. |
Color to set our pipes to
Layer to put our pipes on
Whether or not pipes we make are visible
Directions should only ever have cardinals.
Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted.
Automatically links on init to power cables and other cable builder helpers. Only supports cardinals.
Vars | |
| cable_color | cable color as from GLOB.cable_colors |
|---|---|
| knot | Whether or not we forcefully make a knot |
Procs | |
| build_network | Directions should only ever have cardinals. |
| scan_directions | Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted. |
cable color as from GLOB.cable_colors
Whether or not we forcefully make a knot
Directions should only ever have cardinals.
Scans directions, sets network_directions to have every direction that we can link to. If there's another power cable builder detected, make sure they know we're here by adding us to their cable directions list before we're deleted.
Vars | |
| first_match_only | Will inject into all fitting the criteria if false, otherwise first found. |
|---|---|
| target_name | Will inject into atoms with this name. |
| target_type | Will inject into atoms of this type. |
| trait_name | Name of the trait, in the lower-case text (NOT the upper-case define) form. |
Will inject into all fitting the criteria if false, otherwise first found.
Will inject into atoms with this name.
Will inject into atoms of this type.
Name of the trait, in the lower-case text (NOT the upper-case define) form.
Vars | |
| triggered | We manually check to see if we've been triggered in case multiple atoms cross us in the time between the mine being triggered and it actually deleting, to avoid a race condition with multiple detonations |
|---|---|
We manually check to see if we've been triggered in case multiple atoms cross us in the time between the mine being triggered and it actually deleting, to avoid a race condition with multiple detonations
Procs | |
| allow_spawn | override this to add special spawn conditions to a ghost role |
|---|---|
override this to add special spawn conditions to a ghost role
Vars | |
| cache_expiration | overlays which go unused for this amount of time get cleaned up |
|---|---|
| unused | When detected to be unused it gets set to world.time, after a while it gets removed |
overlays which go unused for this amount of time get cleaned up
When detected to be unused it gets set to world.time, after a while it gets removed
Procs | |
| can_target | can_target: Checks if we are allowed to cast the spell on a target. |
|---|---|
can_target: Checks if we are allowed to cast the spell on a target.
+Arguments:
+Vars | |
| cone_levels | This controls how many levels the cone has, increase this value to make a bigger cone. |
|---|---|
| respect_density | This value determines if the cone penetrates walls. |
Procs | |
| calculate_cone_shape | This proc adjusts the cones width depending on the level. |
| cone_helper | This proc creates a list of turfs that are hit by the cone |
| do_cone_effects | This proc does obj, mob and turf cone effects on all targets in a list |
| do_mob_cone_effect | This proc deterimines how the spell will affect mobs. |
| do_obj_cone_effect | This proc deterimines how the spell will affect objects. |
| do_turf_cone_effect | This proc deterimines how the spell will affect turfs. |
This controls how many levels the cone has, increase this value to make a bigger cone.
This value determines if the cone penetrates walls.
This proc adjusts the cones width depending on the level.
This proc creates a list of turfs that are hit by the cone
This proc does obj, mob and turf cone effects on all targets in a list
This proc deterimines how the spell will affect mobs.
This proc deterimines how the spell will affect objects.
This proc deterimines how the spell will affect turfs.
Vars | |
| active_msg | Message showing to the spell owner upon activating pointed spell. |
|---|---|
| aim_assist | Variable dictating if the spell will use turf based aim assist |
| deactive_msg | Message showing to the spell owner upon deactivating pointed spell. |
| self_castable | Variable dictating if the user is allowed to cast a spell on himself. |
Procs | |
| intercept_check | intercept_check: Specific spell checks for InterceptClickOn() targets. |
| on_activation | on_activation: What happens upon pointed spell activation. |
| on_deactivation | on_activation: What happens upon pointed spell deactivation. |
Message showing to the spell owner upon activating pointed spell.
Variable dictating if the spell will use turf based aim assist
Message showing to the spell owner upon deactivating pointed spell.
Variable dictating if the user is allowed to cast a spell on himself.
intercept_check: Specific spell checks for InterceptClickOn() targets.
+Arguments:
+on_activation: What happens upon pointed spell activation.
+Arguments:
+on_activation: What happens upon pointed spell deactivation.
+Arguments:
+Vars | |
| compatible_mobs_typecache | List of mobs which are allowed to be a target of the spell |
|---|---|
List of mobs which are allowed to be a target of the spell
Vars | |
| unconscious_amount_caster | For how long is the caster stunned for after the spell |
|---|---|
| unconscious_amount_victim | For how long is the victim stunned for after the spell |
For how long is the caster stunned for after the spell
For how long is the victim stunned for after the spell
Vars | |
| current_user | who casted it right now |
|---|---|
| duration | how long it lasts |
| has_fire_ring | Determines if you get the fire ring effect |
who casted it right now
how long it lasts
Determines if you get the fire ring effect
Vars | |
| image_state | We cannot use icon_state since this is invisible, functions the same way but with custom behaviour. |
|---|---|
| img | Tracked image |
| minds | Who can see us? |
Procs | |
| AddMind | Makes the mind able to see this effect |
| RemoveMind | Makes the mind not able to see this effect |
| generate_name | Generates random name |
We cannot use icon_state since this is invisible, functions the same way but with custom behaviour.
Tracked image
Who can see us?
Makes the mind able to see this effect
Makes the mind not able to see this effect
Generates random name
Vars | |
| attack_speed | Amount of time to check for from a mob's last attack, checked before an attack happens. Lower = faster attacks |
|---|---|
| attack_unwieldlyness | Amount of time to hard-stagger (no clicking at all) the mob when attacking. Lower = better |
| block_chance | The 0% to 100% chance for the default implementation of random block rolls. |
| block_priority | Block priority, higher means we check this higher in the "chain". |
| clickdelay_from_next_action | This item checks clickdelay from a user's delayed next action variable rather than the last time they attacked. |
| clickdelay_ignores_next_action | This item ignores next action delays. |
| clickdelay_mod_bypass | This item bypasses any click delay mods |
| drop_sound | Sound uses when dropping the item, or when its thrown. |
| dye_color | Used as the dye color source in the washing machine only (at the moment). Can be a hex color or a key corresponding to a registry entry, see washing_machine.dm |
| dying_key | What dye registry should be looked at when dying this item; see washing_machine.dm |
| equip_sound | Sound used when equipping the item into a valid slot |
| force_string | string form of an item's force. Edit this var only to set a custom force string |
| hitsound | Sound played when you hit something with the item |
| item_flags | Item flags for the item |
| item_state | icon state name for inhand overlays |
| lefthand_file | Icon file for left hand inhand overlays |
| mob_overlay_icon | Icon file for mob worn overlays. +no var for state because it should always be the same as icon_state |
| mob_throw_hit_sound | Used when yate into a mob |
| pickup_sound | Sound uses when picking the item up (into your hands) |
| righthand_file | Icon file for right inhand overlays |
| sharpness | All items with sharpness of SHARP_EDGED or higher will automatically get the butchering component. |
| stagger_force | How long, in deciseconds, this staggers for, if null it will autocalculate from w_class and force. Unlike total mass this supports 0 and negatives. |
| stealthy_audio | Whether or not we use stealthy audio levels for this item's attack sounds |
| throw_verb | Used if we want to have a custom verb text for throwing. "John Spaceman flicks the ciggerate" for example. |
| thrownby | A weakref to the mob who threw the item |
| total_mass | The amount of stamina it takes to swing an item in a normal melee attack do not lie to me and say it's for realism because it ain't. If null it will autocalculate from w_class. |
| undyeable | Whether the item is unaffected by standard dying. |
| used_skills | Skills vars |
| usesound | Played when the item is used, for example tools |
| w_class | Weight class for how much storage capacity it uses and how big it physically is meaning storages can't hold it if their maximum weight class isn't as high as it. |
| w_volume | Volume override for the item, otherwise automatically calculated from w_class. |
Procs | |
| ApplyAttackCooldown | Called after a successful attack to set a mob's clickdelay. |
| CheckAttackCooldown | Checks if a user's clickdelay is met for a standard attack, this is called before an attack happens. |
| GetEstimatedAttackSpeed | Get estimated time that a user has to not attack for to use us |
| UseStaminaBufferStandard | Uses the amount of stamina required for a standard hit |
| active_block_calculate_final_damage | Calculates FINAL ATTACK DAMAGE after mitigation |
| active_block_do_stamina_damage | Apply the stamina damage to our user, notice how damage argument is stamina_amount. |
| active_block_stamina_cost | Amount of stamina from damage blocked. Note that the damage argument is damage_blocked. |
| active_parry_reflex_counter | Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack. |
| add_item_context | Creates a "Type-A" contextual screentip interaction.
+When a user hovers over something with this item in hand, this proc will be called in order
+to provide context for contextual screentips.
+You must call register_item_context() in order for this to be registered.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+source can, in all cases, be replaced with src, and only exists because this proc directly connects to a signal. |
| afterattack | Called after attacking something if the melee attack chain isn't interrupted before. +Also called when clicking on something with an item without being in melee range |
| attack | Called when someone uses us to attack a mob in melee combat. |
| blockable_directions | Gets the block direction bitflags of what we can block. |
| can_active_block | Returns if we can actively block. |
| can_active_parry | Determines if we can actively parry. |
| can_block_direction | Checks if we can block from a specific direction from our direction. |
| can_block_directions_multiple | can_block_direction but for "compound" directions to check all of them and return the number of directions that were blocked. |
| check_block | Returns block information using list/block_return. Used for check_block() on mobs. |
| cyborg_unequip | Parent proc - triggers when an item/module is unequipped from a cyborg. |
| disableEmbedding | For when you want to disable an item's embedding capabilities (like transforming weapons and such), this proc will detach any active embed elements from it. |
| failedEmbed | In case we want to do something special (like self delete) upon failing to embed in something, return true |
| get_block_parry_data | Gets this item's datum/block_parry_data |
| get_w_volume | Get an item's volume that it uses when being stored. |
| getweight | How much stamina this takes to swing this is not for realism purposes hecc off. |
| isEmbedHarmless | Does the current embedding var meet the criteria for being harmless? Namely, does it explicitly define the pain multiplier and jostle pain mult to be 0? If so, return true. |
| melee_attack_chain | This is the proc that handles the order of an item_attack. +The order of procs called is: +tool_act on the target. If it returns TRUE, the chain will be stopped. +pre_attack() on src. If this returns TRUE, the chain will be stopped. +attackby on the target. If it returns TRUE, the chain will be stopped. +and lastly +afterattack. The return value does not matter. |
| melee_stagger_duration | How long this staggers for. 0 and negatives supported. |
| on_active_parry | Called when an attack is parried using this, whether or not the parry was successful. |
| on_offer_taken | An interrupt for someone trying to accept an offered item, called mainly from /mob/living/carbon/proc/take, in case you want to run your own take behavior instead. |
| on_offered | An interrupt for offering an item to other people, called mainly from /mob/living/carbon/proc/give, in case you want to run your own offer behavior instead. |
| on_outfit_equip | Special stuff you want to do when an outfit equips this item. |
| on_thrown | Called by the carbon throw_item() proc. Returns null if the item negates the throw, or a reference to the thing to suffer the throw else. |
| pick_painting_tool_color | Common proc used by painting tools like spraycans and palettes that can access the entire 24 bits color space. |
| ranged_attack_chain | Like melee_attack_chain but for ranged. |
| register_item_context | Create a "Type-A" contextual screentip interaction, registering to add_item_context().
+This will run add_item_context() when the item hovers over another object for context.
+add_item_context() will not be called unless this is run.
+This is not necessary for Type-A interactions, as you can just apply the flag and register to the signal yourself. |
| run_block | Runs block and returns flag for do_run_block to process. |
| set_slowdown | Sets our slowdown and updates equipment slowdown of any mob we're equipped on. |
| tryEmbed | tryEmbed() is for when you want to try embedding something without dealing with the damage + hit messages of calling hitby() on the item while targetting the target. |
| updateEmbedding | For when you want to add/update the embedding on an item. Uses the vars in [/obj/item/embedding], and defaults to config values for values that aren't set. Will automatically detach previous embed elements on this item. |
| update_action_buttons | Updates all action buttons associated with this item |
Amount of time to check for from a mob's last attack, checked before an attack happens. Lower = faster attacks
Amount of time to hard-stagger (no clicking at all) the mob when attacking. Lower = better
The 0% to 100% chance for the default implementation of random block rolls.
Block priority, higher means we check this higher in the "chain".
This item checks clickdelay from a user's delayed next action variable rather than the last time they attacked.
This item ignores next action delays.
This item bypasses any click delay mods
Sound uses when dropping the item, or when its thrown.
Used as the dye color source in the washing machine only (at the moment). Can be a hex color or a key corresponding to a registry entry, see washing_machine.dm
What dye registry should be looked at when dying this item; see washing_machine.dm
Sound used when equipping the item into a valid slot
string form of an item's force. Edit this var only to set a custom force string
Sound played when you hit something with the item
Item flags for the item
icon state name for inhand overlays
Icon file for left hand inhand overlays
Icon file for mob worn overlays. +no var for state because it should always be the same as icon_state
Used when yate into a mob
Sound uses when picking the item up (into your hands)
Icon file for right inhand overlays
All items with sharpness of SHARP_EDGED or higher will automatically get the butchering component.
How long, in deciseconds, this staggers for, if null it will autocalculate from w_class and force. Unlike total mass this supports 0 and negatives.
Whether or not we use stealthy audio levels for this item's attack sounds
Used if we want to have a custom verb text for throwing. "John Spaceman flicks the ciggerate" for example.
A weakref to the mob who threw the item
The amount of stamina it takes to swing an item in a normal melee attack do not lie to me and say it's for realism because it ain't. If null it will autocalculate from w_class.
Whether the item is unaffected by standard dying.
Skills vars
Played when the item is used, for example tools
Weight class for how much storage capacity it uses and how big it physically is meaning storages can't hold it if their maximum weight class isn't as high as it.
Volume override for the item, otherwise automatically calculated from w_class.
Called after a successful attack to set a mob's clickdelay.
Checks if a user's clickdelay is met for a standard attack, this is called before an attack happens.
Get estimated time that a user has to not attack for to use us
Uses the amount of stamina required for a standard hit
Calculates FINAL ATTACK DAMAGE after mitigation
Apply the stamina damage to our user, notice how damage argument is stamina_amount.
Amount of stamina from damage blocked. Note that the damage argument is damage_blocked.
Called when an attack is parried and block_parra_data indicates to use a proc to handle counterattack.
Creates a "Type-A" contextual screentip interaction.
+When a user hovers over something with this item in hand, this proc will be called in order
+to provide context for contextual screentips.
+You must call register_item_context() in order for this to be registered.
+A screentip context list is a list that has context keys (SCREENTIP_CONTEXT_*, from __DEFINES/screentips.dm)
+that map to the action as text.
+If you mutate the list in this signal, you must return CONTEXTUAL_SCREENTIP_SET.
+source can, in all cases, be replaced with src, and only exists because this proc directly connects to a signal.
Called after attacking something if the melee attack chain isn't interrupted before. +Also called when clicking on something with an item without being in melee range
+WARNING: This does not automatically check clickdelay if not in a melee attack! Be sure to account for this!
+@params
+Called when someone uses us to attack a mob in melee combat.
+This proc respects CheckAttackCooldown() default clickdelay handling.
+@params
+Gets the block direction bitflags of what we can block.
Returns if we can actively block.
Determines if we can actively parry.
Checks if we can block from a specific direction from our direction.
+@params
+can_block_direction but for "compound" directions to check all of them and return the number of directions that were blocked.
+@params
+Returns block information using list/block_return. Used for check_block() on mobs.
Parent proc - triggers when an item/module is unequipped from a cyborg.
For when you want to disable an item's embedding capabilities (like transforming weapons and such), this proc will detach any active embed elements from it.
In case we want to do something special (like self delete) upon failing to embed in something, return true
Gets this item's datum/block_parry_data
Get an item's volume that it uses when being stored.
How much stamina this takes to swing this is not for realism purposes hecc off.
Does the current embedding var meet the criteria for being harmless? Namely, does it explicitly define the pain multiplier and jostle pain mult to be 0? If so, return true.
This is the proc that handles the order of an item_attack. +The order of procs called is: +tool_act on the target. If it returns TRUE, the chain will be stopped. +pre_attack() on src. If this returns TRUE, the chain will be stopped. +attackby on the target. If it returns TRUE, the chain will be stopped. +and lastly +afterattack. The return value does not matter.
How long this staggers for. 0 and negatives supported.
Called when an attack is parried using this, whether or not the parry was successful.
An interrupt for someone trying to accept an offered item, called mainly from /mob/living/carbon/proc/take, in case you want to run your own take behavior instead.
+Return TRUE if you want to interrupt the taking.
+Arguments: +offerer - the person offering the item +taker - the person trying to accept the offer
An interrupt for offering an item to other people, called mainly from /mob/living/carbon/proc/give, in case you want to run your own offer behavior instead.
+Return TRUE if you want to interrupt the offer.
+Arguments: +offerer - the person offering the item
Special stuff you want to do when an outfit equips this item.
Called by the carbon throw_item() proc. Returns null if the item negates the throw, or a reference to the thing to suffer the throw else.
Common proc used by painting tools like spraycans and palettes that can access the entire 24 bits color space.
Like melee_attack_chain but for ranged.
Create a "Type-A" contextual screentip interaction, registering to add_item_context().
+This will run add_item_context() when the item hovers over another object for context.
+add_item_context() will not be called unless this is run.
+This is not necessary for Type-A interactions, as you can just apply the flag and register to the signal yourself.
Runs block and returns flag for do_run_block to process.
Sets our slowdown and updates equipment slowdown of any mob we're equipped on.
tryEmbed() is for when you want to try embedding something without dealing with the damage + hit messages of calling hitby() on the item while targetting the target.
+Really, this is used mostly with projectiles with shrapnel payloads, from /datum/element/embed/proc/checkEmbedProjectile, and called on said shrapnel. Mostly acts as an intermediate between different embed elements.
+Arguments:
+target- Either a body part, a carbon, or a closed turf. What are we hitting?
+forced- Do we want this to go through 100%?
+For when you want to add/update the embedding on an item. Uses the vars in [/obj/item/embedding], and defaults to config values for values that aren't set. Will automatically detach previous embed elements on this item.
Updates all action buttons associated with this item
+Arguments:
+Vars | |
| available_paint_jobs | Associate list of all paint jobs the airlock painter can apply. The key is the name of the airlock the user will see. The value is the type path of the airlock |
|---|---|
| initial_ink_type | The type path to instantiate for the ink cartridge the device initially comes with, eg. /obj/item/toner |
| ink | The ink cartridge to pull charges from. |
Associate list of all paint jobs the airlock painter can apply. The key is the name of the airlock the user will see. The value is the type path of the airlock
The type path to instantiate for the ink cartridge the device initially comes with, eg. /obj/item/toner
The ink cartridge to pull charges from.
Vars | |
| color_list | List of color options as list(user-friendly label, color value to return) |
|---|---|
| decal_list | List of decal options as list(user-friendly label, icon state base value to return) |
| dir_list | List of direction options as list(user-friendly label, dir value to return) |
| spritesheet_type | The type path of the spritesheet being used for the frontend. |
| stored_color | The current color of the decal being printed. |
| stored_custom_color | Current custom color |
| stored_decal | The current base icon state of the decal being printed. |
| stored_decal_total | The full icon state of the decal being printed. |
| stored_dir | The current direction of the decal being printed |
| supports_custom_color | Does this printer implementation support custom colors? |
Procs | |
| get_decal_path | Return the final icon_state for the given decal options |
| paint_floor | Actually add current decal to the floor. |
List of color options as list(user-friendly label, color value to return)
List of decal options as list(user-friendly label, icon state base value to return)
List of direction options as list(user-friendly label, dir value to return)
The type path of the spritesheet being used for the frontend.
The current color of the decal being printed.
Current custom color
The current base icon state of the decal being printed.
The full icon state of the decal being printed.
The current direction of the decal being printed
Does this printer implementation support custom colors?
Return the final icon_state for the given decal options
+Arguments:
+Actually add current decal to the floor.
+Responsible for actually adding the element to the turf for maximum flexibility.area +Can be overriden for different decal behaviors. +Arguments:
+Vars | |
| default_alpha | Default alpha for /obj/effect/turf_decal/tile |
|---|---|
| rgba_regex | Regex to split alpha out. |
Default alpha for /obj/effect/turf_decal/tile
Regex to split alpha out.
Vars | |
| click_cooldown_override | Override this to make the gun check for a different cooldown rather than CLICK_CD_RANGE, which is 4 deciseconds. |
|---|---|
Override this to make the gun check for a different cooldown rather than CLICK_CD_RANGE, which is 4 deciseconds.
Procs | |
| holder_movement | Called when the holder is moved |
|---|---|
| on_detach | Call this when detaching it from a device. handles any special functions that need to be updated ex post facto |
Called when the holder is moved
Call this when detaching it from a device. handles any special functions that need to be updated ex post facto
Vars | |
| can_change_id | Can the ID be changed if used in hand? |
|---|---|
| id | Our ID. Make the first character ! if you want to obfuscate it as a mapper via randomization. |
| show_id | Show ID? |
Can the ID be changed if used in hand?
Our ID. Make the first character ! if you want to obfuscate it as a mapper via randomization.
Show ID?
Vars | |
| on | Stores our status to prevent windows from desyncing. |
|---|---|
Stores our status to prevent windows from desyncing.
Vars | |
| suicide_mob | Holds a reference string to the mob, decides how much of a gamer you are. |
|---|---|
| suicider | Holds the mind that commited suicide. |
Holds a reference string to the mob, decides how much of a gamer you are.
Holds the mind that commited suicide.
Vars | |
| payments_acc | All values inheirited from the sales tagger it came from. |
|---|---|
All values inheirited from the sales tagger it came from.
Vars | |
| current_gauze | If we have a gauze wrapping currently applied (not including splints) |
|---|---|
| disable_threshold | Threshold at which we are disabled. Defaults to max_damage if unset. |
| disabled_wound_penalty | When this bodypart hits max damage, this number is added to all wound rolls. Obviously only relevant for bodyparts that have damage caps. |
| forcereplace | does this limb have replacement capability, despite probably not being robotic? |
| generic_bleedstacks | How much generic bleedstacks we have on this bodypart |
| last_maxed | So we know if we need to scream if this limb hits max damage |
| scars | The scars currently afflicting this body part |
| scars_covered_by_clothes | A hat won't cover your face, but a shirt covering your chest will cover your... you know, chest |
| wound_damage_multiplier | Our current stored wound damage multiplier |
| wound_resistance | This number is subtracted from all wound rolls on this bodypart, higher numbers mean more defense, negative means easier to wound |
| wounds | The wounds currently afflicting this body part |
Procs | |
| apply_gauze | apply_gauze() is used to- well, apply gauze to a bodypart |
| check_wounding | check_wounding() is where we handle rolling for, selecting, and applying a wound if we meet the criteria |
| check_woundings_mods | check_wounding_mods() is where we handle the various modifiers of a wound roll |
| get_disable_threshold | Gets the damage at which point we're disabled. |
| get_mangled_state | get_mangled_state() is relevant for flesh and bone bodyparts, and returns whether this bodypart has mangled skin, mangled bone, or both (or neither i guess) |
| get_organs | since organs aren't actually stored in the bodypart themselves while attached to a person, we have to query the owner for what we should have |
| get_wound_type | Get whatever wound of the given type is currently attached to this limb, if any |
| painless_wound_roll | Allows us to roll for and apply a wound without actually dealing damage. Used for aggregate wounding power with pellet clouds |
| seep_gauze | seep_gauze() is for when a gauze wrapping absorbs blood or pus from wounds, lowering its absorption capacity. |
| try_dismember | try_dismember() is used, once we've confirmed that a flesh and bone bodypart has both the skin and bone mangled, to actually roll for it |
| update_wounds | update_wounds() is called whenever a wound is gained or lost on this bodypart, as well as if there's a change of some kind on a bone wound possibly changing disabled status |
If we have a gauze wrapping currently applied (not including splints)
Threshold at which we are disabled. Defaults to max_damage if unset.
When this bodypart hits max damage, this number is added to all wound rolls. Obviously only relevant for bodyparts that have damage caps.
does this limb have replacement capability, despite probably not being robotic?
How much generic bleedstacks we have on this bodypart
So we know if we need to scream if this limb hits max damage
The scars currently afflicting this body part
A hat won't cover your face, but a shirt covering your chest will cover your... you know, chest
Our current stored wound damage multiplier
This number is subtracted from all wound rolls on this bodypart, higher numbers mean more defense, negative means easier to wound
The wounds currently afflicting this body part
apply_gauze() is used to- well, apply gauze to a bodypart
+As of the Wounds 2 PR, all bleeding is now bodypart based rather than the old bleedstacks system, and 90% of standard bleeding comes from flesh wounds (the exception is embedded weapons). +The same way bleeding is totaled up by bodyparts, gauze now applies to all wounds on the same part. Thus, having a slash wound, a pierce wound, and a broken bone wound would have the gauze +applying blood staunching to the first two wounds, while also acting as a sling for the third one. Once enough blood has been absorbed or all wounds with the ACCEPTS_GAUZE flag have been cleared, +the gauze falls off.
+Arguments:
+check_wounding() is where we handle rolling for, selecting, and applying a wound if we meet the criteria
+We generate a "score" for how woundable the attack was based on the damage and other factors discussed in [/obj/item/bodypart/proc/check_wounding_mods], then go down the list from most severe to least severe wounds in that category. +We can promote a wound from a lesser to a higher severity this way, but we give up if we have a wound of the given type and fail to roll a higher severity, so no sidegrades/downgrades
+Arguments:
+check_wounding_mods() is where we handle the various modifiers of a wound roll
+A short list of things we consider: any armor a human target may be wearing, and if they have no wound armor on the limb, if we have a bare_wound_bonus to apply, plus the plain wound_bonus +We also flick through all of the wounds we currently have on this limb and add their threshold penalties, so that having lots of bad wounds makes you more liable to get hurt worse +Lastly, we add the inherent wound_resistance variable the bodypart has (heads and chests are slightly harder to wound), and a small bonus if the limb is already disabled
+Arguments:
+Gets the damage at which point we're disabled.
get_mangled_state() is relevant for flesh and bone bodyparts, and returns whether this bodypart has mangled skin, mangled bone, or both (or neither i guess)
+Dismemberment for flesh and bone requires the victim to have the skin on their bodypart destroyed (either a critical cut or piercing wound), and at least a hairline fracture +(severe bone), at which point we can start rolling for dismembering. The attack must also deal at least 10 damage, and must be a brute attack of some kind (sorry for now, cakehat, maybe later)
+Returns: BODYPART_MANGLED_NONE if we're fine, BODYPART_MANGLED_FLESH if our skin is broken, BODYPART_MANGLED_BONE if our bone is broken, or BODYPART_MANGLED_BOTH if both are broken and we're up for dismembering
since organs aren't actually stored in the bodypart themselves while attached to a person, we have to query the owner for what we should have
Get whatever wound of the given type is currently attached to this limb, if any
Allows us to roll for and apply a wound without actually dealing damage. Used for aggregate wounding power with pellet clouds
seep_gauze() is for when a gauze wrapping absorbs blood or pus from wounds, lowering its absorption capacity.
+The passed amount of seepage is deducted from the bandage's absorption capacity, and if we reach a negative absorption capacity, the bandages fall off and we're left with nothing.
+Arguments:
+try_dismember() is used, once we've confirmed that a flesh and bone bodypart has both the skin and bone mangled, to actually roll for it
+Mangling is described in the above proc, [/obj/item/bodypart/proc/get_mangled_state()]. This simply makes the roll for whether we actually dismember or not +using how damaged the limb already is, and how much damage this blow was for. If we have a critical bone wound instead of just a severe, we add +10% to the roll. +Lastly, we choose which kind of dismember we want based on the wounding type we hit with. Note we don't care about all the normal mods or armor for this
+Arguments:
+update_wounds() is called whenever a wound is gained or lost on this bodypart, as well as if there's a change of some kind on a bone wound possibly changing disabled status
+Covers tabulating the damage multipliers we have from wounds (burn specifically), as well as deleting our gauze wrapping if we don't have any wounds that can use bandaging
+Arguments:
+Vars | |
| random_category | The category of books to pick from when creating this book. |
|---|---|
| random_loaded | If this book has already been 'generated' yet. |
The category of books to pick from when creating this book.
If this book has already been 'generated' yet.
Vars | |
| abstract_type | Means this is a basetype and should not be used |
|---|---|
| module_flags | Bitflags listing module compatibility. Used in the exosuit fabricator for creating sub-categories. |
| show_amount | Show the amount of this module that is installed |
Means this is a basetype and should not be used
Bitflags listing module compatibility. Used in the exosuit fabricator for creating sub-categories.
Show the amount of this module that is installed
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.
Vars | |
| bounty_handler_account | Bank account of the person who receives the handling tip. |
|---|---|
| bounty_holder | Who completed the bounty. |
| bounty_holder_account | Bank account of the person who completed the bounty. |
| bounty_holder_job | What job the bounty holder had. |
| bounty_name | What the bounty was for. |
| bounty_value | Value of the bounty that this bounty cube sells for. |
| handler_tip | Multiplier for the bounty payout received by the person who claims the handling tip. |
| holder_cut | Multiplier for the bounty payout received by the person who completed the bounty. |
| nag_cooldown | Time between nags. |
| nag_cooldown_multiplier | How much the time between nags extends each nag. |
| next_nag_time | Next world tick to nag Supply listeners. |
| radio | Our internal radio. |
| radio_key | The key our internal radio uses. |
| speed_bonus | Multiplier for the bounty payout received by the Supply budget if the cube is sent without having to nag. |
Bank account of the person who receives the handling tip.
Who completed the bounty.
Bank account of the person who completed the bounty.
What job the bounty holder had.
What the bounty was for.
Value of the bounty that this bounty cube sells for.
Multiplier for the bounty payout received by the person who claims the handling tip.
Multiplier for the bounty payout received by the person who completed the bounty.
Time between nags.
How much the time between nags extends each nag.
Next world tick to nag Supply listeners.
Our internal radio.
The key our internal radio uses.
Multiplier for the bounty payout received by the Supply budget if the cube is sent without having to nag.
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| no_save | boolean that blocks persistence from saving it. enabled from printing copies, because we do not want to save copies. |
|---|---|
boolean that blocks persistence from saving it. enabled from printing copies, because we do not want to save copies.
Vars | |
| deceptive | If the cutout actually appears as what it portray and not a discolored version |
|---|---|
| possible_appearances | Possible restyles for the cutout, add an entry in change_appearance() if you add to here |
| pushed_over | If the cutout is pushed over and has to be righted |
Procs | |
| change_appearance | change_appearance: Changes a skin of the cardboard cutout based on a user's choice |
| check_menu | check_menu: Checks if we are allowed to interact with a radial menu |
If the cutout actually appears as what it portray and not a discolored version
Possible restyles for the cutout, add an entry in change_appearance() if you add to here
If the cutout is pushed over and has to be righted
change_appearance: Changes a skin of the cardboard cutout based on a user's choice
+Arguments:
+check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+Vars | |
| card_count | The amount of cards to draw from the rarity table |
|---|---|
| contains_coin | Chance of the pack having a coin in it out of 10 |
| guar_rarity | The guaranteed rarity table, acts about the same as the rarity table. it can have as many or as few raritys as you'd like |
| guaranteed_count | The amount of cards to draw from the guarenteed rarity table |
| rarity_table | The rarity table, the set must contain at least one of each |
| series | The card series to look in |
The amount of cards to draw from the rarity table
Chance of the pack having a coin in it out of 10
The guaranteed rarity table, acts about the same as the rarity table. it can have as many or as few raritys as you'd like
The amount of cards to draw from the guarenteed rarity table
The rarity table, the set must contain at least one of each
The card series to look in
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Elder Atmosian
Vars | |
| prepared_block | Block we're currently carving in |
|---|---|
| sculpting | Currently sculpting |
| tracked_user | If tracked user moves we stop sculpting |
Block we're currently carving in
Currently sculpting
If tracked user moves we stop sculpting
Procs | |
| remove_bad_plushies | Don't allow these special ones (you can still get narplush/hugbox) |
|---|---|
Don't allow these special ones (you can still get narplush/hugbox)
Procs | |
| GOTTEM | Stage 3B: We face our reckoning (unless we moved away or they're incapacitated) |
|---|---|
| ownerExamined | Stage 1: The mistake is made |
| selfGottem | Stage 3A: We face our own failures |
| waitASecond | Stage 2: Fear sets in |
Stage 3B: We face our reckoning (unless we moved away or they're incapacitated)
Stage 1: The mistake is made
Stage 3A: We face our own failures
Stage 2: Fear sets in
Vars | |
| onstation | determines if the circuit board originated from a vendor off station or not. |
|---|---|
Procs | |
| configure_machine | Used to allow the circuitboard to configure a machine in some way, shape or form. |
determines if the circuit board originated from a vendor off station or not.
Used to allow the circuitboard to configure a machine in some way, shape or form.
+Arguments:
+Clipboard
Vars | |
| integrated_pen | Is the pen integrated? |
|---|---|
| pen | The stored pen |
| toppaper_ref | Weakref of the topmost piece of paper |
Procs | |
| on_top_paper_change | This is a simple proc to handle calling update_icon() upon receiving the top paper's COMSIG_ATOM_UPDATE_APPEARANCE. |
| remove_paper | Take out the topmost paper |
Is the pen integrated?
The stored pen
Weakref of the topmost piece of paper
+This is used for the paper displayed on the clipboard's icon +and it is the one attacked, when attacking the clipboard. +(As you can't organise contents directly in BYOND)
This is a simple proc to handle calling update_icon() upon receiving the top paper's COMSIG_ATOM_UPDATE_APPEARANCE.
Take out the topmost paper
Vars | |
| armor_list | These are armor values that protect the wearer, taken from the clothing's armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic(). |
|---|---|
| durability_list | These are armor values that protect the clothing, taken from its armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic(). |
Procs | |
| armor_to_protection_class | Rounds armor_value to nearest 10, divides it by 10 and then expresses it in roman numerals up to 10 |
| bristle | If we're a clothing with at least 1 shredded/disabled zone, give the wearer a periodic heads up letting them know their clothes are damaged |
| disable_zone | disable_zone() is used to disable a given bodypart's protection on our clothing item, mainly from [/obj/item/clothing/proc/take_damage_zone()] |
| take_damage_zone | take_damage_zone() is used for dealing damage to specific bodyparts on a worn piece of clothing, meant to be called from [/obj/item/bodypart/proc/check_woundings_mods()] |
These are armor values that protect the wearer, taken from the clothing's armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic().
These are armor values that protect the clothing, taken from its armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic().
Rounds armor_value to nearest 10, divides it by 10 and then expresses it in roman numerals up to 10
+Rounds armor_value to nearest 10, divides it by 10 +and then expresses it in roman numerals up to 10 +Arguments:
+If we're a clothing with at least 1 shredded/disabled zone, give the wearer a periodic heads up letting them know their clothes are damaged
disable_zone() is used to disable a given bodypart's protection on our clothing item, mainly from [/obj/item/clothing/proc/take_damage_zone()]
+This proc disables all protection on the specified bodypart for this piece of clothing: it'll be as if it doesn't cover it at all anymore (because it won't!) +If every possible bodypart has been disabled on the clothing, we put it out of commission entirely and mark it as shredded, whereby it will have to be repaired in +order to equip it again. Also note we only consider it damaged if there's more than one bodypart disabled.
+Arguments:
+take_damage_zone() is used for dealing damage to specific bodyparts on a worn piece of clothing, meant to be called from [/obj/item/bodypart/proc/check_woundings_mods()]
+This proc only matters when a bodypart that this clothing is covering is harmed by a direct attack (being on fire or in space need not apply), and only if this clothing covers
+
+more than one bodypart to begin with. No point in tracking damage by zone for a hat, and I'm not cruel enough to let you fully break them in a few shots. +Also if limb_integrity is 0, then this clothing doesn't have bodypart damage enabled so skip it.
+Arguments:
+Vars | |
| hud_trait | Used for topic calls. Just because you have a HUD display doesn't mean you should be able to interact with stuff. |
|---|---|
Used for topic calls. Just because you have a HUD display doesn't mean you should be able to interact with stuff.
Vars | |
| enhancement | Extra damage through the punch. |
|---|---|
| inherited_trait | Main trait added by the gloves to the user on wear. |
| secondary_trait | Secondary trait added by the gloves to the user on wear. |
| silent | do we give the flavortext for wearing them |
| wornonce | did you ever get around to wearing these or no |
| wound_enhancement | extra wound bonus through the punch (MAYBE DON'T BE GENEROUS WITH THIS) |
Extra damage through the punch.
Main trait added by the gloves to the user on wear.
Secondary trait added by the gloves to the user on wear.
do we give the flavortext for wearing them
did you ever get around to wearing these or no
extra wound bonus through the punch (MAYBE DON'T BE GENEROUS WITH THIS)
Procs | |
| show_overslot | Replaces these gloves on the wearer with the overslot ones |
|---|---|
Replaces these gloves on the wearer with the overslot ones
Space ninja's gloves. Gives access to a number of special interactions.
+Gloves only found from space ninjas. Allows the wearer to access special interactions with various objects. +These interactions are detailed in ninjaDrainAct.dm in the suit file. +These interactions are toggled by an action tied to the gloves. The interactions will not activate if the user is also not wearing a ninja suit.
Vars | |
| borg_hack_success | Whether or not the cyborg hack was used to syndify a cyborg |
|---|---|
| candrain | Whether or not we can currently drain something |
| communication_console_hack_success | Whether or not the communication console hack was used to summon another antagonist |
| door_hack_counter | How many times the gloves have been used to force open doors. |
| draining | Whether or not we're currently draining something |
| maxdrain | Maximum amount of power we can drain in a single drain action |
| mindrain | Minimum amount of power we can drain in a single drain action |
| security_console_hack_success | Whether or not the security console hack was used to set everyone to arrest |
Procs | |
| toggledrain | Proc called to toggle the ninja glove's special abilities. |
Whether or not the cyborg hack was used to syndify a cyborg
Whether or not we can currently drain something
Whether or not the communication console hack was used to summon another antagonist
How many times the gloves have been used to force open doors.
Whether or not we're currently draining something
Maximum amount of power we can drain in a single drain action
Minimum amount of power we can drain in a single drain action
Whether or not the security console hack was used to set everyone to arrest
Proc called to toggle the ninja glove's special abilities.
+Used to toggle whether or not the ninja glove's abilities will activate on touch.
Vars | |
| base_knockdown | See: /datum/component/tackler/var/base_knockdown |
|---|---|
| min_distance | See: /datum/component/tackler/var/min_distance |
| skill_mod | See: /datum/component/tackler/var/skill_mod |
| tackle_range | See: /datum/component/tackler/var/range |
| tackle_speed | See: /datum/component/tackler/var/speed |
| tackle_stam_cost | See: /datum/component/tackler/var/stamina_cost |
| tackler | For storing our tackler datum so we can remove it after |
See: /datum/component/tackler/var/base_knockdown
See: /datum/component/tackler/var/min_distance
See: /datum/component/tackler/var/skill_mod
See: /datum/component/tackler/var/range
See: /datum/component/tackler/var/speed
See: /datum/component/tackler/var/stamina_cost
For storing our tackler datum so we can remove it after
Procs | |
| throw_impact | Special throw_impact for hats to frisbee hats at people to place them on their heads. |
|---|---|
Special throw_impact for hats to frisbee hats at people to place them on their heads.
Procs | |
| wipe_that_smile_off_your_face | gets called when receiving the CLEAN_ACT signal from something, i.e soap or a shower. exists to remove any smiley faces drawn on the helmet. |
|---|---|
gets called when receiving the CLEAN_ACT signal from something, i.e soap or a shower. exists to remove any smiley faces drawn on the helmet.
Space ninja's hood. Provides armor and blocks AI tracking.
+A hood that only exists as a part of space ninja's starting kit. Provides armor equal of space ninja's suit and disallows an AI to track the wearer.
Vars | |
| downsprite | Sprite visible when the ushanka flaps are folded down. |
|---|---|
| upsprite | Sprite visible when the ushanka flaps are folded up. |
Sprite visible when the ushanka flaps are folded down.
Sprite visible when the ushanka flaps are folded up.
Procs | |
| adjustmask | Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption +The flavor_details variable is for masks that use this function only to toggle HIDEFACE for identity. |
|---|---|
Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption +The flavor_details variable is for masks that use this function only to toggle HIDEFACE for identity.
Vars | |
| chameleon_action | This determines if the voice changer is on or off. |
|---|---|
This determines if the voice changer is on or off.
Mining Equipment Vendor Items
+Facehugger toy
Space ninja's mask. Makes you sound like a real anime girl. Barely able to be considered a real upside.
+A mask which only spawns as a part of space ninja's starting kit. Functions as a gas mask.
Vars | |
| local_user | Who is wearing this |
|---|---|
Who is wearing this
Vars | |
| weight_gain_rate_modifier | How much faster does the wearer gain weight? 1 = 100% faster |
|---|---|
How much faster does the wearer gain weight? 1 = 100% faster
Vars | |
| trait | What trait do we want to add upon equipiing |
|---|---|
What trait do we want to add upon equipiing
Vars | |
| profit_scaling | scales the amount received in case an admin wants to emulate taxes/fees. |
|---|---|
| selling | toggles between sell (TRUE) and get price post-fees (FALSE) |
scales the amount received in case an admin wants to emulate taxes/fees.
toggles between sell (TRUE) and get price post-fees (FALSE)
Vars | |
| can_be_tied | Whether these shoes have laces that can be tied/untied |
|---|---|
| lace_time | How long it takes to lace/unlace these shoes |
| our_alert | any alerts we have active |
| tied | Are we currently tied? Can either be SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED |
Procs | |
| adjust_laces | adjust_laces adjusts whether our shoes (assuming they can_be_tied) and tied, untied, or knotted |
| check_trip | check_trip runs on each step to see if we fall over as a result of our lace status. Knotted laces are a guaranteed trip, while untied shoes are just a chance to stumble |
| handle_tying | handle_tying deals with all the actual tying/untying/knotting, inferring your intent from who you are in relation to the state of the laces |
| still_shoed | checking to make sure we're still on the person we're supposed to be, for lacing do_after's |
Whether these shoes have laces that can be tied/untied
How long it takes to lace/unlace these shoes
any alerts we have active
Are we currently tied? Can either be SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED
adjust_laces adjusts whether our shoes (assuming they can_be_tied) and tied, untied, or knotted
+In addition to setting the state, it will deal with getting rid of alerts if they exist, as well as registering and unregistering the stepping signals
+Arguments:
+check_trip runs on each step to see if we fall over as a result of our lace status. Knotted laces are a guaranteed trip, while untied shoes are just a chance to stumble
handle_tying deals with all the actual tying/untying/knotting, inferring your intent from who you are in relation to the state of the laces
+If you're the wearer, you want them to move towards tied-ness (knotted -> untied -> tied). If you're not, you're pranking them, so you're moving towards knotted-ness (tied -> untied -> knotted)
+Arguments:
+checking to make sure we're still on the person we're supposed to be, for lacing do_after's
Procs | |
| show_overslot | Replaces these shoes on the wearer with the overslot ones |
|---|---|
Replaces these shoes on the wearer with the overslot ones
Space ninja's shoes. Gives him armor on his feet.
+Space ninja's ninja shoes. How mousey. Gives him slip protection and protection against attacks. +Also are temperature resistant.
Vars | |
| alternative_mode | Alternative mode for hiding the hood, instead of storing the hood in the suit it qdels it, useful for when you deal with hooded suit with storage. |
|---|---|
Alternative mode for hiding the hood, instead of storing the hood in the suit it qdels it, useful for when you deal with hooded suit with storage.
Space ninja's suit. Provides him with most of his powers.
+Space ninja's suit. Gives space ninja all his iconic powers, which are mostly kept in +the folder ninja_equipment_actions. Has a lot of unique stuff going on, so make sure to check +the variables. Check suit_attackby to see radium interaction, disk copying, and cell replacement.
Vars | |
| a_boost | Whether or not the adrenaline boost ability is available |
|---|---|
| a_transfer | Units of radium required to refill the adrenaline boost |
| affecting | The person wearing the suit |
| n_mask | The space ninja's mask. |
| s_acost | Additional energy cost for cloaking per process |
| s_busy | Whether or not the wearer is in the middle of an action, like hacking. |
| s_coold | The suit's current cooldown. If not 0, blocks usage of most abilities, and decrements its value by 1 every process |
| s_cost | How much energy the suit expends in a single process |
| s_delay | How fast the suit is at certain actions, like draining power from things |
| s_initialized | Whether or not the suit is currently booted up. Starts off. |
| s_longdelay | How fast the suit is at certain riskier actions, like hacking communications consoles. |
| stealth | Whether or not the suit is currently in stealth mode. |
Procs | |
| cancel_stealth | Proc called to cancel stealth. |
| deinitialize | Deinitializes the ninja suit |
| lock_suit | Proc called to lock the important gear pieces onto space ninja's body. |
| ninitialize | Initializes the ninja suit |
| ninja_sword_recall | Proc called to recall the ninja's sword. |
| ninjaboost | Proc called to activate space ninja's adrenaline. |
| ninjaboost_after | Proc called to inject the ninja with radium. |
| ninjacost | Proc called to check if the ninja can afford an ability's cost. |
| ninjanet | Proc called to ensnare a person in a energy net. |
| ninjapulse | Proc called to allow the ninja to EMP the nearby area. |
| ninjastar | Proc called to create a ninja star in the ninja's hands. |
| terminate | Proc used to delete all the attachments and itself. |
| toggle_on_off | Toggles the ninja suit on/off |
| toggle_stealth | Proc called to toggle ninja stealth. |
| unlock_suit | Proc called to unlock all the gear off space ninja's body. |
Whether or not the adrenaline boost ability is available
Units of radium required to refill the adrenaline boost
The person wearing the suit
The space ninja's mask.
Additional energy cost for cloaking per process
Whether or not the wearer is in the middle of an action, like hacking.
The suit's current cooldown. If not 0, blocks usage of most abilities, and decrements its value by 1 every process
How much energy the suit expends in a single process
How fast the suit is at certain actions, like draining power from things
Whether or not the suit is currently booted up. Starts off.
How fast the suit is at certain riskier actions, like hacking communications consoles.
Whether or not the suit is currently in stealth mode.
Proc called to cancel stealth.
+Called to cancel the stealth effect if it is ongoing. +Does nothing otherwise. +Arguments:
+Deinitializes the ninja suit
+Deinitializes the ninja suit through eight phases, each of which calls this proc with an incremented phase +Arguments:
+Proc called to lock the important gear pieces onto space ninja's body.
+Called during the suit startup to lock all gear pieces onto space ninja. +Terminates if a gear piece is not being worn. Also gives the ninja the inability to use firearms. +If the person in the suit isn't a ninja when this is called, this proc just gibs them instead. +Arguments:
+Initializes the ninja suit
+Initializes the ninja suit through seven phases, each of which calls this proc with an incremented phase +Arguments:
+Proc called to recall the ninja's sword.
+Called to summon the ninja's katana back to them +If the katana can see the ninja, it will throw itself towards them. +If not, the katana will teleport itself to the ninja.
Proc called to activate space ninja's adrenaline.
+Proc called to use space ninja's adrenaline. Gets the ninja out of almost any stun. +Also makes them shout MGS references when used. After a bit, it injects the user with +radium by calling a different proc.
Proc called to inject the ninja with radium.
+Used after 7 seconds of using the ninja's adrenaline. +Injects the user with how much radium the suit needs to refill an adrenaline boost.
Proc called to check if the ninja can afford an ability's cost.
+Proc which determine whether or not a space ninja can afford to use a specific ability. +It can also cancel stealth if the ability requested it. +Arguments:
+Proc called to ensnare a person in a energy net.
+Used to ensnare a target in an energy net, preventing them from moving until the net is broken. +Costs 40E, which is 40% of the default battery's max charge. Intended as a means of reliably locking down an opponent when ninja stars won't suffice.
Proc called to allow the ninja to EMP the nearby area.
+Proc called to allow the ninja to EMP the nearby area. By default, costs 500E, which is half of the default battery's max charge. +Also affects the ninja as well.
Proc called to create a ninja star in the ninja's hands.
+Called to create a ninja star in the wearer's hand. The ninja +star doesn't do much up-front damage, but deals stamina damage +as the target moves around, forcing a finish or flee scenario.
Proc used to delete all the attachments and itself.
+Can be called to entire rid of the suit pieces and the suit itself.
Toggles the ninja suit on/off
+Attempts to initialize or deinitialize the ninja suit
Proc called to toggle ninja stealth.
+Proc called to toggle whether or not the ninja is in stealth mode. +If cancelling, calls a separate proc in case something else needs to quickly cancel stealth.
Proc called to unlock all the gear off space ninja's body.
+Proc which is essentially the opposite of lock_suit. Lets you take off all the suit parts. +Also gets rid of the objection to using firearms from the wearer. +Arguments:
+Procs | |
| try_eject | Implement this when your hardware contains an object that the user can eject. |
|---|---|
Implement this when your hardware contains an object that the user can eject.
+Examples include ejecting cells from battery modules, ejecting an ID card from a card reader +or ejecting an Intellicard from an AI card slot. +Arguments:
+Procs | |
| Exited | What happens when the intellicard is removed (or deleted) from the module, through try_eject() or not. |
|---|---|
What happens when the intellicard is removed (or deleted) from the module, through try_eject() or not.
Procs | |
| Exited | What happens when the battery is removed (or deleted) from the module, through try_eject() or not. |
|---|---|
What happens when the battery is removed (or deleted) from the module, through try_eject() or not.
Procs | |
| Exited | What happens when the ID card is removed (or deleted) from the module, through try_eject() or not. |
|---|---|
| swap_slot | Swaps the card_slot hardware between using the dedicated card slot bay on a computer, and using an expansion bay. |
What happens when the ID card is removed (or deleted) from the module, through try_eject() or not.
Swaps the card_slot hardware between using the dedicated card slot bay on a computer, and using an expansion bay.
Vars | |
| blueprint | type of the plumbing machine |
|---|---|
| choices | index, used in the attack self to get the type. stored here since it doesnt change |
| name_to_type | index, used in the attack self to get the type. stored here since it doesnt change |
Procs | |
| create_machine | pretty much rcd_create, but named differently to make myself feel less bad for copypasting from a sibling-type |
type of the plumbing machine
index, used in the attack self to get the type. stored here since it doesnt change
index, used in the attack self to get the type. stored here since it doesnt change
pretty much rcd_create, but named differently to make myself feel less bad for copypasting from a sibling-type
Vars | |
| current_sort | the list of things that are currently within the sorting list |
|---|---|
| spawned_sorters | the list of conveyor sorters spawned by |
the list of things that are currently within the sorting list
the list of conveyor sorters spawned by
Procs | |
| generate | Choose what our prize is :D |
|---|---|
Choose what our prize is :D
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| cell_removable | If the cell can be removed via screwdriver |
|---|---|
| charge_state | The icon state for the charge bar overlay, not applied if null |
| emagged_state | The icon state for the emagged overlay, not applied if null |
| nocell_state | The icon state for the missing cell overlay, not applied if null |
| paddle_state | The icon state for the paddle overlay, not applied if null |
| powered_state | The icon state for the powered on overlay, not applied if null |
If the cell can be removed via screwdriver
The icon state for the charge bar overlay, not applied if null
The icon state for the emagged overlay, not applied if null
The icon state for the missing cell overlay, not applied if null
The icon state for the paddle overlay, not applied if null
The icon state for the powered on overlay, not applied if null
Vars | |
| can_reflect | Can this reflect all energy projectiles? |
|---|---|
Procs | |
| on_unwield | Triggered on unwield of two handed item +switch hitsounds |
| on_wield | Triggered on wield of two handed item +Specific hulk checks due to reflection chance for balance issues and switches hitsounds. |
Can this reflect all energy projectiles?
Triggered on unwield of two handed item +switch hitsounds
Triggered on wield of two handed item +Specific hulk checks due to reflection chance for balance issues and switches hitsounds.
Procs | |
| dye | Applies a gradient and a gradient color to a mob. |
|---|---|
Applies a gradient and a gradient color to a mob.
+Arguments:
+Vars | |
| status_effect | Typepath to the status effect this is supposed to hold |
|---|---|
Procs | |
| effect | The effect of the potion if it has any special one, in general try not to override this and utilize the status_effect var to make custom effects. |
Typepath to the status effect this is supposed to hold
The effect of the potion if it has any special one, in general try not to override this and utilize the status_effect var to make custom effects.
Vars | |
| accesses | A list of all granted accesses |
|---|---|
| holder | A holder of the electronics, in case of them working as an integrated part |
| one_access | If the airlock should require ALL or only ONE of the listed accesses |
| unres_sides | Unrestricted sides, or sides of the airlock that will open regardless of access |
A list of all granted accesses
A holder of the electronics, in case of them working as an integrated part
If the airlock should require ALL or only ONE of the listed accesses
Unrestricted sides, or sides of the airlock that will open regardless of access
Vars | |
| id | Electrochromatic ID |
|---|---|
Electrochromatic ID
The space ninja's katana.
+The katana that only space ninja spawns with. Comes with 30 force and throwforce, along with a signature special jaunting system. +Upon clicking on a tile with the dash on, the user will teleport to that tile, assuming their target was not dense. +The katana has 3 dashes stored at maximum, and upon using the dash, it will return 20 seconds after it was used. +It also has a special feature where if it is tossed at a space ninja who owns it (determined by the ninja suit), the ninja will catch the katana instead of being hit by it.
Procs | |
| returnToOwner | Proc called when the katana is recalled to its space ninja. |
|---|---|
Proc called when the katana is recalled to its space ninja.
+Proc called when space ninja is hit with its suit's katana or the recall ability is used. +Arguments:
+Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| uv_cooldown | Our current UV cooldown |
|---|---|
| uv_cooldown_length | How long between UV fryings |
| uv_power | How much sanitization to apply to the burn wound |
Our current UV cooldown
How long between UV fryings
How much sanitization to apply to the burn wound
Vars | |
| blacklisted_turfs | Where we cannot create the rune? |
|---|---|
| charge | how many charges do we have? |
| last_user | Last person that touched this |
Procs | |
| draw_rune | Draws a rune on a selected turf |
| get_power_from_influence | Gives you a charge and destroys a corresponding influence |
| remove_rune | Removes runes from the selected turf |
Where we cannot create the rune?
how many charges do we have?
Last person that touched this
Draws a rune on a selected turf
Gives you a charge and destroys a corresponding influence
Removes runes from the selected turf
Vars | |
| gang_to_use | The typepath of the gang antagonist datum that the person who uses the package should have added to them -- remember that the distinction between e.g. Ballas and Grove Street is on the antag datum level, not the team datum level. |
|---|---|
| handler | References the active families gamemode handler (if one exists), for adding new family members to. |
| team_to_use | The team datum that the person who uses this package should be added to. |
Procs | |
| add_to_gang | Adds the user to the family that this package corresponds to, dispenses the free_clothes of that family, and adds them to the handler if it exists. |
| attempt_join_gang | Checks if the user is trying to use the package of the family they are in, and if not, adds them to the family, with some differing processing depending on whether the user is already a family member. |
The typepath of the gang antagonist datum that the person who uses the package should have added to them -- remember that the distinction between e.g. Ballas and Grove Street is on the antag datum level, not the team datum level.
References the active families gamemode handler (if one exists), for adding new family members to.
The team datum that the person who uses this package should be added to.
Adds the user to the family that this package corresponds to, dispenses the free_clothes of that family, and adds them to the handler if it exists.
Checks if the user is trying to use the package of the family they are in, and if not, adds them to the family, with some differing processing depending on whether the user is already a family member.
Vars | |
| ex_dev | how big of a devastation explosion radius on prime |
|---|---|
| ex_flame | how big of a flame explosion radius on prime |
| ex_heavy | how big of a heavy explosion radius on prime |
| ex_light | how big of a light explosion radius on prime |
| shrapnel_radius | the higher this number, the more projectiles are created as shrapnel |
| shrapnel_type | if set, will spew out projectiles of this type |
how big of a devastation explosion radius on prime
how big of a flame explosion radius on prime
how big of a heavy explosion radius on prime
how big of a light explosion radius on prime
the higher this number, the more projectiles are created as shrapnel
if set, will spew out projectiles of this type
Vars | |
| shrapnel_type | how many times we need to "rotate" the charge in hand per extra tile of magnitude |
|---|---|
Procs | |
| attack_self | how many times we've "rotated" the charge |
how many times we need to "rotate" the charge in hand per extra tile of magnitude
how many times we've "rotated" the charge
Vars | |
| burst_shot_delay | The time between shots in burst. |
|---|---|
| burst_size | Weapon is burst fire if this is above 1 |
| busy_action | Used in gun-in-mouth execution/suicide and similar, while TRUE nothing should work on this like firing or modification and so on and so forth. |
| can_circuit | can we be put in a circuit |
| can_emitter | can we be put in an emitter |
| can_turret | can we be put into a turret |
| dir_recoil_amp | directional recoil multiplier |
| fire_delay | The time between firing actions, this means between bursts if this is burst weapon. The reason this is 0 is because you are still, by default, limited by clickdelay. |
| fire_select | Current fire selection, can choose between burst, single, and full auto. |
| fire_select_modes | What modes does this weapon have? Put SELECT_FULLY_AUTOMATIC in here to enable fully automatic behaviours. |
| firing | Currently firing, whether or not it's a burst or not. |
| last_fire | Last world.time this was fired |
| projectile_damage_multiplier | Just 'slightly' snowflakey way to modify projectile damage for projectiles fired from this gun. |
| selector_switch_icon | if i`1t has an icon for a selector switch indicating current firemode. |
Procs | |
| set_gun_light | Swaps the gun's seclight, dropping the old seclight if it has not been qdel'd. |
The time between shots in burst.
Weapon is burst fire if this is above 1
Used in gun-in-mouth execution/suicide and similar, while TRUE nothing should work on this like firing or modification and so on and so forth.
can we be put in a circuit
can we be put in an emitter
can we be put into a turret
directional recoil multiplier
The time between firing actions, this means between bursts if this is burst weapon. The reason this is 0 is because you are still, by default, limited by clickdelay.
Current fire selection, can choose between burst, single, and full auto.
What modes does this weapon have? Put SELECT_FULLY_AUTOMATIC in here to enable fully automatic behaviours.
Currently firing, whether or not it's a burst or not.
Last world.time this was fired
Just 'slightly' snowflakey way to modify projectile damage for projectiles fired from this gun.
if i`1t has an icon for a selector switch indicating current firemode.
Swaps the gun's seclight, dropping the old seclight if it has not been qdel'd.
+Returns the former gun_light that has now been replaced by this proc. +Arguments:
+Procs | |
| on_sawoff | is something supposed to happen here? |
|---|---|
is something supposed to happen here?
Vars | |
| max_bullets | What is the max amount of bullets we can stash in this baby? |
|---|---|
| stashed_bullets | How many bullets are currently stashed in the gun |
What is the max amount of bullets we can stash in this baby?
How many bullets are currently stashed in the gun
Vars | |
| ammo_type | = TRUE/FALSE decides if the user can switch to it of their own accord |
|---|---|
| current_firemode_index | The index of the ammo_types/firemodes which we're using right now |
| right_click_overridden | SET THIS TO TRUE IF YOU OVERRIDE altafterattack() or ANY right click action! If this is FALSE, the gun will show in examine its default right click behavior, which is to switch modes. |
| shot_type_overlay | If TRUE, when modifystate is TRUE this energy gun gets an overlay based on its selected shot type, like "[icon_state]_disable". |
Procs | |
| get_charge_ratio | Used by update_icon_state() and update_overlays() |
| select_fire | This is the proc used in general for when a user switches firemodes. Just goes to next firemode by default. |
= TRUE/FALSE decides if the user can switch to it of their own accord
The index of the ammo_types/firemodes which we're using right now
SET THIS TO TRUE IF YOU OVERRIDE altafterattack() or ANY right click action! If this is FALSE, the gun will show in examine its default right click behavior, which is to switch modes.
If TRUE, when modifystate is TRUE this energy gun gets an overlay based on its selected shot type, like "[icon_state]_disable".
Used by update_icon_state() and update_overlays()
This is the proc used in general for when a user switches firemodes. Just goes to next firemode by default.
Vars | |
| zoom_target_view_increase | The radius you want to zoom by |
|---|---|
The radius you want to zoom by
/////FATORAYS THAT CAN BE MADE BY LATHES OR RESEARCHED///////////
+Weaker version of fatoray
Vars | |
| missed | if we missed our target |
|---|---|
if we missed our target
Procs | |
| sendToNewRoom | This is a BLOCKING OPERATION. Note the room load call, and the block reservation calls. |
|---|---|
This is a BLOCKING OPERATION. Note the room load call, and the block reservation calls.
Vars | |
| required_fatness | What fatness level does the target need to be for the implant to work? |
|---|---|
| traits_list | What traits do we want to give the implanted mob? |
What fatness level does the target need to be for the implant to work?
What traits do we want to give the implanted mob?
Vars | |
| name_to_give | What name do we want to give the mob before adding the randomized number |
|---|---|
| productivity_mult | How much do we want to modifiy the productivity stats of the mob's current sex organs by? |
| stored_name | What is the name of the mob before we change it? |
What name do we want to give the mob before adding the randomized number
How much do we want to modifiy the productivity stats of the mob's current sex organs by?
What is the name of the mob before we change it?
Mining Hammer
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| bleed_stacks_per_hit | Bleed stacks applied when an organic mob target is hit |
|---|---|
Bleed stacks applied when an organic mob target is hit
Vars | |
| target | Target |
|---|---|
Target
Mail is tamper-evident and unresealable, postmarked by CentCom for an individual recepient.
Vars | |
| department_colors | mail will have the color of the department the recipient is in. |
|---|---|
| generic_goodies | Goodies which can be given to anyone. The base weight for cash is 56. For there to be a 50/50 chance of getting a department item, they need 56 weight as well. |
| goodie_count | How many goodies this mail contains. |
| postmarked | Does the letter have the postmark overlay? |
| recipient_ref | Weak reference to who this mail is for and who can open it. |
| sort_tag | Destination tagging for the mail sorter. |
| stamp_max | Maximum number of stamps on the letter. |
| stamp_offset_x | Physical offset of stamps on the object. X direction. |
| stamp_offset_y | Physical offset of stamps on the object. Y direction. |
| stamped | Does the letter have a stamp overlay? |
| stamps | List of all stamp overlays on the letter. |
Procs | |
| initialize_for_recipient | Accepts a mind to initialize goodies for a piece of mail. |
| junk_mail | Alternate setup, just complete garbage inside and anyone can open |
| unwrap | proc for unwrapping a mail. Goes just for an unwrapping procces, returns FALSE if it fails. |
mail will have the color of the department the recipient is in.
Goodies which can be given to anyone. The base weight for cash is 56. For there to be a 50/50 chance of getting a department item, they need 56 weight as well.
How many goodies this mail contains.
Does the letter have the postmark overlay?
Weak reference to who this mail is for and who can open it.
Destination tagging for the mail sorter.
Maximum number of stamps on the letter.
Physical offset of stamps on the object. X direction.
Physical offset of stamps on the object. Y direction.
Does the letter have a stamp overlay?
List of all stamp overlays on the letter.
Accepts a mind to initialize goodies for a piece of mail.
Alternate setup, just complete garbage inside and anyone can open
proc for unwrapping a mail. Goes just for an unwrapping procces, returns FALSE if it fails.
Procs | |
| Initialize | Subtype that's always junkmail |
|---|---|
Subtype that's always junkmail
Vars | |
| mech_flags | Bitflag. Used by exosuit fabricator to assign sub-categories based on which exosuits can equip this. |
|---|---|
| range | Bitflag. Determines the range of the equipment. |
Procs | |
| do_after_checks | do after checks for the mecha equipment do afters |
Bitflag. Used by exosuit fabricator to assign sub-categories based on which exosuits can equip this.
Bitflag. Determines the range of the equipment.
do after checks for the mecha equipment do afters
Vars | |
| can_toggle_lethal | TRUE - Can toggle between lethal and non-lethal || FALSE - Cannot toggle |
|---|---|
| punch_damage | Damage done by the glove on contact. Also used to determine throw distance (damage / 5) |
TRUE - Can toggle between lethal and non-lethal || FALSE - Cannot toggle
Damage done by the glove on contact. Also used to determine throw distance (damage / 5)
Vars | |
| ai_beacon | If this beacon allows for AI control. Exists to avoid using istype() on checking |
|---|---|
| chassis | The Mecha that this tracking beacon is attached to |
| recharging | Cooldown variable for EMP pulsing |
Procs | |
| get_mecha_info | Returns a html formatted string describing attached mech status |
| recharge | Resets recharge variable, allowing tracker to be EMP pulsed again |
| shock | Attempts to EMP mech that the tracker is attached to, if there is one and tracker is not on cooldown |
If this beacon allows for AI control. Exists to avoid using istype() on checking
The Mecha that this tracking beacon is attached to
Cooldown variable for EMP pulsing
Returns a html formatted string describing attached mech status
Resets recharge variable, allowing tracker to be EMP pulsed again
Attempts to EMP mech that the tracker is attached to, if there is one and tracker is not on cooldown
Vars | |
| block_percent_to_counter | block percent needed to prevent knockdown/disarm |
|---|---|
block percent needed to prevent knockdown/disarm
Vars | |
| block_percent_to_counter | block mitigation needed to prevent knockdown/disarms |
|---|---|
block mitigation needed to prevent knockdown/disarms
Vars | |
| blacklisted_turfs | turfs that you cannot draw carvings on |
|---|---|
| current_runes | A list of current runes |
| drawing | A check to see if you are in process of drawing a rune |
| linked_action | Linked action |
| max_rune_amt | Max amount of runes |
Procs | |
| carve_rune | Action of carving runes, gives you the ability to click on floor and choose a rune of your need. |
turfs that you cannot draw carvings on
A list of current runes
A check to see if you are in process of drawing a rune
Linked action
Max amount of runes
Action of carving runes, gives you the ability to click on floor and choose a rune of your need.
Vars | |
| board_item_type | The vehicle counterpart for the board |
|---|---|
The vehicle counterpart for the board
Vars | |
| fattening_verb | What verb is used for the spell? |
|---|---|
| weight_to_add | How much weight is added? |
Procs | |
| afterattack | Is weight being transfered from the user to another mob? |
What verb is used for the spell?
How much weight is added?
Is weight being transfered from the user to another mob?
Bosses
Vars | |
| roll_orientation | do you spin when dodgerolling |
|---|---|
| roll_range | how far are we rolling? |
| roll_stamcost | how much stamina does it cost to roll? |
do you spin when dodgerolling
how far are we rolling?
how much stamina does it cost to roll?
Mining Equipment Vendor Items
+Mining Equipment Voucher
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| activating | If the suit is currently activating/deactivating. |
|---|---|
| activation_step_time | How long this MOD takes each part to seal. |
| active | If the suit is deployed and turned on. |
| ai | AI/pAI mob inhabiting the MOD. |
| boots | MOD boots. |
| cell | MOD cell. |
| cell_drain | Power usage of the MOD. |
| chestplate | MOD chestplate. |
| complexity | How much module complexity this MOD is carrying. |
| complexity_max | How much module complexity can this MOD carry. |
| cooldown_mod_move | Cooldown for AI moves. |
| extended_desc | Extended description of the theme. |
| gauntlets | MOD gauntlets. |
| helmet | MOD helmet. |
| initial_modules | Modules the MOD should spawn with. |
| interface_break | If the suit interface is broken. |
| malfunctioning | If the suit is malfunctioning. |
| mod_parts | List of parts (helmet, chestplate, gauntlets, boots). |
| modules | Modules the MOD currently possesses. |
| movedelay | Delay between moves as AI. |
| open | If the suit wire/module hatch is open. |
| seconds_electrified | How long the MOD is electrified for. |
| selected_module | Currently used module. |
| skin | Looks of the MOD. |
| slowdown_active | Slowdown of the MOD when active. |
| slowdown_inactive | Slowdown of the MOD when not active. |
| theme | The MOD's theme, decides on some stuff like armor and statistics. |
| ui_theme | Theme of the MOD TGUI |
| wearer | Person wearing the MODsuit. |
Procs | |
| choose_deploy | Creates a radial menu from which the user chooses parts of the suit to deploy/retract. Repeats until all parts are extended or retracted. |
| conceal | Retract a part of the suit from the user |
| deploy | Deploys a part of the suit onto the user. |
| extract_pai | Simple proc to extract the pAI from the MODsuit. It's the proc to call if you want to take it out, +remove_pai() is there so atom_destruction() doesn't have any risk of sleeping. |
| finish_activation | Finishes the suit's activation, starts processing |
| insert_pai | Simple proc to insert the pAI into the MODsuit. |
| quick_activation | Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits. |
| remove_pai | Simple proc that handles the safe removal of the pAI from a MOD control unit. |
| seal_part | Seals or unseals the given part |
| toggle_activate | Starts the activation sequence, where parts of the suit activate one by one until the whole suit is on |
If the suit is currently activating/deactivating.
How long this MOD takes each part to seal.
If the suit is deployed and turned on.
AI/pAI mob inhabiting the MOD.
MOD boots.
MOD cell.
Power usage of the MOD.
MOD chestplate.
How much module complexity this MOD is carrying.
How much module complexity can this MOD carry.
Cooldown for AI moves.
Extended description of the theme.
MOD gauntlets.
MOD helmet.
Modules the MOD should spawn with.
If the suit interface is broken.
If the suit is malfunctioning.
List of parts (helmet, chestplate, gauntlets, boots).
Modules the MOD currently possesses.
Delay between moves as AI.
If the suit wire/module hatch is open.
How long the MOD is electrified for.
Currently used module.
Looks of the MOD.
Slowdown of the MOD when active.
Slowdown of the MOD when not active.
The MOD's theme, decides on some stuff like armor and statistics.
Theme of the MOD TGUI
Person wearing the MODsuit.
Creates a radial menu from which the user chooses parts of the suit to deploy/retract. Repeats until all parts are extended or retracted.
Retract a part of the suit from the user
Deploys a part of the suit onto the user.
Simple proc to extract the pAI from the MODsuit. It's the proc to call if you want to take it out, +remove_pai() is there so atom_destruction() doesn't have any risk of sleeping.
+user - The person trying to take out the pAI from the MODsuit. +forced - Whether or not we skip the checks and just eject the pAI. Defaults to FALSE. +feedback - Whether to give feedback via balloon alerts or not. Defaults to TRUE.
Finishes the suit's activation, starts processing
Simple proc to insert the pAI into the MODsuit.
+user - The person trying to put the pAI into the MODsuit. +card - The pAI card we're slotting in the MODsuit.
Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits.
Simple proc that handles the safe removal of the pAI from a MOD control unit.
+Arguments:
+Seals or unseals the given part
Starts the activation sequence, where parts of the suit activate one by one until the whole suit is on
Vars | |
| active | Is the module active |
|---|---|
| active_power_cost | Power use when active |
| allowed_in_phaseout | If we're allowed to use this module while phased out. |
| allowed_inactive | If we're allowed to use this module while the suit is disabled. |
| complexity | How much space it takes up in the MOD |
| cooldown_time | Cooldown after use |
| cooldown_timer | Timer for the cooldown |
| device | If we're an active module, what item are we? |
| idle_power_cost | Power use when idle |
| incompatible_modules | What modules are we incompatible with? |
| mod | Linked MODsuit |
| module_type | If it's passive, togglable, usable or active |
| overlay_icon_file | Icon file for the overlay. |
| overlay_state_active | Overlay given to the user when the module is active |
| overlay_state_inactive | Overlay given to the user when the module is inactive |
| overlay_state_use | Overlay given to the user when the module is used, lasts until cooldown finishes |
| removable | If it can be removed |
| tgui_id | ID used by their TGUI |
| use_mod_colors | Does the overlay use the control unit's colors? |
| use_power_cost | Power use when used, we call it manually |
| used_signal | The mouse button needed to use this module |
Procs | |
| add_ui_configuration | Generates an element of the get_configuration list with a display name, type and value |
| add_ui_data | Adds additional things to the MODsuit ui_data() |
| configure_edit | Receives configure edits from the TGUI and edits the vars |
| drain_power | Drains power from the suit cell |
| generate_worn_overlay | Generates an icon to be used for the suit's worn overlays |
| get_configuration | Creates a list of configuring options for this module |
| on_activation | Called when the module is activated |
| on_active_process | Called on the MODsuit's process if it is an active module |
| on_deactivation | Called when the module is deactivated |
| on_device_deletion | Called when the device gets deleted on active modules |
| on_equip | Called when the MODsuit is equipped |
| on_exit | Called when the device moves to a different place on active modules |
| on_install | Called from MODsuit's install() proc, so when the module is installed. |
| on_process | Called on the MODsuit's process |
| on_select | Called when the module is selected from the TGUI |
| on_select_use | Called when an activated module without a device is used |
| on_special_click | Called when an activated module without a device is active and the user alt/middle-clicks |
| on_suit_activation | Called when the MODsuit is activated |
| on_suit_deactivation | Called when the MODsuit is deactivated |
| on_unequip | Called when the MODsuit is unequipped |
| on_uninstall | Called from MODsuit's uninstall() proc, so when the module is uninstalled. |
| on_use | Called when the module is used |
| update_signal | Updates the signal used by active modules to be activated |
Is the module active
Power use when active
If we're allowed to use this module while phased out.
If we're allowed to use this module while the suit is disabled.
How much space it takes up in the MOD
Cooldown after use
Timer for the cooldown
If we're an active module, what item are we?
Power use when idle
What modules are we incompatible with?
Linked MODsuit
If it's passive, togglable, usable or active
Icon file for the overlay.
Overlay given to the user when the module is active
Overlay given to the user when the module is inactive
Overlay given to the user when the module is used, lasts until cooldown finishes
If it can be removed
ID used by their TGUI
Does the overlay use the control unit's colors?
Power use when used, we call it manually
The mouse button needed to use this module
Generates an element of the get_configuration list with a display name, type and value
Adds additional things to the MODsuit ui_data()
Receives configure edits from the TGUI and edits the vars
Drains power from the suit cell
Generates an icon to be used for the suit's worn overlays
Creates a list of configuring options for this module
Called when the module is activated
Called on the MODsuit's process if it is an active module
Called when the module is deactivated
Called when the device gets deleted on active modules
Called when the MODsuit is equipped
Called when the device moves to a different place on active modules
Called from MODsuit's install() proc, so when the module is installed.
Called on the MODsuit's process
Called when the module is selected from the TGUI
Called when an activated module without a device is used
Called when an activated module without a device is active and the user alt/middle-clicks
Called when the MODsuit is activated
Called when the MODsuit is deactivated
Called when the MODsuit is unequipped
Called from MODsuit's uninstall() proc, so when the module is uninstalled.
Called when the module is used
Updates the signal used by active modules to be activated
Vars | |
| accepted_anomalies | Accepted types of anomaly cores. |
|---|---|
| core | The core item the module runs off. |
| prebuilt | If this one starts with a core in. |
Accepted types of anomaly cores.
The core item the module runs off.
If this one starts with a core in.
Teleporter - Lets the user teleport to a nearby location.
Vars | |
| teleport_time | Time it takes to teleport |
|---|---|
Time it takes to teleport
Hydraulic Clamp - Lets you pick up and drop crates.
Vars | |
| load_time | Time it takes to load a crate. |
|---|---|
| max_crates | The max amount of crates you can carry. |
| stored_crates | The crates stored in the module. |
Time it takes to load a crate.
The max amount of crates you can carry.
The crates stored in the module.
Dispenser - Dispenses an item after a time passes.
Vars | |
| dispense_time | Time it takes for us to dispense. |
|---|---|
| dispense_type | Path we dispense. |
Time it takes for us to dispense.
Path we dispense.
Longfall +Thermal Regulator - Naw. +DNA Lock - Prevents people without the set DNA from activating the suit.
Vars | |
| dna | The DNA we lock with. |
|---|---|
The DNA we lock with.
Drill - Lets you dig through rock and basalt.
Vars | |
| stored | Pickaxe we have stored. |
|---|---|
Pickaxe we have stored.
Flashlight - Gives the suit a customizable flashlight.
Vars | |
| base_power | Charge drain per range amount. |
|---|---|
| max_range | Maximum range we can set. |
| min_range | Minimum range we can set. |
Charge drain per range amount.
Maximum range we can set.
Minimum range we can set.
Health Analyzer - Gives the user a ranged health analyzer and their health status in the panel.
Vars | |
| mode | Scanning mode, changes how we scan something. |
|---|---|
| modes | List of all scanning modes. |
Scanning mode, changes how we scan something.
List of all scanning modes.
Pepper Shoulders +Holster - Instantly holsters any not huge gun.
Vars | |
| holstered | Gun we have holstered. |
|---|---|
Gun we have holstered.
Ion Jetpack - Lets the user fly freely through space using battery charge.
Vars | |
| full_speed | Do we give the wearer a speed buff. |
|---|---|
| stabilizers | Do we stop the wearer from gliding in space. |
Do we give the wearer a speed buff.
Do we stop the wearer from gliding in space.
Magnetic Stability - Gives the user a slowdown but makes them negate gravity and be immune to slips.
Vars | |
| slowdown_active | Slowdown added onto the suit. |
|---|---|
Slowdown added onto the suit.
Magnetic Harness - Automatically puts guns in your suit storage when you drop them.
Vars | |
| already_allowed_guns | The guns already allowed by the modsuit chestplate. |
|---|---|
| guns_typecache | The typecache of all guns we allow. |
| magnet_delay | Time before we activate the magnet. |
The guns already allowed by the modsuit chestplate.
The typecache of all guns we allow.
Time before we activate the magnet.
Megaphone - Lets you speak loud.
Vars | |
| voicespan | List of spans we add to the speaker. |
|---|---|
List of spans we add to the speaker.
Mister - Sprays water over an area.
Vars | |
| volume | Volume of our reagent holder. |
|---|---|
Volume of our reagent holder.
Eating Apparatus - Lets the user eat/drink with the suit on.
Vars | |
| former_flags | Former flags of the helmet. |
|---|---|
| former_visor_flags | Former visor flags of the helmet. |
Former flags of the helmet.
Former visor flags of the helmet.
Vars | |
| stored | Pickaxe we have stored. |
|---|---|
Pickaxe we have stored.
Paper Dispenser - Dispenses (sometimes burning) paper sheets.
Vars | |
| num_sheets_dispensed | The total number of sheets created by this MOD. The more sheets, them more likely they set on fire. |
|---|---|
The total number of sheets created by this MOD. The more sheets, them more likely they set on fire.
Sign Language Translator - I want, but no +Springlock Mechanism - allows your modsuit to activate faster, but reagents are very dangerous.
Procs | |
| on_activate_spring_block | Signal fired when wearer attempts to activate/deactivate suits |
|---|---|
| on_wearer_exposed | Signal fired when wearer is exposed to reagents |
| snap_shut | Delayed death proc of the suit after the wearer is exposed to reagents |
Signal fired when wearer attempts to activate/deactivate suits
Signal fired when wearer is exposed to reagents
Delayed death proc of the suit after the wearer is exposed to reagents
Cloaking - Lowers the user's visibility, can be interrupted by being touched or attacked.
Vars | |
| bumpoff | Whether or not the cloak turns off on bumping. |
|---|---|
| stealth_alpha | The alpha applied when the cloak is on. |
Whether or not the cloak turns off on bumping.
The alpha applied when the cloak is on.
Storage - Adds a storage component to the suit.
Vars | |
| stored | Bag we have stored. |
|---|---|
Bag we have stored.
T-Ray Scan - Scans the terrain for undertile objects.
Vars | |
| range | T-ray scan range. |
|---|---|
T-ray scan range.
Base Visor - Adds a specific HUD and traits to you.
Vars | |
| hud_type | The HUD type given by the visor. |
|---|---|
| visor_traits | The traits given by the visor. |
The HUD type given by the visor.
The traits given by the visor.
Vars | |
| all_components | List of "connection ports" in this computer and the components with which they are plugged |
|---|---|
| expansion_bays | Lazy List of extra hardware slots that can be used modularly. |
| looping_sound | Whether or not this modular computer uses the looping sound |
| max_bays | Number of total expansion bays this computer has available. |
| soundloop | Looping sound for when the computer is on |
Procs | |
| alert_call | Displays notification text alongside a soundbeep when requested to by a program. |
| play_ping | Plays a ping sound. |
| set_flashlight_color | Sets the computer's light color, if it has a light. |
| toggle_flashlight | Toggles the computer's flashlight, if it has one. |
List of "connection ports" in this computer and the components with which they are plugged
Lazy List of extra hardware slots that can be used modularly.
Whether or not this modular computer uses the looping sound
Number of total expansion bays this computer has available.
Looping sound for when the computer is on
Displays notification text alongside a soundbeep when requested to by a program.
+After checking tha the requesting program is allowed to send an alert, creates +a visible message of the requested text alongside a soundbeep. This proc adds +text to indicate that the message is coming from this device and the program +on it, so the supplied text should be the exact message and ending punctuation.
+Arguments: +The program calling this proc. +The message that the program wishes to display.
Plays a ping sound.
+Timers runtime if you try to make them call playsound. Yep.
Sets the computer's light color, if it has a light.
+Called from ui_act(), this proc takes a color string and applies it. +It is seperated from ui_act() to be overwritten as needed. +Arguments:
+Toggles the computer's flashlight, if it has one.
+Called from ui_act(), does as the name implies. +It is seperated from ui_act() to be overwritten as needed.
Borg Built-in tablet interface
Vars | |
| borglog | IC log that borgs can view in their personal management app |
|---|---|
| borgo | Ref to the borg we're installed in. Set by the borg during our creation. |
| robotact | Ref to the RoboTact app. Important enough to borgs to deserve a ref. |
Procs | |
| get_robotact | Returns a ref to the RoboTact app, creating the app if need be. |
IC log that borgs can view in their personal management app
Ref to the borg we're installed in. Set by the borg during our creation.
Ref to the RoboTact app. Important enough to borgs to deserve a ref.
Returns a ref to the RoboTact app, creating the app if need be.
+The RoboTact app is important for borgs, and so should always be available. +This proc will look for it in the tablet's robotact var, then check the +hard drive if the robotact var is unset, and finally attempt to create a new +copy if the hard drive does not contain the app. If the hard drive rejects +the new copy (such as due to lack of space), the proc will crash with an error. +RoboTact is supposed to be undeletable, so these will create runtime messages.
Given to Nuke Ops members.
Procs | |
| Initialize | Given to Nuke Ops members. |
|---|---|
Given to Nuke Ops members.
Procs | |
| Initialize | Given by the syndicate as part of the contract uplink bundle - loads in the Contractor Uplink. |
|---|---|
Given by the syndicate as part of the contract uplink bundle - loads in the Contractor Uplink.
Procs | |
| check_menu | check_menu: Checks if we are allowed to interact with a radial menu |
|---|---|
| reskin_holy_weapon | reskin_holy_weapon: Shows a user a list of all available nullrod reskins and based on his choice replaces the nullrod with the reskinned version |
check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+reskin_holy_weapon: Shows a user a list of all available nullrod reskins and based on his choice replaces the nullrod with the reskinned version
+Arguments:
+Vars | |
| healing_factor | Healing factor and decay factor function on % of maxhealth, and do not work by applying a static number per tick |
|---|---|
| prev_damage | Organ variables for determining what we alert the owner with when they pass/clear the damage thresholds |
| useable | When you take a bite you cant jam it in for surgery anymore. |
Procs | |
| applyOrganDamage | Adjusts an organ's damage by the amount "d", up to a maximum amount, which is by default max damage |
| check_damage_thresholds | |
| setOrganDamage | SETS an organ's damage to the amount "d", and in doing so clears or sets the failing flag, good for when you have an effect that should fix an organ if broken |
Healing factor and decay factor function on % of maxhealth, and do not work by applying a static number per tick
Organ variables for determining what we alert the owner with when they pass/clear the damage thresholds
When you take a bite you cant jam it in for surgery anymore.
Adjusts an organ's damage by the amount "d", up to a maximum amount, which is by default max damage
If we have, send the corresponding threshold message to the owner, if such a message exists.
+
+SETS an organ's damage to the amount "d", and in doing so clears or sets the failing flag, good for when you have an effect that should fix an organ if broken
Vars | |
| decay_factor | The brain's organ variables are significantly more different than the other organs, with half the decay rate for balance reasons, and twice the maxHealth |
|---|---|
Procs | |
| has_trauma_type | TRAUMAS |
The brain's organ variables are significantly more different than the other organs, with half the decay rate for balance reasons, and twice the maxHealth
TRAUMAS
Procs | |
| apply_damaged_eye_effects | Applies effects to our owner based on how damaged our eyes are |
|---|---|
Applies effects to our owner based on how damaged our eyes are
Procs | |
| lipoifium_breathing | mob/living/adjust_arousal(amount, updating_arousal=1) |
|---|---|
mob/living/adjust_arousal(amount, updating_arousal=1)
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
Vars | |
| contact_poison | Overlay info |
|---|---|
| form_fields | When the sheet can be "filled out" +This is an associated list |
| info | What's actually written on the paper. |
| stamped | Positioning for the stamp in tgui |
| stamps | The (text for the) stamps on the paper. |
Procs | |
| copy | This proc copies this sheet of paper to a new +sheet. Used by carbon papers and the photocopier machine. |
| setText | This proc sets the text of the paper and updates the +icons. You can modify the pen_color after if need +be. |
Overlay info
When the sheet can be "filled out" +This is an associated list
What's actually written on the paper.
Positioning for the stamp in tgui
The (text for the) stamps on the paper.
This proc copies this sheet of paper to a new +sheet. Used by carbon papers and the photocopier machine.
This proc sets the text of the paper and updates the +icons. You can modify the pen_color after if need +be.
Procs | |
| Initialize | Natural paper |
|---|---|
Natural paper
Vars | |
| occupant_gas_supply | gas supply for simplemobs so they don't die |
|---|---|
| sipping_level | level until the reagent gets INGEST ed instead of TOUCH |
| sipping_probably | prob50 level of sipping |
| transfer_rate | chem transfer rate / second |
gas supply for simplemobs so they don't die
level until the reagent gets INGEST ed instead of TOUCH
prob50 level of sipping
chem transfer rate / second
Vars | |
| resets_target | resets target on toggle |
|---|---|
resets target on toggle
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| price | the price of the item |
|---|---|
the price of the item
Vars | |
| embed_falloff_tile | How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes |
|---|---|
| force_hit | If the object being hit can pass ths damage on to something else, it should not do it for this bullet |
| hit_stunned_targets | If TRUE, hit mobs even if they're on the floor and not our target |
| hit_threshhold | If objects are below this layer, we pass through them |
| hitscan_effect_generation | Used in generate_hitscan_tracers to determine which "cycle" we're on. |
| hitscan_movement_decisecond_equivalency | How many deciseconds are each hitscan movement considered. Used for homing and other things that use seconds for timing rather than ticks. |
| homing_turn_speed | How fast the projectile turns towards its homing targets, in angle per second. |
| ignore_source_check | If TRUE, we can hit our firer. |
| impacted | We already impacted these things, do not impact them again. Used to make sure we can pierce things we want to pierce. Lazylist, typecache style (object = TRUE) for performance. |
| pass_flags | |
| phasing_ignore_direct_target | If FALSE, allow us to hit something directly targeted/clicked/whatnot even if we're able to phase through it |
| pierces | number of times we've pierced something. Incremented BEFORE bullet_act and on_hit proc! |
| pixel_increment_amount | The number of pixels we increment by. THIS IS NOT SPEED, DO NOT TOUCH THIS UNLESS YOU KNOW WHAT YOU ARE DOING. In general, lower values means more linetrace accuracy up to a point at cost of performance. |
| pixel_move_interrupted | Used to detect jumps in the middle of a pixel_move. Yes, this is ugly as sin code-wise but it works. |
| pixels_per_second | Pixels moved per second. |
| pixels_range_leftover | "leftover" pixels for Range() calculation as pixel_move() was moved to simulated semi-pixel movement and Range() is in tiles. |
| pixels_tick_leftover | "leftover" tick pixels and stuff yeah, so we don't round off things and introducing tracing inaccuracy. |
| projectile_phasing | Bitflag for things the projectile should just phase through entirely - No hitting unless direct target and [phasing_ignore_direct_target] is FALSE. Uses pass_flags flags. |
| projectile_piercing | Bitflag for things the projectile should hit, but pierce through without deleting itself. Defers to projectile_phasing. Uses pass_flags flags. |
| range | Range of the projectile, de-incrementing every step. The projectile deletes itself at 0. This is in tiles. |
| ricochet_auto_aim_angle | On ricochet, if ricochet_auto_aim_range is nonzero, we'll consider any mobs within this range of the normal angle of incidence to home in on, higher = more auto aim |
| ricochet_auto_aim_range | On ricochet, if nonzero, we consider all mobs within this range of our projectile at the time of ricochet to home in on like Revolver Ocelot, as governed by ricochet_auto_aim_angle |
| ricochet_chance | 0-100, the base chance of ricocheting, before being modified by the atom we shoot and our chance decay |
| ricochet_decay_chance | 0-1 (or more, I guess) multiplier, the ricochet_chance is modified by multiplying this after each ricochet |
| ricochet_decay_damage | 0-1 (or more, I guess) multiplier, the projectile's damage is modified by multiplying this after each ricochet |
| ricochet_incidence_leeway | the angle of impact must be within this many degrees of the struck surface, set to 0 to allow any angle |
| ricochets | how many times we've ricochet'd so far (instance variable, not a stat) |
| ricochets_max | how many times we can ricochet max |
| sharpness | For telling whether we want to roll for bone breaking or lacerations if we're bothering with wounds |
| shrapnel_type | If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets |
| temporary_unstoppable_movement | We are flagged PHASING temporarily to not stop moving when we Bump something but want to keep going anyways. |
| wound_falloff_tile | How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes |
| zone_accuracy_factor | factor to multiply by for zone accuracy percent. |
Procs | |
| CanPassThrough | Projectile can pass through +Used to not even attempt to Bump() or fail to Cross() anything we already hit. |
| Crossed | Projectile crossed: When something enters a projectile's tile, make sure the projectile hits it if it should be hitting it. |
| Impact | Called when the projectile hits something +This can either be from it bumping something, +or it passing over a turf/being crossed and scanning that there is infact +a valid target it needs to hit. +This target isn't however necessarily WHAT it hits +that is determined by process_hit and select_target. |
| Moved | Projectile moved: |
| Range | Artificially modified to be called at around every world.icon_size pixels of movement. +WARNING: Range() can only be called once per pixel_increment_amount pixels. |
| pixel_move | The proc to make the projectile go, using a simulated pixel movement line trace. +Note: deciseconds_equivalent is currently only used for homing, times is the number of times to move pixel_increment_amount. +Trajectory multiplier directly modifies the factor of pixel_increment_amount to go per time. +It's complicated, so probably just don't mess with this unless you know what you're doing. |
| prehit_pierce | Checks if we should pierce something. |
| process_hit | The primary workhorse proc of projectile impacts. +This is a RECURSIVE call - process_hit is called on the first selected target, and then repeatedly called if the projectile still hasn't been deleted. |
| return_predicted_turf_after_moves | one move is a tile. |
| scan_crossed_hit | Scan if we should hit something and hit it if we need to +The difference between this and handling in Impact is +In this we strictly check if we need to Impact() something in specific +If we do, we do +We don't even check if it got hit already - Impact() does that +In impact there's more code for selecting WHAT to hit +So this proc is more of checking if we should hit something at all BY having an atom cross us. |
| scan_moved_turf | Scans if we should hit something on the turf we just moved to if we haven't already |
| select_target | Selects a target to hit from a turf |
How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes
If the object being hit can pass ths damage on to something else, it should not do it for this bullet
If TRUE, hit mobs even if they're on the floor and not our target
If objects are below this layer, we pass through them
Used in generate_hitscan_tracers to determine which "cycle" we're on.
How many deciseconds are each hitscan movement considered. Used for homing and other things that use seconds for timing rather than ticks.
How fast the projectile turns towards its homing targets, in angle per second.
If TRUE, we can hit our firer.
We already impacted these things, do not impact them again. Used to make sure we can pierce things we want to pierce. Lazylist, typecache style (object = TRUE) for performance.
PROJECTILE PIERCING +* WARNING: +* Projectile piercing MUST be done using these variables. +* Ordinary passflags will result in can_hit_target being false unless directly clicked on - similar to projectile_phasing but without even going to process_hit. +* The two flag variables below both use pass flags. +* In the context of LETPASStHROW, it means the projectile will ignore things that are currently "in the air" from a throw.
+* Also, projectiles sense hits using Bump(), and then pierce them if necessary.
+* They simply do not follow conventional movement rules.
+* NEVER flag a projectile as PHASING movement type.
+* If you so badly need to make one go through *everything*, override check_pierce() for your projectile to always return PROJECTILE_PIERCE_PHASE/HIT.
+
+The "usual" flags of pass_flags is used in that can_hit_target ignores these unless they're specifically targeted/clicked on. This behavior entirely bypasses process_hit if triggered, rather than phasing which uses prehit_pierce() to check.
If FALSE, allow us to hit something directly targeted/clicked/whatnot even if we're able to phase through it
number of times we've pierced something. Incremented BEFORE bullet_act and on_hit proc!
The number of pixels we increment by. THIS IS NOT SPEED, DO NOT TOUCH THIS UNLESS YOU KNOW WHAT YOU ARE DOING. In general, lower values means more linetrace accuracy up to a point at cost of performance.
Used to detect jumps in the middle of a pixel_move. Yes, this is ugly as sin code-wise but it works.
Pixels moved per second.
"leftover" pixels for Range() calculation as pixel_move() was moved to simulated semi-pixel movement and Range() is in tiles.
"leftover" tick pixels and stuff yeah, so we don't round off things and introducing tracing inaccuracy.
Bitflag for things the projectile should just phase through entirely - No hitting unless direct target and [phasing_ignore_direct_target] is FALSE. Uses pass_flags flags.
Bitflag for things the projectile should hit, but pierce through without deleting itself. Defers to projectile_phasing. Uses pass_flags flags.
Range of the projectile, de-incrementing every step. The projectile deletes itself at 0. This is in tiles.
On ricochet, if ricochet_auto_aim_range is nonzero, we'll consider any mobs within this range of the normal angle of incidence to home in on, higher = more auto aim
On ricochet, if nonzero, we consider all mobs within this range of our projectile at the time of ricochet to home in on like Revolver Ocelot, as governed by ricochet_auto_aim_angle
0-100, the base chance of ricocheting, before being modified by the atom we shoot and our chance decay
0-1 (or more, I guess) multiplier, the ricochet_chance is modified by multiplying this after each ricochet
0-1 (or more, I guess) multiplier, the projectile's damage is modified by multiplying this after each ricochet
the angle of impact must be within this many degrees of the struck surface, set to 0 to allow any angle
how many times we've ricochet'd so far (instance variable, not a stat)
how many times we can ricochet max
For telling whether we want to roll for bone breaking or lacerations if we're bothering with wounds
If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets
We are flagged PHASING temporarily to not stop moving when we Bump something but want to keep going anyways.
How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes
factor to multiply by for zone accuracy percent.
Projectile can pass through +Used to not even attempt to Bump() or fail to Cross() anything we already hit.
Projectile crossed: When something enters a projectile's tile, make sure the projectile hits it if it should be hitting it.
Called when the projectile hits something +This can either be from it bumping something, +or it passing over a turf/being crossed and scanning that there is infact +a valid target it needs to hit. +This target isn't however necessarily WHAT it hits +that is determined by process_hit and select_target.
+Furthermore, this proc shouldn't check can_hit_target - this should only be called if can hit target is already checked. +Also, we select_target to find what to process_hit first.
Projectile moved:
+If not fired yet, do not do anything. Else,
+If temporary unstoppable movement used for piercing through things we already hit (impacted list) is set, unset it. +Scan turf we're now in for anything we can/should hit. This is useful for hitting non dense objects the user +directly clicks on, as well as for PHASING projectiles to be able to hit things at all as they don't ever Bump().
Artificially modified to be called at around every world.icon_size pixels of movement. +WARNING: Range() can only be called once per pixel_increment_amount pixels.
The proc to make the projectile go, using a simulated pixel movement line trace. +Note: deciseconds_equivalent is currently only used for homing, times is the number of times to move pixel_increment_amount. +Trajectory multiplier directly modifies the factor of pixel_increment_amount to go per time. +It's complicated, so probably just don't mess with this unless you know what you're doing.
Checks if we should pierce something.
+NOT meant to be a pure proc, since this replaces prehit() which was used to do things. +Return PROJECTILE_DELETE_WITHOUT_HITTING to delete projectile without hitting at all!
The primary workhorse proc of projectile impacts. +This is a RECURSIVE call - process_hit is called on the first selected target, and then repeatedly called if the projectile still hasn't been deleted.
+Order of operations:
+Returns if we hit something.
+one move is a tile.
Scan if we should hit something and hit it if we need to +The difference between this and handling in Impact is +In this we strictly check if we need to Impact() something in specific +If we do, we do +We don't even check if it got hit already - Impact() does that +In impact there's more code for selecting WHAT to hit +So this proc is more of checking if we should hit something at all BY having an atom cross us.
Scans if we should hit something on the turf we just moved to if we haven't already
+This proc is a little high in overhead but allows us to not snowflake CanPass in living and other things.
Selects a target to hit from a turf
+@params +T - The turf +target - The "preferred" atom to hit, usually what we Bumped() first. +bumped - used to track if something is the reason we impacted in the first place. +If set, this atom is always treated as dense by can_hit_target.
+Priority: +0. Anything that is already in impacted is ignored no matter what. Furthermore, in any bracket, if the target atom parameter is in it, that's hit first. +Furthermore, can_hit_target is always checked. This (entire proc) is PERFORMANCE OVERHEAD!! But, it shouldn't be ""too"" bad and I frankly don't have a better generic non snowflakey way that I can think of right now at 3 AM. +FURTHERMORE, mobs/objs have a density check from can_hit_target - to hit non dense objects over a turf, you must click on them, same for mobs that usually wouldn't get hit.
+The base projectile used by the fatoray
Vars | |
| fat_added | How much fat is added to the target mob? |
|---|---|
Procs | |
| on_hit | PROJECTILE MECHANICS |
How much fat is added to the target mob?
PROJECTILE MECHANICS
Vars | |
| fat_added | How much fat is added to the target mob? |
|---|---|
How much fat is added to the target mob?
Vars | |
| fat_added | How much fat is added to the target mob? |
|---|---|
How much fat is added to the target mob?
The base projectile used by the fatoray
Vars | |
| fat_added | How much fat is added to the target mob? |
|---|---|
How much fat is added to the target mob?
Procs | |
| orb_explosion | Called when the orb is exploding, shoots out projectiles |
|---|---|
Called when the orb is exploding, shoots out projectiles
Vars | |
| lipoifier_to_add | How much Lipoifier should be added to the spawned in food? Keep this at 10 maximum. |
|---|---|
| spawnable_foods | What foods are able to be spawned by the wand? |
How much Lipoifier should be added to the spawned in food? Keep this at 10 maximum.
What foods are able to be spawned by the wand?
Vars | |
| line | Reference to the beam following the projectile. |
|---|---|
Reference to the beam following the projectile.
The current precursor to anomaly cores, these are manufactured into 'finished' anomaly cores for use in research, items, and more.
+The current amounts created is stored in SSresearch.created_anomaly_types[ANOMALY_CORE_TYPE_DEFINE] = amount +The hard limits are in code/__DEFINES/anomalies.dm
Vars | |
| anomaly_type | Anomaly type |
|---|---|
Procs | |
| create_core | Created the resulting core after being "made" into it. |
Anomaly type
Created the resulting core after being "made" into it.
+Arguments:
+Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Food.
+Note: When adding food items with dummy parents, make sure to add +the parent to the exclusion list in code/__HELPERS/unsorted.dm's +get_random_food proc.
Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created +already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten.
+Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units. Generally speaking, you don't want to go over 40 +total for the item because you want to leave space for extra condiments. If you want effect besides healing, add a reagent for +it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use omnizine). On use +effect (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way).
+The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to +2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a +bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all +the bites. No more contained reagents = no more bites.
+Food formatting and crafting examples.
+/obj/item/reagent_containers/food/snacks/saltedcornchips //Identification path for the object.
+ name = "salted corn chips" //Name that displays when hovered over.
+ desc = "Manufactured in a far away factory." //Description on examine.
+ icon_state = "saltychip" //Refers to an icon, usually in food.dmi
+ bitesize = 3 //How many reagents are consumed in each bite.
+ list_reagents = list(/datum/reagent/consumable/nutriment = 6, //What's inside the snack, but only if spawned. For example, from a chemical reaction, vendor, or slime core spawn.
+ /datum/reagent/consumable/nutriment/vitamin = 2)
+ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, //What's -added- to the food, in addition to the reagents contained inside the foods used to craft it. Basically, a reward for cooking.
+ /datum/reagent/consumable/nutriment/vitamin = 1) ^^For example. Egg+Egg = 2Egg + Bonus Reagents.
+ filling_color = "#F4A460" //What color it will use if put in a custom food.
+ tastes = list("salt" = 1, "oil" = 1) //Descriptive flavoring displayed when eaten. IE: "You taste a bit of salt and a bit of oil."
+ foodtype = GRAIN | JUNKFOOD //Tag for racial or custom food preferences. IE: Most Lizards cannot have GRAIN.
+
+Crafting Recipe (See files in code/modules/food_and_drinks/recipes/tablecraft/)
+
+/datum/crafting_recipe/food/nachos
+ name ="Salted Corn Chips" //Name that displays in the Crafting UI
+ reqs = list( //The list of ingredients to make the food.
+ /obj/item/reagent_containers/food/snacks/tortilla = 1,
+ /datum/reagent/consumable/sodiumchloride = 1 //As a note, reagents and non-food items don't get added to the food. If you
+ ) ^^want the reagents, make sure the food item has it listed under bonus_reagents.
+ result = /obj/item/reagent_containers/food/snacks/saltedcornchips //Resulting object.
+ subcategory = CAT_MISCFOOD //Subcategory the food falls under in the Food Tab of the crafting menu.
+
+All foods are distributed among various categories. Use common sense.
Procs | |
| afterattack | Dunking |
|---|---|
Dunking
DONUTS
Procs | |
| in_box_sprite | Returns the sprite of the donut while in a donut box |
|---|---|
Returns the sprite of the donut while in a donut box
Vars | |
| last_spray | Last world.time of spray |
|---|---|
| spray_cooldown | Spray cooldown |
| spray_delay | Amount of time it takes for a spray to completely travel. |
Last world.time of spray
Spray cooldown
Amount of time it takes for a spray to completely travel.
Procs | |
| get_rounded_vol | Used by update_icon() and update_overlays() |
|---|---|
Used by update_icon() and update_overlays()
SPECIAL ITEMS
Procs | |
| throwSmoke | RELIC PROCS |
|---|---|
RELIC PROCS
Vars | |
| allow_breakout_movement | allow movement at all during breakout |
|---|---|
allow movement at all during breakout
Procs | |
| ensnare | Attempts to legcuff someone with the bola |
|---|---|
Attempts to legcuff someone with the bola
+Arguments:
+Procs | |
| resurrect | Resurrects the target when they die by cloning them into a new duplicate body and transferring their mind to the clone on a safe station turf |
|---|---|
Resurrects the target when they die by cloning them into a new duplicate body and transferring their mind to the clone on a safe station turf
Procs | |
| arm | note: this timer overlay increments one frame every second (to simulate a clock ticking). If you want to instead have it do a full cycle in a minute, set the 'delay' of each frame of the icon overlay to 75 rather than 10, and the worn overlay to twice that. |
|---|---|
note: this timer overlay increments one frame every second (to simulate a clock ticking). If you want to instead have it do a full cycle in a minute, set the 'delay' of each frame of the icon overlay to 75 rather than 10, and the worn overlay to twice that.
Procs | |
| check_menu | check_menu: Checks if we are allowed to interact with a radial menu |
|---|---|
check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+Vars | |
| cut_max | Maximum value for cut_multiplier. |
|---|---|
| cut_min | Minimum value for cut_multiplier. |
| cut_multiplier | Details the percentage the scanned account recieves off the final sale. +The person who tagged this will receive the sale value multiplied by this number. |
| payments_acc | The account which is recieving the split profits. |
Maximum value for cut_multiplier.
Minimum value for cut_multiplier.
Details the percentage the scanned account recieves off the final sale. +The person who tagged this will receive the sale value multiplied by this number.
The account which is recieving the split profits.
Procs | |
| adjust_yield | Setters procs |
|---|---|
| set_mutability | This proc adds a mutability_flag to a gene |
| unset_mutability | This proc removes a mutability_flag from a gene |
Setters procs
This proc adds a mutability_flag to a gene
This proc removes a mutability_flag from a gene
Vars | |
| last_shieldbash | Last shieldbash world.time |
|---|---|
| shield_flags | Shield flags |
| shieldbash_brutedamage | Shield bashing brute damage |
| shieldbash_cooldown | Shieldbashing cooldown |
| shieldbash_knockback | Shieldbashing knockback |
| shieldbash_push_distance | Shield bashing push distance |
| shieldbash_stagger_duration | Shield bashing stagger duration |
| shieldbash_stamcost | Shieldbashing stamina cost |
| shieldbash_stamdmg | Shield bashing stamina damage |
Last shieldbash world.time
Shield flags
Shield bashing brute damage
Shieldbashing cooldown
Shieldbashing knockback
Shield bashing push distance
Shield bashing stagger duration
Shieldbashing stamina cost
Shield bashing stamina damage
Procs | |
| take_damage | Entirely overriden take_damage. This shouldn't exist outside of an implant (other than maybe christmas). |
|---|---|
Entirely overriden take_damage. This shouldn't exist outside of an implant (other than maybe christmas).
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Procs | |
| on_offer_taken | Yeah broh! This is where we do the high-fiving (or high-tenning :o) |
|---|---|
Yeah broh! This is where we do the high-fiving (or high-tenning :o)
Gangster secret handshakes.
Vars | |
| gang_to_use | The typepath of the gang antagonist datum that the person who uses the package should have added to them -- remember that the distinction between e.g. Ballas and Grove Street is on the antag datum level, not the team datum level. |
|---|---|
| handler | References the active families gamemode handler (if one exists), for adding new family members to. |
| team_to_use | The team datum that the person who uses this package should be added to. |
Procs | |
| add_to_gang | Adds the user to the family that this package corresponds to, dispenses the free_clothes of that family, and adds them to the handler if it exists. |
| attempt_join_gang | Checks if the user is trying to use the package of the family they are in, and if not, adds them to the family, with some differing processing depending on whether the user is already a family member. |
The typepath of the gang antagonist datum that the person who uses the package should have added to them -- remember that the distinction between e.g. Ballas and Grove Street is on the antag datum level, not the team datum level.
References the active families gamemode handler (if one exists), for adding new family members to.
The team datum that the person who uses this package should be added to.
Adds the user to the family that this package corresponds to, dispenses the free_clothes of that family, and adds them to the handler if it exists.
Checks if the user is trying to use the package of the family they are in, and if not, adds them to the family, with some differing processing depending on whether the user is already a family member.
Procs | |
| attack | Capturing |
|---|---|
| attack_self | Options for using captured souls |
| transfer_soul | Proc for moving soul in and out off stone |
Capturing
Options for using captured souls
Proc for moving soul in and out off stone
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| absorption_capacity | How much blood flow this stack can absorb if used as a bandage on a cut wound, note that absorption is how much we lower the flow rate, not the raw amount of blood we suck up |
|---|---|
| absorption_rate | How quickly we lower the blood flow on a cut wound we're bandaging. Expected lifetime of this bandage in ticks is thus absorption_capacity/absorption_rate, or until the cut heals, whichever comes first |
| material_type | Datum material type that this stack is made of |
| matter_amount | Amount of matter for RCD |
| splint_factor | If set and this used as a splint for a broken bone wound, this is used as a multiplier for applicable slowdowns (lower = better) (also for speeding up burn recoveries) |
Procs | |
| add | |
| build_recipe | Returns a list of properties of a given recipe |
| can_merge | |
| is_valid_recipe | Checks if the recipe is valid to be used |
| recursively_build_recipes | Builds all recipes in a given recipe list and returns an association list containing them |
| set_custom_materials | Override to make things like metalgen accurately set custom materials |
| set_mats_per_unit | |
| split_stack | |
| update_custom_materials | Updates the custom materials list of this stack. |
How much blood flow this stack can absorb if used as a bandage on a cut wound, note that absorption is how much we lower the flow rate, not the raw amount of blood we suck up
How quickly we lower the blood flow on a cut wound we're bandaging. Expected lifetime of this bandage in ticks is thus absorption_capacity/absorption_rate, or until the cut heals, whichever comes first
Datum material type that this stack is made of
Amount of matter for RCD
If set and this used as a splint for a broken bone wound, this is used as a multiplier for applicable slowdowns (lower = better) (also for speeding up burn recoveries)
Adds some number of units to this stack.
+Arguments:
+Returns a list of properties of a given recipe
+Arguments:
+Checks whether this stack can merge itself into another stack.
+Arguments:
+Checks if the recipe is valid to be used
+Arguments:
+Builds all recipes in a given recipe list and returns an association list containing them
+Arguments:
+Override to make things like metalgen accurately set custom materials
Sets the amount of materials per unit for this stack.
+Arguments:
+Splits the stack into two stacks.
+Arguments:
+Updates the custom materials list of this stack.
Vars | |
| id | id for linking |
|---|---|
id for linking
Vars | |
| duct_color | Color of our duct |
|---|---|
| duct_layer | Default layer of our duct |
| layers | Assoc index with all the available layers. yes five might be a bit much. Colors uses a global by the way |
Color of our duct
Default layer of our duct
Assoc index with all the available layers. yes five might be a bit much. Colors uses a global by the way
Procs | |
| update_icon_state | Override to allow for variations |
|---|---|
Override to allow for variations
Vars | |
| flesh_regeneration | How much we add to flesh_healing for burn wounds on application |
|---|---|
| heal_brute | How much brute we heal per application |
| heal_burn | How much burn we heal per application |
| sanitization | How much sanitization to apply to burns on application |
| stop_bleeding | How much we reduce bleeding per application on cut wounds |
How much we add to flesh_healing for burn wounds on application
How much brute we heal per application
How much burn we heal per application
How much sanitization to apply to burns on application
How much we reduce bleeding per application on cut wounds
Vars | |
| grind_results | This var determines if the sterile packaging of the mesh has been opened. |
|---|---|
This var determines if the sterile packaging of the mesh has been opened.
Vars | |
| point_value | turn-in value for the gulag stacker - loosely relative to its rarity |
|---|---|
| shard_type | the shard debris typepath left over by solar panels and windows etc. |
| sheettype | this is used for girders in the creation of walls/false walls |
| walltype | What type of wall does this sheet spawn |
Procs | |
| on_solar_construction | Called on the glass sheet upon solar construction (duh): +Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency +and possibly extra effects if you wish to code them. +Keep in mind the solars' max_integrity is set equal to the obj_integrity later, +so you won't have to do so here. |
turn-in value for the gulag stacker - loosely relative to its rarity
the shard debris typepath left over by solar panels and windows etc.
this is used for girders in the creation of walls/false walls
What type of wall does this sheet spawn
Called on the glass sheet upon solar construction (duh): +Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency +and possibly extra effects if you wish to code them. +Keep in mind the solars' max_integrity is set equal to the obj_integrity later, +so you won't have to do so here.
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| grown_battery | If it's a grown that acts as a battery, add a wire overlay to it. |
|---|---|
| has_charge_overlay | If true, add the o1 and o2 overlays based on charge level. |
If it's a grown that acts as a battery, add a wire overlay to it.
If true, add the o1 and o2 overlays based on charge level.
Procs | |
| check_menu | Checks if we are allowed to interact with the radial |
|---|---|
Checks if we are allowed to interact with the radial
+Arguements: user The mob interacting with the menu
Vars | |
| papersack_designs | A list of all available papersack reskins |
|---|---|
Procs | |
| check_menu | check_menu: Checks if we are allowed to interact with a radial menu |
A list of all available papersack reskins
check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+Vars | |
| icon_type | The value in here has NOTHING to do with icons. It needs to be this for the proper examine. |
|---|---|
Procs | |
| update_icon_state | Overrides to do nothing because fancy boxes are fucking insane. |
The value in here has NOTHING to do with icons. It needs to be this for the proper examine.
Overrides to do nothing because fancy boxes are fucking insane.
Procs | |
| afterShuttleMove | Item move procs |
|---|---|
Item move procs
Vars | |
| amount | Creating an empty slot for a beaker that can be added to dispense into |
|---|---|
| dispensable_reagents | The amount of reagent that is to be dispensed currently |
Procs | |
| ComponentInitialize | List in which all currently dispensable reagents go |
| replace_beaker | Replaces the beaker of the portable chemical mixer with another beaker, or simply adds the new beaker if none is in currently |
| update_contents | Updates the contents of the portable chemical mixer |
Creating an empty slot for a beaker that can be added to dispense into
The amount of reagent that is to be dispensed currently
List in which all currently dispensable reagents go
Replaces the beaker of the portable chemical mixer with another beaker, or simply adds the new beaker if none is in currently
+Checks if a valid user and a valid new beaker exist and attempts to replace the current beaker in the portable chemical mixer with the one in hand. Simply places the new beaker in if no beaker is currently loaded +Arguments:
+Updates the contents of the portable chemical mixer
+A list of dispensable reagents is created by iterating through each source beaker in the portable chemical beaker and reading its contents
Vars | |
| has_soul | If FALSE, someone with a ensouled soulstone can sacrifice a spirit to change the sprite of this toolbox. |
|---|---|
If FALSE, someone with a ensouled soulstone can sacrifice a spirit to change the sprite of this toolbox.
Simple summon weapon code in this file
+tl;dr latch onto target, repeatedly proc attacks, animate using transforms, +no real hitboxes/collisions, think of /datum/component/orbit-adjacent
Vars | |
| host | our summon weapon host |
|---|---|
| host_type | datum type |
| melee_only | are we a ranged weapon? |
| range | range summons will chase to |
| stack_duration | how long it takes for a "stack" to fall off by itself |
| summon_count | number of summons |
our summon weapon host
datum type
are we a ranged weapon?
range summons will chase to
how long it takes for a "stack" to fall off by itself
number of summons
Vars | |
| tank_holder_icon_state | Icon state when in a tank holder. Null makes it incompatible with tank holder. |
|---|---|
Icon state when in a tank holder. Null makes it incompatible with tank holder.
a throwing star which specifically makes sure you know it came from a real ninja.
+The most important item in the entire codebase, as without it we would all cease to exist. +Inherits everything that makes it interesting the stamina throwing star, but the most +important change made is that its name specifically has the prefix, 'ninja' in it. +This provides the detective role with information to play off of by ensuring that his +assumption that a space ninja is aboard the ship to be true when he find 20 of these in +the captain's back. Along with this, its throwforce is 10 instead of the 5 of the stamina +throwing star, meaning it'll do a little more damage than the stamina throwing star does as well. +Changes to this item need to be approved by all maintainers, so if you do change it, make sure +you go through the proper channels, lest you get permabanned. Do I make myself clear?
Procs | |
| check_menu | check_menu: Checks if we are allowed to interact with a radial menu |
|---|---|
| update_sprite | This proc updates the sprite for when you create a hand of cards |
check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+This proc updates the sprite for when you create a hand of cards
Procs | |
| can_claim_for_gang | Gang mode stuff |
|---|---|
Gang mode stuff
Vars | |
| combat_health | The mech's health in battle |
|---|---|
| cooldown | Cooldown between play sessions |
| cooldown_multiplier | Cooldown multiplier after a battle (by default: battle cooldowns are 30 seconds) |
| in_combat | TRUE = in combat currently || FALSE = Not in combat |
| losses | ...And their loss count in combat |
| max_combat_health | The mech's max combat health |
| quiet | If it makes noise when played with |
| special_attack_charged | TRUE = the special attack is charged || FALSE = not charged |
| special_attack_cooldown | Current cooldown of their special attack |
| special_attack_cry | The battlecry when using the special attack |
| special_attack_type | What type of special attack they use - SPECIAL_ATTACK_DAMAGE, SPECIAL_ATTACK_HEAL, SPECIAL_ATTACK_UTILITY, SPECIAL_ATTACK_OTHER |
| special_attack_type_message | What message their special move gets on examining |
| timer | Timer when it'll be off cooldown |
| wants_to_battle | TRUE = Offering battle to someone || FALSE = Not offering battle |
| wins | This mech's win count in combat |
Procs | |
| attack | Attack is called from the user's toy, aimed at target(another human), checking for target's toy. |
| attack_tk | Overrides attack_tk - Sorry, you have to be face to face to initiate a battle, it's good sportsmanship |
| attackby | If you attack a mech with a mech, initiate combat between them |
| check_battle_start | This proc checks if a battle can be initiated between src and attacker. |
| combat_sleep | this proc combines "sleep" while also checking for if the battle should continue |
| mecha_brawl | The 'master' proc of the mech battle. Processes the entire battle's events and makes sure it start and finishes correctly. |
| special_attack_move | Processes any special attack moves that happen in the battle (called in the mechaBattle proc). |
| suicide_act | Starts a battle, toy mech vs player. Player... doesn't win. |
| super_special_attack | Base proc for 'other' special attack moves. |
| withdraw_offer | Resets the request for battle. |
The mech's health in battle
Cooldown between play sessions
Cooldown multiplier after a battle (by default: battle cooldowns are 30 seconds)
TRUE = in combat currently || FALSE = Not in combat
...And their loss count in combat
The mech's max combat health
If it makes noise when played with
TRUE = the special attack is charged || FALSE = not charged
Current cooldown of their special attack
The battlecry when using the special attack
What type of special attack they use - SPECIAL_ATTACK_DAMAGE, SPECIAL_ATTACK_HEAL, SPECIAL_ATTACK_UTILITY, SPECIAL_ATTACK_OTHER
What message their special move gets on examining
Timer when it'll be off cooldown
TRUE = Offering battle to someone || FALSE = Not offering battle
This mech's win count in combat
Attack is called from the user's toy, aimed at target(another human), checking for target's toy.
Overrides attack_tk - Sorry, you have to be face to face to initiate a battle, it's good sportsmanship
If you attack a mech with a mech, initiate combat between them
This proc checks if a battle can be initiated between src and attacker.
+Both SRC and attacker (if attacker is included) timers are checked if they're on cooldown, and +both SRC and attacker (if attacker is included) are checked if they are in combat already. +If any of the above are true, the proc returns FALSE and sends a message to user (and target, if included) otherwise, it returns TRUE +Arguments:
+this proc combines "sleep" while also checking for if the battle should continue
+this goes through some of the checks - the toys need to be next to each other to fight! +if it's player vs themself: They need to be able to "control" both mechs (either must be adjacent or using TK) +if it's player vs player: Both players need to be able to "control" their mechs (either must be adjacent or using TK) +if it's player vs mech (suicide): the mech needs to be in range of the player +if all the checks are TRUE, it does the sleeps, and returns TRUE. Otherwise, it returns FALSE. +Arguments:
+The 'master' proc of the mech battle. Processes the entire battle's events and makes sure it start and finishes correctly.
+src is the defending toy, and the battle proc is called on it to begin the battle. +After going through a few checks at the beginning to ensure the battle can start properly, the battle begins a loop that lasts +until either toy has no more health. During this loop, it also ensures the mechs stay in combat range of each other. +It will then randomly decide attacks for each toy, occasionally making one or the other use their special attack. +When either mech has no more health, the loop ends, and it displays the victor and the loser while updating their stats and resetting them. +Arguments:
+Processes any special attack moves that happen in the battle (called in the mechaBattle proc).
+Makes the toy shout their special attack cry and updates its cooldown. Then, does the special attack. +Arguments:
+Starts a battle, toy mech vs player. Player... doesn't win.
Base proc for 'other' special attack moves.
+This one is only for inheritance, each mech with an 'other' type move has their procs below. +Arguments:
+Resets the request for battle.
+For use in a timer, this proc resets the wants_to_battle variable after a short period. +Arguments:
+Vars | |
| __ADMIN_SET_TO_ID | wrapper, do not use, read only |
|---|---|
wrapper, do not use, read only
Procs | |
| ready | Returns if this is ready to be detonated. Checks if both tanks are in place. |
|---|---|
Returns if this is ready to be detonated. Checks if both tanks are in place.
Vars | |
| able_to_emote | Do we want our transformed person to be able to emote as the object? |
|---|---|
| able_to_speak | Do we want our transformed person to be able to speak as the object? |
| able_to_struggle_out | Is our captured person able to struggle out? |
| object_blacklist | Do we have any items we can't turn people into? |
| scale_object | Do we want the item to scale? |
| show_that_object_is_tf | Do we want to show that the object was once a person? |
| target_item | What item are we wanting to TF people into? |
Do we want our transformed person to be able to emote as the object?
Do we want our transformed person to be able to speak as the object?
Is our captured person able to struggle out?
Do we have any items we can't turn people into?
Do we want the item to scale?
Do we want to show that the object was once a person?
What item are we wanting to TF people into?
Vars | |
| uplink_flag | The uplink flag for this type.
+See [code/__DEFINES/uplink.dm] |
|---|---|
The uplink flag for this type.
+See [code/__DEFINES/uplink.dm]
Procs | |
| on_unwield | triggered on unwield of two handed item |
|---|---|
| on_wield | triggered on wield of two handed item |
triggered on unwield of two handed item
triggered on wield of two handed item
Vars | |
| atmos_processing | Boolean on whether this machines interact with atmos |
|---|---|
Procs | |
| AI_notify_hack | Alerts the AI that a hack is in progress. |
| set_machine_stat | Called when we want to change the value of the stat variable. Holds bitflags. |
Boolean on whether this machines interact with atmos
Alerts the AI that a hack is in progress.
+Sends all AIs a message that a hack is occurring. Specifically used for space ninja tampering as this proc was originally in the ninja files. +However, the proc may also be used elsewhere.
Called when we want to change the value of the stat variable. Holds bitflags.
Vars | |
| compact_mode | Dictates if the compact mode of the interface is on or off |
|---|---|
| possible_gear | Possible gear to be dispensed |
| selected_cat | Currently selected gear category |
Procs | |
| get_abductor_gear | get_abductor_gear: Returns a list of a filtered abductor gear sorted by categories |
Dictates if the compact mode of the interface is on or off
Possible gear to be dispensed
Currently selected gear category
get_abductor_gear: Returns a list of a filtered abductor gear sorted by categories
Procs | |
| experiment | experiment: Performs selected experiment on occupant mob, resulting in a point reward on success |
|---|---|
| send_back | send_back: Sends a mob back to a selected teleport location if safe |
experiment: Performs selected experiment on occupant mob, resulting in a point reward on success
+Arguments:
+send_back: Sends a mob back to a selected teleport location if safe
+Arguments:
+Vars | |
| buy_counts | How much of each goodie have we purchased? |
|---|---|
| camera | What camera console is linked with the console? |
| gizmo | What abductor gizmo is linked with the console? |
| linked_scale | The current scale linked with the console |
| pad | What pad is linked with the console? |
How much of each goodie have we purchased?
What camera console is linked with the console?
What abductor gizmo is linked with the console?
The current scale linked with the console
What pad is linked with the console?
Vars | |
| alarm_manager | Represents a signel source of atmos alarms, complains to all the listeners if one of our thresholds is violated |
|---|---|
Represents a signel source of atmos alarms, complains to all the listeners if one of our thresholds is violated
Procs | |
| shuttleRotate | Machine rotate procs |
|---|---|
Machine rotate procs
Vars | |
| treating_wounds | Cryo will continue to treat people with 0 damage but existing wounds, but will sound off when damage healing is done in case doctors want to directly treat the wounds instead |
|---|---|
Cryo will continue to treat people with 0 damage but existing wounds, but will sound off when damage healing is done in case doctors want to directly treat the wounds instead
Vars | |
| gas_type | The typepath of the gas this tank should be filled with. |
|---|---|
The typepath of the gas this tank should be filled with.
This is an atmospherics pipe which can relay air up/down a deck.
Procs | |
| pipeline_expansion | Attempts to locate a multiz pipe that's above us, if it finds one it merges us into its pipenet |
|---|---|
Attempts to locate a multiz pipe that's above us, if it finds one it merges us into its pipenet
Vars | |
| creation_efficiency | the multiplier for how much materials the created object takes from this machines stored materials |
|---|---|
the multiplier for how much materials the created object takes from this machines stored materials
Vars | |
| selected_cat | Currently selected category in the UI |
|---|---|
Procs | |
| activate | activate: Activates biomass processing and converts all inserted grown products into biomass |
Currently selected category in the UI
activate: Activates biomass processing and converts all inserted grown products into biomass
+Arguments:
+Vars | |
| alarm_manager | Represents a signel source of camera alarms about movement or camera tampering |
|---|---|
Represents a signel source of camera alarms about movement or camera tampering
Vars | |
| blocked | the player cannot make any move while this is set to TRUE. should only TRUE during enemy turns. |
|---|---|
| bomb_cooldown | unique to the emag mode, acts as a time limit where the player dies when it reaches 0. |
| chosen_weapon | weapon wielded by the enemy, the shotgun doesn't count. |
| enemy_hp | Enemy health/attack points |
| enemy_passive | the list of passive skill the enemy currently has. the actual passives are added in the enemy_setup() proc |
| finishing_move | if all the enemy's weakpoints have been triggered becomes TRUE |
| gameover | if the enemy or player died. restart the game when TRUE |
| last_three_move | used to remember the last three move of the player before this turn. |
| max_passive | the number of passives the enemy will start with |
| pissed_off | linked to passives, when it's equal or above the max_passive finishing move will become TRUE |
| player_hp | Player health |
| player_mp | player magic points |
| temp | Temporary message, for attack messages, etc |
| timer_id | used to clear the enemy_action proc timer when the game is restarted |
| weapons | weapon used by the enemy, pure fluff.for certain actions |
Procs | |
| arcade_action | happens after a player action and before the enemy turn. the enemy turn will be cancelled if there's a gameover. |
| enemy_action | the enemy turn, the enemy's action entirely depend on their current passive and a teensy tiny bit of randomness |
| enemy_setup | creates the enemy base stats for a new round along with the enemy passives |
| screen_setup | sets up the main screen for the user |
| weakpoint_check | used to check if the last three move of the player are the one we want in the right order and if the passive's weakpoint has been triggered yet |
the player cannot make any move while this is set to TRUE. should only TRUE during enemy turns.
unique to the emag mode, acts as a time limit where the player dies when it reaches 0.
weapon wielded by the enemy, the shotgun doesn't count.
Enemy health/attack points
the list of passive skill the enemy currently has. the actual passives are added in the enemy_setup() proc
if all the enemy's weakpoints have been triggered becomes TRUE
if the enemy or player died. restart the game when TRUE
used to remember the last three move of the player before this turn.
the number of passives the enemy will start with
linked to passives, when it's equal or above the max_passive finishing move will become TRUE
Player health
player magic points
Temporary message, for attack messages, etc
used to clear the enemy_action proc timer when the game is restarted
weapon used by the enemy, pure fluff.for certain actions
happens after a player action and before the enemy turn. the enemy turn will be cancelled if there's a gameover.
the enemy turn, the enemy's action entirely depend on their current passive and a teensy tiny bit of randomness
creates the enemy base stats for a new round along with the enemy passives
sets up the main screen for the user
used to check if the last three move of the player are the one we want in the right order and if the passive's weakpoint has been triggered yet
Vars | |
| actions | List of all actions to give to a user when they're well, granted actions |
|---|---|
| jump_action | Typepath for jumping |
| off_action | Typepath of the action button we use as "off" +It's a typepath so subtypes can give it fun new names |
| should_supress_view_changes | Should we supress any view changes? |
List of all actions to give to a user when they're well, granted actions
Typepath for jumping
Typepath of the action button we use as "off" +It's a typepath so subtypes can give it fun new names
Should we supress any view changes?
Procs | |
| populate_actions_list | Fill the construction_actios list with actions |
|---|---|
Fill the construction_actios list with actions
+Instantiate each action object that we'll be giving to users of +this console, and put it in the actions list
Vars | |
| jump_to_ports | Hashset of ports to jump to and ignore for collision purposes |
|---|---|
| my_port | The custom docking port placed by this console |
| shuttle_port | The mobile docking port of the connected shuttle |
Procs | |
| set_init_ports | "Initializes" any default port ids we have, done so add_jumpable_port can be a proper setter |
Hashset of ports to jump to and ignore for collision purposes
The custom docking port placed by this console
The mobile docking port of the connected shuttle
"Initializes" any default port ids we have, done so add_jumpable_port can be a proper setter
Vars | |
| can_approve_requests | Can you approve requests placed for cargo? Works differently between the app and the computer. |
|---|---|
| can_send | Can the supply console send the shuttle back and forth? Used in the UI backend. |
| is_express | var that makes express console use rockets |
| message_cooldown | var that tracks message cooldown |
| radio | radio used by the console to send messages on supply channel |
| requestonly | Can this console only send requests? |
Can you approve requests placed for cargo? Works differently between the app and the computer.
Can the supply console send the shuttle back and forth? Used in the UI backend.
var that makes express console use rockets
var that tracks message cooldown
radio used by the console to send messages on supply channel
Can this console only send requests?
Vars | |
| alert_level_tick | How many times the alert level has been changed +Used to clear the modal to change alert level |
|---|---|
| authorize_access | The access that the card had on login |
| authorize_name | The name of the user who logged in |
| cyborg_state | The current state of the UI for AIs |
| important_action_cooldown | Cooldown for important actions, such as messaging CentCom or other sectors |
| last_status_display | The last lines used for changing the status display |
| messages | The messages this console has been sent |
| state | The current state of the UI |
Procs | |
| authenticated | Are we a silicon, OR logged in? |
| authenticated_as_non_silicon_captain | Are we NOT a silicon, AND we're logged in as the captain? |
| authenticated_as_silicon_or_captain | Are we a silicon, OR we're logged in as the captain? |
| can_buy_shuttles | Returns TRUE if the user can buy shuttles. +If they cannot, returns FALSE or a string detailing why. |
| emergency_meeting | Call an emergency meeting |
| has_communication | Returns whether or not the communications console can communicate with the station |
| override_cooldown | Override the cooldown for special actions +Used in places such as CentCom messaging back so that the crew can answer right away |
How many times the alert level has been changed +Used to clear the modal to change alert level
The access that the card had on login
The name of the user who logged in
The current state of the UI for AIs
Cooldown for important actions, such as messaging CentCom or other sectors
The last lines used for changing the status display
The messages this console has been sent
The current state of the UI
Are we a silicon, OR logged in?
Are we NOT a silicon, AND we're logged in as the captain?
Are we a silicon, OR we're logged in as the captain?
Returns TRUE if the user can buy shuttles. +If they cannot, returns FALSE or a string detailing why.
Call an emergency meeting
+Comm Console wrapper for the Communications subsystem wrapper for the call_emergency_meeting world proc. +Checks to make sure the proc can be called, and handles relevant feedback, logging and timing. +See the SScommunications proc definition for more detail, in short, teleports the entire crew to +the bridge for a meetup. Should only really happen during april fools. +Arguments:
+Returns whether or not the communications console can communicate with the station
Override the cooldown for special actions +Used in places such as CentCom messaging back so that the crew can answer right away
Vars | |
| allow_items | Does this console store items? if NOT, will dump all items when the user cryo's instead |
|---|---|
Does this console store items? if NOT, will dump all items when the user cryo's instead
Vars | |
| pad_ref | Reference to the specific pad that the control computer is linked up to. |
|---|---|
Reference to the specific pad that the control computer is linked up to.
Computer for assigning new civilian bounties, and sending bounties for collection.
Procs | |
| add_bounties | Here is where cargo bounties are added to the player's bank accounts, then adjusted and scaled into a civilian bounty. |
|---|---|
| id_eject | Removes A stored ID card. |
| id_insert | Self explanitory, holds the ID card inthe console for bounty payout and manipulation. |
| send | This fully rewrites base behavior in order to only check for bounty objects, and nothing else. |
Here is where cargo bounties are added to the player's bank accounts, then adjusted and scaled into a civilian bounty.
Removes A stored ID card.
Self explanitory, holds the ID card inthe console for bounty payout and manipulation.
This fully rewrites base behavior in order to only check for bounty objects, and nothing else.
Vars | |
| connected | Connected mass driver |
|---|---|
| id | ID of the launch control |
| massdriver_countdown | Countdown timer for the mass driver's delayed launch functionality. |
| range | Range in which we search for a mass drivers and poddoors nearby |
| time | Time before auto launch |
| timing | If the launch timer counts down |
Procs | |
| alarm | Initiates launching sequence by checking if all components are functional, opening poddoors, firing mass drivers and then closing poddoors |
Connected mass driver
ID of the launch control
Countdown timer for the mass driver's delayed launch functionality.
Range in which we search for a mass drivers and poddoors nearby
Time before auto launch
If the launch timer counts down
Initiates launching sequence by checking if all components are functional, opening poddoors, firing mass drivers and then closing poddoors
Vars | |
| last_long_action | Long action cooldown to prevent spam |
|---|---|
Long action cooldown to prevent spam
Vars | |
| can_use_scanner | Used for setting tgui data - Whether the connected DNA Scanner is usable |
|---|---|
| connected_scanner | Currently connected DNA Scanner |
| delayed_action | Current delayed action, used for delayed enzyme transfer on scanner door close |
| diskette | Currently stored genetic data diskette |
| genetic_makeup_buffer | Maximum number of enzymes we can store |
| injector_selection | Assoc list of all advanced injectors. Keys are injector names. Values are lists of mutations. |
| injectorready | World time when injectors are ready to be printed |
| is_injector_ready | Used for setting tgui data - Whether injectors are ready to be printed |
| is_joker_ready | Used for setting tgui data - Whether JOKER algorithm is ready |
| is_pulsing_rads | Used for setting tgui data - Wheher an enzyme pulse operation is ongoing |
| is_scramble_ready | Used for setting tgui data - Whether Scramble DNA is ready |
| is_viable_occupant | Used for setting tgui data - Whether the current DNA Scanner occupant is viable for genetic modification |
| jokerready | World time when JOKER algorithm can be used in DNA Consoles |
| max_chromosomes | Maximum number of chromosomes that DNA Consoles are able to store. |
| max_injector_instability | Maximum total instability of all combined mutations allowed on an advanced injector |
| max_injector_mutations | Maximum number of mutation that an advanced injector can store |
| max_injector_selections | Maximum number of advanced injectors that DNA Consoles store |
| max_storage | Maximum number of mutations that DNA Consoles are able to store |
| rad_pulse_index | Index of the enzyme being modified during delayed enzyme pulse operations |
| rad_pulse_timer | World time when the enzyme pulse should complete |
| radduration | Duration for enzyme radiation pulses |
| radstrength | Strength for enzyme radiation pulses |
| scanner_occupant | Current DNA Scanner occupant |
| scrambleready | World time when Scramble can be used in DNA Consoles |
| stored_chromosomes | List of all chromosomes stored in the DNA Console |
| stored_mutations | List of all mutations stored on the DNA Console |
| stored_research | Link to the techweb's stored research. Used to retrieve stored mutations |
| tgui_advinjector_mutations | Used for setting tgui data - List of occupant mutations |
| tgui_console_chromosomes | Used for setting tgui data - List of DNA Console chromosomes |
| tgui_console_mutations | Used for setting tgui data - List of DNA Console stored mutations |
| tgui_diskette_mutations | Used for setting tgui data - List of diskette stored mutations |
| tgui_genetic_makeup | Used for setting tgui data - List of occupant mutations |
| tgui_occupant_mutations | Used for setting tgui data - List of occupant mutations |
| tgui_view_state | State of tgui view, i.e. which tab is currently active, or which genome we're currently looking at. |
| time_to_injector | Used for setting tgui data - Time until injectors are ready |
| time_to_joker | Used for setting tgui data - Time until joker is ready |
| time_to_pulse | Used for setting tgui data - Time until the enzyme pulse is complete |
| time_to_scramble | Used for setting tgui data - Time until scramble is ready |
Procs | |
| apply_genetic_makeup | |
| build_chrom_list | |
| build_genetic_makeup_list | Builds the genetic makeup list which will be sent to tgui interface. |
| build_mutation_list | |
| can_modify_occupant | |
| check_discovery | |
| connect_to_scanner | |
| eject_disk | |
| get_mut_by_ref | |
| on_scanner_close | |
| on_scanner_open | |
| rad_pulse | |
| randomize_radiation_accuracy | |
| scanner_operational | Checks if there is a connected DNA Scanner that is operational |
| scramble | |
| set_default_state | Sets the default state for the tgui interface. |
Used for setting tgui data - Whether the connected DNA Scanner is usable
Currently connected DNA Scanner
Current delayed action, used for delayed enzyme transfer on scanner door close
Currently stored genetic data diskette
Maximum number of enzymes we can store
Assoc list of all advanced injectors. Keys are injector names. Values are lists of mutations.
World time when injectors are ready to be printed
Used for setting tgui data - Whether injectors are ready to be printed
Used for setting tgui data - Whether JOKER algorithm is ready
Used for setting tgui data - Wheher an enzyme pulse operation is ongoing
Used for setting tgui data - Whether Scramble DNA is ready
Used for setting tgui data - Whether the current DNA Scanner occupant is viable for genetic modification
World time when JOKER algorithm can be used in DNA Consoles
Maximum number of chromosomes that DNA Consoles are able to store.
Maximum total instability of all combined mutations allowed on an advanced injector
Maximum number of mutation that an advanced injector can store
Maximum number of advanced injectors that DNA Consoles store
Maximum number of mutations that DNA Consoles are able to store
Index of the enzyme being modified during delayed enzyme pulse operations
World time when the enzyme pulse should complete
Duration for enzyme radiation pulses
Strength for enzyme radiation pulses
Current DNA Scanner occupant
World time when Scramble can be used in DNA Consoles
List of all chromosomes stored in the DNA Console
List of all mutations stored on the DNA Console
Link to the techweb's stored research. Used to retrieve stored mutations
Used for setting tgui data - List of occupant mutations
Used for setting tgui data - List of DNA Console chromosomes
Used for setting tgui data - List of DNA Console stored mutations
Used for setting tgui data - List of diskette stored mutations
Used for setting tgui data - List of occupant mutations
Used for setting tgui data - List of occupant mutations
State of tgui view, i.e. which tab is currently active, or which genome we're currently looking at.
Used for setting tgui data - Time until injectors are ready
Used for setting tgui data - Time until joker is ready
Used for setting tgui data - Time until the enzyme pulse is complete
Used for setting tgui data - Time until scramble is ready
Applies the enzyme buffer to the current scanner occupant
+Applies the type of a specific genetic makeup buffer to the current scanner
+Arguments:
+Takes any given chromosome and calculates chromosome compatibility
+Will iterate over the stored chromosomes in the DNA Console and will check
+whether it can be applied to the supplied mutation. Then returns a list of
+names of chromosomes that were compatible.
+Arguments:
+Builds the genetic makeup list which will be sent to tgui interface.
Builds the genetic makeup list which will be sent to tgui interface.
+Checks if there is a valid DNA Scanner occupant for genetic modification
+Checks whether a mutation alias has been discovered
+Checks whether a given mutation's genetic sequence has been completed and
+discovers it if appropriate
+Arguments:
+Checks for adjacent DNA scanners and connects when it finds a viable one
+Ejects the DNA Disk from the console.
+Will insert into the user's hand if possible, otherwise will drop it at the
+console's location.
+Arguments:
+Find a mutation from various storage locations via ATOM ref
+Takes an ATOM Ref and searches the appropriate mutation buffers and storage
+vars to try and find the associated mutation.
+Arguments:
+Called by connected DNA Scanners when their doors close.
+Called by connected DNA Scanners when their doors open.
+Performs the enzyme radiation pulse.
+Creates a randomised accuracy value for the enzyme pulse functionality.
+Donor code from previous DNA Console iteration.
+Arguments:
+Checks if there is a connected DNA Scanner that is operational
Scrambles an enzyme element value for the enzyme pulse functionality.
+Donor code from previous DNA Console iteration.
+Arguments:
+Sets the default state for the tgui interface.
Vars | |
| cam_plane_masters | All the plane masters that need to be applied. |
|---|---|
| last_camera_turf | The turf where the camera was last updated. |
All the plane masters that need to be applied.
The turf where the camera was last updated.
Vars | |
| admin_controlled | Variable dictating if the attached shuttle requires authorization from the admin staff to move |
|---|---|
| destination | ID of the currently selected destination of the attached shuttle |
| no_destination_swap | Variable dictating if the attached shuttle is forbidden to change destinations mid-flight |
| possible_destinations | Possible destinations of the attached shuttle |
| request_cooldown | Authorization request cooldown to prevent request spam to admin staff |
| shuttleId | ID of the attached shuttle |
Variable dictating if the attached shuttle requires authorization from the admin staff to move
ID of the currently selected destination of the attached shuttle
Variable dictating if the attached shuttle is forbidden to change destinations mid-flight
Possible destinations of the attached shuttle
Authorization request cooldown to prevent request spam to admin staff
ID of the attached shuttle
Procs | |
| check_lock | Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level |
|---|---|
Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level
+Arguments:
+Vars | |
| alert_control | Station alert datum for showing alerts UI |
|---|---|
Station alert datum for showing alerts UI
Vault controller for use on the derelict/KS13.
Procs | |
| activate_lock | Attempts to lock/unlock vault doors, if machine is charged. |
|---|---|
| attempt_siphon | Tries to charge from powernet excess, no upper limit except max charge. |
| cycle_close | Handles the doors closing |
| cycle_open | Handles the doors opening |
| find_airlocks | Initializes airlock links. |
| lock_vault | Attempts to lock the vault doors |
| unlock_vault | Attempts to unlock the vault doors |
| update_cable | Looks for a cable connection beneath the machine. |
Attempts to lock/unlock vault doors, if machine is charged.
Tries to charge from powernet excess, no upper limit except max charge.
Handles the doors closing
Handles the doors opening
Initializes airlock links.
Attempts to lock the vault doors
Attempts to unlock the vault doors
Looks for a cable connection beneath the machine.
Vars | |
| alert_comms | Do we want to inform comms when someone cryos? |
|---|---|
| control_computer_weakref | Weakref to our controller |
| despawn_world_time | Cooldown for when it's now safe to try an despawn the player. |
| time_till_despawn | Time until despawn when a mob enters a cryopod. You can cryo other people in pods. |
Do we want to inform comms when someone cryos?
Weakref to our controller
Cooldown for when it's now safe to try an despawn the player.
Time until despawn when a mob enters a cryopod. You can cryo other people in pods.
Vars | |
| can_open_with_hands | Whether or not the door can be opened by hand (used for blast doors and shutters) |
|---|---|
Whether or not the door can be opened by hand (used for blast doors and shutters)
Vars | |
| unelectrify_timerid | sigh |
|---|---|
Procs | |
| beforeShuttleMove | Turf move procs |
| should_try_removing_electronics | Returns if a crowbar would remove the airlock electronics |
sigh
Turf move procs
+Area move procs
+Machinery move procs
Returns if a crowbar would remove the airlock electronics
Airlock that can't be deconstructed, broken or hacked.
Procs | |
| attackby | Overrides screwdriver attack to prevent all deconstruction and hacking. |
|---|---|
Overrides screwdriver attack to prevent all deconstruction and hacking.
Vars | |
| open_message | Message that occurs when the door is opened |
|---|---|
| puzzle_id | Make sure that the key has the same puzzle_id as the keycard door! |
Message that occurs when the door is opened
Make sure that the key has the same puzzle_id as the keycard door!
Vars | |
| active | wheter to even bother with plumbing code or not |
|---|---|
| capacity | amount we can transfer per process. note that the ductnet can carry as much as the lowest capacity duct |
| color_to_color_support | TRUE to let colors connect when forced with a wrench, false to just not do that at all |
| connects | bitfield with the directions we're connected in |
| drop_on_wrench | wheter we just unanchored or drop whatever is in the variable. either is safe |
| duct | our ductnet, wich tracks what we're connected to |
| duct_color | the color of our duct |
| duct_layer | 1,2,4,8,16 |
| dumb | set to TRUE to disable smart duct behaviour |
| ignore_colors | TRUE to ignore colors, so yeah we also connect with other colors without issue |
| lock_connects | wheter we allow our connects to be changed after initialization or not |
| lock_layers | whether we allow our layers to be altered |
| neighbours | track ducts we're connected to. Mainly for ducts we connect to that we normally wouldn't, like different layers and colors, for when we regenerate the ducts |
Procs | |
| add_connects | add a connect direction |
| add_neighbour | add a duct as neighbour. this means we're connected and will connect again if we ever regenerate |
| attempt_connect | start looking around us for stuff to connect to |
| can_anchor | collection of all the sanity checks to prevent us from stacking ducts that shouldn't be stacked |
| connect_duct | connect to a duct |
| connect_network | see if whatever we found can be connected to |
| connect_plumber | connect to a plumbing object |
| create_duct | create a new duct datum |
| disconnect_duct | we disconnect ourself from our neighbours. we also destroy our ductnet and tell our neighbours to make a new one |
| generate_connects | Special proc to draw a new connect frame based on neighbours. not the norm so we can support multiple duct kinds |
| get_adjacent_ducts | get a list of the ducts we can connect to if we are dumb |
| handle_layer | update the layer we are on |
| lose_neighbours | remove all our neighbours, and remove us from our neighbours aswell |
| reconnect | ''''''''''''''''optimized''''''''''''''''' proc for quickly reconnecting after a duct net was destroyed |
| remove_connects | remove a connect direction |
| reset_connects | remove our connects |
wheter to even bother with plumbing code or not
amount we can transfer per process. note that the ductnet can carry as much as the lowest capacity duct
TRUE to let colors connect when forced with a wrench, false to just not do that at all
bitfield with the directions we're connected in
wheter we just unanchored or drop whatever is in the variable. either is safe
our ductnet, wich tracks what we're connected to
the color of our duct
1,2,4,8,16
set to TRUE to disable smart duct behaviour
TRUE to ignore colors, so yeah we also connect with other colors without issue
wheter we allow our connects to be changed after initialization or not
whether we allow our layers to be altered
track ducts we're connected to. Mainly for ducts we connect to that we normally wouldn't, like different layers and colors, for when we regenerate the ducts
add a connect direction
add a duct as neighbour. this means we're connected and will connect again if we ever regenerate
start looking around us for stuff to connect to
collection of all the sanity checks to prevent us from stacking ducts that shouldn't be stacked
connect to a duct
see if whatever we found can be connected to
connect to a plumbing object
create a new duct datum
we disconnect ourself from our neighbours. we also destroy our ductnet and tell our neighbours to make a new one
Special proc to draw a new connect frame based on neighbours. not the norm so we can support multiple duct kinds
get a list of the ducts we can connect to if we are dumb
update the layer we are on
remove all our neighbours, and remove us from our neighbours aswell
''''''''''''''''optimized''''''''''''''''' proc for quickly reconnecting after a duct net was destroyed
remove a connect direction
remove our connects
has a total of 5 layers and doesnt give a shit about color. its also dumb so doesnt autoconnect.
Procs | |
| connect_duct | don't connect to other multilayered stuff because honestly it shouldn't be done and I dont wanna deal with it |
|---|---|
don't connect to other multilayered stuff because honestly it shouldn't be done and I dont wanna deal with it
Vars | |
| destination | This is our own destination, pointing at this gateway |
|---|---|
| destination_name | Name of the generated destination |
| destination_type | Type of instanced gateway destination, needs to be subtype of /datum/gateway_destination/gateway |
| light_overlay | Overlay of the lights. They light up fully when it charges fully. |
| portal | bumper object, the thing that starts actual teleport |
| portal_visuals | Visual object for handling the viscontents |
| target | This is current active destination |
This is our own destination, pointing at this gateway
Name of the generated destination
Type of instanced gateway destination, needs to be subtype of /datum/gateway_destination/gateway
Overlay of the lights. They light up fully when it charges fully.
bumper object, the thing that starts actual teleport
Visual object for handling the viscontents
This is current active destination
Vars | |
| allow_mobs | Allow holder'd mobs |
|---|---|
| minimum_matrix_lightness | Minimum lightness for matrix mode, tested using 4 test colors of full red, green, blue, white. |
| minimum_matrix_tests | Minimum matrix tests that must pass for something to be considered a valid color (see above) |
| minimum_normal_lightness | Minimum lightness for normal mode |
| temp | Temporary messages |
Procs | |
| build_preview | Produces the preview image of the item, used in the UI, the way the color is not stacking is a sin. |
Allow holder'd mobs
Minimum lightness for matrix mode, tested using 4 test colors of full red, green, blue, white.
Minimum matrix tests that must pass for something to be considered a valid color (see above)
Minimum lightness for normal mode
Temporary messages
Produces the preview image of the item, used in the UI, the way the color is not stacking is a sin.
Procs | |
| on_update_icon | Used to eat args |
|---|---|
Used to eat args
Vars | |
| calling | If we are currently calling another holopad |
|---|---|
| disk | Record disk |
| force_answer_call | Calls will be automatically answered after a couple rings, here for debugging |
| holo_calls | Array of /datum/holocalls |
| holo_range | Change to change how far the AI can move away from the holopad before deactivating |
| holorays | Holoray-mob link |
| last_request | To prevent request spam. ~Carn |
| loop_mode | Currently looping a recording |
| masters | List of living mobs that use the holopad |
| outgoing_call | Currently outgoing holocall, do not modify the datums only check and call the public procs |
| record_mode | Currently recording |
| record_start | Recording start time |
| record_user | User that inititiated the recording |
| replay_holo | Replay hologram |
| replay_mode | Currently replaying a recording |
| secure | For pads in secure areas; do not allow forced connecting |
Procs | |
| hangup_all_calls | hangup_all_calls: Disconnects all current holocalls from the holopad |
If we are currently calling another holopad
Record disk
Calls will be automatically answered after a couple rings, here for debugging
Array of /datum/holocalls
Change to change how far the AI can move away from the holopad before deactivating
Holoray-mob link
To prevent request spam. ~Carn
Currently looping a recording
List of living mobs that use the holopad
Currently outgoing holocall, do not modify the datums only check and call the public procs
Currently recording
Recording start time
User that inititiated the recording
Replay hologram
Currently replaying a recording
For pads in secure areas; do not allow forced connecting
hangup_all_calls: Disconnects all current holocalls from the holopad
Procs | |
| adjustWater | Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds. |
|---|---|
| apply_chemicals | This is NOW the gradual affects that each chemical applies on every process() proc. Nutrients now use a more robust reagent holder in order to apply less insane +stat changes as opposed to 271 lines of individual statline effects. Shoutout to the original comments on chems, I just cleaned a few up. |
| plantdies | Plant Death Proc. +Cleans up various stats for the plant upon death, including pests, harvestability, and plant health. |
Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds.
This is NOW the gradual affects that each chemical applies on every process() proc. Nutrients now use a more robust reagent holder in order to apply less insane +stat changes as opposed to 271 lines of individual statline effects. Shoutout to the original comments on chems, I just cleaned a few up.
Plant Death Proc. +Cleans up various stats for the plant upon death, including pests, harvestability, and plant health.
Vars | |
| interrogating | Keeps track of the victim to apply effects if it teleports away |
|---|---|
| message_cooldown | Timer ID for interrogations |
| start_time | Is the device currently interrogating someone? |
| timerid | Trigger phrase to implant |
| trigger_phrase | Time when the interrogation was started, to calculate effect in case of interruption |
Procs | |
| Initialize | Cooldown for breakout message |
Keeps track of the victim to apply effects if it teleports away
Timer ID for interrogations
Is the device currently interrogating someone?
Trigger phrase to implant
Time when the interrogation was started, to calculate effect in case of interruption
Cooldown for breakout message
Vars | |
| attachment_point | What is the name of the thing being attached to the mob? |
|---|---|
What is the name of the thing being attached to the mob?
The limbgrower. Makes organd and limbs with synthflesh and chems. +See [limbgrower_designs.dm] for everything we can make.
Vars | |
| being_built | The design we're printing currently. |
|---|---|
| busy | If we're currently printing something. |
| categories | All the categories of organs we can print. |
| production_coefficient | How efficient our machine is. Better parts = less chemicals used and less power used. Range of 1 to 0.25. |
| production_speed | How long it takes for us to print a limb. Affected by production_coefficient. |
| selected_category | The category of limbs we're browing in our UI. |
| stored_research | Our internal techweb for limbgrower designs. |
Procs | |
| emag_act | Emagging a limbgrower allows you to build synthetic armblades. |
The design we're printing currently.
If we're currently printing something.
All the categories of organs we can print.
How efficient our machine is. Better parts = less chemicals used and less power used. Range of 1 to 0.25.
How long it takes for us to print a limb. Affected by production_coefficient.
The category of limbs we're browing in our UI.
Our internal techweb for limbgrower designs.
Emagging a limbgrower allows you to build synthetic armblades.
Vars | |
| being_built | The current design datum that the machine is building. |
|---|---|
| build_finish | World time when the build will finish. |
| build_materials | Reference to all materials used in the creation of the item being_built. |
| build_start | World time when the build started. |
| component_coeff | Coefficient for the efficiency of material usage in item building. Based on the installed parts. |
| link_on_init | Whether the Exofab links to the ore silo on init. Special derelict or maintanance variants should set this to FALSE. |
| part_sets | A list of categories that valid MECHFAB design datums will broadly categorise themselves under. |
| process_queue | Whether or not the machine is building the entire queue automagically. |
| queue | Current items in the build queue. |
| rmat | Reference to a remote material inventory, such as an ore silo. |
| stored_part | Part currently stored in the Exofab. |
| stored_research | Copy of the currently synced techweb. |
| time_coeff | Coefficient for the speed of item building. Based on the installed parts. |
Procs | |
| add_part_set_to_queue | Adds a list of datum designs to the build queue. |
| add_to_queue | Adds a datum design to the build queue. |
| build_next_in_queue | Attempts to build the next item in the build queue. |
| build_part | Starts the build process for a given design datum. |
| check_resources | Checks if the Exofab has enough resources to print a given item. |
| dispense_built_part | Dispenses a part to the tile infront of the Exosuit Fab. |
| eject_sheets | Eject material sheets. |
| get_construction_time_w_coeff | Calculates the coefficient-modified build time of a design. |
| get_resource_cost_w_coeff | Calculates the coefficient-modified resource cost of a single material component of a design's recipe. |
| get_resources_w_coeff | Calculates resource/material costs for printing an item based on the machine's resource coefficient. |
| list_queue | Generates a list of parts formatted for tgui based on the current build queue. |
| on_finish_printing | Intended to be called when the exofab has stopped working and is no longer printing items. |
| on_start_printing | Intended to be called when an item starts printing. |
| output_available_resources | Generates a list of resources / materials available to this Exosuit Fab |
| output_part_info | Generates an info list for a given part. |
| remove_from_queue | Removes datum design from the build queue based on index. |
| sync | Syncs machine with R&D servers. |
The current design datum that the machine is building.
World time when the build will finish.
Reference to all materials used in the creation of the item being_built.
World time when the build started.
Coefficient for the efficiency of material usage in item building. Based on the installed parts.
Whether the Exofab links to the ore silo on init. Special derelict or maintanance variants should set this to FALSE.
A list of categories that valid MECHFAB design datums will broadly categorise themselves under.
Whether or not the machine is building the entire queue automagically.
Current items in the build queue.
Reference to a remote material inventory, such as an ore silo.
Part currently stored in the Exofab.
Copy of the currently synced techweb.
Coefficient for the speed of item building. Based on the installed parts.
Adds a list of datum designs to the build queue.
+Will only add designs that are in this machine's stored techweb. +Does final checks for datum IDs and makes sure this machine can build the designs.
+Adds a datum design to the build queue.
+Returns TRUE if successful and FALSE if the design was not added to the queue.
+Attempts to build the next item in the build queue.
+Returns FALSE if either there are no more parts to build or the next part is not buildable. +Returns TRUE if the next part has started building.
+Starts the build process for a given design datum.
+Returns FALSE if the procedure fails. Returns TRUE when being_built is set. +Uses materials.
+Checks if the Exofab has enough resources to print a given item.
+Returns FALSE if the design has no reagents used in its construction (?) or if there are insufficient resources. +Returns TRUE if there are sufficient resources to print the item.
+Dispenses a part to the tile infront of the Exosuit Fab.
+Returns FALSE is the machine cannot dispense the part on the appropriate turf. +Return TRUE if the part was successfully dispensed.
+Eject material sheets.
+Returns the number of sheets successfully ejected. +eject_sheet - Byond REF of the material to eject. +eject_amt - Number of sheets to attempt to eject.
Calculates the coefficient-modified build time of a design.
+Returns coefficient-modified build time of a given design.
+Calculates the coefficient-modified resource cost of a single material component of a design's recipe.
+Returns coefficient-modified resource cost for the given material component.
+Calculates resource/material costs for printing an item based on the machine's resource coefficient.
+Returns a list of k,v resources with their amounts.
+Generates a list of parts formatted for tgui based on the current build queue.
+Returns a formatted list of lists containing formatted part information for every part in the build queue.
Intended to be called when the exofab has stopped working and is no longer printing items.
+Removes the overlay to show the fab working and sets idle power usage settings. Additionally resets the description and turns off queue processing.
Intended to be called when an item starts printing.
+Adds the overlay to show the fab working and sets active power usage settings.
Generates a list of resources / materials available to this Exosuit Fab
+Returns null if there is no material container available. +List format is list(material_name = list(amount = ..., ref = ..., etc.))
Generates an info list for a given part.
+Returns a list of part information.
+Removes datum design from the build queue based on index.
+Returns TRUE if successful and FALSE if a design was not removed from the queue.
+Syncs machine with R&D servers.
+Requires an R&D Console visible within 7 tiles. Copies techweb research. Updates tgui's state data.
Vars | |
| allowed | list of medipen subtypes it can refill |
|---|---|
| busy | var to prevent glitches in the animation |
Procs | |
| attackby | handles the messages and animation, calls refill to end the animation |
| refill | refills the medipen |
list of medipen subtypes it can refill
var to prevent glitches in the animation
handles the messages and animation, calls refill to end the animation
refills the medipen
Mineral processing unit console
Vars | |
| input_dir | The current direction of input_turf, in relation to the machine. |
|---|---|
| input_turf | The turf the machines listens to for items to pick up. Calls the pickup_item() proc. |
| needs_item_input | Determines if this machine needs to pick up items. Used to avoid registering signals to /mineral machines that don't pickup items. |
| output_dir | The current direction, in relation to the machine, that items will be output to. |
Procs | |
| pickup_item | Base proc for all /mineral subtype machines to use. Place your item pickup behavior in this proc when you override it for your specific machine. |
| register_input_turf | Gets the turf in the input_dir direction adjacent to the machine, and registers signals for ATOM_ENTERED and ATOM_CREATED. Calls the pickup_item() proc when it receives these signals. |
| unload_mineral | Generic unloading proc. Takes an atom as an argument and forceMove's it to the turf adjacent to this machine in the output_dir direction. |
| unregister_input_turf | Unregisters signals that are registered the machine's input turf, if it has one. |
The current direction of input_turf, in relation to the machine.
The turf the machines listens to for items to pick up. Calls the pickup_item() proc.
Determines if this machine needs to pick up items. Used to avoid registering signals to /mineral machines that don't pickup items.
The current direction, in relation to the machine, that items will be output to.
Base proc for all /mineral subtype machines to use. Place your item pickup behavior in this proc when you override it for your specific machine.
Called when the COMSIG_ATOM_ENTERED and COMSIG_ATOM_CREATED signals are sent.
+Arguments:
+source turf.target was at before moving onto source.Gets the turf in the input_dir direction adjacent to the machine, and registers signals for ATOM_ENTERED and ATOM_CREATED. Calls the pickup_item() proc when it receives these signals.
Generic unloading proc. Takes an atom as an argument and forceMove's it to the turf adjacent to this machine in the output_dir direction.
Unregisters signals that are registered the machine's input turf, if it has one.
Prisoners' Console
Vars | |
| Radio | Needed to send messages to sec radio |
|---|---|
| machinedir | Direction of the stacking machine |
| stacking_machine | Connected stacking machine |
Needed to send messages to sec radio
Direction of the stacking machine
Connected stacking machine
Mineral stacking unit console
Vars | |
| machine | Connected stacking machine |
|---|---|
| machinedir | Direction for which console looks for stacking machine to connect to |
Connected stacking machine
Direction for which console looks for stacking machine to connect to
Vars | |
| base_active_power_usage | Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too. |
|---|---|
| base_idle_power_usage | Power usage when the computer is idle and screen is off (currently only applies to laptops) |
| cpu | CPU that handles most logic while this type only handles power and other specific things. |
| hardware_flag | A flag that describes this device type |
| icon_state_powered | Icon state when the computer is turned on. |
| icon_state_unpowered | Icon state when the computer is turned off. |
| last_power_usage | Power usage during last tick |
| light_strength | Light luminosity when turned on |
| max_hardware_size | Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed. |
| screen_icon_screensaver | Icon state overlay when the computer is powered, but not 'switched on'. |
| screen_icon_state_menu | Icon state overlay when the computer is turned on, but no program is loaded that would override the screen. |
| steel_sheet_cost | Amount of steel sheets refunded when disassembling an empty frame of this computer. |
Procs | |
| relay_icon_update | Eats the "source" arg because update_icon actually expects args now. |
Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too.
Power usage when the computer is idle and screen is off (currently only applies to laptops)
CPU that handles most logic while this type only handles power and other specific things.
A flag that describes this device type
Icon state when the computer is turned on.
Icon state when the computer is turned off.
Power usage during last tick
Light luminosity when turned on
Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed.
Icon state overlay when the computer is powered, but not 'switched on'.
Icon state overlay when the computer is turned on, but no program is loaded that would override the screen.
Amount of steel sheets refunded when disassembling an empty frame of this computer.
Eats the "source" arg because update_icon actually expects args now.
Vars | |
| console_department | Used in New() to set network tag according to our area. |
|---|---|
Used in New() to set network tag according to our area.
Vars | |
| chatprogram | chat client installed on this computer, just helpful for linking all the computers |
|---|---|
chat client installed on this computer, just helpful for linking all the computers
Vars | |
| ass | A reference to a mob on top of the photocopier trying to copy their ass. Null if there is no mob. |
|---|---|
| busy | Indicates whether the printer is currently busy copying or not. |
| color_mode | Used with photos. Determines if the copied photo will be in greyscale or color. |
| document_copy | A reference to an /obj/item/documents inside the copier, if one is inserted. Otherwise null. |
| num_copies | How many copies will be printed with one click of the "copy" button. |
| paper_copy | A reference to an /obj/item/paper inside the copier, if one is inserted. Otherwise null. |
| photo_copy | A reference to an /obj/item/photo inside the copier, if one is inserted. Otherwise null. |
| toner_cartridge | A reference to the toner cartridge that's inserted into the copier. Null if there is no cartridge. |
Procs | |
| check_ass | Checks the living mob ass exists and its location is the same as the photocopier. |
| copier_blocked | Checks if the copier is deleted, or has something dense at its location. Called in MouseDrop_T() |
| copier_empty | Checks if there is an item inserted into the copier or a mob sitting on top of it. |
| do_copy_loop | Will invoke the passed in copy_cb callback in 1 second intervals, and charge the user 5 credits for each copy made. |
| do_insertion | Inserts the item into the copier. Called in attackby() after a human mob clicked on the copier with a paper, photo, or document. |
| give_pixel_offset | Gives items a random x and y pixel offset, between -10 and 10 for each. |
| has_enough_toner | Determines if the photocopier has enough toner to create num_copies amount of copies of the currently inserted item. |
| make_ass_copy | Handles the copying of an ass photo. |
| make_devil_paper_copy | Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy. |
| make_document_copy | Handles the copying of documents. |
| make_paper_copy | Handles the copying of paper. Transfers all the text, stamps and so on from the old paper, to the copy. |
| make_photo_copy | Handles the copying of photos, which can be printed in either color or greyscale. |
| remove_photocopy | Called when someone hits the "remove item" button on the copier UI. |
| reset_busy | Sets busy to FALSE. Created as a proc so it can be used in callbacks. |
A reference to a mob on top of the photocopier trying to copy their ass. Null if there is no mob.
Indicates whether the printer is currently busy copying or not.
Used with photos. Determines if the copied photo will be in greyscale or color.
A reference to an /obj/item/documents inside the copier, if one is inserted. Otherwise null.
How many copies will be printed with one click of the "copy" button.
A reference to an /obj/item/paper inside the copier, if one is inserted. Otherwise null.
A reference to an /obj/item/photo inside the copier, if one is inserted. Otherwise null.
A reference to the toner cartridge that's inserted into the copier. Null if there is no cartridge.
Checks the living mob ass exists and its location is the same as the photocopier.
Returns FALSE if ass doesn't exist or is not at the copier's location. Returns TRUE otherwise.
Checks if the copier is deleted, or has something dense at its location. Called in MouseDrop_T()
Checks if there is an item inserted into the copier or a mob sitting on top of it.
+Return FALSE is the copier has something inside of it. Returns TRUE if it doesn't.
Will invoke the passed in copy_cb callback in 1 second intervals, and charge the user 5 credits for each copy made.
Arguments:
+make_x_copy() procs, such as make_paper_copy().Inserts the item into the copier. Called in attackby() after a human mob clicked on the copier with a paper, photo, or document.
Arugments:
+Gives items a random x and y pixel offset, between -10 and 10 for each.
+This is done that when someone prints multiple papers, we dont have them all appear to be stacked in the same exact location.
+Arguments:
+Determines if the photocopier has enough toner to create num_copies amount of copies of the currently inserted item.
Handles the copying of an ass photo.
+Calls check_ass() first to make sure that ass exists, among other conditions. Since this proc is called from a timer, it's possible that it was removed.
+Additionally checks that the mob has their clothes off.
Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy.
+Checks first if paper_copy exists. Since this proc is called from a timer, it's possible that it was removed.
+Does not check if it has enough toner because devil contracts cost no toner to print.
Handles the copying of documents.
+Checks first if document_copy exists. Since this proc is called from a timer, it's possible that it was removed.
Handles the copying of paper. Transfers all the text, stamps and so on from the old paper, to the copy.
+Checks first if paper_copy exists. Since this proc is called from a timer, it's possible that it was removed.
Handles the copying of photos, which can be printed in either color or greyscale.
+Checks first if photo_copy exists. Since this proc is called from a timer, it's possible that it was removed.
Called when someone hits the "remove item" button on the copier UI.
+If the user is a silicon, it drops the object at the location of the copier. If the user is not a silicon, it tries to put the object in their hands first.
+Sets busy to FALSE because if the inserted item is removed, the copier should halt copying.
Arguments:
+Sets busy to FALSE. Created as a proc so it can be used in callbacks.
Procs | |
| work_press | This proc attempts to create a plate. User cannot move during this process. |
|---|---|
This proc attempts to create a plate. User cannot move during this process.
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
Vars | |
| buffer | Plumbing machinery is always gonna need reagents, so we might aswell put it here |
|---|---|
| rcd_constructable | wheter we partake in rcd construction or not |
| rcd_cost | cost of the plumbing rcd construction |
| rcd_delay | delay of constructing it throught the plumbing rcd |
| reagent_flags | Flags for reagents, like INJECTABLE, TRANSPARENT bla bla everything thats in DEFINES/reagents.dm |
Plumbing machinery is always gonna need reagents, so we might aswell put it here
wheter we partake in rcd construction or not
cost of the plumbing rcd construction
delay of constructing it throught the plumbing rcd
Flags for reagents, like INJECTABLE, TRANSPARENT bla bla everything thats in DEFINES/reagents.dm
this the plumbing version of a heater/freezer.
Vars | |
| acclimate_state | COOLING, HEATING or NEUTRAL. We track this for change, so we dont needlessly update our icon |
|---|---|
| allowed_temperature_difference | I cant find a good name for this. Basically if target is 300, and this is 10, it will still target 300 but will start emptying itself at 290 and 310. |
| emptying | *We can't take anything in, at least till we're emptied. Down side of the round robin chem transfer, otherwise while emptying 5u of an unreacted chem gets added, +and you get nasty leftovers |
| enabled | Are we turned on or off? this is from the on and off button |
| heater_coefficient | cool/heat power |
| target_temperature | towards wich temperature do we build? |
COOLING, HEATING or NEUTRAL. We track this for change, so we dont needlessly update our icon
I cant find a good name for this. Basically if target is 300, and this is 10, it will still target 300 but will start emptying itself at 290 and 310.
*We can't take anything in, at least till we're emptied. Down side of the round robin chem transfer, otherwise while emptying 5u of an unreacted chem gets added, +and you get nasty leftovers
Are we turned on or off? this is from the on and off button
cool/heat power
towards wich temperature do we build?
Vars | |
| badspot | where beakers that are already full will be sent |
|---|---|
| goodspot | where things are sent |
| inputspot | where things are taken |
| wanted_amount | how much do we fill |
Procs | |
| interact | changing input ammount with a window |
| setDir | changes the tile array |
where beakers that are already full will be sent
where things are sent
where things are taken
how much do we fill
changing input ammount with a window
changes the tile array
Vars | |
| disposal_rate | we remove 10 reagents per second |
|---|---|
we remove 10 reagents per second
Vars | |
| eat_dir | input dir |
|---|---|
input dir
chemical plumbing filter. If it's not filtered by left and right, it goes straight.
Vars | |
| english_left | whitelist of chems but their name instead of path |
|---|---|
| english_right | whitelist of chems but their name instead of path |
| left | whitelist of chems id's that go to the left side. Empty to disable port |
| right | whitelist of chem id's that go to the right side. Empty to disable port |
whitelist of chems but their name instead of path
whitelist of chems but their name instead of path
whitelist of chems id's that go to the left side. Empty to disable port
whitelist of chem id's that go to the right side. Empty to disable port
We pump liquids from activated(plungerated) geysers to a plumbing outlet. We don't need to be wired.
Vars | |
| geyser | The geyser object |
|---|---|
| geyserless | set to true if the loop couldnt find a geyser in process, so it remembers and stops checking every loop until moved. more accurate name would be absolutely_no_geyser_under_me_so_dont_try |
| pump_power | units we pump per process (2 seconds) |
| volume | volume of our internal buffer |
Procs | |
| default_unfasten_wrench | please note that the component has a hook in the parent call, wich handles activating and deactivating |
| pump | pump up that sweet geyser nectar |
The geyser object
set to true if the loop couldnt find a geyser in process, so it remembers and stops checking every loop until moved. more accurate name would be absolutely_no_geyser_under_me_so_dont_try
units we pump per process (2 seconds)
volume of our internal buffer
please note that the component has a hook in the parent call, wich handles activating and deactivating
pump up that sweet geyser nectar
We take a constant input of reagents, and produce a pill once a set volume is reached
Vars | |
| current_volume | selected size of the product |
|---|---|
| max_bottle_volume | maximum size of a bottle |
| max_floor_products | max amount of pills allowed on our tile before we start storing them instead |
| max_patch_volume | maximum size of a patch |
| max_pill_volume | maximum size of a pill |
| max_volume | the maximum size a pill or patch can be |
| min_volume | the minimum size a pill or patch can be |
| pill_number | the icon_state number for the pill. |
| pill_styles | list of id's and icons for the pill selection of the ui |
| product | current operating product (pills or patches) |
| product_name | prefix for the product name |
| stored_products | list of products stored in the machine, so we dont have 610 pills on one tile |
selected size of the product
maximum size of a bottle
max amount of pills allowed on our tile before we start storing them instead
maximum size of a patch
maximum size of a pill
the maximum size a pill or patch can be
the minimum size a pill or patch can be
the icon_state number for the pill.
list of id's and icons for the pill selection of the ui
current operating product (pills or patches)
prefix for the product name
list of products stored in the machine, so we dont have 610 pills on one tile
a reaction chamber for plumbing. pretty much everything can react, but this one keeps the reagents seperated and only reacts under your given terms
Vars | |
| emptying | our reagent goal has been reached, so now we lock our inputs and start emptying |
|---|---|
| required_reagents | *list of set reagents that the reaction_chamber allows in, and must all be present before mixing is enabled. +* example: list(/datum/reagent/water = 20, /datum/reagent/fuel/oil = 50) |
our reagent goal has been reached, so now we lock our inputs and start emptying
*list of set reagents that the reaction_chamber allows in, and must all be present before mixing is enabled. +* example: list(/datum/reagent/water = 20, /datum/reagent/fuel/oil = 50)
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
Vars | |
| transfer_side | how much we must transfer to the side |
|---|---|
| transfer_straight | how much we must transfer straight. note input can be as high as 10 reagents per process, usually |
| turn_straight | constantly switches between TRUE and FALSE. TRUE means the batch tick goes straight, FALSE means the next batch goes in the side duct. |
how much we must transfer to the side
how much we must transfer straight. note input can be as high as 10 reagents per process, usually
constantly switches between TRUE and FALSE. TRUE means the batch tick goes straight, FALSE means the next batch goes in the side duct.
A single machine that produces a single chem. Can be placed in unison with others through plumbing to create chemical factories
Vars | |
| amount | Amount we produce for every process. Ideally keep under 5 since thats currently the standard duct capacity |
|---|---|
| buffer | The maximum we can produce for every process |
| dispensable_reagents | straight up copied from chem dispenser. Being a subtype would be extremely tedious and making it global would restrict potential subtypes using different dispensable_reagents |
| possible_amounts | I track them here because I have no idea how I'd make tgui loop like that |
| reagent_id | The reagent we are producing. We are a typepath, but are also typecast because there's several occations where we need to use initial. |
Amount we produce for every process. Ideally keep under 5 since thats currently the standard duct capacity
The maximum we can produce for every process
straight up copied from chem dispenser. Being a subtype would be extremely tedious and making it global would restrict potential subtypes using different dispensable_reagents
I track them here because I have no idea how I'd make tgui loop like that
The reagent we are producing. We are a typepath, but are also typecast because there's several occations where we need to use initial.
Vars | |
| bloody | Is the pool bloody? |
|---|---|
| drainable | Whether or not the pool can be drained |
| draining | Just to prevent spam |
| interact_delay | Next world.time you can interact with settings |
| last_reagent_process | Last time we process_reagents()'d |
| linked_drain | Pool drain |
| linked_filter | Pool filter |
| linked_mist | Linked mist effects |
| linked_turfs | Pool turfs |
| max_beaker_transfer | Maximum amount we will take from a beaker |
| min_reagent_amount | Minimum amount of a reagent for it to work on us |
| mist_state | Is pool mist currently on? |
| mobs_in_pool | All mobs in pool |
| noreact_reagents | ADMINBUS ONLY - WHETHER OR NOT WE HAVE NOREACT ;) |
| old_rcolor | Old reagent color, used to determine if update_color needs to reset colors. |
| reagent_tick_interval | how fast in deciseconds between reagent processes |
| respect_reagent_blacklist | Reagent blacklisting |
| scan_range | How far it scans for pool objects |
| shocked | Airlock style shocks |
| temperature | See __DEFINES/pool.dm, temperature defines |
| temperature_unlocked | Can we use unsafe temperatures |
Is the pool bloody?
Whether or not the pool can be drained
Just to prevent spam
Next world.time you can interact with settings
Last time we process_reagents()'d
Pool drain
Pool filter
Linked mist effects
Pool turfs
Maximum amount we will take from a beaker
Minimum amount of a reagent for it to work on us
Is pool mist currently on?
All mobs in pool
ADMINBUS ONLY - WHETHER OR NOT WE HAVE NOREACT ;)
Old reagent color, used to determine if update_color needs to reset colors.
how fast in deciseconds between reagent processes
Reagent blacklisting
How far it scans for pool objects
Airlock style shocks
See __DEFINES/pool.dm, temperature defines
Can we use unsafe temperatures
Vars | |
| active | Active/on? |
|---|---|
| controller | Parent controller |
| cycles_left | Cycles left for fill/drain while active |
| drain_suck_range | Drain mode suction range |
| fill_push_range | Fill mode knock away range |
| filling | Filling or draining |
| item_suction_range | Drain item suction range |
| suck_in_once_per | Suck in once per x ticks |
| whirling_mobs | Mobs we are swirling around |
Procs | |
| whirl_mob | dangerous proc don't fuck with, admins |
Active/on?
Parent controller
Cycles left for fill/drain while active
Drain mode suction range
Fill mode knock away range
Filling or draining
Drain item suction range
Suck in once per x ticks
Mobs we are swirling around
dangerous proc don't fuck with, admins
Vars | |
| always_up | Will stay active |
|---|---|
| base | For turrets inside other objects |
| base_icon_state | Base turret icon state |
| controllock | If the turret responds to control panels |
| cover | The cover that is covering this turret |
| cp | Linked turret control panel of the turret |
| faction | Same faction mobs will never be shot at, no matter the other settings |
| gun_charge | The charge of the gun when retrieved from wreckage |
| has_cover | Hides the cover |
| installation | The type of weapon installed by default |
| last_fired | World.time the turret last fired |
| lethal_projectile | Lethal mode projectile type |
| lethal_projectile_sound | Sound of lethal projectile |
| locked | If the turret's behaviour control access is locked |
| manual_control | If the turret is manually controlled |
| mode | In which mode is turret in, stun or lethal |
| nonlethal_projectile | Projectile to use in stun mode when the target is resting, if any |
| nonlethal_projectile_sound | Sound of stun projectile wen the target is resting, optional |
| on | Determines if the turret is on |
| power_channel | Only people with Security access |
| quit_action | Action button holder for quitting manual control |
| raised | If the turret cover is "open" and the turret is raised |
| raising | If the turret is currently opening or closing its cover |
| remote_controller | Mob that is remotely controlling the turret |
| reqpower | Power needed per shot |
| scan_range | Scan range of the turret for locating targets |
| shot_delay | Ticks until next shot (1.5 ?) |
| shot_stagger | MISSING: |
| spark_system | The spark system, used for generating... sparks? |
| stored_gun | What stored gun is in the turret |
| stun_projectile | Stun mode projectile type |
| stun_projectile_sound | Sound of stun projectile |
| toggle_action | Action button holder for switching between turret modes when manually controlling |
| turret_flags | Turret flags about who is turret allowed to shoot |
| wall_turret_direction | The turret will try to shoot from a turf in that direction when in a wall |
Will stay active
For turrets inside other objects
Base turret icon state
If the turret responds to control panels
The cover that is covering this turret
Linked turret control panel of the turret
Same faction mobs will never be shot at, no matter the other settings
The charge of the gun when retrieved from wreckage
Hides the cover
The type of weapon installed by default
World.time the turret last fired
Lethal mode projectile type
Sound of lethal projectile
If the turret's behaviour control access is locked
If the turret is manually controlled
In which mode is turret in, stun or lethal
Projectile to use in stun mode when the target is resting, if any
Sound of stun projectile wen the target is resting, optional
Determines if the turret is on
Only people with Security access
Action button holder for quitting manual control
If the turret cover is "open" and the turret is raised
If the turret is currently opening or closing its cover
Mob that is remotely controlling the turret
Power needed per shot
Scan range of the turret for locating targets
Ticks until next shot (1.5 ?)
MISSING:
The spark system, used for generating... sparks?
What stored gun is in the turret
Stun mode projectile type
Sound of stun projectile
Action button holder for switching between turret modes when manually controlling
Turret flags about who is turret allowed to shoot
The turret will try to shoot from a turf in that direction when in a wall
Vars | |
| req_access | Set the tier of the canister and overlay used |
|---|---|
| temperature_resistance | Max amount of heat allowed inside of the canister before it starts to melt (different tiers have different limits) +Max amount of pressure allowed inside of the canister before it starts to break (different tiers have different limits) |
Set the tier of the canister and overlay used
Max amount of heat allowed inside of the canister before it starts to melt (different tiers have different limits) +Max amount of pressure allowed inside of the canister before it starts to break (different tiers have different limits)
Vars | |
| alarm_manager | Represents a signel source of power alarms for this apc |
|---|---|
Procs | |
| autoset | Returns the new status value for an APC channel. |
| check_updates | Checks for what icon updates we will need to handle |
| setsubsystem | Used by external forces to set the APCs channel status's. |
Represents a signel source of power alarms for this apc
Returns the new status value for an APC channel.
+// val 0=off, 1=off(auto) 2=on 3=on(auto) +// on 0=off, 1=on, 2=autooff +TODO: Make this use bitflags instead. It should take at most three lines, but it's out of scope for now.
+Arguments:
+Checks for what icon updates we will need to handle
Used by external forces to set the APCs channel status's.
+Arguments:
+Vars | |
| above | The relay that's below us (for bridging powernets) |
|---|---|
| anchored | The relay that's above us (for bridging powernets) |
Procs | |
| find_relays | Locates relays that are above and below this object |
| multitool_act | Allows you to scan the relay with a multitool to see stats. |
| refresh | Handles re-acquiring + merging powernets found by find_relays() |
The relay that's below us (for bridging powernets)
The relay that's above us (for bridging powernets)
Locates relays that are above and below this object
Allows you to scan the relay with a multitool to see stats.
Handles re-acquiring + merging powernets found by find_relays()
Procs | |
| occlusion_setup | trace towards sun to see if we're in shadow |
|---|---|
| update_solar_exposure | calculates the fraction of the sunlight that the panel receives |
trace towards sun to see if we're in shadow
calculates the fraction of the sunlight that the panel receives
Vars | |
| connected_tracker | SOLAR_TRACK_OFF, SOLAR_TRACK_TIMED, SOLAR_TRACK_AUTO |
|---|---|
| track | degree change per minute |
Procs | |
| set_panels | Rotates the panel to the passed angles |
| timed_track | Ran every time the sun updates. |
SOLAR_TRACK_OFF, SOLAR_TRACK_TIMED, SOLAR_TRACK_AUTO
degree change per minute
Rotates the panel to the passed angles
Ran every time the sun updates.
Vars | |
| base_icon_state | Used for changing icon states for diff base sprites |
|---|---|
| bullet_energy | How much the bullets damage should be multiplied by when it is added to the internal variables |
| combined_gas | The last air sample's total molar count, will always be above or equal to 0 |
| common_channel | The common channel |
| countdown | An effect we show to admins and ghosts the percentage of delam we're at |
| damage | The amount of damage we have currently |
| damage_archived | The damage we had before this cycle. Used to limit the damage we can take each cycle, and for safe_alert |
| damage_penalty_point | When we pass this amount of damage we start shooting bolts |
| dynamic_heat_resistance | Affects the amount of damage and minimum point at which the sm takes heat damage |
| emergency_alert | The alert we send when we've reached emergency_point |
| emergency_point | The point at which we start sending messages to the common channel |
| engineering_channel | The engineering channel |
| explosion_point | The point at which we delam |
| explosion_power | A scaling value that affects the severity of explosions. |
| final_countdown | Are we exploding? |
| gas_change_rate | Determines the rate of positve change in gas comp values |
| gasefficency | The portion of the gasmix we're on that we should remove |
| gasmix_power_ratio | Affects the power gain the sm experiances from heat |
| gl_uid | The amount of supermatters that have been created this round |
| hallucination_power | How much hallucination should we produce per unit of power? |
| has_been_powered | Boolean used for logging if we've been powered |
| has_reached_emergency | Boolean used for logging if we've passed the emergency point |
| is_main_engine | Used along with a global var to track if we can give out the sm sliver stealing objective |
| last_accent_sound | cooldown tracker for accent sounds |
| lastwarning | Time in 1/10th of seconds since the last sent warning |
| matter_power | Takes the energy throwing things into the sm generates and slowly turns it into actual power |
| mole_heat_penalty | Used to increase or lessen the amount of damage the sm takes from heat based on molar counts. |
| moveable | Can it be moved? |
| power | Refered to as eer on the moniter. This value effects gas output, heat, damage, and radiation. |
| power_changes | Disables power changes |
| powerloss_dynamic_scaling | Based on co2 percentage, slowly moves between 0 and 1. We use it to calc the powerloss_inhibitor |
| powerloss_inhibitor | Uses powerloss_dynamic_scaling and combined_gas to lessen the effects of our powerloss functions |
| processes | Disables the sm's proccessing totally. |
| produces_gas | Disables the production of gas, and pretty much any handling of it we do. |
| radio | Our internal radio |
| radio_key | The key our internal radio uses |
| safe_alert | Our "Shit is no longer fucked" message. We send it when damage is less then damage_archived |
| soundloop | Our soundloop |
| takes_damage | Disables all methods of taking damage |
| uid | The id of our supermatter |
| warning_alert | The alert we send when we've reached warning_point |
| warning_point | The point at which we should start sending messeges about the damage to the engi channels. |
| zap_cutoff | The cutoff for a bolt jumping, grows with heat, lowers with higher mol count, |
| zap_icon | Tracks the bolt color we are using |
Used for changing icon states for diff base sprites
How much the bullets damage should be multiplied by when it is added to the internal variables
The last air sample's total molar count, will always be above or equal to 0
The common channel
An effect we show to admins and ghosts the percentage of delam we're at
The amount of damage we have currently
The damage we had before this cycle. Used to limit the damage we can take each cycle, and for safe_alert
When we pass this amount of damage we start shooting bolts
Affects the amount of damage and minimum point at which the sm takes heat damage
The alert we send when we've reached emergency_point
The point at which we start sending messages to the common channel
The engineering channel
The point at which we delam
A scaling value that affects the severity of explosions.
Are we exploding?
Determines the rate of positve change in gas comp values
The portion of the gasmix we're on that we should remove
Affects the power gain the sm experiances from heat
The amount of supermatters that have been created this round
How much hallucination should we produce per unit of power?
Boolean used for logging if we've been powered
Boolean used for logging if we've passed the emergency point
Used along with a global var to track if we can give out the sm sliver stealing objective
cooldown tracker for accent sounds
Time in 1/10th of seconds since the last sent warning
Takes the energy throwing things into the sm generates and slowly turns it into actual power
Used to increase or lessen the amount of damage the sm takes from heat based on molar counts.
Can it be moved?
Refered to as eer on the moniter. This value effects gas output, heat, damage, and radiation.
Disables power changes
Based on co2 percentage, slowly moves between 0 and 1. We use it to calc the powerloss_inhibitor
Uses powerloss_dynamic_scaling and combined_gas to lessen the effects of our powerloss functions
Disables the sm's proccessing totally.
Disables the production of gas, and pretty much any handling of it we do.
Our internal radio
The key our internal radio uses
Our "Shit is no longer fucked" message. We send it when damage is less then damage_archived
Our soundloop
Disables all methods of taking damage
The id of our supermatter
The alert we send when we've reached warning_point
The point at which we should start sending messeges about the damage to the engi channels.
The cutoff for a bolt jumping, grows with heat, lowers with higher mol count,
Tracks the bolt color we are using
Procs | |
| sun_update | Tell the controller to turn the solar panels |
|---|---|
Tell the controller to turn the solar panels
Vars | |
| needs_power | Does the quantum pad need power to work? |
|---|---|
Procs | |
| check_mob_teleportability | Checks if the mob is able to be teleported. |
Does the quantum pad need power to work?
Checks if the mob is able to be teleported.
Vars | |
| finished_recharging | Did we finish recharging the currently inserted item? |
|---|---|
Did we finish recharging the currently inserted item?
The explosive compressor machine used in anomaly core production.
+Uses the standard toxins/tank explosion scaling to compress raw anomaly cores into completed ones. The required explosion radius increases as more cores of that type are created.
Vars | |
| inserted_bomb | The TTV inserted in the machine. |
|---|---|
| inserted_core | The raw core inserted in the machine. |
| last_requirements_say | The last time we did say_requirements(), because someone will inevitably click spam this. |
Procs | |
| do_implosion | The ""explosion"" proc. |
| get_required_radius | Determines how much explosive power (last value, so light impact theoretical radius) is required to make a certain anomaly type. |
| say_requirements | Says (no, literally) the data of required explosive power for a certain anomaly type. |
The TTV inserted in the machine.
The raw core inserted in the machine.
The last time we did say_requirements(), because someone will inevitably click spam this.
The ""explosion"" proc.
Determines how much explosive power (last value, so light impact theoretical radius) is required to make a certain anomaly type.
+Returns null if the max amount has already been reached.
+Arguments:
+Says (no, literally) the data of required explosive power for a certain anomaly type.
Vars | |
| piles | Associated list of seeds, they are all weak refs. We check the len to see how many refs we have for each |
|---|---|
Procs | |
| add_seed | |
| generate_seed_string | Generate seed string |
Associated list of seeds, they are all weak refs. We check the len to see how many refs we have for each
Add Seeds Proc.
+Generate seed string
+Creates a string based of the traits of a seed. We use this string as a bucket for all +seeds that match as well as the key the ui uses to get the seed. We also use the key +for the data shown in the ui. Javascript parses this string to display
+Arguments:
+Vars | |
| max_n_of_items | What path boards used to construct it should build into when dropped. Needed so we don't accidentally have them build variants with items preloaded in them. |
|---|---|
Procs | |
| attackby | Item Adding |
| dispense | Really simple proc, just moves the object "O" into the hands of mob "M" if able, done so I could modify the proc a little for the organ fridge |
What path boards used to construct it should build into when dropped. Needed so we don't accidentally have them build variants with items preloaded in them.
Item Adding
Really simple proc, just moves the object "O" into the hands of mob "M" if able, done so I could modify the proc a little for the organ fridge
Status display which can show images and scrolling text.
Procs | |
| remove_messages | Remove both message objs and null the fields. +Don't call this in subclasses. |
|---|---|
| set_messages | Immediately change the display to the given two lines. |
| set_picture | Immediately change the display to the given picture. |
| update | Update the display and, if necessary, re-enable processing. |
| update_message | Create/update message overlay. +They must be handled as real objects for the animation to run. +Don't call this in subclasses. +Arguments: |
Remove both message objs and null the fields. +Don't call this in subclasses.
Immediately change the display to the given two lines.
Immediately change the display to the given picture.
Update the display and, if necessary, re-enable processing.
Create/update message overlay. +They must be handled as real objects for the animation to run. +Don't call this in subclasses. +Arguments:
+Pictograph display which the AI can use to emote.
Vars | |
| emotion_map | A mapping between AI_EMOTION_* string constants, which also double as user readable descriptions, and the name of the iconfile. |
|---|---|
A mapping between AI_EMOTION_* string constants, which also double as user readable descriptions, and the name of the iconfile.
Vars | |
| charge_rate | How fast it charges cells in a suit |
|---|---|
| mod_type | What type of MOD the unit starts with when spawned. |
| storage_type | What type of additional item the unit starts with when spawned. |
How fast it charges cells in a suit
What type of MOD the unit starts with when spawned.
What type of additional item the unit starts with when spawned.
Vars | |
| ailock | AI is unable to use this machine if set to TRUE |
|---|---|
| control_area | An area in which linked turrets are located, it can be an area name, path or nothing |
| enabled | Variable dictating if linked turrets are active and will shoot targets |
| lethal | Variable dictating if linked turrets will shoot lethal projectiles |
| locked | Variable dictating if the panel is locked, preventing changes to turret settings |
| shoot_cyborgs | Variable dictating if linked turrets will shoot cyborgs |
| turrets | List of all linked turrets |
AI is unable to use this machine if set to TRUE
An area in which linked turrets are located, it can be an area name, path or nothing
Variable dictating if linked turrets are active and will shoot targets
Variable dictating if linked turrets will shoot lethal projectiles
Variable dictating if the panel is locked, preventing changes to turret settings
Variable dictating if linked turrets will shoot cyborgs
List of all linked turrets
Captalism in the year 2525, everything in a vending machine, even love
Vars | |
| Radio | used for narcing on underages |
|---|---|
| active | Is the machine active (No sales pitches if off)! |
| age_restrictions | Whether our age check is currently functional |
| bill | Bills we accept? |
| canload_access_list | ID's that can load this vending machine wtih refills |
| coin | Coins that we accept? |
| contraband | List of products this machine sells when you hack it |
| cost_multiplier_per_dept | cost multiplier per department or access |
| default_price | Default price of items if not overridden |
| extended_inventory | can we access the hidden inventory? |
| extra_price | Default price of premium items if not overridden |
| free | Are the products inside free? |
| icon_deny | Icon to flash when user is denied a vend |
| icon_vend | Icon when vending an item to the user |
| input_display_header | Display header on the input view |
| last_reply | Last world tick we sent a vent reply |
| last_shopper | The ref of the last mob to shop with us |
| last_slogan | Last world tick we sent a slogan message out |
| light_mask | Name of lighting mask for the vending machine |
| loaded_items | how many items have been inserted in a vendor |
| onstation | Is this item on station or not |
| onstation_override | A variable to change on a per instance basis on the map that allows the instance to force cost and ID requirements |
| premium | List of premium products this machine sells |
| product_ads | String of small ad messages in the vending screen - random chance |
| product_slogans | String of slogans separated by semicolons, optional |
| products | List of products this machine sells |
| purchase_message_cooldown | Next world time to send a purchase message |
| scan_id | Are we checking the users ID |
| seconds_electrified | World ticks the machine is electified for |
| shoot_inventory | When this is TRUE, we fire items at customers! We're broken! |
| shoot_inventory_chance | How likely this is to happen (prob 100) per second |
| slogan_delay | How many ticks until we can send another |
| small_ads | Small ad messages in the vending screen - random chance of popping up whenever you open it |
| vend_ready | Are we ready to vend?? Is it time?? |
| vend_reply | Message sent post vend (Thank you for shopping!) |
Procs | |
| Initialize | Initialize the vending machine |
| build_inventory | Build the inventory of the vending machine from it's product and record lists |
| canLoadItem | Are we able to load the item passed in |
| compartmentLoadAccessCheck | Is the passed in user allowed to load this vending machines compartments |
| pre_throw | A callback called before an item is tossed out |
| refill_inventory | Refill our inventory from the passed in product list into the record list |
| restock | Refill a vending machine from a refill canister |
| shock | Shock the passed in user |
| speak | Speak the given message verbally |
| throw_impact | Crush the mob that the vending machine got thrown at |
| throw_item | Throw an item from our internal inventory out in front of us |
| tilt | Tilts ontop of the atom supplied, if crit is true some extra shit can happen. Returns TRUE if it dealt damage to something. |
| unbuild_inventory | Given a record list, go through and and return a list of type -> amount |
| update_canister | Set up a refill canister that matches this machines products |
used for narcing on underages
Is the machine active (No sales pitches if off)!
Whether our age check is currently functional
Bills we accept?
ID's that can load this vending machine wtih refills
Coins that we accept?
List of products this machine sells when you hack it
+form should be list(/type/path = amount, /type/path2 = amount2)
cost multiplier per department or access
Default price of items if not overridden
can we access the hidden inventory?
Default price of premium items if not overridden
Are the products inside free?
Icon to flash when user is denied a vend
Icon when vending an item to the user
Display header on the input view
Last world tick we sent a vent reply
The ref of the last mob to shop with us
Last world tick we sent a slogan message out
Name of lighting mask for the vending machine
how many items have been inserted in a vendor
Is this item on station or not
+if it doesn't originate from off-station during mapload, everything is free
A variable to change on a per instance basis on the map that allows the instance to force cost and ID requirements
List of premium products this machine sells
+form should be list(/type/path, /type/path2) as there is only ever one in stock
String of small ad messages in the vending screen - random chance
String of slogans separated by semicolons, optional
List of products this machine sells
+form should be list(/type/path = amount, /type/path2 = amount2)
Next world time to send a purchase message
Are we checking the users ID
World ticks the machine is electified for
When this is TRUE, we fire items at customers! We're broken!
How likely this is to happen (prob 100) per second
How many ticks until we can send another
Small ad messages in the vending screen - random chance of popping up whenever you open it
Are we ready to vend?? Is it time??
Message sent post vend (Thank you for shopping!)
Initialize the vending machine
+Builds the vending machine inventory, sets up slogans and other such misc work
+This also sets the onstation var to:
+Build the inventory of the vending machine from it's product and record lists
+This builds up a full set of /datum/data/vending_products from the product list of the vending machine type +Arguments:
+Are we able to load the item passed in
+Arguments:
+Is the passed in user allowed to load this vending machines compartments
+Arguments:
+A callback called before an item is tossed out
+Override this if you need to do any special case handling
+Arguments:
+Refill our inventory from the passed in product list into the record list
+Arguments:
+Refill a vending machine from a refill canister
+This takes the products from the refill canister and then fills the products,contraband and premium product categories
+Arguments:
+Shock the passed in user
+This checks we have power and that the passed in prob is passed, then generates some sparks +and calls electrocute_mob on the user
+Arguments:
+Speak the given message verbally
+Checks if the machine is powered and the message exists
+Arguments:
+Crush the mob that the vending machine got thrown at
Throw an item from our internal inventory out in front of us
+This is called when we are hacked, it selects a random product from the records that has an amount > 0 +This item is then created and tossed out in front of us with a visible message
Tilts ontop of the atom supplied, if crit is true some extra shit can happen. Returns TRUE if it dealt damage to something.
Given a record list, go through and and return a list of type -> amount
Set up a refill canister that matches this machines products
+This is used when the machine is deconstructed, so the items aren't "lost"
Vars | |
| base64_cache | Base64 cache of custom icons. |
|---|---|
| max_loaded_items | max number of items that the custom vendor can hold |
| private_a | where the money is sent |
Base64 cache of custom icons.
max number of items that the custom vendor can hold
where the money is sent
Kudzu Flower Bud
+A flower created by flowering kudzu which spawns a venus human trap after a certain amount of time has passed.
+A flower created by kudzu with the flowering mutation. Spawns a venus human trap after 2 minutes under normal circumstances. +Also spawns 4 vines going out in diagonal directions from the bud. Any living creature not aligned with plants is damaged by these vines. +Once it grows a venus human trap, the bud itself will destroy itself.
Vars | |
| growth_time | The amount of time it takes to create a venus human trap, in deciseconds |
|---|---|
Procs | |
| bear_fruit | Spawns a venus human trap, then qdels itself. |
The amount of time it takes to create a venus human trap, in deciseconds
Spawns a venus human trap, then qdels itself.
+Displays a message, spawns a human venus trap, then qdels itself.
Vars | |
| goldilocks | The mob who buckled to this bed second, to avoid other mobs getting pixel-shifted before he unbuckles. |
|---|---|
The mob who buckled to this bed second, to avoid other mobs getting pixel-shifted before he unbuckles.
Procs | |
| Destroy | obj/structure/bloodsucker/candelabrum/is_hot() // candle.dm |
|---|---|
obj/structure/bloodsucker/candelabrum/is_hot() // candle.dm
Vars | |
| books_to_load | How many random books to generate. |
|---|---|
| load_random_books | When enabled, books_to_load number of random books will be generated for this bookcase when first interacted with. |
| random_category | The category of books to pick from when populating random books. |
How many random books to generate.
When enabled, books_to_load number of random books will be generated for this bookcase when first interacted with.
The category of books to pick from when populating random books.
Procs | |
| shuttleRotate | Structure rotate procs |
|---|---|
Structure rotate procs
The portals Space Dragon summons to bring carp onto the station.
+The portals Space Dragon summons to bring carp onto the station. His main objective is to summon 3 of them and protect them from being destroyed. +The portals can summon sentient space carp in limited amounts. The portal also changes color based on whether or not a carp spawn is available. +Once it is fully charged, it becomes indestructible, and intermitently spawns non-sentient carp. It is still destroyed if Space Dragon dies.
Vars | |
| carp_interval | The interval for adding additional space carp spawns to the rift. |
|---|---|
| carp_stored | How many carp spawns it has available. |
| charge_state | Current charge state of the rift. |
| dragon | A reference to the Space Dragon that created it. |
| last_carp_inc | The time since an extra carp was added to the ghost role spawning pool. |
| max_charge | The maximum charge the rift can have. |
| time_charged | The amount of time the rift has charged for. |
Procs | |
| summon_carp | Used to create carp controlled by ghosts when the option is available. |
| update_check | Does a series of checks based on the portal's status. |
The interval for adding additional space carp spawns to the rift.
How many carp spawns it has available.
Current charge state of the rift.
A reference to the Space Dragon that created it.
The time since an extra carp was added to the ghost role spawning pool.
The maximum charge the rift can have.
The amount of time the rift has charged for.
Used to create carp controlled by ghosts when the option is available.
+Creates a carp for the ghost to control if we have a carp spawn available. +Gives them prompt to control a carp, and if our circumstances still allow if when they hit yes, spawn them in as a carp. +Also add them to the list of carps in Space Dragon's antgonist datum, so they'll be displayed as having assisted him on round end. +Arguments:
+Does a series of checks based on the portal's status.
+Performs a number of checks based on the current charge of the portal, and triggers various effects accordingly. +If the current charge is a multiple of carp_interval, add an extra carp spawn. +If we're halfway charged, announce to the crew our location in a CENTCOM announcement. +If we're fully charged, tell the crew we are, change our color to yellow, become invulnerable, and give Space Dragon the ability to make another rift, if he hasn't summoned 3 total.
Vars | |
| completion | statue completion from 0 to 1.0 |
|---|---|
| current_preset_type | Currently chosen preset statue type |
| current_target | The thing it will look like - Unmodified resulting statue appearance |
| greyscale_with_value_bump | HSV color filters parameters |
| target_appearance_with_filters | Greyscaled target with cutout filter |
Procs | |
| get_possible_statues | Returns a list of preset statues carvable from this block depending on the custom materials |
statue completion from 0 to 1.0
Currently chosen preset statue type
The thing it will look like - Unmodified resulting statue appearance
HSV color filters parameters
Greyscaled target with cutout filter
Returns a list of preset statues carvable from this block depending on the custom materials
Procs | |
| after_close | Proc to override for effects after closing a door |
|---|---|
| after_open | Proc to override for effects after opening a door |
| handle_lock_addition | cit specific |
Proc to override for effects after closing a door
Proc to override for effects after opening a door
cit specific
Crate for mail from CentCom.
Vars | |
| postmarked | if it'll show the nt mark on the crate |
|---|---|
Procs | |
| populate | Fills this mail crate with N pieces of mail, where N is the lower of the amount var passed, and the maximum capacity of this crate. If N is larger than the number of alive human players, the excess will be junkmail. |
if it'll show the nt mark on the crate
Fills this mail crate with N pieces of mail, where N is the lower of the amount var passed, and the maximum capacity of this crate. If N is larger than the number of alive human players, the excess will be junkmail.
Procs | |
| Initialize | Crate for mail that automatically depletes the economy subsystem's pending mail counter. |
|---|---|
Crate for mail that automatically depletes the economy subsystem's pending mail counter.
Vars | |
| buyer_account | Account of the person buying the crate if private purchasing. |
|---|---|
| department_account | Department of the person buying the crate if buying via the NIRN app. |
| department_purchase | Is the crate being bought by a person, or a budget card? |
| privacy_lock | Is the secure crate opened or closed? |
Account of the person buying the crate if private purchasing.
Department of the person buying the crate if buying via the NIRN app.
Is the crate being bought by a person, or a budget card?
Is the secure crate opened or closed?
Vars | |
| buyer_account | Account of the person buying the crate if private purchasing. |
|---|---|
| department_account | Department of the person buying the crate if buying via the NIRN app. |
| department_purchase | Is the crate being bought by a person, or a budget card? |
| privacy_lock | Is the secure crate opened or closed? |
Account of the person buying the crate if private purchasing.
Department of the person buying the crate if buying via the NIRN app.
Is the crate being bought by a person, or a budget card?
Is the secure crate opened or closed?
Vars | |
| pod_flags | List of bitflags for supply pods, see: code__DEFINES\obj_flags.dm |
|---|---|
List of bitflags for supply pods, see: code__DEFINES\obj_flags.dm
Vars | |
| alarm_manager | Represents a signel source of screaming when broken |
|---|---|
Procs | |
| trigger_alarm | Anti-theft alarm triggered when broken. |
Represents a signel source of screaming when broken
Anti-theft alarm triggered when broken.
Vars | |
| payments_acc | The Account which will receive payment for purchases. Set by the first ID to swipe the tray. |
|---|---|
| sale_price | The price of the item being sold. Altered by grab intent ID use. |
| viewing_ui | We're using the same trick as paper does in order to cache the image, and only load the UI when messed with. |
The Account which will receive payment for purchases. Set by the first ID to swipe the tray.
The price of the item being sold. Altered by grab intent ID use.
We're using the same trick as paper does in order to cache the image, and only load the UI when messed with.
Contains: +Industrial Feeding Tube
Vars | |
| attached | Who the tube is attached to |
|---|---|
| clogged | It's Glogged ! |
| output_dest | Where the tube tries to dump it's stuff into |
| pump_limit | How many items we can push per-pump. |
| pump_stuff | Stuff we're currently trying to pump out |
| pumping | Are we currently pumping? |
| welded | Is it welded down? |
Procs | |
| attach_tube | Attaches the tube to the target. dest defaults to the target, if dest isnt defined |
Who the tube is attached to
It's Glogged !
Where the tube tries to dump it's stuff into
How many items we can push per-pump.
Stuff we're currently trying to pump out
Are we currently pumping?
Is it welded down?
Attaches the tube to the target. dest defaults to the target, if dest isnt defined
Vars | |
| current_mass | How much mass this currently holds |
|---|---|
| in_use | Check to see if it is currently being used. |
| max_mass | Maximum amount of mass |
Procs | |
| devour | Proc that eats the active limb of the victim |
How much mass this currently holds
Check to see if it is currently being used.
Maximum amount of mass
Proc that eats the active limb of the victim
Energy net which ensnares prey until it is destroyed. Used by space ninjas.
+Energy net which keeps its target from moving until it is destroyed. Used to send +players to a holding area in which they could never leave, but such feature has since +been removed.
Vars | |
| affecting | The creature currently caught in the net |
|---|---|
The creature currently caught in the net
Vars | |
| single_use | Does the item delete itself after being "used?" |
|---|---|
Does the item delete itself after being "used?"
Vars | |
| virgin | This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact |
|---|---|
This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact
Vars | |
| virgin | This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact |
|---|---|
This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact
Vars | |
| mineAmount | Amount of the itemstack to drop |
|---|---|
| mineResult | Itemstack that is dropped when a rock is mined with a pickaxe |
Amount of the itemstack to drop
Itemstack that is dropped when a rock is mined with a pickaxe
Vars | |
| name | Unless more non-machine ayy structures made, it will stay in fluff. |
|---|---|
Unless more non-machine ayy structures made, it will stay in fluff.
Vars | |
| blacklisted_glowshroom_turfs | Turfs where the glowshroom cannot spread to |
|---|---|
| delay_decay | Time interval between glowshroom decay checks |
| delay_spread | Time interval between glowshroom "spreads" |
| floor | Boolean to indicate if the shroom is on the floor/wall |
| generation | Mushroom generation number |
| myseed | Internal seed of the glowshroom, stats are stored here |
| spreadIntoAdjacentChance | Chance to spread into adjacent tiles (0-100) |
Procs | |
| Decay | Causes the glowshroom to decay by decreasing its endurance. |
| Initialize | |
| Spread | Causes glowshroom spreading across the floor/walls. |
Turfs where the glowshroom cannot spread to
Time interval between glowshroom decay checks
Time interval between glowshroom "spreads"
Boolean to indicate if the shroom is on the floor/wall
Mushroom generation number
Internal seed of the glowshroom, stats are stored here
Chance to spread into adjacent tiles (0-100)
Causes the glowshroom to decay by decreasing its endurance.
+Arguments:
+Creates a new glowshroom structure.
+
+Arguments:
+Causes glowshroom spreading across the floor/walls.
Procs | |
| beforeShuttleMove | Structure move procs |
|---|---|
Structure move procs
Procs | |
| check_menu | check_menu: Checks if we are allowed to interact with a radial menu |
|---|---|
check_menu: Checks if we are allowed to interact with a radial menu
+Arguments:
+A basic turret that shoots at nearby mobs. Intended to be used for the legion megafauna.
Vars | |
| faction | Compared with the targeted mobs. If they have the faction, turret won't shoot. |
|---|---|
| initial_firing_time | Time until the tracer gets shot |
| projectile_type | What kind of projectile the actual damaging part should be. |
| shot_delay | How long it takes between shooting the tracer and the projectile. |
Procs | |
| fire | Called when attacking a target. Shoots a projectile at the turf underneath the target. |
| fire_beam | Called shot_delay after the turret shot the tracer. Shoots a projectile into the same direction. |
| set_up_shot | Handles an extremely basic AI |
Compared with the targeted mobs. If they have the faction, turret won't shoot.
Time until the tracer gets shot
What kind of projectile the actual damaging part should be.
How long it takes between shooting the tracer and the projectile.
Called when attacking a target. Shoots a projectile at the turf underneath the target.
Called shot_delay after the turret shot the tracer. Shoots a projectile into the same direction.
Handles an extremely basic AI
This is a loom. It's usually made out of wood and used to weave fabric like durathread or cotton into their respective cloth types.
Procs | |
| weave | Handles the weaving. |
|---|---|
Handles the weaving.
Vars | |
| notices | Current number of a pinned notices |
|---|---|
Procs | |
| remove_item | Removes an item from the notice board |
Current number of a pinned notices
Removes an item from the notice board
+Arguments:
+Vars | |
| ini_dir | Initial direction of the railing. |
|---|---|
Procs | |
| wrench_act | Implements behaviour that makes it possible to unanchor the railing. |
Initial direction of the railing.
Implements behaviour that makes it possible to unanchor the railing.
Vars | |
| current_tumbler_index | The index in the tumblers list of the tumbler dial position that needs to be hit |
|---|---|
| dial | The position the dial is pointing to |
| explosion_count | Tough, but breakable if explosion counts reaches set value |
| locked | Whether the safe is locked or not |
| maxspace | The maximum combined w_class of stuff in the safe |
| number_of_tumblers | The amount of tumblers that will be generated |
| open | Whether the safe is open or not |
| space | The combined w_class of everything in the safe |
| tumblers | The list of tumbler dial positions that need to be hit |
Procs | |
| check_broken | Checks if safe is considered in a broken state for force-opening the safe |
| check_unlocked | Called every dial turn to determine whether the safe should unlock or not. |
| notify_user | Called every dial turn to provide feedback if possible. |
The index in the tumblers list of the tumbler dial position that needs to be hit
The position the dial is pointing to
Tough, but breakable if explosion counts reaches set value
Whether the safe is locked or not
The maximum combined w_class of stuff in the safe
The amount of tumblers that will be generated
Whether the safe is open or not
The combined w_class of everything in the safe
The list of tumbler dial positions that need to be hit
Checks if safe is considered in a broken state for force-opening the safe
Called every dial turn to determine whether the safe should unlock or not.
Called every dial turn to provide feedback if possible.
Vars | |
| credits | How much credits do we currently have? |
|---|---|
| credits_per_fatness | How many credits are we going to reward per pound gained? |
| maximum_credits | What is the maximum ammount of credits that can be gained per person? |
| scanned_people | A list containing all of the people we've scanned and their maximum weight. |
| team_number | What is the current team number? |
How much credits do we currently have?
How many credits are we going to reward per pound gained?
What is the maximum ammount of credits that can be gained per person?
A list containing all of the people we've scanned and their maximum weight.
What is the current team number?
Vars | |
| current_canvas | Canvas we're currently displaying. |
|---|---|
| desc_with_canvas | Description set when canvas is added. |
Canvas we're currently displaying.
Description set when canvas is added.
Procs | |
| clear_rock | Clears rocks around the spawner when it is created |
|---|---|
| destroy_effect | Effects and messages created when the spawner is destroyed |
| drop_loot | Drops items after the spawner is destroyed |
Clears rocks around the spawner when it is created
Effects and messages created when the spawner is destroyed
Drops items after the spawner is destroyed
Vars | |
| abstract_type | Abstract root type |
|---|---|
| art_type | Art component subtype added to this statue |
| impressiveness | Beauty component mood modifier |
Abstract root type
Art component subtype added to this statue
Beauty component mood modifier
Vars | |
| content_ma | primary statue overlay |
|---|---|
primary statue overlay
Procs | |
| connected_floodfill | Gets all connected tables +Cardinals only |
|---|---|
Gets all connected tables +Cardinals only
Vars | |
| owner | Owner of the trap |
|---|---|
Procs | |
| set_owner | Proc that sets the owner |
Owner of the trap
Proc that sets the owner
Vars | |
| electrochromatic_id | Electrochromatic ID. Set the first character to ! to replace with a SSmapping generated pseudorandom obfuscated ID for mapping purposes. |
|---|---|
| electrochromatic_status | Electrochromatic status |
Electrochromatic ID. Set the first character to ! to replace with a SSmapping generated pseudorandom obfuscated ID for mapping purposes.
Electrochromatic status
Vars | |
| autogrant_actions_controller | Assoc list "[bitflag]" = list(typepaths) |
|---|---|
| autogrant_actions_passenger | Plain list of typepaths |
| canmove | Whether the vehicle is currently able to move |
| default_driver_move | Handle driver movement instead of letting something else do it like riding datums. |
| emulate_door_bumps | When bumping a door try to make occupants bump them to open them. |
| enclosed | Is the rider protected from bullets? assume no |
| inserted_key | The inserted key, needed on some vehicles to start the engine |
| key_type | If the driver needs a certain item in hand (or inserted, for vehicles) to drive this. For vehicles, this must be duplicated on their riding component subtype +[/datum/component/riding/var/keytype] variable because only a few specific checks are handled here with this var, and the majority of it is on the riding component +Eventually the remaining checks should be moved to the component and this var removed. |
| key_type_exact | Can subtypes of this key work |
| max_drivers | Maximum amount of drivers |
| mouse_pointer | Do we have a special mouse |
| occupant_actions | Assoc list mob = list(type = action datum assigned to mob) |
| occupants | mob = bitflags of their control level. |
| trailer | This vehicle will follow us when we move (like atrailer duh) |
Procs | |
| add_trailer | To add a trailer to the vehicle in a manner that allows safe qdels |
| generate_integrity_message | Returns a readable string of the vehicle's health for examining. Overridden by subtypes who want to be more verbose with their health messages. |
| remove_trailer | To remove a trailer from the vehicle in a manner that allows safe qdels |
Assoc list "[bitflag]" = list(typepaths)
Plain list of typepaths
Whether the vehicle is currently able to move
Handle driver movement instead of letting something else do it like riding datums.
When bumping a door try to make occupants bump them to open them.
Is the rider protected from bullets? assume no
The inserted key, needed on some vehicles to start the engine
If the driver needs a certain item in hand (or inserted, for vehicles) to drive this. For vehicles, this must be duplicated on their riding component subtype +[/datum/component/riding/var/keytype] variable because only a few specific checks are handled here with this var, and the majority of it is on the riding component +Eventually the remaining checks should be moved to the component and this var removed.
Can subtypes of this key work
Maximum amount of drivers
Do we have a special mouse
Assoc list mob = list(type = action datum assigned to mob)
mob = bitflags of their control level.
This vehicle will follow us when we move (like atrailer duh)
To add a trailer to the vehicle in a manner that allows safe qdels
Returns a readable string of the vehicle's health for examining. Overridden by subtypes who want to be more verbose with their health messages.
To remove a trailer from the vehicle in a manner that allows safe qdels
Vars | |
| board_icon | Stores the default icon state |
|---|---|
| board_item_type | The handheld item counterpart for the board |
| grinding | Whether the board is currently grinding |
| instability | Stamina drain multiplier |
| next_crash | Stores the time of the last crash plus a short cooldown, affects availability and outcome of certain actions |
Procs | |
| grind | Moves the vehicle forward and if it lands on a table, repeats |
Stores the default icon state
The handheld item counterpart for the board
Whether the board is currently grinding
Stamina drain multiplier
Stores the time of the last crash plus a short cooldown, affects availability and outcome of certain actions
Moves the vehicle forward and if it lands on a table, repeats
Vars | |
| cannonmode | Current status of the cannon, alternates between CLOWN_CANNON_INACTIVE, CLOWN_CANNON_BUSY and CLOWN_CANNON_READY |
|---|---|
| dice_cooldown_time | Cooldown time inbetween [/obj/vehicle/sealed/car/clowncar/proc/roll_the_dice()] usages |
| headlight_colors | list of headlight colors we use to pick through when we have party mode due to emag |
| thankscount | How many times kidnappers in the clown car said thanks |
Procs | |
| activate_cannon | Finalizes canon activation |
| cover_in_oil | Deploys oil when the clowncar moves in oil deploy mode |
| deactivate_cannon | Finalizes canon deactivation |
| fire_cannon_at | Fires the cannon where the user clicks |
| increment_thanks_counter | Increments the thanks counter every time someone thats been kidnapped thanks the driver |
| reset_icon | resets the icon and iconstate of the clowncar after it was set to singulo states |
| roll_the_dice | Plays a random funky effect +Only available while car is emagged +Possible effects: |
| stop_dropping_oil | Stops dropping oil after the time has run up |
| toggle_cannon | Toggles the on and off state of the clown cannon that shoots random kidnapped people |
Current status of the cannon, alternates between CLOWN_CANNON_INACTIVE, CLOWN_CANNON_BUSY and CLOWN_CANNON_READY
Cooldown time inbetween [/obj/vehicle/sealed/car/clowncar/proc/roll_the_dice()] usages
list of headlight colors we use to pick through when we have party mode due to emag
How many times kidnappers in the clown car said thanks
Finalizes canon activation
Deploys oil when the clowncar moves in oil deploy mode
Finalizes canon deactivation
Fires the cannon where the user clicks
Increments the thanks counter every time someone thats been kidnapped thanks the driver
resets the icon and iconstate of the clowncar after it was set to singulo states
Plays a random funky effect +Only available while car is emagged +Possible effects:
+Stops dropping oil after the time has run up
Toggles the on and off state of the clown cannon that shoots random kidnapped people
WELCOME TO MECHA.DM, ENJOY YOUR STAY
+Mechs are now (finally) vehicles, this means you can make them multicrew +They can also grant select ability buttons based on occupant bitflags
+Movement is handled through vehicle_move() which is called by relaymove +Clicking is done by way of signals registering to the entering mob +NOTE: MMIS are NOT mobs but instead contain a brain that is, so you need special checks +AI also has special checks becaus it gets in and out of the mech differently +Always call remove_occupant(mob) when leaving the mech so the mob is removed properly
+For multi-crew, you need to set how the occupants recieve ability bitflags corresponding to their status on the vehicle(i.e: driver, gunner etc) +Abilities can then be set to only apply for certain bitflags and are assigned as such automatically
+Clicks are wither translated into mech_melee_attack (see mech_melee_attack.dm) +Or are used to call action() on equipped gear +Cooldown for gear is on the mech because exploits
Vars | |
| active_thrusters | /Action vars +Ref to any active thrusters we might have |
|---|---|
| allow_diagonal_movement | Whether this mech is allowed to move diagonally |
| bumpsmash | Whether or not the mech destroys walls by running into it. |
| cabin_air | Internal air mix datum |
| capacitor | Keeps track of the mech's capacitor |
| cell | Keeps track of the mech's cell |
| completely_disabled | Just stop the mech from doing anything |
| connected_port | The connected air port, if we have one |
| construction_state | Whether the mechs maintenance protocols are on or off |
| defense_mode | Bool for energy shield on/off |
| deflect_chance | chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act. |
| destruction_sleep_duration | Time you get slept for if you get forcible ejected by the mech exploding |
| dir_in | What direction will the mech face when entered/powered on? Defaults to South. |
| dna_lock | Stores the DNA enzymes of a carbon so tht only they can access the mech |
| equipment_disabled | if we cant use our equipment(such as due to EMP) |
| exit_delay | TIme taken to leave the mech |
| facing_modifiers | Modifiers for directional armor |
| internal_damage | Bitflags for internal damage |
| internal_damage_threshold | health percentage below which internal damage is possible |
| internal_tank | The internal air tank obj of the mech |
| internal_tank_valve | The setting of the valve on the internal tank |
| internals_req_access | required access to change internal components |
| is_currently_ejecting | Currently ejecting, and unable to do things |
| lavaland_only | Bool for whether this mech can only be used on lavaland |
| leg_overload_coeff | Energy use modifier for leg overload |
| leg_overload_mode | Bool for leg overload on/off |
| lights_power | How powerful our lights are |
| max_equip | Maximum amount of equipment we can have |
| mecha_flags | Contains flags for the mecha |
| melee_cooldown | Cooldown duration between melee punches |
| melee_energy_drain | How much energy we drain each time we mechpunch someone |
| normal_step_energy_drain | How much energy the mech will consume each time it moves. This variable is a backup for when leg actuators affect the energy drain. |
| operation_req_access | required access level for mecha operation |
| overload_step_energy_drain_min | The minimum amount of energy charge consumed by leg overload |
| phase_state | icon_state for flick() when phazing |
| phasing | Bool for if the mech is currently phasing |
| phasing_energy_drain | Power we use every time we phaze through something |
| radio | Special version of the radio, which is unsellable |
| scanmod | Keeps track of the mech's scanning module |
| selected | Current active equipment |
| silicon_icon_state | Whether outside viewers can see the pilot inside +In case theres a different iconstate for AI/MMI pilot(currently only used for ripley) |
| smashcooldown | Cooldown length between bumpsmashes |
| smoke_charges | Remaining smoke charges |
| smoke_cooldown | Cooldown between using smoke |
| spark_system | Spark effects are handled by this datum |
| step_energy_drain | How much energy the mech will consume each time it moves. this is the current active energy consumed |
| step_silent | Whether our steps are silent, for example in zero-G |
| stepsound | Sound played when the mech moves |
| strafe | Wether we are strafing |
| turnsound | Sound played when the mech walks |
| use_internal_tank | ////////ATMOS +Whether we are currrently drawing from the internal tank |
| wreckage | Typepath for the wreckage it spawns when destroyed |
Procs | |
| Topic | Topic |
| add_airtank | Helpers |
| add_capacitor | Adds a capacitor, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this. |
| add_cell | Adds a cell, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this. |
| add_scanmod | Adds a scanning module, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this. |
| aimob_enter_mech | Handles an actual AI (simple_animal mecha pilot) entering the mech |
| aimob_exit_mech | Handles an actual AI (simple_animal mecha pilot) exiting the mech |
| ammo_resupply | Ammo stuff |
| attack_ai | AI piloting |
| check_for_internal_damage | Internal damage |
| generate_action_type | MECHA ACTIONS |
| get_actions | Returns HTML for mech actions. Ideally, this proc would be empty for the base mecha. Segmented for easy refactoring. |
| get_commands | HTML for commands. |
| get_equipment_list | HTML for list of equipment. |
| get_stats_html | Rendering stats window |
| get_stats_part | Returns the status of the mech. |
| has_charge | Power stuff |
| on_mouseclick | Action processing |
| operation_allowed | Access stuff |
| play_stepsound | ///// Movement procs //////// |
| remove_air | Atmospheric stuff |
| report_internal_damage | HTML for internal damage. |
| stationary_repair | Repairs internal damage if the mech hasn't moved. |
/Action vars +Ref to any active thrusters we might have
Whether this mech is allowed to move diagonally
Whether or not the mech destroys walls by running into it.
Internal air mix datum
Keeps track of the mech's capacitor
Keeps track of the mech's cell
Just stop the mech from doing anything
The connected air port, if we have one
Whether the mechs maintenance protocols are on or off
Bool for energy shield on/off
chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
Time you get slept for if you get forcible ejected by the mech exploding
What direction will the mech face when entered/powered on? Defaults to South.
Stores the DNA enzymes of a carbon so tht only they can access the mech
if we cant use our equipment(such as due to EMP)
TIme taken to leave the mech
Modifiers for directional armor
Bitflags for internal damage
health percentage below which internal damage is possible
The internal air tank obj of the mech
The setting of the valve on the internal tank
required access to change internal components
Currently ejecting, and unable to do things
Bool for whether this mech can only be used on lavaland
Energy use modifier for leg overload
Bool for leg overload on/off
How powerful our lights are
Maximum amount of equipment we can have
Contains flags for the mecha
Cooldown duration between melee punches
How much energy we drain each time we mechpunch someone
How much energy the mech will consume each time it moves. This variable is a backup for when leg actuators affect the energy drain.
required access level for mecha operation
The minimum amount of energy charge consumed by leg overload
icon_state for flick() when phazing
Bool for if the mech is currently phasing
Power we use every time we phaze through something
Special version of the radio, which is unsellable
Keeps track of the mech's scanning module
Current active equipment
Whether outside viewers can see the pilot inside +In case theres a different iconstate for AI/MMI pilot(currently only used for ripley)
Cooldown length between bumpsmashes
Remaining smoke charges
Cooldown between using smoke
Spark effects are handled by this datum
How much energy the mech will consume each time it moves. this is the current active energy consumed
Whether our steps are silent, for example in zero-G
Sound played when the mech moves
Wether we are strafing
Sound played when the mech walks
////////ATMOS +Whether we are currrently drawing from the internal tank
Typepath for the wreckage it spawns when destroyed
Topic
Helpers
Adds a capacitor, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
Adds a cell, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
Adds a scanning module, for use in Map-spawned mechs, Nuke Ops mechs, and admin-spawned mechs. Mechs built by hand will replace this.
Handles an actual AI (simple_animal mecha pilot) entering the mech
Handles an actual AI (simple_animal mecha pilot) exiting the mech
Ammo stuff
AI piloting
Internal damage
MECHA ACTIONS
Returns HTML for mech actions. Ideally, this proc would be empty for the base mecha. Segmented for easy refactoring.
HTML for commands.
HTML for list of equipment.
Rendering stats window
Returns the status of the mech.
Power stuff
Action processing
Access stuff
///// Movement procs ////////
+Plays the mech step sound effect. Split from movement procs so that other mechs (HONK) can override this one specific part.
Atmospheric stuff
HTML for internal damage.
Repairs internal damage if the mech hasn't moved.
Procs | |
| defense_check | *Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield. +Expects a turf. Returns true if the attack should be blocked, false if not. |
|---|---|
| relay | Relays the signal from the action button to the shield, and creates a new shield if the old one is MIA. |
*Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield. +Expects a turf. Returns true if the attack should be blocked, false if not.
Relays the signal from the action button to the shield, and creates a new shield if the old one is MIA.
Procs | |
| collect_ore | Handles collecting ore. |
|---|---|
Handles collecting ore.
+Checks for a hydraulic clamp or ore box manager and if it finds an ore box inside them puts ore in the ore box.
Vars | |
| cargo | List of all things in Ripley's Cargo Compartment |
|---|---|
| cargo_capacity | How much things Ripley can carry in their Cargo Compartment |
| fast_pressure_step_in | How fast the mech is in low pressure |
| hides | Amount of Goliath hides attached to the mech |
| slow_pressure_step_in | How fast the mech is in normal pressure |
Procs | |
| update_pressure | Makes the mecha go faster and halves the mecha drill cooldown if in Lavaland pressure. |
List of all things in Ripley's Cargo Compartment
How much things Ripley can carry in their Cargo Compartment
How fast the mech is in low pressure
Amount of Goliath hides attached to the mech
How fast the mech is in normal pressure
Makes the mecha go faster and halves the mecha drill cooldown if in Lavaland pressure.
+Checks for Lavaland pressure, if that works out the mech's speed is equal to fast_pressure_step_in and the cooldown for the mecha drill is halved. If not it uses slow_pressure_step_in and drill cooldown is normal.
Represents a proc or verb path.
+Despite having no DM-defined static type, proc paths have some variables,
+listed below. These are not modifiable, but for a given procpath P,
+new P(null, "Name", "Desc") can be used to create a new procpath with the
+same code but new name and desc values. The other variables cannot be
+changed in this way.
This type exists only to act as an annotation, providing reasonable static
+typing for procpaths. Previously, types like /atom/verb were used, with
+the name and desc vars of /atom thus being accessible. Proc and verb
+paths will fail istype and ispath checks against /procpath.
Vars | |
| category | The category or tab the verb will appear in. |
|---|---|
| desc | The verb's help text or description. |
| hidden | Whether or not the verb appears in statpanel and commandbar when you press space |
| invisibility | Only clients/mobs with see_invisibility higher can use the verb. |
| name | A text string of the verb's name. |
The category or tab the verb will appear in.
The verb's help text or description.
Whether or not the verb appears in statpanel and commandbar when you press space
Only clients/mobs with see_invisibility higher can use the verb.
A text string of the verb's name.
Any floor or wall. What makes up the station and the rest of the map.
Procs | |
| Initialize | Turf Initialize |
|---|---|
| LinkBlockedWithAccess | For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags |
| consider_pressure_difference | SPACEWIND |
| fromShuttleMove | Base procs |
| process_cell | SIMULATION |
| reachableAdjacentTurfs | Returns adjacent turfs to this turf that are reachable, in all cardinal directions |
Turf Initialize
+Doesn't call parent, see /atom/proc/Initialize
For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags
+Arguments:
+SPACEWIND
Base procs
SIMULATION
Returns adjacent turfs to this turf that are reachable, in all cardinal directions
+Arguments:
+Vars | |
| yelling_dampen | how much of inbound yelling to dampen |
|---|---|
| yelling_resistance | How much we block yelling |
how much of inbound yelling to dampen
How much we block yelling
Procs | |
| handle_generic_titlescreen_sizes | helper proc that will center the screen if the icon is changed to a generic width, to make admins have to fudge around with pixel_x less. returns null |
|---|---|
helper proc that will center the screen if the icon is changed to a generic width, to make admins have to fudge around with pixel_x less. returns null
Mineral deposits
Procs | |
| shuttleRotate | Turf rotate procs |
|---|---|
Turf rotate procs
Vars | |
| explosion_power_minimum_chance_dismantle | Explosion power to potentially dismantle the wall |
|---|---|
| explosion_power_to_dismantle | Explosion power to dismantle the wall |
| explosion_power_to_scrape | Explosion power to disintegrate the wall |
Procs | |
| hulk_recoil | Deals damage back to the hulk's arm. |
Explosion power to potentially dismantle the wall
Explosion power to dismantle the wall
Explosion power to disintegrate the wall
Deals damage back to the hulk's arm.
+When a hulk manages to break a wall using their hulk smash, this deals back damage to the arm used. +This is in its own proc just to be easily overridden by other wall types. Default allows for three +smashed walls per arm. Also, we use CANT_WOUND here because wounds are random. Wounds are applied +by hulk code based on arm damage and checked when we call break_an_arm(). +Arguments: +*arg1 is the arm to deal damage to. +*arg2 is the hulk
Vars | |
| dirt_buildup_allowed | Dirtyness system, cit specific. +Does dirt buildup happen on us? |
|---|---|
| dirt_spawn_threshold | Dirt level to spawn dirt. Null to use config. |
| dirtyness | Dirt level. |
Procs | |
| Assimilate_Air | Assimilate Air |
| assume_air | GAS MIXTURE PROCS |
| update_visuals | GAS OVERLAYS |
Dirtyness system, cit specific. +Does dirt buildup happen on us?
Dirt level to spawn dirt. Null to use config.
Dirt level.
Assimilate Air
GAS MIXTURE PROCS
GAS OVERLAYS
Vars | |
| explosion_power_break_tile | Minimum explosion power to break tile |
|---|---|
| explosion_power_break_turf | Minimum explosion power to break turf |
| explosion_power_break_turf_bonus | Starting from here, +20% chance to break turf. |
| explosion_power_minimum_chance_break | Starting from here, there's a chance for this to break |
| explosion_power_protect_shielded | Shielded turfs are completely protected from anything under this |
| explosion_power_turf_scrape | Minimum explosion power to scrape away the floor |
Minimum explosion power to break tile
Minimum explosion power to break turf
Starting from here, +20% chance to break turf.
Starting from here, there's a chance for this to break
Shielded turfs are completely protected from anything under this
Minimum explosion power to scrape away the floor
They show what's underneath their catwalk flooring (pipes and the like) +you can crowbar it to interact with the underneath stuff without destroying the tile... +unless you want to!
Procs | |
| crowbar_act | n(omegalul) |
|---|---|
n(omegalul)
Vars | |
| fat_to_add | How much fatness is added to the user upon crossing? |
|---|---|
How much fatness is added to the user upon crossing?
Asteroid
Vars | |
| digResult | Itemstack to drop when dug by a shovel |
|---|---|
| dug | Whether the turf has been dug or not |
| environment_type | Environment type for the turf |
| floor_variance | Probability floor has a different icon state |
| postdig_icon_change | Whether to change the turf's icon_state to "[base_icon_state]_dug" when its dugged up |
| turf_type | Base turf type to be created by the tunnel |
Procs | |
| can_dig | If the user can dig the turf |
Itemstack to drop when dug by a shovel
Whether the turf has been dug or not
Environment type for the turf
Probability floor has a different icon state
Whether to change the turf's icon_state to "[base_icon_state]_dug" when its dugged up
Base turf type to be created by the tunnel
If the user can dig the turf
LAVA
Vars | |
| immunity_resistance_flags | objects with these flags won't burn. |
|---|---|
| immunity_trait | mobs with this trait won't burn. |
| lava_damage | How much fire damage we deal to living mobs stepping on us |
| lava_firestacks | How many firestacks we add to living mobs stepping on us |
| temperature_damage | How much temperature we expose objects with |
Procs | |
| burn_stuff | Proc that sets on fire something or everything on the turf that's not immune to lava. Returns TRUE to make the turf start processing. |
objects with these flags won't burn.
mobs with this trait won't burn.
How much fire damage we deal to living mobs stepping on us
How many firestacks we add to living mobs stepping on us
How much temperature we expose objects with
Proc that sets on fire something or everything on the turf that's not immune to lava. Returns TRUE to make the turf start processing.
Vars | |
| drill_below | If true mineral turfs below this openspace turf will be mined automatically |
|---|---|
| protect_ruin | Replaces itself with replacement_turf if the turf below this one is in a no ruins allowed area (usually ruins themselves) |
If true mineral turfs below this openspace turf will be mined automatically
Replaces itself with replacement_turf if the turf below this one is in a no ruins allowed area (usually ruins themselves)
Procs | |
| Initialize | Space Initialize |
|---|---|
Space Initialize
+Doesn't call parent, see /atom/proc/Initialize
Procs | |
| show_bottom_level | Called when there is no real turf below this turf |
|---|---|
Called when there is no real turf below this turf
Procs | |
| show_bottom_level | No bottom level for openspace. |
|---|---|
No bottom level for openspace.
Turns whoever enters into a mob
+If mob is chosen, turns the person into a random animal type +Once the spring is used, it cannot be used by the same mind ever again +After usage, teleports the user back to a random safe turf (so mobs are not killed by ice moon atmosphere)
Procs | |
| remove_from_cursed | Deletes minds from the cursed minds list after their deletion |
|---|---|
Deletes minds from the cursed minds list after their deletion
Two possibilities exist: either we are alone in the Universe or we are not. Both are equally terrifying. ~ Arthur C. Clarke
+The byond world object stores some basic byond level config, and has a few hub specific procs for managing hub visiblity
+The world /New() is the root of where a round itself begins
Procs | |
| ImmediateInvokeAsync | Immediately Invoke proctocall on thingtocall, with waitfor set to false |
|---|---|
| refresh_atmos_grid | Auxtools atmos |
| send_cross_comms | Sends a message to a given cross comms server by name (by name for security). |
Immediately Invoke proctocall on thingtocall, with waitfor set to false
+Arguments:
+Auxtools atmos
Sends a message to a given cross comms server by name (by name for security).