This started out as an update to reduce vision while inside closets.
While I was testing that, I noticed closet teleporters weren't updating
the camera properly, so I fixed that, as well as a bug with an early
`return` causing closets to have 0 density while a closet teleporter was
on cooldown.
Reduce vision inside locker:
<img width="1354" height="1345" alt="image"
src="https://github.com/user-attachments/assets/5f581031-51c0-4502-bddd-21045329c754"
/>
As security officers have their belts pre-filled, I thought to do the
same for the investigators. This takes the tape, flash and camera from
their locker and adds it to the belt in the same locker, additionally a
tape recorder is also put in it.
As clipboards can be put in the belts, I did find it weird that the
notepads couldn't, so I also added the ability to put notepads into the
security belt, as it felt fitting to be able to do so.
The extra pair of identical shoes were also removed from the locker, to
help reduce the clutter slightly. One pair still spawns in it.
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>
## About PR
Sprites are ported from Paradise Station, made by McRamon.
This cart is capable of holding the following:
- 2x sheet stacks of each steel, glass and plasteel.
- mechanical, electrical and emergency toolboxes, one each.
- light replacer
The one that spawns in engineering begins with all 3 toolboxes.
This cart costs 15 plasteel to craft, 100 credits to order from cargo.
Removes relevant toolboxes this cart spawns with in the department.
## Images
<img width="605" height="486" alt="Screenshot_4"
src="https://github.com/user-attachments/assets/59487676-bc5e-4f42-8c8e-d5d59add8481"
/>
https://github.com/user-attachments/assets/88e596ed-06e3-4047-89a8-452d1b13f466
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| icons/obj/engicart.dmi | McRamon (Paradise Station) | CC BY-SA 3.0 |
### What does this achieve?
This overhauls hydroponics to integrate atmospherics mechanics more
heavily, with the hope of establishing the foundations of much more
significant mechanical depth to what has been a very shallow job for a
very long time.
Currently, this is limited to the preferences and tolerances system -
hydroponics is now comprised of five 'reservoirs' of segmented portions
of the pipe system connected to trays, with a gas heater and cooler to
change temperature across the entire system, and you can cut off each
reservoir with valves to separate it from the rest and maintain its
current temperature.
Five tiers, each with a trait, have been implemented for the different
heat ideals of different plants. Plants from Adhomai and Moghes are the
most environmentally extreme, and cannot be grown outside of drastically
low and high temperatures respectively, limiting them to hydroponics
proper, whereas colder and warmer terrestrial plants can be grown at
room temperature but will grow much slower than if they were within
their preferences. **This means there will be plants that outright
cannot be grown in the garden.**
With this, hydroponics becomes an atmos puzzle. If you need to grow
nothing but mushrooms you'll probably send every tray cold, but if you
need a diversity of different temperature ranges you'll have to
fine-tune your setup and routine to have everything within their
preferences. Once you're done growing mushrooms off one reservoir, you
may turn the heat in it up so you can grow citrus, etc etc.
This also solves several bugs and makes a lot of QoL changes, the full
changelog will list everything.
<img width="608" height="320" alt="image"
src="https://github.com/user-attachments/assets/12e53224-d9be-4e69-9c48-6185d3303a14"
/>
<img width="384" height="608" alt="image"
src="https://github.com/user-attachments/assets/1a0c2b0c-8ad6-4f5c-b992-2e78035ab52d"
/>
<img width="640" height="512" alt="image"
src="https://github.com/user-attachments/assets/1cf837d1-3db5-440a-a465-071841febaea"
/>
### What about the mapping?
Atmos has been integrated into every hydroponics tray in the mapping
changes, rather than only on D1 like at present, to support the new
mechanics. I've moved as much stuff up to D2 as I could fit, in the
interest of getting players to the more visible and socially viable spot
rather than hiding in their basement. D1 is now exclusively intended as
a storage area, laboratory, and now has an expanded Hazardous Specimens
unit.
### To-do before review
- [x] Ensure that chefs can still do alien-specific menus without a
hydroponicist, now that they can't necessarily grow their stuff in the
garden - loadout produce box, maybe?
- [x] Remap xenobotany
- [x] Review whether every alien crop can still grow on its respective
in-game exoplanet - Adhomai might be okay? (Adhomai is essentially fine,
Moghes will need work before we go back into the sector)
- [x] Make sure the yield_mod interactions aren't explosive.
### Known issues
1. Yes, the examine on hydroponics trays is huge. In the long-term, IMO
this should probably be a TGUI.
2. The TGUI on seed storage units is clunky, this is also on the to-do
list for the future.
3. The logic for calculating growth is bad, it's very RNG-skewed.
Another thing for later.
4. Atmos mechanics like these can be pretty opaque to players, so this
will certainly require a wiki update shortly after merge describing
exactly what steps you should take to operate the new atmos equipment.
As the title says. The PR was done on the request of VeteranGary with
sprites provided by Noble Row.
The reasoning for it is to give some more visual variety, by allowing it
to appear over the standard security armor plate. It has been added as a
belt for that purpose, with the reasoning that there is the explorer's
belt that similarly is a chestrig.
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| icons/mob/belt.dmi | Noble Row (Aurora Station) | CC0 |
| icons/obj/clothing/belts.dmi | Noble Row (Aurora Station) | CC0 |
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>
Changes part of the name used in the code for sol alliance officer
lockers from "soll_officer" to "sol_officer".
I'm sure there's a joke to be made here involving the phrase "taking the
L".
---------
Signed-off-by: Tag103 <194812614+Tag103@users.noreply.github.com>
**JUST BECAUSE IT SAYS "DELETED" IN ICONDIFFBOT DOESN'T MEAN IT'S BEEN
REMOVED. IT CAN BE RENAMED OR MOVED SOMEWHERE ELSE. PLEASE STOP
SPREADING MISINFORMATION THAT I'M DELETING EVERYTHING. JESUS CHRIST.**
- **The only hats removed are from budg's hat bloat (except the newsboy
hat, which has been touched up)**
- Human origin lore hats have been moved to Human - Xenowear. **NOT
REMOVED. MOVED.**
(It was kind of strange anyway they got special treatment. They aren't
restricted in any way, though, so essentially no difference.)
- Vysokan hats all rolled together into one selection.
- Beanies rolled into one selection.
- Miscellaneous, colorable hats rolled into one selection.
- Miscallaneous hats rolled into one selection.
- Dominian consular clothing items moved to be jobspawn items, like
every other consular. (Alt uniform outfits should be out from the
loadout anyway.)
- Pilotka caps, and whatever else they're called are all now named as
sidecaps.
- Renamed the Visegradi Nyakas to ear-flap cap. (I understand the
sentiment of blending lore into stuff, but putting it in the name isn't
helpful. I tried looking up Nyakas and all I'm getting is an obscure
brand of wine.) (Description unchanged.)
- Renamed padded cap to tanker cap.
- Bucket hats rolled together into one selection. (Removed pre-colored
boonies because it's just a clone of recolorabled ones.)
- And anything else I can't remember.
**Please don't spread misinformation after me and send the goon squad
after me.**
**Please just fucking message me and ask. Oh my god.**
---------
Signed-off-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
This site is something of an experiment. It features a special mineral
deposit with lots of phoron. When the deposit is drilled, it'll activate
four mob spawners some distance away that'll send fauna towards it.
There can be a total of 20 active fauna on the map at once (5 per
spawner.) There's no limit on how many mobs can spawn in total (for
now.)
The idea is to make an away site with a clear goal and challenge, which
requires multiple people across different departments to accomplish
safely. Security to defend against the waves of fauna, engineering to
construct and maintain barricades/other defenses (very important),
mining to handle the drill, and of course medical in case something goes
wrong. You can't do it solo, trust me I've tried.
Once the deposit has been fully depleted, (takes about 15 minutes or so)
the team will have to sally out of their barricades and fight their way
back to their shuttle. Cause again, the mobs won't stop coming. I think
it's more interesting that way. But it ends with LOTS of fauna corpses,
of which the performance impact on a populated server might be too
severe to justify? I've no clue.
I also added some atmospheric sound and music which plays once the
deposit is drilled. Hopefully sets the tone without being too
overbearing.
This required a lot of code. I do not know how to code. I've tried to be
thorough, but may still want to review it under some extra scrutiny.
See the changelog for some other small tweaks.
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| sound/music/phoron_deposit.ogg | Reitanna Seishin & Zander Noriega
|CC0 & CC-BY 3.0 | https://creativecommons.org/publicdomain/zero/1.0/https://creativecommons.org/licenses/by/3.0/
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
## About PR
- Uses `locate()` instead of `get_step()` when determining banner's
location, while considering the set offset value (normally either 32 or
-32) to have an accurate result. This resolves banners having stands
while placed on walls after Init.
- Instead of checking where the user is standing, the banners now checks
the position it'll be placed upon, and whether this position has dense
objects except the ones that is fine to be placed upon. Resolves#18068
- Prevents banner duplication, resolves#18620
I am sorry for the shitcode in advance
---------
Signed-off-by: Kano <89972582+kano-dot@users.noreply.github.com>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
This PR gives you the ability to wash glassware (glasses, mugs, beakers,
vials, etc) and kitchenware (pots and pans) at the sink.
With the empty item in hand, left-click a sink on DISARM intent.
There are no mechanical or gameplay changes. Items don't get dirty, you
aren't required to wash anything after use, it's just a little text-only
interaction meant for roleplay and nothing more. However, there's
nothing stopping the Executive Officer from giving you the stink-eye if
you don't wash the trays before putting them away!
---------
Signed-off-by: ASmallCuteCat <neofelisnebulosa128@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
## About PR
- Introduces a dropship-esque Intrepid, making it feel more like a
public transport in a overpopulous city, while trying to avoid
chokepoints.
- Ports the CM's double seats.
- Removes access restriction from Intrepid's side airlocks, to be in par
with the main airlock.
- Deletes some rogue pipes near hangar bay.
- Re-adds a small oven which was introduced in #16449. With slight
tweaks and different colour palette.
This is probably an awful way to port CM's vehicle seats, but in testing
only issue I've found is: when the chair occupant punches someone, their
own buckle off-set will get reset. I am not sure why.
The way the double seats work is, it'll let anyone pass through as long
as both of the seats aren't occupied at the same time.
## Images
<details><summary>Details</summary>
<p>

</p>
</details>
---------
Signed-off-by: Kano <89972582+kano-dot@users.noreply.github.com>
Co-authored-by: hazelrat <83198434+hazelrat@users.noreply.github.com>
Currently, the Custodial Supplies Locator app provided X and Y coords of
every single mop, bucket, janicart, and cleanbot on the entire server.
This PR makes it so that these objects will only be registered to the
global list of custodial supplies if they are present on the Horizon on
init, and it will also provide Z coords so you can tell if they're on a
different deck.
The app also has a weird built-in GPS function that tracks the reader's
movements instead of the device's. Instead of fixing this to follow the
device, I just removed GPS feedback text- a Janitor can grab one of the
GPS units that comes in their lockers, and this also allows them to be
tracked by other units.
This implements a bunch of little QoL improvements and a few substantial
expansions in hydroponics intended to deepen the job's interactions with
hydroponics mechanics.
- Adds k'ois spores to hydroponics! Note these are only available in
hydroponics proper, the seed storage machine for the garden has been
split into a separate subtype that does not contain k'ois. This is
packaged with a small hazardous containment chamber to safely grow
dangerous crops, in addition to a decontamination area and a hazmat
closet. K'ois is something the kitchen is continually in demand of, and
it is the sole foodstuff of an entire species - I don't see why
hydroponics wouldn't be able to grow it.
- D1 hydroponics now has the same atmos equipment for changing the
temperature of trays as xenobotany, allowing you to take air from distro
and change its temperature across two separate reservoirs feeding into
trays. Different crops grow optimally at different temperatures, this
lets hydroponicists engage with this mechanic.
- A bunch of misc code QoL changes, including shifting the crates in
hydroponics from mapping to code.
- Makes empty first-aid kits spawn with a minimum of 16 storage space.
Previously, the storage you'd see in empty first aid kits was well, well
below how much actual first-aid kits with prefilled contents had.
- Expanded hydroponicist maintenance access a little, so they can now
access the garden and hangars through adjacent maints.
- Seed storage machines have cranberry seeds now.
- A few more items are in the biogenerator, in the interest of making
the hydroponicist a better generalist.
- Shifted around some of the contents of the biogenerator to prioritise
more important stuff, including moving flags to the bottom of the list.
The only item actually removed is the money bag - I'm not sure what use
you'd find for that.
- Adds autoinjectors and autoinhalers to the hydroponicist's herbalism
crate.


From the feedback I've been seeing while playing, the bar has become
*unfun* to play or to interact with. I don't think the scarcity PR has
helped improve player experience, at least for the bar. I've re-added
the drinks that were removed, including the cabinet of beer yokes in the
back.
HOWEVER. There are less of all of them, encouraging resupplies if
there's heavy use.
!!!! I have not touched any other changes the scarcity PR introduced.
Medbay and Engineering scarcity remain. Anything added to cargo remains
purchasable, and the lavatory vendor still exists. !!!!
Supersedes #20786
Updated balloon alerts with the latest changes from tgstation.
Improvements include a new plane for them, and their duration changes
depending on their length.
Unfortunately, since they were added, they have been abused for really
long text that is difficult to parse in-game (by myself included).
Balloon alerts are useful, but they are not smoking guns and have
limitations due to their lack of persistence. I have clamped down on
their abuse in favor of the standard established by tgstation, [seen
here](https://hackmd.io/0Cvr4hpcTe-KI6SbgfUWtw#balloon_alertballoon_alert_to_viewers).
We lack updated runechat so I will not propose this be a fully
implemented standard at this time, but I have cut down all existing
balloon alerts to size.
- rscadd: "Adds Lavatory vendors to the public bathrooms, that dispense
hygiene goods."
- refactor: "Migrates bartender's supply of 6 pack beers and Sencha teas
to the cargo database."
- refactor: "Migrates impact wrenches to the cargo database."
- balance: "Removes the extraneous dylovene, kelotane, bicaridine and
coagzulug in medical. Migrates medication to the medication closet."
- balance: "Removes the unused Nanomed Minis in medical. Replaces the
surgery side Nanomed Plus with a Nanomed Mini."
- balance: "Removes the two large medical kits from medical storage, and
the kit in the exam room. Moves the wheelchairs from the morgue lift to
medical storage."
- rscadd: "Adds cranberries to the game. Now you can actually make
cranberry juice!"
- refactor: "Juices found in soda machines, booze dispensers and the
booze-o-mat have been migrated to the cargo database."
- rscadd: "Cream and fatshouters milk cartons can be ordered from
cargo."
- balance: "Certain juices are now cartons when separated in a
CondiMaster."
- balance: "Removed coffee, milk and sugar from soda machines, as they
are made redundant by CoffeeMasters."
- balance: "Non-CoffeeMaster coffee machines now just dispense coffee
instead of espresso."
TL;DR
- Juices aren't free anymore - get them from supply, the botanist, or
alternative means.
- Soda machines don't dispense coffee, milk and sugar anymore. Since we
have coffee machines already.
- Migrates the stuff in the bar that just got shoved in through mapping
that shouldve been a cargo order in the first place.
- Adds lavatory vendors, which helps to replace manually mapped in
toiletries.
- Removes the extra medical supplies from medical that end up basically
unused for most rounds.
- Adds more things that can be ordered from supply.
- Un-powercreeps the impact wrench. It's made screwdrivers and wrenches
obsolete. Imagine if all of Medical's hyposprays were the CMO hypospray.
That's how it basically is right now.
It's going to be mildly inconvenient, sure. But I have full faith that
people will get used to it in a month. I feel kind of vindicated after
the suit sensors removal PR that the mass-complaints have ceased to be
an issue, and I feel it's going to be the same case here.
Anyway, yes, it's rather silly that the Big Ass Flagship doesn't
immediately have the latest and greatest stuff, but this is thinking
towards long term towards NBT2, where we'll definitely be running a lot
more slim.
**Also, please. Don't brigade this pull request. Just ping me in the
general Discord if you have anything to bring up. I'll try respond to
you if I'm available.**
https://github.com/Aurorastation/Aurora.3/issues/17355
Fixed check for airlock assembly deconstruction. Also added a friendly
feedback message about installing windows, not that I had trouble with
that recently or anything.
To allow the fluff maintenance panels to be opened even with low-tech
standard wrenches. Not only does it make sense, but also lets them still
be opened and worked with even if Engineering were to lose its default
impact wrenches.
To facilitate the mundane wrench being used for atmos panels as a 'fix
RP' action, opening and closing maintenance panels now must be done with
the Disarm intent (with description updated to communicate the fact).
---------
Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
Co-authored-by: hazelrat <83198434+hazelrat@users.noreply.github.com>
This implements several tweaks to the layout and contents of the
recently remapped hydroponics bay to make the space smoother and more
intuitive to play in.
The intention of the mapping here is to make D1 hydroponics a
non-liminal space to be in, it should have amenities that mean you can
spend a long time there comfortably - I believe this was also the
intention of the original PR. It contains most of the hydroponics
machines. This is also intended to ensure that you can comfortably spend
most of your time in D2 if you prefer, which is important as it's the
more visible area.
The empty middle row in the D1 hydroponics racks is intended to be an
intuitive spot to cultivate bees. There are two chairs at the desk since
there are two gardeners, and the vendors have been moved to a more
prominent spot on D2 to make it feel less liminal. I've replaced the
hatches under the hydroponics trays with outlines, as a green hatch
under a plant makes the plant pretty indistinct. Windoors have been
removed between the two areas, since they are no longer required to gate
chef access.


As the title says. Currently a 10% chance each time the random crate
spawn rolls but I'm open to reduce it if desirable.
---------
Signed-off-by: FlamingLily <80451102+FlamingLily@users.noreply.github.com>
Fixes an issue where you could not walk on the tile where a chainlink
fence existed. Altered the passing code and added some flags to ensure
it would check direction.
@RustingWithYou I tested it several times to make sure that it could not
be lept. It seemed the intention was for it to never be passable so
nothing living is able to move through it in this configuration. I left
the probability for projectiles to sometimes not pass.
Refactored (second passage) how movement works, now it's mostly in line
with TG handling and avoids calling 3 gazillion Cross() Uncross() etc.
on every atom in a turf.
Fixed EMP protection from species not actually protecting (this includes
the surge prevention for IPCs).
Fixed EMP 3D calculation runtiming because I forgot to make the value
absolute and it was doing the square root of a negative number.
It's now possible to queue the round to start with the Start Round verb
even while the system is initializing, for an even faster pain train to
enter the round and test things.
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.