## About The Pull Request
By right-clicking on a cable with wirecutters players can "clamp"
connections through a radial menu, preventing wires from linking to
wires in the same direction. This is indicated by a small clamp at the
blocked side of the node. RMBing again can allow you to unclamp links as
well.
https://github.com/user-attachments/assets/c2bfb375-2d2b-4e8b-9f5e-1372c0ab4eaa
Also rewrote wires to use tool_acts and improved some of the connection
code while I was at it.
## Why It's Good For The Game
Makes our wiring much more versatile and allows both players and mappers
to thread cables through smaller areas (like SM SMES rooms) easier
## Changelog
🆑
qol: You can now clamp cables by RMBing them with wirecutters in order
to prevent them from connecting to other cables in a certain direction.
refactor: Refactored cable interaction and some of connection code
/🆑
## About The Pull Request
- Fixes#94119
> This will require a different solution which someone smarter than me
has to figure out in the foreseeable future
Today me is now smarter than yesterday me. We basically just unmount
when the object is about to shuttle moved and remount after it has been
shuttle moved
This also map edits some objects that could not be mounted in shuttles
previously
## Changelog
🆑
fix: objects mounted in shuttle areas deconstruct when their support
structure is destroyed
fix: fixes runtime in arrivals shuttle when its request console is
destroyed
map: moved around some objects in shuttles so they can be mounted on its
walls again
/🆑
## About The Pull Request
Last Christmas we had and resolved this bug #88595 where via the
mechanic of buying random trash, Cargo could roll on the roulette to try
and get random Christmas presents and open them for random items.
This was removed because it's not supposed to work that way and was a
way of exploiting Christmas cheer for personal gain, which is grinchsome
behaviour.
That said, being able to order Christmas presents is also kind of
soulful, so this PR brings that mechanic back but on purpose this time.
During the Christmas season _only_, Cargo can spend 3000 credits of
their budget to order a "Surplus Christmas Gifts" crate which contains
4-6 presents _with pre-assigned recipients_.
In a similar system to addressed mail, only the person written on the
gift tag can open the present, so unless you're sufficiently scroogeous
to collect a huge pile of presents on the cargo room floor in hopes of
getting a couple with your name on (in my testing these contained raw
unbaked croissant dough, and a piece of paper from a space ruin) you
should mostly be using this to deliver generalised holiday cheer to the
crew rather than just yourself.
This PR also contains (maybe as more lines than the actual feature) a
refactor changing a bunch of boolean vars on `/datum/supply_pack` into
bitflags, because I needed to add one more and it seemed silly to have
so many booleans.
## Why It's Good For The Game
It allows those with the yuletide spirit to deliver some christmas cheer
to their fellow man, isn't that the season's reason?
## Changelog
🆑
add: When the game considers it to be Christmas, Cargo can order
additional Christmas gifts pre-addressed to random crew members.
/🆑
## About The Pull Request
Extends the part of the crafting unit test that ensures consistency
between the total mats of the components of a recipe (or rather, the
result of said recipe) and a generic instance of the same type as its
result, previously only implemented on food recipes.
## Why It's Good For The Game
This ensures a degree of consistency with the material composition of
various objects in the game. I couldn't do it in the original PR as that
one was too big already and it took months to get it merged, and have
the relative bugs fixed.
Currently a WIP as I slowly deal with the unit test reports.
## Changelog
🆑
refactor: Follow-up to the crafting/material refactor from months ago.
All objects crafted with stacks now inherit their mat composition (not
necessarily the effects and color) by default, while previously only a
few things like chair, sinks and toilets did. Report any object looking
or behaving weirdly as a result.
fix: The material composition of ammo boxes is no longer a 1/10 of what
it's supposed to be. It was a shitty hack to make it harder to recycle
empty ammo boxes. Instead, they lose materials as they're emptied now.
/🆑
## About The Pull Request
This PR makes several changes to trapdoors to remove wrong interactions
that occur should one be built on a shuttle:
- Trapdoors built on a shuttle will be carried along with the shuttle
when it moves. Even when they are open.
- If a shuttle lands on a trapdoor without breaking it, the trapdoor
will not function while the shuttle's floor lies on top of it.
- Shuttles with open trapdoors inside of them will not magically bring
open space into transit.
- A trapdoor moved on top of a non-openspace tile using a shuttle will
open to the turf that was originally under the shuttle.
## Why It's Good For The Game
Fixes#93924, and also adds a new feature to what is possible with
custom shuttles on multi-z maps.
## Changelog
🆑
add: Trapdoors built inside of a shuttle will move along with the
shuttle.
fix: Open trapdoors will not cause shuttles containing them to bring
open space into transit.
/🆑
## About The Pull Request
This 1st has to be PR'd so the integration tests can point out all
wallmounts that could not find a support structure to mount on. I then
will do many map edits to align them onto the closest atom
Yes we no longer use wall mount but atom mounted component. All objects
that are mounted on windows/tables & fences now also fall off when
destroyed
It'll probably be a WHILE before I can fix all wall mounts. Long day.
Expect me to misalign many stuff to fix failing CI so make sure to
provide suggestions when possible
Improved wallmount code overall
- Fixes#93793
## Changelog
🆑
fix: fixes all incorrectly maploded wall mounts that aren't actually
hanging on any support structure
fix: objects mounted on tables, windows & fences also fall off now when
destoryed
qol: lights can be mounted on windows
qol: cameras can be mounted on windows
qol: buttons can be mounted on tables
refactor: improved how wall mounts interact with objects as a whole
report bugs on github
/🆑
## About The Pull Request
When a camera update is triggered, it is instead added to a queue on a
background subsystem
An AI entering a camera chunk which is queued to update will force the
update immediately (bypassing the queue)
While the root problem of this is, ultimately, not addressed...
<img width="554" height="58"
alt="467828777-eff3f0e5-49d6-4997-b4d7-05eff6432155"
src="https://github.com/user-attachments/assets/c2d6a5f5-d958-463e-959f-116bd0dab475"
/>
...the change will ultimately prevent update spam from consuming all of
the server's resources - instead allocating updates to the backburner in
times of high server stress (or on multi-z maps)
## Changelog
🆑 Melbert
refactor: Refactored the way camera updates are handled to hopefully
reduce some lag. Report any oddities
/🆑
## About The Pull Request
What it says on the tin. Cargo now has new math for market elasticity,
each parameter and what it does is explained below
**1. Refactor**
1. **k_elasticity**: This is the elasticity as before applied on all
exports except now this is a floating-point value that swings from
`0->1` instead of 10e-10 like is the current case. This in laymen terms
is the percentile of an items actual cost that is sold on cargo [0 means
you get no credits, 0.5 means you get 50% of the items cost, 1 means you
get 100% of the items cost]. Whenever an item is sold on cargo this
value decreases by an amount that is determined by the next variable
2. **k_hit_percentile(default 5%)**: This is the value by which an
export `k_elasticity` decreases whenever an export is successful for
every unit of an item sold. The real formulae by which the exports
elasticity decreases is dependent on the total amount sold and is as
follows
<pre>k_elasticity -= amount sold (1 for most cases except stacks) *
k_hit_percentile</pre>
So subsequent exports yield lesser profits cause the elasticity
decreases. Now the rate at which the elasticity recovers is as follows
3. **k_recovery_time(default 10 minutes)**: This is the time (minimum
unit should be seconds) it takes for the elasticity to rebound back to
100% after it has reached full 0 but recovery process starts immediately
if it decreases at any point. So if elasticity becomes say 50% it means
it would take 5 minutes to reach 100% again
**2. Some Balance changes**
1. Profits earned from exporting gas is linear per mole sold so the more
gas you put in the more profits you get HOWEVER the max number of
credits you can make per canister is 15000 cr
2. Selling fish yields higher prices because it's no longer subject to
the old elasticity formula
3. Selling 50 sheets of anything will decrease future sale price by 10%
and will take 8 minutes to rebound back to 100% if it reaches 0
**3. Improvements:**
- `SSProcessing` subsystem no longer processes more than 180+ export
datums from round start itself but now starts out empty. It instead
processes only those exports whose elasticity has been impacted and
later cancels it after elasticity has reached 100% so performance of
this subsystem has been drastically improved
- export datums now respect `abstract_type` meaning they won't be
created and can be used as a skeleton body for subtypes. So datums like
`datum/material` & `datum/material/market` are not created anymore but
only their subtypes are so we save processing power & memory
- Shaved of a lot of dead exports that went unused
## Changelog
🆑
balance: cargo exports now have different prices with applied elasticity
code: Improved performance of export code
qol: stock blocks can be recycled for materials & show up as stock
blocks in order console sold items
refactor: refactored cargo export code in whole. Report bugs on GitHub
/🆑
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147
full credit to @Kapu1178 for the juice
instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
## About The Pull Request
- Makes shuttle engines no longer use weakrefs, they now use normal
references
- Makes shuttle engines no longer give negative initial engine power on
being unconnected
## Why It's Good For The Game
> Makes shuttle engines no longer use weakrefs, they now use normal
references
- Weakrefs are for when we care about an object but it does not care
about us, shuttles literally have a list of engines. I think they do
kind of care about us and are going to hard-delete if the engines aren't
deleted first. So might aswell ignore the more expensive weakrefs and
use normal ones instead.
> Makes shuttle engines no longer give negative initial engine power on
being unconnected
- So imagine this:
> I wrench in the engine, cool its now connected to the shuttle
> I weld the engine, fun it now provides shuttle power
> I unweld the engine, damn it now does not provide shuttle power
> I unwrench the engine, unsyncing it. It now provides negative power
because unsyncing it made it give less power again
> I cry
> My shuttle now needs twice the engines it needed before
Not fun, so unsyncing no longer takes away engine power.
## Changelog
🆑
fix: shuttle engines no longer provide negative power to your shuttles
if you unwrench them.
/🆑
## About The Pull Request
This PR makes the following changes to code relevant to shuttle
construction.
- (Un)welding shuttle engines now only checks if the tool has 1 fuel,
which is how much is already used in the process.
- Constructed shuttle engines that were built from anchored machine
frames start in the wrenched but unwelded state.
- Fixes a runtime that occurs when expanding shuttles.
- Fixes the incorrect logic in the shuttle blueprint UI responsible for
#92986.
- Makes several changes to the wording of several functions of the
shuttle blueprint UI in the hopes of better conveying what each button
does.
## Why It's Good For The Game
Fixes#92986, as well as some other issues I may not have found in my
brief search.
## Changelog
🆑
fix: You no longer need 40 welding fuel to start welding or unwelding
shuttle engines, despite only consuming 1.
fix: Shuttle engines constructed from anchored machine frames start in
the wrenched-but-unwelded state.
fix: Expanding custom shuttles from shuttle frames is once again
possible without href exploitation.
fix: Shuttle expansion now correctly checks for other shuttle docking
ports the expanded shuttle's footprint would encroach upon.
qol: Tries to make some of the buttons in the custom shuttle UI more
indicative of what they actually do.
/🆑
## About The Pull Request
Fixes#92188
1. The Accounting console now has a new UI
<img width="757" height="486" alt="image"
src="https://github.com/user-attachments/assets/0c6ce73f-ae1c-4a54-b6ba-bcc3b3232d13"
/>
2. The Accounting console can now dish out advances on paychecks, giving
you for full paycheck early. You can give up to 3 advances. This of
course means your next paycheck is not paid out when relevant.
3. The Accounting console can now change paycheck sizes of crewmembers -
up to 1.5x and down to 0.5x.
## Why It's Good For The Game
- Gives the HoP some more duties, now being able to dish out money on
request, reward good behavior, or punish bad behavior.
## Changelog
🆑 Melbert
add: Accounting Console: New UI!
add: Accounting Console: Now can give advances to crewmembers
add: Accounting Console: Can now give pay raises or pay cuts
add: Accounting Console: Now only printable in the security lathe
add: Accounting Console: A spare board is now now found in secure tech
storage.
fix: Fix vending machines adding payments to audit log twice.
fix: Non-crewmembers are no longer shown in the accounting console
/🆑
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
## About The Pull Request
This fixes several bitfield operations that were missing parenthesis
encapsulation. I noticed this problem in:
- #92601
And decided to use regex to search for similar patterns which I came
across in:
- Move loops bypassing the `MOVELOOP_STATUS_RUNNING` status
- Elastic arms mutation bypassing `ABSTRACT` object flags for picking up
objects
- Species radiation bypassing `HEAD_HAIR` hairstyle flags for balding
- Damaged APC board status bypassing `EMAGGED` and `BROKEN` status for
screentips
- Shuttle cleanup code bypassing `MOVE_CONTENTS` for moving old turfs
- Tram crossing signals bypassing `NORTH` and `EAST` direction checks
## Why It's Good For The Game
Code behaves as intended.
## About The Pull Request
Converts as many time vars expressed in deciseconds as I could find to
use time defines.
## Why It's Good For The Game
Makes these values neater and more readable.
## Changelog
🆑
code: Converted a lot of time-based variables to be expressed with time
defines.
/🆑
# Conflicts:
# code/modules/clothing/head/hat.dm
# code/modules/clothing/shoes/boots.dm
# code/modules/clothing/suits/utility.dm
## About The Pull Request
Converts as many time vars expressed in deciseconds as I could find to
use time defines.
## Why It's Good For The Game
Makes these values neater and more readable.
## Changelog
🆑
code: Converted a lot of time-based variables to be expressed with time
defines.
/🆑
## About The Pull Request
This adds a `data` argument to the record_feedback used in the cargo
shuttle's `buy()` proc, so that when we parse the data on superset, we
have an additional field to filter by to better represent how some of
these personal orders are being compared against each other.
## Why It's Good For The Game
Namely, I've been trying to get my data together again to start writing
some design docs and get to fixing some issues again, and something's
been bothering me about how the superset data was being collected on
cargo crate purchases, so I've added an extra field to be able to better
sort between the collected data and better represent the different
methods of personal orders available via cargo, so we can make better
decisions about the collected data.
## Changelog
No player facing changes.
## About The Pull Request
This adds a `data` argument to the record_feedback used in the cargo
shuttle's `buy()` proc, so that when we parse the data on superset, we
have an additional field to filter by to better represent how some of
these personal orders are being compared against each other.
## Why It's Good For The Game
Namely, I've been trying to get my data together again to start writing
some design docs and get to fixing some issues again, and something's
been bothering me about how the superset data was being collected on
cargo crate purchases, so I've added an extra field to be able to better
sort between the collected data and better represent the different
methods of personal orders available via cargo, so we can make better
decisions about the collected data.
## Changelog
No player facing changes.
## About The Pull Request
Deletes the knockdown part of "on shuttle move while buckled", leaves
just immobilize.
## Why It's Good For The Game
I added this not long ago but it didn't really end up working as I
expected and causes issues like randomly losing your cigarette during
shuttle launch, so... eh. It can go.
## Changelog
🆑 Melbert
del: If buckled during a violent shuttle launch, you'll no longer be
knocked down + immobilized, instead just immobilized. Unbuckled effects
are unchanged.
/🆑
## About The Pull Request
Deletes the knockdown part of "on shuttle move while buckled", leaves
just immobilize.
## Why It's Good For The Game
I added this not long ago but it didn't really end up working as I
expected and causes issues like randomly losing your cigarette during
shuttle launch, so... eh. It can go.
## Changelog
🆑 Melbert
del: If buckled during a violent shuttle launch, you'll no longer be
knocked down + immobilized, instead just immobilized. Unbuckled effects
are unchanged.
/🆑
## About The Pull Request
- Fixes#82910
Cargo now adjusts the material market quantity & prices when the shuttle
is called from the order console itself instead of adjusting it after
the shuttle arrives 1 minute later. This has 2 implications
- If the market crashes 1 minute after calling the shuttle i.e when it
arrives, the ordered quantities are not affected because it retrieved
those sheets from the market at the time of calling the shuttle from the
order console
- If some orders could not be satisfied because there were not enough
materials at the time of calling the shuttle then instead of arriving
with an empty crate a detailed summary is displayed explaining which
orders could not be delivered & why, even cancelling the order if needed
**a) Order adjusted**

**b) Order adjusted & cancelled**

**c) Order fully cancelled**

## Changelog
🆑
fix: ordering materials from the GMM won't result in empty crates & will
display detailed feedback if there weren't enough sheets in the market
/🆑
## About The Pull Request
**1. Makes the machine creation process from both efficient.**
The machine frame no longer creates & deletes the machines old component
parts before moving in the new parts. It instead now passes its parts
directly to the circuit boards `apply_default_parts()` meaning the old
parts are never created and the new ones get applied directly. This also
mean it does not have to again call `RefreshParts()` as the machines
`Initialize()` proc will do that for us by default so the performance is
just faster now.
Flatpack box also benefits from this and it will need it as stated below
- Fixes#86514. As the circuit board is passed to the machine's
`Initialize()` proc during reconstruction so it sets it's
`all_products_free` from the board both during mapload & when player
constructed from either machine frame & flatpack
**2. Flatpack enhancements**
- The flatpack box now passes its stored circuit board into the machine
meaning any changes made like with a screw driver or such are preserved
in the newly created machine rather than the board getting deleted & the
machine creating the default board
- Flatpacker now accept custom component parts that replaces its stored
circuit board default parts. This implements
https://github.com/tgstation/tgstation/pull/91670#issuecomment-2977259973
meaning instead of the vendor created from the flatpacker starting out
empty it now accepts the refill canister and will package both of them
together. Then during deployment that stored canister is stored back in
the vendor meaning instead of starting out empty you get to carry over
all your previous stock
Depends on https://github.com/tgstation/tgstation/pull/91512 because of
named arg conflict. Keep this drafted till that gets merged
## Changelog
🆑
qol: flatpacker now accepts custom component parts(like vendor refill
canister) along with the circuit board so you can carry over your
previous stock during deployment rather than starting out empty
fix: flatpack boxes now passes its stored circuit board into the machine
thus preserving its properties instead of creating a default board in
the machine
fix: vending machines reconstructed on station from circuits loaded off
station(having free products) will continue to sell free products
code: machine construction via flatpacker/machine frame is faster
performance wise
/🆑
## About The Pull Request
Adds a remote which can be printed with sufficient research, or
auto-linked by mapping the remote ontop of a nav console. Once linked it
can send off or call the shuttle towards a home and away destination.
These destinations can be changed with alt+rmb.
## Why It's Good For The Game
Let people send and call their shuttle without being at the nav
computer. Really useful for antags that arrive on a shuttle, so their
shuttle can be safe in deepspace while they fuck about onstation.
(Should pirates have this?)

## Changelog
🆑 theOOZ, kittysmooch
add: Adds the shuttle remote item unlocked with shuttle engineering
research, it lets you remote control the whiteship or custom shuttles.
/🆑
## About The Pull Request
- Fixes#82910
Cargo now adjusts the material market quantity & prices when the shuttle
is called from the order console itself instead of adjusting it after
the shuttle arrives 1 minute later. This has 2 implications
- If the market crashes 1 minute after calling the shuttle i.e when it
arrives, the ordered quantities are not affected because it retrieved
those sheets from the market at the time of calling the shuttle from the
order console
- If some orders could not be satisfied because there were not enough
materials at the time of calling the shuttle then instead of arriving
with an empty crate a detailed summary is displayed explaining which
orders could not be delivered & why, even cancelling the order if needed
**a) Order adjusted**

**b) Order adjusted & cancelled**

**c) Order fully cancelled**

## Changelog
🆑
fix: ordering materials from the GMM won't result in empty crates & will
display detailed feedback if there weren't enough sheets in the market
/🆑
## About The Pull Request
**1. Makes the machine creation process from both efficient.**
The machine frame no longer creates & deletes the machines old component
parts before moving in the new parts. It instead now passes its parts
directly to the circuit boards `apply_default_parts()` meaning the old
parts are never created and the new ones get applied directly. This also
mean it does not have to again call `RefreshParts()` as the machines
`Initialize()` proc will do that for us by default so the performance is
just faster now.
Flatpack box also benefits from this and it will need it as stated below
- Fixes#86514. As the circuit board is passed to the machine's
`Initialize()` proc during reconstruction so it sets it's
`all_products_free` from the board both during mapload & when player
constructed from either machine frame & flatpack
**2. Flatpack enhancements**
- The flatpack box now passes its stored circuit board into the machine
meaning any changes made like with a screw driver or such are preserved
in the newly created machine rather than the board getting deleted & the
machine creating the default board
- Flatpacker now accept custom component parts that replaces its stored
circuit board default parts. This implements
https://github.com/tgstation/tgstation/pull/91670#issuecomment-2977259973
meaning instead of the vendor created from the flatpacker starting out
empty it now accepts the refill canister and will package both of them
together. Then during deployment that stored canister is stored back in
the vendor meaning instead of starting out empty you get to carry over
all your previous stock
Depends on https://github.com/tgstation/tgstation/pull/91512 because of
named arg conflict. Keep this drafted till that gets merged
## Changelog
🆑
qol: flatpacker now accepts custom component parts(like vendor refill
canister) along with the circuit board so you can carry over your
previous stock during deployment rather than starting out empty
fix: flatpack boxes now passes its stored circuit board into the machine
thus preserving its properties instead of creating a default board in
the machine
fix: vending machines reconstructed on station from circuits loaded off
station(having free products) will continue to sell free products
code: machine construction via flatpacker/machine frame is faster
performance wise
/🆑
## About The Pull Request
Adds a remote which can be printed with sufficient research, or
auto-linked by mapping the remote ontop of a nav console. Once linked it
can send off or call the shuttle towards a home and away destination.
These destinations can be changed with alt+rmb.
## Why It's Good For The Game
Let people send and call their shuttle without being at the nav
computer. Really useful for antags that arrive on a shuttle, so their
shuttle can be safe in deepspace while they fuck about onstation.
(Should pirates have this?)

## Changelog
🆑 theOOZ, kittysmooch
add: Adds the shuttle remote item unlocked with shuttle engineering
research, it lets you remote control the whiteship or custom shuttles.
/🆑
## About The Pull Request
1. Mail is now shipped every 2 SSeconomy ticks, rather than every
SSeconomy ticks. The amount of mail per round will not change.
2. Mail is not shipped during Red or Delta alert. Mail will still
continue to pile up for if the station returns to blue alert.
## Why It's Good For The Game
1. The time between cargo shipments is like five minutes. This means you
get mail practically every cargo shipment, if only a few pieces. I think
it's a bit spammy, so doubling time between shipments means you actually
get substantial shipments of mail and you don't have to pay attention to
mail constantly.
2. In the event of an emergency and the cargo shuttle has to fly back
and forth for emergency supplies (like guns for a blob), being blocked
because of mail is annoying. It's also reasonable from an in character
perspective that they would hold your mail until the emergency is
resolved.
## Changelog
🆑 Melbert
qol: Mail is now shipped every 10 minutes rather than every 5 minutes.
The amount of mail remains unchanged (so you get 1 crate with 6 mail
instead of 2 crates with 3 mail each).
qol: Mail is no longer shipped while the station is on red alert - mail
held will be sent if the station returns to blue alert.
/🆑
(cherry picked from commit 0675ddf6cb)
## About The Pull Request
1. Mail is now shipped every 2 SSeconomy ticks, rather than every
SSeconomy ticks. The amount of mail per round will not change.
2. Mail is not shipped during Red or Delta alert. Mail will still
continue to pile up for if the station returns to blue alert.
## Why It's Good For The Game
1. The time between cargo shipments is like five minutes. This means you
get mail practically every cargo shipment, if only a few pieces. I think
it's a bit spammy, so doubling time between shipments means you actually
get substantial shipments of mail and you don't have to pay attention to
mail constantly.
2. In the event of an emergency and the cargo shuttle has to fly back
and forth for emergency supplies (like guns for a blob), being blocked
because of mail is annoying. It's also reasonable from an in character
perspective that they would hold your mail until the emergency is
resolved.
## Changelog
🆑 Melbert
qol: Mail is now shipped every 10 minutes rather than every 5 minutes.
The amount of mail remains unchanged (so you get 1 crate with 6 mail
instead of 2 crates with 3 mail each).
qol: Mail is no longer shipped while the station is on red alert - mail
held will be sent if the station returns to blue alert.
/🆑
## About The Pull Request
Flatpacks pass an arg into ``on_construction`` which makes vendors wipe
their inventory to prevent duping by repeatedly flatpacking a vendor to
refill its inventory.
Closes#91615
## Changelog
🆑
fix: Flatpacked vendors start empty to prevent duping
/🆑
## About The Pull Request
Makes it so new arrivals automatically unbuckle from the seat when the
arrival shuttle lands on station, this also fixes some logic from #91504
that actually makes the intended "If you're buckled on a shuttle which
has "knockdown" force, you won't be paralyzed - instead, just knocked
down and immobilized for a short period (so you can still use your hands
/ act)." from that PR work
## Why It's Good For The Game
New players should be able to just waddle away from the arrival shuttle
to actually play the game instead of being stuck on their seat trying to
find their seatbelt for 30 minutes (this situation has actually happened
before).
## Changelog
🆑
qol: With Nanotrasen's brand new Auto-Seats™, late crew members will now
automatically unbuckle from their seats when the arrival shuttle arrives
at the destination!
fix: Leaving your seat too early on a shuttle with a knockdown force
will now properly immobilize and knockdown you as intended.
/🆑
## About The Pull Request
Flatpacks pass an arg into ``on_construction`` which makes vendors wipe
their inventory to prevent duping by repeatedly flatpacking a vendor to
refill its inventory.
Closes#91615
## Changelog
🆑
fix: Flatpacked vendors start empty to prevent duping
/🆑
## About The Pull Request
Makes it so new arrivals automatically unbuckle from the seat when the
arrival shuttle lands on station, this also fixes some logic from #91504
that actually makes the intended "If you're buckled on a shuttle which
has "knockdown" force, you won't be paralyzed - instead, just knocked
down and immobilized for a short period (so you can still use your hands
/ act)." from that PR work
## Why It's Good For The Game
New players should be able to just waddle away from the arrival shuttle
to actually play the game instead of being stuck on their seat trying to
find their seatbelt for 30 minutes (this situation has actually happened
before).
## Changelog
🆑
qol: With Nanotrasen's brand new Auto-Seats™, late crew members will now
automatically unbuckle from their seats when the arrival shuttle arrives
at the destination!
fix: Leaving your seat too early on a shuttle with a knockdown force
will now properly immobilize and knockdown you as intended.
/🆑
## About The Pull Request
1. Adds Handrails, currently mapper only. [Sprite ported from
Baystation](https://github.com/Baystation12/Baystation12/blob/dev/icons/obj/structures/handrail.dmi).
This is just a small fluff object designed to be put onto shuttles.
Players can click on it (or mouse drop) to buckle to it (grab it),
keeping them from being thrown around on shuttle launch.

2. Adds Shuttle chair restraints. [Sprite ported from
Aurora](https://github.com/Aurorastation/Aurora.3/blob/master/icons/obj/structure/chairs.dmi),
though altered a decent amount. They flip up with no one seated and flip
down when someone buckles, but they have no gameplay effects (ie, they
don't require a do-after, they don't block hands, etc etc)


3. Some objects now have unique feedback messages for buckling - you sit
on chairs, or lay down on beds. This message will change depending on if
the mob is restrained, so it's a bit more obvious when someone is tied
to a chair vs just sitting down.

4. If you're buckled on a shuttle which has "knockdown" force, you won't
be paralyzed - instead, just knocked down and immobilized for a short
period (so you can still use your hands / act).
## Why It's Good For The Game
1. Gives mappers some additional fluff for shuttles, especially if their
shuttle has knockdown force.
2. Adds muh immersion to shuttle rides. Just a flavor thing.
3. Adds muh immersion to sitting down at the bar. Again just a flavor
thing.
4. I did this to make handrails work, but I can find an alternate
workaround if so desired.
## Changelog
🆑 Melbert, sprites from Baystation / Aurorastation
add: Adds grabbable handrails (mapper only for now)
image: Adds a visual effect to buckling to shuttle seats
qol: Different objects have different chat messages for buckling.
qol: If you're buckled in on a violent shuttle ride, you will be knocked
down and immobilized, but not fully stunned (ie: can still use hands).
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>