Commit Graph
1816 Commits
Author SHA1 Message Date
Da Cool BossandGitHub af45bab672 Rewrites description of agent IDs, splits limited-slot and unlimited-slot IDs more cleanly (#92097) 2025-07-15 18:50:35 -06:00
necromanceranneandGitHub 455bf20488 Alters a significant chunk of the syndicate uplink's explosives, grenades and pyrotechnics options (#91793) 2025-07-14 04:17:56 +00:00
60549f1c56 Nukie base, expansion expansion pack! (#91829)
## About The Pull Request

## Chemical Department
Adds a extra section to the chemlab, with materials and even a empty
bomb case for your evil chemistry needs!
Adds various beakers sizes of beakers to do chemistry with, gives one
chemical payload that can hold up to 5 beakers to nukies
Adds a locker with chemical closet supplies, medigels pill bottles
beakers.
Adds a hand labeler to properly label your stuff with! a succesfull
nukie is a organized one
Adds a toolbox for properly editing of grenades and plumbing
Adds a smart fridge ontop of the window to store your stuff in

![image](https://github.com/user-attachments/assets/d05418ac-64be-4cfd-817d-b67208192f40)

## Bio Terrorism Department
Expands the cells so you no longer have to juggle your slimes between 2
cells
Adds a big BZ chamber to store the slimes your not breeding in (enough
space to contain every color)
adds a fully upgraded slime proccesor aswell!

![image](https://github.com/user-attachments/assets/f4d35f2e-c96a-4f07-a5b7-5d6d9f73eace)

## Medical section
Moves some stuff to make place for a operating computer

![image](https://github.com/user-attachments/assets/1c9dc5e8-8033-42fa-ae2f-557873cf2230)

This also introduces a new locker sprite made by aliceee2ch
and one chemical payload variant by me

## Why It's Good For The Game

Removes some of the jank and make these places easier to use.
Adds extra stuff to the chemical section to widen the options you can do
as nukies. and make the lab a more proper lab toolwise then the absolute
bare mininum

## Changelog
🆑 Ezel
balance: Nukie Chemistry section, now includes a proper chemistry locker
with pill bottles medigels and big beakers
balance: Nukie Chemistry section, now has a extra section attached to it
that holds some limited amount chemistry materials and a empty bombcase.
balance: Nukie Chemistry section, now has various sizes of beakers, a
special chemical payload that can hold up to 5 beakers, and a hand
labeler to tag your stuff with
map: Nukie Chemistry section, now has a smartfridge
map: Nukie xenobiology section widened and added a fully upgraded slime
proccesor
sprite: New syndicate chemical locker sprite by aliceee2ch
sprite: Adds a darker version of chemical payload only for nukies
/🆑

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-07-12 22:54:58 +00:00
Winter FrostandRoxy 4222bdc921 Updates the medals boxes to be more modern (#91806)
## About The Pull Request

This PR simply doesn't add any special gameplay mechanics or any
mechanics but instead just updates the sprites for the medals boxes and
gives it variants. I've attempted to save sprite space by making them
all share the same 'opened' box sprite. But ultimately this is only a
cosmetic PR.

medal boxes locked

![image](https://github.com/user-attachments/assets/f6dfaa6f-2d85-4ecb-9919-c44e4ee05234)

medal boxes unlocked

![image](https://github.com/user-attachments/assets/b50a9253-9b9f-410a-a415-9e8418c0967a)

medal inside their respective boxes

![image](https://github.com/user-attachments/assets/e0a3a93b-7d4c-43b3-a087-966ef4330c04)

## Why It's Good For The Game

With this PR I am attempting to add some visual aid to the game and
update the lockboxes. It wont add any special mechanics or anything but
just visual aid and to just update the sprite. I think this would be
good to be merged, only because it is just a sprite change, and it
updates the sprite from all the way in 2017, hence modernizing them
somewhat. I've taken the old colours from the former lockbox so it can
keep to its roots but also still look modern.

## Changelog

🆑
image: updates medalbox sprites.
image: adds variants to medal box sprites.
/🆑
2025-07-11 17:56:28 -04:00
c671afbae4 bugfix med/sci/brigmed tailcoats and pharmacy coat storage and armor (#4122)
## About The Pull Request

Several different tailcoats did not have the proper storage or armor
values applied to them from their parent labcoat type. Also the
pharmacist's labcoat did not inherit the proper storage from the
chemist's labcoat. This fixes all that.

This includes:
Coroner's tailcoat: storage only
Paramedic's tailcoat: storage and fishing bonus (paramedic's labcoat has
a fishing bonus)
Geneticist's tailcoat: storage only
Scientist's tailcoat: storage only
Chemist's tailcoat: storage only
Pharmacist's labcoat: storage only

CMO's tailcoat: storage and special fishing component (CMO's labcoat has
a fishing bonus)
RD's tailcoat: storage and armor (RD's labcoat has better resistances
than the normal labcoat)
Brig-medic's tailcoat: storage and armor, utilized the same stats from
brig-medic's security medic labcoat

The way it was done was by just having them inherit the proper type that
they are. So coroner's tailcoat inherits the coroner's labcoat,
paramedic's tailcoat inherits the paramedic's labcoat etc.


## Why It's Good For The Game

Inconsistencies and bugs are bad. These were intended to have parity
with their respective job's normal attire and they do for the others but
not for these, so I fix this oversight.

## Proof Of Testing

Tested locally, works fine.

## Changelog

🆑
fix: fixed various tailcoats and the pharmacist's labcoat not having the
proper storage or armor values
/🆑

Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
2025-07-09 20:32:50 -04:00
Winter FrostandGitHub 55cea20803 Updates the medals boxes to be more modern (#91806)
## About The Pull Request

This PR simply doesn't add any special gameplay mechanics or any
mechanics but instead just updates the sprites for the medals boxes and
gives it variants. I've attempted to save sprite space by making them
all share the same 'opened' box sprite. But ultimately this is only a
cosmetic PR.

medal boxes locked

![image](https://github.com/user-attachments/assets/f6dfaa6f-2d85-4ecb-9919-c44e4ee05234)

medal boxes unlocked

![image](https://github.com/user-attachments/assets/b50a9253-9b9f-410a-a415-9e8418c0967a)

medal inside their respective boxes

![image](https://github.com/user-attachments/assets/e0a3a93b-7d4c-43b3-a087-966ef4330c04)

## Why It's Good For The Game

With this PR I am attempting to add some visual aid to the game and
update the lockboxes. It wont add any special mechanics or anything but
just visual aid and to just update the sprite. I think this would be
good to be merged, only because it is just a sprite change, and it
updates the sprite from all the way in 2017, hence modernizing them
somewhat. I've taken the old colours from the former lockbox so it can
keep to its roots but also still look modern.

## Changelog

🆑
image: updates medalbox sprites.
image: adds variants to medal box sprites.
/🆑
2025-07-06 21:42:23 +02:00
fec4a2e9b7 /obj/item/clothing/head/mob_holder -> /obj/item/mob_holder (#91893)
## About The Pull Request
title
## Why It's Good For The Game
it inherits a lot of behavior from clothing which leads to lots of bugs
when it isn't actually clothes, for example: shredded overlays. this
should be better.
probably fixes a bunch of bugs
## Changelog
🆑
code: mob holders are no longer subtypes of clothes, report any issues
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2025-07-04 16:41:47 -04:00
grungussussandRoxy 9f46b5efc7 Cig pack sounds (#91860) 2025-07-04 16:33:37 -04:00
KrysonismandRoxy fc8ff2fbaf Emergency suture is kill. Replaced with bandage. (#91854)
## About The Pull Request

This PR removes the suture/emergency item and replaces it with a bandage
in all instances.

Provides as much brute healing overall(25), but in one big chunk.

## Why It's Good For The Game

### Flavour

Suturing is a specialised medical skill and not typically something
you'd expect to find a standard workplace first aid kit.

The emergency suture also shared a sprite with the regular suture
causing confusion.

### Healing Glut

Like when I first added sutures and mesh six year ago, one of the main
reasons for making this change is also to start making a dent in the
glut of free easy healing available to the crew.

While medical is in a much better place than before we started the grand
medical revitalisation project¹ 6 or so years ago, we have been
backsliding by turbo powercreeping chems, letting plumbing churn out
ungodly amounts of heal mix patches, nerfing organ damage and wounds and
adding more free healing items to maps.

While these bandages provide the same amount of healing, the healing is
less granular as such some of it will likely be wasted, leading to a
modest reduction of free heal points available to the crew under real
world conditions.

#### Wound Treatment

The bandages are worse for treating bleeds, but the kit already contains
a super ez bleed fixing pen and gauze, so the kit is still very robust
for dealing with bleeds.

Hopefully the minor reduction in bleed treating power will encourage
players to engage more with the expansive and robust system we have for
ghetto treatment of bleeds.

While this doesn't address the multiple elephants in the room, it
reduces the free item glut slightly.

1. (cloning removal, organ damage, trek meds removal, sleeper removal,
bruise pack removal, surgery expansion etc)
2025-07-04 16:33:16 -04:00
613581897e /obj/item/clothing/head/mob_holder -> /obj/item/mob_holder (#91893)
## About The Pull Request
title
## Why It's Good For The Game
it inherits a lot of behavior from clothing which leads to lots of bugs
when it isn't actually clothes, for example: shredded overlays. this
should be better.
probably fixes a bunch of bugs
## Changelog
🆑
code: mob holders are no longer subtypes of clothes, report any issues
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2025-07-01 14:20:48 +01:00
grungussussandGitHub 0a3185d26c Cig pack sounds (#91860) 2025-07-01 11:06:35 +02:00
KrysonismandGitHub 8ef45975ba Emergency suture is kill. Replaced with bandage. (#91854)
## About The Pull Request

This PR removes the suture/emergency item and replaces it with a bandage
in all instances.

Provides as much brute healing overall(25), but in one big chunk.

## Why It's Good For The Game

### Flavour

Suturing is a specialised medical skill and not typically something
you'd expect to find a standard workplace first aid kit.

The emergency suture also shared a sprite with the regular suture
causing confusion.

### Healing Glut

Like when I first added sutures and mesh six year ago, one of the main
reasons for making this change is also to start making a dent in the
glut of free easy healing available to the crew.

While medical is in a much better place than before we started the grand
medical revitalisation project¹ 6 or so years ago, we have been
backsliding by turbo powercreeping chems, letting plumbing churn out
ungodly amounts of heal mix patches, nerfing organ damage and wounds and
adding more free healing items to maps.

While these bandages provide the same amount of healing, the healing is
less granular as such some of it will likely be wasted, leading to a
modest reduction of free heal points available to the crew under real
world conditions.

#### Wound Treatment

The bandages are worse for treating bleeds, but the kit already contains
a super ez bleed fixing pen and gauze, so the kit is still very robust
for dealing with bleeds.

Hopefully the minor reduction in bleed treating power will encourage
players to engage more with the expansive and robust system we have for
ghetto treatment of bleeds.

While this doesn't address the multiple elephants in the room, it
reduces the free item glut slightly.

1. (cloning removal, organ damage, trek meds removal, sleeper removal,
bruise pack removal, surgery expansion etc)
2025-06-29 13:20:51 -05:00
MrMelbertandRoxy e0bdfc3f5f Dynamic Rework (#91290)
Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic
from the ground-up

- Dynamic configuration is now vastly streamlined, making it far far far
easier to understand and edit

- Threat is gone entirely; round chaos is now determined by dynamic
tiers
   - There's 5 dynamic tiers, 0 to 4.
      - 0 is a pure greenshift.
- Tiers are just picked via weight - "16% chance of getting a high chaos
round".
- Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be
selected".
- Tier determines how much of every ruleset is picked. "Tier 4 (High
Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3
latejoins".
- The number of rulesets picked depends on how many people are in the
server - this is also configurable[2]. As an example, a tier that
demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and
will not spawn 2 rulesets if population <= 25.
- Tiers also determine time before light, heavy, and latejoin rulesets
are picked, as well as the cooldown range between spawns. More chaotic
tiers may send midrounds sooner or wait less time between sending them.

- On the ruleset side of things, "requirements", "scaling", and
"enemies" is gone.
- You can configure a ruleset's min pop and weight flat, or per tier.
- For example a ruleset like Obsession is weighted higher for tiers 1-2
and lower for tiers 3-4.
- Rather than scaling up, roundstart rulesets can just be selected
multiple times.
- Rulesets also have `min_antag_cap` and `max_antag_cap`.
`min_antag_cap` determines how many candidates are needed for it to run,
and `max_antag_cap` determines how many candidates are selected.

- Rulesets attempt to run every 2.5 minutes. [3]

- Light rulesets will ALWAYS be picked before heavy rulesets. [4]

- Light injection chance is no longer 100%, heavy injection chance
formula has been simplified.
- Chance simply scales based on number of dead players / total number
off players, with a flag 50% chance if no antags exist. [5]

[1] This does not guarantee you will actually GET 3-4 roundstart
rulesets. If a roundstart ruleset is picked, and it ends up being unable
to execute (such as "not enough candidates", that slot is effectively a
wash.) This might be revisited.

[2] Currently, this is a hard limit - below X pop, you WILL get a
quarter or a half of the rulesets. This might be revisited to just be
weighted - you are just MORE LIKELY to get a quarter or a half.

[3] Little worried about accidentally frontloading everything so we'll
see about this

[4] This may be revisited but in most contexts it seems sensible.

[5] This may also be revisited, I'm not 100% sure what the best / most
simple way to tackle midround chances is.

Other implementation details

- The process of making rulesets has been streamlined as well. Many
rulesets only amount to a definition and `assign_role`.

- Dynamic.json -> Dynamic.toml

- Dynamic event hijacked was ripped out entirely.
- Most midround antag random events are now dynamic rulesets. Fugitives,
Morphs, Slaughter Demons, etc.
      - The 1 weight slaughter demon event is gone. RIP in peace.
- There is now a hidden midround event that simply adds +1 latejoin, +1
light, or +1 heavy ruleset.

- `mind.special_role` is dead. Minds have a lazylist of special roles
now but it's essentially only used for traitor panel.

- Revs refactored almost entirely. Revs can now exist without a dynamic
ruleset.

- Cult refactored a tiny bit.

- Antag datums cleaned up.

- Pre round setup is less centralized on Dynamic.

- Admins have a whole panel for interfacing with dynamic. It's pretty
slapdash I'm sure someone could make a nicer looking one.

![image](https://github.com/user-attachments/assets/e99ca607-20b0-4d30-ab4a-f602babe7ac7)

![image](https://github.com/user-attachments/assets/470c3c20-c354-4ee6-b63b-a8f36dda4b5c)

- Maybe some other things.

See readme for more info.

Will you see a massive change in how rounds play out? My hunch says
rounds will spawn less rulesets on average, but it's ultimately to how
it's configured

🆑 Melbert
refactor: Dynamic rewritten entirely, report any strange rounds
config: Dynamic config reworked, it's now a TOML file
refactor: Refactored antag roles somewhat, report any oddities
refactor: Refactored Revolution entirely, report any oddities
del: Deleted most midround events that spawn antags - they use dynamic
rulesets now
add: Dynamic rulesets can now be false alarms
add: Adds a random event that gives dynamic the ability to run another
ruleset later
admin: Adds a panel for messing around with dynamic
admin: Adds a panel for chance for every dynamic ruleset to be selected
admin: You can spawn revs without using dynamic now
fix: Nuke team leaders get their fun title back
/🆑

(cherry picked from commit 4c277dc572)
2025-06-26 20:12:17 -04:00
MrMelbertandGitHub 4c277dc572 Dynamic Rework (#91290)
## About The Pull Request

Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic
from the ground-up

- Dynamic configuration is now vastly streamlined, making it far far far
easier to understand and edit

- Threat is gone entirely; round chaos is now determined by dynamic
tiers
   - There's 5 dynamic tiers, 0 to 4.
      - 0 is a pure greenshift.
- Tiers are just picked via weight - "16% chance of getting a high chaos
round".
- Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be
selected".
- Tier determines how much of every ruleset is picked. "Tier 4 (High
Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3
latejoins".
- The number of rulesets picked depends on how many people are in the
server - this is also configurable[2]. As an example, a tier that
demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and
will not spawn 2 rulesets if population <= 25.
- Tiers also determine time before light, heavy, and latejoin rulesets
are picked, as well as the cooldown range between spawns. More chaotic
tiers may send midrounds sooner or wait less time between sending them.

- On the ruleset side of things, "requirements", "scaling", and
"enemies" is gone.
- You can configure a ruleset's min pop and weight flat, or per tier.
- For example a ruleset like Obsession is weighted higher for tiers 1-2
and lower for tiers 3-4.
- Rather than scaling up, roundstart rulesets can just be selected
multiple times.
- Rulesets also have `min_antag_cap` and `max_antag_cap`.
`min_antag_cap` determines how many candidates are needed for it to run,
and `max_antag_cap` determines how many candidates are selected.

- Rulesets attempt to run every 2.5 minutes. [3]

- Light rulesets will ALWAYS be picked before heavy rulesets. [4]

- Light injection chance is no longer 100%, heavy injection chance
formula has been simplified.
- Chance simply scales based on number of dead players / total number
off players, with a flag 50% chance if no antags exist. [5]

[1] This does not guarantee you will actually GET 3-4 roundstart
rulesets. If a roundstart ruleset is picked, and it ends up being unable
to execute (such as "not enough candidates", that slot is effectively a
wash.) This might be revisited.

[2] Currently, this is a hard limit - below X pop, you WILL get a
quarter or a half of the rulesets. This might be revisited to just be
weighted - you are just MORE LIKELY to get a quarter or a half.

[3] Little worried about accidentally frontloading everything so we'll
see about this

[4] This may be revisited but in most contexts it seems sensible. 

[5] This may also be revisited, I'm not 100% sure what the best / most
simple way to tackle midround chances is.

Other implementation details

- The process of making rulesets has been streamlined as well. Many
rulesets only amount to a definition and `assign_role`.

- Dynamic.json -> Dynamic.toml

- Dynamic event hijacked was ripped out entirely.
- Most midround antag random events are now dynamic rulesets. Fugitives,
Morphs, Slaughter Demons, etc.
      - The 1 weight slaughter demon event is gone. RIP in peace. 
- There is now a hidden midround event that simply adds +1 latejoin, +1
light, or +1 heavy ruleset.

- `mind.special_role` is dead. Minds have a lazylist of special roles
now but it's essentially only used for traitor panel.

- Revs refactored almost entirely. Revs can now exist without a dynamic
ruleset.

- Cult refactored a tiny bit. 

- Antag datums cleaned up.

- Pre round setup is less centralized on Dynamic.

- Admins have a whole panel for interfacing with dynamic. It's pretty
slapdash I'm sure someone could make a nicer looking one.


![image](https://github.com/user-attachments/assets/e99ca607-20b0-4d30-ab4a-f602babe7ac7)


![image](https://github.com/user-attachments/assets/470c3c20-c354-4ee6-b63b-a8f36dda4b5c)

- Maybe some other things.

## Why It's Good For The Game

See readme for more info.

Will you see a massive change in how rounds play out? My hunch says
rounds will spawn less rulesets on average, but it's ultimately to how
it's configured

## Changelog

🆑 Melbert
refactor: Dynamic rewritten entirely, report any strange rounds
config: Dynamic config reworked, it's now a TOML file
refactor: Refactored antag roles somewhat, report any oddities
refactor: Refactored Revolution entirely, report any oddities
del: Deleted most midround events that spawn antags - they use dynamic
rulesets now
add: Dynamic rulesets can now be false alarms
add: Adds a random event that gives dynamic the ability to run another
ruleset later
admin: Adds a panel for messing around with dynamic
admin: Adds a panel for chance for every dynamic ruleset to be selected
admin: You can spawn revs without using dynamic now
fix: Nuke team leaders get their fun title back
/🆑
2025-06-25 17:36:10 -07:00
necromanceranneandRoxy 52b82b0e3a Updates the mech ammo duffel bags into two separate types for each kind of mech. Each with equivalent ammunition and the toolbelt. (#91711) 2025-06-21 22:36:03 -04:00
John WillardandRoxy 6b493cad25 Brings back clean toolbox force (#91641)
## About The Pull Request

Returns clean toolbox back to their original force upgrade of 1TC = 1
damage, rather than .5 - which was added because progtots had access to
'infinite' TC.

## Why It's Good For The Game

Progression traitor is dead

## Changelog

🆑
balance: Assistant-only clean toolbox now does 1 damage per TC again.
/🆑
2025-06-21 22:21:58 -04:00
OrionTheFoxandRoxy 701d9960f8 Adds a bit of runtime prevention to the base guncase (#91642)
## About The Pull Request

Just makes sure the variables are actually filled before trying to spawn
stuff, so it doesn't try to spawn `null` and runtime
## Why It's Good For The Game

Not entirely relevant here, but it came up downstream when trying to
make one that starts empty. Ifever an empty guncase was wanted up here,
it might prevent a runtime before it happens.
## Changelog
No player facing changes (am I using that right? There's zero change
anybody could see ingame)
2025-06-21 22:20:13 -04:00
necromanceranneandGitHub 791f3d043a Updates the mech ammo duffel bags into two separate types for each kind of mech. Each with equivalent ammunition and the toolbelt. (#91711) 2025-06-21 03:12:29 +02:00
John WillardandGitHub bd1fce1c23 Brings back clean toolbox force (#91641)
## About The Pull Request

Returns clean toolbox back to their original force upgrade of 1TC = 1
damage, rather than .5 - which was added because progtots had access to
'infinite' TC.

## Why It's Good For The Game

Progression traitor is dead

## Changelog

🆑
balance: Assistant-only clean toolbox now does 1 damage per TC again.
/🆑
2025-06-19 00:10:05 -04:00
Roxy 8dd222a4cc Change duffelbag update_desc() to examine() (#91669)
## About The Pull Request

Changes `/obj/item/storage/backpack/duffelbag/update_desc` to
`/obj/item/storage/backpack/duffelbag/examine`

## Why It's Good For The Game

`examine` is cleaner for this, using `update_desc` also prevents
dufflebags from being used as a `/datum/orderable_item` because they
fail the unit test for having a dynamic description

## Changelog
🆑
code: examine text for dufflebag zipper status uses examine proc instead
of update_desc
/🆑
2025-06-17 14:27:41 -04:00
RoxyandGitHub 485f7f270e Change duffelbag update_desc() to examine() (#91669)
## About The Pull Request

Changes `/obj/item/storage/backpack/duffelbag/update_desc` to
`/obj/item/storage/backpack/duffelbag/examine`

## Why It's Good For The Game

`examine` is cleaner for this, using `update_desc` also prevents
dufflebags from being used as a `/datum/orderable_item` because they
fail the unit test for having a dynamic description

## Changelog
🆑
code: examine text for dufflebag zipper status uses examine proc instead
of update_desc
/🆑
2025-06-17 09:28:29 -06:00
OrionTheFoxandGitHub a4d36b77a8 Adds a bit of runtime prevention to the base guncase (#91642)
## About The Pull Request

Just makes sure the variables are actually filled before trying to spawn
stuff, so it doesn't try to spawn `null` and runtime
## Why It's Good For The Game

Not entirely relevant here, but it came up downstream when trying to
make one that starts empty. Ifever an empty guncase was wanted up here,
it might prevent a runtime before it happens.
## Changelog
No player facing changes (am I using that right? There's zero change
anybody could see ingame)
2025-06-15 19:05:50 -06:00
Xander3359andRoxy 8ca6e949d5 Removes some action_slots from items where it's not needed (#91466)
## About The Pull Request
Removes action_slots from items which dont need it.
Either the parent type already has it set (anything storage)
or chain of command, which has no actions, nor any subtypes do
## Why It's Good For The Game
code improvement
## Changelog
🆑
code: removes action_slots when not needed
/🆑
2025-06-15 15:53:27 -04:00
eb84412816 Adds a new brand of cigarettes, Mainthol Greys (#91328)
**We all like a little flavor, and a new brand in the sector promises a
dark smoke, questionable trace compounds, and the robust flavors of
maintenance...**

![paintdotnet_GC1kzxYiG0](https://github.com/user-attachments/assets/fb1c9986-7ce2-4ab4-a033-f4d2cf93b3c6)

## About The Pull Request
I've added a new brand of cigarettes! Mainthol greys, now available in
hacked cigarette vending machines for an immodest sum, hand rolled &
grown in the Sybil sector. The syndicate stock some stolen surplus too.
The goal was to create another nice little flavor item, a compliment to
grey bull and other maintenance loot.

<details>
<summary>Chemical contents in code, for the joy of discovery!</summary>

  ```
1u oculine is in every cigarette, an imperceptible buffer against the
welder harming an enterprising assistant's eyes.
Extremely trace amount for cigarette microdosing.
Each cigarette has a 40% chance to have an extra reagent from a list of
14 minor toxins, drugs, and things like glitter.
They're inconsequential via cigarette, but still noticed and
experienced.
  ```
</details>
I tested these bad boys extensively, blending them, ate them, blinded
myself with a welder, spammed a health analyzer while smoking to gauge
chemicals and ensure intended effects are noticed and add a nice je ne
sais quois.

**Our sprites!**

![image](https://github.com/user-attachments/assets/4a8c8e57-634b-4c29-ae03-ae8913040279)

## Why It's Good For The Game
It's an extra little flavor item with a couple simple surprises to spice
up your assisting.
## Changelog
🆑
add: Added a new brand of cigarettes to hacked & syndicate vending
machines+spawner list.
/🆑

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2025-06-15 15:53:26 -04:00
ArturlangandRoxy 8e90fdd516 fix duffelbag speedup bug (#91505)
## About The Pull Request
https://github.com/tgstation/tgstation/pull/91415 changed how
zip_slowdown is incremented and decremented, but did not test their
changes or consider that set_zipper runs on init to zip it, reducing
slowdown, thus reducing slowdown to negative numbers.

## Why It's Good For The Game
speedy duffels bad

## Changelog

🆑
fix: fix duffels making you fast as fuck
/🆑
2025-06-10 23:58:36 -04:00
Xander3359andGitHub 2a1b79d2ec Removes some action_slots from items where it's not needed (#91466)
## About The Pull Request
Removes action_slots from items which dont need it.
Either the parent type already has it set (anything storage)
or chain of command, which has no actions, nor any subtypes do
## Why It's Good For The Game
code improvement
## Changelog
🆑
code: removes action_slots when not needed
/🆑
2025-06-09 16:37:28 +01:00
cdac0c5bf9 Adds a new brand of cigarettes, Mainthol Greys (#91328)
**We all like a little flavor, and a new brand in the sector promises a
dark smoke, questionable trace compounds, and the robust flavors of
maintenance...**

![paintdotnet_GC1kzxYiG0](https://github.com/user-attachments/assets/fb1c9986-7ce2-4ab4-a033-f4d2cf93b3c6)

## About The Pull Request
I've added a new brand of cigarettes! Mainthol greys, now available in
hacked cigarette vending machines for an immodest sum, hand rolled &
grown in the Sybil sector. The syndicate stock some stolen surplus too.
The goal was to create another nice little flavor item, a compliment to
grey bull and other maintenance loot.

<details>
<summary>Chemical contents in code, for the joy of discovery!</summary>

  ```
1u oculine is in every cigarette, an imperceptible buffer against the
welder harming an enterprising assistant's eyes.
Extremely trace amount for cigarette microdosing.
Each cigarette has a 40% chance to have an extra reagent from a list of
14 minor toxins, drugs, and things like glitter.
They're inconsequential via cigarette, but still noticed and
experienced.
  ```
</details>
I tested these bad boys extensively, blending them, ate them, blinded
myself with a welder, spammed a health analyzer while smoking to gauge
chemicals and ensure intended effects are noticed and add a nice je ne
sais quois.

**Our sprites!**

![image](https://github.com/user-attachments/assets/4a8c8e57-634b-4c29-ae03-ae8913040279)

## Why It's Good For The Game
It's an extra little flavor item with a couple simple surprises to spice
up your assisting.
## Changelog
🆑
add: Added a new brand of cigarettes to hacked & syndicate vending
machines+spawner list.
/🆑

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2025-06-09 16:32:15 +01:00
ArturlangandGitHub 8687a158e4 fix duffelbag speedup bug (#91505)
## About The Pull Request
https://github.com/tgstation/tgstation/pull/91415 changed how
zip_slowdown is incremented and decremented, but did not test their
changes or consider that set_zipper runs on init to zip it, reducing
slowdown, thus reducing slowdown to negative numbers.

## Why It's Good For The Game
speedy duffels bad

## Changelog

🆑
fix: fix duffels making you fast as fuck
/🆑
2025-06-08 15:48:04 +00:00
GhomandRoxy 1f3894e793 Crafting refactor, implementing materials (#89465)
My original plan was to just implement materials into crafting so that
items would inherit the materials of their components, allowing for some
interesting stuff if the material flags of the item allow it. However to
my dismay crafting is a pile of old tech debt, starting from the old
`del_reqs` and `CheckParts` which still contain lines about old janky
bandaids that are no longer in use nor reachable, up to the
`customizable_reagent_holder` component which has some harddel issues
when your custom food is sliced, and items used in food recipes not
being deleted and instead stored inside the result with no purpose as
well as other inconsistencies like stack recipes that transfer materials
having counterparts in the UI that don't do that.

EDIT: Several things have come up while working on this, so I apologise
that it ended up changing over 100+ files. I managed to atomize some of
the changes, but it's a bit tedious.

EDIT: TLDR because I was told this section is too vague and there's too
much going on. This PR:
- Improves the dated crafting code (not the UI).
- replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion`
with `atom/on_craft_completion`.
- Reqs used in food recipes are now deleted by default and not stored
inside the result (they did nothing).
- Renames the customizable_reagent_holder comp and improves it (No
harddels/ref issues).
- Adds a unit test that tries to craft all recipes to see what's wrong
(it skips some of the much more specific reqs for now).
- In the unit test is also the code to make sure materials of the
crafted item and a non-crafted item of the same type are roughly the
same, so far only applied to food.
- Some mild material/food refactoring around the fact that food item
code has been changed to support materials.

Improving the backbone of the crafting system. Also materials and food
code.

🆑
refactor: Refactored crafting backend. Report possible pesky bugs.
balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge
different because of code standardization.
/🆑
2025-06-05 20:05:13 -04:00
SmArtKarandRoxy ed815ddec1 Fixes speed potions behaving super inconsistently on magboots, duffelbags and laptops (#91415)
## About The Pull Request

The issue was threefold, first speed potions sent the comsig before
actually applying which could be abused to make items not have a
slowdown without spending it or coloring them by using it on them in a
state when they don't have a slowdown (i.e. disabled magboots). Magboots
``initial()``'d their slowdown which could break them if they somehow
got it negative, but I believe that didn't happen in actual gameplay.
And I've made duffelbags and laptops have their open slowdown set to 0
similarly to magboots when a speed potion is applied to them. Last one
may be a balance change, depending on the original intent, but I'm going
off their pre-rework behavior here (and it generally feels weird to be
the case when they get unslowdowned and then it gets reapplied when you
close and open them)

- Closes #91381

## Changelog
🆑
fix: Fixed speed potions behaving super inconsistently on magboots,
duffelbags and laptops
/🆑
2025-06-05 19:53:08 -04:00
3c1505ac06 Cyborgs now use storage datum (#90927)
This moves Cyborgs onto using storage datums, removing the remenants of
the shitcode that was Cyborg inventory. It's now done mostly by
equipping/unequipping/storage items, much like how other mobs do.
This allows borgs to take advantage of more hand support stuff and
things like ``dropped()``, so borgs no longer have to copy paste drop
code to ``cyborg_unequip``

It also:
- Removes ``CYBORG_ITEM_TRAIT``
- Removes all borg items being ``NODROP``

https://github.com/user-attachments/assets/11442a10-3443-41f2-8c72-b38fb0126cdb

Currently borgs are able to have their entire inventory open and a bag
below it, which I thought was a little weird. I always assumed they WERE
storage items, so I guess I'm doing it myself.
Cyborgs using storage code makes it easier for contributors to actually
do stuff with, without risking breaking everything. It also hopefully
will make borg items more resilient against breaking in the future, now
that we're not relying on nodrop.
Also just brings them more in line with other mobs, all of which make
use of storages.

🆑
refactor: Cyborg's modules now use storage (so opening a bag will close
modules instead of overlap one over the other).
qol: Observers can now see Cyborg's inventories (like they can for
humans).
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-06-05 19:49:49 -04:00
SmArtKarandRoxy d841c9df40 [MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
Refactors most of blood handling code untouched by #90593 and completely
rewrites all blood decals, components and reagents.

- Blood types now have behavioral flags which allow them to control
where they leave decals/DNA/viruses. Oil no longer transfers DNA and
viruses with it, while podpeople water-blood doesn't leave visible
decals on turfs and items, but still can be picked up by DNA scanners.
- Multiple blood types have received unique handling - liquid
electricity blood now glows in the dark, oil trails are flammable and
lube ones are slippery. Oil blood can be restored with fuel, lube with
silicon and slime with stable plasma (as normal plasma already passively
regenerates their blood), instead of everything using iron. Saline
solution only supplements on iron-based blood and won't do anything to
help with bloodloss for species who rely on different blood types.
(Roundstart this applies only to Ethereals)
- All blood logic has been moved away from the blood reagent itself into
a blood element that is assigned to the blood reagent by default, and to
any reagent that's drawn from a mob as their "blood" (in
``transfer_blood_to``). This means that blood you draw from lizards will
be green and have lizard's blood description instead of mentioning red
blood cells, Ethereal "blood" will actually contain their DNA and genes,
etc.
- Refactored all blood decals. Blood states are no more, everything is
now handled via blood DNA. Credits to MrMelbert and Maplestation, as a
significant amount of code has been taken from
https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his
followup PRs. Oil and xenomorph splatters are now subtypes of blood,
blood drying is now animated, blood trails now curve and can be
diagonal.
- Rewrote bloodysoles and bloody_spreader components, credits to Melbert
again for the former, while latter now makes more sense with its
interactions. Bloody soles no longer share blood DNA with your hands.
- Ported Melbert's bloody footprint sprites and bot-blood-spreading
functionality.
- Removed all species-side reagent interactions, instead they're handled
by said species' livers. (This previously included exotic blood
handling, thus the removal)
- Slightly optimized human rendering by removing inbetween overlay
holders for clothing when they're not needed.
- Blood-transmitted diseases will now get added to many more decals than
before.
- Cleaned up and partially refactored replica pods, fixed an issue where
monkeys/manipulators were unable to harvest mindless pods.
- Exotic bloodtype on species now automatically assigns their blood
reagent, without the need to assign them separately.
- Clown mobs now bleed (with colorful reagent instead of blood during
april fools), and so do vatbeasts (lizard blood)
- Implemented generic procs for handling bleeding checks, all sorts of
scanners now also correctly call your blood for what it is.
- Podpeople's guts are now lime-green like their organs, instead of
being weirdly greyish like their water-blood. (Their bleeding overlays
are still grey, as they're bleeding water)
- Slimepeople now can bleed. Their jelly is pale purple in color, but
their wound overlays copy their body color.
- Injecting/spraying/splashing/etc mob with a reagent preserves its
data, so you could theoretically recycle fine wines from someone's
bloodstream
- Fixed burdened chaplain's sect never actually giving a blessing when
applying effects, and giving a blessing when nothing can be healed.
Inverted check strikes again.

- Closes #91039

A lot of blood here has dried, visually the blood colors are almost
exactly the same as before either of the blood refactors.

![dreamseeker_BSP7FE9pRB](https://github.com/user-attachments/assets/45711fa0-ae65-4ec2-9e89-753fa7dd876f)

![dreamseeker_zyv9ssh5VN](https://github.com/user-attachments/assets/7b112854-b7e3-4bfe-b78b-199a55b5b051)
2025-06-05 19:47:01 -04:00
GhomandGitHub 4f6727024d Crafting refactor, implementing materials (#89465)
## About The Pull Request
My original plan was to just implement materials into crafting so that
items would inherit the materials of their components, allowing for some
interesting stuff if the material flags of the item allow it. However to
my dismay crafting is a pile of old tech debt, starting from the old
`del_reqs` and `CheckParts` which still contain lines about old janky
bandaids that are no longer in use nor reachable, up to the
`customizable_reagent_holder` component which has some harddel issues
when your custom food is sliced, and items used in food recipes not
being deleted and instead stored inside the result with no purpose as
well as other inconsistencies like stack recipes that transfer materials
having counterparts in the UI that don't do that.

EDIT: Several things have come up while working on this, so I apologise
that it ended up changing over 100+ files. I managed to atomize some of
the changes, but it's a bit tedious.

EDIT: TLDR because I was told this section is too vague and there's too
much going on. This PR:
- Improves the dated crafting code (not the UI).
- replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion`
with `atom/on_craft_completion`.
- Reqs used in food recipes are now deleted by default and not stored
inside the result (they did nothing).
- Renames the customizable_reagent_holder comp and improves it (No
harddels/ref issues).
- Adds a unit test that tries to craft all recipes to see what's wrong
(it skips some of the much more specific reqs for now).
- In the unit test is also the code to make sure materials of the
crafted item and a non-crafted item of the same type are roughly the
same, so far only applied to food.
- Some mild material/food refactoring around the fact that food item
code has been changed to support materials.

## Why It's Good For The Game
Improving the backbone of the crafting system. Also materials and food
code.

## Changelog

🆑
refactor: Refactored crafting backend. Report possible pesky bugs.
balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge
different because of code standardization.
/🆑
2025-06-01 16:37:43 -07:00
SmArtKarandGitHub 16d80d9be0 Fixes speed potions behaving super inconsistently on magboots, duffelbags and laptops (#91415)
## About The Pull Request

The issue was threefold, first speed potions sent the comsig before
actually applying which could be abused to make items not have a
slowdown without spending it or coloring them by using it on them in a
state when they don't have a slowdown (i.e. disabled magboots). Magboots
``initial()``'d their slowdown which could break them if they somehow
got it negative, but I believe that didn't happen in actual gameplay.
And I've made duffelbags and laptops have their open slowdown set to 0
similarly to magboots when a speed potion is applied to them. Last one
may be a balance change, depending on the original intent, but I'm going
off their pre-rework behavior here (and it generally feels weird to be
the case when they get unslowdowned and then it gets reapplied when you
close and open them)

- Closes #91381

## Changelog
🆑
fix: Fixed speed potions behaving super inconsistently on magboots,
duffelbags and laptops
/🆑
2025-06-01 22:30:32 +00:00
c51ee7efa5 Cyborgs now use storage datum (#90927)
## About The Pull Request

This moves Cyborgs onto using storage datums, removing the remenants of
the shitcode that was Cyborg inventory. It's now done mostly by
equipping/unequipping/storage items, much like how other mobs do.
This allows borgs to take advantage of more hand support stuff and
things like ``dropped()``, so borgs no longer have to copy paste drop
code to ``cyborg_unequip``

It also:
- Removes ``CYBORG_ITEM_TRAIT``
- Removes all borg items being ``NODROP``


https://github.com/user-attachments/assets/11442a10-3443-41f2-8c72-b38fb0126cdb

## Why It's Good For The Game

Currently borgs are able to have their entire inventory open and a bag
below it, which I thought was a little weird. I always assumed they WERE
storage items, so I guess I'm doing it myself.
Cyborgs using storage code makes it easier for contributors to actually
do stuff with, without risking breaking everything. It also hopefully
will make borg items more resilient against breaking in the future, now
that we're not relying on nodrop.
Also just brings them more in line with other mobs, all of which make
use of storages.

## Changelog

🆑
refactor: Cyborg's modules now use storage (so opening a bag will close
modules instead of overlap one over the other).
qol: Observers can now see Cyborg's inventories (like they can for
humans).
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-06-01 01:26:53 +00:00
SmArtKarandGitHub b4061f1800 [MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
## About The Pull Request

Refactors most of blood handling code untouched by #90593 and completely
rewrites all blood decals, components and reagents.

- Blood types now have behavioral flags which allow them to control
where they leave decals/DNA/viruses. Oil no longer transfers DNA and
viruses with it, while podpeople water-blood doesn't leave visible
decals on turfs and items, but still can be picked up by DNA scanners.
- Multiple blood types have received unique handling - liquid
electricity blood now glows in the dark, oil trails are flammable and
lube ones are slippery. Oil blood can be restored with fuel, lube with
silicon and slime with stable plasma (as normal plasma already passively
regenerates their blood), instead of everything using iron. Saline
solution only supplements on iron-based blood and won't do anything to
help with bloodloss for species who rely on different blood types.
(Roundstart this applies only to Ethereals)
- All blood logic has been moved away from the blood reagent itself into
a blood element that is assigned to the blood reagent by default, and to
any reagent that's drawn from a mob as their "blood" (in
``transfer_blood_to``). This means that blood you draw from lizards will
be green and have lizard's blood description instead of mentioning red
blood cells, Ethereal "blood" will actually contain their DNA and genes,
etc.
- Refactored all blood decals. Blood states are no more, everything is
now handled via blood DNA. Credits to MrMelbert and Maplestation, as a
significant amount of code has been taken from
https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his
followup PRs. Oil and xenomorph splatters are now subtypes of blood,
blood drying is now animated, blood trails now curve and can be
diagonal.
- Rewrote bloodysoles and bloody_spreader components, credits to Melbert
again for the former, while latter now makes more sense with its
interactions. Bloody soles no longer share blood DNA with your hands.
- Ported Melbert's bloody footprint sprites and bot-blood-spreading
functionality.
- Removed all species-side reagent interactions, instead they're handled
by said species' livers. (This previously included exotic blood
handling, thus the removal)
- Slightly optimized human rendering by removing inbetween overlay
holders for clothing when they're not needed.
- Blood-transmitted diseases will now get added to many more decals than
before.
- Cleaned up and partially refactored replica pods, fixed an issue where
monkeys/manipulators were unable to harvest mindless pods.
- Exotic bloodtype on species now automatically assigns their blood
reagent, without the need to assign them separately.
- Clown mobs now bleed (with colorful reagent instead of blood during
april fools), and so do vatbeasts (lizard blood)
- Implemented generic procs for handling bleeding checks, all sorts of
scanners now also correctly call your blood for what it is.
- Podpeople's guts are now lime-green like their organs, instead of
being weirdly greyish like their water-blood. (Their bleeding overlays
are still grey, as they're bleeding water)
- Slimepeople now can bleed. Their jelly is pale purple in color, but
their wound overlays copy their body color.
- Injecting/spraying/splashing/etc mob with a reagent preserves its
data, so you could theoretically recycle fine wines from someone's
bloodstream
- Fixed burdened chaplain's sect never actually giving a blessing when
applying effects, and giving a blessing when nothing can be healed.
Inverted check strikes again.

- Closes #91039 

#### Examples

A lot of blood here has dried, visually the blood colors are almost
exactly the same as before either of the blood refactors.


![dreamseeker_BSP7FE9pRB](https://github.com/user-attachments/assets/45711fa0-ae65-4ec2-9e89-753fa7dd876f)

![dreamseeker_zyv9ssh5VN](https://github.com/user-attachments/assets/7b112854-b7e3-4bfe-b78b-199a55b5b051)
2025-05-31 19:38:07 -05:00
_0StevenandRoxy 2aa2fb406e Nugget boxes work as stasis fish cases for Fryish and Fritterish. (#91317)
## About The Pull Request

Requires #91316, atomized into this pr.
This simply adds the `/datum/element/fish_safe_storage` element to
nugget boxes, which will only matter for fryish/fritterish as they are
the only fish that can be put into them.

This does mean the fish inside will heal, which means you can take a few
more bites out of them before they die if you let them sit in the nugget
box for a while.
## Why It's Good For The Game

I think it's funny for the nugget fish to survive in the nugget box.
Showing my friends my pet fryish collection in my nugget box :)
## Changelog
🆑
balance: Nugget boxes work as stasis fish cases for Fryish and
Fritterish.
/🆑
2025-05-29 16:16:07 -04:00
Aliceee2chandRoxy b9b5baa850 Fix for lockboxes spawning with an open icon (#91295)
## About The Pull Request

Title

## Why It's Good For The Game

Because not intended I think

## Changelog

🆑
fix: Lockboxes now correctly use the closed icon_state when first
spawned
/🆑
2025-05-29 16:15:22 -04:00
_0StevenandRoxy 20ee6acdf8 Shuffle around fancy storage code, fix some stuff, minor changes (#91316)
## About The Pull Request

So this is all because of a leftover bit making all fancy holders set
their `max_slots` to the `spawn_count`, which of course would override
the custom storage datums.

https://github.com/tgstation/tgstation/blob/526e006583eee95d809b4062938072f78974ed78/code/game/objects/items/storage/fancy.dm#L33-L36
This just moves all of the fancy storage items away from
auto-calculating storage based on those vars entirely, making new
storage datums for all of the ones which didn't have one yet.
We also move this out of the misc file, because a misc file is
meaningless if everything together makes it bloated.

We also do some minor fixes and changes.
- The pickle jar could only hold seven small items, even though it'd
take ten pickles, so we make it hold ten small items.
- Coffee cartridge racks started with the sprite for 4 of them, so we
make it start with the sprite for 1 of them.
- Nugget fish in the bugget box :)
- We make a few of the visual storages with even amounts above 7 split
their storage up into two even rows, so their UI actually looks full
when full.
## Why It's Good For The Game

Less jank good 👍 

It feels kinda awkward when you have a full box of stuff, visually full
of stuff, and the storage UI is for a significant portion empty- but you
can't put in more.
This makes it so the full storage UI actually matches the object looking
full.

It's funny if Fryish, the nugget fish, can be stored in a nugget box.
## Changelog
🆑
balance: Egg boxes' storage UI is now 6 slots wide, such that it
contains an even dozen slots when full.
balance: The storage UIs for heart-shaped chocolate boxes, pickle jars,
and rolling paper packs are now 4, 5, and 5 slots wide respectively,
such that they fill the whole storage UI when full.
balance: Fryish and its fried snack cousins can now be stored in nugget
boxes.
fix: Pickle jars can actually hold the ten pickles they spawn with.
fix: Fertile egg boxes, coffee condiment displays, and coffee cart racks
have the right amount of slots.
fix: Coffee cart racks spawn with the sprite for holding 1 cartridge
like they do, rather than looking like they're holding 4 cartridges.
/🆑
2025-05-29 16:15:21 -04:00
_0StevenandGitHub 691ca9bda8 Nugget boxes work as stasis fish cases for Fryish and Fritterish. (#91317)
## About The Pull Request

Requires #91316, atomized into this pr.
This simply adds the `/datum/element/fish_safe_storage` element to
nugget boxes, which will only matter for fryish/fritterish as they are
the only fish that can be put into them.

This does mean the fish inside will heal, which means you can take a few
more bites out of them before they die if you let them sit in the nugget
box for a while.
## Why It's Good For The Game

I think it's funny for the nugget fish to survive in the nugget box.
Showing my friends my pet fryish collection in my nugget box :)
## Changelog
🆑
balance: Nugget boxes work as stasis fish cases for Fryish and
Fritterish.
/🆑
2025-05-26 13:01:30 +00:00
Aliceee2chandGitHub 1614b9456d Fix for lockboxes spawning with an open icon (#91295)
## About The Pull Request

Title

## Why It's Good For The Game

Because not intended I think

## Changelog

🆑
fix: Lockboxes now correctly use the closed icon_state when first
spawned
/🆑
2025-05-25 19:49:35 +00:00
_0StevenandGitHub 8101de5c3f Shuffle around fancy storage code, fix some stuff, minor changes (#91316)
## About The Pull Request

So this is all because of a leftover bit making all fancy holders set
their `max_slots` to the `spawn_count`, which of course would override
the custom storage datums.

https://github.com/tgstation/tgstation/blob/526e006583eee95d809b4062938072f78974ed78/code/game/objects/items/storage/fancy.dm#L33-L36
This just moves all of the fancy storage items away from
auto-calculating storage based on those vars entirely, making new
storage datums for all of the ones which didn't have one yet.
We also move this out of the misc file, because a misc file is
meaningless if everything together makes it bloated.

We also do some minor fixes and changes.
- The pickle jar could only hold seven small items, even though it'd
take ten pickles, so we make it hold ten small items.
- Coffee cartridge racks started with the sprite for 4 of them, so we
make it start with the sprite for 1 of them.
- Nugget fish in the bugget box :)
- We make a few of the visual storages with even amounts above 7 split
their storage up into two even rows, so their UI actually looks full
when full.
## Why It's Good For The Game

Less jank good 👍 

It feels kinda awkward when you have a full box of stuff, visually full
of stuff, and the storage UI is for a significant portion empty- but you
can't put in more.
This makes it so the full storage UI actually matches the object looking
full.

It's funny if Fryish, the nugget fish, can be stored in a nugget box.
## Changelog
🆑
balance: Egg boxes' storage UI is now 6 slots wide, such that it
contains an even dozen slots when full.
balance: The storage UIs for heart-shaped chocolate boxes, pickle jars,
and rolling paper packs are now 4, 5, and 5 slots wide respectively,
such that they fill the whole storage UI when full.
balance: Fryish and its fried snack cousins can now be stored in nugget
boxes.
fix: Pickle jars can actually hold the ten pickles they spawn with.
fix: Fertile egg boxes, coffee condiment displays, and coffee cart racks
have the right amount of slots.
fix: Coffee cart racks spawn with the sprite for holding 1 cartridge
like they do, rather than looking like they're holding 4 cartridges.
/🆑
2025-05-25 12:27:08 +03:00
fleurandRoxy a81cf0dfb9 Narcolepsy quirk (#91184)
## About The Pull Request

This is a PR I made a while ago for downstreams, and it has become my
favorite negative quirk to play with. It grants your character a
slightly more forgiving version of the narcolepsy trauma, as it has
lower odds of making you snooze plus a bonus list of reagents that will
suppress symptoms (`modafinil` and `synaptizine` for now), and cares
about if you are caffeinated, (have `trait_simulated`).

The rate at which you fall asleep/get drowsy is appropriate in my
opinion, though I could understand if players would want it to be more
common.


![image](https://github.com/user-attachments/assets/4a2a6f3e-0a4b-4085-9d43-acf28778d991)

## Why It's Good For The Game

Really fun quirk to play with, adds more risk to your gameplay. Use your
over-the-counter stimulants to try and win from a stun baton.

## Changelog


🆑
add: Adds Narcolepsy as a -8 negative quirk!
refactor: Slightly adjusts the logic of the narcolepsy trauma
balance: The narcolepsy trauma its symptoms can now be softened by being
caffeinated, and modafinil or synaptizine suppress it entirely
/🆑
2025-05-22 21:31:42 -04:00
285702417c Splits Syndicate surgery dufflebag into two items (#91107)
## About The Pull Request

This PR splits the syndicate surgery dufflebag into two items
Syndicate Surgery medkit which is just a compact medkit to hold all your
tools with some sedatives(for your evil surgery purposes)
Removes the Syndicate brand MMI from it limiting it to Robo/RD for their
traitor uplink.
Removes the straightjacket for Surgery this is pretty limiting you to
head surgery.

And the syndicate dufflebag in its own

The medkit being 3 TC due lost functionality of the duffblebag surgery
space but still being inventory effecient.
The dufflebag being 2 TC on its own for having the functionality to hold
bulky items

## Why It's Good For The Game

Syndicate dufflebag got buffed to hold upto bulky 2 items and this PR
points more towards to this being a thing, and giving traitors more
convience when they buy a surgery kit they don't have just a bunch of
tools in a dufflebag thats hard to get rid of.

## Changelog
🆑
balance: Splits surgery dufflebag into two items the dufflebag itself
and the medkit
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2025-05-22 21:31:03 -04:00
MrMelbertandRoxy bc2215667f Re-refactors batons / Refactors attack chain force modifiers (#90809)
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack

This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.

This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).

🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
2025-05-22 21:30:07 -04:00
MrMelbertandRoxy ec3f5acec0 [MDB Ignore] Damp Rag can now get dirty / Repaths damp rag (it's no longer a cup) (#90700)
- Damp rag is now no longer god's perfect cleaning tool. After blood,
the damp rag will collect it, and after cleaning a lot of blood, you can
no longer clean with the rag until you wash it in a sink (or with
cleaner or however you want)
- This means the rag will collect DNA in it as you clean, which gives
detectives an opportunity to investigate.
- It also means the DNA it collects will occasionally spread onto you,
meaning you will have to clean your gloves or hands.
- Cleaning vomit and such is (currently) unaffected (and does not dirty
the rag).
- Diseases are not currently transferred to the rag (but this would be
fun to add)

- Gauze now gets dirty when using it to wrap bleeding wounds. This is
just visual, though blood DNA gets transferred. It can be washed in a
sink.

- Removed gauze on sink / cloth on sink interaction.
   - Can't really wash gauze with it, plus it's redundant.

- Damp rag is no longer a cup.

Damp rag is just "soap without any downsides", which is kinda lame.
I thought about going a step further and making it require you wet it
first but then it just becomes "mop but small" which is also lame.

Instead, you're required to clean it, which gives janitors / crewmembers
an alternate cleaning method:
- Soap: Small, finite, limited. Can't be replenished.
- Cleaner: Small, finite, even more limited, ranged. Can be refilled
with chemistry's help.
- Mop: Large, infinite, limited. Needs a water bucket.
- Damp Rag: Small, infinite, limited. Need to clean it after a few goes.

🆑 Melbert
balance: Damp Rags can now get dirty when using them to clean blood,
passing blood DNA along.
add: Gauze now gets dirty when apply it to actively bleeding wounds.
Doesn't spread disease or anything, just passes blood DNA. It can be
cleaned in a sink.
del: Removed cloth on sink / gauze on sink interaction to make rags.
Just use the crafting menu
/🆑
2025-05-22 21:14:47 -04:00
SmArtKarandRoxy e14d79858a Fixes tactical medkits not giving medibots a bezerk skin (#91146)
## About The Pull Request

Only the lite version had the skin override, so tactical and premium
tactical kits just made regular medibots (visually, they still heal all
types at once)

## Changelog
🆑
fix: Fixed tactical medkits not giving medibots a bezerk skin
/🆑
2025-05-22 21:12:29 -04:00
fleurandGitHub 429a70ce4f Narcolepsy quirk (#91184)
## About The Pull Request

This is a PR I made a while ago for downstreams, and it has become my
favorite negative quirk to play with. It grants your character a
slightly more forgiving version of the narcolepsy trauma, as it has
lower odds of making you snooze plus a bonus list of reagents that will
suppress symptoms (`modafinil` and `synaptizine` for now), and cares
about if you are caffeinated, (have `trait_simulated`).

The rate at which you fall asleep/get drowsy is appropriate in my
opinion, though I could understand if players would want it to be more
common.


![image](https://github.com/user-attachments/assets/4a2a6f3e-0a4b-4085-9d43-acf28778d991)

## Why It's Good For The Game

Really fun quirk to play with, adds more risk to your gameplay. Use your
over-the-counter stimulants to try and win from a stun baton.

## Changelog


🆑
add: Adds Narcolepsy as a -8 negative quirk!
refactor: Slightly adjusts the logic of the narcolepsy trauma
balance: The narcolepsy trauma its symptoms can now be softened by being
caffeinated, and modafinil or synaptizine suppress it entirely
/🆑
2025-05-21 22:39:56 +02:00
3c065944a4 Splits Syndicate surgery dufflebag into two items (#91107)
## About The Pull Request

This PR splits the syndicate surgery dufflebag into two items
Syndicate Surgery medkit which is just a compact medkit to hold all your
tools with some sedatives(for your evil surgery purposes)
Removes the Syndicate brand MMI from it limiting it to Robo/RD for their
traitor uplink.
Removes the straightjacket for Surgery this is pretty limiting you to
head surgery.

And the syndicate dufflebag in its own

The medkit being 3 TC due lost functionality of the duffblebag surgery
space but still being inventory effecient.
The dufflebag being 2 TC on its own for having the functionality to hold
bulky items

## Why It's Good For The Game

Syndicate dufflebag got buffed to hold upto bulky 2 items and this PR
points more towards to this being a thing, and giving traitors more
convience when they buy a surgery kit they don't have just a bunch of
tools in a dufflebag thats hard to get rid of.

## Changelog
🆑
balance: Splits surgery dufflebag into two items the dufflebag itself
and the medkit
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2025-05-21 07:19:44 +10:00
MrMelbertandGitHub 5261efb67f Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request

Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack

This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.

This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).

## Changelog

🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
2025-05-19 13:32:12 +10:00