## About The Pull Request
Reused the old pre-rework heretic robe and blade assets as a new set of
chaplain gear and null rod option.
Replaced the last few existing uses of the now spriteless generic robe:
- Deathmatch, changed heretic warrior to use blade robes
- Deathmatch, changed ripper to use the new chaplain armour
- Tribal mothman legion corpse, changed to use new chaplain armour
- Heretic preview and hallucination, changed to use rust robes
- Heretic virtual domain, changed to use rust robes
<img width="127" height="131" alt="image"
src="https://github.com/user-attachments/assets/690e848e-5191-44d4-bd58-5e338fa2aa4e"
/>
## Why It's Good For The Game
Chaplains are the playground of old magic content assets, where they
find a second life as cosplay outfits. Chaplains can already cosplay
cultists, it's only fair that they can pretend to be a heretic as well.
## Changelog
🆑
add: Added a new set of chaplain armour based on the generic heretic
robes unavailable since the path rework.
/🆑
## About The Pull Request
Matching body parts covered of chaplain's armor to sprites. I think a
leftover from times when those armours where subtype of riot armour.
<img width="75" height="69"
alt="474691928-183826a3-79e5-431e-aed5-b9a02a2c382e"
src="https://github.com/user-attachments/assets/072228c8-6b04-4aef-b656-aae757af6a7a"
/>
Adept armor was covering arms, hands and feet yet it sprite wasn't
covering those parts. In exchange gave bone bracers to the kit so it
wasn't the worst choice.
<img width="66" height="77" alt="obraz"
src="https://github.com/user-attachments/assets/f3b3ab73-df07-4dc9-890a-47122163f3f5"
/>
Same for Divine Archer coat. It's unique boots and bracers now have
armor. Boots provide less protection to keep the archer comfortable
while on the move (RP reason). (Real reason: so armor from coat and
boots don't give too much legs protection)
## Why It's Good For The Game
Makes Chaplain's armor less confusing. No exposed arms with secret 50%
melee resist. Exposed limbs are actually exposed.
Profane Kit getting something unique - really strong helmet against
melee.
## Changelog
🆑
add: Bone bracers to Divine Adept kit
qol: Adept robes doesn't cover arms, hands and feet as to match the
sprite
qol: Ancient armour doesn't cover hands as to match the sprite
qol: Divine Archer coat doesn't cover arms, hands and feet as to match
the sprite
qol: Divine Archer bracers now have the same armor as Divine Archer coat
balance: Divine Archer boots have their own unique armor
/🆑
(cherry picked from commit 255801a668)
## About The Pull Request
Matching body parts covered of chaplain's armor to sprites. I think a
leftover from times when those armours where subtype of riot armour.
<img width="75" height="69"
alt="474691928-183826a3-79e5-431e-aed5-b9a02a2c382e"
src="https://github.com/user-attachments/assets/072228c8-6b04-4aef-b656-aae757af6a7a"
/>
Adept armor was covering arms, hands and feet yet it sprite wasn't
covering those parts. In exchange gave bone bracers to the kit so it
wasn't the worst choice.
<img width="66" height="77" alt="obraz"
src="https://github.com/user-attachments/assets/f3b3ab73-df07-4dc9-890a-47122163f3f5"
/>
Same for Divine Archer coat. It's unique boots and bracers now have
armor. Boots provide less protection to keep the archer comfortable
while on the move (RP reason). (Real reason: so armor from coat and
boots don't give too much legs protection)
## Why It's Good For The Game
Makes Chaplain's armor less confusing. No exposed arms with secret 50%
melee resist. Exposed limbs are actually exposed.
Profane Kit getting something unique - really strong helmet against
melee.
## Changelog
🆑
add: Bone bracers to Divine Adept kit
qol: Adept robes doesn't cover arms, hands and feet as to match the
sprite
qol: Ancient armour doesn't cover hands as to match the sprite
qol: Divine Archer coat doesn't cover arms, hands and feet as to match
the sprite
qol: Divine Archer bracers now have the same armor as Divine Archer coat
balance: Divine Archer boots have their own unique armor
/🆑
- Address
https://github.com/tgstation/tgstation/pull/90476#discussion_r2051701283.
Makes pill bottle code cleaner
- Datumized some more storage values(monkey guncase toolbox & crafter
toolbox) making their init slightly faster
- Moved all standard storage subtypes(bags, boxes, lockboxes etc) that
is scattered across various files & folders in the codebase into their
respective files under `code/game/objects/item/storage` folder.
This means for e.g. if you want to see all boxes in the game you can
find them in `code/game/objects/item/storage/boxes` folder & don't have
to go looking for hidden subtypes in various module files or folders
where they were hidden away.
Makes looking for stuff & modifying these storages much saner & easier
🆑
code: organized storage subtypes under the same files & folders
/🆑
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
## About The Pull Request
- Address
https://github.com/tgstation/tgstation/pull/90476#discussion_r2051701283.
Makes pill bottle code cleaner
- Datumized some more storage values(monkey guncase toolbox & crafter
toolbox) making their init slightly faster
- Moved all standard storage subtypes(bags, boxes, lockboxes etc) that
is scattered across various files & folders in the codebase into their
respective files under `code/game/objects/item/storage` folder.
This means for e.g. if you want to see all boxes in the game you can
find them in `code/game/objects/item/storage/boxes` folder & don't have
to go looking for hidden subtypes in various module files or folders
where they were hidden away.
Makes looking for stuff & modifying these storages much saner & easier
## Changelog
🆑
code: organized storage subtypes under the same files & folders
/🆑
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
## About The Pull Request
This PR adds the Ashwalker Fortress from Novastation to all maps except
Icebox and Moon Station. In addition, this also adds a new primitive
cooking machine that serves the same function as a microwave: the
Cauldron!
## Why It's Good For The Game
If you would consult the design document 🤓https://hackmd.io/@ashwalker/S1U-p3esJe
## Proof Of Testing


## Changelog
🆑
add: Added Stone Cauldron, a new primitive cooking structure with a
microwave function.
map: Added sparring area, prison cell, dining area, revamped kitchen,
animal pens, revamped forge area, armory, revamped doctor's hut, and a
spare room to a new Ashwalker Nest map.
/🆑
---------
Co-authored-by: Jinshee <manastra2536@gmail.com>
## About The Pull Request
Reverts the storage initialization refactor and all subsequent related
PRs.
The original PR is below our standards both for code quality and
testing, and is majorly flawed at its core. This has been discussed with
other maintainers and headcoder(s?) over on discord. A lot of changes
from the PR could be brought over later, but in its current state it
should not have been merged.
- Closes#90322
- Closes#90313
- Closes#90315
- Closes#90320
- Closes#90312
- Closes#90344
## Why It's Good For The Game
This PR causes a series of major issues which cannot be resolved without
either completely rewriting a lot of the original PR, or bad code.
Not matching our standards is grounds for not merging a PR, and the fact
that a PR should not have been merged is a reason for a revert.
## Changelog
🆑
fix: Fixed a series of storage-related bugs caused by a refactor PR.
/🆑
## About The Pull Request
A Huge chunk of changes just comes from moving existing storage code
into new files & seperating `atom_storage` code into its own subtype
under the already existing `storage/subtypes` folder.
With that the changes in this PR can be organized into 3 categories.
**1. Refactors how `/obj/item/storage/PopulateContents()` initializes
storages**
- Fixes#88747 and every other storage item that has a similar variant
of this problem
The problem with `PopulateContents()` is that it allows you to create
atoms directly inside the storage via `new(src)` thus bypassing all the
access restrictions enforced by `/datum/storage/can_insert()` resulting
in storages holding stuff they shouldn't be able to hold.
Now how this proc works has been changed. It must now only return a list
of items(each item in the list can either be a typepath or a solid atom
or a mix of them in any order) that should be inserted into the storage.
Each item is then passed into `can_insert()` to check if it can fit in
the storage.
If your list contains solid atoms they must be first moved
to/Initialized in nullspace so `can_insert()` won't count it as already
inserted. `can_insert()` has now also been refactored to throw stack
traces but explaining exactly why the item could not fit in the storage
thus giving you more debugging details to fix your stuff.
A large majority of changes is refactoring `PopulateContents()` to
return a list instead of simply creating the item in place so simple 1
line changes & with that we have fixed all broken storages(medical
toolbox. electrical toolbox, cruisader armor boxes & many more) that
hold more items they can handle
**2. Organizes initialization of `atom_storage` for storage subtypes.**
All subtypes of `/obj/item/storage` should(not enforced) create their
own `/datum/storage/` subtype under the folder `storage/subtypes` if the
default values are not sufficient. This is the 2nd change done across
all existing storages
Not only does this bring code cleanliness & organization (separating
storage code from item code like how `/datum/wire` code is separated
into its own sub folder) but it also makes storage initialization
slightly faster (because you are not modifying default values after
`atom_storage` is initialized but you are directly setting the default
value in place).
You now cannot & should not modify `atom_storage` values inside
`PopulateContents()`. This will make that proc as pure as possible so
less side effects. Of course this principle is not enforced and you can
still modify the storage value after `Initialize()` but this should not
be encouraged in the future
**3. Adds support for automatic storage computations**
Most people don't understand how `atom_storage` values work. The comment
here clearly states that
https://github.com/tgstation/tgstation/blob/55bbfef0da70d87455ca8d6fd5c95107eb8dbefb/code/game/objects/items/storage/toolbox.dm#L327-L329
Because of that the linked issue occurs not just for medical toolbox but
for a lot of other items as well.
Which is why if you do not know what you doing, `PopulateContents()` now
comes with a new storage parameter i.e. `/datum/storage_config`
This datum allows you to compute storage values that will perfectly fit
with the initial contents of your storage. It allows you to do stuff
like computing `max_slots`, `max_item_weight`, `max_total_weight` etc
based on your storage initial contents so that all the contents can fit
perfectly leaving no space for excess.
## Changelog
🆑
fix: storages are no longer initialized with items that can't be put
back in after taking them out
refactor: storage initialization has been refactored. Please report bugs
on github
/🆑
## About The Pull Request



Notable changes:
- Prices have been increased across the board. They're about on par with
the good clean fun vendor now.
- Less of each item. The machine will have to be restocked more often.
- Fake emags and fake hot potatoes are now avaliable.
- The ammo boxes are half-size boxes (20 darts) in the non-syndicate
vendor. Each foam dart costs 5 credits, and every riot dart costs 10
credits. The syndicate vendor sells the old size of boxes (40 darts) for
the same price, getting twice as many darts per credit.
- Syndicate balloon is now in the contraband section. There is only one
of them per vendor and they cost 999 credits.
- Replica space suits come in boxes now, instead of the parts being
bought seperately.
- All toy guns bought from the syndicate vendor are loaded with riot
darts.
- No more discounts for service jobs. Everyone pays the full price.
## Why It's Good For The Game
The current vendor isn't balanced very well, the pricing is a
placeholder and the vast amounts of gear in them make them a
destabilizing element when it makes its way on station. Spawning a lot
of high-end riot dart guns is easy, and the fact that this has 5
syndicate balloons with a value of 20 telecrystals avaliable for
effectively free is simply absurd. Reining it in a little makes it
easier for mappers and admins to put these machines in player-accessible
spots without worrying about it derailing rounds or empowering griefers.
Additionally, this change makes this vendor play nicer with the new
vending restock economy.
None of the pricing changes affect any vending machine that was mapped
in off the station z-level. Lavaland syndicates will continue not to be
charged for using their machine.
## Changelog
🆑
balance: Donksoft vendors now stock slightly more items, slightly less
of each item, and has increased prices across the board.
/🆑
## About The Pull Request
The first Curator now spawns with a **Broadcast Camera**, a normal-sized
item that can be wielded to start a live broadcast to all entertainment
screens across the Station! It also broadcasts sound through a new
Entertainment radio channel that can be spoken into by the Curator. The
broadcast name can be changed by right-clicking the camera.
<details>
https://github.com/user-attachments/assets/cfe2a147-15b3-4a96-85e2-3082376a0e9a
</details>
Also adds a new clothing set to the Heroic Beacon of the Curator themed
around Journalists containing some unique clothing, a microphone, a
Press badge used for shoving into people's faces and crafting more
clothes (like Press armor and helmet), and also a set of 1 TV and 1
entertainment radio in-case station does not have places to watch
Curator's brilliant broadcasts.

## Why It's Good For The Game
The job of Curator has 3 things it can do:
- Curate Library (lol)
- Explore Space
- **Create News!**
Although the Curator does have extended access to the Newscaster -
that's not enough of content. Inspired by the Combat Correspondent from
the Colonial Marines server - Curator now has a **Broadcast Camera**!
Using it they can show the station what the most important matters that
are going on without lifting the butts of their comfortable chairs.
No matter what Curator will report: Security raiding Medbay? Interviews
of Cargo Techs complaining about Command? Maybe even shows produced in a
studio? Anything really!
Also, entertainment screens will get more use, as right now they only
_sometimes_ broadcast Bitrunning avatars and nothing else unless admins
mess with them.
## Changelog
🆑 DrDiasyl aka DrTuxedo
add: Curator has received a new BROADCAST CAMERA which can broadcast the
surroundings LIVE on Entertainment Screens/ Alongside with some other
Journalism related gear in his Heroic Beacon
sound: Entertainment screens now play muffled speech when hearing a
message on Entertainment frequency
/🆑
## About The Pull Request
Adds a new final objective option with a classic premise; the forced
battle to the death.
The concept is that the Syndicate will provide you with an implanter
tool you can use on an arbitrary number of crew members. Once you have
at least 6 (though there is no ceiling) you can activate the implants to
start the Battle Royale and broadcast the perspectives of everyone you
implanted live to the entertainment monitor.
After activation these implants cause you to explode upon death. If at
the end of 10 minutes, more than one person remains unexploded then all
of the remaining implants will detonate simultaneously.
Additionally, one of the station's departments (Medbay, Cargo, Science,
or Engineering) will be chosen as the arena. If after 5 minutes pass
you're not within that department (or if you leave it after that time
has passed) then you will be killed.
The Syndicate plan on both using the recorded footage to study
Nanotrasen technology, and also to sell it as an underground blood
sport, and so have employed a pirate broadcasting station to provide
colour commentary.
The implantation is silent, however it requires you and your target to
be adjacent and stood still for one and a half seconds.
Once implanted, it will occasionally itch and eventually signal to the
implantee that something is up, so once you start implanting someone
you're on a soft timer until you are given away. You can also implant
yourself if you want to do that for some reason.
Removing an implant from someone has a 70% chance of setting it off
instantly, but it _is_ possible. If the implant is exposed to EMP, this
value is randomised between 0 and 100%. You could also try doing surgery
while the patient is wearing a bomb suit or something, that puzzle is
for you to solve and I'm not going to tell you the answers. I'm sure
you'll think of ones I haven't.
## Why It's Good For The Game
Adds a somewhat more down-to-earth but still hopefully exciting and
threatening option which should let people mess around with the sandbox.
The mutual death element provides some roleplaying prompts; nothing
actually _forces_ you to fight apart from fear of death and it may be
possible to find other ways to survive, or perform some kind of
solidarity behaviour with your fellow contestants. Maybe you'll try that
but one of your fellow contestants just wants to be the last survivor
anyway. Maybe you'll pretend you're setting up some kind of mutual
survivorship thing in order to make sure you're the sole survivor.
Gives some people to watch on the bar TV channel.
The crew apparently love playing Deathmatch while dead so we might as
well enable doing it while alive.
Also I'm going to follow this up with a separate PR to remove the Space
Dragon objective and it felt like it'd be a good idea to do one out one
in
## Changelog
🆑
add: Adds a new Final Objective where you force your fellow crew to
fight to the death on pain of... death.
/🆑
## About The Pull Request
See title
I left the item in and removed the antagonist checks from it just in
case an admin wants to fuck around with it, but I can delete that too if
preferred.
## Why It's Good For The Game
This is both our least interesting and least impactful objective.
Turning into a (nerfed) space dragon sort of looks cool maybe the first
time you do it and then after that it isn't. It is sort of disappointing
to see it pop up in the uplink, in my experience.
This Space Dragon generally speaking isn't going to cause significant
death or destruction except on lowpop (where a traitor can just do that
anyway) or if they play in the cheesiest possible manner, it simply
isn't that dangerous by itself.
It is also simply less versatile than just _being a traitor with a lot
of TC_, something you already are when you get it.
Turning into a big animal also just doesn't feel much like something a
traitor should be doing, that's a changeling or possibly wizard sort of
objective.
It also sort of cheapens "real" space dragons by making them show up
this way.
Finally; I just don't like it.
We have enough final objectives now that we don't need to keep this one
just to fill the pool, in my opinion.
## Changelog
🆑
balance: Traitors can no longer turn themselves into dragons.
/🆑
## About The Pull Request
Originally part of the other blackmarket PR, but it seemed a tad awkward
to have it mandatorily installed on mobs rescued from the holding
facility.
But yeah, this PR adds a neck item that causes the wearer's death with a
5 seconds countdown when triggered, which can be bought from the market
uplinks. The box comes with a yellow button to trigger it, but it can
also hold a signaler (which the wearer cannot tamper) if you wish to use
assemblies. Take note that, upon being worn, the item cannot be removed
by any mean beside beheading iirc (so HARS should counter it), and
fire/acid if you have a ton of patience because of its high armor
values.
## Why It's Good For The Game
More mean and evilish stuff to populate the black market with.
## Changelog
🆑
add: Added a collar bomb to the black market.
add: Added a possible kit to the special syndie bundle B, which also has
uses these collars.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
https://github.com/tgstation/tgstation/pull/81512
i accidentally added it to the emagged console it should be on
contraband now.
also added a backpack to present it from interfering.
and its available in uplink
🆑
add: box with a set of floortile camo, which can be ordered in black
market uplink
add: also adds a backpack to camouflage
fix: i had the crate under emagged console, should be fixed now.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
I've done some changes to the scope component so that it can be applied
to items other than guns.
Binoculars now use it instead of changing the player view size, and lets
them move around while the zoom is on at the cost of a moderate
slowdown. This is both more comfortable, cooler and less laggier than
the previous method. Take in mind it still takes both hands to use
binoculars, so there's no much room for exploitation anyway.
This PR also makes the mothic softcap from the curator kit special: it
too has the scope component, albeit of a much shorter range, because
it's probably the least interesting kit of them all right now and has
nothing that the curator cannot get by walking in the aux base
construction room, except for a pair of pockets in the mothic coat,
though that's superseeded by the Trailwarden kit's saddlepack. It's
pretty fitting if you ask since the softcap has some goofy-looking
googles drawn on it.
Oh, items that aren't guns also have a different mouse tracker icon of
two circles joined together, instead of a reticle.
## About The Pull Request
### Divine Archer 🏹

Adds a new chaplain weapon and suit of armor, the divine archer. It's an
orderable set of armor, but provides less armor than the rest, but you
get more pieces of armor (boots, bracer, undersuit).
The divine bow comes with a quiver that holds holy arrows. The holy
arrows come with bane support, dealing critical damage to revenants.
### Bow Features ⭐
- arrows can now be dipped in poison
### Bow Improvements 🔧
- bows now drop their arrow when you put them on your back while nocking
a bow
- bows give feedback for trying to draw without a nocked arrow
- codewise, bows support subtypes much better. They still have
hard-sprited loaded arrows, but one day that'll change.
## Why It's Good For The Game
Yeah, we could add null rod #2342 that does almost the same as the
others, or we could have a unique bow weapon!
Player Dev Project thread:
https://discord.com/channels/326822144233439242/1093521091957370940/1093521091957370940
## Changelog
🆑 tralezab code, Drag for the commission and player project, cre#0484
for their spritework
add: Divine Archer Armor and Weapon
qol: Bows give more feedback when you're doing something wrong, like
trying to draw without a nocked arrow
code: Sorted files, cleaned bow code up to allow subtypes
/🆑
## About The Pull Request
repaths a lot of gloves off /color because they were incredibly stupid
firefighter gear has gotten an update (it doesnt cover hands anymore
though, you need something else)
firefighter helmets no longer hide your mask or glasses

fixed engine goggles starting with darkness vision
to the atmos lockers adds atmospheric gloves, a pair of thick (chunky
fingers) gloves that are fireproof and fire protective, slightly shock
resistant and let you fireman carry people faster.
atmospheric firefighter helmets now are a subtype of welding hardhats,
you can enable a welding visor.
welding hardhats change mode with right click instead of altclick
## Why It's Good For The Game
im not a good spriter but i think this resprite makes them fit nicer
with other engi equipment
lets me firefighter rp
## Changelog
🆑
add: Atmospheric Gloves, thick gloves that are fully fireproof and fire
protective and let you fireman carry people faster.
fix: fixes engine goggles starting with darkness vision
qol: firefighter helmets can now enable a welding visor
qol: welding hardhats change mode with right click instead of altclick
balance: firesuits no longer protect your hands
/🆑
## About The Pull Request
- The chaplain choice beacon now uses a radial to select the armor set,
instead of a list, giving the user a preview of what each looks like.

- Lots of additional cleanup to choice beacon code in general. Less copy
pasted code.
- All beacons now speak from the beacon with their message, instead of
some going by "headset message". Soul removed
## Why It's Good For The Game
I always forgot when selecting my armor which looks like what, and
choosing an ugly one is a pain since you only get one choice. This
should help chaplains get the armor they actually want without needing
to check the wiki.
## Changelog
🆑 Melbert
qol: The chaplain's armament beacon now displays a radial instead of a
text list, showing previews of what all the armor sets look like
qol: (Almost) all choice beacons now use a pod to send their item,
instead of just magicking it under your feet
code: Cleaned up some choice beacon code.
/🆑
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Preset Boxes File De-concatenation
Hey there,
We had one file that was like eighteen-hundred (1800) lines full of just... box presets. There was no rhyme or reason to where anything was in the list, it just sorta got to the point where new features were found near the bottom with zero grouping. So, let's de-concatenate this massive file and give it some proper grouping.
While I was in the area, I did some file cleanup, using `snake_case` instead of whatever the fuck some vars were, alphabetizing and cleaning up lists to have trailing commas, that sorta stuff. Let me know if I broke something somewhere.
* documentations, var improvement
* adds some documentation, clears up some variables