## About The Pull Request
This should fix new PRs that are failing unit tests due to irrelevant
mapping issues from a space ruin and weirdly placed firelock.
## About The Pull Request
Depends on #94064 for the unit test but offers a better method for
finding an atom to mount on
- Finding a mount now takes into consideration the objects pixel x & y
offsets meaning diagonal mounting is now supported. Gives great
flexibility for mappers
- If you don't want to use pixel offsets but default back to using the
objects direction that behaviour is still preserved. Useful if your
object uses directional icon states(lights & cameras for now) AND don't
use offsets
- If no direction could be specified then as the last resort it defaults
back to the objects local turf for mounting
## Changelog
🆑
fix: all mounted objects on tables, fences, windows & walls should fall
of correctly when the atom it is placed on is destroyed
fix: security telescreen now falls off when their mounted wall is
destroyed
fix: defib wall mount falls off when their mounted wall is destroyed
fix: floor lights are mounted to the ground/catwalk/tram floor they are
sitting on meaning destroying it will destroy the light
fix: wall mounted plaques now fall off when their mounted wall is
destroyed
/🆑
## About The Pull Request
Continuation of #94059. Replaces the following signs with their
directional helpers
- `/obj/structure/sign/departments/cargo :
/obj/structure/sign/departments/cargo/directional`
- `/obj/structure/sign/warning/vacuum/external :
/obj/structure/sign/warning/vacuum/external/directional`
## Changelog
🆑
qol: added mapping directional helper for cargo & vacuum signs allowing
them to interact with fire/acid on their mounted turf
/🆑
## About The Pull Request
This PR makes all R&D console boards that are either printed or sourced
from tech storage start out locked. They can be unlocked by swiping them
with an ID that has research access.
R&D consoles can also be unlocked with an emag, but doing so will break
their comms circuit as well, making all researched nodes broadcast over
public comms. You can still emag the console itself after it's been
constructed without breaking it in any way, while also silencing
announcements instead. (that's definitely a noob trap, but it's out of
scope for this PR)
The reason why the tech storage board is locked as well is because the
goal of this PR is to stop engineers from making R&D consoles, and
engineers have access to tech storage. Leaving the board unlocked and
moving it to secure tech storage would make engineers break in there
every shift.
The changelog basically has a FAQ for "Okay, so what do I do instead?",
because I know people will be confused about what route they're intended
to take when science closes their desk shutters for the umpteenth time
this week.
## Why It's Good For The Game
Engineering has a habit of making an R&D console every round to bypass
having to ask science or a head of staff to research things. Locking the
consoles at least makes engineers consider asking science to do
science's job.
Note that this doesn't solve the issue entirely, it just removes the
easiest and most convenient way of bypassing science. Engineers can
still break into R&D extremely easily using their wire knowledge, and do
so regularly.
More importantly though, this might shine some light on the fact that
heads of department like the CE have remote access to the research
network via their PDAs. This means engineers can ask the CE to research
things for them.
Asking people with access to the research network to research things is
a lot better for roleplay and immersion than having engineering
construct R&D consoles every shift.
## Changelog
🆑
balance: R&D console boards sourced from printing or tech storage are
now locked by default. It's recommended to ask your respective head of
department or the science department to complete research for you. Heads
of department can remotely access the research network using their PDAs.
/🆑
## About The Pull Request
Tin. I just ran UpdatePaths, which automatically does this. The recent
script to root out all the nearspace flaky test causing issues made some
changes that were causing every UpdatePaths run to create diffs
downstream.
## Why It's Good For The Game
Helps with map parity for downstreams.
## Changelog
Nothing player-facing
## About The Pull Request
There is technically an `/obj/item/stamp/granted` in that one traitor
objective refers to it and tries to override a proc on it thus making it
a valid type, but not really. This changes the base `/obj/item/stamp`
from being the granted stamp to being an abstract type, and creates a
proper subtype for the granted stamp.
## Why It's Good For The Game
Base types being concrete outside of scenarios where its intuitive are
very annoying
## Changelog
🆑
code: makes /obj/item/stamp abstract, creates /obj/item/stamp/granted
/🆑
## About The Pull Request
Continuation of #94059. Replaces the following signs with their
directional helpers
- `/obj/structure/sign/warning ->
/obj/structure/sign/warning/directional`
- `/obj/structure/sign/warning/radiation ->
/obj/structure/sign/warning/radiation/directional`
- `/obj/structure/sign/warning/secure_area ->
/obj/structure/sign/warning/secure_area/directional`
Depends on #94076 for diagonal wall mounts
## Changelog
🆑
qol: added mapping directional helper for warning, radiation & secure
area sign allowing them to interact with fire/acid on their mounted turf
qol: adds mapping helper to create diagonally shifted objects
/🆑
## About The Pull Request
Improving upon #93662 where i noticed a lot of objects don't have
directional helpers
Replaces the following mapped in objects with their directional
counterpart
- `/obj/structure/sign/nanotrasen ->
/obj/structure/sign/nanotrasen/directional`
less var edits & also more realistic interaction with fire/acid etc if
the turf on which they are placed on is attacked which isn't the case if
they are directly mounted on walls
## Changelog
🆑
qol: adds mapping directional helper for nanotrasen sign & replaces all
var edited instances
/🆑
## About The Pull Request
replaces area/lavaland/surface with area/lavaland/surface/outdoors in
crash site ruin
## Why It's Good For The Game
this sucks
<img width="869" height="613" alt="image"
src="https://github.com/user-attachments/assets/033c7600-b1a4-46d1-815c-eb585865054d"
/>
## Changelog
🆑
fix: lavaland crash site ruin should properly be affected by ash storm
now
/🆑
## About The Pull Request
The AI core structure now fully integrates item/tool interactions and no
longer uses attackby/take_damage overrides. Construction behaviour has
been isolated into its own file.
All handling relating to the AI core's status when shunted has been
turned into signals. For this reason, helper procs for managing core
link state have been made and integrated into the relevant users (APC
shunting, mech takeover). The AI core no longer references the remote AI
mob.
/obj/structure/ai_core/deactivated has been removed from code since it
had no function after refactoring. There was only a single instance of
it being used in a map, which has been replaced with a var edit.
There may be more things I changed, but I'm h
## About The Pull Request
Depends on #94064 for the unit test but offers a better method for
finding an atom to mount on
- Finding a mount now takes into consideration the objects pixel x & y
offsets meaning diagonal mounting is now supported. Gives great
flexibility for mappers
- If you don't want to use pixel offsets but default back to using the
objects direction that behaviour is still preserved. Useful if your
object uses directional icon states(lights & cameras for now) AND don't
use offsets
- If no direction could be specified then as the last resort it defaults
back to the objects local turf for mounting
## Changelog
🆑
fix: all mounted objects on tables, fences, windows & walls should fall
of correctly when the atom it is placed on is destroyed
fix: security telescreen now falls off when their mounted wall is
destroyed
fix: defib wall mount falls off when their mounted wall is destroyed
fix: floor lights are mounted to the ground/catwalk/tram floor they are
sitting on meaning destroying it will destroy the light
fix: wall mounted plaques now fall off when their mounted wall is
destroyed
/🆑
safeguards against #94132
for downstreams, i've added a bat script in
tools\mapping_fix_template_noop_areas that'll iterate over all .dmm in a
given folder (set the relative path from the git root in the .bat)
---------
Fixes a bunch of shit getting left in space randomly, as well as flaky
tests.
<img width="1960" height="149"
alt="518075345-f003e38f-21ef-4ead-b233-f3a47d1aadcc"
src="https://github.com/user-attachments/assets/9a807cd8-0304-4737-bd91-da783c3c8bef"
/>
## About The Pull Request
Another relatively simple simple_mob to basic mob refactor. I wish more
people were doing these since I was saving these for people to get their
feet wet, but I think it's better to pivot away from that and just have
only the gargantuan ones outstanding (since those ones are pretty much
their own framework).
I also delayed this one because we didn't actually have the AI framework
available 1-2 years ago for this to be seamless and easy, but now we
have easy fleeing functionality so that's an easy plug and play.
This rework contains the following:
* General code readability changes and standardization (i.e. removing
single letter vars, `SECONDS` defines)
* Moves more stuff to subtypes instead of having it be on parent
* Removes the necessity for define "attack modes", that's on subtypes
now
* Fixed instances where args weren't defined. I think cult apparitions
via the mirror shield have been much weaker than what they were
originally intended to, so I changed it to what I thought was correct. I
can change the health to be down but it really doesn't make sense as a
lot of the args were not standardized (ideally we would have more
subtypes). I can change this back to the original arg order, let me
know.
* Clones now replicate on damage taken as well as when they attack. I
wanted to tweak this around more but this was originally added since I
confused myself, but it gave a more realistic mitotic effect I liked
more for the replicating clones.
## Why It's Good For The Game
If we want more flamboyant mirage escapes or sneaky clone AI behavior,
it is now far easier to implement. It's very simplistic at the moment
but is pretty much fully featured and representative of the simple mob
version of illusions. They were already laden to the item/mob that was
spawning them in anyways, so this is really the most simple stuff we got
going on.
I tested this with the mirage grenade, reactive stealth armor, and the
mirror shield. I have no clue how the heretic stuff works but it appears
to be a really simple framework plug-and-play so no real worries there I
think.
## Changelog
🆑
refactor: The Cult of Nar'Sie realized that they were installing the
mirrors on their mirror shields the wrong way around, thus altering the
makeup of their mirror clones health, damage, and re-replicability.
refactor: In response to the recent updates in clone magic, Nanotrasen's
Stealth Reactive Armor should now generate more convincing clones.
/🆑
## About The Pull Request
Closes#88539 (This issue has been open for almost an entire fucking
year now holy moly dude)
This replaces the documents in the comms agent room(s) on Icebox.
It replaces `/obj/item/paperwork` (generic paperwork, no importance at
all) with `/obj/item/folder/syndicate/mining` which is ACTUALLY secret.
It also makes the traitor objective of stealing any secret documents
easier. These documents are also found on the Lavaland equivalent of the
comms agent ruin.
## Why It's Good For The Game
Mmmm fixes... More gameplay...
## Changelog
🆑
fix: Fixes Icebox's comms agent ruin having generic documents, not the
secret ones
/🆑
## About The Pull Request
Updates the laser gun into four proper subtypes: Standard, Pistol, Rifle
and Carbine.
<img width="229" height="210" alt="image"
src="https://github.com/user-attachments/assets/12c03076-8ebf-4d87-8c98-6a8cce6821db"
/>
Current sprites are pending a palette change.
**Standard:** Functions as you would expect. Same as ever.
**Pistol**: Lower charge, 20 force, normal sized, recharges faster.
**Carbine**: 15 force, 26 mag, two round burst. Projectiles flight
slightly faster. Cannot dual-wield.
**Rifle**: 20 force. 40 mag. Two round burst. EMP resistant (not
immune). Projectiles fly slightly faster. Cannot dual-wield (not that
you need to).
All but the rifle can be sourced from cargo. You can also buy the sovl
version of the laser gun if you're especially nostalgic.
### Armory Changes
The Armory now can potentially spawn either pistols, carbines or
standard. The weighting leans closer to spawning carbines and standard
as opposed to pistols.
### Lore Dump
The laser line of weapons now all have lore. That rich, deep lore that
every game needs and is totally not important at all to the meat and
potatoes of the game. I'm paid by the hour ($0.00)
### Code Tidying
Lasers are old and a total mess code-wise so we've tidied up while we're
here.
## Why It's Good For The Game
Variety is the spice of life and also some of these weapons could have
used a face lift. Especially the laser carbine. Both functionaltiy wise
and appearance wise.
A bit of randomness in the armory means some rounds might have unique
outcomes compared to others. Sometimes, items in cargo don't see
particularly much use, so peppering in a few random potential deviations
can maybe nudge people to utilize variant gear on future rounds.
I'm obsessed with writing too much information. I blame Hatterhat.
## Changelog
🆑
add: Three variants of the laser gun; Carbine (replacing the existing
one), Pistol and Rifle! Find it (possibly) in your armory today!
balance: The armory laser guns might be different variants of the laser
gun, rather than always being the standard. The standard is the same as
ever, even if it looks different.
add: If you care, the sovl version is available as a goodie. And in the
hands of pirates...
spellcheck: Lore! LORE FOR LASER GUNS! LOOOORE! Examine laser guns
closely and you might learn more about them.
balance: The new set of laser guns come with brand new sprites.
/🆑
---------
Co-authored-by: StaringGasMask <62149527+Exester509@users.noreply.github.com>
## 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
Isolates signpost teleport code into a component
`/datum/component/houlihan_teleport`, which takes a question argument
and a list of zlevels.
Removes `/obj/structure/no_effect_signpost` and turns existing mapped-in
instances into `/obj/structure/signpost`s
Adds/documents/fixes some attack signals that were added to the element
## Jebediah
<img width="100%" alt="image"
src="https://github.com/user-attachments/assets/b227e5bd-1c93-41b3-b87f-1a559cf81112"
/>
## Changelog
🆑
refactor: Signposts have had their code improved internally. Please make
an issue if a signpost that should teleport you no longer can.
/🆑
## About The Pull Request
Features:
- Floor lights can be constructed using a small light fixture on the
turf you are standing on
- Floor light construction sprites
- `/burned` subtypes for lights
- Convert `/build` subtypes to `/empty` subtypes with `UpdatePaths`
script
## Why It's Good For The Game
Floor lights can now be constructed in game using the same mechanics as
other lights. The `/burned` and `/empty` subtypes might be useful for
mapping.
## Changelog
🆑
add: Add constructable floor lights by using a small light fixture on
the floor. They are constructed the same way as other lights.
qol: Add `/burned` subtype to `/obj/machinery/light` for mapping
shenanigans
image: Add floor light construction sprites
map: Converted the `/built` subtype for `/obj/machinery/light` to be
`/empty` and added an UpdatePaths script.
/🆑
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
## About The Pull Request
Removes the varedited "icon_state" from `turretid` objects on station
and away maps. Continues
https://github.com/tgstation/tgstation/pull/93728, closes#93766
## Why It's Good For The Game
Those icon states don't exist anymore, making the ingame object
invisible. My PR fixes that
## Changelog
🆑
fix: Turret controls are visible again
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
removes oxygen jetpack subtype and makes empty jetpack actual oxygen
## Why It's Good For The Game
because our empty jetpack wasnt actually empty and we infact had two
oxygen jetpacks?
## Changelog
N/A
OOPS i forgot about this branch for like a month
## About The Pull Request
When someone takes one of those cryopod ghostroles a notification goes
out to observers advertising the ability to join up.
What better way to convince salty observers to commit to the bit than to
show them you've already done so?
## Why It's Good For The Game
Charlie station is great with friends, and as one of our better ghost
roles the game would benefit from turning heads when someone joins a
session.
## Changelog
🆑
qol: Charlie station ghostroles call on other observers to join in the
fun when taken.
/🆑
## About The Pull Request
- Closes#93497
'Vend a trays' are not subtypes of machines but structures i.e. their
path is `/obj/structure/displaycase/forsale`. You can't create
structures with machine circuit boards so they runtime like hell
You can still create an Vend a tray by
- Creating a "display case chassis" with 5 wood
- Inserting a card reader in it
It's just this broken way of designing the tray has to go
## Changelog
🆑
del: Removes circuit board recipe for vend a tray. Use 5 wood to create
a "display case chassis" and insert a card reader to create the tray
instead
/🆑
## About The Pull Request
This PR edits the syndicate bioweapons base lavaland ruin to make things
easier on the comms agents and scientists living there,
It now sports two wall mounted deforest thingies, one in the medbay and
one outside the chemistry lab. 15 silver bars have also been added to
the chemistry lab because you need silver to make certain chems and
before then the only source of silver was taking apart the surgery bed
in the medbay.
Finally, the kitchen has had a big upgrade. The water tank and beer keg
were removed for space because there is already a water tank in the
janitors closet, the base has infinite water from a chemical
synthesizer, and the base has infinite beer from the booze dispenser.
One of the freezers was switched out for a meat freezer so it now
contains slightly less flour, rice, and sugar and instead contains 4
pieces of monkey meat along with the addition of a food processor and
range. Not having a range meant that the flour, rice, and sugar were
basically cosmetic and the only thing you could cook was... microwaved
eggs.
## Why It's Good For The Game
Wall mounted healer thingies are nice if you're in the base solo, which
is pretty often because it's a ghost role. They aren't very strong so
they won't powercreep heal mixes from the chemistry lab.
15 silver is there so you can actually make chems because mining would
involve you leaving the base (which is a big no no) and crossing the
moat of lava that surrounds it. I went with 15 because there is 15
plasma on the same table next to the grinder.
Finally, the kitchen one is self explanatory. You can barely cook with
the current kitchen.
<img width="267" height="326" alt="image"
src="https://github.com/user-attachments/assets/ac5e11db-70b3-4dd2-ad2b-bb7c430a7339"
/>
The old kitchen (I don't have an ingame screenshot)
<img width="290" height="388" alt="Screenshot 2025-10-21 180009"
src="https://github.com/user-attachments/assets/c7155cd3-9a7e-4482-8b33-cfa1c2af390e"
/>
The new kitchen
## Changelog
🆑
map: Added two DeForest first aid stations to the syndicate bioweapons
base
map: Added silver bars to the syndicate bioweapons base for grinding
map: Added meat and a food processor to the syndicate bioweapons base
kitchen
map: The syndicate bioweapons base kitchen now contains a range
map: The syndicate bioweapons base kitchen contains less flour, rice,
and sugar
/🆑
Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
## About The Pull Request
Moves the docking port in the `whiteshipdock.dmm` ruin closer to the top
center instead of the bottom left where it currently is, fixes the
`width` being off by one, fixes `dwith` and `dheight` being wrong.
What happened here is `dwidth` and `dheight` are supposed to be counted
from the top right instead of the bottom left here, so while the docking
port was placed in the bottom left, the code said it was in the top
right and so no runtimes were thrown when loading a shuttle that
actually didn't fit. But most of the white ship templates _didn't_ fit,
meaning they'd jut outside the boundaries of the ruin, and if another
ruin was placed next to it it'd overwrite parts of them.
I tested all of the white ship templates with these new values and they
all fit well.
## Why It's Good For The Game
<img width="1262" height="997" alt="image"
src="https://github.com/user-attachments/assets/509feef8-4ff9-4483-ae92-6886f4592e54"
/>
Bad!
## Changelog
🆑
fix: fixed white ship sometimes loading partially inside other ruins
/🆑
## About The Pull Request
I think I finally got making new branches down so bits of other PRs
don't slip into this one? Anyways, this is a small change to make
cooking as a comms agent on ice box easier.
## Why It's Good For The Game
I don't think comms agents are supposed to be chefs, but holy shit is it
hard to cook without something like a knife. I mean you have the
ingredients to make cheese, but you can't even slice it. Not having
sugar also locks you out of a ton of foods. After this change you're
still missing things like meat, a food processor, most vegetables, and a
dehydrator, but you can at least make something to hold you over during
long shifts.
## Changelog
🆑
add: Added a knife, sugar, and a carrot to the icemoon listening post
/🆑
Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
## About The Pull Request
These speedloaders were repathed in a previous upstream, but because we
had subtypes of the old paths that weren't updated during the upstream
pull, using the parent type paths wouldn't cause errors, it'd just fail
silently.
## Why It's Good For The Game
Fix
## Proof Of Testing
No
## About The Pull Request
This is a general clean up of some of our modular vending machine code,
highlights are:
- Merges the skyrat `modular_vending` folder into our own
- Eliminates the `skyrat_products`, `skyrat_product_categories`,
`skyrat_contraband`, and `skyrat_premium` vars, merge their stuff into
the bubber equivalents
- Changes the handling for modular autodrobe additions to just add them
to the global list because the autodrobe uses global lists for some
reason, this fixes#4758
- Change a `+=` to `|=` to prevent duplicate entries in vending machines
causing both to appear out of stock
- Fix a duplicate recolor button in the vending machine TGUI
## Why It's Good For The Game
Less duplicate code and bugs, the autodrobe one in particular was funny
because what was happening is the category lists of items were global
lists, and the modular code for adding our own stuff to categories just
`+=` adds it, and that runs every time an autodrobe is created on the
map, so each time the same stuff was being added to the same list and
bloating it to several hundred
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>
<img width="425" height="559" alt="image"
src="https://github.com/user-attachments/assets/e9ab16ed-3c7c-4061-90d5-dc27a7d8a40e"
/>
</details>
## Changelog
🆑
fix: fixed the autodrobe being mostly out of stock and broken
fix: fixed certain vending machines having duplicate items that broke
fix: fixed a bug with the recolor button in vending machines appearing
twice
code: merged modular skyrat vending machine code into our folder
/🆑
## About The Pull Request
This is was created because I found several rare and exciting canisters
in game and then finding out there is no way to actually construct the
vendor they belong to!...
<img width="768" height="385" alt="image"
src="https://github.com/user-attachments/assets/70261cea-daaf-41df-a212-21cef6d6bd0c"
/>
### This PR:
* Makes all noteable vendors constructable, if you have the canister.
* Adds canisters to syndismokes, syndiechem, liberation station,
magivend, shambler's juice and bombuddy
* Replaces the old tptally random canisters spawner, with a variety of
spawners weighted for power and split according to different themes.
* Adds the new main canister spawner to maint.
### Spawner weights
The random canister spawner from maintenance has a:
* **93,5%** chance to spawn a common station vendor refill(with weights
for wardrobes being somewhat reduced.)
* **6%** chance to spawn a rare and special vendor refill.
* **0.5%** chance to spawn a oddity level., super powerful vendor
refill.
## Why It's Good For The Game
One must never place a filled canister in maint if it isn't going to be
constructed It's wrong to make promises you don't mean to keep.
## Changelog
🆑
add: Nearly all notable vendors are now constructable if you have the
canister.
add Added refill canisters for syndiesmokes, liberation station,
magivend, bombuddy 3000, shambler's juice and syndichem.
add: Random vending refill canisters now have a chance to spawn in
maint.
image: Robco Toolmaker and Centdrobe canisters have new sprites.
/🆑