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."
## About PR
Fixes the faulty access (req_access > req_one_access) of the command
noticeboard in the central ring. Currently only the Captain can open it,
which is not intended. Apologies for the inconvenience.
# Summary
This PR adds trash to the persistence system.
- Trash becomes persistent the moment it is dropped unless it is dropped
in a maint or the disposal room.
- It looses persistence when it lands in a maint/disposal room or gets
picked up again.
- Persistent trash can be found up to three days.
Those are the base rules, some trash types have additional rules.
List of trash to be implemented:
- [x] Basic trash (snacks and such)
- Cigarette buts
- spitwad
- Burned matches
- [x] Broken bottles
- [x] Torn inflatable (-doors)
> Littering is a i120 violation and can be punished with 3-7 minutes of
prison time or with a 40-150 credit fine.
> Stop littering and keep the ship clean.
## Follow-up tasks
- [x] Update GitHub Wiki: Add section on how to add persistent trash
types.
- [x] Update GitHub Wiki: Make persistence_get_content nullable/empty.
A full overhaul of Xenoarchaeology and its layout. Keeping the same size
of the hull and rooms for the most part. Doing its best to match both
deck two's re-mapped RnD and the other rooms of deck one.
Adding new areas, a grate and consolidating some things while stripping
things down to their essentials.
1. Like, removing 1 anomaly suit from the four. Two main ones, one in
the back.
2. Leaving the anomaly containers less scattered. Two in the chamber,
four in storage.
3. Adding some straight jackets and zipties to the supplies for test
subjects previously in Anomaly Chamber A. Incase the madness crystals or
whatever make things get spicy.
4. Making the gas-canisters overall more secure.
5. Seperating Xenoarchaeology by a door from the AA lift.
6. Adding a presentation room to the department intended to present
their findings for RP purposes.
7. Adding a cell-charger and empty cell. Mostly so you can see if the
anomaly is a battery drainer or charger if you're a human.
8. Adding a phoron bottle. (It's an activation index to splash it on
some anomalies, just not listed on the wiki.)
9. Adding insulated gloves in-case you need to move the emitter to an
odd spot. But, I generally set up spots for the emitters in all the
chambers.
10. Adding a Xenofauna gun, because Xenobio has one and they're even
less likely to need it then Xenoarchaeology. So why not give it to them
when they can spawn bears and hivebots on themselves?
If I missed someone, feel free to ask or mention it.
<img width="1168" height="789" alt="image"
src="https://github.com/user-attachments/assets/661b0ead-bc4b-48e9-84fa-bc62a9f4f5aa"
/>
StrongDMM Screenshot.
<img width="1251" height="1214" alt="image"
src="https://github.com/user-attachments/assets/d13b9f80-10fe-4484-890f-d0476f1d2a21"
/>
(In-game screenshot. I've loaded this thing up several times. The
buttons work.)
This adds the price scanner, crate scanner and a clipboard to the hangar
technician lockers.
It also add the various scanners alongside the quikpay to the toolbelt,
as it could already have the EFTPOS scanner.
Lastly while doing this, I removed some of the department clothes from
the lockers that were already in their drobe.
Now almost all non-command clothes should be found in the department
drobes, instead of the various lockers. I might have missed something
somewhere though.
Drobes can also be restocked by the vended items.
Lastly, the chaplain drobe had a couple of taj religious clothing added
to it after confirming with Catsin that it should be.
A slight clean up to Dominia flags.
- Zhurong Flag added: description text by Schwann / Human Lore
- Kazhkz and Han'san flags removed from loadout per request of Captain
Gecko / Unathi Lore
- Kazhkz, Han'san and Imperial Diona flags slightly tweaked. They still
do occationally appear in random loot, so the flavour text (and name for
the diona flag) have been adjusted to make sure they're not completely
lore breaking in those instances.
---------
Signed-off-by: Fyni <itsfyni@gmail.com>
Co-authored-by: FlamingLily <80451102+FlamingLily@users.noreply.github.com>
This adds a parcel cart to the mail room in operations, which can be
loaded with up to 17 packages. These packages can be any that can be
held in the hand, so not crates but anything smaller effectively yes as
long as it can be wrapped in package wrapper.
When it is loaded with 5 packages, it gives a slowdown to the person
pushing it, and further slowdown at 11 packages.
The cart can have a total of 17 packages at the moment, as that is the
amount of different sprites I have for it.
The code is based on the engineering cart, and also contain a small
bugfix so the engineering cart give back steel when taken apart, as that
is what is used to build it.
https://github.com/user-attachments/assets/b8613c9e-55e1-4f76-926a-60f4acd6269e
### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| icons/obj/parcelcart.dmi | Tomixcomics (Aurora Station) | CC-BY |
## About PR
This PR fixes the wrongly inherited access from the parent sign and
replaces `req_access` with the proper `req_one_access` list.
Apologies for the inconvenience.
## About PR
This PR re-sprites and expands notice boards.
With the persistence update I expect an increase in utilizing notice
boards. The current ones are quite old and severely limited by only
allowing five pieces of paper tacked onto them.
So let us change that:
(updated final iteration)
> <img width="1083" height="412" alt="image"
src="https://github.com/user-attachments/assets/112f19fe-2fec-4bb1-b276-138301e7b9c5"
/>
Close up of the glass overlay:
> <img width="370" height="164" alt="image"
src="https://github.com/user-attachments/assets/c8dbde23-7a52-497c-b43a-927598829725"
/>
Regular notice boards now support up to twenty (20) pieces of highly
informative pieces of paper pinned up by the crew.
Command (lockable) notice boards support up to six (6) pieces of very
important information by your beloved departmental heads.
### FAQ
Q: Why is there a discrepancy between the command and regular notice
boards?
A: Command is expected to pin up actually important information. The
incentive is that command is a bit more conscious what they pin in
these, now that they persist through rounds.
Q: Why twenty for the regular board?
A: Super full notice boards are funny. I may add even more, depending on
how long I need to finish the code.
Q: Why is there stuff in the screenshots redacted?
A: It is for a feature for the command notice boards but I am not sure
yet if it is desirable or practical to have.
Q: Why does your code look so bad?
A: Sorry :( I put up the PR so I get help or co-authored by people who
actually know what they are doing.
> [!IMPORTANT]
> The new notice boards have not been mapped in yet! 😃
---------
Signed-off-by: KingOfThePing <43940569+KingOfThePing@users.noreply.github.com>
Co-authored-by: FlamingLily <80451102+FlamingLily@users.noreply.github.com>
## About PR
This PR adds a new sign to the (also new) commissary.
- Currently there are two signs to be selected from. The extended
description gives a hint on the differences of the two stores and what
they sell.
- The signs can be powered off in case the commissary is to be
temporarily closed (not confused with the generic off-state).
- The sign lends itself to various additions later down the line.
- This could lead to the associated representatives to have a
role-playing angle, too.*
- More expansions for the commissary is coming soon.
I had great assistance by the wonderful @kano-dot who helped me realize
this code-wise.
Stay tuned for more really good additions for the commissary soon.
But for now, please enjoy:
> Signs:
>

> Commissary now including the sign (It can be seen approaching from
both sides):
> <img width="985" height="717" alt="image"
src="https://github.com/user-attachments/assets/5b005a6c-405a-4179-882f-61c57dbf68b6"
/>
*This was once revealed to me in a dream.
this PR turns the cargo shuttle into a cargo elevator.
### screenshots
<details>
<summary>view</summary>
### cargo elevator hatch

### cargo elevator

</details>
### FAQ
**Q:** why do things still cost money?
**A:** things still have value, departmental budgets, and paper trails.
**Q:** why is there still a fee to use the elevator?
**A:** maintenance costs.
**Q:** what happens if i'm on the hatch when the elevator comes?
**A:** you fall down onto the elevator and hurt yourself.
**Q:** how do bounties still make sense?
**A:** keep them in storage for next port. plenty of reasons to make up.
* Alot of newer group loadouts were missing their factions hardsuit,
despite that being the standard for most of them, so this gives those to
the faction loadouts that had appropriate ones.
* Also gave the Solarian hardsuit loadout a version with modules since
it was an empty version unlike the other hardsuits previously. Used the
fsf module set for that since their regular equipped version had a pulse
rifle module for some reason, suit itself should still be the same.
---------
Co-authored-by: Big Rat <lienesica@gmail.com>
## About PR
This PR adds a few miscellaneous directional and otherwise useful signs,
both for the Horizon and potential away sites. The new ones can be seen
in the screenshot below. It also enables the use of one already existing
but not coded in sign.
As the title implies more is on the way. But for now, please enjoy.
> [!IMPORTANT]
> None of the signs have been added yet to the Horizon or elsewhere. 😀
> Addition to signs.dmi:
> <img width="1081" height="212" alt="image"
src="https://github.com/user-attachments/assets/d5d9bca3-48c1-45b5-8453-59ee0495c96e"
/>
Ports the snake from Baystation over to Aurora.
No snakes have been placed ingame, but they're on the Technomancer
"Summon Creature" list and the Random Animal Crate object has a chance
to spawn a snake crate.
All credit for the snake, snake_m, and snake_dead sprites goes to
Baystation. I modified the original sprite to create the snake_rest
sprite.
---------
Signed-off-by: ASmallCuteCat <neofelisnebulosa128@gmail.com>
Co-authored-by: FlamingLily <80451102+FlamingLily@users.noreply.github.com>
From a request I saw a bit ago, I have now added breath analyzers to the
security officer and warden lockers, should they wish to use them. It is
mostly intended to check if people are drunk on duty or similar.
Investigators were given a half gas mask, given the amount of
pepperspray used in some cases and they were the only ones not to get it
in the department. If they want the bigger mask, they can ask the
warden.
Lastly while I was messing around in the file, I cleaned out the cadet
and investigator locker slightly. The clothing items that already
existed in the security drobe were removed from their lockers. The
security officer and warden lockers were already free of that, so they
did not get anything removed.
# 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)*
## About PR
Due to previously being decals, floor plaques weren't able to inherit
their varedited descriptions and be interacted in any way.
Now they can be read, stolen and ~used in self-defense~ occupy a place
in our lives.
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