Commit Graph
1884 Commits
Author SHA1 Message Date
CirrialandGitHub 49030bc818 Fix Donk Pocket spawns (#90296)
## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/90294. Donk pockets
should spawn in multitudes, not singular.

## Why It's Good For The Game

Bugfix, restoring previous functionality.

## Changelog

🆑
fix: Donk pocket boxes start with more than one donk pocket again.
/🆑
2025-03-28 18:24:53 -04:00
GoatandGitHub 2fc6583b2c Fix Tiziran supply boxes not having the proper contents (#90267)
## About The Pull Request
Tiziran canned goods boxes used the farm fresh list while the farm fresh
box only gave three items. The farm fresh box now gives eight food items
and the canned goods now actually give canned goods. Adds a storage type
for tiziran goods.

## Why It's Good For The Game
Canned goods should have canned goods. Farm fresh should provide plenty
of items due to the amount of different things it can roll. (It's also
how it used to be)

## Changelog
🆑 Goat
fix: The Tiziran Empire has now actually puts canned goods in their
canned good exports along with putting more food in their farm fresh
boxes.
/🆑
2025-03-28 18:25:33 +01:00
d3d3a12540 The big fix for pixel_x and pixel_y use cases. (#90124)
## About The Pull Request

516 requires float layered overlays to be using pixel_w and pixel_z
instead of pixel_x and pixel_y respectively, unless we want
visual/layering errors. This makes sense, as w,z are for visual effects
only. Sadly seems we were not entirely consistent in this, and many
things seem to have been using x,y incorrectly.

This hopefully fixes that, and thus also fixes layering issues. Complete
1:1 compatibility not guaranteed.

I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming
inside apply_overlays), and this is still included in the PR to flash
out possible issues in a TM (Plus I will need someone to grep the
runtimes for me after the TM period to make sure nothing was missed).
After this is done I'll remove all these extra checks.

Lints will probably be failing for a bit, got to wait for [this
update](https://github.com/SpaceManiac/SpacemanDMM/commit/4b77cd487d0a7b6a069df20356b701af5b20489d)
to them to make it into release. Or just unlint the lines, though that's
probably gonna produce code debt

## Why It's Good For The Game

Fixes this massive 516 mess, hopefully.

closes #90281

## Changelog
🆑
refactor: Changed many of our use cases for pixel_x and pixel_y
correctly into pixel_w and pixel_z, fixing layering issues in the
process.
/🆑

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: SmArtKar <master.of.bagets@gmail.com>
2025-03-28 14:18:45 +00:00
SmArtKarandGitHub c443c2e416 Fixes all satchels having reduced storage (#90237)
## About The Pull Request

#89543 accidentally gave all satchels the storage datum of smuggler
satchels

Closes #90235

## Changelog
🆑
fix: Fixed all satchels having reduced storage
/🆑
2025-03-26 11:40:35 +01:00
SmArtKarandGitHub 1d7a4ee9b6 Fixes constant runtimes caused by large internals boxes station trait (#90213)
## About The Pull Request

Not sure if any outfits except admin-ones runtimed? Happened because box
size was increased after init and not after creating storage but before
populating it. The combat-ready box constantly runtimed due to The
Wardrobe trying to create it for an outfit and repeatedly failing, which
got annoying in testing real fast.

## Changelog
🆑
fix: Large internals station trait no longer prevents admin-specific
internals boxes from spawning
/🆑
2025-03-25 16:55:32 +01:00
SyncIt21andGitHub 0f57a23830 Refactor for storage initialization & organization (#89543)
## About The Pull Request
A Huge chunk of changes just comes from moving existing storage code
into new files & seperating `atom_storage` code into its own subtype
under the already existing `storage/subtypes` folder.

With that the changes in this PR can be organized into 3 categories.

**1. Refactors how `/obj/item/storage/PopulateContents()` initializes
storages**
- Fixes #88747 and every other storage item that has a similar variant
of this problem

The problem with `PopulateContents()` is that it allows you to create
atoms directly inside the storage via `new(src)` thus bypassing all the
access restrictions enforced by `/datum/storage/can_insert()` resulting
in storages holding stuff they shouldn't be able to hold.

Now how this proc works has been changed. It must now only return a list
of items(each item in the list can either be a typepath or a solid atom
or a mix of them in any order) that should be inserted into the storage.
Each item is then passed into `can_insert()` to check if it can fit in
the storage.

If your list contains solid atoms they must be first moved
to/Initialized in nullspace so `can_insert()` won't count it as already
inserted. `can_insert()` has now also been refactored to throw stack
traces but explaining exactly why the item could not fit in the storage
thus giving you more debugging details to fix your stuff.

A large majority of changes is refactoring `PopulateContents()` to
return a list instead of simply creating the item in place so simple 1
line changes & with that we have fixed all broken storages(medical
toolbox. electrical toolbox, cruisader armor boxes & many more) that
hold more items they can handle

**2. Organizes initialization of `atom_storage` for storage subtypes.**
All subtypes of `/obj/item/storage` should(not enforced) create their
own `/datum/storage/` subtype under the folder `storage/subtypes` if the
default values are not sufficient. This is the 2nd change done across
all existing storages

Not only does this bring code cleanliness & organization (separating
storage code from item code like how `/datum/wire` code is separated
into its own sub folder) but it also makes storage initialization
slightly faster (because you are not modifying default values after
`atom_storage` is initialized but you are directly setting the default
value in place).

You now cannot & should not modify `atom_storage` values inside
`PopulateContents()`. This will make that proc as pure as possible so
less side effects. Of course this principle is not enforced and you can
still modify the storage value after `Initialize()` but this should not
be encouraged in the future

**3. Adds support for automatic storage computations**
Most people don't understand how `atom_storage` values work. The comment
here clearly states that

https://github.com/tgstation/tgstation/blob/55bbfef0da70d87455ca8d6fd5c95107eb8dbefb/code/game/objects/items/storage/toolbox.dm#L327-L329
Because of that the linked issue occurs not just for medical toolbox but
for a lot of other items as well.

Which is why if you do not know what you doing, `PopulateContents()` now
comes with a new storage parameter i.e. `/datum/storage_config`

This datum allows you to compute storage values that will perfectly fit
with the initial contents of your storage. It allows you to do stuff
like computing `max_slots`, `max_item_weight`, `max_total_weight` etc
based on your storage initial contents so that all the contents can fit
perfectly leaving no space for excess.

## Changelog
🆑
fix: storages are no longer initialized with items that can't be put
back in after taking them out
refactor: storage initialization has been refactored. Please report bugs
on github
/🆑
2025-03-23 22:20:23 +01:00
MrMelbertandGitHub 7e0838ca1c Fixes PDA / Bag actions (#90172)
## About The Pull Request

These have multiple slots you'd use them from

## Changelog

🆑 Melbert
fix: PDA flashlight action button is given in any slot
fix: Bag action button is given in any slot
/🆑
2025-03-23 17:45:40 +01:00
Alice GarfieldfanandGitHub d1ab54666c fixes an oopsie with the donksoft flechette box (#90135)
## About The Pull Request
it was sniper_surplus instead of shotgun_surplus
## Why It's Good For The Game
thing fix + i need gbp
## Changelog
🆑
fix: donksoft flechette box has been fixed
/🆑
2025-03-20 02:35:19 +02:00
df3d6a31ca Reworks flechette into a AP pellet round that does mostly wounds. Adds the Donk Co. 'Donk Spike' flechette round as a surplus round. (#89972)
## About The Pull Request


![image](https://github.com/user-attachments/assets/a9932294-5355-4a75-b64d-cd8350092c21)

Reworks flechette shells from... whatever it was that they were supposed
to be before into an AP pellet round that primarily focuses on wounding
power and embedding power over specifically dealing direct damage (16 as
opposed to buckshot's 30). Useful if you want to maim as a priority.

You can print flechette once science researches Exotic Ammunition.
Nuclear Operatives also get flechette rounds as a Bulldog Shotgun
magazine choice priced as a basic ammunition type.

In addition, you can also acquire Donk Co. 'Donk Spike' flechette
shells. These shells fire plastic darts! They can be purchased by
Nuclear Operatives as a surplus option for Bulldog shotguns. 7 magazines
for the price of one.

Donk Co. 'Donk Spike' flechette was intended to be an alternative to the
standard flechette but failed spectacularly once it hit the market. Due
to a lack of confidence in the product, Donk Co. 'Donk Spike' flechette
now appears in maintenance loot as potential trash, as Donk Co. dumped
it in the millions into various landfills across the sector.

You can also print it if you find the tech in a BEPIS tech disk. 

Does it work? Why don't you take a chance on Donk and find out?

## Why It's Good For The Game

I'm not sure if the person who made the original flechette actually
understood what each of the variables was supposed to be doing or how
they actually worked. A bullet with an excessively negative standard
wound power (for a pellet projectile) and low damage, but then an
excessively high bare wound bonus (for a pellet projectile). But then
some ricochet variables without ricochet being assigned to the bullet...
and a demolition mod on a round meant to be weak against armor?

Nonsensical.

So I've reworked it into two unique rounds. The first serving a
practical purpose and becoming an AP option when the crew typically
begins seeing those options open up (such as x-ray lasers). The same can
be said for nukies, who love AP options, but one focused on lasting
wounds is handy too for keeping someone down. There isn't a milspec
option; so for nukies, this isn't doing nearly as much upfront damage as
buckshot or slugs. You buy this when you want someone not to be
recovered with a LOT of medical attention.

The second being more tongue in cheek, but also giving a surplus option
for Bulldog shotguns, which I think are having ammunition problems even
still. Surplus ammunition might slowly roll out for all the guns, but
I'm mostly focusing on the ones that have some slight price disparity
for total shots compared to other weapons. Also, shooting people full of
plastic is kind of funny.

## Changelog
🆑
balance: Flechette has been reworked into an AP pellet round that embeds
and wounds, but has less actual damage to buckshot. You can print it
once Exotic Ammunition has been researched. Also available to Nuclear
Operatives.
add: Donk Co. 'Donk Spike' flechette rounds. No longer offered by Donk
Co. It can sometimes shows up in trashbins and dumpsters. And operatives
can buy it in bulk if they really feel like it.
/🆑

---------

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-03-19 08:01:22 +01:00
SmArtKarandGitHub 75c4f722d0 [NO GBP] Fixes premium internals boxes still being stretched (#90098)
## About The Pull Request

No clue why this got eaten/reverted in my original PR, but it
essentially didn't do anything. Oops.

## Changelog
🆑
fix: Fixed premium internals boxes still being stretched
/🆑
2025-03-19 00:12:14 +01:00
JacquerelandGitHub 889268c400 Improved Mulligan Kit (#89740)
## About The Pull Request

Instead of just being the injector, buying the Mulligan now comes as a
box containing the mutation toxin and a "Fake Identity Kit".

The Fake Identity Kit, if used inhand by someone whose name does not
exist in crew records, creates a new identity for you composed of:
- Medical and Crew Records under your new name and appearance
- An Assistant ID Card with your new name
- An additional item which creates an announcement that you have just
arrived on the station as an Assistant, as if you just did that

There's still a couple of ways you can be caught out. I didn't issue a
PDA alongside the ID (maybe I should? not sure) for one thing, and for
another those with expert identification skills (via skillchip) will be
able to tell on close inspection that the ID card was not actually
issued by Nanotrasen.
Also eagle-eyed players might get suspicious if it's announced that you
just got in on the arrival shuttle and they see you four seconds later
in the engineering lobby. Act natural, or wait for the right moment
before triggering the announcement.

## Why It's Good For The Game

The Mulligan Injector is totally useless and nobody buys it.  
After this change it's still an extremely niche item that I don't expect
will be purchased _often_ but it at least stands up to scrutiny somewhat
better, and like... gives you an Assistant ID card if that's something
that's valuable for you to have. You could actually use it to try to
become a new person without it being trivially detected by looking at
the computer.
The kit might also have niche usage for admins, who can varedit it to
have different jobs if they want someone to be added to the crew
manifest and get announced, idk.

This PR also by virtue of that I needed it adds functionality that you
can apply the appearance of any atom to a crew manifest entry, in case
some future feature needs us to have a crew manifest entry for a guy
whose photo is of a potted plant or something.

## Changelog

🆑
add: The Mulligan Injector now comes as a kit which can create manifest
entries for you under your new identity, as well as an Assistant ID Card
with your new name.
/🆑
2025-03-17 01:57:44 +01:00
4cfd189efd Allow the janitor belt to hold one trash bag (#3184)
## About The Pull Request

Allow the janibelt to hold a maximum of one trash bag.

## Why It's Good For The Game


![image](https://github.com/user-attachments/assets/ecadd19f-4283-4bff-8e5a-0142241dc169)

Mike wanted this and it seems like good QOL and if you don't support
this you're basically saying you hate Mike so it's up to you.

## Proof Of Testing

<details>
<summary>Screenshots/Videos</summary>


![image](https://github.com/user-attachments/assets/4fbdf564-cfdf-439d-8f96-8dfefa119504)

</details>

## Changelog

🆑
add: the janitor's belt can now hold a trash bag. just one
/🆑

Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2025-03-16 01:57:13 -04:00
SmArtKarandGitHub eb2796831b [MDB Ignore] Refactors pills, patches, and generalizes stomach contents, nothing to see here. (#89549)
## About The Pull Request

Currently patches are a subtype of pills, and while they have the
``dissolveable`` var set to FALSE, barely anything checks it (because
people don't expect patches to be pills in disguise) so we end up
patches being dissolveable and implantable, which is far from ideal.
Both have been moved into an ``/obj/item/reagent_containers/applicator``
class, which handles their common logic and helps handling cases where
either one fits. As for gameplay changes:
* Pills no longer dissolve instantly, instead adding their contents to
your stomach after 3 seconds (by default). You can increase the timer by
dropping sugar onto them to thicken their coating, 1s per 1u applied, up
to a full minute. Coating can also be dissolved with water, similarly
-1s per 1u applied. Pills with no coating will work like before.
* Patches now only take half as long to apply (1.5s), but also slowly
trickle in their reagents instead of instantly applying all of them.
This is done via embedding so you could theoretically (if you get lucky)
stick a ranged patch at someone, although they are rather quick to rip
off. The implementation and idea itself are separate, but the idea for
having a visual display has been taken from
https://github.com/Monkestation/Monkestation2.0/pull/2558.

![dreamseeker_Ywd4jQcy3t](https://github.com/user-attachments/assets/7ce0e549-9ecd-4a8a-98ea-12e00754bdd9)
* In order to support the new pill mechanics, stomachs have received
contents. Pills and items that you accidentally swallow now go into your
stomach instead of your chest cavity, and may damage it if they're
sharp, requiring having them surgically cut out (cut the stomach open
with a scalpel, then cauterize it to mend the incision). Or maybe you
can get a bacchus's blessing, or a geneticist hulk to gut punch you,
that may also work. Alien devour ability also uses this system now. If
you get a critical slashing wound on your chest contents of your cut
apart stomach (if a surgeon forgot to mend it, or if you ate too much
glass shard for breakfast) may fall out. However, spacemen with the
strong stomach trait can eat as much glass cereal as they want.

Pill duration can also be chosen in ChemMaster when you have a pill
selected, 0 to 30 seconds.

![image](https://github.com/user-attachments/assets/1f40210e-74dd-49c2-8093-432a747ac8dd)

## Why It's Good For The Game

Patches and pills are extremely similar in their implemenation, former
being a worse version of sprays and pills, with only change being that
pills cannot be applied through helmets while patches and sprays ignore
both. This change makes them useful for separate cases, and allows
reenactment of some classic... movie, scenes, with the pill change. As
for stomach contents, this was probably the sanest way of implementing
pill handling, and everything else (item swallowing and cutting stomachs
open to remove a cyanide pill someone ate before it dissolves) kind of
snowballed from there. I pray to whatever gods that are out there that
this won't have some extremely absurd and cursed interactions (it
probably will).

## Changelog
🆑
add: Instead of dissolving instantly, pills now activate after 4
seconds. This timer can be increased by using a dropper filled with
sugar on them, 1s added per 1u dropped.
add: Patches now stick to you and slowly bleed their reagents, instead
of being strictly inferior to both pills and sprays.
add: Items that you accidentally swallow now go into your stomach
contents.
refactor: Patches are no longer considered pills by the game
refactor: All stomachs now have contents, instead of it being exclusive
to aliens. You can cut open a stomach to empty it with a scalpel, and
mend an existing incision with a cautery.
/🆑
2025-03-13 17:31:37 +01:00
LucyandGitHub cd404a8ccf Don't initialize the sheet snatcher box in a horribly slow and inefficient way (#89920)
## About The Pull Request

while optimizing things downstream, I discovered that the
materials/sheetsnatcher box's `PopulateContents` is _HORRIBLY_
inefficient.

it will spawn several different types of stacks 50 times (i.e
`/obj/item/stack/sheet/mineral/gold`) - instead of initializing it once
with the amount set to 50.

i've changed
`/obj/item/storage/bag/sheetsnatcher/debug/PopulateContents()` to
instead just pass the amount directly to the stack new (and dont try to
merge)

## Why It's Good For The Game

we do not need to try to merge 400 or so times to initialize a box with
a pre-set amount of materials

## Changelog
🆑
code: Spawning the debug "sheet snatcher" box will no longer try to do
~400 stack merges.
/🆑
2025-03-12 22:52:33 +01:00
MrMelbertandRoxy 04d4f3300a Fix some new sound runtimes (#89822)
## About The Pull Request

- This sound was lower than the min


![image](https://github.com/user-attachments/assets/4447ac03-33ea-41f9-9ea6-99e3e0c9725d)

- Mechanical surgery seemed to cause a `null` preop sound runtime. This
fix might be silencing a runtime, I'll have to look closer.

- And `rustle_sound` could be `null`. I think this is actually a
mistake, and the correct way to mute rustling is `do_rustle = FALSE`,
but I feel like we could just delete that var and let people dictate it
by setting it to `null` or not? For a follow up PR nevertheless

## Changelog

🆑 Melbert
fix: You can hear looping computer sounds again
/🆑
2025-03-12 17:11:18 -04:00
GhomandRoxy 87ce43bb8f The edible component now uses DUPE_SOURCE mode (#89687)
## About The Pull Request
The edible component now uses DUPE_SOURCE mode, which is needed to avoid
conflicts between sources. This includes some other tidbits from my
refactor like renaming dcs/flags.dm to ds/declarations.dm (in virtue of
the fact it doesn't only contain flags anymore even before this PR),
meat materials giving protein and fat reagents to affected atoms instead
of generic nutriment and oil, and the pizza material no longer
containing meat, because margherita pizza, which the material is
extracted from, doesn't contain meat either. The pepperonis were
magically conjured space bs.

## Why It's Good For The Game
There are multiple sources of the edible component and we don't want
issues with that. Also atomizing stuff from my refactor.

## Changelog

🆑
balance: objects made out of meat are no longer classified as gross food
on top of being raw and meaty, and actually contain protein and fat
instead of standard nutriment and oil.
balance: the pizza material stacks, crafted with margherita pizza and
rollig pin mind you, no longer magically contain pepperoni.
/🆑
2025-03-12 16:55:07 -04:00
SmArtKarandRoxy 589cf0a904 Refactors how item actions are handled (#89654)
## About The Pull Request

This PR tackles our piss-poor item action handling. Currently in order
to make an item only have actions when its equipped to a certain slot
you need to override a proc, which I've changed by introducing an
action_slots variable. I've also cleaned up a ton of action code, and
most importantly moved a lot of Trigger effects on items to do_effect,
which allows actions to not call ui_action_click or attack_self on an
item without bypassing IsAvailible and comsigs that parent Trigger has.
This resolves issues like jump boots being usable from your hands, HUDs
being toggleable out of your pockets, etc. Also moved a few actions from
relying on attack_self to individual handling on their side.

This also stops welding masks/hardhats from showing their action while
you hold them, this part of the change is just something I thought
didn't make much sense - you can use their action by using them in-hand,
and flickering on your action bar can be annoying when reshuffling your
backpack.

Closes #89653

## Why It's Good For The Game
Makes action handling significantly less ass, allows us to avoid code
like this
```js
/obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, action)
	if(istype(action, /datum/action/item_action/halt))
		halt()
	else
		adjust_visor(user)
```
2025-03-12 16:53:44 -04:00
JacquerelandRoxy 21d2207333 Prisoners aren't given get-out-of-jail-free hooks at roundstart (#89490)
## About The Pull Request

Fixes #89487
When we added "escape from falling into a deep hole" hooks to survival
boxes _17 months ago_ we forgot that roundstart prisoners get given
survival boxes and escaping from the Tram permabrig just requires you to
ascend out of a hole.
You could maybe find a way to use these to escape on Icebox too,
although it would require going to the gulag probably.

While I was there I also made it so that when everyone in the round
starts with extra goodies in their internals box, prisoners don't. The
HoS is embezzling the money that was supposed to go towards that, sorry.

## Why It's Good For The Game

You probably shouldn't spawn with an item that allows you to escape
jail.

## Changelog

🆑
fix: Prisoners will no longer spawn on Tram with an item which allows
them to immediately exit the jail.
balance: Prisoners also don't get bonus goodies in their internals box
when the station trait rolls, because we're mean.
/🆑
2025-03-12 16:03:00 -04:00
Time-GreenandRoxy 053c2f86d7 Flesh Reshaper | New Genetics Visual Organ Restyler (#89314)
## About The Pull Request
Adds the flesh reshaper! 

https://github.com/user-attachments/assets/ccb79944-5e61-425c-9c9e-b1463ce56013

(The TGUI doesn't render but it's just a dropdown with valid features)

It let's you right click any human mob with visual features to change
them into a different cosmetic variant (within the same pool).

One spawns roundstart in the genetics lab

![image](https://github.com/user-attachments/assets/a578a914-0100-4a97-9ef6-7f3b82bcd115)

More can be made by researching gene engineering, including a medical
variant

![image](https://github.com/user-attachments/assets/74409f04-3162-419c-b8a9-26aa15f84b5f)
2025-03-12 16:00:07 -04:00
FlufflesTheDogandRoxy 7ba886331b Fix normal crafted medbots being invisible (#89427)
## About The Pull Request
the comment lies, the skin var is no longer null safe
medibots crafted with a non-special medkit would give it a null skin,
which is no longer supported after they were reskinned
## Why It's Good For The Game
👻 
## Changelog
🆑
fix: crafted medibots are more consistently corporeal
/🆑
2025-03-12 15:45:44 -04:00
WallemandRoxy 8f1b194f0c Swaps box/material for a bag (#89393)
## About The Pull Request
Removes `box/material`, and instead turns it into `bag/debug`. Replaces
the box in the debug toolkit box, and places a bag in the little science
room of runtimestation.
## Why It's Good For The Game
Manually putting sheets into runtimestation's ore silo--or having to
spawn in a sheet snatcher to do it for me--is really annoying, Now
instead we can just pick up the bag and shove it in and be done with it.
## Changelog
Not player facing
2025-03-12 15:45:43 -04:00
MrMelbertandGitHub 1b404098fd Fix some new sound runtimes (#89822)
## About The Pull Request

- This sound was lower than the min


![image](https://github.com/user-attachments/assets/4447ac03-33ea-41f9-9ea6-99e3e0c9725d)

- Mechanical surgery seemed to cause a `null` preop sound runtime. This
fix might be silencing a runtime, I'll have to look closer.

- And `rustle_sound` could be `null`. I think this is actually a
mistake, and the correct way to mute rustling is `do_rustle = FALSE`,
but I feel like we could just delete that var and let people dictate it
by setting it to `null` or not? For a follow up PR nevertheless

## Changelog

🆑 Melbert
fix: You can hear looping computer sounds again
/🆑
2025-03-05 20:46:46 -08:00
GhomandGitHub da31ea158c The edible component now uses DUPE_SOURCE mode (#89687)
## About The Pull Request
The edible component now uses DUPE_SOURCE mode, which is needed to avoid
conflicts between sources. This includes some other tidbits from my
refactor like renaming dcs/flags.dm to ds/declarations.dm (in virtue of
the fact it doesn't only contain flags anymore even before this PR),
meat materials giving protein and fat reagents to affected atoms instead
of generic nutriment and oil, and the pizza material no longer
containing meat, because margherita pizza, which the material is
extracted from, doesn't contain meat either. The pepperonis were
magically conjured space bs.

## Why It's Good For The Game
There are multiple sources of the edible component and we don't want
issues with that. Also atomizing stuff from my refactor.

## Changelog

🆑
balance: objects made out of meat are no longer classified as gross food
on top of being raw and meaty, and actually contain protein and fat
instead of standard nutriment and oil.
balance: the pizza material stacks, crafted with margherita pizza and
rollig pin mind you, no longer magically contain pepperoni.
/🆑
2025-03-02 13:15:08 +01:00
SmArtKarandGitHub 4dd6cdeb72 Refactors how item actions are handled (#89654)
## About The Pull Request

This PR tackles our piss-poor item action handling. Currently in order
to make an item only have actions when its equipped to a certain slot
you need to override a proc, which I've changed by introducing an
action_slots variable. I've also cleaned up a ton of action code, and
most importantly moved a lot of Trigger effects on items to do_effect,
which allows actions to not call ui_action_click or attack_self on an
item without bypassing IsAvailible and comsigs that parent Trigger has.
This resolves issues like jump boots being usable from your hands, HUDs
being toggleable out of your pockets, etc. Also moved a few actions from
relying on attack_self to individual handling on their side.

This also stops welding masks/hardhats from showing their action while
you hold them, this part of the change is just something I thought
didn't make much sense - you can use their action by using them in-hand,
and flickering on your action bar can be annoying when reshuffling your
backpack.

Closes #89653

## Why It's Good For The Game
Makes action handling significantly less ass, allows us to avoid code
like this
```js
/obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, action)
	if(istype(action, /datum/action/item_action/halt))
		halt()
	else
		adjust_visor(user)
```
2025-03-01 12:02:07 -06:00
Majkl-J 254cd32c93 Merge branch 'master' of https://github.com/Bubberstation/Bubberstation into upstream-25-02a 2025-02-25 06:56:39 -08:00
JustMeTheIIndandGitHub 2929287b35 Standardizes alternate outfits in roundstart command garment bags (#3114)
## About The Pull Request

(this is my second ever PR, please bear with me still.)

This PR copies (meaning the items are still available in the CommDrobe
vendor) the CommDrobe specifc items over to the garment bags of heads of
staff. Alternate command outfit items are in that weird state where they
are technically only in CommDrobe, and the garment bags are only for
roundstart ones, but then there's the HoS who has his alternate outfits
already in the bag? but also not every last one? Annoyed me a bit as a
HoS enjoyer so decided to standardize it, and my choice fell on making
all the items available in the garment bag. Also done the same for all
the other Heads of Staff (save for Captain because his garment bag got a
bit too ridiculous in size, as well as blueshield's and NTR's but that's
mostly due to them already having almost all of their outfits in the
bag.)

## Why It's Good For The Game

Standarizes the outfits for all Heads of staff. Mostly quality of life. 


## Proof Of Testing


![cefinal](https://github.com/user-attachments/assets/909fb19e-c229-4cce-94cf-0a70c90d6231)

![rdfinal](https://github.com/user-attachments/assets/26b14767-f280-4807-836e-6a1d4d85a7ac)

![cmofinal](https://github.com/user-attachments/assets/0b55548b-0076-48d6-8a52-baa73b2d6d48)

![hopfinal](https://github.com/user-attachments/assets/0f687596-b998-4bc2-a8a9-f280b3a0f697)

![qmfinal](https://github.com/user-attachments/assets/98222ed9-f4bb-4fdb-8533-01698e2fdfde)

![hosfinal](https://github.com/user-attachments/assets/f8a91c38-63f4-4dd9-bfa7-8e7c16718b2b)


## Changelog

qol: duplicated alternate outfit choices of command to their locker
garment bags
2025-02-24 10:49:48 -08:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00
JacquerelandGitHub 45f6724df9 Prisoners aren't given get-out-of-jail-free hooks at roundstart (#89490)
## About The Pull Request

Fixes #89487
When we added "escape from falling into a deep hole" hooks to survival
boxes _17 months ago_ we forgot that roundstart prisoners get given
survival boxes and escaping from the Tram permabrig just requires you to
ascend out of a hole.
You could maybe find a way to use these to escape on Icebox too,
although it would require going to the gulag probably.

While I was there I also made it so that when everyone in the round
starts with extra goodies in their internals box, prisoners don't. The
HoS is embezzling the money that was supposed to go towards that, sorry.

## Why It's Good For The Game

You probably shouldn't spawn with an item that allows you to escape
jail.

## Changelog

🆑
fix: Prisoners will no longer spawn on Tram with an item which allows
them to immediately exit the jail.
balance: Prisoners also don't get bonus goodies in their internals box
when the station trait rolls, because we're mean.
/🆑
2025-02-16 14:31:07 -07:00
Time-GreenandGitHub 9d69f97267 Flesh Reshaper | New Genetics Visual Organ Restyler (#89314)
## About The Pull Request
Adds the flesh reshaper! 

https://github.com/user-attachments/assets/ccb79944-5e61-425c-9c9e-b1463ce56013

(The TGUI doesn't render but it's just a dropdown with valid features)

It let's you right click any human mob with visual features to change
them into a different cosmetic variant (within the same pool).

One spawns roundstart in the genetics lab

![image](https://github.com/user-attachments/assets/a578a914-0100-4a97-9ef6-7f3b82bcd115)

More can be made by researching gene engineering, including a medical
variant

![image](https://github.com/user-attachments/assets/74409f04-3162-419c-b8a9-26aa15f84b5f)
2025-02-13 02:46:03 -06:00
FlufflesTheDogandGitHub 7a87a14df1 Fix normal crafted medbots being invisible (#89427)
## About The Pull Request
the comment lies, the skin var is no longer null safe
medibots crafted with a non-special medkit would give it a null skin,
which is no longer supported after they were reskinned
## Why It's Good For The Game
👻 
## Changelog
🆑
fix: crafted medibots are more consistently corporeal
/🆑
2025-02-11 13:49:44 -05:00
WallemandGitHub 07af87e47e Swaps box/material for a bag (#89393)
## About The Pull Request
Removes `box/material`, and instead turns it into `bag/debug`. Replaces
the box in the debug toolkit box, and places a bag in the little science
room of runtimestation.
## Why It's Good For The Game
Manually putting sheets into runtimestation's ore silo--or having to
spawn in a sheet snatcher to do it for me--is really annoying, Now
instead we can just pick up the bag and shove it in and be done with it.
## Changelog
Not player facing
2025-02-10 18:22:31 -07:00
6c63b37b97 [NO GBP] Fixes a input stall in the traitor guncase (#89376)
## About The Pull Request

What it says on the tin

## Why It's Good For The Game

When I read the new standards documentation and my mistake is the
example being used


![image](https://github.com/user-attachments/assets/d07ee775-5fb6-4639-b180-4f11a6fdc78c)

## Changelog
🆑
fix: The traitor guncase properly checks for condition changes before
letting a player activate the time bomb.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2025-02-09 16:37:51 +01:00
necromanceranneandGitHub ad5a70eac6 Refactors gun repair and maintenance. Gun maintenance kits; available in cargo or the security equipment vendor (#89205)
## About The Pull Request

Misfire chance, gun jamming (currently only on boltaction rifles) and
integrity repairs are now handled by gun maintenance kits. Using a kit
on a gun resets any misfire chance or jamming, and restores the weapon's
integrity back to full.

You can find gun maintenance kits in security equipment vendors, or
order a crate of them from cargo.

You can also make a maint version to retain the improvised nature of the
previous cleaning functionaltiy.

## Why It's Good For The Game

Firstly, clearing misfires was always a little confusing for most
players, as it required a bolt of cloth to fix. That's really on me for
making that as confusing as possible.

We ended up with multiple firearm degradation mechanics, so
consolidating their restoration makes it easier for future code
maintenance.

I disliked that the kits existed but were mostly only for the sake of an
extremely niche interaction. And that interaction was, at best, kind of
niche. Expanding out their use to gun maintenance generally is honestly
better design.

## Changelog
🆑
refactor: Gun maintenance is now consolidated into a single item, the
gun maintenance kit, rather than multiple different item interactions.
It is handled on the maintenance kit itself, and not in gun code.
qol: You can order maintenance kits from cargo, and get some out of the
security equipment vendor. Helpful if someone spilled acid onto your
disabler. You can also make a makeshift one from maintenance trash.
/🆑
2025-02-06 18:30:13 -08:00
necromanceranneandGitHub 845ab5c5f3 Increases the base force of standard toolboxes by exactly one. (#89302) 2025-02-02 22:02:43 +01:00
SmArtKarandGitHub 437166c83a Adds fishing bags, resprites fishing lines and bobber (#89300)
## About The Pull Request

Adds two new fishing bags: normal and carpskin. Normal fishing bag can
be bought from the fun vendor in the library, and is capable of holding
up to 10 normal fish (and only fish), but it does not preserve them
unlike stasis containers or portable aquariums. Carpskin fishing bag can
hold up to 14 normal-sized fish and needs to be crafted using 3 carp
skins, but is also capable of fitting fishing lines, hooks and lures.


https://github.com/user-attachments/assets/80e333f5-4388-40c7-a31b-3384b96c21a1

Also resprited four normal reels and the fishing bobber:


![image](https://github.com/user-attachments/assets/d518d5ab-2081-46bb-b088-4f6a2e8be6be)


![image](https://github.com/user-attachments/assets/97f9686c-1209-458a-893a-cd7c2f08f714)

Additionally, while I'm at it I've added the generator aquarium upgrade
to service and science lathes.

## Why It's Good For The Game

There's currently no good way to store smaller fish, especially when
you're planning to use it as bait, so you usually end up making a mess
of the room you're currently in. Carpskin bag is also a good way to
organize your fishing gear without cluttering up your bag.

While the aquarium upgrade is technically only used to generate power,
it doesn't make sense to restrict it to engineering lathe only as its
usually service and sometimes science who do fishing instead.

## Changelog
🆑
add: Added fishing bags, found in fun vendors or made from carpskin.
balance: Added the generator aquarium upgrade to service and science
lathes.
image: Resprited reels and bobber
/🆑
2025-02-01 20:53:01 +01:00
AndrewandGitHub 9d045f7cb6 New Medbot Sprites (#89152)
## About The Pull Request


https://github.com/user-attachments/assets/a57e9bd2-8e00-4ab4-86de-9facba477955


![medbots_flat](https://github.com/user-attachments/assets/6846a7bc-29d8-4dd2-a8ef-dc65eb57ca03)


![image](https://github.com/user-attachments/assets/c83941cf-a883-48f7-922f-2b6424939765)

Resprites medbots and related sprites - stacked mediborg skin,
assemblies

## Why It's Good For The Game

Consistent with the new medkits

## Changelog

🆑
image: New medbot sprites
image: New stacked medibot borg skin sprite
/🆑
2025-01-29 15:07:20 +00:00
Penelope HazeandGitHub 4c2a76ede3 Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to
variable names, but only the really egregious ones like "concious".
2025-01-28 22:16:16 +01:00
6694ea6b0c Security BattleDress Fix + Two new VARIANTS! (#2993)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

Fixes the blue security battledress which previously had a bugged sprite
by adding the tag female_sprite_flag to remove the akward invisible
pixel it had (thanks waterpig for finding this)

Additionally this PR adds two new variants of the Battledress!

+ RedSec Battledress, available in the multisec vendor!
+ HoS Battledress, available in the command vendor and the HoS Garment
bag!

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

<!-- Please make sure to actually test your PRs. If you have not tested
your PR mention it. -->

## Why It's Good For The Game

Fixes a silly bug with the battledress and adds more variety!

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Proof Of Testing

<!-- Compile and run your code locally. Make sure it works. This is the
place to show off your changes! We are not responsible for testing your
features. -->
<details>
<summary>Screenshots/Videos</summary>


![image](https://github.com/user-attachments/assets/4d3b362b-20a0-4769-a869-29747c8b9d46)

![image](https://github.com/user-attachments/assets/9c43d903-d535-4c3b-9037-a8a4abb33b6a)

![image](https://github.com/user-attachments/assets/36557542-b2db-4ca6-821f-664bd641aabc)

![image](https://github.com/user-attachments/assets/b1c09ee1-6784-4193-97b3-42f79cae23cc)

</details>

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
fix: Fixed Security Battledress sprite
add: Added Red Security Battledress and Head of Security Battledress
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

<!-- By opening a pull request. You have read and understood the
repository rules located on the main README.md on this project. -->

---------

Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
2025-01-24 22:11:53 +01:00
LT3The SharkeningAndrewtgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
e906f6d975 This year's medkit resprite #89085 (#2950)
## About The Pull Request

https://github.com/tgstation/tgstation/pull/89085


![image](https://github.com/user-attachments/assets/660f6d2e-0585-4bc9-bc1c-0763fd8443bc)

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
2025-01-21 00:33:00 -07:00
AndrewandGitHub e3933ba938 This year's medkit resprite (#89085) 2025-01-18 02:06:36 -05:00
5020138b0e Improves mind lockbox handling (#89027)
## About The Pull Request

Mind lockboxes have received a tooltip about their in-hand use, but also
can be unlocked by trying to open them normally (clicking on one while
holding it in your offhand). Should reduce the player confusion around
these significantly.

Closes #88999

## Why It's Good For The Game
More intuitive handling of objects is always nice

## Changelog
🆑
qol: Improved mind lockbox handling
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-01-14 15:09:32 +00:00
April LandGitHub 3a74a6c29b Security Kepi Caps (#2855)
I apologize if anything in the PR format is weird, this is my first PR.
The code runs and works.

## About The Pull Request

This adds kepi style caps to security multisec vendor and the HoS
garment bag.

## Why It's Good For The Game

~~Bubberstation is included in the natural borders of France.~~

More customization is always fun and a few more hats would never hurt!
At least three sec players would be happier!

## Proof Of Testing

![Screenshot 2025-01-05
232832](https://github.com/user-attachments/assets/742f889d-1411-465b-8619-ff43ce5311ce)
![Screenshot 2025-01-05
232730](https://github.com/user-attachments/assets/0e518b67-c8ed-45e5-9199-21b5c862f008)
![Screenshot 2025-01-06
000635](https://github.com/user-attachments/assets/b4c60987-3387-4c6c-8fb9-36b406414fa5)
![Screenshot 2025-01-05
232743](https://github.com/user-attachments/assets/011530e4-2677-4756-8987-7710af5a6b42)

<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog

🆑
add: Added kepis to security outfitters
/🆑
2025-01-08 11:27:10 +01:00
_0StevenandGitHub 9d7c406abd Pre-filled test tube rack fixes (#88728) 2025-01-07 14:42:02 +01:00
MrMelbertandGitHub 586710e0d4 You can light a match on the heel of your boot (#88690)
## About The Pull Request

- Matches can be ignited with boots.
- Matches have a rare chance of failing to ignite (prompting you to try
again) or an even rarer chance of snapping (wasting it).
- Also makes ignition span use mostly-consistent (using rose span for
the "cooler" ignition effects).

## Why It's Good For The Game

You may be thinking "hey, matches won't light on just friction unless
they're from the 1800s", and you'd be right. But it's a cool movie
trope, which means it should be possible, I don't make the rules.

## Changelog

🆑 Melbert
add: You can light matches on the heel of your boots - Just don't do it
too hard.
/🆑
2025-01-06 03:16:59 +01:00
jimmylandGitHub b205375557 forensics spoofing tool (for traitors) (#88357)
## About The Pull Request

adds the forensics spoofing kit for 5tc to the uplink (is it really a
kit if its only the item and instructions?)

![image](https://github.com/user-attachments/assets/2e1db84c-b34d-4d69-87d0-96f2a66b6afd)

![image](https://github.com/user-attachments/assets/27797ceb-3937-41b0-bf3b-f212ccc0d77f)

![image](https://github.com/user-attachments/assets/76e7a486-7b70-4656-a3d3-f6f0af345047)

silent mode: if off the scanner will make sounds and messages like a
forensics scanner if used (Elliot Wardle points the forensic scanner at
the reinforced wall and performs a forensic scan.)

scan mode:
scans stuff for NEWLY discovered fibers and fingerprint, stores them
the scanner may only hold 5 each of fibers and prints
the scanner reads sec records to display names next to fingerprints

apply mode:
it adds the fiber/fingerprint to whatever you use it on

## Why It's Good For The Game

as it is right now forensics scanners are basically a guaranteed "this
guy is an antag" if they scan anything syndicate related and find your
prints on it (or fibers). that is not ideal because you will spend the
next 30 minutes of your time getting trolled in the permabrig by
security

with this item you (traitor) get the benefit of the doubt which is good
and makes detectives legit use their brain beyond CTRL+C CTRL+V on sec
records

## Changelog
🆑
add: forensics spoofing kit for traitors/whoever with an uplink
/🆑
2024-12-30 08:57:30 -08:00
TimandGitHub 78ff108529 Sound Optimizations and Debug Tools (#88517)
## About The Pull Request
I was digging through sound code trying to add a few misc `.ogg`'s when
I noticed a horrifying revelation. Sound calculations are broken as
fuck. At first I didn't think it was a big deal until I remembered this
comment in another PR:


![chrome_6rspeYVig1](https://github.com/user-attachments/assets/04c3fa79-c267-43ae-a77f-85b0e8d3108f)

I asked for the profile logs:

```
                                                           Profile results (total time)
Proc Name                                                                                          Self CPU    Total CPU    Real Time     Overtime        Calls
----------------------------------------------------------------------------------------------    ---------    ---------    ---------    ---------    ---------
/proc/playsound                                                                                       4.771       26.841       26.902        0.347       153938
/mob/proc/playsound_local                                                                             9.511       15.689       15.891        0.724       429391

/mob/living/say                                                                                       0.125       19.064       19.945        0.000         2550
/mob/living/carbon/updatehealth                                                                       0.878        8.305        8.341        0.013        49847
/mob/living/carbon/proc/handle_organs                                                                 1.486        9.263        9.300        0.000        70977
/obj/item/organ/internal/on_life                                                                      0.415        0.455        0.561        0.000       340312
/mob/living/carbon/Life                                                                               0.758       30.085       30.123        0.000        71933
/mob/living/proc/Life                                                                                 5.509       39.404       39.512        0.000       401951
```


Yeah, that is _really_ bad. Especially since it is a hot proc that is
used half a million times. Optimizing this would help a decent amount.
So now you are probably wondering, what exactly is the problem?! Let's
take a look.

https://www.desmos.com/calculator/sqdfl8ipgf

Sounds are being broadcast on a large radius which is typically about
~17 tiles. Since the volume of a sound is reduced by distance, the
further away the sound is, the quieter it becomes. You would think, hey
that's fine! Sounds become inaudible at the 17 tile distance limit
right? Except no, they generally become inaudible about 2/3rds of the
way there. (~10 tile range) Sound volume is between 1-100. When the
sound volume is lower than 3, it becomes (pretty much) inaudible.

This means most of the sounds that are being spammed in game everywhere,
you can't even hear!!!

To fix this we used two major optimizations:

1. Add a `SOUND_AUDIBLE_VOLUME_MIN` to ignore any sound lower than this
volume and calculate an audible distance
2. Use the new audible distance to drastically shorten the tile range of
mob listeners using `get_hearers_in_view()`

To give you an idea of how much better this is:

Sounds that had a range of 17x17 (289 turfs) are now 12x12 (144 turfs).
There is also large range machinery like the SM that has a 40x40 (1600
turfs) that is now 30x30 (900 turfs).

It's quite an improvement.

I also went and added a debugging tool to the admin/debug equipment set
that can be found in the debug box. It is a pair of earmuffs that when
worn has any sounds sent to the mob via a `to_chat` message displaying
the sounds max range, distance from player, volume, and sound name. It
is highly recommend to walk while wearing the earmuffs since walking
stops your mob from emitting footstep sounds.

## Why It's Good For The Game
The speed of sound is now faster than ever. Please don't break the sound
barrier.

## Changelog
🆑
refactor: Sound has been heavily optimized and will now ignore low
volume sounds from far away.
admin: Add debugging sound earmuffs to admin equipment inside the debug
box. Wear them to determine a sounds max range, distance, volume, and
sound name. Highly recommended to walk otherwise you will get spammed
with footstep sounds.
/🆑
2024-12-27 18:42:51 -08:00
c1a180c35d Traitors can purchase weapon cases for the Makarov and Riot Toy Pistol. Basic ammo comes in ammo packs. Other stuff. (#88482)
## About The Pull Request

Makarovs and Donksoft Riot Toy Pistols now come in weapon cases. These
cases come with the gun, two spare magazines and a box of spare loose
ammo.

Basic ammunition for these guns come in case packs of three, with a
spare box of loose ammo. The basic ammo for Makarovs is slightly more
expensive.

Donksoft Toy Pistols from the uplink (and given to clown ops) now deal
substantially more damage. For riot darts, this goes from 25 to 35
stamina force. However, the case now costs 6 TC.

Makarov and Donksoft toy pistols have had their magazines increased by 4
bullets, for a total of 12. The Ansem is still at 8.

The pistol cases now have a unique sprite thanks to SmartKar.


![image](https://github.com/user-attachments/assets/e5726d45-47bc-405a-9d14-c68fd4cb95d5)

All included cases come with a disposal bomb built into the case. Use
Alt-Right-Click on the case to start the countdown, and stand back. Or
chuck it at someone you don't like.

## Why It's Good For The Game

>Makarovs and Donksoft Riot Toy Pistols now come in weapon cases. These
cases come with the gun, two spare magazines and a box of spare loose
ammo.

>Basic ammunition for these guns come in case packs of three, with a
spare box of loose ammo. The basic ammo for Makarovs is slightly more
expensive.

A long time ago, I proposed to a maintainer that maybe traitor weapons
should be bundled together with some starting ammo, to give them a
little bit of a necessary boost for longevity for their cost. This being
in a state of the game with only 20 TC and no way to get more. I thought
progtot may alleviate this issue somewhat, but I don't believe it has at
all.

I narrowed this down to just the Makarov and Toy Pistol as I think
they're the ones in need of help, and my reasoning is thus;

A) The TC value is extremely deceptive. 

The weapons themselves are not very good at doing anything without
additionally putting in more TC to load up on ammunition or support
equipment. While it does say 7 TC on the header for the Makarov, if you
want it to be silent, you have to spend more TC on a suppressor (3 TC).
Then, if you're not entirely sure that only 8+1 shots you get from the
beginning is enough to take out a target (maybe they're known to have
armor), then you may need to get either specialized ammo or additional
ammunition. At a certain point, it begs the question 'why didn't I just
buy the bigger stick and get more value out of my purchase as well as
more reliability?' Particularly since drawing heat probably means all
that TC is just going straight into more ammo, one way or another. Or a
bigger stick if you're doing side objectives, making that early purchase
redundant.

B) Whenever you look at either, I want you to consider. 'Could I get
better results by just getting a station weapon?'

The answer is almost universally 'yes'. Even some improvised weapons can
be more reliable. Even spending TC on getting that weapon (like C-4) is
miles more worthwhile than spending TC to get either weapon upfront.

C) It significantly overvalues autolathe access just to make the weapon
feel less like a ripoff. If the uplink can't in of itself justify using
the weapons, they're just flat out not good. and that's assuming players
even know to keep magazines.

It's just a bad value purchase and deceptive in just how expensive it
can end up to use them. The weapon is overshadowed by fairly comparable
items once you factor additional expenditures.

Even the toy pistol is a bad value purchase and it's literally just 2
TC, because the damage it does is dogshit. It's worse than a disabler.
It's worse than a sleepy pen for value to effect. It's so shit, people
put them on maps for free grabs. Let's resolve that with the following.

> Donksoft Toy Pistols from the uplink (and given to clown ops) now deal
substantially more damage. For riot darts, this goes from 25 to 35
stamina force. However, the case now costs 6 TC.

Subtle weapon, good, reliable damage. Fantastic for kidnapping at 40
damage. All without ever actually inflicting a real point of damage.
Great for clowns, great for pacifist tots. Decent deniability. Silicons
may have a harder time justifying an intervention. Genuinely a budget
tool that increases the value of any TC you put into it. Since it has so
much more value, this is why I've increased the price to offset this. It
is actually competing with similar tools well enough to not go too
overboard.

> Makarov and Donksoft toy pistols have had their magazines increased by
4 bullets, for a total of 12. The Ansem is still at 8.

Longevity is the only thing Makarovs seem to want to claim to have over
the revolver, and it isn't much more longevity from just the gun itself
(7 bullets on the revolver compared to 8+1 on the pistol). If we're
talking real longevity, and particularly if you're considering getting a
silencer, than the ebow is literally 3 TC more expensive, silent, and
has endless ammunition with high damage output.

You still need to dump a lot of TC into the Makarov to satiate its ammo
needs if you happen to be skirmishing a lot. By comparison, just getting
a single laser can often times do a much better job at skirmishing than
the tot with a Makarov can. And do comparable damage no less. From
experience, I've always done better with lasers than the Makarov.

Making it more directly able to maintain a good ammo count during a
fight hopefully makes the Makarov feel more like a value purchase for
what I think should be its strength. Staying power and the ability to be
aggressive with ammo expenditure. Particularly against larger numbers,
which traitors are almost always expected to go up against. If those
opponents have lasers, the Makarov just always gets outgunned by an
absurd amount (lasers on their own have like 16 shots, so you can do the
math if there are even two people with a laser each).

Simply put; let's not make make tots feel like a dumbass for not just
getting a laser themselves or buying a ebow to maintain firepower over
long fights, especially with rechargers usually being in pretty nicely
secluded locations for them to access.

## Changelog

🆑 NecromancerAnne (code), SmArtKar (sprites)
balance: Makarovs and Toy Pistols come in weapon cases. Complete with
spare ammo.
balance: Basic ammo for either weapon comes in weapon cases of three
extra magazines at an affordable price.
balance: Donksoft Toy Pistols from the uplink are much stronger than
their standard counterparts, but now priced at 6 TC.
balance: Makarovs and Toy pistols have a magazine capacity of 12 rounds.
balance: Gun/Ammo cases from the traitor uplink can be destroyed by
activating the disposal bomb. Press Alt-Right-Click on the case to start
the timer.
/🆑

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2024-12-22 02:39:59 +01:00
MrMelbertandGitHub 584de91709 Adds a chemical to the chem kit (#88393)
## About The Pull Request

Adds Syndol to the chemical kit

- It deals minor liver damage
- It is a very addictive hallucinogen
- When a security officer is exposed, they will hallucinate other mobs
as Nuke Ops
- When an assistant or clown is exposed, they will hallucinate other
mobs as Security Officers
- When exposed to less than ten units, these unique hallucinations will
only apply to all mobs *outside* of the view of the victim.
- When exposed to more than ten units (an overdose), it applies to *all*
mobs, not just those in view.
- All other members of the crew will just get normal hallucinations.
- Exposure is completely silent (until the liver damage kicks in, which
takes a while)


![image](https://github.com/user-attachments/assets/7c47b735-dec7-464b-849c-cf5a8fff10ff)

## Why It's Good For The Game

Someone dropped the idea in Discord and I thought it was pretty funny.
It also gives syndies a way to temporarily disorient a security officer
a la the old chaos holoparasite (oh god who was I chasing everyone is a
syndie?).

## Changelog

🆑 Melbert
add: Adds Syndol to the chemical kit, an addictive hallucinogen that
applies bonus effects when security officers, assistants, or clowns are
exposed.
/🆑
2024-12-14 15:20:59 -05:00
necromanceranneandGitHub e9471b00b0 Adds the NT BR-38 Battle Rifle. A sci-fi hybrid gun, but better than the last attempt. Only SOMETIMES fails at existence. (#88095)
## About The Pull Request

A repeat of the first half of
https://github.com/tgstation/tgstation/pull/86853

The NT BR-38 Battle Rifle is a semi-automatic
railgun...marksman...carbine...rifle...thingy that uses .38 ammunition
and is magazine fed from a 15 round magazine. It comes with a scope, and
is bulky.


![image](https://github.com/user-attachments/assets/456aba07-ba0a-4ad3-993c-7fc2bc1395d6)

Sprites by OrcaCora.

### Some of its features

The gun shoots at a higher than normal velocity for .38. This means it
hits harder (30 damage compared to the standard 25), and flies faster
through the air.

The gun, however, suffers from degradation as it is used. It has a 10
shot buffer before suffering degradation. After the 10 shot buffer, it
has a 10% chance each shot to increase in degradation stage. From stage
1 to stage 5 (the maximum stage), it begins to lose fire rate and
projectile flight speed.

To recalibrate the gun, you can do one of two things; 
A) Use a multitool on the gun. This completely resets the gun, but its
pretty slow.
B) Insert it into a weapon recharger to recharge its buffer and reduce
its degradation stages.

### Some of its downsides

The weapon is EMP vulnerable. If it gets EMP'd, it immediately degrades
and loses any buffer it has. While EMP'd, there is a 75% chance it
doesn't fire when you pull the trigger. This is also true if the gun has
hit maximum degradation. Keep your guns in good shape.

It can be emagged. While emagged, the gun has increased damage (40 for
standard ammunition), but once it hits maximum degradation, it
immediately begins to catastrophically fail. It also degrades
significantly faster while emagged. There is no way to reverse this
effect, and the explosion is extremely lethal.

### Where can I find it? What about ammo?

You can purchase the gun from cargo at a significant premium, as well as
some additional magazines of some basic ammo types.

There is exactly one of these in the armory, and you can print more
magazines from the security protolathe. As research progresses, you can
print different, specialized ammunition for the rifle. (and also the
detective .38 revolver, obviously)

### New .38 ammunition types

True Strike bounces accurately between targets, but deals significantly
less damage than other ammo types (15 base, 18 in this rifle).

It is printed once the station gets Exotic Ammo.

## Why It's Good For The Game

This is a followup on my previous PR, where I tested this weapon and
gathered a whole bunch of feedback on it. Most people quite liked it.
but had some concerns that I feel this addresses.

Much of the justifications given there apply here. Obviously ignoring
anything to do with the combat shotgun removal.

Some stuff obviously has not come back from the original test. Notably,
the TRAC changes were probably a little too powerful. As much as I liked
a default entirely nonlethal ammunition type, TRAC itself is better left
as a late research goal.

In addition, I moved the explosion part to an emag effect. It's funny,
and lends itself to the original intention of the weapon; a callback to
the WT-550 incident. But it isn't a standard part of the guns mechanics.
2024-12-13 19:46:24 +00:00
SmArtKarandGitHub 6d3f85a4bb [NO GBP] Fixes toolboxes automatically using the first item, allows placing them on/into tables/racks/closets/crates (#88459)
## About The Pull Request

Closes #88446	
I swear to god I should stop listening to webedit suggestions

## Changelog
🆑
fix: Toolboxes can now be placed onto tables/into crates
fix: Fixed toolboxes automatically using the first item in them
/🆑
2024-12-12 00:04:40 +01:00