Commit Graph
668 Commits
Author SHA1 Message Date
Alexis 88e84645b1 Merge commit '6b52b564a50e4f3091470529c683587e5de15d49' into upstream-sync-7-22-2026 2026-07-22 13:39:09 -04:00
Leland KembleandGitHub f29fccfc2c Not as scary as it looks attackby() to item_interaction() (#96795) 2026-07-12 13:45:35 +02:00
e9061e8b19 Blacksmith Revamp (#5360)
## About The Pull Request

Makes a number of changes to blacksmithing to make the role more
appealing, convenient, and special:

<details>
<summary>New Additions</summary>

- [ ] Added a new blacksmith recipe that requires legendary skill and
the skillchip: parts for a classical single-action revolver. High
damage, but finnicky to use; no safety mechanism, can't accept speed
loaders, and the hammer has to be cocked before each shot. Cocking the
hammer is faster if both hands are free, allowing for fanning the
hammer.
- [ ] Smiths can now make new storage options: a cowboy holster that
stores a handgun and multiple ammo boxes, a charging belt that recharges
one energy gun, a botany bag with expanded storage, and multiple types
of scabbards.
- [ ] Added a new skillchip specific to blacksmithing; without the
skillchip, your options on what you can produce via smithing are
reduced. This is to make it so that the smithing job role (or at least,
whoever has been given the skillchip from the QM's locker) is more
special. Currently smithing is just sort of something anyone can do, the
only things unique about spawning in as the blacksmith is that you have
cargo access and smithing-specific bounties.
- [ ] Replaced the water barrel with a new structure: the reagent
quenching trough. This spawns in filled with a new reagent, quenching
oil. Quenching a smithing item in the trough with any reagent will imbue
it for zero reagent use, and heat the trough's reagent.
</details>

<details>
<summary>General direction changes</summary>

- [ ] Perfect hits are no longer probability-dependant; they're based on
the player's timing. Except if the player is max level at blacksmithing,
in which case all hits are perfects.
- [ ] Right-clicking with a hammer on the anvil will allow the player to
automatically forge the item they're working on, with a slower pace
compared to manual forging. This is mostly meant to allow talking to
someone while working on forges.
- [ ] Removed multi-anvil smithing; blacksmithing lacks a dedicated
space on most maps and so must occupy a hallway or something else
instead. "Playing optimally" with multi-anvil smithing means taking up
significantly more space, in addition to looking extremely silly and
bypassing part of the loop with blacksmithing (levelling up the smithing
skills to produce equipment faster); the smithing chip will reduce the
swings needed to finish a job to compensate.
- [ ] Reworked reagent imbued equipment; removed the bonus from leaving
a weapon unimbued. This bonus can now be regained specifically by
imbuing smithing oil (smithing oil is special; imbuing it doesn't
inflict it as a reagent for effects, but makes the armor/weapon/etc.
better by numbers). Also, reagent imbued equipment no longer has a big
damage multiplier but will merely stop applying reagents after a certain
integrity threshold is passed.
- [ ] Significantly reduced the income from smithing cargo bounties. It
honestly kind of sucks that blacksmiths' value to the station is that
they print money and not for the actual quality of their items.
- [ ] Blacksmiths now have weapon access by default. It's honestly kind
of weird that the guy whose whole schtick is making weapons, didn't have
weapon access to start.
- [ ] Moved the crusader belt from the general crafting menu to the
smithing crafting menu; it now requires lv7 smithing and the smithing
chip. This change is because it's highly contingent on blacksmithing
equipment for its main storage so it seems most sensible for a smith to
work it.
- [ ] The leather apron that blacksmiths roundstart with now has
dedicated storage for various smithing and glassblowing tools.
</details>
<details>
<summary>Interactivity changes</summary>

- [ ] Trying to pick up a heated blacksmith item will now burn your
hand.
- [ ] Various quenched smithing items now have associated force values
for dealing damage, but will also (usually) cut the user's hand for
doing so.
- [ ] You can now use water tiles or certain reagent containers (needs
at least 300 units) to quench smithing equipment.
- [ ] The forge now heats up it's surroundings and burns carbon dioxide
while doing so. The wall-mounted heater now auto charges it's cell to
compensate for this.
- [ ] You can now weapon-bash your blacksmithing shields, similar to how
you can slap your baton against your riot shields to intimidate.
</details>

<details>
<summary>Convenience and misc.</summary>

- [ ] Changed the Rapier sprites to match the other smithing weapon
sprites.
- [ ] Added more tutorial tooltips when inspecting blacksmith equipment.
- [ ] The blacksmithing noises are quieter, thank god.
- [ ] Using tongs on a stack now pulls only one item from the stack,
instead of pulling all items in the stack. You never actually want to
have more than one sheet in the tongs so there's no reason to include it
really.
- [ ] Completed blacksmith items can now be picked up with tongs and
placed into the crafting bench with them. This is meant to reduce the
tool-juggling for moving the item from the anvil to the basin, then
moving the item from the basin to the bench.
- [ ] The blacksmith ID trim now has an actual icon 
- [ ] Commented out the cortical borer cage recipe. We don't really need
this since we don't run cortical borers.
- [ ] Halved the number of necessary chains and plates for all recipes,
but doubled the time needed to hammer them; this is to reduce how much
item juggling is needed.
- [ ] Cargo guards and cargo secoffs now have blacksmithing access.
- [ ] Ensure that Ashwalkers, Primal Podpeople, and feral nekos have all
the same mechanics as a skillchipped crewie, except cannot make the
revolver
</details>

<details>
<summary>Code refactoring</summary>

- [ ] The reagent clothing and reagent weapon components now come from a
general reagent imbued parent component.
- [ ] Refactored how anvil smithing works; it now relies on an item
component that handles item heat, hammer strikes, and quenching, instead
of all the code being handled within the anvil itself.
- [ ] Removed the skyrat_obj_flags variable that only functioned for the
anvil_repair flag and nothing else. We have different ways to check for
the stuff it relied on so it's not really needed.
- [ ] Removed the in_use code from various forging objects. It's a
really cumbersome system and annoying to manage all the time. Doafters
with interaction_key stand as a replacement.
</details>

Overall, in the hands of blacksmiths, smithing-chipped characters, and
the tribal factions, this should feel like a general buff. For everyone
else, this should feel like a nerf, and they should go to the blacksmith
or get skillchipped so they can make smithing stuff. It should also feel
less 'shallow' and a bit more interactive with the rest of the game.

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

<img width="180" height="108" alt="image"
src="https://github.com/user-attachments/assets/fff5bf67-2f6b-42e6-b8a6-920b5ef8bf26"
/>

<img width="399" height="52" alt="image"
src="https://github.com/user-attachments/assets/f7a1f395-d060-49ad-848f-52d0e4303177"
/>

https://youtu.be/hcPZXzCOSIU

https://youtu.be/V7GeLetcRtk

https://youtu.be/YEyW9pKidTU

</details>

## Changelog
🆑
add: Way, way too many blacksmith job features & smithing system changes
to list. But here's the highlights:
balance: Forged blacksmith weapons can now be used nonlethally via
striking with pommels, spear shafts, etc. which knocks down victims and
stamina damages them like a weaker baton.
qol: Blacksmith tongs now only pull one item at a time, if used on a
stackable item.
qol: Blacksmiths can now auto-smith at an anvil by right clicking with a
hammer.
qol: Blacksmithing tools now have more tooltips to tutorialize their
usage.
qol: Blacksmithing crafting bench can now store item stacks, forging
plates, and forging chains. Right-click to view what's in it.
balance: Removed multi-anvil smithing. Individual smithing pieces can
now be made faster with the smithing chip and other means to compensate.
add: Blacksmiths can now build a single action revolver if they are
fully levelled.
add: Blacksmiths can build a variety of new equipment at the crafting
bench -- gun-charging holsters, knife belts, multiple types of
scabbards, and even a new expanded-storage botany bag.
add: Replaced the water barrel for smithing with a barrel of smithing
oil; smithing oil is now used to grant the bonuses that was previously
given by leaving the item unimbued. The new barrel can have its contents
changed for reagent imbuing.
add: A new reagent "smithing oil" which gives innate bonuses to any
blacksmith equipment imbued using it.
balance: Material types now affect the quality of resulting items and
how quickly they can be forged.
balance: The reagent smithing hammer now has increased toolspeed if
forged well.
balance: Reagent imbuing's durability penalty has been altered; it
reduces durability for each time an imbue effect procs, and then stops
functioning for such when below a certain durability percentage.
/🆑

---------

Co-authored-by: Mathilde <146444134+ibexgoetia@users.noreply.github.com>
Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
2026-07-03 15:05:07 -04:00
GhomandGitHub adf838c32a Holidays content: Kitchen has more ingredients on some holidays, more mail items, special bar kegs on St Patrick Day, Beer Day and Talk-Like-a-Pirate Day. (#96509)
## About The Pull Request
This PR adds a simple holiday spawner type that can be used for objects
that are only spawned if the holiday they're associated with is being
celebrated. Right now it has three subtypes, all related to the kitchen
(liquid ingredient, powdered ingredient, meat ingredient).

The involved holidays are the fictional tiziran and mothic festivities
Atrakor's Might and Fleet Day. Extra stuff is also spawned on Bee Day
and Beer Day. On Vegan Day, the monkey meat slabs in the meat fridges
are replaced with plant-based meat slabs (killer tomato slices and pod
people meat, plus veggies) and the fridge is renamed from "meat fridge"
to "vegan fridge".

This PR also adds a few more holiday-specific mail objects such as
Speak-Like-a-Pirate Day, Fleet Day, Atrakor's Might, Chernobyl's
Disaster Anniversary (it's just a geiger counter), Monkey Day and
Draconic Language Day.

EDIT: I've decided to make the bar backroom beer keg into a spawner that
will spawn special kegs on specific days (otherwise it's a 1 in 25
chance). These kegs can contain drinks a little more refined than the
average beer keg. Also it comes with a resprite of kegs because the old
one was starting to look a little ass compared to other reagent
dispensers.

## Why It's Good For The Game
For being fictional festivities revolving around food and culture, and
despite the lot of recipes for moths and lizard people, we aren't
offering anything to chef players to let them cook said recipes beside
what's given on any bog-generic round. This is a step toward a slightly
less lackluster implementation of those festivities and recipes into the
game. Also chance for cooler kegs for the bartender.

## Changelog

🆑
add: The kitchen fridges may have additional ingredients on certain
holidays, in particular Atrakor's Might (lizardpeople) and Fleet Day
(mothpeople), and Vegan Day.
add: Added a few more holyday-specific mail items.
add: Replaces the beer keg in the bar backroom with special kegs on St.
Patrick's Day, Beer Day and Speak-Like-a-Pirate day. On any other day,
there's a chance that the beer keg will be replaced with one containing
whiskey or rum, or in rare cases, one of those special kegs.
imageadd: resprited the keg as well.
/🆑
2026-07-01 10:26:56 +12:00
ArcaneMusicandGitHub b14f1aaa4b Adds Jet Boots, a very expensive new toy for cargo. (#96299)
## About The Pull Request
This PR adds Jet Boots, a new pair of footwear that can be purchased
from cargo as an import item.
Jet boots share behavior with their parent, the rocket boots, featuring
the long range jet dash that already comes with rocket boots, though
this differs from the jump boot's dash due to being a shorter distance
as well as being far less safe as a result.

The main draw for this item is that it has a toggle action to enable
sustained jet flight. That sustained flight behaves the same as a flight
potions, offering the ability to fly over tables, as well as a passive
movement when applied. One issue with these boots, matching flight with
wings, is that you need to be in suitable atmosphere in order to be able
to propel yourself. An additional restriction is that due to your
propulsion being based on your shoes, being leg-cuffed (such as from
bolas or bear-traps) will prevent you from being able to fly.

One pair of Jet Boots requires **40,000 credits**.

### Minor things
In adding this, most of the code was applied from the existing logic
already used for mob flight and the flight organs. Considering this is
like, the 3rd thing that has consistent flight behavior(?) I'm tempted
to try and refactor it into a component, but in the interest of being
somewhat lazy I held off for this moment. I could be easily convinced to
do so, however.

These boots arrive via a gold crate. They sell for the same amount, but
the only way to let us do that was to tweak the gold crate code so that
they're not hardcoded to always arrive with gold bars and the champion's
belt. As such, there's an update map's script attached to this PR to
move existing gold crate subtypes to a "stocked" variant.

<img width="336" height="224" alt="image"
src="https://github.com/user-attachments/assets/1209e6d8-0ccb-411f-b5f6-56a808709911"
/>

## Why It's Good For The Game

The last few weeks I've kinda challenged myself with the following
question and began working backwards: "What should cargo be able to buy
for 40,000 credits?". I mulled over a few ideas, including being able to
drop in map templates onto the station, additional cargo shuttle
upgrades (In the vein of the atmos refill upgrade from my last PR), etc.
I decided on trying and making something that is inherently a selfish
purchase. Not quite to the level of buying a cargo shuttle that kills
the entire crew, but the kind that makes you think "Oh my god, cargo
just blew their entire budget on a pair of shoes".

That said, offering players flight is a rare, and expensive upgrade,
based on the fact that flight potions and the like are similarly a rare
upgrade. The alternative, training and breeding a raptor capable of
flight, is also already in cargo's domain, but typically reserved for
shaft mining use. The main give here is that in exchange for flight,
it's still bound to an item. Someone can still murder you for your
shoes, or stun you and take them off your body, especially with the
increased stun multiplier while in propelled flight.

## Changelog

🆑
add: Cargo may now purchase jet boots, boots that enable sustained
flight, for 40,000 credits via the imports section.
/🆑
2026-06-30 21:51:15 +02:00
GhomandGitHub 77fbd93641 Operation "WDYM They can teleport on away missions?!" phase 1: Stuck Inside Indestructible Walls (#96370)
## About The Pull Request
Somehow, we can teleport on away missions when we used not to be able to
a long time ago.
I'm not against it, however it can end quite badly with people getting
stuck in indestructible walls or stuff like that, or end up somewhere
with cordon turfs decoupled from the cordon area (museum cough cough),
which doto your spaceman what Dr. Manhattan did to Rorschach btw.

I'm totally fine with spacemen getting stuck on destructible turfs,
rocks that can be mined, machinery and other destructible or movable
structures, areas that are hard to access in and out, behind shutters
and puzzle doors or even at the rims of indestructible walls if they're
connected to any of the aforementioned things. It isn't a rigid
standard, using random teleportation to cheese away levels should be a
risky endeavor, but I also don't believe that you should end up
teleported somewhere that you cannot otherwise escape on your own or be
hypothetically freed from by another spaceman without more teleportation
having to be involved 100% of the times (or admins if they feel
merciful). That's where I draw the line.

Beside, more than a few maps didn't use cordon turfs and/or turfs or had
these massive portions of indestructible walls.

Oh, by the by, a little unrelated but I'm bringing the visuals of
indestructible "rock" walls up to date with the visuals for rock turfs
that can be mined. Included are also icon-states so that the two can be
easily distinguished during mapping.

Feedback welcome.

## Why It's Good For The Game
I'm not against using teleportation for away missions. Right now there
are a couple easter egg areas that can only be accessed that way.
However the risks of getting GBJ'd are immense if done randomly.

Also for some reason, despite having the secret z-trait injector for the
museum stops phasing/jaunting, the museum areas are not of the secret
type, so they don't block teleportation. WHATEVER, IT ISN'T LIKE IT HAS
SOME OMEGA LOOT WORTH THE TROUBLE

## Changelog

🆑
map: Made it a bit harder to get stuck on away missions if you willingly
or unwillingly use teleportation techniques. You still definitely can,
but usually only on sections of the map that can be reached one way or
another, including rock walls that can be mined, just not those that
cannot.
image: Updated the visuals for indestructible rock walls to match the
destructible ones.
balance: RNG teleportation should work marginally better around areas
and turfs where teleportation is restricted by skipping them instead of
having a chance to fumble because of that.
/🆑
2026-06-27 16:57:04 -07:00
RoxyandGitHub 8dee8c7fb5 Fix backwards updatepaths script (#96643)
## About The Pull Request

this currently replaces the mecha subtype with the car subtype which
isnt right

## Why It's Good For The Game

Fix

## Changelog

N/A
2026-06-23 23:22:34 -06:00
tontyandGitHub 60d4d942c5 Fixes an UpdatePaths script being left in the tool's root (#96644)
<img width="1024" height="1024" alt="image"
src="https://github.com/user-attachments/assets/7e757aaf-96f6-46f9-aa1f-77c60ecd9f9a"
/>

<img width="629" height="1200" alt="bounce"
src="https://github.com/user-attachments/assets/0461cd0c-c9f8-4072-a1ff-60e86dbe48ad"
/>

<img width="629" height="800" alt="squish"
src="https://github.com/user-attachments/assets/cd23f199-f82e-4299-9704-2c0a00005732"
/>
2026-06-23 23:22:17 -06:00
Roxy 7d56688ec6 dont use abstract parent supermatter area 2026-06-23 21:00:55 -04:00
Roxy 17041965c8 fax machines to subtypes 2026-06-23 20:47:16 -04:00
Roxy de4c3b255d Merge branch 'master' of github.com:tgstation/tgstation into upstream-2026-06-23 2026-06-23 15:51:55 -04:00
TimandGitHub 2034800f3a Refactor VIM vehicles into mech (#96571)
## About The Pull Request
- Fixes https://github.com/tgstation/tgstation/issues/96553

This refactors the VIM vehicles used for pets and critters into a
functional mech. It also fixes the vehicle missing a sealed air
compartment, which meant they weren't initially spaceproof despite using
spacesuits for their crafting recipe and apart of their sprite.

The VIM mech features:
- No arms and thus cannot be equipped with any weapons
- Room for 1 armor module
- Room for 3 utility modules (jetpack, radio, etc.)
- Cannot be used by silicons, AI, carbon mobs, or large mob types. (only
small-sized simple/basic mobs)
- Can pass underneath mobs and tables since it is tiny
- Can only be crafted via the crafting recipe (cannot be made from
robotics fab or researched)

## Why It's Good For The Game
<img width="1920" height="1080" alt="WIyLe0jcll"
src="https://github.com/user-attachments/assets/b642ba87-d09d-488b-92eb-dc0d3df41122"
/>

The cat NTOS theme is so cute. 

## Changelog
🆑
fix: Fix VIM not being spaceproof
refactor: Refactor VIM vehicles into mech
/🆑
2026-06-21 19:39:10 +00:00
Ben10OmintrixandGitHub 64baa1979d Basic mulebots. last basic bot refactor (#95899)
my watch has ended

<img width="401" height="256" alt="ffffff"
src="https://github.com/user-attachments/assets/a539203c-020b-4ad8-b034-f69ec0eafa78"
/>



## Changelog
🆑 Profakos (originally pulled from their branch, did massive chunk of
this), Ben10omintrix
refactor: mulebots have been refactored. please report any bugs
/🆑
2026-06-11 23:58:13 -07:00
AnturKandGitHub a62838fcc8 Polar bear basic mob conversion (#96295)
Straightforward conversion to basic mob. Only effective change is slight
increase in movement speed. They're still walking punching bags.

🆑
balance: polar bears are tiny bit faster
/🆑
2026-06-04 12:29:22 -06:00
tontyandGitHub ddb4b35bc2 Implements "forbidden" areas into atmospherics_sanity unit test (#96141)
## About The Pull Request
I originally just wanted to change the logging for this so that it's
more helpful for mappers, but I realized that this test doesn't cover
the case where a mapper mistakenly connects a illegal area into the air
loop, so I implemented that.

I had to remap Catwalk so that the actual server room was isolated from
everything else. I tried to keep everything intact to the best of my
ability but there simply wasn't much room.

Also, I added a new subtype for the supermatter engine's area, and
included an UpdatePaths file for it. Behaviour should be identical
across the board.
## Why It's Good For The Game
So we can be 100% absolutely definitely sure we didn't attach the waste
loop inside the supermatter engine.

## Mold Spore

<img width="400" height="400" alt="image"
src="https://github.com/user-attachments/assets/f231ba77-097d-4365-b467-17580aceae14"
/>
2026-06-03 14:21:31 -06:00
shayoki f601a6ddaf Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 2026-06-03 01:23:54 -05:00
SmArtKarandGitHub f3283799e7 Reworks lavaland tendrils into minibosses (#96186) 2026-06-02 21:00:15 +10:00
necromanceranneandGitHub 2275e1958e Adds deep lore to some pistols, and partially rewrites the baton lore. Repaths some items. (#96056)
## About The Pull Request

Moves the deep lore proc to the parent for guns. 

Adds deep lore to some of the pistols.

Rewrites the deep lore for the stun baton and contractor baton.

Repaths the Liberator pistol to a more sensible path name.

Rechambers the Regal Condor to .45, because I was today years old when I
learned that the Tiger Cooperative are _[radical Christian
extremists](https://github.com/tgstation/common_core/blob/cf1edb9f770e7d3c38ca894e951ab5ac50395a47/Governments%20and%20Organisations/Corporations/The%20Syndicate/The%20Syndicate.md?plain=1#L73)_.
I just thought they were nutso about changelings, I didn't know they
also think they're God's ubermensch. Anyway, that freak who started the
cult would chamber their relic pistol in .45 and you know it.

## Why It's Good For The Game

I love dumping large amounts of text into the code base that will
rarely, if ever, be noticed by the player. It's also the means by which
I can summon forth my good friend Hatterhat to contribute to this
codebase. Like a carrot on a stick.

If I post enough, one day he'll PR flashforge mines like he promised me.
2026-06-01 20:33:27 -05:00
+37 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
7763db34a1 Basic beepskies and some ED209 additions (#95783)
## About The Pull Request
this PR refactors beepskies and ED209s into basic mobs. ive also added a
few features for the ed209 because i cant keep my hands to myself:

ED bots can now wear hats! a few hats give them some new unique
dialogue. Putting a cowboy's hat on an ED will have it acting like a
town Sherrif

EDs are now rideable when emagged. theyll still be shooting people while
ridden. youll also have the ability to charge at people full throttle
running them over

ive also added a new Nukie variant, purchasable from the uplink. These
versions come fitted with an LMG and will patrol the station and shoot
all walks of life. If emagged, theyll blow up people with (weaker)
rockets (im still working on balancing this). they are rideable but i
highly suggest against it; youll be caught in the crossfire. (i
understand if ud prefer i atomize this feature)

## Why It's Good For The Game
gives some personality to EDs, as well as updating all these bots to the
cool new ai system

## Changelog
🆑
refactor: beepskies, and ed209s have been refactored. please report any
bugs
add: ed209s can now wear hats! some hats give them new dialogue
add: emagged ed209s are now rideable! 
add: added evil versions of the ed209s to the syndie uplink
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2026-04-25 00:25:28 +00:00
SmArtKarandGitHub 2680aafa3f [MDB IGNORE] Lavaland Mineral Rework: Yapmining 2026 (#95682) 2026-04-20 10:52:59 -04:00
IsratoshandGitHub abfad4d12e Fix master CI xenochitin repath (#95735) 2026-04-10 22:47:17 -05:00
MrMelbertandGitHub 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
SyncIt21andGitHub 7fc6e1402a Additional maintenance for plumbing related stuff (#94753)
## About The Pull Request
**Qol**
- Adds examines & screen tips for washing items in sinks
- Adds examines & screen tips for wall frame items i.e deconstructing
with wrench & what structures you can mount them on

**Fixes**
- Plumbing components inside shuttles now properly reconnect 
- Plumbing iv drip has their connectors (red & blue pipes) visible again
- Sinks consume reagents when washing and won't wash when it becomes dry
- Fixes #94942 placing ducts by hand on turf won't run time. Also
Plumbing machinery properly reconnects when un wrenching ducts in
circular connections
- All plumbing machinery now operates in the plumbing subsystem & map
loaded machines begin processing

**Refactor**
- Refactored sink frame into a wall frame item meaning it can now be
carried in hand and mounted on walls
- Refactored the sink attack chain to use `item_interaction()` instead
of `attackby()`
- All sinks are now wall mounted components meaning destroying the wall
they are attached to will cause it to deconstruct

## Changelog
🆑
qol: added examines & screen tips for wall frame items
qol: added examines & screen tips for washing items in sinks
fix: plumbing components inside shuttles reconnect to their machine
counterparts correctly
fix: plumbing iv drip has its red & blue connectors visible again
fix: sinks consume reagents when washing and won't wash when it becomes
dry
fix: map loaded plumbing machines begin processing
fix: placing stack of ducts by hand of ducts works again
fix; plumbing machinery properly reconnects when un wrenching ducts in
circular connections
refactor: sinks are now proper wall mounted components meaning
destroying their attached walls will cause it to get destroyed & sink
frames are wall frame items that can be carried in hand
/🆑
2026-01-26 15:00:11 +01:00
san7890andGitHub 8f73588d9a Blood Drunk Miner Basic Boss Refactor - "Similar Enough" Edition (#94728)
## About The Pull Request

I thought megafauna were hard to refactor into simple mobs, and they
kinda are, but also enough work has been done on them through various
refactors (e.g. mob abilities) that it's not _too_ bad, but I didn't
really relish working on it.

Regardless, it's refactored! A few more of the ol' simple mobs flushed
down the toilet, with a bunch more features to make porting over more
`megafauna` to the basic mob's `boss` framework even simpler. There's
some weird patterns that are introduced in here to better fit the old
system's parity, but I don't really mind having done that since it's
more important to get stuff out of the simple mob framework and into
something a bit easier to work with and extend.

Here are all of the changes I can recall having made:

* A lot of the documentation regarding the blood drunk miner did not
actually meet reality. The current refactor reflects what the code was
actually doing, not what was documented.
* The code regarding using the saw's `melee attack chain` stuff wasn't
changed. Sorry but I can't even start to unravel that, I just overrode
the whole attack thing because it's not really incorporable from what I
was finding.
* Basic mobs operate differently than simple mobs, thus this mob will be
"harder" for a shorter amount of time as people are not used to the
current timings/pathfinding behavior/cooldowns/etc. of the modern blood
drunk miner. The overall difficulty didn't feel too different to me in
my playtesting, but changes can certainly be made if someone can tell me
which variable to fix.
* Basic Bosses now appear in the orbit menu as mob POIs, parity with
megafauna
* Basic Bosses can now use the boss music component.
## Why It's Good For The Game

Cleans up the code by incorporating it into a modern framework that
already accounts for a lot of the stuff that was taken for granted 8-9
years ago when this was first implemented, and tries to keep any
possible number the same in doing so. Should be much easier to add new
graphics or overhaul the boss's AI to transform it into something even
more interesting should someone choose to do so.

Let me know if I fucked up with signals/ai behavior patterns/etc.
somewhere as it's been a while since I touched this stuff and I had to
clean out a lot of cobwebs in my brain to get to this implementation.
## Changelog
🆑
balance: Miners Beware: Blood Drunk Miners have been refactored into
basic mobs. This means their timings and such may be a bit more
unpredictable than what you're used to. The difficulty should be about
the same, but do approach with caution lest you get devoured...
/🆑

Hopefully more people can pitch in with refactoring megafauna now... not
too bad anymore after I fixed some of the jank...
2026-01-12 01:36:54 +00:00
SmArtKarandGitHub 71a232f03b Makes lizard skin and lizardskin items inherit their "donor's" skin color (#94751)
## About The Pull Request

As title says, skin butchered from humans (currently only applies to
lizardskin) now inherits their owner's skin color, and so do items
(lizardskin boots and hats) made from it.

Also this PR gagsifies lizardskin hats and boots for this very reason.

## Why It's Good For The Game

Consistency, when you butcher a purple lizard you should get purple
lizard boots.

## Changelog
🆑
add: Made lizard skin and lizardskin items inherit their "donor's" skin
color
/🆑
2026-01-12 00:29:35 +00:00
MrMelbertandGitHub 45b23412f8 [MDB Ignore] Medical larp: Adds the SDSM-35 (an in game brain trauma reference) (#94761)
## About The Pull Request

Medbay, the CMO, the Psychologist, (possibly) the Library, and some
maint rooms across all maps now have multiple copies of the SDSM-35

This exists as an in game ability to reference what brain traumas do. No
special bells or whistles, not even a search bar - it's a book after
all.

<img width="819" height="589" alt="image"
src="https://github.com/user-attachments/assets/ace867b9-a0f0-4302-99f9-46ed4d6fe377"
/>

<img width="802" height="546" alt="image"
src="https://github.com/user-attachments/assets/c96941d3-8da8-48f7-859b-93953fe01473"
/>

## Why It's Good For The Game

De-wikification: Rather than needing to pull up the wiki to figure out
what the brain trauma is doing, you can refer to the in game book and
cross reference the patient's behavior.

Medial larp: It's a reference to the DSM-5. If that wasn't obvious. 

## Changelog

🆑 Melbert
add: You can now find the SDMS-35 in Medbay, the CMO's office, the
Psychologist's office, and possibly the Library. Quite simply, it's a
reference book for all the brain trauma's you may experience.
/🆑
2026-01-08 19:47:04 -07:00
15baf7873a Offsite Deathrattle Implants and Repathed Kheiral Cuffs (#94209)
## About The Pull Request

Updates subdermal implants so that they have `implant_info` and
`implant_lore` variables instead of one unchanging `get_info()`. Also
rewrites/updates/tweaks/etc. lore for every implant that had get_info()
blocks.

Makes beacon implants (the ones you teleport onto) turn off (hide
themselves on prisoner management consoles) after ten minutes, matching
the tracking implant's functionality.

Deathrattle implants are now `allow_multiple = TRUE`, so you can have
multiple deathrattles implanted.

Reworked the implant pad's UI to have collapsible sections for implant
info, implant lore, and also have buttons for configuring deathrattle
implants.

Adds a box of expeditionary deathrattle implants to the mining vendor.
For 900 points (585 points if delivered), you receive a box containing 5
expeditionary deathrattle implants, which **ONLY ALERT TO DEATHS IN
MINING WASTELAND AREAS (e.g. not ruins, not space, not station) (this is
important)**, an implanter, and an implant pad.

The intended workflow is that you initialize one deathrattle implant,
use that network for all the other deathrattles, and implant yourself,
your mining buddies, your QM, and a paramedic, maybe. However since they
start unset you could theoretically make one really big deathrattle
network. Good luck getting people to volunteer for implanting, though,
and as above, it only really works if you die outside of the station.

Also, repaths kheiral cuffs to be accessories, so you can attach them to
uniforms. They're still functional as suit sensor extenders and GPSes
(when off-station).

<details><summary>Screenshots</summary>

<img width="469" height="91" alt="image"
src="https://github.com/user-attachments/assets/2c88b151-e5ab-415a-8c41-0f166f439315"
/><br>
<img width="300" height="350" alt="image"
src="https://github.com/user-attachments/assets/0764983a-1160-48ab-aa6a-d1aaf08a682e"
/><br>
<img width="300" height="350" alt="image"
src="https://github.com/user-attachments/assets/98e84368-300b-453a-89a4-d922c80628e8"
/>

</details>

## Why It's Good For The Game

Deathrattle implants are cool. Being able to know that your coworker
exploded, after a non-negligible amount of setup and wrangling your
fellow spaceman to let you implant them, is probably a good thing.
Introduces a cooperative avenue of "Wait, my coworker just died" instead
of "Hey, they haven't yelled something on comms, did they roll antag?
(No. They died.)"

Kheiral cuffs being uniform attachments is because having to sacrifice
glove slot for them annoyed me a lot.

## Changelog

🆑
add: Nanotrasen has begun rolling out (unconfigured) expeditionary
deathrattle implant kits for their mining teams for 900 points (585
points, if manually delivered). These only alert for deaths on raw
mining wasteland, and will not work in space, ruins, or on-station.
balance: Kheiral cuffs can now be attached to uniforms as accessories.
They retain their suit sensor extension/GPS functionality (still only
when off station Z-levels, though).
fix: Beacon implants now turn off (hide themselves on prisoner
management consoles) after ten minutes, matching the tracking implant's
functionality.
qol: Made the implant pad UI a little nicer to look at, with dropdowns
and demarcated sections.
code: Implants now have separated "immediately useful" information and
"extended lore tidbits" information as variables instead of one
unchangeable get_info() block.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2026-01-04 16:55:09 +00:00
Tad HardestyandGitHub 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
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
SyncIt21andGitHub b03fc39287 Replacing objects with their mapping directional helpers Part 3 (#94315)
## 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
/🆑
2025-12-09 23:33:44 +00:00
AlexisandGitHub 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
san7890andGitHub e0827de4b5 [MDB Ignore] Unrestricted Airlocks - Door Delays (#94040)
## About The Pull Request

This PR adds a change to a pretty prevalent feature that's been around
since #66588 (April 28th, 2022). Although it has been controversial to
some extent, I believe that it was a good change in principle for
reasons I will later get into. For now, this is what the PR does:

* All _station_ unrestricted door helpers (e.g. those in maintenance)
have been replaced with a subtype that adds a random 2-3 second delay to
opening the door, using a new "unrestricted latch" feature. **This does
not occur if the user has regular access to that door.**
* The unrestricted side will initiate a do_after and plays a distinct
small hissing sound (because I presume you're disengaging some hydraulic
lever on that side), after which the door will open as players have come
to expect.
* While you're engaging the lever, you will be resistant to pressure
movements as you are presumably holding onto the lever or something. All
other movements (e.g. voluntary, being shoved, etc.) will continue to
function as expected.
* We will statistically tabulate each time someone attempts to use the
unrestricted "lever", and every time one successfully occurs. This is
just for analysis to see player trends as we have lacked this over the
last 3.5 years.

Here's a link to the sound I added:
https://freesound.org/people/Usernameis1337/sounds/632755, the version
in this PR was converted using OGG Vorbis.


https://github.com/user-attachments/assets/4167bda4-63b5-4dc0-a7b2-694a9e3d3201

## Why It's Good For The Game

Back in 2022, I was one of the major proponents for adding such a change
to the game. This is for a few reasons:

* It doesn't really make human sense for a station to have
hallways/spaces that you can enter and then just get completely trapped
in. The station is a deathtrap because of _who_ is on it, not because it
_is_ a death trap. I have always maintained that we should assume that
the station is competently made to give the hijinx a much more jarring
background. To me, maintenance isn't old sections of a station (although
it can have those elements), but vital side pathways in the event of
emergencies, like having extra fire stairs in a building. The doors to
those fire stairs are always unlocked because they need to ensure that
people are able to efflux to save themselves from danger rather than
die.
* It was easily subvertable anyways. You can easily ask the HoP for
maintenance access or AI to let you out of maintenance (although the
latter was a bit harder to articulate). I don't find myself agreeing
with this as much nowadays but I remember the frustration I felt waiting
for minutes for someone to open the door had something occurred for me
to have found myself in maintenance. It's simply not fun and doesn't
make sense for a station to have this.
* I thought that it added a unique element to antagonism. You can't drag
someone in maintenance and then have the whole entire subsection of the
station be your den. It's important for you to secure your base should
you be dragging people in there instead of just always being able to win
via dragging.
* People tend to forget this point, but it actually did cause a lot
_more_ deaths in situations where threats originate outside the
station/in maintenance. It was much easier for the killy-stabby mass
murderers to ingress into main hallways and get to killing faster. This
is why the change felt "equal" in a way.

### Why not remove it outright?

I believe that a lot of balance changes over the last 3.5 years (30000
issues ago!) have been weighting for these interactions, and I think
removing it all cold-turkey like will cause a huge upturn in deadliness
and just not be what players are looking for in the new game loop. To
me, this was a vital step in getting more towards 90-minute rounds, and
I think we would see a drop in that. I also have those above three
reasons that I am still a firm believer in, but I am still interested in
seeing what a different system might entail and how that could play out.
I added stat gathering so after we get 4-6 weeks of data, we can
determine to keep or shelve this feature. I will probably always be on
the "blocking" side of removing it outright unless there's some severe
data that can convince me (which will probably need it's own test-merged
PR, while this is meant to be added into the game right now).

### Why are we changing it?

I think not enough people are dying. I played a few rounds yesterday and
while a decent chunk of people were dying, I saw a few follies in my
original line of thought. Maintenance should be a bit creepier and not
auxiliary hallways (in normal circumstances), I already thought we did a
really good job of that but I noticed that it wasn't as good as memory
served me. I think maintenance should have a little bit more difficulty
to navigate (i.e. if you're being chased down by someone and it's taking
2.5 seconds to open, that would be an excellent heart-pounding tension
moment) and would overall be more interesting than the status quo. It is
a bit sillier to me but some IRL buildings do have to have you hold down
the push bar for a few seconds until it disengages, so this is
agreeable.

I also don't think the unidirectional exit design flow standards are
where they were due to drift in application, so this is also a better
way to uniformly apply it.
## Changelog
🆑
balance: After noticing it was too easy for animals to crawl through
maintenance by abusing the Easy-Exit sensors, Nanotrasen has replaced
all unrestricted door sensors (like in maintenance) with a pull-down
lever that should take around 2-3 seconds to engage. It has been
designed to allow the employee to actuate it despite any pressure
differentials within an area.
balance: The above change does not apply to select doors in the medical
section of the station, which will continue to use the "older"
Ready-Exit system.
sound: In order to ensure that staff in high-traffic areas don't go
bonkers due to this new change, sound dampeners have been installed to
prevent the hydraulics from being heard for super long distances.
However, they skimped out on the quality for the ones in maintenance...
/🆑

FYI Mappers/Tweakers: This PR replaces all station map unres mapping
helpers with the new subtype. You are welcome to replace certain doors
with the old helper (the base type) to get the old behavior as you see
fit, just explain why that behavior is desired in that location.
Otherwise, it would be appreciated if we have this new behavior >95% of
the time.
2025-12-05 21:01:15 -05:00
RoxyandGitHub 9f7dc7c970 [MDB IGNORE] Make /obj/item/stamp abstract, create proper granted stamp subtype (#94139)
## 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
/🆑
2025-12-02 16:53:07 -07:00
SyncIt21andGitHub 2424103245 Replacing objects with their mapping directional helpers Part 2 (#94181)
## 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
/🆑
2025-12-02 23:46:53 +00:00
SyncIt21andGitHub f7bc204bf7 Replacing objects with their mapping directional helpers Part 1 (#94059)
## 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
/🆑
2025-12-02 23:44:30 +00:00
tontyandGitHub 8c45d4466c [MDB IGNORE] Cleans up AI core structure, un-spaghettis some AI code (#93873)
## 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
2025-12-02 12:38:51 -06:00
necromanceranneandGitHub ac6c47f601 Several file changes just to make high frequency blade null rods block mechs, mech melee blocking finally implemented (#94089)
## About The Pull Request

High frequency blades, both null rod variant and admeme variant, can
block mech melee attacks. For the former, that is the only thing it can
block. Great if you're fighting a lot of mechs as a chaplain I guess.
And you're also really committed to the bit.

Weapons that were vibro subtypes are now claymore subtypes. The only
difference here is that they now have 30% block instead of 35% AP.

Null rod high frequency blades are now two-handed. This mostly
determines force changes (10 unwielded, 18 wielded), and mech attack
block chances.

Mech melee attacks respect block...assuming the blocking source can even
block the attack in the first place. Currently, the few sources that can
block/avoid mech attacks are;
- high frequency blades
- energy katanas
- Those staff nullrods (its a holy force field, iunno)
- wizard modsuit shield (and it will eat literally every single charge
it has to do that)
- Sleeping Carp evasion (and only at half the possible chance)
- CQC defense mode (themed as dodging the attack, and also halved)
- probably something I overlooked when I implemented OVERWHELMING_ATTACK
originally and have overlooked here as well.
 
Just think 'could this help avoid being hit by a road roller being
dropped on you' and go with your gut as to whether or not it is
appropriate if you spot something in the wild that seemingly can block a
mech.

## Why It's Good For The Game

> High Frequency Blade

I wanted to elevate the meme and that is as deep as this goes. Also I
wanted to make this two-handed, much like the true version.
The only thing it is lacking is the cool attack functionality, but I'll
be damned if I can get that to work in a sensible fashion for a crew
weapon...

> Vibro subtype

A lot less of these than I thought. And most of them seemed more
appropriate as claymore types anyway.

> Mech Block

I seeded this previously by making mech clamps respect block. I've now
come back to fully implement it in order to facilitate MGR memes.

For the most part, mechs should still enjoy being largely unblocked by
most sources, even from things like operative suit shields, and
certainly not from actual shields (which I've stripped the ability to
block the attack from entirely) and melee weapons.

The sources that can block them do so poorly. Or, in the case of the
high frequency blade, very well and that's pretty much the only thing it
IS good at blocking.

## Changelog
🆑
balance: High frequency blades (both null rod and admin versions) are
able to block melee attacks from mechs.
balance: High frequency blade null rods are now two-handed weapons.
balance: Mech melee attacks can be blocked or avoided by a few rare
sources.
/🆑
2025-12-02 01:13:58 -05: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
Thunder12345andGitHub 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
RoxyandGitHub 4d9471ee95 Fix grilled cheese sandwich never burning [MDB IGNORE] (#93957)
## About The Pull Request

`/obj/item/food/sandwich/cheese/grilled` inherited
`/obj/item/food/sandwich/cheese`'s `make_grillable()` definition so the
product of grilling a grilled cheese sandwich was a grilled cheese
sandwich. Repaths grilled cheese to not be a subtype of cheese

## Why It's Good For The Game

grilled cheese sandwiches should burn eventually

## Changelog
🆑
fix: fixed grilled cheese sandwich grilling into grilled cheese sandwich
/🆑
2025-11-17 22:55:38 -07:00
tontyandGitHub 416dea02aa [MDB IGNORE] isolates signpost teleporting into new component /datum/component/houlihan_teleport (#93810)
## 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.
/🆑
2025-11-12 23:09:49 -07: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
e30b7d97ef Add constructable floor lights + mapping subtypes (#93537)
## 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>
2025-11-10 21:17:51 +13:00
95d70f5d9b feat: removes varedited icon states from turret controls on 27(!!) maps (#93808)
## 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>
2025-11-07 20:49:09 +01:00
Roxy d0ca474789 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-05 2025-11-05 19:43:07 -05:00
tontyandGitHub 14d2514aa9 [MDB IGNORE] Refactors away /area/station/ai_monitored and its subtypes (with bonus neat repathing) (#93704)
## About The Pull Request

/area/station/ai_monitored's behaviour was isolated into a component,
`/datum/component/monitored_area`, which itself uses
`/datum/motion_group`s to query cameras. Functionally, it (should) work
identically to the old implementation. I'm sure that behaviour could
have been further cleaned up, camera code is quite dreadful, but it's
better to focus on isolating the behaviour first. Baby steps.

Areas that want to opt into monitoring can set `var/motion_monitored` to
TRUE (this approach was taken to make subtyping easier).

The following non-AI areas were changed:
- /area/station/ai_monitored/security/armory ->
/area/station/security/armory
- /area/station/ai_monitored/command/nuke_storage ->
/area/station/command/vault
- /area/station/ai_monitored/command/storage/eva ->
/area/station/command/eva

All other `/area/station/ai_monitored` subtypes were repathed into
`/area/station/ai` and cleaned up in a way that I thought made logical
sense. It is **much** more readable now. For example:

- /area/station/ai_monitored/turret_protected/aisat ->
/area/station/ai/satellite
- /area/station/ai_monitored/command/storage/satellite ->
/area/station/ai/satellite/maintenance/storage
- /area/station/ai_monitored/turret_protected/ai ->
/area/station/ai/satellite/chamber
2025-11-03 11:27:14 -06:00