Commit Graph

5322 Commits

Author SHA1 Message Date
Xander3359 bbe729aef7 Converts more attackby's to interactions (#93106)
## About The Pull Request
Converts the following:
- Medical Kiosk
- Implant case
- Flamethrower
- Chemical implant case
- Pappercutter

Also I've looked at some alt click procs and adjusted some of their
returns
2025-10-12 22:40:42 -05:00
MrMelbert e85674d366 Unified CMO blues slightly, updates garment bags slightly, updates CMO locker contents slightly (#93321)
## About The Pull Request

### CMO palette update

Before - after

<img width="533" height="324" alt="image"
src="https://github.com/user-attachments/assets/c8a843a6-875d-4796-8c62-d24dd509147b"
/>

Logical follow up to #93313 and #91902

CMO now has a backpack which matches their teal palette rather than
re-using the medical doctor's blue backpack

CMO now starts with white sneakers instead of blue sneakers

### Garment bag update

Garment bags can hold backpacks, duffels, etc. 

However they CANNOT store backpacks which have ANY contents, so no risk
of storage nesting memes here.

### Misc

Removed the defib mount from the CMO's closet

Minor bugfix for being unable to swap storage positions of items which
were instantiated in a storage

## Why It's Good For The Game

- Much like the Paramedic, the CMO has had many cooks which have not
always been on the same page, so this makes their sprite a bit more
coherent.

- Heads with unique packs just tossed them in their closet which is
pretty spammy given we have four variants now. Putting them in the
garment back makes sense.

- Defib mount in CMO's locker hasn't been necessary for a while now that
all treatment centers spawn with defib mounts.

- Bugfix.

## Changelog

🆑 Melbert
image: CMO now has unique backpack/satchel/etc. sprites which matches
their teal palette.
image: CMO spawns with white sneakers instead of blue sneakers.
qol: Garment bags can hold empty backpacks/satchels/etc.
del: Defib mount removed from CMO's locker.
fix: Items stocked in a storage item by default can be
mouse-drag-swapped like any other item.
/🆑
2025-10-13 00:16:49 +02:00
necromanceranne 86c499ebc3 Adds the Jaws of Recovery, a specialized form of Jaws of Life for paramedics with heavier limitations. (#93021)
## About The Pull Request

Adds the Jaws of Recovery, a form of Jaws of Life. These spawn in
cabinets in medical, similar to the fireaxe and mech removal tool.

Jaws of Recovery have two heads; prying, like a standard set of jaws of
life, and bonesetting.

Jaws of Recovery cannot be used to open windoors, and cannot be used to
open certain restricted doors. These doors include command staff private
offices, any command specific areas, AI upload areas and security areas
that aren't the brig entrance.

Jaws of Recovery also send out an alarm whenever used to open a door
that is of meaningful significance, like a departmental area. This does
not happen when opening maintenance airlocks, public accessible doors,
external airlocks and the auxiliary base.

The standard Jaws of Life and Syndicate Jaws of Death are entirely
untouched and function as expected.

<img width="240" height="177" alt="image"
src="https://github.com/user-attachments/assets/4e661720-25c7-42b5-963d-707b77d3683f"
/>


## Why It's Good For The Game

In my last PR I removed the broad access available to paramedics.
https://github.com/tgstation/tgstation/pull/92751
I have already explained my reasoning as to why this broad access is a
mistake. This is not anywhere close to that broad access being returned.
This is a slow, deliberate interaction meant to create friction when
someone is moving around using this tool.

Now, obviously, the change was something of a kick in the teeth for
paramedics (which I won't apologize for doing). I hadn't received any
moderate alternatives that sounded like a good idea for months. That is,
until the PR was merged and someone told me about how paramedics over on
Baystation have jaws of life, but they alert people over the radio when
they are used. Seemingly they were as much worried about paramedic
tiders as we are, and they're a high roleplay environment. We clearly
invited a problem on our end that they had sought to resolve because
they too realized that it was a mistake to just give the role this
access.

Now, obviously, [RETA exists to get medical staff into an
area](https://github.com/tgstation/tgstation/pull/92753). That's all
well and good and I like that system. This does not detract from that PR
whatsoever either. This is meant to serve as an extra emergency measure
in the event a paramedic REALLY needs to get into an area while trying
to create some kind of accountability for their actions by telling sec
when they start being used to pry open airlocks. If sec doesn't like how
much the paramedic is invading areas without reason, they at least know
where and when they've been going into locations and might be
incentivized to go investigate.

## Changelog
🆑
add: Adds the Jaws of Recovery. One can be found in a locked glass
cabinet in medical. These jaws of life are restricted on what they can
force open, and alert security and medical whenever they are utilized to
pry open departmental doors. They can't be used to open high security
doors whatsoever. And they come with a bonesetter attachment instead of
wirecutters. You know, for power-relocating your arm.
/🆑
2025-10-10 16:44:57 -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
Ghom f72eb75a6f Handcuffs can now be used to bind certain items (briefcases, toolboxes, etc.) to your hand. (#93305)
## About The Pull Request
Technically, this PR introduces the cuffable_item element and the
cuffed_item status effect and their relative code.

In more player-friendly terms, this allows the ability to use handcuffs
to bind certain items to your hands by right-clicking it with a pair of
handcuffs in your active hand. This makes the item unable to be dropped,
for better or worse, until you or someone else remove said cuffs. And
no, this doesn't conflict with the ability to be handcuffed if you're
silly enough to think that.

There are more than one way to remove the cuffs. For the player with the
item cuffed to their hand, to remove the cuffs they can either click the
status alert, or examine the item and click the relative hyperlink. The
second option is good to have if for some reason the status alert
doesn't show up (too many alerts etc.).

For other people, they can remove the cuffs by opening the strip
inventory menu (the one you open by click-dragging the sprite of person
with the item onto yours). It's an alternative action specific to this
status effect (therefore only held items). Until the cuffs are removed,
trying to remove the item **directly** will bring you nowhere **because
the item is stuck to their hands**, duh. Alternatively you can just chop
their arm off. You do what you do.

For a list of items that can be bound with cuffs (suggestions welcome):
- briefcases
- toolboxes
- lockboxes
- first aid kits
- shields (they generally have handles and all. gameplay-wise they
already take away one hand slot to use. Using cuffs seals the deal: no
swapping items on the go, so no two-handed weapons, but you won't drop
the shield until it's broken)
- jerrycans (Kryson's suggestion)
- soup pots (ditto, kinda weird)
- coffee mugs, and the mauna mug (ditto)
- buckets
- plushes (silly stuff, if you ever want to arrest a plush or test the
feature)
- pet carriers
- mining drills
- swords with closed guards (ERT chainsaw-sword, cap's sabre, parsnip
sabre, cutlass, e-cutlass...)
- crutches and the white cane
- baskets
- flashlights and lamps (not subtypes like flares, glowsticks and
torches)
- TTVs
- chairs

## Why It's Good For The Game
This opens up for some emergent use for handcuffs beside people (or
prisoner shoes). Inspired by a scene of some 1998 action movie, where
one of the bad guys had the mc guffin briefcase latched to his wrist
with a pair of handcuffs.

Codewise, it was also a reason to refactor bits of code like handcuffs
and screen alerts slightly. On a sidenote, actual sprites for
cult/heretic shackles.

## Changelog

🆑
add: You can now bind certain items like briefcases, toolboxes, medkits,
shields, jerrycans etc. to your hand with a pair of handcuffs,
preventing them from being dropped. You can remove said binds at any
time unless incapacitated, and so can others through the strip inventory
menu.
qol: The appearance of a screen alert now updates if the object it
represents (like, an item offered by another player) changes appearance.
imageadd: The shadow shackles item (from cult magic and heretic
sacrifices) now has its own icon.
/🆑
2025-10-07 05:24:20 -06:00
paganiy c5254e1e96 Abandoned crate refactor 2025 (#93288)
## About The Pull Request
Completely rewrites the abandoned crates code to modern code standards,
replacing messy switch statements with weighted loot spawners.
## Why It's Good For The Game

- Clear code
- Simple to add new loot types or modify existing ones
## Changelog
🆑
refactor: Abandoned crates refactored
/🆑
2025-10-07 02:12:56 +02:00
ArcaneMusic f74b725961 Ore vent sizes are now divided up based on their distance to the mining base (#92943) 2025-10-03 18:07:52 +02:00
Ghom a28575aa82 [NO GBP] Fixing more issues with sand (you can make sand walls again, also ghost glass sheets?) (#93215)
## About The Pull Request
Apparently wall construction code is snowflaked and indented as fuck
(and the same goes for door assemblies). I'm not bothering refactoring
everything with them, only to reduce the indentation, changing a couple
vars and overall making it easier to work with them later. This includes
wall construction not being hardcoded to sheets but include the
possibility to use other kind of stacks as well (if you don't count the
snowflake interaction with iron rods). In layman's terms, this means you
can make walls made out of sand (distinct from sandstone) again.

Also I've done some small changes to the materials storage, so that it
can eject ores too if the material doesn't have a sheet type.

Also, I've been told there may be issues with broken, uninteractable
(probably not properly initialized) glass sheets beside the ORM. I'm not
100% sure about the deets, but it may have something to do with spawning
the glass on the same turf the ORM is listening to, when smelting sand,
causing some race conditions, so let's spawn it in nullspace

## Why It's Good For The Game
While I'm sure there may be more elegant solutions (just take a look at
the wall and door construction code, they both use text2path oh god!),
I'm just here to make things a lil' cleaner and be done with issues with
the fact that sand is made of sand.

## Changelog

🆑
fix: You can once again make sand walls.
fix: Deconstructing an autolathe with sand in it should now drop sand.
/🆑
2025-10-02 19:12:11 +03:00
ArcaneMusic d78d3a5f4a Ore vents spawn a ring of platforms around themselves for the duration of wave defense. (#92978)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-10-02 17:06:07 +02:00
necromanceranne f843f61b9f Tendril loot changes: Demonic portals drop locked chests instead of just flat out the item, removes some items from some lists, punching mitts is a vendor item. Concussive gauntlets grant hunter boxing. (#93127) 2025-09-29 08:12:33 +02:00
Leland Kemble 49e9013f10 Puts a cooldown on freight transport via temporary transit tubes (#92953)
Co-authored-by: Lucy <lucy@absolucy.moe>
2025-09-28 20:40:02 -04:00
Tim 8516d44fe1 Fix shower causing mood and status effects to non-carbon mobs (#93149)
## About The Pull Request
- Fixes #93147

Borgs and silicons were able to get mood effects and status effects from
being in the shower.

## Why It's Good For The Game
Not intended.

## Changelog
🆑
fix: Fix shower causing mood and status effects to non-carbon mobs
/🆑
2025-09-28 21:09:50 +02:00
ArcaneMusic 4b61f5c6a1 Removes the random emagged portal spawn and lowers the export price of the monocloning jumperfish. (#93092)
## About The Pull Request

The export multiplier for monocloning jumpercable fish has been lowered
by an order of magnitude, making each one sell for a value in the
ballpark of 200-300 credits each, in-line with a free crate as opposed
to... buying a whole crate for free.

The emagged fishing portal board has been removed from the treasure
chest loot table.

## Why It's Good For The Game

**The emagged fishing portal can still be obtained by emagging a fishing
portal as usual and intended.**

Currently, the ocean portal can spawn in a treasure chest,
`/obj/structure/mystery_box/fishing`. It's a time-gated rare item from
the ocean portal, which has a rare chance to spawn. The issue with the
fishing treasure chest is primarily that one of it's rewards is the
emagged fishing portal. Additionally, the treasure chest functions like
the christmas tree, one free gift per mind per box. On a decent pop you
run pretty good odds of getting the emagged fishing portal.

As a result, the fishing portal has been obtained a particularly large
number of times, far more than expected based on export data. I know
this due to the chart.

### Arcane what do you mean "the chart".
I mean the **chart.**
<img width="1550" height="274" alt="image"
src="https://github.com/user-attachments/assets/82e5dfd6-9f96-478b-b4f1-8259c5d4f905"
/>
This is a chart of the top most exported items based on all superset,
blackbox data. Number one, the monocloning jumpercable, aka
`/obj/item/fish/jumpercable`. On current patch, they have an average
export value in the ballbark of 2k-3k credits for each fish caught, with
a 25% chance to be caught from an emagged portal. As their name
suggests, they can clone themselves without a breeding pair, and breed
up to a tank maximum of 12 of themselves.

These fish make up 4x more export value than all sales across the stock
market, and believe me, I *already know* how unilaterally broken the
stock market is right now.

Keeping these as-is would be extremely unhealthy for game health. This
isn't just me being an asshole about balance as usual.

**The emagged fishing portal can still be obtained by emagging a fishing
portal as usual and intended.**

## Changelog

🆑
del: You can no longer obtain an emagged fishing portal board from
treasure chests. You can still, however, emag fishing portals.
balance: Monocloning Jumpercable fish have had their export values
decreased. Their cloning capacity and electrical output remain the same.
/🆑
2025-09-27 20:39:38 -04:00
MrMelbert 4684abceb0 Refactor reagent container + all subtypes to interaction chain 2 electric boogaloo (#92763) 2025-09-27 18:26:45 +00:00
Tim 3609384014 Fix custom materials on wood tables and racks (#93118)
## About The Pull Request
This fixes custom materials for a few objects:
- Wooden tables are now made of wood
- Racks are now made of iron
- Bone racks are now made of bone

Also the formatting was missing a space in between the `=` which was
annonying.

## Why It's Good For The Game
Consistency.

## Changelog
🆑
fix: Fix custom materials on wood tables and racks
/🆑
2025-09-26 15:19:18 +02:00
Ghom 86439af28d You can now rotate cannons (#92984)
## About The Pull Request
You can now rotate cannons!

## Why It's Good For The Game
You can now rotate cannons!!!

## Changelog

🆑
qol: You can now rotate cannons.
/🆑
2025-09-23 16:44:57 -07:00
MrMelbert 750ca9d2ec Two as anything greps (and some other cleanup) (#92974) 2025-09-20 13:44:28 -04:00
Hatterhat ea06f858c8 repaths lava lattices to lava catwalks (#92994)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-09-20 09:18:28 -04:00
Leland Kemble 2f2df4308f Fixes "Can't Rotate!" being repeated infinitely for reflector boxes (#92982) 2025-09-20 06:26:21 -04:00
Ghom cd438cf794 The direction of your character changes when moving inside a cardboard box (#92985) 2025-09-20 06:14:43 -04:00
SimplyLogan f56811d8de Fixes unable to place power cables on reinforced catwalk in Lavaland (#93033)
<img width="443" height="217" alt="image"
src="https://github.com/user-attachments/assets/70968561-5ce4-44d2-b731-fcde46728881"
/>
<img width="288" height="143" alt="image"
src="https://github.com/user-attachments/assets/8d4784ef-25d7-4fc5-88e4-2dbadce71623"
/>



## About The Pull Request

Great success for #92975 

	resistance_flags = INDESTRUCTIBLE

Prevented cables being placed on that reinforced catwalk
Allowed just cables to be placed but the things are still unable to be
damaged in testing

I also made sure it does not affect regular catwalks
| Cannot place cables still | Need to remove cover |
|--------|--------|
| <img width="183" height="366" alt="image"
src="https://github.com/user-attachments/assets/d3a3704f-25ed-4567-85eb-e058aa1071fc"
/> | <img width="189" height="362" alt="image"
src="https://github.com/user-attachments/assets/80c73a19-d699-4a91-89f2-77e3c4434ed7"
/>|
## Why It's Good For The Game

- Allows you to fix wire / power issues on Lavaland
## Changelog
🆑
fix: Fixes unable to place power cables on reinforced catwalk in
Lavaland
/🆑

Co-authored-by: loganuk <falseemail@aol.com>
2025-09-20 01:52:53 +02:00
Hatterhat c0f8e7bb5c Multiload Second Pass (ft. Speedloaders Will Be Real In 2025) (#92854)
## About The Pull Request
Gets, yet again, more granular with multiload capabilities, by
introducing `AMMO_BOX_MULTILOAD_OUT_LOADED`; ammo boxes flagged with
this can speed-load ammo boxes that are currently inside another gun,
like revolver cylinders or internal magazines.

To accomodate for this, the previous flag that covered this,
`AMMO_BOX_MULTILOAD_OUT` can no longer speedload into currently loaded
magazines (e.g. internal magazines, including revolver cylinders).

Also implements a base type for speedloaders, moving .38 and .357
speedloaders along with .310 stripper clips to this type, instead of
being ammo boxes. Also features an UpdatePaths script for mappers, which
is why there's so many files touched - repathing is a pain.

Also also adds fancy types for ammo boxes, magazines, and speedloaders,
which isn't particularly player-facing.

Also also also makes the lionhunter ammo strip for the lionhunter rifle
visually three rounds only instead of being perpetually half-full (or
half-empty, depending on your pessimism).

## Why It's Good For The Game

The hypothetical case of "ammo box that holds shotgun ammo" should
probably... not... teleport as much of its ammo as possible into a
tube-fed shotgun, but should probably still be okay at reloading
magazines that actually go into shotguns. Or something.

More relevant, reloading BR-38 magazines with speedloaders, while funny,
probably also shouldn't be teleporting in six fresh rounds.

## Changelog

🆑
balance: General ammo boxes (not speedloaders, not stripper clips) can
no longer multiload into currently loaded magazines (revolver cylinders,
internal magazines).
balance: Speedloaders are now a separate type from ammo boxes, and can
only multiload into currently loaded magazines e.g. revolver cylinders.
qol: Ammo boxes, magazines, and speedloaders now have fancier types for
spawning in by admins.
sprite: Lionhunter ammo clips are visually smaller now.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-09-20 08:10:35 +10:00
SyncIt21 beb50296b6 Ensures uniform distribution of minerals across ore vents & non zero material boulders (#92996)
## About The Pull Request
- Fixes #92972

There were multiple problems with code that I can't be asked to explain
but here is the intended output(`ore_vent_minerals` contains the copy of
the list `ore_vent_minerals_lavaland` which we actually modify & not the
global list itself)

<img width="481" height="241" alt="Screenshot (512)"
src="https://github.com/user-attachments/assets/ed4d2659-b78c-4b99-ae68-e6fad4f116e4"
/>

All ore vents will now have at most 4 minerals but because we use an
associative list it is possible for a mineral to get picked more than
once in the same iteration resulting in old values getting replaced
which isn't a problem but just a point to be known so you don't always
get vents with 4 minerals

Another problem i ran into debugging is that some vents churn out 0
material boulders. That had to do with rounding down of the logarithmic
function which returned 0. We now ensure that never happens

## Changelog
🆑
fix: ore vents have unique distribution of at most 4 minerals without
rare ones being repeated
fix: ore vents should no longer be produce 0 material boulders
/🆑
2025-09-17 21:28:40 -04:00
ArcaneMusic 985fac79eb Boulders can now be used on lava turfs in order to create temporary, walkable platforms (#92877) 2025-09-13 05:17:39 +00:00
FalloutFalcon d2f34e33be moves abstract_type up to datum, spawners wont spawn them (#92909)
## About The Pull Request
moves all implementations (im aware of) for "Im a parent type dont spawn
me please" to the datum layer to standardized behavior
adds a standerized proc for filtering out "bad" items that we dont want
spawning. applies to it the subtype vendor, gifts, and a new spawner and
mystery box for a random gun (neither playerfacing)
"port" of https://github.com/shiptest-ss13/Shiptest/pull/4621



https://github.com/user-attachments/assets/22f6f0b2-b44e-411a-b3dc-6b97dc0287aa

small warning: I dont have EVERY abstract type defined right now but,
ive done a good enough job for now. Im tired of data entry rn
## Why It's Good For The Game
standardizing behavior. Might be a micro hit to performance however

having this lets us not rely on icon state to determine whether
something is a parent type and makes it much easier to tell something is
a parent type (could be applied further to things like admin spawning
menus and things like that).

need feedback on if this is actually good for the game.
## Changelog
🆑
add: Soda cans show up in the silver slime drink table.
add: Examine tag for items that are not mean to show up ingame.
refactor: Standardizes how gifts rule out abstract types.
fix: gifts no longer check if something has an inhand, massively
expanding the list of potential items.
/🆑
2025-09-13 00:36:15 +02:00
Ghom c274677cfd glass ore (aka sand) is now actually made of sand (#92889)
## About The Pull Request
sand blocks existed for the only purpose of making sand available as a
material. However, the only method to get them was pretty whimsical and
the existence of the feature wasn't really conveyed to the player, which
involves rinsing regular sand in a sink... and before you ask, we also
have sandstone, which can be crafted just by using the sand in hands, no
water involved. In fact, the sand blocks use the same sprites for
regular sandstone, except they have no recipes associated to them,
nothing! Nada!

Let's address the elephant in the room: We already have sand, however
said sand already has the glass material attached to it even before
being smelted, so if you put sand into the Autolathe, you get glass,
yay. Sand blocks really only existed to make up for the shortcoming of
whoever coded the sand material at the time.

But enough ranting. As the title says, sand is now made of sand, sand
blocks are kill. I've been careful enough to give the ORM the ability to
smelt gathered sand into glass beforehand, so miners won't curse me for
making them _actually_ use the smelter for once, "I will rather die to a
goliath than have anything to do with that". However, this still means
you cannot shove sand directly into lathes and expect glass out of it.
Get a welder.

## Why It's Good For The Game


## Changelog

🆑
balance: sand is now made of sand and not glass. Get a welder if you
plan to shove it into a protolathe.
del: Removed now useless sand blocks.
/🆑
2025-09-09 15:08:45 -04:00
SmArtKar d532cc9003 Adds plumbing to toilets (#92695)
## About The Pull Request

Toilets no longer act as infinite instant water sources, instead working
like showers and sinks - requiring either plumbing, or water reclaimers
to restore their cistern's supply. If a toilet has a large enough fish
inside, or if someone accidentally drops a small item into it, when
flushing it'll spew out all of its cistern's contents around itself
(Dropped items can be removed using a plunger after a small delay).
Also fixed plunger act code on some plumbing objects, and converted
toilets to use item interactions.

### This is a commission for ImprovedName/Ezel

## Why It's Good For The Game

Makes toilets more intresting with plumbing, and brings them more inline
with other plumbing appliances so that way you can't just make a toilet
with 1 material sheet and conjure a infinite water resouce anywhere you
please without a water recycler.
Also you can get up to some silly stuff with foam production.

## Changelog
🆑
add: Toilets now require plumbing or water reclaimers to function, and
can get clogged by small items.
fix: Trying to use plungers on plumbing objects will no longer hit them
after finishing the interaction.
code: Updated toilet item interaction code
/🆑
2025-09-07 09:52:07 +02:00
Y0SH1M4S73R f8511ea227 You can install B.O.R.I.S. in circuits with MMI components (+other MMI component changes) (#92002)
## About The Pull Request

This PR adds the ability to install a B.O.R.I.S. in a circuit that
contains an MMI component. These circuits can then be remotely connected
to by an AI by clicking on them or anything they are inside of. To
indicate that a circuit allows remote AI connection, an indicator is
given to the circuit and anything containing it.

Additionally:
- Refactors the MMI component to use `item_interaction`, since it was
pertinent.
- You cannot insert an MMI/B.O.R.I.S. into a locked circuit.
- You can no longer hotswap MMIs/B.O.R.I.S.es - you must manually eject
the inserted one.

Let me know what changelog labels I should use for the hotswap removal
and the prevention of insertion into locked circuits.

## Why It's Good For The Game

If you can put an MMI or posibrain in a circuit, why not allow an AI to
use it using a B.O.R.I.S.?

## Changelog

🆑
add: B.O.R.I.S.es can be installed inside of integrated circuits with
MMI components, allowing an AI to remotely interface with them the same
way an MMI or posibrain could.
refactor: The MMI component now uses item interaction behavior for
inserting MMIs/B.O.R.I.S.es.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-09-03 23:25:50 -07:00
mcbalaam 6f8245f745 Prevents you from attacking the fireplace if not enough fuel is present (#92823)
## About The Pull Request

Cancels the attack chain and prevents the player from hitting the
fireplace with the tool if they interact with the fireplace by adding
various fuel or attempting to light it

Before:
<img width="312" height="43" alt="image"
src="https://github.com/user-attachments/assets/c052df8b-80c6-4cc9-984c-71e50293b929"
/>

After:
<img width="297" height="40" alt="image"
src="https://github.com/user-attachments/assets/28e7bd1f-d5e1-44da-9836-82e46b195da5"
/>

## Why It's Good For The Game

Common sense?
2025-09-03 02:51:35 +00:00
mcbalaam d40bb5ddd2 H.A.U.L. gauntlets and package wrapper QOL (#92427)
## About The Pull Request

- Wrapping a crate with package wrapping while pulling it will now
automatically make you grab it
- You can now open the crate while dragging it with the H.A.U.L.
gauntlets if you're the one who's pulling it. Also applies to other
items (including MOD modules) that have the component


https://github.com/user-attachments/assets/7b4743c8-855d-4274-89ca-b0507f6d3e0e

## Why It's Good For The Game

QOL for cargo technicians - having to constantly grab and let go of
crates is very annoying
2025-09-02 21:32:47 -05:00
Winter Frost c97eaa3195 de-hardcodes some of /obj/structure/table (#92740)
## About The Pull Request

Adds new variables and removes minor hardcoding with the
`/obj/structure/table` adding the variables
`var/flipped_table_icon`
`var/unflip_table_sound`
`var/flipped_table_sound`

## Why It's Good For The Game

This will provide more modular-ability, maintenance, and general care
for changes up and down the stream. allowing modules and individual
things to be made without affecting the /TG/ master files. Including
with these new sound variables, it allows further control over how
things should sound, not having to code-dive to find and change
anything. Making it much easier to control.

## Changelog

No player facing changes.
2025-08-29 18:59:23 -04:00
SmArtKar c5eb346cbd Fixes table flipping sound/alert spam (#92648)
## About The Pull Request

Closes #92627 by restricting users to a single do_after at a time per
table

## Changelog
🆑
fix: Fixed table flipping sound/alert spam
/🆑
2025-08-21 02:41:46 +02:00
NoHaxJustPi e927d8897e Fixes tank holder description (#92594)
## About The Pull Request
Fixes "It is The bolts[...]" in tank holder desc, changes tanks from
"one" to "a"/"an" (i.e. "an oxygen tank" instead of "one oxygen tank")
and adds span_notice to the other parts of the description to fit with
the screws message.
## Why It's Good For The Game
Fixes a grammar mistake in the description.
The "one [...]" doesn't make sense for something that only holds a
single tank at a time.
Using span_notice for the description makes it more uniform and
consistent.
## Changelog
🆑
spellcheck: Fixes "It is The bolts on the bottom are..." in tank holder
descriptions, and improves grammar for inserted objects.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-08-17 02:12:02 +00:00
MrMelbert 844ad39d65 Attackedby differentiates failed attacks from 0 damage attacks (#92564)
## About The Pull Request

Fixes #92558

Currently `attacked_by` does not differentiate an attack that did 0
damage with an attack that failed (due to blocking or whatnot)

See also: This hack I left in

https://github.com/tgstation/tgstation/blob/ce958c77c006a5fe279fb46fed513206e341cfce/code/_onclick/item_attack.dm#L346-L347

This causes problems because successful attacks can deal 0 damage. See
linked issue.

This PR addresses the issue by having `attacked_by` return `-1`
(`ATTACK_FAILED`) for attacks which entirely do not connect.
-1 was used so consumers can easily check if an attack did 0 damage OR
failed (via checking `<= 0`)

This isn't the preferred fix - I'd prefer if all block checking and zone
targeting was moved to `/item/proc/attack`, but that requires attack
itself be reigned in a bit (cuz it's still a bit of a mess).

## Changelog

🆑 Melbert
fix: Item on-attack effects will trigger as expected when hitting a limb
at damage cap
/🆑
2025-08-15 04:24:18 +02:00
Thunder12345 d1b8145ad2 Icebox ruin: RoroCo glove factory (#92473)
## About The Pull Request

Adds a new surface ruin to icebox, the RoroCo factory. Contains a couple
of puzzles, and a small amount of loot in the form of ~~3 total pairs of
insulated gloves~~ a pair of insulated gloves, two adorable roros and a
cool unique labcoat. Just don't ask where the gloves come from...

Puzzles can of course be avoided/brute-forced by breaking down the walls
but that's for chumps.

<img width="1152" height="1024" alt="Space Station 13 2025-08-06 221903"
src="https://github.com/user-attachments/assets/21050aa6-9b27-494d-a949-7496aeda18cf"
/>

## Why It's Good For The Game

The upcoming 1x3 icebox surface calls for more ruin content to help fill
that space.

## Changelog
🆑
add: A new insulated glove factory has popped up on the ice moon.
add: Freezer floor tiles now come in the full range of shapes.
/🆑
2025-08-15 00:10:01 +00:00
SyncIt21 486b314a4a Fixes 2 platform problems (#92475) 2025-08-10 22:06:49 +02:00
Arturlang 0bc42d6940 Fixes the issue of usr pointing to admins by making Trigger pass down clicker (#92354)
## About The Pull Request
Fixes the issue of usr pointing to admins by making Trigger pass down
clicker, as usr is fucky and can be passed down by other unrelated
procs. Fun.
Added the clicker arg to all usages of Trigger as well
Also changes isobserver check in antagonist ui_act code that prevents
observers from clicking UI's instead to check if the ui.user is
owner.current
## Why It's Good For The Game
Fixes admins giving heretic to people opening the heretic UI for the
admin instead
2025-08-05 22:58:40 -05:00
SyncIt21 c6dcc304ce Fixes closets not reusing images for clients (#92408)
## About The Pull Request
- Fixes #92214
- Fixes #92407

Whenever a mob with a client attached to it steps into a closet we
create 2 images(background & contents image) to display to that viewer

https://github.com/tgstation/tgstation/blob/4ee0793ecd23876994fa125e4e112a13a6f44455/code/game/objects/structures/crates_lockers/closet_see_inside.dm#L87

We are meant to reuse these images for multiple clients however this
proc does not check if we already made an image before. It just creates
a new one for every client(and we don't keep track of those previously
creates images) so we loose track of all sanity.

But now we make sure we make this image just once to reuse across
multiple clients

## Changelog
🆑
fix: You can no longer see parallel universes when 2 or more people gets
shoved into closets.
code: cleaned up closet see through code. It's documented & slightly
faster performance wise
/🆑
2025-08-05 05:27:00 +02:00
SmArtKar 36d95d44b4 Fixes recovered crew bodybags being foldable while there's a "corpse" inside (#92423)
## About The Pull Request

Closes #92356
Also fixed prisoner envirobags being foldable while strapped despite
showing a failure message.

## Changelog
🆑
fix: Fixed recovered crew bodybags being foldable while there's a
"corpse" inside
/🆑
2025-08-04 10:48:08 +02:00
Thunder12345 d97c57b263 The Glitterening (#92226)
## About The Pull Request

Adds a number of new capabilities to glitter.

- It can be any colour.
<img width="657" height="398" alt="image"
src="https://github.com/user-attachments/assets/60e80c04-8eee-470c-8953-47f6eda9f83e"
/>

- It can be made in chemistry and dyed by combining it with acetone and
other reagents to give it the average colour of the non-glitter,
not-acetone reagents.
- Multiple colours can be mixed into one reagent datum, randomly
depositing a colour from those in the datum on the floor.
<img width="554" height="507" alt="image"
src="https://github.com/user-attachments/assets/9cc7d1d5-9bec-4b28-af06-310ffb24de49"
/>

- Anyone with glitter reagent in them will cough glitter onto the floor
- Glittery crates will leave a trail of appropriately coloured glitter
when moved
<img width="960" height="259" alt="image"
src="https://github.com/user-attachments/assets/71cc1176-23f9-4ae7-b500-1744b752c014"
/>

Resprited glitter to support these changes and make it not look like gas
(or ass).

## Why It's Good For The Game

It looks cool and raises the bar for chemists maximally pissing off the
janitor as they fill a room with multicoloured glitter and all the
occupants run off to cough more up all over the surrounding area.

## Changelog
🆑
add: Glitter can now be made from plastic polymers and aluminium.
add: Plastic polymer can be made at any temperature, and then heated to
produce sheets.
add: Glitter can now be made any colour, mix 10 units each of glitter
and acetone to change its colour to that of the other reagents in the
beaker.
add: Mixing different colours of glitter will cause a random selection
of those colours to appear on the floor when released.
add: Being exposed to glitter in reagent form causes you to cough up
more glitter onto the floor
add: Dragging glittery crates will now spread a trail of glitter and
angry janitors behind them.
image: Added new glitter sprites (that don't look like gasses)
/🆑
2025-08-03 00:25:58 +10:00
necromanceranne f739485e3e Non-workout sources of athletics experience diminishing returns on experience gain (#92206)
## About The Pull Request

For instances of athletics gains that don't involve workout
machinery/granting the exercised status effect, those sources of
experience suffer from increasing diminishing returns as the person
gains athletics levels.

## Why It's Good For The Game

While I still like that this lets more people engage with athletics
across a round, it did unfortunately trivialize getting higher levels of
athletics by doing some relatively banal activities that took really no
preparation to accomplish. The intended method of getting experience
should be the workout equipment, and so at a certain point these sources
of experience should stop granting free levels.

If someone refuses to interact with the workout mechanics and only
chooses to use these alternative methods, then uh....I guess all the
more power to them but they'll be there for a while.

## Changelog
🆑
balance: Athletics experience gain from non-workout sources, such as
climbing ladders, hopping tables and rope climbing, experience
diminishing returns as you gain athletics levels. To reach legendary
fitness, you really should hit the gym.
/🆑
2025-07-31 12:44:12 -04:00
SmArtKar aaec4fd227 Removes forced tint from NVGs (#92322)
## About The Pull Request

Partially reverts #84594, removing forced tint from night vision goggles
(if anyone for some reason wants to experience it again, they can toggle
it via alt click like it could be done before the [aforementioned
PR](https://github.com/tgstation/tgstation/pull/84594))

Approved by Ghom (the original PR author)

## Why It's Good For The Game

NVG tint is a pretty sizeable accessibility issue, as forced screentint
can easily cause eye strain if they're used for prolonged periods of
time, being especially bad for blue-tinted NVGs. They're already locked
pretty deep down the techweb, and this change just made everyone avoid
them. If we need to make tintless variants of them for every single
antag and special role (and bitrunners, lol), we maybe shouldn't have
added the tint in the first place.
2025-07-30 21:52:35 -05:00
LemonInTheDark cba36db2a2 Fixes infinite loop in closet resist code (#92355) 2025-07-29 09:15:54 +02:00
Bloop 9e5ff3cc67 Fixes manifest hard dels (#92283)
## About The Pull Request

<img width="378" height="199" alt="1eSxYbsh0e"
src="https://github.com/user-attachments/assets/e8a658ca-c1c4-48fe-bb51-c77c85a7f824"
/>

Noticed some hard dels here, does some light refactoring/code
improvement to ensure that doesn't happen.

Crates shouldn't really be owning a hard ref to the manifest in the
first place since they are detachable. Removes some code duplication in
favor of calling `tear_manifest()` which has the safety check to prevent
`forceMove()`ing a qdeleted manifest out of nullspace.

## Why It's Good For The Game

Less server hiccups.

## Changelog

Nothing players will notice besides less server hiccups.
2025-07-25 20:15:29 -06:00
FalloutFalcon d74f9ae8d5 generic parent type for both sabre sheaths (#92300)
## About The Pull Request
puts both the grass and normal sabre sheath types under a shared parent
type for shared behavior.
considered subtyping the storage datum but it seemed overkill. can do if
requested.
## Why It's Good For The Game
less copy paste. good if someone wants to add a clay-more sheath for
similar (believe that exists somewhere downstream), would have done it
myself but no sprites.
## Changelog
N/A
2025-07-25 20:14:26 -06:00
FalloutFalcon 51581d91d1 regex for for loop anti pattern (#92136)
## About The Pull Request
I made and metek improved this regex for finding instances if(itterator)
in for loops because a downstream im working on does it an insane
amount. Im fairly certin all these instaces have no reason to be running
if checks here saying most of the for loops are typed so if it was null
or something it shouldnt be iterated on
`for\s*\(var(/\w+)*/(\w+) .*\n\s+if\(\2\)`
## Why It's Good For The Game
just kinda bad practice. Its way way way worse on the downstream tho
holy shit
<img width="1264" height="759" alt="image"
src="https://github.com/user-attachments/assets/1d0f152d-372d-49d4-a9fa-6d8e4d27a816"
/>
## Changelog
N/A
2025-07-22 22:38:40 -07:00
Y0SH1M4S73R 3e2c118921 Adds constructible plastitanium reinforced walls (#92115)
## About The Pull Request

You can now construct reinforced plastitanium walls by using a single
plastitanium sheet on a reinforced girder. These are mostly identical to
syndicate walls, but only have 2 explosion resistance like normal
reinforced walls, as opposed to the 20 of syndicate walls.

## Why It's Good For The Game

Have you ever wanted a construction project to have that cool syndicate
aesthetic, but doing so would compromise its security due to the walls
being able to be simply welded down? Now you can make a syndicate
shuttle or satellite that will at least require thermite or the aid of
an engiborg to rapidly break into.

## Changelog

🆑
add: You can construct reinforced plastitanium walls by using
plastitanium on reinforced girders.
/🆑
2025-07-21 13:42:24 +02:00
SyncIt21 7be3eb8fdb Fixes winning ore vent wave defence by moving drone (#92220)
## About The Pull Request
- Fixes #92079

The `force` parameter in `handle_wave_conclusion()` was being
interpreted the wrong way in these 2 scenarios
- When `COMSIG_QDELETING` is sent `force` actually means are we deleting
the object forcefully & not if we want to win the wave defence
- When `COMSIG_MOVABLE_MOVED` is sent `force` gets the old location of
the drone(which gets misunderstood as TRUE because it's a non null
value) & not if we want to win the wave defence

So let's just remove this parameter so that it doesn't get
misinterpreted again. We don't lose any functionality with this because
when analysing all the places `handle_wave_conclusion()` is called, no
where is `force = TRUE` passed so the default is always assumed to be
FALSE so we can just throw it away

## Changelog
🆑
fix: You cannot win an ore vent wave defence by throwing a blue space
crystal on the drone or by moving it in any other way
/🆑
2025-07-20 20:27:32 +02:00
Nick e97a69a782 [DMN]Reduces the amount of Public medkits in general, Changes Nanomed wall vendors, into emergency wall vendors (#92134)
## About The Pull Request
I would be very intrested to get this atleast testmerged, but anyhow.

This PR reduces the amount of medkits in general available in maps
(Mostly just public ones)
This PR changes the contents of Nanomed Wallvendors to include just
emergency stuff.
This PR REMOVES medigels from wall med vendors
This PR increases the sterilizine sprays amount in the drugs vendor from
1 to 3 to compensate the removal out the emergency vendors
This PR adds a tactical lite medkit to traitor uplink for 4 tc this
includes medicated suture/mesh health analyzer gauze and a atropine pen

What this PR achieves to AIM is repurposing wallmed vendors into a more
of a emergency type of vendor, while emergency lockers surgical kits are
free and RNG, this is gauranteed and costs a little bit of money.

Though i will need some help to see whats enough emergency med vendors,
so far i have 1 for every department as baseline maybe 1 every hallway
section aswell?, Pherhaps free and remove emergency medkits from
emergency lockers in general? i would love to hear people's opinion on
this

## Why It's Good For The Game

Theres alot of medkits available, so trickling down a little bit to have
medbay matter more, but in exchange there will be wall vendors to treat
your wounds with so you can bring them to medbay or have a
paramedic/doctor come to your location in time without the patient
dying.

This also removes one of the only imporant stuff in wall med vendors and
thats medigels, medigels are very popular and usually is the most common
way to treat damage (and space effecient)

## Changelog

🆑 Ezel
balance: Removes some public medkits on every map
balance: Changes the contents of wall med vendors to just have emergency
stuff
balance: Drugs vendor now includes 3 sterilizine medigels instead of 1
Balance: Tactical lite medkit added to traitor uplink for 4 tc, this
includes medicated suture/mesh, atropine pen, gauze, advanced health
analyzer
map:Adds more wall med vendors to the map atleast 1 every department.
/🆑
2025-07-19 20:54:00 -07:00
FalloutFalcon ae374e5b25 bamboo walls should no longer tile red carpet (#92135) 2025-07-19 10:38:26 -06:00