Commit Graph

1285 Commits

Author SHA1 Message Date
shayoki f601a6ddaf Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 2026-06-03 01:23:54 -05:00
ArcaneMusic 652fd2633e Restocking a Vending machine no longer creates 0 credit holochips. (#96137)
## About The Pull Request

The post_restock proc did not have an appropriate check to confirm that
there was enough stored credits to produce a non-zero holochip. This
adds a quick check for the proc, preventing their creation.

## Why It's Good For The Game

One less silly runtime on live.

## Changelog

🆑
fix: Restocking a vending machine can no longer produce a zero credit
holochip.
/🆑
2026-05-19 08:50:14 +02:00
Alexis 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

fixes https://github.com/Bubberstation/Bubberstation/issues/5549

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
necromanceranne c690185c80 Makes the black fedora in the detdrobe a subtype of the detective fedora (#95806)
## About The Pull Request

Closes https://github.com/tgstation/tgstation/issues/95198

## Why It's Good For The Game

Consistency while keeping the detective fashionably noir. I reduced it
to one so it keeps in line with the other noir clothing.

## Changelog
🆑
qol: The detective's noir fedora is actually a detective fedora, and
gets all the unique qualities expected of one.
/🆑

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2026-04-20 01:31:39 +02:00
MrMelbert 4eadf5caf7 The big tooltype_act de-cargo-cult-ing (#95408)
## About The Pull Request

Removes a lot of cargo cult copypasta with
`default_deconstruction_screwdriver`, `default_deconstruction_crowbar`,
and to a lesser extent `default_pry_open` and
`default_change_direction_wrench`

ALL you gotta do now if you want your machine to have an openable panel
or be deconstructible with a crowbar is this
```dm
/obj/machinery/dish_drive/screwdriver_act(mob/living/user, obj/item/tool)
	return default_deconstruction_screwdriver(user, tool)

/obj/machinery/dish_drive/crowbar_act(mob/living/user, obj/item/tool)
	return default_deconstruction_crowbar(user, tool)
```

`default_deconstruction_screwdriver` no longer directly sets
`icon_state`, requiring the user pass in the open and closed icon
states. Now, it just calls `update_appearance`, and everything that once
passed the icon state now uses `base_icon_state` and
`update_icon_state`.

## Why It's Good For The Game

Many of these procs were terribly overcomplicated and difficult to work
with for what should be a relatively simple action

Streamlining it makes it easier for coders to understand and work with

## Changelog

🆑 Melbert
refactor: A majority of machines had their screwdriver/crowbar/wrench
interactions rewritten, report any oddities like being unable to open a
machine's panel or deconstruct a machine
/🆑
2026-04-14 19:46:24 -04:00
John F. Kennedy d598448aad Sweater Vest (#95681)
## About The Pull Request
Adds the sweater vest as an accessory in the autodrobe and loadout menu.
## Why It's Good For The Game
An alternative to the waistcoat.
<img width="704" height="82" alt="Screenshot 2026-04-07 140058"
src="https://github.com/user-attachments/assets/3ca13953-3866-4f35-9cb6-87e8c75348a8"
/>

## Changelog
🆑 Macaroni
add: Added the sweater vest
/🆑
2026-04-15 10:39:51 +12:00
Twaticus 16d7023da4 Hoodies (#95582)
## About The Pull Request

Adds 2 hoodie variants, the pullover and the zip-up.
Both recolorable via GAGs.
Both available in the clothesmate and in loadout.

(90% "vibe-coded" ((SORRY!!)) but thoroughly tested with no issues*)
*ok one little issue being recoloring a hoodie with a spraycan does not
recolor the hood and you need to also spray the hood itself to color it.
a problem that has already existed in the codebase and i was unable to
find a fix for.


###### Pullover hood-down / Pullover hood-up with random recolors
underneath.
<img width="192" height="192" alt="dreamseeker_3DwQU9FPb2"
src="https://github.com/user-attachments/assets/fce54ba7-138f-4961-ad87-de072fa1ab55"
/>

###### Zipup unzipped hood-down / Zipup unzipped hood-up / Zipup zipped
hood-down / Zipup zipped hood-up with random colors underneath.
<img width="320" height="192" alt="dreamseeker_COJPWnFa84"
src="https://github.com/user-attachments/assets/b91ba86f-36cc-4c89-99aa-c6848554ea1c"
/>

## Why It's Good For The Game

Hoodies are a staple to many and have been requested frequently over the
years.
## Changelog
🆑
image: Hoodies! Both pullover and zip-up hoodies are available in the
clothesmate and in loadouts!
/🆑
2026-04-11 13:49:02 -04:00
MrMelbert b79743df08 Randomize tts voice more appropriately (#95272)
## About The Pull Request

Adds a helper `SStts.random_tts_voice(gender)` which attempts to pick an
appropriate voice for the passed gender

## Why It's Good For The Game

Randomization into a completely wrong voice kinda ruins it

## Changelog

🆑 Melbert
qol: TTS voice is more appropriately randomized to gender
qol: Getting randomized through means such as mulligan toxin randomizes
TTS voices
/🆑

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2026-04-04 12:25:12 +00:00
RusselNotSCP 4ceac8f297 Classic Cocktails 2: The liqueurening (#95392)
## About The Pull Request
TL;DR: "What do you mean we didn't have a negroni in the game before?"

This adds three new very commonly used liqueurs to the game: A bitter
red aperitivo, an herbal liqueur, and maraschino liqueur. Additionally,
it adds 15 new classic cocktails that use these new liqueurs.
Mechanically relevant drinks include:

- The Poet's Dream, which can grant non-heretics the ability to dream
like them
- The Garibaldi, which grants revolutionaries the determination to shrug
off their wounds
- The Jungle Bird, which soothes the supermatter when ingested by those
around it
- The Thermonuclear Daiquiri, which causes you to glow (and very rarely
emit high-energy nuclear particles)
- and more!

Full list here: https://hackmd.io/@0lHAWBNkSXixU4v6xxYS_w/SkYjyDofbg

![Sequence
01](https://github.com/user-attachments/assets/23066f45-4ab9-4f2c-a16b-1d53bfb09ffb)

On the non-player facing side of things, this also refactors the heretic
dream code a bit and adds a trait that enables non-heretics to have
heretic dreams, which could easily be used by other things (ie if anyone
wanted to make a perk or something that does this)

Also, special thanks to MrMelbert and ChipPotato for helping me out with
coding stuff in the discord!
## Why It's Good For The Game

This is good for the game for more or less the same reasons as my first
classic cocktail PR #92955 is good for the game: More variety gives
bartenders more to do and a greater range of drinks to base gimmicks off
of, and adding more cocktails to the game which are commonly served in
IRL bars decreases awkward, RP breaking moments where someone orders a
cocktail that's a staple you can find just about anywhere but which
isn't in the game. Additionally, the new liqueurs are commonly used in
many other classic and modern cocktails, which people can use to make
cocktails in future projects.
## Changelog
🆑
add: Added three new liqueurs, with bottles available in the
booze-o-mat.
add: Added 15 new cocktails that use the aforementioned liqueurs.
/🆑
2026-03-26 16:12:33 +11:00
Leland Kemble 72f65a06b6 Vended glasses in the Beach Bar virtual domain count towards domain completion when drank (#95466)
## About The Pull Request

Previously, when one drank out of a glass of booze that the virtual
bartender graciously offered, one would not get any closer to domain
completion, because said bartender got his glasses new out of a vending
machine. These glasses never were registered on domain creation, due to
not existing on domain creation. This pr registers the vending machines
within the domain with a new signal that allows newly created glasses to
also be registered, and count towards domain completion.

## Why It's Good For The Game

A bitrunner dying of liver failure due to the obtuse distinction between
glasses that were in a vending machine and glasses that were on the
table sounds very annoying. Also, you could very easily make the domain
not completable within seconds by spawning as a ghostrole and breaking
the table glasses. You can still do that, but you have to break an
entire vending machine's worth of glasses too.

## Changelog
🆑

fix: Glasses that were in the vending machine now still count for the
completion of the Beach Bar virtual domain

/🆑
2026-03-24 10:58:21 -04:00
MrMelbert da64374423 Reverts "Add prosthetic limb" surgery to involve targeting limbs, rather than targeting chest. (Adds stumps) (#95252)
## About The Pull Request

- The `prosthetic replacement` surgical operation has been reverted to
be closer to how it used to work: The operation is done targeting the
limb that's missing

The change was made out of necessity, as surgical state was tied to
limbs - you had to operate on the chest to re-attach limbs because there
was no limb to operate on.

To circumvent that, I have done the unthinkable of adding stumps when
you are dismembered.

- Missing limbs are now represented as an invisible, un-removable,
un-interactable limb.

Making this change was not as difficult as originally anticipated, and
(at least surface level) seems to have broken very little.

Surprisingly little had to change to make this work. 

Direct accesses to `mob.bodyparts` was changed to `mob.get_bodyparts()`
with an optional `include_stumps` argument.
Similarly, `get_bodypart()` had an optional `include_stumps` added. 

This means we ultimately barely needed to change anything, and in fact,
some loops/checks were able to be streamlined.

## Why It's Good For The Game

- As mentioned, this change was out of necessity and was easily the
least intuitive part of the broader changes. Reverting it back to how it
used to work should make it far easier for people to pick up on, and
means we can cut out a bunch of bespoke instruction sets that I had to
include.

- The addition of stumps also adds a ton of future potential - code wise
it allows for stuff like better damage tracking (we can transfer damage
between limb <-> stump rather than limb <-> chest), and feature we can
do "fun" stuff like have stumps bleed on dismemberment that you can
bandage.

## Changelog

🆑 Melbert
del: "Add prosthetic limb" surgical operation has been reverted to be a
bit closer to how it used to work - you operate on the missing limb /
limb stump, rather than on the chest.
refactor: Missing limbs are now represented as limb stumps. In practice
this should change nothing (for now), as no features were rewritten to
make use of these besides surgery. Please report any oddities with
missing limbs, however.
/🆑
2026-03-20 14:32:41 +13:00
MrMelbert 7b8eb2c7c7 Intelligent vendors may deny usage if you are poor (or outright if they are active/moving) (#95311)
## About The Pull Request

When brand intelligence triggers, infected vending machines have a 50%
chance to deny you from using them unless you are moderately wealthy
(>=1000 cr)

When the vending machines activate/start moving, they outright deny
usage from everyone

## Why It's Good For The Game

We have some very good vendor deny icons but they are almost completely
impossible to trigger in game (with the exception of booze vendors and
some very edge cases)

Someone gave me the idea to use them in the brand intelligence event and
it feels pretty appropriate. Also helps you identify infected vendors
(whereas right now you can only tell by the occasional message). Maybe
it'll even incentivize people to actually hunt down the origin rather
than just wait it out.

## Changelog

🆑 Melbert
add: Intelligence vendors (from the event) have a 50% chance to deny
users who are not wealthy. When the vendors awake and start moving, they
instead get a 100% chance to deny anyone.
/🆑
2026-03-19 05:25:39 +00:00
_0Steven 1fefd43422 Fixes a few feedback messages with vendor insertion failures (#95170)
## About The Pull Request

<img width="196" height="24" alt="image"
src="https://github.com/user-attachments/assets/bcfbdd1b-7ebe-4ea7-815a-526b3316396e"
/>

Fixes a few odd bits regarding vendor feedback, mostly clear from the
diff and changelog.

Bits of note:
- `canLoadItem(...)` defaults to sending a message, to the
`to_chat(...)` after was just duplicating it.
- It was trying to warn about it not being able to accept any more
products for a given category, but looking at the check before it it's
checking not against the category but against the individual product
record. Here we make it actually mention it's an issue with that item.
## Why It's Good For The Game

Fixes jank.
## Changelog
🆑
fix: Trying to insert an item into a vendor that has reached its maximum
capacity for that item no longer says "no space for any more /list", and
no longer TRIES to say it has too much of that category. It now
correctly says it can't accept any more of that item.
fix: Trying to insert an item into a vendor that can hold it but you
can't put it in no longer both says you insert the item into its input
compartment while also sending an error message about not being able to
put it in.
fix: Trying to insert an item into a vendor that can't hold it no longer
sends the error message twice.
/🆑
2026-02-18 13:47:34 +01:00
Leland Kemble 2438846007 Fixes making any vending machine free (#95150)
## About The Pull Request

Prevents free vending machine's circuit boards from being changed to
different brands

## Why It's Good For The Game

Fixes being able to make any vendor free.

## Changelog
🆑

fix: You can no longer make any vending machine free

/🆑
2026-02-16 20:11:10 +01:00
MrMelbert ef28e00690 [MDB Ignore] Refactors gauze, adds Tourniquets (#95041)
## About The Pull Request

1. Refactors gauze

Removes gauze var from `/stack`, adds a shared parent between tape and
gauze.
Behavior of "sticking thing on limb" is now a bit more generic, with
there being a component to facilitate it and a framework on `/bodypart`

Closes #92990

2. Adds Tourniquets

A first aid item, when attached to a limb it reduces blood loss from
that limb by 90%.
However while attached you walk slower (if on a leg), interact slower
(if on a arm), and yes, you rapidly die if you put it on your head

Paramedic belts have their starting equipment changed again for the
500th time.
Surgical tape -> Tourniquet
Bone gel -> Bonesetter

<img width="604" height="224" alt="image"
src="https://github.com/user-attachments/assets/443dd5c0-44a3-4ccb-9f6a-c561bbf2fba9"
/>

## Why It's Good For The Game

Adds some more variety for field treatment of bleeding wounds, and in
the future we can add things like "improvised tourniquets" or
"improvised splints" with wooden planks.

## Changelog

🆑 Melbert
add: Adds Tourniquets. While attached to a limb, reduces blood loss from
that limb by 90%, but makes you walk / interact slower. (Or if you put
it on your head, you die.)
add: You can purchase Tourniquets from the premium section of the
medical vendor
add: Paramedic belt setup has changed yet again: Surgical tape replaced
with Tourniquet, Bone gel replaced with Bonesetter.
add: You can use all forms of tape as splint - like Gauze. Will secure a
fracture but won't stop your blood from exiting.
refactor: Refactored gauze entirely, report any strangeness with it (or
tape, or tourniquets)
/🆑
2026-02-15 08:30:57 +01:00
nevimer 00ccf0c6b5 Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts:
#	.github/CODEOWNERS
#	.github/workflows/compile_changelogs.yml
#	.github/workflows/stale.yml
#	SQL/database_changelog.md
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/__DEFINES/atom_hud.dm
#	code/__DEFINES/inventory.dm
#	code/__DEFINES/mobs.dm
#	code/__DEFINES/species_clothing_paths.dm
#	code/__DEFINES/subsystems.dm
#	code/__DEFINES/surgery.dm
#	code/__HELPERS/global_lists.dm
#	code/_globalvars/lists/maintenance_loot.dm
#	code/_globalvars/traits/_traits.dm
#	code/controllers/subsystem/minor_mapping.dm
#	code/controllers/subsystem/processing/quirks.dm
#	code/controllers/subsystem/shuttle.dm
#	code/datums/components/palette.dm
#	code/datums/components/surgery_initiator.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/hud.dm
#	code/datums/mood.dm
#	code/datums/mutations/chameleon.dm
#	code/datums/quirks/negative_quirks/nyctophobia.dm
#	code/datums/status_effects/debuffs/debuffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/slime/slime_leech.dm
#	code/datums/weather/weather.dm
#	code/game/data_huds.dm
#	code/game/objects/items.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/frog_statue.dm
#	code/game/objects/items/rcd/RLD.dm
#	code/game/objects/items/robot/items/hypo.dm
#	code/game/objects/items/stacks/medical.dm
#	code/game/objects/items/stacks/wrap.dm
#	code/game/objects/items/storage/garment.dm
#	code/game/objects/items/tools/medical/defib.dm
#	code/game/objects/items/weaponry.dm
#	code/game/objects/items/weaponry/melee/misc.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/game/objects/structures/curtains.dm
#	code/game/objects/structures/dresser.dm
#	code/game/objects/structures/girders.dm
#	code/game/objects/structures/maintenance.dm
#	code/game/objects/structures/mirror.dm
#	code/modules/admin/greyscale_modify_menu.dm
#	code/modules/admin/verbs/light_debug.dm
#	code/modules/antagonists/ashwalker/ashwalker.dm
#	code/modules/antagonists/heretic/knowledge/starting_lore.dm
#	code/modules/antagonists/ninja/ninjaDrainAct.dm
#	code/modules/art/paintings.dm
#	code/modules/client/preferences.dm
#	code/modules/client/verbs/ooc.dm
#	code/modules/clothing/head/wig.dm
#	code/modules/events/disease_outbreak.dm
#	code/modules/holodeck/holo_effect.dm
#	code/modules/jobs/job_types/head_of_security.dm
#	code/modules/jobs/job_types/security_officer.dm
#	code/modules/library/skill_learning/generic_skillchips/point.dm
#	code/modules/mining/lavaland/ash_flora.dm
#	code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/basic/guardian/guardian.dm
#	code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
#	code/modules/mob/living/carbon/carbon.dm
#	code/modules/mob/living/carbon/human/human.dm
#	code/modules/mob/living/carbon/human/human_defines.dm
#	code/modules/mob/living/carbon/life.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob/living/living_defines.dm
#	code/modules/mob/mob.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mod/mod_control.dm
#	code/modules/mod/modules/modules_general.dm
#	code/modules/modular_computers/computers/item/computer_ui.dm
#	code/modules/paperwork/paper.dm
#	code/modules/paperwork/paperbin.dm
#	code/modules/power/lighting/light.dm
#	code/modules/projectiles/guns/energy/kinetic_accelerator.dm
#	code/modules/projectiles/projectile.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/food_reagents.dm
#	code/modules/reagents/chemistry/reagents/other_reagents.dm
#	code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
#	code/modules/research/xenobiology/crossbreeding/_clothing.dm
#	code/modules/research/xenobiology/crossbreeding/prismatic.dm
#	code/modules/surgery/advanced/brainwashing.dm
#	code/modules/surgery/advanced/lobotomy.dm
#	code/modules/surgery/amputation.dm
#	code/modules/surgery/blood_filter.dm
#	code/modules/surgery/bodyparts/_bodyparts.dm
#	code/modules/surgery/brain_surgery.dm
#	code/modules/surgery/cavity_implant.dm
#	code/modules/surgery/coronary_bypass.dm
#	code/modules/surgery/gastrectomy.dm
#	code/modules/surgery/healing.dm
#	code/modules/surgery/limb_augmentation.dm
#	code/modules/surgery/organ_manipulation.dm
#	code/modules/surgery/revival.dm
#	code/modules/surgery/sleeper_protocol.dm
#	code/modules/surgery/surgery_helpers.dm
#	code/modules/surgery/surgery_step.dm
#	code/modules/unit_tests/_unit_tests.dm
#	code/modules/unit_tests/designs.dm
#	code/modules/unit_tests/icon_state_worn.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png
#	icons/map_icons/clothing/head/_head.dmi
#	icons/map_icons/clothing/shoes.dmi
#	icons/map_icons/items/_item.dmi
#	icons/mob/huds/hud.dmi
#	icons/mob/inhands/64x64_lefthand.dmi
#	icons/mob/inhands/64x64_righthand.dmi
#	icons/obj/machines/computer.dmi
#	tgui/packages/tgui/interfaces/OperatingComputer.jsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
#	tgui/packages/tgui/interfaces/SurgeryInitiator.tsx
#	tools/icon_cutter/check.py
2026-02-12 23:50:09 -05:00
ArcaneMusic ea883deda7 Decreases multitool credit cost, increases quantity from vending machines. (#95076)
## About The Pull Request

Based on feedback from #94903, this PR decreases the cost of multitools
from the youtool vendor, as well as increases the quantity available
from the premium section from 2 to 4. The cost has been adjusted from
300 credits -> 150 credits each.

This change is being atomized out of the linked PR above, but is
otherwise relatively simple.

## Why It's Good For The Game

To quote the previous PR this was atomized out of:

> Multitools are considered to be standard job equipment for about 1/3
of the jobs on station, and the jobs that don't have multitools,
assistants included, typically will make obtaining one part of their
roundstart routine. It was looking into this that led me to learn that
multitools are currently sitting at 300 credits, which, while expensive,
just means that roundstart players are more tempted to just break into
or ask cargo/engineering for a multitool instead of ever buying one, and
for good reason. It's too good to pass up, especially when it's only one
door or plastic flap away for most players.

> So, to try and incentivize people to buy them from vendors over the
alternative, I've decreased the price to be within the range for regular
crew, but expensive enough for assistants so that they're encouraged to
look for/make a few credits, or wait a moment or two before they jump
into them.

## Changelog

🆑
balance: Multitools cost has been decreased from youtool vendors, and
their stock increased (150 credits, 4 stock).
/🆑
2026-02-08 14:15:01 +11:00
Justice f4faf53519 Adds lemon juice box :D (#95060)
## About The Pull Request
Adds lemon juice box to the game
## Why It's Good For The Game
Lemon juice box joins the orange juice box and lime juice box gang
<img width="320" height="320" alt="lemonboxdisplay"
src="https://github.com/user-attachments/assets/daae0355-10c5-43bf-ae3c-08855d80e0f1"
/>
## Changelog
🆑
add: Added lemon juice box
/🆑
2026-02-01 18:55:33 -05:00
Nick 12fabce357 Katanas now have their own respective sheaths, adds leather crafting recipes for katana sheaths (#94939) 2026-01-28 13:09:44 +02:00
MrMelbert 596b785ec5 More medical larp: Stasis bodybags and triage cards (#94709)
## About The Pull Request

1. Adds stasis bodybags, unlocked with cryogenics tech 

These bodybags are portable forms of stasis. However, they wear down
with use, only being able to keep someone in stasis for about 2, 3
minutes before falling apart.

Bodyparts and organs put in the bodybag are also frozen, allowing you to
maintain parts of gibbed people.

You can med scan through the walls of the stasis bag as well. Also you
can med scan through holographics bodybags.

2. Adds triage cards to the medical vendor

Triage cards are small pieces of paper you can write on and stick to
people. They're color coded according to severity, and are intended to
be used in mass casualty events for prioritizing patients.

3. You can pin paper to bodybags

You can pin a sheet of paper to bodybags that people can read, be it
autopsy or whatever.

4. Updates paper interaction code slightly

We have new procs for allowing interactions rather that snowflakes

5. Other forms of stasis apply tumor suppression

Oversight?

## Why It's Good For The Game

I made these a while back to just give medical doctors a few more tools
to play around with beyond the meta tools. Just to get more immersed
into the larp.

Otherwise, stasis bodybags gives Paramedics a tangible upgrade(if you
can call it that), offering a safer way to retrieve patients

## Changelog

🆑 Melbert
add: Adds stasis bodybags, unlocked with cryo tech. They put its
occupants (organ or mobs) in stasis, but wear down over time.
add: Adds triage cards to the medical vendor, a flavor item docs can use
during mass casualty events.
qol: You can pin papers to closed bodybags. Keep organized with your
autopsies.
qol: You can interact with papers in folders and on clipboards
qol: All forms of stasis stop brain tumors
/🆑
2026-01-17 10:37:49 -07:00
FalloutFalcon 69fac0225b Adds teto (outfit) (#94795)
## About The Pull Request
Adds a red preformer while respriting the old one at it had a ton of
minor issues we did not want to carry over.
Made with ALOT of help from @Major00
I did no re-sprite the yellow one as no body cares about them anymore
and I already sank a day into this

<img width="188" height="97" alt="image"
src="https://github.com/user-attachments/assets/fe4b5d30-df09-4dcf-8188-1334185f2223"
/>
<img width="512" height="264" alt="image"
src="https://github.com/user-attachments/assets/f0920acb-0f35-485c-9ca3-4dc96a4db525"
/>

## Why It's Good For The Game

Old sprite was old(or alteast looks old) and has design issues.
<img width="672" height="176" alt="image"
src="https://github.com/user-attachments/assets/49b1bc3d-3abd-4488-b59a-9eada433c01a"
/>

- a diffrent color for almost every pixel  
<img width="1187" height="666" alt="image"
src="https://github.com/user-attachments/assets/a7723ce8-67d1-4c18-bd17-2379c4aa0ba7"
/>

- pixel sticking out of boot 
<img width="480" height="400" alt="image"
src="https://github.com/user-attachments/assets/db0c3d97-0f0e-46d1-82ee-d84afe37cadc"
/>

- side sprite boots and therefore skirt were taller then north and south
- the little keyboard design on her sleeve was not consistently placed
- the sash thingy on her skirt is way too big compared to reference
images.
- her little name tag on her shirt does not read well on this tiny
sprite
- for some reason it has like, suspenders in the back

Teto is awesome and cool and epic and way more popular then the yellow
one i already forgot the name is. Why is it not in space as well.
<img width="47" height="49" alt="image"
src="https://github.com/user-attachments/assets/48e4078f-7767-4a3a-823f-986624619d45"
/>
<img width="72" height="79" alt="te_to"
src="https://github.com/user-attachments/assets/2a2f0601-6720-4c18-bda5-8de7ae4845d4"
/>


## Changelog
🆑 FalloutFalcon, Major00
add: Adds Teto (Outfit), found in the autodrobe
image: Resprited Miku outfit and fixed minor issues with it
/🆑
2026-01-10 18:33:04 -05:00
Fghj240 d5102b2030 Void stamp integration - the stampening (#94359)
## About The Pull Request

Void stamp added to bureaucracy loot spawners, a new box that contains a
granted, denied, and void stamp found in the lawdrobe, hop locker,
bureaucracy crate, mod stamper module, and the paperwork implant gets a
stamp that can cycle between 3 different ones like the mod stamp.

## Why It's Good For The Game

Finally the void stamp is obtainable

## Changelog

🆑
add: The void stamp is now obtainable
add: The lawdrobe now sells a box of stamps
add: The head of personnel's locker now contains a box of stamps
fix: The mod stamper module is now visible
/🆑

---------

Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
2026-01-08 18:31:15 +00:00
Tad Hardesty 4d7b9be4a2 Fix a variety of grammar errors (#94707)
* Fix uncapitalized sentences, lack of "the", and singular/plural mixup
when inserting items into lathes
* Conform some job descriptions to the pattern used by the majority:
bitrunner, chemist, coroner, janitor, RD, shaft miner
* Remove extra colon from "Open Special Role Information" action buttons
* Uncapitalize "no alerts" / "systems nominal" messages in atmos and
station alert consoles
* Fix incorrect feedback when wrenching down a freezer/heater with its
panel open
* Fix "Thank you for restocking the station!" appearing in the wrong
place in the cargo export summary
* Fix "pizza boxs" on cargo manifests
* Fix mid-sentence capital "The" when:
  * Examining walls with mounted items
  * Inserting parts into machine frames
* Fix "Pete's the udder"
* Fix double-"the" and stringified datum typepath when scooping reagents
* Fix missing spaces in door remote descriptions
* Fix uncapitalized "Nanotrasen" in emergency respone drone ghost role
poll
* Fix double-space in canister opening admin log
* Fix missing "the" when casting bear-form spell
* Fix "auxiliry" in NebulaStation airlocks
* Add `check_grep.sh` rules against "maintainance", "maintainence", and
"maintenence"
* Fix "maintainance" in NebulaStation airlocks, TCG cards, and in
examines of netpod, byteforge, quantum server
* Fix "maintainence" in examines of autolathe, flatpacker, cryo cell,
ore silo, floodlight, power storage unit, turbine, chromatography
machine, ChemMaster, all-in-one grinder, smoke machine, R&D machines,
vending machines
  * Fix "maintenence" in Sulaco ruin terminal
* Add missing periods to:
  * "That's X." examine block header
  * steal objective explanation text
  * atmospheric shield generator examine
  * autolathe examine
  * telescreen examine
  * accidentally stepping on a mousetrap
  * netpod examine
  * byteforge examine
  * hat/mask visor toggling
  * bizza box stack examine
  * ChemMaster 3000 examine
  * floodlight examine
  * power storage unit examine
  * ChemMaster interact messages
  * disposal bin animal eject message
  * techfab examine
  * vending machine examine
  * flatpacker examine
* Fix name capitalization/propriety of:
  * big manipulator
  * DeForest first aid station
  * Christmas tree
  * Thunderdome plaque
  * commission plaque
  * chalkboard coffee menu
  * experimental destructive scanner
  * scanner array
  * prison cube
  * RaptorDex
  * atmospheric shield generator
  * high-performance liquid chromatography machine
  * all-in-one grinder
  * keycard authentication device
* Fix plurality of:
  * fake stairs
  * HUDs
  * restaurant and bar seating
* Fix misc grammar/typos in:
  * recharging station description
  * worm description
  * surgery tray description
  * access failure message of restaurant portal
  * mysterious pillar description
  * Pennywise painting description
  * floodlight examine
  * power storage unit examine
  * flatpacker examine
* Remove extra newline from "Debug Z-Levels" verb
2026-01-03 21:34:59 -07:00
mcbalaam 3799968eb3 feat: new floppy disk sprites; most disks are now under the /item/disk type; adds disk stacking, uqinue styling and wrapping (#94112)
## About The Pull Request

Floppy disks received a sprite upgrade, as well as unique wraps:

<img width="364" height="150" alt="image"
src="https://github.com/user-attachments/assets/0ac433e3-7432-4c06-bec2-aeae00b6852f"
/>

<img width="786" height="527" alt="image"
src="https://github.com/user-attachments/assets/0f36bd0d-0362-4431-8131-49060a2fe348"
/>

You can now stack floppy disks! They also scatter around when thrown.
The video also showcases new styling options with a selection of
stickers! You can also write something on the disk instead of selecting
an icon:


https://github.com/user-attachments/assets/ff0a8542-9d79-4108-ae46-672ca5d620a2

MOST disks now inherit the `/item/disk` type to properly stack and do...
stuff. An updatepaths script included.

## Why It's Good For The Game

Old school is cool. Stacking disks makes them feel more authentic, while
styling allows for more crearivity!

## Changelog

🆑
add: New unique wraps for floppy disks
qol: Floppy disks can now be stacked
image: New sprites and stickers for floppy disks
map: Added and ran an updatepaths script
refactor: Most disks are now under the base disk item type
/🆑

---------

Co-authored-by: The-Tyrant <tyrantofgaming@gmail.com>
2026-01-04 08:52:18 +13:00
nevimer 6e9f2ccfc0 Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts:
#	.github/workflows/compile_all_maps.yml
#	.github/workflows/run_integration_tests.yml
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/_onclick/hud/credits.dm
#	code/controllers/subsystem/networks/id_access.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/game/machinery/doors/door.dm
#	code/game/objects/structures/crates_lockers/closets/secure/medical.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/modules/antagonists/malf_ai/malf_ai_modules.dm
#	code/modules/jobs/job_types/_job.dm
#	code/modules/loadout/categories/accessories.dm
#	code/modules/loadout/loadout_helpers.dm
#	code/modules/loadout/loadout_items.dm
#	code/modules/loadout/loadout_preference.dm
#	code/modules/mob/living/silicon/robot/robot_defense.dm
#	code/modules/mod/mod_theme.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/reagents/reagent_containers/cups/drinks.dm
#	code/modules/shuttle/mobile_port/variants/supply.dm
#	code/modules/surgery/organs/internal/eyes/_eyes.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png
#	icons/hud/screen_full.dmi
2025-12-15 18:12:29 -05:00
shayoki 739a897e5f merging with current 2025-12-14 03:25:39 -06:00
FalloutFalcon d25c6201f4 Standerdizing currency symbols Part 2 (#94259)
## About The Pull Request
Converts almost all non-constant, non-tgui usages of all variantions of
"credit" and "cr"

Everything seems in order, tested most the currencies.
<img width="905" height="119" alt="image"
src="https://github.com/user-attachments/assets/3fa005a7-a114-426c-9646-b81f68bc2dec"
/>
<img width="255" height="128" alt="image"
src="https://github.com/user-attachments/assets/14c83b54-4fd9-4bee-838f-5b1c03939d9a"
/>


## Why It's Good For The Game
Same justification as https://github.com/tgstation/tgstation/pull/94128
Just easier to mantain/adjust the grammer/names of our money
## Changelog
🆑
spellcheck: minor cleanup on some usecases of "credits"
/🆑
2025-12-13 21:00:19 -05:00
Alexis 1c3db82004 Removes the Imperial/Naval Hats and Jumpsuits (#4981)
## About The Pull Request
Does as the title suggests. I am pretty impartial to these existing, so
long as they get a resprite, and get proper digitigrade leg sprites
before they make a return. If anyone is super attached to the hats, let
me know in the comments, and I'll remove them from this PR. I only
included them with this due to it feeling silly to only have the hats
without the uniforms.
## Why It's Good For The Game
I am normally a firm believer in "Improve. Don't remove." but these
sprites lack digitigrade sprites and their own sprites have clearly not
been touched up in quite some time leads me to believe they are being
unmaintained and would best be removed for the time being.
## Proof Of Testing
It compiled. If CI passes it should work.
## Changelog
🆑
del: Removed the imperial/naval hats and jumpsuits.
/🆑
2025-12-09 11:10:50 -08:00
Leland Kemble 49d2f1f3c9 Adds the Modular Suit (Or Portable Suit) (#93776)
## About The Pull Request

First, boring stuff.
The "Modsuit equipment" techweb node has been split into two nodes, with
the additional node containing the more civilian MODules (And the new
plating), and costing 20 points.
A new "Perfumer" MODule has been added(not printable anywhere, but in
the new suit by default) that just cleans you.
The MODsuit being added has been added to the LawDrobe's premium
section, for 300 credits.

Now, the real addition.

This adds a MODsuit that is a modular suit, that is to say, a suit, tie,
shoes and glasses. The glasses aren't actually real flash-proof
sunglasses by default, but the welding protection module can be added.
The suit is obviously not space-proof, and offers no protection to
anything but biohazards. The suit has 10 complexity max, due to the fact
that most modules don't have a point on it. This is subject to change.

The pre-made one also has the stamp and paper dispenser MODules
pre-installed, which are both now activateable via the neck slot.

The suit control unit is the tie. 

## Why It's Good For The Game

Have you ever been called to court, but you didn't have a nice suit, so
the judge holds you in contempt and sends you to jail? Well, never
again. Gone are the days that you cause two innocent boys to almost be
executed for a crime they didn't commit simply because you don't have a
nice suit. With the Moonraker Conglomerate's newest export in your
hands, you'll never be the less formal one ever again. No matter the
occasion, you're never more than a few moments away from
self-representing.

Video of the fit:



https://github.com/user-attachments/assets/44d08ca8-9ae1-4887-81e6-cec11792132e

It's the same look as a suit jacket, white tie, sunglasses and laceup
shoes. You must get a matching jumpsuit of your own.

I think it's neat, and it's a damn shame that there's not a single
MODsuit that isn't just head gloves suit shoes. All these MODules which
are activateable from head, mask or glasses, and no suits that allow it.
Missed opportunity, I'd say.

Also, lawyer buff. Need I say more?

## Changelog
🆑

add: Added a modular SUIT, a deployable, one-piece three-piece suit.
Purchasable from the LawDrobe.
balance: The MODsuit equipment techweb node has been split in two, with
an offshoot for civilian MODules.

/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2025-12-02 17:42:15 -07:00
FalloutFalcon c04168e81f Standerdizing currency symbols (Part 1?) (#94128)
## About The Pull Request
Passes a standardized define into some of the tgui to parody behavior
with vending machines.
Adds a few defines for money symbols to make it easier to rework types
of money.

If yall are for this I can also go through and find and replace a ton of
strings and other tgui with these, but dont want to sink 2 much time
into it if not.

<img width="966" height="646" alt="image"
src="https://github.com/user-attachments/assets/2d4753be-7e5d-4733-acf8-05f354127a6a"
/>

Proof of concept if Nanotrasen was not an evil conglomerate and the
dollar never went out of style
<img width="1009" height="661" alt="image"
src="https://github.com/user-attachments/assets/e68bfcd3-4053-4641-9b28-f384f2cb049b"
/>

some broken shit here but 99% thats cause minimal runtime station does
not support the supply console
<img width="795" height="767" alt="image"
src="https://github.com/user-attachments/assets/30dbd625-5338-4dc3-80db-922ff045f0f0"
/>
2025-11-30 13:50:20 -06:00
nevimer baf3837ae8 Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
2025-11-29 22:49:21 -05:00
SyncIt21 db5e36e7b4 Fixes custom vendor not sanitizing item names (#94191)
## About The Pull Request
- Fixes
https://github.com/tgstation/tgstation/pull/91987#issuecomment-3573314355

Strings such as `\improper` and other non alphanumeric characters that
are stripped out when sent to the UI are now discarded so we don't end
up with malformed hashes

## Changelog
🆑
fix: items such as dna injectors and others that have strange characters
in their names can now be dispensed from custom vending machines
/🆑
2025-11-28 13:19:09 +01:00
Thunder12345 ae9183c32c Repaths green "captain" suits to not be real captain clothing (#94014)
## About The Pull Request

Repaths the green captain suit and its skirt version to be costumes
instead of real captain clothing, as this is in line with how they're
used and makes them not have the armour of real captain clothing.

Deleted an unused identical copy of the same suit.

Fixes #93972

## Why It's Good For The Game

These are costumes and it's inconsistent for them to have armour values.

## Changelog
🆑
fix: The captain suit costume (green suit) no longer has the same armour
as real captain outfits.
/🆑
2025-11-26 13:40:41 +11:00
Alien 371e9cb281 Gives the bartender a service plumbing constructor. (#93928)
## About The Pull Request

Puts one service plumbing constructor in bartender's wardrobe vendor
Lets plumbing constructors actually build the chemical teleporters
(before this only the sender could be made)

## Why It's Good For The Game

An alcohol factory isn't anything game changing. Not forcing the
bartender to wait for very niche research nobody will ever do to play
with it is a good thing

## Changelog
🆑 Cat
balance: Bartender's wardrobe vendor starts with a service plumbing
constructor
/🆑

---------

Co-authored-by: John Doe <markkavalerov87@gmail.com>
2025-11-24 09:47:14 -05:00
Roxy 71faa643bf Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-12 2025-11-12 16:44:13 -05:00
Matrix (Selena Rohrmann) 79e6d18464 New recolorable cape in the ClothesMate (#93795)
## About The Pull Request

A new recolorable cape in the clothesmate, called the robe cape.
<img width="398" height="241" alt="cape"
src="https://github.com/user-attachments/assets/68d51edd-93b3-4038-a444-b187aa29dc9d"
/>

<img width="157" height="156" alt="detective"
src="https://github.com/user-attachments/assets/3200d77f-ee3d-472a-8432-74999d3fd3e0"
/>

## Why It's Good For The Game

Capes and cloaks look incredible and the only one we have right now is
an owl cloak. This cape exposes one arm and shows off more of your
suit/arms than other capes do, and it's also colorable so you can adjust
it to suit your style. It's the best one I've seen and if people like
it, I might port more capes and accessories.

It was tough to track down the original spriter, I believe the cape was
brought from Nova to Monke.

## Changelog

🆑
add: Added a recolorable cape to the ClothesMate accessories section
/🆑
2025-11-11 22:00:55 +01:00
necromanceranne b489a46a0b Also makes sure vendors respect interaction blockers. (#93821) 2025-11-08 13:48:46 +01:00
Roxy e28e9fbdba Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 2025-10-23 17:38:23 -04:00
Cursor 200d6b52d2 Commencing Virtuous Mission: MGS 3 Stealth Suits (#4747)
## About The Pull Request

<img width="195" height="177" alt="image"
src="https://github.com/user-attachments/assets/af6505b9-1036-41d0-98c7-04df08cb01ed"
/>

## Why It's Good For The Game

I love Metal Gear Solid 3. I'm not a very emotional person. But Metal
Gear Solid 3's ending, Snake's debriefing specifically brings me to
tears whenever I think about it.

With MGS Delta releasing, I thought about it again. So I commissioned
Crumpaloo, and took ~~another Doppler~~, (correction, the bandana is by
~~Alterist~~ Kuro020, how have I got credit wrong three times, of TGMC)
sprite to bring the legendary soldiers together. The Mother of Special
Forces and the Man Who Sold the World.

Armored varients are in the Syndi/Sec drobe while unarmored variants are
in the Autodrobe.

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑 TheSelfish, Crumpaloo, Alterist and Hideo Kojima
add: Sing. Sing a song. Straight from Soviet Russia, don the iconic
gears of the Legendary Soldiers, Naked Snake and The Boss. Unarmored
variants in a Hacked Autodrobe, Armored in a hacked Security Drobe and
Syndidrobe respectively.
/🆑

---------

Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
2025-10-23 03:08:49 +03:00
Cursor 1f342e1a21 Shifts some stuff around in the Autodrobe (#4829)
## About The Pull Request

Title. I just moved the Clown stuff from the main part to the bit with
the rest of the Clown stuff.
## Why It's Good For The Game

Org.

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
code: Clown stuff is properly grouped in the Autodrobe.
/🆑
2025-10-22 03:06:53 +03:00
SyncIt21 b6faafdcb2 Fixes custom vendor item interaction (#93500)
## About The Pull Request
- Fixes #93498

## Changelog
🆑
fix: restores custom vendor item interaction behaviors
/🆑
2025-10-19 04:55:44 +02:00
L0pz 0df0ef5b7b Adds purity seals (#93496)
## About The Pull Request

Adds purity seals for the chaplain's use. Calling them cheap stickers
may get you branded as a heretic.


## Why It's Good For The Game


Sometimes people need more than just your word that their lead pipe has
been blessed by you, the most holy chaplain. That's where the purity
seals come into play, as they are a visual indicator of your deity's
approval.
<img width="259" height="182" alt="image"
src="https://github.com/user-attachments/assets/5492bae8-175a-4387-9279-263fbb492510"
/>


## Changelog
🆑
add: Added purity seals, which may be found inside two boxes being sold
by the Deus-Vend
/🆑
2025-10-19 02:16:19 +03:00
Leland Kemble 348789fa8d The Renamening- upgrades UNIQUE_RENAME and moves a lot of renaming implementations under it (#93115)
## About The Pull Request

Moves a lot of the unique renaming implementations described in #82664
to the functions given by the `obj_flag` `UNIQUE_RENAME`.
`UNIQUE_RENAME` has been given new properties to account for
non-standard renaming, these being the `RENAME_NO_DESC` flag that
prevents changing the description, the `nameformat()` and `descformat()`
procs that, when modified, allow for applying naming formats(i.e. "Body
Bag - [input]"), as well as other post-renaming handling such as
changing the name of the output plant of a renamed seed, the
`rename_checks()` proc that allows for unique naming prevention(such as
a locked personal closet), and the `rename_reset()` proc to clean up
other possible renamed variables potentially changed in `nameformat()`
and `descformat()`.

This also adds `/datum/element/tool_renaming` to crayons, which will let
them rename anything that has `UNIQUE_RENAME`. I looked through
everything with that flag, and I didn't see anything that I don't think
should be renameable by a crayon(except things that shouldn't be
renamable with pens), so it shouldn't fuck anything up.

## Why It's Good For The Game

moves all of the non-honorable mentions in #82664 to the same renaming
system, and also moves all of the honorable mentions save for:

- plaques, as they only get renamed once and wouldn't benefit from
`UNIQUE_RENAME` imo
- books, because they're far more than just renaming, and are persistent
- paintings, because they're persistent
- photos, because they're not normal renaming and they're persistent
- endoskeletons, because they're done with a multitool in UI
- cardboard IDs, because they're far more than just renaming

Additionally, this fixes:

- Implanter renaming didn't work because a ! was missing
- Clown borg picket sign renaming didn't work because they didn't use
the correct arguments

This'll make it easier to make renameable objects in the future, as
well.

## Changelog
🆑

fix: fixes implanter renaming not working
fix: fixes clownborg picket sign renaming not working
code: brought most unique renaming implementations under UNIQUE_RENAME

/🆑
2025-10-17 01:56:09 +02:00
Roxy d14e538393 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 2025-10-15 19:34:41 -04:00
Roxy 436f766c3b Modular vending machine code cleanup (#4791)
## 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
/🆑
2025-10-08 14:28:49 -04:00
die 0204ab8fdd Canreach refactor (#93165)
## 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!
/🆑
2025-10-07 20:28:59 +02:00
Cursor 677171718e Gives the Aerostatic Boots storage (#93306)
## About The Pull Request
Title.

## Why It's Good For The Game

Boots should be consistently storable.

## Changelog
🆑
qol: Aerostatic Boots now have storage, as they're boots actually.
/🆑
2025-10-06 02:53:14 +02:00
Hatterhat 347c34bb15 Card Shoes! (and misc. card related bugfixes) (#93010)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-10-05 12:51:29 +11:00
xPokee 8aa39b75f0 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-10-04 05:28:09 -04:00
Krysonism def17fd90a Rare Earths! Advanced soils for botany. (#92513)
## About The Pull Request

This PR adds 4 new types of soil and a holder item; the soil sack, to
contain and transport said soils.

<img width="496" height="378" alt="bild"
src="https://github.com/user-attachments/assets/57f42a9c-c731-4195-91df-b4456ec45e7b"
/>

Two of the new soils + the regular old soil are available in the premium
section of the nutrimax.

All 5 soil types are available from cargo. 

It also adds two new plant traits; soil lover and semiaquatic, that
allows coders to confer maluses to plants growing in trays or soil
respectively.

Potatoes, sweet potatoes, carrots, parsnips, cahn'roots, white and red
beets currently have soil lover, reducing their produced yield by 30%
and their potency randomly between 20-80% if grown hydroponically.

Rice has semiaquatic which increases the amount of weeds gained by 50%
if grown in soil rather than hydroponically.

## Advanced soil types

### Vermaculite
  #### Stats
    Max Nutrients: 20u
    Max Water: 150u 
  
  #### Special Effects
Multigraft: Up to 3 grafts can be cut from a plant planted in
vermaculite.
Graft Medium: Graft cuttiongs can be directly placed into vermaculite to
create a new plant vegetatively.

### Hydrogel Beads
  #### Stats
    Max Nutrients: 15u
    Max Water: 300u
  
  #### Special Effects
Hydroponic + Soil: Both water loving and soil loving plants can grow
without maluses.
    Super Water: Water consumption rate is decreased by 50%

### Korta Coir
  #### Stats
    Max Nutrients: 20u
    Max Water: 100u
  
  #### Special Effects
Fast Mushrooms: Mushrooms mature(and age) 40% faster if planted in this
soil.

### Worm Castings 
  #### Stats
    Max Nutrients = 35u
    Max Water = 200u
  
  #### Special Effects
Slow Release: If the nutrients run out, 1u nitrogen will be
automatically added to the nutient pool.
Worm Habitat: Composting veggies in this soil has a chance to produce an
extra slimy worm.

### Soil Sacks

Use them on the floor to place a soil at that location. 

You can reverse this process by right clicking a soil with a shovel.

The sacks are huge items that deals stamina damage, but have slowdown
when carried.

They can be wielded to remove slowdown, double the damage output and
gain 25% block chance.

They have unique normal and wielded inhands for each sack type.

#### Price List

**Soil**
  Nutrimax: 50 cr
  Cargo: 400 cr /  5 sacks

**Vermaculite**
  Nutrimax: 100 cr
  Cargo: 400 cr / 3 sacks

**Hydrogel**
  Nutrimax: 100 cr
  Cargo: 400 cr / 3 sacks

**Coir**
  Nutrimax: N/A
  Cargo: 600 cr / 3 sacks

**Worm Castings**
  Nutrimax: N/A
  Cargo: 800 cr / 3 sacks

#### Misc Soil Changes

Soil now have a new armour type and are generally much harder to destroy
by shooting or bashing them.

Fixed a bug where weeds would instantly reduce yield to 3 instead of
lowering it by 1-2 per cycle.

## Why It's Good For The Game

I have long been a fan of using soils in botany, they are the cheapest
and easiest way to make new trays and enable many interesting
strategies.

The default soil is fine for what is but it kinda sucks, not only having
low stats but also missing autogrow, a feature botanist have grown
completely addicted and dependent on.

When self sustaining trays were removed and autogrow added, it was
intended as a way to keep a couple of plants alive while you ran out to
do errands or grab a drink.

However, the feature has devolved into basically a shift start self
sustaining for all your trays and standard practice is using it on every
single tray that currently is not trying to mutate.

This has resulted in certain core botany mechanics like water and pests
being made totally irrelevant, shrinking design space a lot.

Rather than just reaching for the stick, I thought it would be fun to
instead offer them a carrot in the form of an expanded toolset of soils
with unique effects that cannot be replicated by trays.

These new soils offer niche benefits that enable advanced botany
gameplay and provides a framwork for deepening plant / tray interactions
in the furture.

## Changelog

🆑
add: Added 4 new types of soil
add: Added soils sacks to the nutrimax
add: Added soil sack crates to cargo.
balance: Soil now has higher armor values.
balance: Rice now gets more weeds if grown in soil.
balance: Carrots, potatoes, beets and their mutations now get reduced
yield and potency if grown hydroponically.
fix: Weed overgrowth no longer instantly sets yield to 3.
/🆑
2025-10-04 05:01:26 +02:00