Commit Graph
5295 Commits
Author SHA1 Message Date
1467508036 Teshari Specific Limb Damage States and Bloody Clothing (#6038)
## About The Pull Request
Teshari have long had to deal with ill-fitting overlays applied to them.
I have chosen to bite the bullet and do the labour by creating species
specific states for:
- bloody clothes
- damaged clothes
- body wounds
- bleeding animations

How it works is simple: if our icon override exists for our species, we
use it. If it doesn't exist, we default back to the original. What this
means is that future species overrides can be added without code
changes.

## Why It's Good For The Game
<img width="91" height="85" alt="image"
src="https://github.com/user-attachments/assets/30f1c91a-27aa-441e-9026-8d441855e7b9"
/>

This sucks! They look like they're wearing clown shoes for crying out
loud!


<img width="88" height="91" alt="image"
src="https://github.com/user-attachments/assets/0aa2febd-728b-4108-b64d-56173958cf27"
/>

This doesn't suck!

</details>

## Changelog

🆑 Robwo
fix: Teshari can now get properly bloody and bruised.
/🆑

---------

Co-authored-by: Alexis <catmc8565@gmail.com>
Co-authored-by: Waterpig <49160555+Maia-J@users.noreply.github.com>
2026-08-15 18:12:22 +02:00
AlexisandMaia ae1cc71b34 Initial upstream fixes
Is this even working

Oooough

ok I'll crack at this

couple more fixes

Probably the worst of all my commits so far

Seriously, someone needs to check this.

It compiles

update atmos

stuff

update paths

snakes

linters 1

linters again

more CI

whoops

Update map_previews.dmi

Kills loose limbs

The component it used no longer exists.

podperson

CI Fixes(?)

Linters
2026-08-14 19:42:21 +02:00
Alexis 88e84645b1 Merge commit '6b52b564a50e4f3091470529c683587e5de15d49' into upstream-sync-7-22-2026 2026-07-22 13:39:09 -04:00
SmArtKarandGitHub 677f070995 Elevates (almost all) inventory variables from /carbon to /human (#96955)
## About The Pull Request

Moves all inventory slots but handcuffs/legcuffs (as those can be used
by xenos) from ``/carbon`` onto ``/human``, as xenos do not use any of
those inventory slots, only leaving them in use by humans. Their
presence on ``/carbon`` is an artifact of times when monkeys weren't
humans, and some of the slots had to be shared by all carbons.
In some places I've used ``get_item_by_slot`` rather than swapping
checks to ``ishuman`` for simplicity's sake, in some places it might not
be the most optimal solution but in cases like help act any other
solution would require a refactor of the whole (massive) proc.

## Why It's Good For The Game

Cleaner/more sensible code, one step closer to fully datumized
inventories.

## Changelog
🆑
refactor: Moved a lot of human-specific inventory code onto human mobs,
report if inventories break!
/🆑
2026-07-16 03:03:50 -07:00
0716e3fff4 Atmos refactor & speedup by utilizing BYOND 516 vector functions (#96448)
## About The Pull Request

### Summary
This PR changes internal structure of `/datum/gas_mixture`:
`gases[gas_id][MOLES]` refactored into `moles[gas_id]`,
`gases[gas_id][ARCHIVE]` into `moles_archive[gas_id]` and
`gases[gas_id][GAS_META]` into `gas_meta` static variable. This allows
us to use BYOND 516 vector functions for calculating total moles and
heat capacity. Also it simplifies some parts of the code, allowing us to
get rid of macros `ADD_GAS` and `ASSERT_GAS`. According to the profiler
`/turf/open/process_cell` time is reduced by ~20%.

### Details
`gas_mixture.gases` was a nested 2d-list with MOLES, ARCHIVE and
GAS_META for each gas_id. For example, to get gas moles you had to do
`gases[gas_id][MOLES]`. I've changed this structure to be as follows:
`moles[gas_id]` - moles for the gas, `moles_archive[gas_id]` - archived
version of moles, `gas_meta[KEY][gas_id]` - static var with meta
information for the gas.

Since I removed key GAS_META from the gases, `gas_meta` was moved to the
static variable and the order of keys in the array was changed from
`gas_meta[gas_id][META_KEY]' to 'gas_meta[META_KEY][gas_id]`. This was
done to allow using it in vector calculations (for example heat capacity
or fusion power). Static variable access is very fast and it is
considered as accessing a global in the bytecode.

Byond 516 introduced new vector functions: `values_sum`, `values_dot`
and others. These functions are very fast, but operate only on
associative lists. This allows us to change the way we calculate
total_moles and heat_capacity - very hot and heavily used functions.
`total_moles()` became just `values_sum(moles)`, and `heat_capacity` is
just a dot product: `values_dot(moles,
gas_meta[META_GAS_SPECIFIC_HEAT])`.

As a side bonus, since `moles` is just an associative list, you don't
really need old macros `ADD_GAS` and `ASSERT_GAS` - all they did was to
make a copy of a list[3] with default value [0, 0, gas_meta] for
specific gas. Now when you're adding gas you can just use `moles[gas_id]
+= amount` and when you query amount of gas you can just query the key
(for example `moles[/datum/gas/oxygen]`) if the key does not exist, it
returns null and works as 0 for all arithmetic and logic operations. For
example, old code would be `if (!air.gases[/datum/gas/oxygen] ||
air.gases[/datum/gas/oxygen][MOLES] < 1)` and now it is `if
(moles[/datum/gas/oxygen] < 1)`. This simplifies some parts of the code
and also speeds things up.

For the performance comparison I used Tracy profiler. I've done many
different tests, and they all show slightly different numbers, but
overall speedup for `process_cell` is about 20%. (-20% to average time
per call from ). My testing setup was as follows:
Load Icebox, drop 30/60/90 radius bomb in the middle of the bridge, set
code to blue, wait 10 minutes until the round ends.
Also I fixed random seed in the master controller and in the planetary
gas randomization so generated maps are the same between tests.
Althought it's not very realistic, it generates a lot of samples for the
`process_cell` (around ~3.5M per 10 minutes).
Another test I did was a plasmafire in an 8x8 space, on runtime station,
it showed (-24% time on process_cell).
Another test was a emagged holodeck burn test, it showed (-13% time)
As for other functions of gas_mixture: `total_moles`: -50%(2x speedup),
`heat_capacity`: -65%(3x speedup), `share`: -30%, `react`: -20%. Timings
of all those functions is in microseconds range and they are very hot
(call count is in the same order as process_cell)

<details><summary>Some pictures from profiler</summary>
<img width="569" height="642" alt="process_cell"
src="https://github.com/user-attachments/assets/76fa0c27-719d-485d-9bfc-859fef788999"
/>
<img width="572" height="315" alt="image"
src="https://github.com/user-attachments/assets/f68497e9-4db8-4a9c-b43f-ad04e6dc5cac"
/>
<img width="569" height="317" alt="image"
src="https://github.com/user-attachments/assets/d7249e7b-f344-47a6-8b39-1bab0521182d"
/>
<img width="541" height="316" alt="image"
src="https://github.com/user-attachments/assets/1bef71fd-533d-40fa-a85e-7a803ad322f7"
/>
<img width="519" height="409" alt="image"
src="https://github.com/user-attachments/assets/51165289-174e-403d-a09c-787dd9af136a"
/>
<img width="523" height="318" alt="image"
src="https://github.com/user-attachments/assets/fe4b1db0-17d8-47f9-8fd0-e2ecef2ee66a"
/>
</details>

<details><summary>Setting up a profiler</summary>
If you wanna to reproduce my results here is a list of steps

1. download: https://github.com/goonstation/byond-tracy-writer (this one
has offsets for my version 1677)
2. build the dll, drop in the tgstation/ folder
3. download rtracy https://github.com/Dimach/rtracy
4. download Tracy profiler (0.13.1) https://github.com/wolfpld/tracy
5. uncomment `#define USE_BYOND_TRACY` in `_compile_options.dm`
6. build tgstation
7. open dream daemon, run the desired test, after round end dream daemon
closes
8. navigate to tgstation/data/profiler, find the `123412341234.utracy`
file
9. run `rtracty 123412341234.utracy`
10. open tracy-profiler.exe, press Connect, save the profiler data
11. repeat steps 5-10 with another branch, save another profiler data
12. open tracy-profiler, open first data, press compare, open second
data
</details>

## Why It's Good For The Game

## Changelog
🆑
refactor: Atmos refactor & speedup by utilizing BYOND 516 vector
functions
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2026-07-14 20:34:31 -07:00
SmArtKarandGitHub d19a1f8e06 Minor accessory rendering refactor (#96915)
## About The Pull Request

Accessories were using a weird appearance cache whose dubious
performance gains are not worth the pain, I've removed it in favor of
more sane appearance getters on accessories. Moving from a cache to an
overlay list also fixes height offsets.
Also fixed a few cases of unnecessary clothing updates which probably
negated the "gain" from said cache.
Closes #96908
Closes #96910

## Changelog
🆑
refactor: Refactored accessory rendering, fixing missing overlay updates
and making them affected by height
fix: More than one accessory can now render above worn suits
/🆑
2026-07-11 23:54:18 +02:00
JacquerelandGitHub 2cf56ab1e1 Allows gorillas to kill themselves with items (#96736)
## About The Pull Request

This PR moves most of the code for using an item to commit suicide from
`human` to `living`, so that anything with hands can use what it is
holding to commit suicide.
This was surprisingly painless, as most `suicide_act` procs were already
written without the assumption that the person killing themselves was a
human even though they couldn't be anything else.

This might occasionally mean that in some cases (like drones) it may
reference anatomy that they don't have (like necks) but I think that's
not a big deal and don't worry about it.

## Why It's Good For The Game

It's funny.

## Changelog

🆑
balance: Anything with hands can now use the things it is holding to
commit suicide
/🆑
2026-07-09 16:55:53 +02:00
Leland KembleandGitHub 53e732e941 You can't see out of a perceptomatrix without a core (#96840)
## About The Pull Request

Perceptomatrixes effectively act as a slightly better blindfold when
without a core(better flash resist than a blindfold).

## Why It's Good For The Game

Some people started using these for mass printable armored sunglasses a
few rounds in a row some time ago and no-downside flash protection is
supposed to be limited supply. Also, how would you see out of it? It
doesn't have any viewport. It's just a hunk of metal on your head.

## Changelog
🆑

balance: You can't see out of a perceptomatrix without a core

/🆑
2026-07-07 22:14:27 +02:00
sergeirocks100andGitHub 3e402f8949 Corrects two instances where neckerchief was misspelled. (#96821)
## About The Pull Request

This corrects two instances, namely in neckerchief untying, where the
object in question was misspelled as "neckerch**ei**f" instead of
"neckerch**ie**f".

## Why It's Good For The Game

Things should be spelled correctly.

## Changelog
🆑
spellcheck: When untying a neckerchief, the item in question will no
longer be misspelled as "neckercheif".
/🆑
2026-07-07 09:25:39 +02:00
SmArtKarandGitHub 3f3b569c65 Makes crusher trophies craftable, reworks icewing/magmawing/blaster tube trophies (#96670) 2026-07-07 07:58:38 +10:00
GhomandGitHub 6eb2d1674a Implementing materials checks for techweb designs. (#96257)
## About The Pull Request
In similar fashion to what was done with crafting recipes last year,
this year it's time for techweb designs and printed items to be audited.
This is mostly just about consistency, we've a lot of items that can be
printed by protolathes, autolathes, circuit printers and techfab etc.
However they almost all (except most stacks, mainly) have custom
materials that do not match in one way or another with the materials
used by the design, which is what this PR is for.

"But items printed from lathes etc. already get the mats used to make
them." Yes, they do, however that isn't the case for items of the same
type that were spawned in some other way (cargo shuttle, space/maints
loot, mapped, admins), this create a subtle discrepancy. It isn't a huge
deal (in spite of the size of this PR, ton of designs), but given that I
have done something similar with crafting recipes before, I may as well
give it a second arc of some sort and bring things to completion. And
fix a few possible oversights.

TL;DR consistency and stuff

## Why It's Good For The Game
Consistency, unit test checks to make it harder not to be consistent in
the future. Still has a few TODOs like:

- [x] Fixed newly printed, fully charged RCDs costing less than the RCD
cartridges required to fully charge one. EDIT: I had to tweak the newly
added RDD as well because it suffered from the same fundamental issue.
- [x] Fixed plates being made of iron and yet shattering like ceramic
ones. A new subtype for metallic ones has been made.

## Changelog

🆑
refactor: Refactored a few things with techweb designs (the ones for
autolathes, protolathes, circuit printers, mechfabs etc.) to make sure
that the materials of items that can be made from these designs more
closely match the materials used to make them.
fix: Lizard fries no longer need a plate to be made, like all other
treats that used to require plates in a distant past.
balance: Tweaked the materials cost of RCD, RDD and RCD cartridges.
image: Oven trays now have a more metallic hue.
balance: Plates printed printed from lathes won't shatter like ceramic
ones, in virtue of them being made out of iron instead.
/🆑
2026-07-06 00:13:02 -07:00
BloopandGitHub ba9cb3591a Cleans up some unnecessary bodyshape flags (#96766)
## About The Pull Request

Was doing a little audit of these `bodyshapes_with_variations` flags, a
couple weren't needed because they inherit `NONE` from their parent, and
in one case there was a skirt that was missing it (which only has the
effect of allowing it to enter `get_bodyshape_icon()`, which it doesn't
need to be doing, but otherwise nothing anyone would notice.

## Why It's Good For The Game

Cleaner code

## Changelog

Not player-facing, this doesn't actually affect anything.
2026-07-04 20:04:07 +02:00
ff006aa4a5 verb macro system (pr 1/3) (#96720)
## About The Pull Request

just macro-izes all the usages of verbs in the codebase as a
pre-requisite to my follow up pr that serializes all the verbs arguments
so we can tgui-ify the command bar, so we can then put it on the
onscreen map.

this also basically does the same as #94487 so can easily be integrated
into the verb queueing stuff... but does not actually do any verb
queueing by itself. basically im just trying to be
https://github.com/tgstation/tgstation/labels/Atomic
## Why It's Good For The Game
it doesn't really do anything by itself but it does let us do more stuff

## Changelog
🆑
code: the backend to all verbs in the game has been played with, please
report any issues to github
/🆑

---------

Co-authored-by: harryob <55142896+harryob@users.noreply.github.com>
2026-07-04 02:45:07 -04:00
KingkumaArtandGitHub ee71baf704 The Second Coming of the Rebar Crossbow (#96525) 2026-07-03 10:47:20 +10:00
RoxyandGitHub 1b744d3511 Fix screentip for shoes not showing (#96752)
## About The Pull Request

`register_context()` wasn't being called

## Why It's Good For The Game

Fixes #96743 

## Changelog
🆑
fix: fixed screentip for shoes not showing
/🆑
2026-07-02 21:22:18 +02:00
7f4171fd4d Adds bodyshape arg to a lot of missing spots, generalizes 'wear_digi_version', adds female gender shaping to digi sprites (#96633)
## About The Pull Request

Adds female gender shaping to digi species (such as lizards), for the
top half only.

<details><summary>Shown here</summary>

<img width="337" height="464" alt="dreamseeker_HhKjfrmJ1f"
src="https://github.com/user-attachments/assets/a5a57580-6798-40e4-925c-b3a63e0e540e"
/>

</details>

Also just adds a bunch of bodyshape args now that we are passing that to
the clothing rendering. This will help with anything where you want
unique digi handling for any specific items. Also fixes some missing
args and even improper args in some of these proc overrides.

## Why It's Good For The Game

Makes things more convenient for coders. Adds some more customization
options for feminine lizardfolk.

## Changelog

🆑
code: bodyshape is now accessible in build_worn_overlays() and similar
procs.
image: lizards now have support female gender shaping for their suits
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2026-06-30 20:02:53 +00: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
Roxy de4c3b255d Merge branch 'master' of github.com:tgstation/tgstation into upstream-2026-06-23 2026-06-23 15:51:55 -04:00
TimandGitHub 90d60c682f Fix pirate boots not having storage (#96592)
## About The Pull Request
- Fixes #96586

Pirate boots lacked internal storage and could not hold small items like
knifes.

## Why It's Good For The Game
This should behave like other boots where you can store items.

## Changelog
🆑
fix: Fix pirate boots not having storage
/🆑
2026-06-21 17:30:09 +02:00
48046e74f7 All Shoes Can Now Be Worn Under/Above Uniforms (#96515)
## About The Pull Request
This PR makes it so that all shoes can now be alt + RClicked to shift
their layer above or below any uniform that clips.
<img width="68" height="107" alt="Screenshot 2026-06-14 164345"
src="https://github.com/user-attachments/assets/d56e38b8-57c0-4169-be2b-a054c9f3ba56"
/>
_Jackboots worn under a sec uniform._
## Why It's Good For The Game
It's an easy QOL to better immerse/convenience players.
## Changelog
🆑 Macaroni
add: Alt + Right Click now toggles shoe layers above or below uniforms.
/🆑

---------

Co-authored-by: John F. Kennedy <54908920+Adelphon@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2026-06-19 12:18:47 -06:00
GhomandGitHub 52e7062fa7 You can now kiss that pizza toilet with the chef kiss skillchip to add "love" to its reagents. (#96547)
## About The Pull Request
De-hardcodes food/crafting complexity (the stuff responsible for food
buffs) from food items and gives the var to the edible component, so
that objects crafted with pizza or meat sheets can have it as well.
Renamed TRAIT_FOOD_CHEF_MADE to TRAIT_HANDMADE now that it's also given
to the item when crafted through either the stack recipe UI or crafting
UI.

## Why It's Good For The Game
See title. In all seriousness though, it's more flexible code.

## Changelog

🆑
refactor: Refactored a couple things around food/recipe complexity (what
food buffs depend on). Technically, you can now kiss that pizza toilet,
which you crafted (right?), with the chef kiss skillchip enabled to add
"love" to its reagents.
/🆑
2026-06-19 12:15:00 -06:00
GoattoandGitHub 44a2a99977 Fixes non /obj/item/clothing/under clothes applying fresh_laundry mood_event (#96550)
## About The Pull Request
The `fresh_laundry` mood_event is now only applied to clothing in
`/obj/item/clothing/under`

## Why It's Good For The Game
Before, we could easily get multiple `fresh_laundry` moodlets even
though we just laundered anything but our jumpsuit
<img width="589" height="335" alt="freshly_laundered_shoes"
src="https://github.com/user-attachments/assets/6793d342-14f1-445e-ad8f-7331392183b8"
/>
Now we prevent applying a moodlet that specifically mentions a "freshly
laundered jumpsuit" from applying to clothes that clearly aren't
jumpsuits

## Changelog
🆑
fix: Fixes non `/obj/item/clothing/under` items from applying the
`fresh_laundry` mood_event
/🆑
2026-06-18 14:57:29 +02:00
33824ac7c1 TTS 3.0: Blips Rework, Radio TTS, Unknown Languages are Blips now (#95369)
## About The Pull Request

Re-did blips to be significantly nicer sounding and way better. Alien
speech you don't understand now comes through as Blips. If you have TTS
entirely disabled, you won't hear blips. Blips also now include more
customization options, and a dedicated Blips preview button by clicking
the leaf icon.

<img width="1749" height="354" alt="ApplicationFrameHost_5nKJEvaNV1"
src="https://github.com/user-attachments/assets/ef6c6b61-7c22-4a87-94c9-be50e89c65bb"
/>


https://github.com/user-attachments/assets/8cab7e55-6370-4e4e-99ba-ea2475569453

Radio TTS has been implemented. By default, you will hear all TTS over
the radio, but will not hear yourself over the radio. You can configure
this in Game Settings.


https://github.com/user-attachments/assets/94a44d84-17a9-4e6e-ac5c-3b800b11c159

<img width="743" height="193" alt="chrome_MOIcXaC2gh"
src="https://github.com/user-attachments/assets/907379b7-0689-486c-b29c-9be0a2259b05"
/>

The new TTS stack is located at
https://github.com/Iamgoofball/tgtts-qwen3 and is AGPLv3 licensed. The
new blips design was inspired by
https://github.com/joshxviii/animalese-typing.

The configuration to disable TTS on whispering has been removed, as it
is no longer needed and also interferes with radio TTS functioning
properly.

The Tram now utilizes TTS, and has had a general audio tune-up.


https://github.com/user-attachments/assets/f532d002-939c-43a1-95d0-0f0c43048997

TTS audio is now 3D and in space, see attached.


https://github.com/user-attachments/assets/b00df49a-9d1d-4b27-a8a0-d103099f5c7e

## Why It's Good For The Game

Quality of life improvements to the TTS system, long overdue. Also, TGMC
can migrate to this new method of doing radio audio so they aren't
sending double the TTS requests anymore.

## Changelog

🆑
add: Added support for Radio TTS. You will now hear players over the
radio via the TTS system.
add: Configure this in Game Options under the Sound tab.
sound: Re-did blips to be significantly nicer sounding and way better. 
sound: Alien speech you don't understand now comes through as Blips. If
you have TTS entirely disabled, you won't hear blips.
sound: The Tram and Computers now utilize the TTS system. Configs have
been added to set a consistent voice.
sound: TTS audio now utilizes 3D audio; you can now walk away from
people saying stupid shit and it gets quieter.
sound: Blips also now include more customization options, and a
dedicated Blips preview button by clicking the leaf icon.
del: The configuration to disable TTS on whispering has been removed, as
it is no longer needed and also interferes with radio TTS functioning
properly.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2026-06-15 18:54:24 -04:00
Leland KembleandGitHub c6d3c557d7 Fixes gas mask filter runtime (#96470)
## About The Pull Request

It's just a check for if the gas is still there, the same bandaid fix
for the same issue as #96392. The issue being that gases with 0 moles
are entering gas mixtures, somehow, and then being deleted midway
through a loop iterating through that mixture.

## Why It's Good For The Game

I can't figure out what's causing the 0 moles, which is the real root
issue that needs the real fix, but I do know that this caused more than
five hundred runtimes in the (lowpop) round I saw it in, all of which
fucked up somebody's breathing, so it's probably worth dealing with
prior to the real fix
<img width="573" height="239" alt="image"
src="https://github.com/user-attachments/assets/08b91c88-9bf3-416a-879c-5b3eb3e29a8f"
/>

(the `check_breath()` runtime is caused by the gas mask runtiming and
not returning a value)

## Changelog
🆑

fix: "fixed" a runtime with gas mask filters

/🆑
2026-06-14 16:05:22 +02:00
GhomandGitHub eeaa123cd5 More clothing use the clothing_traits var. Accessories can use it as well now. (#96455)
## About The Pull Request
While working on some other PR, something caught my eyes. Some clothing
still use the old method of `equipped()` and `dropped()` overrides for
adding traits to the wearer when we already have a clothing_traits
variable to streamline this behavior. This should make short work of
that.

This also improves the accessories code a tiny bit by giving two of the
procs apter names and implements the clothing_traits var onto
accessories as well.

## Why It's Good For The Game
Better, shorter code.

## Changelog
N/A, if something breaks and goes undetected, then we need more unit
tests.
2026-06-13 14:47:30 -07:00
GhomandGitHub 3c485aa614 Santa Claus can now hear prayers that mention him or christmas. (#96406)
## About The Pull Request
Santa Claus can hear prayers that contain the words "santa", "claus",
"christmas" or "xmas". Prayers containing the word "satan" have a 40%
probability to being "erroneously" relayed to Santa instead. Talk about
a terrible typo. I'm toooootally sure nobody will do it on purpose
(totally forced joke ik ik).
Santa cannot know who the person praying is if not told inside the
prayer itself, however he can tell if the person is naughty (either
antag or has the evil trait) or not, so be mindful of that. If tired or
harassed by unwanted prayers, Santa can also click an action button at
any time to silence them. The prayers will still be sent to admins, they
just won't be heard by Mr. Claus.

This PR comes with a new component and a mild refactor of prayers. For
admins, the message from the pray verb is now wrapped in boxed message
spans. This will make prayers a bit easier to notice, since the lack of
message box coupled with lack of sound (for now, unless it's the
chaplain praying) makes them easy to miss.

Also tinfoil hats prevent you from hearing prayers, Santa (redundant
with the action button, this is just a little touch).

## Why It's Good For The Game
Early Christmas PR ! Yeah, I know, headsets exist and Santa Claus is
very capable of wearing one, but he's the same guy who rides a flying
sleight, climb down chimneys (notwithstanding his corpulent body). The
prayer thing makes a bit sense if you think of the more religious roots
of the character, though our Santa Claus is a bit more secular ya know,
and this is more of an excuse to give him something extra.

Oh, yeah, if people will abuse the feature, I guess I could add an
incapacitated check for the praying mob so that Santa won't hear prayers
from people dying or restrained, or remove the tidbit that says if the
person who sent the prayer is naughty or not.

## Changelog

🆑
admin: Prayers from players are now boxed (like examine messages and
some health readouts for example), making them easier to tell apart from
the constant stream of text in your chat tabs.
add: Santa Claus can now hear prayers that mention him or Christmas. He
won't know who's praying unless told, though he can tell if they're
naughty.
/🆑
2026-06-12 06:44:04 +03:00
FandGitHub fc15fa1f39 Making 40 parts at Adming RPED, not 10 each, and making it another, non-child, type from tier4 RPED (#96246)
## About The Pull Request

So now Adming Outfit and Debug Outfit using AdminDebug RPED with 40
parts of each, and its another RPED, not tier4, which is the same RPED,
which has spawnpoind at lavaland base
## Why It's Good For The Game

10 not so much, so its need to regive the RPED via regive of admin
outfit, so 40 is enough if, f. e., you need to fully upgrade 10 thermo
freezers for sm setup, emmiters and smes and you dont need to regive
yourself new admin outfit, clicking buttons like "delete old items",
"give outfit" and sm will not blew up on your localhost server - all
that gone, cause now your Admin RPED wont let you down
## Changelog
🆑
qol: now Admin RPED has 40 parts each
code: now Admin outfit and Debug outfit(what is that) has AdminDebug
RPED with 40 parts, and not just tier4 RPED, which is like game thing
/🆑
2026-06-06 18:48:13 +02:00
shayoki f601a6ddaf Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 2026-06-03 01:23:54 -05:00
John F. KennedyandGitHub 494d2ace5b The Alt Jester Suit is Now Grayscaled and Buyable (#96306) 2026-06-02 22:28:41 -04:00
SmArtKarandGitHub f3283799e7 Reworks lavaland tendrils into minibosses (#96186) 2026-06-02 21:00:15 +10:00
CursorandGitHub 0701cf95bf Enhances LARP by allowing the Captain to dress like Napoleon. (#96156)
## About The Pull Request

My antagonists are many. My equals are none. In the shade of tendrils,
they said Lavaland could never be conquered. In the land of wizards and
operatives, they said Space could never be humbled. In the realm of
wolves and snow, they said Icebox could never be tamed. Now they say
nothing. They fear me; like a force of nature, a dealer in thunder and
death. I say, “I am the Captain.” I am emperor.

## Why It's Good For The Game

<img width="292" height="152" alt="image"
src="https://github.com/user-attachments/assets/eb4dc06a-1ce6-4244-a067-ead41b5735e0"
/>
<img width="1395" height="632" alt="image"
src="https://github.com/user-attachments/assets/a21c4a22-3bfc-4023-ab59-5a1cad57ba52"
/>

We have pirates in 17-19th Century gear. The HoS has a Shako from the
19th Century. Let the King of Kings get in on that action.

## Changelog
🆑 theselfish, INFRARED_BARON
add: The Captain now has a Bicorne, and matching attire...
/🆑
2026-05-27 12:08:31 -04: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
Vanilla1040andGitHub eb5ccb7bda Makes the veteran cloak less straining on the eyes (#5529)
## About The Pull Request

This PR is simply to make the Veteran cloak, aka the cloak you get for
having 5000 hours playtime (living) less straining on the eyes for the
person having it and the people seeing it with it being less flashy and
less just one solid color giving it texture from all observeable sides

## Why It's Good For The Game

Less flashy lights on screen = good

## Proof Of Testing

Works on my machine


https://github.com/user-attachments/assets/fdf4666f-a018-401c-9b3d-f84c1e0c0444

## Changelog

🆑
image: Makes the veteran alot less straining on the eyes and gives it
more texture
/🆑
2026-05-09 05:43:36 +02:00
necromanceranneandGitHub 6904a2b68b Adds a more fitting Cybersun reinforcement outfit. And ABSOLUTELY NO ITEMS TO THE BLACK MARKET. (#95918)
## About The Pull Request

Adds an orange and black business outfit for Cybersun
employees/reinforcements.
<img width="86" height="102" alt="Screenshot 2026-04-29 204615"
src="https://github.com/user-attachments/assets/c8afb1c6-6172-4250-9077-67e418eb48f7"
/>
<img width="123" height="126" alt="Screenshot 2026-04-29 204650"
src="https://github.com/user-attachments/assets/8823d05c-0301-4bc7-af4d-d3d5337830e2"
/>


Definitely doesn't add an item to the black market. Nope. No changes at
all there. Don't look at the code.

## Why It's Good For The Game

Cybersun will slowly begin receiving some updates both visually and
narratively in the future. Here is but a small taste.

## Changelog
🆑
add: Gives the Cybersun reinforcement a new outfit.
add: No new items were added to the black market. None. Honest.
/🆑
2026-04-30 08:40:08 +02:00
6c2ad0eac7 Adds the savior of the universe paper hat from Project Hail Merry. (#95772)
## About The Pull Request
Adds the savior of the universe paper hat from Project Hail Merry to the
waylaid bus ruin.
## Why It's Good For The Game
I very much like the references scattered through out the game and so
I'm adding another.
<img width="1316" height="534" alt="image"
src="https://github.com/user-attachments/assets/97ff753d-c81b-4e4c-a136-bc8f6c025c3c"
/>
<img width="93" height="95" alt="image"
src="https://github.com/user-attachments/assets/44c30f45-1139-4b0b-baf4-e9ccdd379cd4"
/><img width="90" height="94" alt="image"
src="https://github.com/user-attachments/assets/0de05f71-50d8-4782-b501-97c1eeb8a055"
/><img width="95" height="94" alt="image"
src="https://github.com/user-attachments/assets/2c0fe38c-eeef-44ab-aad9-59a71e483a3d"
/><img width="83" height="93" alt="image"
src="https://github.com/user-attachments/assets/3f5bbf8b-fe36-42e4-8d5c-e6146974edcf"
/>
<img width="864" height="509" alt="image"
src="https://github.com/user-attachments/assets/29332c3f-7f8a-4ed5-a876-66af4c221cb6"
/>




## Changelog
🆑
add: Saviors paper hat.
add: Added worn and normal icon states for it in costume.dmi
map: Modified bus.dmm to include the paper hat behind the main bus.
/🆑

---------

Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
2026-04-24 17:57:19 -07:00
ae0b1131c0 EVA helmets have retractable visors (#95687)
## About The Pull Request

<img width="120" height="125" alt="image"
src="https://github.com/user-attachments/assets/0eff5544-5cff-4ca4-ae44-d3329ed773bb"
/>

EVA helmets can have their visors pulled up to show off your face. 

Older models of space helmets don't have retractable visors

## Why It's Good For The Game

This was inspired by #95683 - I thought the potential behind being able
to flip up your visor to get rid of the dirt in your eyes was an
interesting lil gameplay interaction

Then I got thinking of sci-fi tropes and scenes where the guy says "time
to kick some ass" and rips his visor down, or scenes where the unknown
guy in a space suits says "well well well" and rips up is visor to
reveal he's the bad guy

Now does this make much sense from a space suit design perspective?
Well, not really... ideally you want that thing sealed as tight as
possible, but by 2566 you'd think they'd improve the seals on the things
to allow for it, right? (That was part of the reason why I didn't add it
to the older models of space suits)

## Changelog

🆑 Melbert
add: Some EVA helmets now have retractable visors, which you can pull up
or down at will, to reveal your face.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2026-04-23 08:56:47 +12:00
amsy2andGitHub 070ef1d301 Adds PlasMAX helmet - inspired by plasmaman gear (#5087)
## About The Pull Request

New helmet with sprites and all. I did make sprite for welding visor but
plasmaman helmet code is a mess and I can't give it new file location to
pull the visor sprite from.

It's available in loadouts.

I do want to make colorable version of this but I don't have the energy
to do it now.

Update: I've also tweaked original plasmaman helmet code so you can
actually add welding and light sprites that are not default ones. This
also fixed the two plasmaman donator items from Skyrat.

This also includes smiley face working

## Why It's Good For The Game

Fashion! Plasmaman helmet that actually looks like it could fit a snout
in it.

## Proof Of Testing

<img width="67" height="68" alt="image"
src="https://github.com/user-attachments/assets/0fa40d15-0c98-4739-a9c0-655ce2c031db"
/>
<img width="68" height="66" alt="image"
src="https://github.com/user-attachments/assets/070dd3a1-8b97-465f-902f-962cbfbb21e1"
/>
<img width="68" height="68" alt="image"
src="https://github.com/user-attachments/assets/7982e256-3e5b-4798-ab7e-0bb9be7a5028"
/>
<img width="350" height="309" alt="image"
src="https://github.com/user-attachments/assets/417afbc0-1819-4816-b3c5-b9b428a401d6"
/>
<img width="215" height="88" alt="image"
src="https://github.com/user-attachments/assets/8fe7d635-37c9-482c-adcf-70ea2d1f5ade"
/>

</details>

## Changelog

🆑
add: Added new PlasMAX helmet to loadout
/🆑
2026-04-22 13:21:26 +02:00
FinancialGooseandGitHub e98cb75c57 Refactor gasmix mole change into a proc (#95327)
## About The Pull Request
Refactor the majority of the current gasmix mole change use cases into a
proc called adjust_gas which simply adds the designated mole count of
the species into the gas mix while also handling asserting the gas and
garbage_collect()
I also added adjust_multiple_gases and convert_gas() for modifying
multiple gases and within a gasmix

## Why It's Good For The Game
Lemon wanted this to be done as part of the air group refactor 

## Changelog

🆑
refactor: refactored majority of gas_mix mole change into adjust_gas()
proc
/🆑
2026-04-21 13:43:47 -07:00
c690185c80 Makes the black fedora in the detdrobe a subtype of the detective fedora (#95806)
## About The Pull Request

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

## Why It's Good For The Game

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

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

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2026-04-20 01:31:39 +02:00
TheRyeGuyWhoWillNowDieandGitHub a645e2434e fixes welding goggles covering your eyes when up (#95789)
## About The Pull Request

hi
## Why It's Good For The Game

i use a lot of dropper to apply chems when i play MD and this is
slightly annoying
## Changelog
🆑
fix: welding goggles now only cover your eyes when covering your eyes
/🆑
2026-04-19 23:47:18 +02:00
aca32f38af [NO GBP] Kitsune Mask no longer hides the user's identity while flipped (#95788)
## About The Pull Request
I forgot to add an ``inv_flag`` for when it's used in hand to flip so
it'd always keep the wearer's identity hidden even if their face were
pretty much exposed

## Why It's Good For The Game
Fixes an oversight of mine, the mask pretty much reveals your face when
flipped so it shouldn't keep the wearer's identity hidden

## Changelog
🆑 Hardly
fix: Kitsune mask no longer keeps the user's identity hidden while it's
flipped
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2026-04-17 13:00:48 +02:00
MrMelbertandGitHub bade006302 DNR'd / playerless bodies risen as zombies are ghost controllable (though mindless bodies are weaker) (#95544)
## About The Pull Request

- A body that revives as a zombie but has no player (IE never had a
player or the player DNR'd) becomes is ghost controllable: A poll is
immediately offered, and the body itself appears in the spawners menu.

- Zombies created from **mindless** mobs (such as monkeys or roundstart
morgue cadavers) are **Mindless Zombies**, a subtype of zombie which is
weaker (heal slower, move slower, not guaranteed to infect on hit)

## Why It's Good For The Game

- When zombies get rolling, there will no doubt be a few players that
DNR or a few DNR'd bodies that get infected, and it results in a lot of
zombies without players standing around, which is kinda lame. Giving
ghosts the options to take over seems like a no-brains-er to me, keeps
the horde a bit active even if some get decapitated.

- However, one big problem this allows for is that it provides a clear
vector for people spamming zombies out of hu-monkeys. Thus I changed
mindless bodies (bodies which never had a player, even a DNR'd one
(hu-monkeys)) to be easier to handle and far less deadly. That way
traitors are still encouraged to infect players over npcs.

## Changelog

🆑 Melbert
add: If a playerless body (DNR'd or otherwise) is raised as a zombie,
ghosts are given the ability to take control of it
add: If a body that never had a player control it is risen as a zombie,
they are risen as a weaker "mindless zombie" (moves and heals slower,
deals less damage, infection is not guaranteed on hit)
/🆑
2026-04-16 12:26:22 +10:00
John F. KennedyandGitHub d598448aad Sweater Vest (#95681)
## About The Pull Request
Adds the sweater vest as an accessory in the autodrobe and loadout menu.
## Why It's Good For The Game
An alternative to the waistcoat.
<img width="704" height="82" alt="Screenshot 2026-04-07 140058"
src="https://github.com/user-attachments/assets/3ca13953-3866-4f35-9cb6-87e8c75348a8"
/>

## Changelog
🆑 Macaroni
add: Added the sweater vest
/🆑
2026-04-15 10:39:51 +12:00
SmArtKarandGitHub 3103f9c413 Adds a Tactical IFF Visor and slightly refactors eye rendering (#95547)
## About The Pull Request

A new cybernetic eye implant, the tactical IFF visor, has been added to
the game, available in the combat implants research node. Its main
features are a cool LED display, dynamic color correction to make
distinguishing important objects easier, and inbuilt IFF systems capable
of distinguishing and highlighting allies and potential threats. They
also give flash/welding protection and mild night-vision capabilities.

However, this comes at a downside of making the user completely unable
to distinguish appearances or voices, or even examine others. Everyone
will simply show up as Unknown and be completely covered in static, bar
the threat assessment outline. Examining will only display their threat
status according to threat settings in the visor.

The parameters for threat assessment (both ID access and security
flag-based), as well as the visor display, can be configured by the user
at any time.

When emagged, the visor will instead completely hide and mute all mobs
except the user themselves, leaving them completely "alone" on the
station.

Deathsquads get an unmodifiable version, configured to treat anyone but
CentCom personnel as hostiles.
Settings can also be adjusted before installation with a multitool, and
locked using a screwdriver, preventing users from accessing them when
installed.

---

Eye rendering has been slightly refactored in order to support the
monovisor, as well as to get rid of duplicate code (and missing
features) on dismembered heads. Also moth eyes once again should block
emissives properly.

## Why It's Good For The Game

New content for both gameplay and roleplay, and fits deathsquad's
purpose very well.
2026-04-13 20:58:40 -05:00
TwaticusandGitHub 16d7023da4 Hoodies (#95582)
## About The Pull Request

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

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


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

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

## Why It's Good For The Game

Hoodies are a staple to many and have been requested frequently over the
years.
## Changelog
🆑
image: Hoodies! Both pullover and zip-up hoodies are available in the
clothesmate and in loadouts!
/🆑
2026-04-11 13:49:02 -04:00
RoxyandThe Sharkening 26d7f00a76 Roxy Comments 2026-04-11 08:57:59 -06:00
MrMelbertandGitHub a3bb636bc1 Carp mask can be used for internals again (#95692) 2026-04-10 00:52:53 +02:00
MrMelbertandGitHub 57c5701307 Pepperspray / Mask dirt tweaks (#95683)
## About The Pull Request

1. Pushing a dirty mask out of the way (such as adjusting a sec hailer
down) will no longer keep the screen tint, nor will they accrue dirt

2. Applied dirt is now rounded to `0.25` rather than `1`. Before, you'd
need a minimum of 2.5u to apply dirt and 2.5u-5u would all apply "1
dirt". Now, you need a minimum of 1.5u to apply dirt and it applies it
piecemeal, ie 1.5u applies "0.25 dirt".

3. Adds a passive message if you are wearing a dirty mask/helmet to
indicate you need to clean it.

4. A tint of 1.5 now applies tier 1 screen impairment, I don't think
this will affect any existing items as tints are all defined in 1/2/3.

5. Pepper spray can no longer stack blindness infinitely, much like how
it can't stack eye blur, knockdown, or confusion infinitely.

## Why It's Good For The Game

1. While it may be illogical that a sec hailer being dirty blocks your
vision, it's even MORE illogical that it blocks your vision when it's
not even protecting you from pepperspray.

(Yes, the sec hailer topic is for another PR) 

2. I noticed in testing that depending on how you spray the pepper spray
container, sometimes it would apply no dirt - because if you do a ranged
spray it only applies 1.67u . This isn't super consistent with how the
reagent works (any volume applies 100% of the downsides).

3. Aims to make it a bit more clear how the mechanic works by reminding
the player occasionally.

4. Allows for one tier of granularity between "No obscured vision" and
"Majorly obscured vision". So you know that you're approaching problem
territory rather than being thrust into it.

5. This feels like an oversight to me - all effects of pepperspray are
capped but the blindness, so multiple rapid exposures (which is not
entirely uncommon) could quickly stack up to minutes of blindness.

## Changelog

🆑 Melbert
fix: A dirty mask that CAN be pushed out of the way no longer obscures
vision if it IS pushed out of the way.
qol: If your mask is dirty from pepper spray, you get some passive chat
messages indicating that it can be cleaned off.
balance: Pepper spray clothing dirt is applied piecemeal - smaller
dosages, rather than doing nothing, now build up with repeat
applications.
balance: Pepper spray clothing dirt now has a tier between "very
obscured vision" and "no obscured vision", giving the wearer more of a
warning before being thrust into darkness.
balance: Pepper spray can no longer stack blindness infinitely - it is
now capped to 6 seconds. This brings it in line with its other effects
(confusion capped at 5 seconds, blur capped at 10 seconds, knockdown
capped at 3 seconds).
/🆑
2026-04-09 16:15:53 +12:00
John WillardandGitHub 76c88edea9 Removes Object & Server tab (#95292)
## About The Pull Request

Removes Object tab, which didn't work as it required a whole reload of
your verbs to update to what verbs would show up in it (which is very
hard to actually trigger as a player), but leaves the verbs that had
them show in the dropdown menu.

Removes the Point-To and Examine verbs from the Stat panel, now it's
commandbar only. Originally only did Point-To, but because the stat
panel sorts itself by the category of the item, then the order of the
name, I had to remove Examine's category so it would remain sorted the
same.

bruuuuuh

<img width="1259" height="985" alt="image"
src="https://github.com/user-attachments/assets/ea89db24-fafd-41d6-939e-4dbc7bbf3828"
/>
<img width="309" height="244" alt="image"
src="https://github.com/user-attachments/assets/3b8d9c52-056b-44ce-8ee8-051439a2fa51"
/>


Removes Server tab for players (not Admins) by moving Show Map Vote
Tallies to the OOC tab, as that was the only verb there.

Activate Held Object has been moved to IC since it's a roundstart verb,
I thought I should leave it be (do we have numbers on how many people
use these? Why would someone use the verb over clicking on the item
in-game or Z? Should I remove this too?).
Admin's Object Possession verbs are now in Admin Fun instead of Object.

Player stat panel
<img width="299" height="194" alt="image"
src="https://github.com/user-attachments/assets/8a3c9ad0-514a-44c5-b023-f71e57de4758"
/>

Admin stat panel
<img width="581" height="224" alt="image"
src="https://github.com/user-attachments/assets/7232485f-af41-469e-abfd-fce066816eec"
/>
<img width="624" height="297" alt="image"
src="https://github.com/user-attachments/assets/6eb540be-4912-44f6-be36-5fe3a74b7f19"
/>


## Why It's Good For The Game

We have 2 tabs that exists for a total of 3 procs, 2 of them fit
elsewhere and the last one doesn't work at all. Most verbs here don't
show up in the stat panel at all for the vast majority of players due to
the stat panel not actually loading them in when it's available, which
to me shows that it's a feature that isn't really cared about anyways.

It also helps newer players because there's less tabs to navigate and
less verbs to sift through, we have a ton of verbs that basically don't
need to exist and they only exist to make looking for the important
verbs a larger hassle.

## Changelog

🆑
del: Deleted Object tab, and Server tab for players. Activate Held
Object verb is now in the IC tab. Examine and Point To was removed from
the stat panel.
admin: Object possession verbs have been moved to Admin Fun.
/🆑
2026-04-05 20:21:59 -07:00
Leland KembleandGitHub 66f4dc253a Wheelys dont turn you when you kick them out (#95596)
## About The Pull Request

They kept their dir from last time you kicked em out

## Why It's Good For The Game

You should turn when you turn

## Changelog
🆑

fix: Wheelys dont turn you when you kick them out

/🆑
2026-04-03 15:53:57 +01:00