Commit Graph

1523 Commits

Author SHA1 Message Date
Kano 202ed77aab Fixes mobs ignoring their speed value (#21203)
## About PR

the `delay` value in use here gets assigned with mob's `speed` var (I am
positive on this, though movement code is a relic I can't fully
comprehend). If the mob calling this proc had an initial delay value,
this check used to ignore it and assigned a fix number. This PR makes it
so if `speed` is null or 0, then they're assigned with the fix number.
2025-08-17 13:21:26 +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 a3151b789f Misc bugfixes, COFFEE COUNTS AS A BUGFIX (#21133)
Fixes https://github.com/Aurorastation/Aurora.3/issues/20799
Fixes https://github.com/Aurorastation/Aurora.3/issues/19718
Fixes https://github.com/Aurorastation/Aurora.3/issues/21001

changes:
- bugfix: "Simple mobs no longer allowed to move at hyper-speed when
chasing targets."
- bugfix: "Objects thrown onto Open Space turfs should more reliably
drop down remaining Z-level (if there is gravity)."
  - bugfix: "Area adjustments to fix D3 bunker turret controls."
  - bugfix: "Fixed naming convention for scuttling device compartment."
  - bugfix: "Replaced parent stairwell area with correct child."
- bugfix: "Replaces misleading AI shell exosuit charger with synthetic
recharger."
- qol: "Replaces the Engi break room stripped-down soda dispenser with
stripped-down coffee dispenser."
2025-08-10 16:06:38 +00:00
Ben c505b7adcb AI Display Fix + AI.dm Improvements (#21132)
Fixes https://github.com/Aurorastation/Aurora.3/issues/20503

Adds documentation to AI.dm and refactors procs that handle AI
Announcements and AI Emergency Messages

---------

Co-authored-by: Ben10083 <Ben10083@users.noreply.github.com>
2025-08-09 12:23:47 +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
Matt Atlas 82a5c07f08 Experiment: increase lobby roundstart time. (#21066)
Increases the lobby roundstart time by 50 seconds. The thinking behind
this is to see if readies globally increase by virtue of adding more
time to the roundstart timer, be it because people have more time to
think about what to play, or because of other reasons.

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
2025-08-06 12:26:15 +00:00
Batrachophreno 8c3e85f3fe Area display names (#21070)
Little more tuneup of area metadata, and also replaces area.name in
several locations with dynamic area display names (for example:
announcement that something was beamed aboard a thruster will once more
indicate whether it was the port or starboard thruster).
2025-08-01 19:51:44 +00:00
naut 14b3228582 Adjusts credit value to be more consistent (#20913)
- Reworked prices, wages and balances of (almost) everything ingame.
- Added coinage and decimal support to cash, ruthlessly sanitized to
avoid floating-point errors. Reflected in cash-related things like ATMs.
- Tweaked how cash bundles are made and distributed to support
decimalization.
- Adjusted the starting money individuals and departments receive in
their accounts.
- Adjusted the funding Tajara, Unathi, Diona, Vaurca, and IPCs receive
in their accounts. Should earn more on average than they used to.

Credit values are now roughly 1/10th what they were before, across the
board.

Coins were added too! These have names:
- Unie: 0.01 credits
- Quin: 0.05 credits
- Dece: 0.10 credits
- Quarter: 0.25 credits

These can be seen cameo'd in the screenshots below.

Values, wages, etc, are based on the wiki page
https://wiki.aurorastation.org/index.php?title=Guide_to_Wages_and_Pay .

Values are not anchored to any singular real-world currency.

Example price differences:

| Example Item | Old Price | New Price |
| --- | --- | --- |
| Comet Cola | 15.00 | 1.50 |
| Cup Ramen | 20.00 | 2.00 |
| Jyalara | 38.00 | 3.00 |
| Trans-Stellar Cigarettes | 76.00 | 9.00 |
| Zo'ra Soda | 29.00 | 2.50 |
| Gumball | 5.00 | 0.25 |
| 50x plasteel sheets | 700.00 | 120.00 |
| 5x meat (cargo) | 160.00 | 55.00 |
| 50x phoron crystals (cargo) | 2200.00 | 400.00 |

Wages and account balances have also been tweaked:
| Type | Old Amount | New Amount |
| --- | --- | --- |
| Ship Account | 75,000.00 | 35,000.00 |
| Departmental Accounts | 10,000.00 | 15,000.00 |
| Personal Account (avg) | 200.00 - 20,000.00 | 20.00 - 2,000.00 |

Might break the economy; prices will likely need some adjusting
depending on gameplay constraints. Can be adjusted in TMs.
A little testing never hurt anyone.


![image](https://github.com/user-attachments/assets/006e78bf-bfe6-4003-a88d-7b26d6cf2e80)

![image](https://github.com/user-attachments/assets/ac365c3d-bd55-4de5-bd9f-95c7c629462a)

---------

Signed-off-by: naut <55491249+nauticall@users.noreply.github.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
2025-07-28 18:11:58 +00:00
Wowzewow (Wezzy) 5006e41347 New Lobby Music + Adjust Volume (#20965)
Adds five new songs for Aurora lobby music - no more baseline SS13
stuff!
Also backports the original Title3 for that OG SS13 goodness.

Taken mostly from CCMixter.
Information in licensing_information.txt.

Also, updates the lobby music toggle to be a volume input. Set to 0 to
mute.

---------

Signed-off-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
2025-07-21 10:33:51 +00:00
hazelrat 4d5d2c340e Expands hydroponics temperature/light mechanics (#20890)
This is sorta bulky on the changes since it includes a lot of shuffled
documentation, so I'll try to thoroughly summarise here.

- Introduces 'preferential' temperature and light values to plants. This
means that, while a plant is _within_ 5K and 2 lumens of their ideal
heat and ideal light, they will grow faster than otherwise. In the
current implementation, the base growth is a 15% chance of age being
increased, plus another 15% if you're within preferential temps, and
another 5% if within preferential lumens for a maximum of 35%. This is
intended to incentivise engaging with temperature mechanics to grow
plants with unusual requirements.
- This is different to the existing tolerance values, which instead
check whether the plant is _outside_ of them - if they are, it damages
them. Tolerances cause the plant to die if they're too far from their
ideals, preferences cause the plant to grow faster if they're very close
to their ideals. The range of preferences should always be inside
tolerances.
- To work better with this, the ideals of a few kinds of plant have been
tweaked. Mushrooms, Adhomian plants, and molluscs will all **not** be in
their preferences at room temperature - they will need to be cooled,
which can currently be done in D1 hydroponics. A few warmer plants, such
as sugarcane, will need to be warmed up to reach their preferences.
- None of these will go outside of their tolerances at room temperature
- they won't die, they'll just grow slower.
- Most plants will be within all their preferences without any action by
the gardener.

There's also a few assorted QoL changes to hydrotrays, see the
changelog.

---------

Signed-off-by: hazelrat <83198434+hazelrat@users.noreply.github.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
2025-07-12 18:21:31 +00:00
Werner 75b9319a0e Removes SSDocs (#20660)
Removes SSDocs as its unused

Also MD because we should discuss if that should be revived instead.

Co-authored-by: Werner <Arrow768@users.noreply.github.com>
2025-07-12 18:20:33 +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 c2ee99fdcf Fixes dynamic turfs not being Z-mimiced properly. (#20976)
title

Co-authored-by: Matt Atlas <liermattia@gmail.com>
2025-07-11 22:06:37 +00:00
Erki 7b9692be60 Implement forum-user-auth for game (#20875)
Requires https://github.com/Aurorastation/Web-Interface/pull/136 be
merged.

Allows users to authenticate themselves using only the forum. It will
generate a custom ckey for these users in the form of
`GuestF-[ckey(forum-nickname)]`. This will be saved into the database
and will act as a normal ckey from thereon out. These ckeys will be
marked in the player table, to allow for later filtering.

This will also modify the config parameter external_auth to be an enum
of 3 values.

Open questions: can we do automatic linking from purely the game side?
Since upon creation of the custom ckey, it should also be linked back to
the forums.

---------

Co-authored-by: Erki <erki@skullnet.me>
2025-07-10 17:24:29 +00:00
Matt Atlas 1738301ea7 Ports CM's langchat to replace floating chat. (#20818)
Works generally better and will allow for better customization and emote
display.

---------

Co-authored-by: realmattatlas <liermattia@gmail.com>
2025-07-07 23:55:26 +00:00
SleepyGemmy 5f9201fdf0 Transferred Typo Fixes (#20879)
this PR fixes transferred being spelled as "transfered".
2025-06-25 21:10:01 +00:00
ike709 3d568c173b Rename vars that override internal vars (#20837)
## About The Pull Request

OpenDream is adding `usr` and `args` to the `SoftReservedKeyword`
pragma: https://github.com/OpenDreamProject/OpenDream/pull/2307

This PR renames `var/usr` to `var/user` and `var/args` to
`var/arguments`.

## Why It's Good For The Game

This pragma is currently set as an error on Aurora, because using
internal var names for declared var names is cringe.
2025-06-19 10:48:06 +00:00
Matt Atlas 3837112bd1 Revert "Fix missing pixels in new hairstyle" (#20854)
bad merge
2025-06-17 02:33:31 +02:00
KingOfThePing 7a939ec31f (Re)Adding Soul: Title3 (#20811)
This PR (re?)adds Title3 as possible server music and to the jukebox
(not the audiconsoles).
This song is as old as the game. Personally I like it a lot and think we
can have it for the approx. 3 people who have the lobby music not muted.
I used an improved, remixed version of the classic Title3 (originally
"Tintin On The Moon", composed by Jeroen Tel), that is better quality
and not grating on your ears. Some of you may know this version from
SS14.
Tested and working locally.

All appropiate attributions have been made. It is all marked under
(YouTube's) CC BY (reuse allowed) license.

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

| Path | Original Author | License |
| sound/music/lobby/title3mk2 | Jeroen Tel (original)/PinkBlossom6
(remix) | CC0 (free reuse) |
2025-06-16 22:21:56 +00:00
Batrachophreno 356bb10e9f Fix Electrical Storm event (#20830)
Electrical Storm event does nothing because it checks for valid target
APCs in SSmachinery, but SSmachinery currently doesn't hold a list of
APCs to use. This PR correctly registers APCs on init and unregisters
them on destroy so that Electrical Storms will actually upset Engineers
now.

This should proooobably come with an IG bulletin on the discord or
something warning engineers that their shit will actually get rocked
(especially since its kind of weird in-universe that electrical storms
that used to Do Nothing actually have an impact) now).
2025-06-16 22:17:49 +00:00
Batrachophreno 156620ad4f Fix missing pixels in new hairstyle (#20828)
See title- the new haircuts leave two pixels of the head uncovered, this
fixes that. My bad, know better testing now... :(
2025-06-16 22:16:59 +00:00
FlamingLily 46546eb70f Expands the medbay recovery ward and adds a cryo pod and a spawn point. (#20772)
Off-duty crew and passengers can now spawn in the medbay recovery room,
for that sweet, sweet medical RP.

Vastly expanded the medbay recovery ward, including:
- Cryo pod (duh)
- Nav terminal, to watch the ship fly as the days crawl by
- Sink and hygiene vendor
- dining/general purpose rec table with uno
- MRE vendor, for that sweet, sweet, hospital grade food
- Coffee vendor, for that sweet, sweet, coffee.
- Public access doorway (still needs access to enter, but unrestricted
to exit, so if you spawn there and no one is around, you're not screwed)
- Button to open said public access doorway, for visitors
- Requests console, maintenance panels.

![image](https://github.com/user-attachments/assets/9ed33568-22ea-4c91-b944-cd501d5daf76)
!!Misplaced camera and light in the wall have been fixed!! Rack of
toiletries has been replaced with vendor!!
2025-06-01 10:56:16 +00:00
Werner fa1caa0d61 Move the Discord Subsystem to the new DBCore (#20656)
Uses DBCore for the Discord Subsystem

---------

Co-authored-by: Werner <Arrow768@users.noreply.github.com>
2025-03-30 13:55:51 +00:00
Werner 7c1b810dbe Moves the Law Subsystem to the DBCore (#20653)
Changes the Law Subsystem to be handled by the DBCore

---------

Co-authored-by: Werner <Arrow768@users.noreply.github.com>
2025-03-30 13:55:23 +00:00
Werner 48120677c1 Move Antag Tracking to SSdbcore (#20655)
Handles Antag Tracking with thte DBCore

Co-authored-by: Werner <Arrow768@users.noreply.github.com>
2025-03-30 13:54:57 +00:00
Werner b72f133910 Move Population Tracking to SSdbcore (#20659)
Population Tracking is handled via the DBCore

Co-authored-by: Werner <Arrow768@users.noreply.github.com>
2025-03-30 13:50:57 +00:00
smellie 3699c4f3e5 Odyssey Canonicity Coinflip (#20644)
Adds a `possible_scenario_types` list to Odyssey Scenarios containing
allowed canonicity types for a scenario.
`odyssey/proc/setup_scenario_variables()` now sets `scenario_type` by
picking from the `possible_scenario_types`.

By default or if the `possible_scenario_types` list is unset, a scenario
defaults to Non-Canon.

This allows a scenario to have both Canon and Non-Canon as an option.

Additionally, the Ruined Propellant Depot scenario has been given the
option of both Non-Canon and Canon to pick from.
Supercedes https://github.com/Aurorastation/Aurora.3/pull/20264.
2025-03-27 11:21:03 +00:00
harry f93de28137 fixes iframe default url (#20658)
no its okay i just didnt expect it to be case sensitive thats all

Signed-off-by: harry <me@harryob.live>
2025-03-26 22:15:51 +00: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
Werner 1bc5abd623 DBCore - Initial Implementation (#19593)
Ports the DBCore subsystem from tg.
A few things had to be dumbed down to make them work here.

Separate PRs will be created for different systems as they are moved
over to the new DBCore.

---------

Co-authored-by: Werner <Arrow768@users.noreply.github.com>
2025-03-26 20:57:06 +00:00
DreamySkrell a24345a43b Scenario - Environmental Testing Facility (#19611)
changes:
- rscadd: "Adds Environmental Testing Facility odyssey scenario. Big
map."
  - rscadd: "Removes green tint from the minimap program/reader."
  - rscadd: "Adds/reorganizes some generic outfits."
  - rscadd: "Adds some generic odyssey actor roles."
- rscadd: "Adds actor accesses system to odyssey scenarios, and a
self-service access terminal."
- rscadd: "Adds some warnings to odyssey actor teleporter, in case ID
access or headset are missing."
  - rscadd: "Adds some more random spawners."
  - rscadd: "Adds better sprites door helpers."
  - rscadd: "Adds access door helper."
  - rscadd: "Adds info box to odyssey actor panel about roles."



![image](https://github.com/user-attachments/assets/fc2c0316-e95b-49f8-ac8b-55d03ef47b18)

![image](https://github.com/user-attachments/assets/36a680e8-47bf-4a12-b0a4-7c83cad9e74e)

![image](https://github.com/user-attachments/assets/fca04220-5457-4fa0-9045-cbf9f3f7e013)

![image](https://github.com/user-attachments/assets/6c0c4af2-ae63-4824-bcbe-59519156d288)

![image](https://github.com/user-attachments/assets/a5022487-b2db-4b37-ad16-a9e287ea1695)

![image](https://github.com/user-attachments/assets/96eee079-5aa4-4606-8c7e-ca8f5c3444d4)

---------

Signed-off-by: DreamySkrell <107256943+DreamySkrell@users.noreply.github.com>
Co-authored-by: DreamySkrell <>
Co-authored-by: AuroraBuildBot <action@github.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
2025-03-25 20:40:32 +00:00
naut 55f4e12614 Codeside Cargo Refactor (#20030)
**NOTE TO SYSADMINS: See "SQL Details" section below for information on
SQL modifications.**

Moves the data containing cargo items (i.e. the ones you order from ops
and get in the cargo shuttle) from the online database to the codebase.
Everything from suppliers to categories to individual items is now
code-side and editable by developers/contributors.

Refactors cargo items to use `singletons` instead of `datums` for
`cargo_supplier`, `cargo_category`, and `cargo_item`. Multiple-instnace
things like cargo_orders, etc. still use `datums`.

Fixed a bunch of strange discrepancies in categories, suppliers, and
pricing for various cargo items. I did a little bit, but it's exhausting
to go through all of it right now.

Clicking the 'Details' button on the Cargo Order app now actually gives
you details instead of bluescreening. Also added some UI elements to the
Cargo Order app - Cargo Control and Delivery remain untouched.

Overhauled the Cargo Order console TGUI window. It now has tabs on the
left, displays restricted access, supplier information, and boasts
search functionality.

### SQL Details
<details>
<summary>SQL Details [Click to Expand]</summary>

The following SQL tables should be deleted or deprecated from the server
database, as they are no longer in use:

- `ss13_cargo_items`
- `ss13_cargo_categories`
- `ss13_cargo_suppliers`

The included migration file, `V011__codeside_cargo`, creates a new table
`ss13_cargo_item_orderlog` to the DB. This **replaces**
`ss13_cargo_orderlog_items`. Because of this,
`ss13_cargo_orderlog_items` is deprecated and should either be deleted
or locked & preserved for logging purposes.

</details>

## Screenshots


![image](https://github.com/user-attachments/assets/79129923-1fb6-4cee-ac8d-5505a52270a4)

![image](https://github.com/user-attachments/assets/a323be35-8ce6-4ec4-98f7-ee701d0931a3)

![image](https://github.com/user-attachments/assets/5ddb02c5-152f-4715-b2da-20903fa11c93)

![image](https://github.com/user-attachments/assets/420e45b0-6a9f-4420-beb8-a2c8423a5be4)

![image](https://github.com/user-attachments/assets/114f4755-ee51-41e6-8670-07aacc5326ae)

---------

Signed-off-by: naut <55491249+nauticall@users.noreply.github.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
2025-03-04 18:18:00 +00:00
Wowzewow (Wezzy) c46e21595b Storage Fix 2, Featuring Maths (#20535)
I had to unironically bust out my pen and paper for this bullshit and
magnifying tool to actually check if things were pixel perfect.

- bugfix: "Fixes storage box alignment and storage space UI to use
better maths."
- qol: "Tweaks IDs, IDs and firing pins now rotate 90 degrees when in
storage for easier clickability."
  - bugfix: "Fixes Item Tooltip toggle message."
- bugfix: "Fixes roundstart items in storage not showing item outlines."

Fixes #20529

---------

Signed-off-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
2025-03-02 22:02:54 +00:00
hazelrat 6a385d0864 Custom item prosthetics fix (#20462)
This adds a toggle to the equip_custom_items proc to alternate between
it equipping only body-related items, and everything else. These two
toggleable modes are called separately.

This is intended to resolve a bug in live where, if you join in with a
custom item prosthetic leg, your shoes will be automatically unequipped
the moment you join. This seems to happen because custom items are
currently equipped after the rest of the loadout/job equipment, so your
shoes are put on before your custom item leg is.
2025-02-27 13:34:25 +00:00
Wowzewow (Wezzy) 88d2958ecd Updates Lobby UI (#20467)
![dreamseeker_l6iQkKYgId](https://github.com/user-attachments/assets/6e901739-032e-48f3-aafd-d23591f2ad8b)

---------

Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
2025-02-25 17:46:34 +00:00
Fluffy 11d6467709 Updated SSProfiler (#20506)
Updated SSProfiler to not override the file after every dump
2025-02-22 23:33:11 +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 63acc59d1e Removed away_mission deprecated system (#20445)
Removed away_mission deprecated system, made initialization a little
faster.

Made global uplink datum a GLOB.

Remember to purge
https://github.com/Aurorastation/Aurora.3/wiki/Dynamic-Maps
2025-02-09 12:09:11 +00:00
Fluffy 1810ac27a8 Initiate 516 compatibility efforts (#20426)
Renamed all the "caller" vars to "requester", as the var would otherwise
overshadow the new one that is present in 516

No player facing changes
2025-02-05 13:09:42 +00:00
Fluffy be92376296 Verbs subsystem (#20333)
What it says on the can; now we can better compensate for processing
spikes by queueing and accounting for verb times (assuming we actually
use this framework to invoke the bulk of them). I have added its use to
some of them, more can be ported as time goes on, eventually everything
but the most trivial ones should go through this.

No player facing changes. Hopefully.

Praise be the omnissiah.
2025-01-13 12:17:37 +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
Geeves 67360a9bea Weather Warnings (#19934)
* Atmospheric probes will now relay changes in weather when deployed.
Analog radios can be tuned into the weather broadcast and receive it,
provided they're in the same sector / connected z-levels.
* Fixed weather transitions to rainy / icy weather not working.
* Changed rainy / icy weather to have a blue color, reducing eye strain.


![image](https://github.com/user-attachments/assets/b8439595-25ff-4df0-8f5d-b2d27d147b70)

![image-1](https://github.com/user-attachments/assets/cf0018c2-c6c7-4cf6-8069-543ad98cd597)

![image](https://github.com/user-attachments/assets/5e4d87e2-33c8-494a-9b8f-8a62f12c496a)
2024-12-24 16:04:51 +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
Geeves ed2aa69444 Crew Manifest: Shuttle Manifesting (#19922)
* Being added to a shuttle manifest will now update the crew manifest to
indicate that you're on an away mission on that shuttle.


![image](https://github.com/user-attachments/assets/5ba42070-1101-4e45-825c-9b15231dca39)

![image-1](https://github.com/user-attachments/assets/e2ce81b2-ed42-4c24-bc69-d44095f2f73e)

---------

Signed-off-by: Geeves <ggrobler447@gmail.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
2024-12-18 11:30:36 +00:00
Ben 534a0774eb AI Remote Control Fixes (#20198)
Fixes https://github.com/Aurorastation/Aurora.3/issues/13267
Fixes https://github.com/Aurorastation/Aurora.3/issues/16881
Fixes https://github.com/Aurorastation/Aurora.3/issues/14039
Fixes https://github.com/Aurorastation/Aurora.3/issues/14062

Also adds QoL where pressing eject on remote controlled mechs exits
remote control.

---------

Co-authored-by: Ben10083 <Ben10083@users.noreply.github.com>
2024-12-03 12:44:02 +00:00
Fluffy ce1707c9a0 Fixed Odyssey subsystem processing even when there's no Odyssey scenario running (#20207)
Fixed Odyssey subsystem processing even when there's no Odyssey scenario
running
2024-11-29 20:21:01 +00:00
Fluffy 389466360e Areas and station areas work (#20195)
Refactored sorting.
Added test to verify all horizon areas (outside exceptions) are marked
as station areas.
Added test to verify shuttle areas are not marked as station areas.
Refactored how the area sorting var is made and used.
Added a global list of all areas.
2024-11-27 13:13:44 +00:00