655 Commits

Author SHA1 Message Date
VMSolidus a67a6ae94a Various Null Access Fixes (#22730)
<img width="1420" height="776" alt="image"
src="https://github.com/user-attachments/assets/d33c4ce2-9c5b-48c3-ac8b-5edfee51c7e0"
/>

Just a few fixes for some various runtime errors and two hard del
triggers on the Sentry logs.
2026-06-19 17:57:37 +00:00
Casper3667 7a99813dd0 The Case Dossier program (#22703)
This adds the case dossier program. A program intended for investigators
to use for their cases, with the ability to record evidence, photos,
documents, people and their notes on a case. The rest of security is
able to view cases in the program, but not edit them.
Additionally, the forensic skill was added to evidence bags and photos,
allowing a person to add the time, place and the person using them,
mainly intended to be used with the case dossier program.
Fibers and prints can now be gathered from objects inside evidence bags,
to avoid contamination.
Also fixed some bugs with taking photos of certain objects, such as
airlocks.


https://github.com/user-attachments/assets/92a880e9-9032-46d4-88c0-43d45b64f979
2026-06-19 04:36:07 +00:00
Batrachophreno 4ecb0bc21c Repath obj/machinery to obj/structure/machinery [MDB Ignore] (#22500)
Repaths obj/machinery to obj/structure/machinery. **Note for
reviewers:** the only meaningful changed code exists within
**code/game/objects/structures.dm** and
**code/game/objects/structures/_machinery.dm**, largely concerning
damage procs. With the exception of moving airlock defines to their own
file, ALL OTHER CHANGES ARE STRICTLY PATH CHANGES.

Objects, _categorically_, are largely divided between those you can hold
in your hand/inventory and those you can't. Machinery objects are
already subtypes of Structures behaviorally, this PR just makes their
pathing reflect that, and allows for future work (tool actions, more
health/destruction functionality) to be developed without unnecessary
code duplication.

I have tested this PR by loading up the Horizon and dismantling various
machines and structures with tools, shooting guns of various types
throughout the ship, and detonating a bunch of explosions throughout the
ship.
2026-05-26 19:35:48 +00:00
runecap 052c9a0d53 Commune can send popups of paper & photo contents (#22295)
Commune can now send snapshot popups of paper & photo contents to
targets, similar to how Show-Held-Item can let others see the items'
contents. This was originally planned for the initial PR and only didn't
make it in because I didn't know how to get the functionality. There's
more unique psi-sensitivity interactions in this.

There is a 45% chance for psi-deaf targets to even get the photo popup.
Photo scribbles fittingly appear scrambled to the psi-deaf.
<img width="969" height="232" alt="image"
src="https://github.com/user-attachments/assets/84105c37-6c1d-4da2-83bb-738ce6651977"
/>

On the chance psi-deaf even get the photo popup, there is a 60% chance
the photo will be in greyscale.
<img width="476" height="195" alt="image"
src="https://github.com/user-attachments/assets/030407b7-ce51-4b20-a1e2-6eb93fb21be7"
/>


Psi-sensitive targets receiving a paper popup will have it translated
based on what the sender understands. This is a fun form of translation
because it's possible for the target to _not_ understand a written
language they actually know simply because the sender doesn't.

<img width="1411" height="656" alt="image"
src="https://github.com/user-attachments/assets/9d4fe196-2593-4535-b062-bbdfa8e1e819"
/>


There is also a QoL adjacency check for writing scribbles on photos now
because it bugged me I needed to use both hands while testing.

NEW: If a psi-deaf target doesn't get it in greyscale, they may also get
photos with randomized colors

<img width="443" height="444" alt="image"
src="https://github.com/user-attachments/assets/f9a1f1c0-a6af-4d1e-95e3-260231d57643"
/>
 
This can seriously reframe some photos. Lots of fun with possible
misunderstandings. Both the above and below are the same photo with
Skrell blood, but the above looks like vaurca blood while the below one
doesn't look to even have blood at first glance.
 
<img width="444" height="447" alt="image"
src="https://github.com/user-attachments/assets/166b40f2-6ed7-49af-95e1-989ffbb69e60"
/>

---------

Signed-off-by: runecap <43975590+runecap@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
2026-05-15 17:13:33 +00:00
FabianK3 1829b480ae Fix persistent papers text insertion (#22458) 2026-05-14 00:41:15 +02:00
VMSolidus 8df12c8e29 Even More Misc HardDels (#22299)
Just a few more misc hard dels I found from the logs today. Not counting
the event round which inexplicably had hundreds of them.
2026-04-20 11:31:39 +00:00
Matt Atlas d5931c5ffe Adds an universal object health system. (#21266)
https://www.youtube.com/watch?v=ZpUYjpKg9KY

As per title. The goal is to add health to most objects in the game and
thus allow them to be dynamically destructible, while also avoiding
shitcode like each structure having its own snowflake health update
proc.

---------

Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
2026-04-16 23:22:08 +00:00
VMSolidus 2012165f72 CCIA Universal Translator (#22192)
closes #22082

This PR makes it so that reading faxes via the admin commands bypasses
the language system, effectively giving Admins and CCIA a universal
translator for faxes.

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
2026-04-11 13:13:51 +00:00
FabianK3 aff736cda2 Persistence code refactoring (#22044)
# Summary

This PR refactores code and structure of the current persistence
subsystem, in preparation for Persistency: Circles, Squares and
Triangles.

This should not contain any user facing changes.

~~This PR is based of branch #21925 and **needs** to be merged in order.
The files changed display will be meaningless until then.~~ *Done.*

## Changes

- Split subsystem in partial files.
- Refactored proc names, added "persistentObject" format for current
code.
- Renamed SQL table.
- Refactored logging and call hiearachy.
- Fix CI labeler adding DB label on non-SQL files.
2026-03-24 19:53:37 +01:00
Greenjoe12345 108e02dbf7 Adds Twin Suns and Raskara symbols to paperwork (#21966)
Adds the Twin Suns and Raskara cult symbols to paperwork ingame
<img width="447" height="539" alt="image"
src="https://github.com/user-attachments/assets/359ad815-b7dd-44c5-af0d-f495b47bbbbb"
/>


<img width="455" height="533" alt="image"
src="https://github.com/user-attachments/assets/70b839c1-a00c-4fe7-adc3-238ebca8b253"
/>


use [twinsuns] and [raskara_sigil] to draw them, with _small appended in
the brackets to draw the small versions


| Path | Original Author | License |
| All added images | Alberyk | Permission to use given via discord |
<img width="779" height="224" alt="image"
src="https://github.com/user-attachments/assets/acb99c2c-11c6-4f9e-a707-8ec63b0b274e"
/>
2026-03-07 08:36:21 +00:00
CatsinHD 9be4bde7db Stickynotes bugfix (#21887)
A handful of bugfixes covering stuff I missed in the original
stickynotes PR.
- Stickynotes can now interact with machinery, such as disposals or the
papershredder.
- - Turns out that after attack still has priority over interacting with
machines. You learn something every PR.
- Crumpled stickynotes can no longer be attached like a normal
stickynote. They can also no longer be written on.
- - As part of this, paper now uses a variable to track if it's
crumpled. Before, it would just check the icon_state.
- Crumpled stickynotes now use the crumpled sprite when being shredded.
Before it was just a normal paper sprite.
2026-02-19 03:37:04 +00:00
Batrachophreno 8111a8489b Restore many missing inhand sprites for items, add/port others (#21831)
Many, many, many items have inhand sprites in their .dmis but for
whatever reasons do not display them in-game. This PR:

1. Updates many item definitions to point to their already-existing
inhands correctly. This consists largely of held tools, but also gas
tanks and jetpacks mounted in the suit storage slot.

2. Adds a few codersprites made by me for objects with either missing
inhands or poorly matching mishands (IE, the tape recorder, which has a
black case, reused the white inhand sprites of the health analyzer). The
new sprites are modified or recolored variations of other inhand sprites
from our repo, except for circuitboards which are new.
<img width="444" height="400" alt="image"
src="https://github.com/user-attachments/assets/7f107b9a-fe24-4e31-8f16-4d34768ee117"
/>


3. Adds inhand sprites for Inflatables and Inflatable Boxes made by
Tomixcomics.
<img width="424" height="101" alt="image"
src="https://github.com/user-attachments/assets/434107c4-8577-49a2-a58e-d6b014c03933"
/>

4. Ports inhand sprites for the Hydraulic Rescue Tool from tg's Jaws of
Life.
<img width="224" height="94" alt="Screenshot 2026-02-07 172931"
src="https://github.com/user-attachments/assets/070c7956-f6a8-4fb5-870f-10c64afcc8b3"
/>

5. Some additional cleanup while in the area. The 'analyzer' has been
renamed the 'gas analyzer' to be consistent with the other analyzer
objects, standardized icon_state naming conventions where I saw
oddballs, updated code docs to use DMDocs when in the area, etc.

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:

| Path | Original Author | License |
| --- | --- | --- |
| icons/obj/item/hydraulic_rescue_tool.dmi | [SomeAngryMiner (bee
station)](https://github.com/BeeStation/BeeStation-Hornet/pull/2487),
[maxymax
(/tg/station)](https://github.com/tgstation/tgstation/pull/58616) |
CC-BY-SA |
| icons/obj/item/inflatables.dmi |
[Tomixcomics](https://github.com/tomixcomics) | CC-BY-SA |
2026-02-17 17:51:22 +00:00
CatsinHD 7f664eb1eb Stickynotes, Notepads, and Receipts. Some clerical additions (#21775)
Ports stickynotes from bay. They can be stuck to most surfaces, but have
a much smaller character limit. Pads have been placed across the Horizon
and can be ordered from Operations.

Receipt paper and notepad paper was added for visual quality of life.
Point of Sales now use receipt paper where applicable.

Sprites were either created by myself, or modifications of baystation
sprites from this PR:
https://github.com/Baystation12/Baystation12/pull/23109

---------

Signed-off-by: CatsinHD <31459154+CatsinHD@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: FabianK3 <21039694+FabianK3@users.noreply.github.com>
Co-authored-by: Wildkins <john.wildkins@gmail.com>
2026-02-17 15:51:57 +00:00
VMSolidus a1dda72a1c Records Computer Tweaks (#21840)
I got annoyed one too many rounds in a row that I had to print the
medical records to get the medical records, and did not know until
writing this PR that you have to click where it says "medical" to view
said records. So I have tweaked a bunch of things about the records, so
that they now automatically open to the appropriate tab matching their
records type, EG Medical Records opens by default to Medical Records.

<img width="903" height="661" alt="image"
src="https://github.com/user-attachments/assets/abea1c4b-c78d-4716-ada5-13a100a3316e"
/>

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: Casper3667 <8396443+Casper3667@users.noreply.github.com>
2026-02-17 15:40:22 +00:00
Casper3667 d0da59a72e Fixes journals, quik-pay and credit symbol use (#21844)
Three for one.

- The ability to write in journals held in ones hand was restored.
- The quik-pay quick-input now works properly.
- The credit symbol use was standardised to use 5电 and inserted into a
few places where it used credit instead.
2026-02-11 23:58:45 +00:00
Fyni f6e4c08fcb The Eye Opens - Part 1 (#21790)
- Add new flags for the Outer Eyes. Only available to mappers, ST and
modmins.
- Add new paperwork logo for the Outer Eyes. Available to anyone, if you
want to be scrawling random unknown icons onto your SCC paperwork.

---------

Signed-off-by: Fyni <itsfyni@gmail.com>
2026-02-06 19:57:01 +00:00
Cody Brittain 3f62424312 [MDB Ignore] [IDB Ignore] Kills off /obj/item/device (#21774)
This has zero reason to exist in our code base. We have no procs or
variables tied to this. I removed it to make future modifications
cleaner.

---------

Signed-off-by: Cody Brittain <1779662+Generalcamo@users.noreply.github.com>
2026-02-01 05:14:26 +00:00
Batrachophreno 5277251959 Tool behaviors port (#21663)
For a robust crafting system, I need a new materials framework.
For a new materials framework, I need to clean up reagents.
To clean up reagents, I need to pare down foods from reagent holders.
To pare down foods from reagent holders, I need to port edibility
components.
To port edibility components, I need to port processing components.
To port processing components, I need to port tool behaviors.

This is all back-end code, no new features or functionality from this.
2026-01-27 08:44:49 +00:00
CatsinHD 5561356136 Winter Quest (#21721)
Adds the Winter Quest rulebook as a item in the Toy section of the
loadout. It is not species restricted.

Text implementation is a bit cumbersome. If it is possible to pull from
a txt file onto paper then changes can be made to do so. Otherwise,
based on the implementation of the ZAT instruction file.

A minor change, but a variable for the journal has been added to check
for closed overlays. Added for if future journal-like books are added
that do not use the default journal overlay.

Sprite made by me.

---------

Signed-off-by: CatsinHD <31459154+CatsinHD@users.noreply.github.com>
Co-authored-by: Cody Brittain <1779662+Generalcamo@users.noreply.github.com>
Co-authored-by: Casper3667 <8396443+Casper3667@users.noreply.github.com>
2026-01-25 18:58:07 +00:00
Batrachophreno 7d058fc613 Jukebox TGUI update, Earphones autoplay, sound keys refactor (#21630)
V2 of [previous music playing
PR](https://github.com/Aurorastation/Aurora.3/pull/21466). TLDR no
longer uses the connect_range component for implementation because it
turned out a bit too inflexible for overlapping music players.

Removes a NanoUI template for the [TGUI
update](https://github.com/Aurorastation/Aurora.3/pull/21046).

New changelog:
  - refactor: "Ported Jukebox's NanoUI interface to TGUI."
- refactor: "Ported Jukebox audio playing functionality to a component."
- refactor: "Sound keys refactored from singletons to datums, along with
larger breakout of sound.dm to allow for easier SFX updates in future."
  - code_imp: "Expanded track datums to include track lengths."
- code_imp: "Reorganized music file folders for more intuitive access."
  - rscadd: "Earphone status feedback text now includes track length."
  - rscadd: "Added autoplay functionality to earphones."
- bugfix: "Fixed earphones' 'Previous Song' verb not sending you to the
end of the playlist when used while the first track is selected."
- bugfix: "Fixed gain adjustment for 'Konyang-1' (-23 dB -> standard
-9.8 dB)."
- bugfix: "Fixed y-offset of audioconsole-running overlay animation to
line up with the actual screen."

---------

Co-authored-by: VMSolidus <evilexecutive@gmail.com>
2026-01-22 16:54:40 +00:00
Casper3667 4021f161d8 Adds a notepad to the investigator locker and removes the labcoat from it (#21671)
Pretty much what it says in the title. Investigators need somewhere for
all their active note taking after all.
2025-12-23 20:05:52 +00:00
Casper3667 3541ce57fd Slight rework of how tajaran watches work and new papercode for taj time (#21582)
This does a few times, after the scope got bigger than I originally
planned:
- Watches now have an action button top left to check time.
- Taj time checking code was moved over to the time helper file to not
be watch exclusive.
- The taj wrist watches now shows the time on adhomai.
- Papercode now has the ability to show taj time and date, and to insert
the credit symbol.
2025-11-30 11:17:14 +00:00
Casper3667 cc8e3019ad Fixes papers and the slide projector (#21559)
Papers no longer have double text shown when examining them.
The slide projector projections can now be examined again, and papers
and photos can be looked at properly through it.
2025-11-11 10:56:10 +00:00
Casper3667 f69c0e94a7 Add journals and notepads with blank paper (#21418)
They are going to be filled anyway, and this way people won't have to
raid paper bins nearly as much. It adds a variant of the notepad and the
journal that is pre-filled with 5 blank papers. It also adds 5 blank
papers to my own custom item as an extension of this.
Also this fixes a runtime error when journals with content were deleted.
2025-10-05 14:26:52 +00:00
Batrachophreno 28a4128ab8 Qol and bugfix variety pack (#21367)
changes:
  - qol: "Added detailed extended examine info on mechanics to pens."
- qol: "Added detailed extended examine info on mechanics to the
psychiatrist/chaplain Mesmetron."
- qol: "Added detailed extended examine info on mechanics to
barricades."
- qol: "Added some extended examine info to (hanging) flags, crayons,
misc."
  - code_imp: "Updated dmdocs in many locations."
- bugfix: "You can no longer force-feed people crayons. However, you can
still offer a bite of crayon for them to accept or refuse, for
tradition's sake."
- bugfix: "Reading the contents of a noticeboard now makes you actually
face the noticeboard."
2025-09-28 12:12:48 +00:00
FabianK3 36d267d83e Persistent data framework (#21055)
# Summary

This PR has the goal of adding a base framework for tracking, saving and
otherwise managing persistent data between rounds, written from scratch.

Persistent data can be anything - Most expectedly noticeboards, dirt,
papers, etc.

_Technical details about the PR below are subject to change._

## Estimated scope

The first iteration of the persistence framework should include the
functioning subsystem and the first implementation of a persistent type
using said subsystem.

- [x] Prepare database for persistent data
- [x] Add new features to `/obj/`
- [x] Logic to get and load persistent data into objects for the
subsystem
  - [x] Internal logic for tracking and other
- [x] Implement subsystem
  - [x] Basics, files, integration of subsystem
  - [x] Database queries for different operations
- [x] Methods for registering and de-registering object tracking for
`/obj`
  - [x] Round start logic
  - [x] Round end logic
- [x] Implement first persistent type: Papers on notice boards
- [ ] Code review
  - [x] Scope validation
  - [x] Testing
  - [x] Full changelog
- Merge
- [ ] Setup logging config for new subsystem
- [x] Documentation for developers ([How to add new persistent
types](https://github.com/Aurorastation/Aurora.3/wiki/Persistence))

## Inner workings

The new persistence subsystem has the following concept:
At round start the subsystem reads existing data from the database and
creates objects for them.
During the round objects can be added to the tracking using a register
function (or removed by a de-register function).
At round end the subsystem goes over all it's actively tracked objects:
Create new objects (that don't have a persistent ID from the database),
update objects that changed during the round and expire objects that are
no longer tracked.

The objects in questions can register themselves, de-register themselves
and decide themselves what content should be stored and handle how to
set themselves up during the subsystems init phase.

## Information on the new table

`id` - database generated ID for tracking persistent objects over
multiple rounds, objects without an ID are considered new and created
during the round.
`author_ckey` - With the first implementation unused, but expected to be
required in the future to allow any staff/moderation on persistent data.
Nullable as persistent data also can be things like decals without an
actual owner.
`type` - Type of persistent data used for creating objects at round
start.
`created_at` - Statistical values.
`expire_at` - Used for cleaning the database and setting limits for
persistent data types. It's optional and allows permanent persistent
data (command notice boards?).
`content` - JSON formatted data containing the actual properties of an
individual tracked object (e.g. what's written on a paper, what's its
title).
`x`, `y`, `z` - Coordinates taken and given from/to the object during
save/load. Those can be null for future purposes.

## The goal on how to add new persistent data types

`/obj` received two new methods which need to be overriden in the to-be
added new persistent type:
`persistence_get_content()` and `persistence_apply_content(content, x,
y, z)`.

The first method has the responsibility to provide all custom content of
a new type to the subsystem in the form of an associated list (`["title"
= "Hello, World!", "value" = 1337].

What does that mean?  
In the example of a piece of paper, the method needs to put the papers
title and text content into a an associated list, that list will be
saved by the persistence subsystem.

The second method has the responsibility to apply the previously saved
content when persistent data is initialized at the start of the round:
The associated list needs to be read back and applied to the paper,
additionally coordinates are provided for the object that have been
taken during saving. Note that the coordinates might be null and could
be ignored during setup.

During the round, when a new object is created, like a paper, you need
to call the subsystem and register a track:
`SSpersistence.register_track(your_object_to_track, ckey (optional)`.
The subsystem will be using the methods above when the round ends and
saves the object - and loads it at the start of the round using the
second method. The ckey needs to be given for all persistent that
contains user generated content, e.g. papers.

In case a persistent object gets removed, you need to call
`SSpersistence.deregister_track(your_tracked_object)`. At the end of the
round the object will be removed from the storage.

`/obj` contains the variable (along some other technical vars)
`persistance_initial_expiration_time_days`, which has a default value of
30 days, but can be safely overriden on a per-type basis. This value (in
days) will be used for the persistent data entry expiration date when a
new object of said type is stored in the database.

## PR description changelog

- Added *The goal on how to add new persistent data types*.
- Updates *Estimated scope* format.
- Updates *Inner workings*.
- Final iteration.

*(Grammer and formatting not tracked manually)*
2025-08-16 22:00:12 +00:00
Batrachophreno af6c74d917 Verb organization stuff (#21131)
Currently, only Preferences Verbs use subcategories. As a result, all
other Verb tabs are only organized alphabetically, meaning that a single
mechanic (ie. languages) has its governing Verbs scattered rather than
grouped together.

Verb organization by Tab handles broad organization - IC, OOC, Objects,
etc.- highly effectively but requires the user to click-navigate to
other Tabs to access any other verbs.

Verb organization within a Tab can be handled by A.) subcategories and
B.) Verb name prefixes (such as Earphones - *****). The first option is
the clearest and cleanest, but consumes additional vertical space. The
second option conserves vertical space at the cost of visual clarity.

This PR attempts to reorganize Verbs by their Tabs, Subcategories, and
prefixes with the following priorities in mind:
- Minimal disruption; any radical change must be justified (don't move
shit around just for the sake of moving shit around.)
- Verbs which share common functions (such as Languages) should be
grouped together.
- Maintainability. Contributors should not need to memorize an
excessively convoluted Subcategories list; Subcategories must be
intuitive and simple.
- Subcategories should be used judiciously when grouping Verbs to
conserve vertical space. Example: Instead of creating a Subcategory for
Emotes, just rename Audible Emote and Visual Emote to Emote (Audible)
and Emote (Visual).
- Subcategories should highlight uncommon or unusual verbs when
reasonable. Example: There are several animal husbandry-related Verbs,
and because most characters will not have access to those verbs
regularly, we can be less conservative with space (because they'll be
gone most of the time) for the sake of emphasizing their availability.

This PR covers the IC, OOC, and Object Tabs.

Subcategories:
OOC.Chat (Chat functions)
- AOOC
- LOOC
- Devsay (moved from Special Verbs)
- Dsay (moved from Special Verbs)
- OOC

OOC.Debug (Fix shit)
- Fit viewport
- Fix chat
- Refresh TGUI

OOC.Round (Round information)
- Check Gamemode Probability
- Check Round Info
- Custom Event Info
- Vote

IC.Antag (Antag verbs w/o their own tab)
- Invite to the Loyalists
- Invite to the Revolutionaries
- Set Ambition

IC.Critters (More critter stuff than you'd expect there to be)
- Befriend Carp (Previous name 'Become Friends')
- Befriend Cat (Previous name 'Become Friends')
- Befriend Dog
- Befriend Ives
- Name Alien Species
- Name Animal

IC.Language (Language-related stuff)
- Check Default Language
- Check Known Languages
- Set Default Language

IC.Maneuver (Movement, positioning, etc.)
- Adjust walk speed
- Do Pushup
- Face Direction
- Look Down
- Look Up
- Move Downwards
- Move Upwards
- Rest

Object.Equipped (Equipped object stuff, mostly for drip)
- Adjust Badge
- Adjust Bag Straps (Backpacks)
- Adjust Goggles
- Adjust Mask
- Adjust Welding Goggles
- Adjust Welding Mask
- Change Glasses Layer
- Change Pants Layer
- Change Wrist Radio Layer
- Change Wristwear Layer
- Check Time
- Flip Badge
- Flip Belt
- Flip Eyepatch
- Flip Hat
- Flip ID card (ID card)
- Flip Radio (Clip-on radio)
- Flip Wristwear
- Fold Collar
- Lock Antenna(e)
- Point At Watch
- Raise Shroud
- Roll Up Cape Mantle
- Roll Up/Down Jumpsuit
- Roll Up/Down Sleeves
- Switch Belt Layer
- Switch ID Layer
- Switch Lanyard Layer
- Switch Shoe Layer
- Toggle Aviators (Like a dozen variants)
- Toggle Ceremonial Garment Lights
- Toggle Coat Buttons
- Toggle Coat Zipper
- Toggle Hair Coverage (For hats helmets etc)
- Toggle Hair Coverage (FOR BABY CARP!!!!!)
- Toggle Helmet Camera
- Toggle Hood
- Toggle Lyodsuit Mask
- Toggle Poncho Tail Coverage
- Toggle Shirt Buttons
- Toggle Suit Sensors
- Toggle Visor (Pilot helmet)
- Toggle Waistcoat Buttons
- Transform Holoclothing
- Voidsuit - Eject Suit Cooler
- Voidsuit - Eject Tank
- Voidsuit - Toggle Helmet

Object.Held (If you're HOLDING it, its probably relevant to you rn)
- Activate Held Object (Silicons; moved from IC)
- Alter Beacon's Signal (Radio beacon)
- Change Bite Size (Utensils)
- Change Pen Colour
- Choose Colour (Paint sprayer)
- Choose Decal (Paint sprayer)
- Choose Direction (Paint sprayer)
- Choose Preset Colour (Paint sprayer)
- Describe Prototype
- Draw Boot Knife
- Empty Bee Net
- Empty Spray Bottle
- Holster
- Name Gun
- Name Prototype
- Plant Flag (Flags)
- Print Plant Report
- Remove Chopsticks
- Remove Top
- Set Detector High-Bound (Light meter)
- Set Detector Low-Bound (Light meter)
- Set Hailer Message (Hailer)
- Set Timer (Timer igniter)
- Set Valve Pressure (Pneumatic cannon)
- Show Held Item
- Spin Cylinder (Revolvers)
- Switch Verbosity (Health analyzer)
- Toggle Chainsaw Power (Chainsaw)
- Toggle Flashlight Brightness (Flashlights)
- Toggle Gun Safety
- Toggle Hazard Vest
- Toggle Pinpointer Mode (Pinpointer)
- Toggle Mister (Backpack water tank. Goes into/out of hands)
- Twist Cap
- Use Scope
- Wield Pick/Drill
- Wield Two-Handed Weapon (Two-handed weapons)

Object.Cards (I fucking hate cards!!!)
- Deck - Deal
- Deck - Draw
- Deck - Pick
- Hand - Pick
- Turn Hand Into Deck

Object.Earphones (Enough here to separate out)
- Eject Music Cartridge
- Change Volume
- Next Song
- Pause/Unpause
- Play/Stop
- Previous Song

Object.Jetpack (This is probably really important to see quickly)
- Toggle Jetpack
- Toggle Jetpack Stabilization

Object.Tape Recorder (Enough here to separate out)
- Start Recording
- Stop Recording
- Clear Memory
- Playback Memory
- Print Transcript
- Eject Portable Storage

**IC tab example:**
<img width="1061" height="277" alt="Screenshot 2025-08-09 101813"
src="https://github.com/user-attachments/assets/a2afe92d-34fd-4160-bf68-b459a4195e26"
/>
**Objects tab example:**
<img width="1100" height="472" alt="Screenshot 2025-08-09 101807"
src="https://github.com/user-attachments/assets/a36e4c76-594e-4569-93ba-ffcda57e8760"
/>
2025-08-11 15:12:56 +00:00
Batrachophreno c2f054fd81 DMdocs (#21103)
Progress on DMDocs. PRing progress so far so there's not one mega PR
later with 1500 affected files.

I want my goddamn highlight text on what all these goddamn procs goddamn
do goddamnit. >:(

No actual code change anywhere in this PR, only comments.

---------

Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
2025-08-09 12:22:56 +00:00
Batrachophreno 790aeafbdf Storyteller admin/mod/fun verb smorgasbord (#20831)
As title: grants STs a small selection of admin/mod/fun verbs without
needing them to have an admin_rank configured on the back end.

I've been extra permissive here on the assumption that Those That Be
will veto anything they don't like. The granted verbs:
	/client/proc/toggle_view_range,
	/client/proc/jumptozlevel,
	/client/proc/jumptoshuttle,
	/client/proc/jumptoship,
	/client/proc/jumptosector,
	/client/proc/Getmob,
	/client/proc/Jump,
	/client/proc/jumptomob,
	/client/proc/jumptoturf,
	/client/proc/check_ai_laws,
	/client/proc/manage_silicon_laws,
	/client/proc/odyssey_panel,
	/client/proc/damage_menu,
	/client/proc/change_human_appearance_admin,
	/client/proc/change_security_level,
	/client/proc/cmd_dev_bst,
	/datum/admins/proc/create_admin_fax,
	/client/proc/check_fax_history,
	/client/proc/clear_toxins,
	/datum/admins/proc/call_supply_drop,
	/datum/admins/proc/call_drop_pod,
	/client/proc/event_manager_panel,
	/client/proc/toggle_random_events
	
This PR is full of _gross code_ but it _does_ work.
2025-08-06 12:43:42 +00:00
Wowzewow (Wezzy) a45faab183 Michael Wave, Return of Microwaves (#21072)
- Readds microwaves, and most of their old recipes where applicable.
- Resprites the small oven. It was small and ugly and I hated it.

Now, you may be asking, Wezzy - some of these recipes are an affront to
god. Microwaves can't do that.
And to that I say, It's mostly there to be a decent stand-in for small
rinky-dink maps and ships where you can't particularly fit the whole
kitchen suite in a convenient place. It's nice to have a bit of an
asspull in places like these, so.

Also, donk pockets actually become hot and cool down properly again,
now. It only took 15 years. (jesus christ)

Ported from Bay which ported from us.


![dreamseeker_6aMUIkYymn](https://github.com/user-attachments/assets/76c64677-78b2-4a3b-a35a-002b1cfe7cc7)
2025-08-04 12:20:42 +00:00
Batrachophreno 387cee9243 Object Examine Text Overhaul (#20923)
Extends and reworks how various extended information text (desc_info,
desc_build, desc_upgrades) are handled to make object interactions and
mechanics A.) much more clearly documented in-game and B.) much easier
to support from the back-end.

Almost certainly a candidate for test merge.

Assembly/Disassembly instructions are noticeably sporadic, largely due
to our current lack of a unified framework. That's a future thing I'd
like to attack so that it can be handled programmatically, but for now I
only targeted the biggest culprits as I came across them.

---------

Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
2025-07-21 15:35:14 +00:00
smellie bfb076eea5 Uncharted Space (#20937)
Adds 3 Crescent Expanse regions due to how large a region it is:
- Crescent Expanse (West): Nralakk and Solarian heavy region.
- Crescent Expanse (East): Coalition and Solarian heavy region.
- Crescent Expanse (Uncharted): Deep Crescent expanse, independents and
certain surveyors only.

Also adds a Lemurian Sea (Uncharted) sector if we ever go there.

Adds a `ccia_link` variable for sectors. Only usage is to block outbound
faxes to Central Command. For uncharted sectors. EBS remains an option
due to necessary CCIA functions (eg. scuttling), per Bear's wishes.

Adds `low_supply` variants of most vending machines and dispensers. For
later use, none mapped in.

Removes the `TEMPLATE_FLAG_SPAWN_GUARANTEED` flag from the sensors
array, because it meant it wasn't affected by `sectors_blacklist`. The
sensors array isn't so important it needs to be in every sector anyway.

Removes Burzsia from the `ALL_DANGEROUS_SECTORS` list, as the crisis has
passed and humanitarian relief efforts completed.

Adds the `ALL_EVENT_ONLY_SECTORS` for limited usage during event
arcs/similar where canon odysseys or certain thirdparties may infringe
upon an arc's narrative. Allows selective enabling/disabling of canon
odysseys or third parties for said arcs. Not intended for liberal
application.

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
sound/music/lobby/crescent_expanse/crescent_expanse_1.ogg | "Lüüü -
Weedance" by Lüüü, Obtained from
https://myprivateunderground.bandcamp.com/track/lu-u-u-weedance | CC
BY-NC-SA 3.0.
sound/music/lobby/crescent_expanse/crescent_expanse_2.ogg | "Little
Bradley - Sunset Drive" by Little Bradley, Obtained from
https://myprivateunderground.bandcamp.com/track/little-bradley-sunset-drive
| CC BY-NC 3.0
sound/music/lobby/dangerous_space/dangerous_space_1.ogg | "You Can't
Kill The Boogeyman" by Karl Casey. Obtained from
https://karlcasey.bandcamp.com/track/you-can-t-kill-the-boogeyman | CC
BY 3.0
sound/music/lobby/dangerous_space_2.ogg | "Prison Planet" by Karl Casey,
Obtained from https://karlcasey.bandcamp.com/track/prison-planet | CC BY
3.0
sound/music/lobby/lights_edge/lights_edge_1.ogg | "Is Anyone Left?" by
Karl Casey. Obtained from
https://karlcasey.bandcamp.com/track/is-anyone-left | CC BY 3.0
sound/music/lobby/lights_edge/lights_edge_2.ogg | "Running From The
Wendigo" by Karl Casey. Obtained from
https://karlcasey.bandcamp.com/track/running-from-the-wendigo | CC BY
3.0
2025-07-12 12:12:40 +00:00
Matt Atlas 22f3e5580d Fixes some 516 UIs. (#20662) 2025-03-27 02:14:59 +01:00
harry 04bc9fbd13 516 compatibility for browsers (#20652)
this is a bit of

https://github.com/cmss13-devs/cmss13/pull/8646
https://github.com/cmss13-devs/cmss13/pull/8875
https://github.com/cmss13-devs/cmss13/pull/8606
https://github.com/cmss13-devs/cmss13/pull/8607
https://github.com/cmss13-devs/cmss13/pull/8359
https://github.com/cmss13-devs/cmss13/pull/7860
( and thus https://github.com/ParadiseSS13/Paradise/pull/25105
https://github.com/ParadiseSS13/Paradise/pull/25205
https://github.com/ParadiseSS13/Paradise/pull/25363
https://github.com/ParadiseSS13/Paradise/pull/26423 and
https://github.com/ParadiseSS13/Paradise/pull/26433 )
https://github.com/tgstation/tgstation/pull/89766

in order to work properly - using the efficient storage method, instead
of the byond json method - github pages needs to be enabled and built
from the gh-pages branch. because yeah

---------

Co-authored-by: harryob <55142896+harryob@users.noreply.github.com>
2025-03-26 21:41:18 +00:00
Fluffy 3185c10cf1 516 internal links (#20428)
Convert all (appropriate) links to use the required `byond://` for 516

Added a grep to detect incompatible ones
2025-02-20 22:54:10 +00:00
Fluffy 7265630dde Turn more unmanaged global vars into GLOB (#20446)
Turned a ton of unmanaged globals into managed globals.
Refactored some UT output.
Removed some unused things, including vars.
Added a test to ensure people don't keep adding new unmanaged vars.
2025-02-17 23:34:02 +00:00
Fluffy f3dab68568 Area tweaks (#20391)
Reworked area changes and power define channels

No player visible changes (hopefully)
2025-02-16 18:53:46 +00:00
Wowzewow (Wezzy) e7232d04fc The Great Device Resprite and Contained Sprite-ening (#20344)
Don't let the large file size scare you, it's just mostly splitting
stuff into contained sprites and putting them in the correct place.

Anyway, resprites most non-resprited devices in devices.dmi, and puts
them in contained sprites.
Also puts any related /obj/item/device into contained sprites too.
That's basically the long and short of it.
2025-01-24 12:16:30 +00:00
Fluffy 457a091d9a Clicks refactor (#20321)
Added various events to the dcs system in regards to click handling.
Refactored various mouse related procs.
Fixed MUI mask.
Fixed AI jump on double click.
Fixed some runtimes with the click handler system.
Updated the click handler system.
Fixed fireman carry.
2025-01-09 23:04:48 +00:00
Fluffy 1ba0b35838 New opendream pragmas (#20260)
Enabled new opendream pragmas
Fixed some runtime access check operators (`:`) around the codebase (not
all, some are unfixable as they're used in macros)

No player facing changes (hopefully)
2024-12-29 11:12:09 +00:00
Fluffy df014f9bc0 Mouse drop refactor (#20256)
Refactored mousedrag procs, added signals, some safeguards, did some
cleanups around, renamed them to make a little more sense. Mostly put in
line with TG's code.
Fast clicking and releasing with a drag, depending on the grace period
and how fast it is done, can be counted as clicks, to aid in combat
scenarios where you spamclick.
2024-12-26 14:26:32 +00:00
Ben 27704cc8d2 The Great Unstationing (#20269)
Replaces many references of station with SSatlas variables using
station_name().

Touches alot of things in the process (mostly moving some aspects to
New() to allow for calling of proc/variable.)

---------

Signed-off-by: Ben <91219575+Ben10083@users.noreply.github.com>
Co-authored-by: Ben10083 <Ben10083@users.noreply.github.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
2024-12-24 12:42:53 +00:00
Stev-the-third 46b044d302 Nuclear Missile Silo (#20222)
The Nuclear Missile Silo Bunker Thingamjig is a 2-z odyssey map. Should
be nice and generic so storytellers can tell a variety of stories,
including just blocking off the entire bunker and having a nice snowy
town if they want to.

![StrongDMM-2024-12-13 09 59
43](https://github.com/user-attachments/assets/30d36670-72a9-41d1-b48b-84d20d166600)

![image](https://github.com/user-attachments/assets/ced645a8-4896-4739-b17c-255da643c534)

And the sub-maps:

![image](https://github.com/user-attachments/assets/3add3533-7f41-4e3e-960e-cf61b36a7172)


Future plans for a later PR include a day/night cycle and maybe weather

---------

Co-authored-by: Stev-the-third <rose@flurf.net>
2024-12-15 13:52:34 +00:00
Matt Atlas 1da20ad33f Adds the Odyssey gamemode. (#18972)
https://forums.aurorastation.org/topic/20198-mission-briefing-auroras-gamemode-revolution

To-do:

- [x] Finish storyteller verbs.
- [x] Storyteller landmarks.
- [x] Proper storyteller spawning. Right now the gamemode system is
happy with just picking one storyteller and no actors.
- [x] Antagonist whitelists code.
- [x] Adding the Storyteller whitelist.
- [x] Mission map loading code.
- [x] Map in a bunch of missions.
- [ ] Storyteller adminhelps.

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: DreamySkrell <>
2024-11-26 20:18:43 +00:00
Fluffy 513facdb0d Refactored deletion observables to use the COMSIG_QDELETING signal (#20121)
Refactored deletion observables to use the COMSIG_QDELETING signal
instead, removed the observable.
2024-11-04 21:51:18 +00:00
Fluffy 9636363e60 Refactored the attack proc (#19908)
Refactored the attack proc signature.
Added signals and components for the attack proc.
Added signals and components for the attackby proc.
Adjusted some leftover attackby procs signatures.
Added grep test to ensure people don't keep adding attack/attackby procs
with the wrong signature.
2024-10-06 21:30:00 +00:00
Fluffy 8f9de7c3e2 Text() away (#19850)
Refactored all the builtin text procs to use string interpolation
instead.
Added a linting for the above.

This is based on, and should only be merged after, #19847
2024-09-21 12:46:31 +00:00
Cody Brittain dc610520fe Refactor /obj/screen to /atom/movable/screen (#19852)
Part of backend stuff required for #19188. Should probably be test
merged.

---------

Co-authored-by: Cody Brittain <cbrittain10@live.com>
2024-09-21 12:12:07 +00:00
Fluffy fe905b2953 Nano printers (computer component) will now refuse papers that are already written onto. (#19890)
Nano printers (computer component) will now refuse papers that are
already written onto.

Fixes #19889
2024-09-21 11:24:46 +00:00
Fluffy 530fbf11f5 Fluff paper tweaks (#19894)
Fluff papers now update the free space on the paper correctly on
initialization.
Moved all the fluff paper in code, from the maps.
Added maplinting for fluff papers.
Added DMDoc for fluff papers.
2024-09-21 11:23:37 +00:00