393 Commits

Author SHA1 Message Date
LT3 6c5fa75ecd One-Way Materials Market (#5137)
## About The Pull Request

Re-enables purchase of the GMM, however the GMM can only be used to
purchase materials not sell them.

## Why It's Good For The Game

Let the station buy materials if they're desperate/lowpop. If people
were selling insane amounts of material inflating the budget, just
remove the ability to sell. Don't remove the entire machine.

## Changelog

🆑 LT3
add: Galactic materials market can be used by cargo for purchasing
materials only
/🆑
2026-01-24 14:37:51 -08:00
nevimer 6e9f2ccfc0 Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts:
#	.github/workflows/compile_all_maps.yml
#	.github/workflows/run_integration_tests.yml
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/_onclick/hud/credits.dm
#	code/controllers/subsystem/networks/id_access.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/game/machinery/doors/door.dm
#	code/game/objects/structures/crates_lockers/closets/secure/medical.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/modules/antagonists/malf_ai/malf_ai_modules.dm
#	code/modules/jobs/job_types/_job.dm
#	code/modules/loadout/categories/accessories.dm
#	code/modules/loadout/loadout_helpers.dm
#	code/modules/loadout/loadout_items.dm
#	code/modules/loadout/loadout_preference.dm
#	code/modules/mob/living/silicon/robot/robot_defense.dm
#	code/modules/mod/mod_theme.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/reagents/reagent_containers/cups/drinks.dm
#	code/modules/shuttle/mobile_port/variants/supply.dm
#	code/modules/surgery/organs/internal/eyes/_eyes.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png
#	icons/hud/screen_full.dmi
2025-12-15 18:12:29 -05:00
Hatterhat 3fd1a2008f Laser Gun Update: Second Pass to Fix Lore and Tweak Grammar (#94438)
## About The Pull Request
Touches up laser guns' lore a bit and makes them actually add an
examine_lore component for every non-base laser gun, because the
component wasn't being added due to a return for every non-basic laser
type.

Adjusts the laser guns so they're all Type [number]/[variant], so the
previous `Type 5C laser pistol` is now the `Type 5/C laser pistol`, the
`Type 5R laser carbine` is now the `Type 5/R laser carbine`, the `Type
5A laser assault rifle` is now the `Type 5/A laser assault rifle`, as to
denote a more obvious separation between the base iteration/version and
the variant appending.

## Why It's Good For The Game

The lore wasn't being added because of the component add being beyond
the slapcrafting component check. The clear slash between base version
and variant looks a little nicer to me. Lore grammar tweaks feel like
they read a little better to me? The latter two are subjective.

## Changelog

🆑
fix: Non-base laser guns now attach their lore properly.
spellcheck: Adjusted the names on the laser guns to have a slash between
the numeric type/version and the variant... abbreviation? Letter? One of
the two.
spellcheck: Fixed some typos and adjusted the now-visible lore on the
laser guns to read a little nicer, theoretically. Whether the grammar
tweaks improved anything or not is subjective.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-12-13 17:50:43 +11:00
Jacquerel 9fb7c20daa Cargo can buy more presents at Christmas time (#94251)
## About The Pull Request

Last Christmas we had and resolved this bug #88595 where via the
mechanic of buying random trash, Cargo could roll on the roulette to try
and get random Christmas presents and open them for random items.
This was removed because it's not supposed to work that way and was a
way of exploiting Christmas cheer for personal gain, which is grinchsome
behaviour.

That said, being able to order Christmas presents is also kind of
soulful, so this PR brings that mechanic back but on purpose this time.

During the Christmas season _only_, Cargo can spend 3000 credits of
their budget to order a "Surplus Christmas Gifts" crate which contains
4-6 presents _with pre-assigned recipients_.
In a similar system to addressed mail, only the person written on the
gift tag can open the present, so unless you're sufficiently scroogeous
to collect a huge pile of presents on the cargo room floor in hopes of
getting a couple with your name on (in my testing these contained raw
unbaked croissant dough, and a piece of paper from a space ruin) you
should mostly be using this to deliver generalised holiday cheer to the
crew rather than just yourself.



This PR also contains (maybe as more lines than the actual feature) a
refactor changing a bunch of boolean vars on `/datum/supply_pack` into
bitflags, because I needed to add one more and it seemed silly to have
so many booleans.

## Why It's Good For The Game

It allows those with the yuletide spirit to deliver some christmas cheer
to their fellow man, isn't that the season's reason?

## Changelog

🆑
add: When the game considers it to be Christmas, Cargo can order
additional Christmas gifts pre-addressed to random crew members.
/🆑
2025-12-12 02:10:31 +11:00
MrMelbert 72f76caea0 Spy loot tweaks (#94189)
## About The Pull Request

1. Ammo will no longer show as a loot option until a weapon that uses
said ammo has been claimed. Some ammo, particularly shotgun ammo has
unique status bypassing this, since you could reasonably acquire a
shotgun from the armory, a bartender, or cargo. There is also a 10%
chance that some ammo will show up anyways, to keep people on their
toes.

2. If you claim another weapon of an already claimed ammo type, the ammo
in the pool will be refreshed, meaning obtainable once again.

3. Unclaimed items have a 40% chance of being re-added to the loot pool.
This is on top of the 80% chance for an item to not be removed from the
pool when selecting loot.

4. When hard bounties empty out their loot pool, they will instead draw
from the medium loot pool. Likewise medium bounties will draw from the
easy pool when they run out.

5. Modified the antag info panel text slightly. 

6. Made more appropriate use of `SStraitor.uplink_items`, and checks for
abstract items more thoroughly.

7. Some weapons no longer come in gun cases for Spies

## Why It's Good For The Game

1. Initially the thought was Spies would just have dud bounties on
occasion. They could take the time to lie low or work on their plans
rather than prowl for loot. Alternatively, an aggressive spy would go
after them *just in case* they got the correct gun, or a passive spy
would go after them for the ability to later bribe someone carrying the
correct gun.

However, in practice it seems people largely just don't like having dud
bounties, as it hurts the pacing. Someone who is on a roll doesn't want
to sit there and do nothing.

Ghommie tried to implement this earlier but I disagreed with the
implementation, so here we are.

2. It would be pretty unappealing to go after a gun after realizing all
the gun's ammo has been looted already.

3. I noticed in testing pools would drain themselves pretty fast. This
serves as a bit of a stop-gap, and prevents items that rolled on
particularly difficult targets from being lost forever. Now you can roll
the dice and hope that it shows up again.

4. Might as well reward people with non-junk items if they manage to
drain a tier's loot pool, especially since the top tier pool is pretty
small.

5. People were oft confused about the wording of the text, thinking
they'd get banned.

6. No reason to use the indexed list. 

7. Having a gun case thrust into your hands is not very inconspicuous 

## Changelog

🆑 Melbert
balance: Ammo will no longer show up in the Spy loot pool until a weapon
that uses said ammo has been claimed. Some ammo for weapons easily
obtainable on station (shotgun shot) are not limited by this
restriction. Also, there's a rare chance ammo will show up anyways just
to keep people on their toes.
balance: Claiming a weapon will refresh ammo in the loot pool that has
already been claimed or cycled out.
balance: Bounty rewards that no Spy claimed have a chance to re-enter
the loot pool after a bounty refresh, rather than being lost for the
remainder of the round.
balance: When higher tier Spy bounties empty their loot pools, they will
attempt to draw from lower tier pools before defaulting to telecrystals.
balance: Spies no longer are rewarded with gun cases for bounties;
rather just the gun itself
spellcheck: Modified the Spy antag info text
/🆑
2025-12-06 13:42:32 +11:00
Roxy 9f7dc7c970 [MDB IGNORE] Make /obj/item/stamp abstract, create proper granted stamp subtype (#94139)
## About The Pull Request

There is technically an `/obj/item/stamp/granted` in that one traitor
objective refers to it and tries to override a proc on it thus making it
a valid type, but not really. This changes the base `/obj/item/stamp`
from being the granted stamp to being an abstract type, and creates a
proper subtype for the granted stamp.

## Why It's Good For The Game

Base types being concrete outside of scenarios where its intuitive are
very annoying

## Changelog
🆑
code: makes /obj/item/stamp abstract, creates /obj/item/stamp/granted
/🆑
2025-12-02 16:53:07 -07:00
nevimer baf3837ae8 Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
2025-11-29 22:49:21 -05:00
Cursor f910a5a408 Re-enables Soviet crate (#4922)
## About The Pull Request

Skyrat revert again. I think people should be allowed to LARP as
Russians if they want.
## Why It's Good For The Game

Ditto.

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

</details>

## Changelog
🆑
add: Soviet Surplus has been re-enabled.
/🆑
2025-11-26 11:30:02 -08:00
necromanceranne d76d2f5438 Laser Gun Update: Deep Lore, Gun Variety, Pew Pew (#93520)
## About The Pull Request

Updates the laser gun into four proper subtypes: Standard, Pistol, Rifle
and Carbine.

<img width="229" height="210" alt="image"
src="https://github.com/user-attachments/assets/12c03076-8ebf-4d87-8c98-6a8cce6821db"
/>

Current sprites are pending a palette change.

**Standard:** Functions as you would expect. Same as ever.

**Pistol**: Lower charge, 20 force, normal sized, recharges faster.

**Carbine**: 15 force, 26 mag, two round burst. Projectiles flight
slightly faster. Cannot dual-wield.

**Rifle**: 20 force. 40 mag. Two round burst. EMP resistant (not
immune). Projectiles fly slightly faster. Cannot dual-wield (not that
you need to).

All but the rifle can be sourced from cargo. You can also buy the sovl
version of the laser gun if you're especially nostalgic.

### Armory Changes

The Armory now can potentially spawn either pistols, carbines or
standard. The weighting leans closer to spawning carbines and standard
as opposed to pistols.

### Lore Dump

The laser line of weapons now all have lore. That rich, deep lore that
every game needs and is totally not important at all to the meat and
potatoes of the game. I'm paid by the hour ($0.00)

### Code Tidying

Lasers are old and a total mess code-wise so we've tidied up while we're
here.

## Why It's Good For The Game

Variety is the spice of life and also some of these weapons could have
used a face lift. Especially the laser carbine. Both functionaltiy wise
and appearance wise.

A bit of randomness in the armory means some rounds might have unique
outcomes compared to others. Sometimes, items in cargo don't see
particularly much use, so peppering in a few random potential deviations
can maybe nudge people to utilize variant gear on future rounds.

I'm obsessed with writing too much information. I blame Hatterhat.

## Changelog
🆑
add: Three variants of the laser gun; Carbine (replacing the existing
one), Pistol and Rifle! Find it (possibly) in your armory today!
balance: The armory laser guns might be different variants of the laser
gun, rather than always being the standard. The standard is the same as
ever, even if it looks different.
add: If you care, the sovl version is available as a goodie. And in the
hands of pirates...
spellcheck: Lore! LORE FOR LASER GUNS! LOOOORE! Examine laser guns
closely and you might learn more about them.
balance: The new set of laser guns come with brand new sprites.
/🆑

---------

Co-authored-by: StaringGasMask <62149527+Exester509@users.noreply.github.com>
2025-11-20 22:21:16 -05:00
Roxy e28e9fbdba Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 2025-10-23 17:38:23 -04:00
MGOOOOOO d1962eec26 The Inversenning : Chiral Inversing Buffer (#93376)
## About The Pull Request

This PR adds a new buffer (and accompanying Lavaland geyser) to the
game: Chiral Inversing Buffer! This unique buffer allows you to
instantly transmute a hidden impure or inverse reagent into its original
form, no hassle with the HPLC. It can be acquired in three ways, two of
which involve Cargo. You can purchase a crate containing one 30u bottle
of the buffer for 600 credits, or for free through Medbay's cargo
console. You can also scour Lavaland and uncover a geyser that offers
unlimited buffer.

The buffer itself checks if any eligible inverses or impurities are
present within the holder. If there is none, the buffer will fizzle out
and be effectively wasted. If there is an eligible reagent, it converts
the reagent into the Inverse at a 10-to-1 ratio with the buffer. This
means that buying a bottle from cargo will net you at max, 300 units of
instant inversing. Do note that this buffer has the best results when
added after a reaction, not during or before.



https://github.com/user-attachments/assets/5f04097d-6baa-4cfd-bf0d-77f175d37acb



## Why It's Good For The Game

This was made from the suggestions of my previous PR at #93316. The main
issue that this PR targets is the lack of speedy access to "true"
inverse reagents. The current system hides the name of most inverses on
creation and only has the HPLC to reliably convert hidden inverses into
their true counterpart. This can cause issues with some inverses due to
them still retaining some properties of their base reagent. While that
system cannot be removed as of now, this PR serves to add another
alternative for Chemists to pursue if they need to purify their inverse
outputs.

<img width="135" height="136" alt="chiralgeyser"
src="https://github.com/user-attachments/assets/1cb336ac-966e-4c4b-8cb2-68616c410f26"
/>


## Changelog
🆑
add: Chiral Inversing Buffer : A new way to convert your hidden
impurities and inverses into their true form! Requires a purchase from
Cargo or a trip to Lavaland to acquire.
balance: A new geyser has been added to Lavaland that outputs Chiral
Inversing Buffer. Geyser weights have been adjusted to accommodate this
addition.
/🆑
2025-10-22 13:39:13 -04:00
tonyhawq e5d40d3cfe Adds a golf cart to cargo (#92688) 2025-10-21 16:07:20 -04:00
SyncIt21 749643cddb Reworks cargo market elasticity (#93235)
## About The Pull Request
What it says on the tin. Cargo now has new math for market elasticity,
each parameter and what it does is explained below

**1. Refactor**
1. **k_elasticity**: This is the elasticity as before applied on all
exports except now this is a floating-point value that swings from
`0->1` instead of 10e-10 like is the current case. This in laymen terms
is the percentile of an items actual cost that is sold on cargo [0 means
you get no credits, 0.5 means you get 50% of the items cost, 1 means you
get 100% of the items cost]. Whenever an item is sold on cargo this
value decreases by an amount that is determined by the next variable

2. **k_hit_percentile(default 5%)**: This is the value by which an
export `k_elasticity` decreases whenever an export is successful for
every unit of an item sold. The real formulae by which the exports
elasticity decreases is dependent on the total amount sold and is as
follows
<pre>k_elasticity -= amount sold (1 for most cases except stacks) *
k_hit_percentile</pre>
So subsequent exports yield lesser profits cause the elasticity
decreases. Now the rate at which the elasticity recovers is as follows

3. **k_recovery_time(default 10 minutes)**: This is the time (minimum
unit should be seconds) it takes for the elasticity to rebound back to
100% after it has reached full 0 but recovery process starts immediately
if it decreases at any point. So if elasticity becomes say 50% it means
it would take 5 minutes to reach 100% again

**2. Some Balance changes**
1. Profits earned from exporting gas is linear per mole sold so the more
gas you put in the more profits you get HOWEVER the max number of
credits you can make per canister is 15000 cr
2. Selling fish yields higher prices because it's no longer subject to
the old elasticity formula
3. Selling 50 sheets of anything will decrease future sale price by 10%
and will take 8 minutes to rebound back to 100% if it reaches 0

**3. Improvements:**
- `SSProcessing` subsystem no longer processes more than 180+ export
datums from round start itself but now starts out empty. It instead
processes only those exports whose elasticity has been impacted and
later cancels it after elasticity has reached 100% so performance of
this subsystem has been drastically improved
- export datums now respect `abstract_type` meaning they won't be
created and can be used as a skeleton body for subtypes. So datums like
`datum/material` & `datum/material/market` are not created anymore but
only their subtypes are so we save processing power & memory
 - Shaved of a lot of dead exports that went unused

## Changelog
🆑
balance: cargo exports now have different prices with applied elasticity
code: Improved performance of export code
qol: stock blocks can be recycled for materials & show up as stock
blocks in order console sold items
refactor: refactored cargo export code in whole. Report bugs on GitHub
/🆑

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2025-10-18 04:36:09 -04:00
Roxy d14e538393 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 2025-10-15 19:34:41 -04:00
Ghom aa4cf2b136 The nullrod refactor (the carp-sie plushie is now actually a plushie) (#93311) 2025-10-10 13:42:33 +11:00
xPokee 8aa39b75f0 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-10-04 05:28:09 -04:00
Krysonism def17fd90a Rare Earths! Advanced soils for botany. (#92513)
## About The Pull Request

This PR adds 4 new types of soil and a holder item; the soil sack, to
contain and transport said soils.

<img width="496" height="378" alt="bild"
src="https://github.com/user-attachments/assets/57f42a9c-c731-4195-91df-b4456ec45e7b"
/>

Two of the new soils + the regular old soil are available in the premium
section of the nutrimax.

All 5 soil types are available from cargo. 

It also adds two new plant traits; soil lover and semiaquatic, that
allows coders to confer maluses to plants growing in trays or soil
respectively.

Potatoes, sweet potatoes, carrots, parsnips, cahn'roots, white and red
beets currently have soil lover, reducing their produced yield by 30%
and their potency randomly between 20-80% if grown hydroponically.

Rice has semiaquatic which increases the amount of weeds gained by 50%
if grown in soil rather than hydroponically.

## Advanced soil types

### Vermaculite
  #### Stats
    Max Nutrients: 20u
    Max Water: 150u 
  
  #### Special Effects
Multigraft: Up to 3 grafts can be cut from a plant planted in
vermaculite.
Graft Medium: Graft cuttiongs can be directly placed into vermaculite to
create a new plant vegetatively.

### Hydrogel Beads
  #### Stats
    Max Nutrients: 15u
    Max Water: 300u
  
  #### Special Effects
Hydroponic + Soil: Both water loving and soil loving plants can grow
without maluses.
    Super Water: Water consumption rate is decreased by 50%

### Korta Coir
  #### Stats
    Max Nutrients: 20u
    Max Water: 100u
  
  #### Special Effects
Fast Mushrooms: Mushrooms mature(and age) 40% faster if planted in this
soil.

### Worm Castings 
  #### Stats
    Max Nutrients = 35u
    Max Water = 200u
  
  #### Special Effects
Slow Release: If the nutrients run out, 1u nitrogen will be
automatically added to the nutient pool.
Worm Habitat: Composting veggies in this soil has a chance to produce an
extra slimy worm.

### Soil Sacks

Use them on the floor to place a soil at that location. 

You can reverse this process by right clicking a soil with a shovel.

The sacks are huge items that deals stamina damage, but have slowdown
when carried.

They can be wielded to remove slowdown, double the damage output and
gain 25% block chance.

They have unique normal and wielded inhands for each sack type.

#### Price List

**Soil**
  Nutrimax: 50 cr
  Cargo: 400 cr /  5 sacks

**Vermaculite**
  Nutrimax: 100 cr
  Cargo: 400 cr / 3 sacks

**Hydrogel**
  Nutrimax: 100 cr
  Cargo: 400 cr / 3 sacks

**Coir**
  Nutrimax: N/A
  Cargo: 600 cr / 3 sacks

**Worm Castings**
  Nutrimax: N/A
  Cargo: 800 cr / 3 sacks

#### Misc Soil Changes

Soil now have a new armour type and are generally much harder to destroy
by shooting or bashing them.

Fixed a bug where weeds would instantly reduce yield to 3 instead of
lowering it by 1-2 per cycle.

## Why It's Good For The Game

I have long been a fan of using soils in botany, they are the cheapest
and easiest way to make new trays and enable many interesting
strategies.

The default soil is fine for what is but it kinda sucks, not only having
low stats but also missing autogrow, a feature botanist have grown
completely addicted and dependent on.

When self sustaining trays were removed and autogrow added, it was
intended as a way to keep a couple of plants alive while you ran out to
do errands or grab a drink.

However, the feature has devolved into basically a shift start self
sustaining for all your trays and standard practice is using it on every
single tray that currently is not trying to mutate.

This has resulted in certain core botany mechanics like water and pests
being made totally irrelevant, shrinking design space a lot.

Rather than just reaching for the stick, I thought it would be fun to
instead offer them a carrot in the form of an expanded toolset of soils
with unique effects that cannot be replicated by trays.

These new soils offer niche benefits that enable advanced botany
gameplay and provides a framwork for deepening plant / tray interactions
in the furture.

## Changelog

🆑
add: Added 4 new types of soil
add: Added soils sacks to the nutrimax
add: Added soil sack crates to cargo.
balance: Soil now has higher armor values.
balance: Rice now gets more weeds if grown in soil.
balance: Carrots, potatoes, beets and their mutations now get reduced
yield and potency if grown hydroponically.
fix: Weed overgrowth no longer instantly sets yield to 3.
/🆑
2025-10-04 05:01:26 +02:00
xPokee b308ee9d78 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-09-24 10:13:01 -04:00
Tim 44b35180fe Add cooking oil, nutraslop, and beer keg to cargo supply packs (#93083)
## About The Pull Request
This adds the cooking oil vat, nutraslop serving tray, and beer keg as
purchasable items from cargo. I also removed the anchored state from the
cooking oil and nutraslop so that they can be moved.

## Why It's Good For The Game
These objects had no method to be created in game. Allowing them to be
purchased via cargo should lead to more usage. I'd honestly love to see
the crew's reaction to a mean chef who decides to feed the entire crew
nothing but nutraslop for the shift.

## Changelog
🆑
add: Add cooking oil, nutraslop, and beer keg to cargo supply packs.
Nutraslop serving trays and cooking oil vats can now be pushed and
moved.
/🆑
2025-09-23 21:42:22 +02:00
Hatterhat c0f8e7bb5c Multiload Second Pass (ft. Speedloaders Will Be Real In 2025) (#92854)
## About The Pull Request
Gets, yet again, more granular with multiload capabilities, by
introducing `AMMO_BOX_MULTILOAD_OUT_LOADED`; ammo boxes flagged with
this can speed-load ammo boxes that are currently inside another gun,
like revolver cylinders or internal magazines.

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

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

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

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

## Why It's Good For The Game

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

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

## Changelog

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

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-09-20 08:10:35 +10:00
xPokee 939f2fc9ac Merge branch 'master' of https://github.com/tgstation/tgstation into xpokee-test-upstream-sync 2025-09-10 14:12:16 -04:00
Tim 37a34b4cd3 The Grinch Who Patched Christmas: Preventing Trashy Presents (#92734)
## About The Pull Request
- Fixes #88595

Cargo's gift giving was so bad it landed them on Santa's _very_ naughty
list. The ~cargo techs~ elves in charge were handing out game breaking
equipment.

This closes a loophole that allowed players to spam dumpsters during the
Christmas event for gifts that could contain admin tools and other debug
loot. I've removed Christmas presents (and holiday items) from the
dumpster spawns to put a stop to this.

## Why It's Good For The Game
![The Grinch Vintage GIF by The Good
Films](https://github.com/user-attachments/assets/dcc1e49b-ba9f-479c-a793-f743baf5e9f1)

Players were using the cargo system to purchase and dumpster dive
endlessly for OP shit. During the Christmas event, these dumpsters had a
high chance of spawning the special `/anything` gifts, which can contain
literally any item in the game, including admin tools and debug
equipment. This exploit bypassed the intended rarity of these items,
which were meant to be one-time, limited gifts from Santa's bag or the
Christmas tree.

## Changelog
🆑
fix: Santa has put cargo in his very naughty list for spam producing his
presents by dumpster diving. This fixes Christmas presents (and other
holiday items) from spawning inside dumpsters.
/🆑
2025-09-09 10:23:40 -07:00
nevimer b348b617a3 Merge branch 'master' of https://github.com/tgstation/tgstation into pupstream-2025-09-07
# Conflicts:
#	README.md
#	code/__DEFINES/admin.dm
#	code/__DEFINES/melee.dm
#	code/_globalvars/traits/_traits.dm
#	code/controllers/subsystem/economy.dm
#	code/datums/components/crafting/crafting.dm
#	code/datums/elements/crusher_loot.dm
#	code/modules/antagonists/pirate/pirate_shuttle_equipment.dm
#	code/modules/clothing/suits/_suits.dm
#	code/modules/escape_menu/leave_body.dm
#	code/modules/jobs/job_types/_job.dm
#	code/modules/mining/equipment/mineral_scanner.dm
#	code/modules/mob/living/living.dm
#	code/modules/plumbing/plumbers/pill_press.dm
#	tgui/packages/tgui/interfaces/Vending.tsx
2025-09-07 00:37:52 -04:00
tonyhawq 64af7e953d Adds back mounted wind turbines (#92516)
## About The Pull Request
Adds portable wind turbines that can be put in your back slot or
anchored to the ground. They accept a cell-powered item and charge it
while you walk, or when space wind passes over them. Can be purchased
for 400 credits or crafted with 3 kitchen knives, plastic, and servos.
Requires a capacitor to charge things, and higher tiers charge faster,
faster walkspeed also charges faster.

<img width="592" height="644" alt="im222age"
src="https://github.com/user-attachments/assets/e9997536-5ee0-4417-a31c-cb58666d4d07"
/>


https://github.com/user-attachments/assets/1cf7fce5-d385-4e3e-be97-fb15e253c308

## Why It's Good For The Game
Sometimes you don't have a cell charger. And you need to charge
something. Now you can charge something by running laps around the
station.
During a blob, rechargers are brought to the front lines to charge
energy guns and such but what if the blob turns off the power? And what
are bar-rp'ers to do? Kill two birds with one stone by having them run
laps instead of sitting around doing nothing.
Also its funny.

## Changelog

🆑
add: Added a portable wind turbine which can charge things when you walk
around
add: Added a signal that procs when an object resists space wind (from
being anchored / pulled)
sound: added woosh.ogg as a low "wooshing" noise
image: added a wind turbine sprite
/🆑

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
2025-08-31 21:13:11 +00:00
panvxv 75ed68aaac Laser Carbine and Disabler SMG as Goodies in Cargo and energy/laser cargo crates rebalance (#92656)
## About The Pull Request
Adds Laser Carbine and Disabler SMG Single-Packs.
Laser Carbine Single-Pack costing 800 credits and Disabler SMG costing
600 credits.

Moved Laser Guns crate from security category to armory category. 
Added 3rd Energy Gun to Energy Guns crate. 

Added 3rd BR gun to BR crate and 2 more magazines making it 6 (2 for
each gun).

This should bring gun crates to nice standardization of 3 guns in crate.
## Why It's Good For The Game
Standardization improves logistic and makes it easier for brain.
(Standardization of guns inside of crates)
Laser guns being in armory category together with rest of the gun crates
makes looking for guns to order less confusing.
More goodies to choose from, able to buy non lethal SMG I think is
needed too. Especially with all lethal option in Goodies.
## Changelog
🆑
add: Added Disabler SMG Single-Pack
add: Added Laser Carbine Sigle-Pack
balance: Moved Laser Guns crate from security to armory category in
cargo
balance: Increased amount of Energy Guns to 3 in Energy Guns crate
balance: Increased amount of NT BR to 3 and magazines to 6 in NT BR
crate
/🆑
2025-08-20 19:52:31 +00:00
Rhials 906ac46477 Makes water coolers more mechanically interesting, fills them up with fruit punch sometimes (#92480)
## About The Pull Request

This overhauls Water Coolers (now referred to as "liquid coolers"
internally and in most external cases). They'll feel less like a useless
prop now.

(sprites may look off because of the gif software I use)

**Important Thing # 1:** The reagents are now handled by cooler jugs.
You can pop the jug off of a cooler, fill it with whatever the hell you
want, and put it back on. Fill it with drugs. Fill it with acid. I don't
care, I'm not your mom.

<img width="41" height="56" alt="image"
src="https://github.com/user-attachments/assets/4c618cab-99b4-4a72-ae7b-7b900d7f5eaf"
/>

The sprite now uses an overlay to change colors based on the mix. Water,
when present in the cooler, is magically turned blue to keep that
classic water cooler look.

<img width="280" height="333" alt="image"
src="https://github.com/user-attachments/assets/8a6a905c-bef4-4f5f-9393-5ce5dcca0620"
/>

The jugs are 200 reagents, and are mechanically comparable to the jerry
can. No 200 unit acid splashes or anything.

Y'know, unless you put the jug in a cooler and knock it over...

![JUST COVER ME IN ACID WHY
DONTCHA](https://github.com/user-attachments/assets/7536a13c-1cb4-4af1-bfcc-25842215b393)

**Important Thing # 2:** They can be anchored, tipped, and crafted.

Tipping them requires the cooler be unanchored. If you want to use one
of these tactically, unwrench it beforehand.

![the
tipperrrr](https://github.com/user-attachments/assets/6b2cef28-bfb6-457a-b191-d91ec4fd9028)

**Important Thing # 3:** They can be bought from cargo now!

<img width="501" height="605" alt="image"
src="https://github.com/user-attachments/assets/6f261aab-f11a-4126-98ce-d9278d01d0a0"
/>

**Important Thing # 4**

Fruit punch.

<img width="175" height="127" alt="image"
src="https://github.com/user-attachments/assets/ac81e48c-47ff-461f-85f8-3e77a6a6ca55"
/>

Fruit punch is a drink with impressive (slightly faster than omnizine)
healing qualities. Unfortunately, it's so unbearably sweet that it can
only be safely consumed near a liquid cooler! Drinking this stuff is a
commitment, since if you stray from the cooler while digesting it, you
will be hurt and disoriented. You should avoid drinking too much at
once, in case an emergency comes up!

For this reason, we encourage drinkers to _take small sips from your
paper cooler cup, hang around the cooler, and maybe chat with other
people who are healing too._

(Mapload) water coolers have a 1% chance to start full of punch instead
of water. Maybe you'll get lucky and start with a healing station in
your department, or maybe a hopeless space explorer will find one in a
ruin and be saved.

You can also buy one from cargo but it's priceyyyyy. It's also the only
source of punch.
## Why It's Good For The Game

Realizing how little functionality water coolers have was super
disappointing. They do hardly anything but take up space and look
pretty. And now, they're getting mapped into all of the new stations! We
can't have a bunch of inert, sandbox-shunning furniture just sitting
around, the other codebases would laugh at us!

Now, coolers are more congruent with how most people would expect one to
behave in the game environment. Even minor changes like making them
unanchorable or refillable helps them fit in with most players'
intuitive understanding of how atoms typically behave.

The reagent storage change gives coolers their own unique niche in the
sandbox. Tipping them over can also give you an edge in escaping
someone, so even the untouched roundstart coolers can serve a purpose to
savvy players.

For the punch cooler, I figured "why not make a reagent that rewards
players for treating the water cooler like a water cooler?" The punch
encourages players to stand around it, slowly sip from the cooler, and
chat with their co-workers. Just like people do in offices! It's
thematically sound!
## Changelog
🆑 Rhials
add: You may now remove water cooler jugs and put whatever you want in
them. Go nuts.
add: Water coolers are now craftable (with plastic), orderable from
cargo, and tippable when unanchored.
add: Rarely, water coolers will spawn full of healing fruit punch
instead of water! Be careful not to stray from the cooler while
digesting this stuff.
add: You can also just buy the punch cooler from cargo if you feel like
it.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
# Conflicts:
#	code/modules/reagents/reagent_dispenser.dm
2025-08-19 22:42:52 -04:00
Time-Green 147df9ec59 Organ Growing Kit | Coroner Cytology Cargo Content (1/2) (#92108)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>

# Conflicts:
#	code/modules/clothing/head/tinfoilhat.dm
2025-08-19 22:29:26 -04:00
Rhials 4f6e27ca92 Makes water coolers more mechanically interesting, fills them up with fruit punch sometimes (#92480)
## About The Pull Request

This overhauls Water Coolers (now referred to as "liquid coolers"
internally and in most external cases). They'll feel less like a useless
prop now.

(sprites may look off because of the gif software I use)

**Important Thing # 1:** The reagents are now handled by cooler jugs.
You can pop the jug off of a cooler, fill it with whatever the hell you
want, and put it back on. Fill it with drugs. Fill it with acid. I don't
care, I'm not your mom.

<img width="41" height="56" alt="image"
src="https://github.com/user-attachments/assets/4c618cab-99b4-4a72-ae7b-7b900d7f5eaf"
/>

The sprite now uses an overlay to change colors based on the mix. Water,
when present in the cooler, is magically turned blue to keep that
classic water cooler look.

<img width="280" height="333" alt="image"
src="https://github.com/user-attachments/assets/8a6a905c-bef4-4f5f-9393-5ce5dcca0620"
/>

The jugs are 200 reagents, and are mechanically comparable to the jerry
can. No 200 unit acid splashes or anything.

Y'know, unless you put the jug in a cooler and knock it over...

![JUST COVER ME IN ACID WHY
DONTCHA](https://github.com/user-attachments/assets/7536a13c-1cb4-4af1-bfcc-25842215b393)

**Important Thing # 2:** They can be anchored, tipped, and crafted.

Tipping them requires the cooler be unanchored. If you want to use one
of these tactically, unwrench it beforehand.

![the
tipperrrr](https://github.com/user-attachments/assets/6b2cef28-bfb6-457a-b191-d91ec4fd9028)

**Important Thing # 3:** They can be bought from cargo now!

<img width="501" height="605" alt="image"
src="https://github.com/user-attachments/assets/6f261aab-f11a-4126-98ce-d9278d01d0a0"
/>

**Important Thing # 4**

Fruit punch.

<img width="175" height="127" alt="image"
src="https://github.com/user-attachments/assets/ac81e48c-47ff-461f-85f8-3e77a6a6ca55"
/>

Fruit punch is a drink with impressive (slightly faster than omnizine)
healing qualities. Unfortunately, it's so unbearably sweet that it can
only be safely consumed near a liquid cooler! Drinking this stuff is a
commitment, since if you stray from the cooler while digesting it, you
will be hurt and disoriented. You should avoid drinking too much at
once, in case an emergency comes up!

For this reason, we encourage drinkers to _take small sips from your
paper cooler cup, hang around the cooler, and maybe chat with other
people who are healing too._

(Mapload) water coolers have a 1% chance to start full of punch instead
of water. Maybe you'll get lucky and start with a healing station in
your department, or maybe a hopeless space explorer will find one in a
ruin and be saved.

You can also buy one from cargo but it's priceyyyyy. It's also the only
source of punch.
## Why It's Good For The Game

Realizing how little functionality water coolers have was super
disappointing. They do hardly anything but take up space and look
pretty. And now, they're getting mapped into all of the new stations! We
can't have a bunch of inert, sandbox-shunning furniture just sitting
around, the other codebases would laugh at us!

Now, coolers are more congruent with how most people would expect one to
behave in the game environment. Even minor changes like making them
unanchorable or refillable helps them fit in with most players'
intuitive understanding of how atoms typically behave.

The reagent storage change gives coolers their own unique niche in the
sandbox. Tipping them over can also give you an edge in escaping
someone, so even the untouched roundstart coolers can serve a purpose to
savvy players.

For the punch cooler, I figured "why not make a reagent that rewards
players for treating the water cooler like a water cooler?" The punch
encourages players to stand around it, slowly sip from the cooler, and
chat with their co-workers. Just like people do in offices! It's
thematically sound!
## Changelog
🆑 Rhials
add: You may now remove water cooler jugs and put whatever you want in
them. Go nuts.
add: Water coolers are now craftable (with plastic), orderable from
cargo, and tippable when unanchored.
add: Rarely, water coolers will spawn full of healing fruit punch
instead of water! Be careful not to stray from the cooler while
digesting this stuff.
add: You can also just buy the punch cooler from cargo if you feel like
it.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-08-17 02:04:46 +00:00
Time-Green 43fc75facb Organ Growing Kit | Coroner Cytology Cargo Content (1/2) (#92108)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-08-11 18:36:50 +02:00
StaringGasMask d9a7180f3a Removes a remaining mention of the cytology plumbing RCD (#92367)
## About The Pull Request

As stated in the title. In #84235 cytology plumbers got removed, but
they still remained in the crate description.

## Why It's Good For The Game

Misleading people into thinking someting exists isn't that good
actually.

## Changelog

🆑
spellcheck: The cytology crate no longer references the non-existent
research plumbing constructor.
/🆑

(cherry picked from commit 950f446cfe)
2025-08-08 15:31:11 -04:00
StaringGasMask 950f446cfe Removes a remaining mention of the cytology plumbing RCD (#92367)
## About The Pull Request

As stated in the title. In #84235 cytology plumbers got removed, but
they still remained in the crate description.

## Why It's Good For The Game

Misleading people into thinking someting exists isn't that good
actually.

## Changelog

🆑
spellcheck: The cytology crate no longer references the non-existent
research plumbing constructor.
/🆑
2025-08-06 22:21:37 +10:00
EnterTheJake d738cbb296 Several balance changes to Combat MODsuits (#91944)
## About The Pull Request

atomization of https://github.com/tgstation/tgstation/pull/91702 with a
few changes.

- armor booster module has been removed, nukie suits are now always
fully armored and EVA proof.

- Jetpack modules have had their power drain reduced considerably.

- Cap,Hos and Sec MODs armor values have been bumped up (similar to the
old hardsuit values).

- Sec armor plates are now a cargo import.

The nf suit now comes with the Shock absorber pre-installed.

- Fixes Nukie suits not having T4 flash protection.


- All combat modsuits now have ear protection by default when the suit
active (Cap,Sec,Hos,Syndie,ERT, Death Squad, Ninja and RD.)

- Night visor module now comes preinstalled in the syndie mods and
doesn't conflict with other vision modules, nor it costs complexity,
power drain reduced, the module itself has been removed from the uplink.

- Increases the complexity on the nukie suits by 2 points.

- all traitor modules now cost 1 less TC.

## Why It's Good For The Game

**armor booster removal**

I really dislike how this module works, it's a constant hassle having to
manually swap mode depending on the pressure, it's just an annoyng
memory check that punishes you with chip damage when not respected.

The choice of wheter wearing a mod or not doesn't really apply to
nuclear operatives since they wear these things all the time and losing
half of your armor in space never really made a ton of sense to begin
with.

**Jetpack power drain buff**

The drain on this thing is absolute fucking nuts, it eats high capacity
cells in a matter of minutes, power should be a limiting factor to using
these things but it shouldn't tank your battery health this quickly.

**Cap,Sec,Hos MODs buffs**

Back when Fikou introduced MODsuits, one point he clarified in the
design doc is that "Combat stuff usually leads to uninteresting design,
it makes the suits do everything for everyone"

I don't want to diss on the dude (Love you bud), but I don't think his
point makes a ton of sense.

Combat stuff, on this case Combat mods should be built with Combat in
mind.

In all fairness he then has a paragraph addressing why the crew based
combat suits should have low armor, but it still rings hollow to me.

Armored or not, being slower than your average spessman is enough to
make you an easy target or to never be able to chase anyone on foot,
even with their armor increased I don't see players having them
constantly on all the time, the slowdown is a hard enough disincentive.

The Magnate and HoS mods specifically are unique pieces of gear, and
they are usually assigned to 2 of the most important (and prone to
assassination) roles on the station.

There's also a weird paradox with some of the modules they come equipped
with the sec MODs, the pepper spray and the projectile dampener are
built around getting hit, which is a hard sell when your armor is so low
you might as well just die straight up.

Out of respect to Fikou's will of not wanting to grant the crew the
ability to mass produce combat MODs, I removed the sec modplates from
the techweb and moved em as a cargo import.

**Uplink MODules Price reduction**

These were originally priced with progression in mind, traitor
specifically has become considerably weaker since they lost access to
avenues to generate extra TCs.

It's hard to justify getting a suit when most weapons in the uplink cost
more than half of your budget, let alone the modules.

**Shock absorption into the inf suit**

This module is pretty much already mandatory if you don't want to lose
fights in one hit, wearing a syndie modsuit makes you giga valid to
everyone on station and any traitor worth their salt will buy this
module regardless anyway; it just punishes new players who don't know
better.


**Night Visor MOD changes**

This module is completely useless, nobody ever uses it, because it
conflicts with other vision modules, and it's completely redundant since
Thermal vision already comes packed with NV on their own.

**Complexity increase on the Nukie suits + T4 flashing protection
added**

The nukie suits have honestly quite limited complexity for the role they
are supposed to fill , the T4 flash protection missing from the suit is
unintended as we made any other MODsuit have T4 protection already, Moth
Nukies rejoice.

**Ear Protection on combat MODs (oh boy)**

Listen, as of right now we have a total of 2 counters for flashbangs, a
Bowman or being deaf.

A sealed, airtight suit shouldn't offer less protection against loud
noises than a mere headset.
baddies that usually pack these suits usually have a Bowman anyway,
Nukies have it, ninja can easily teleport into a sec outpost and get it,
it's a bit more tricky for traitor since they usually have to invest in
an emag to quickly take the set or kill a security officer.

At least now if you see a baddie roll up in a suit you no longer have to
play hypotheticals wheter your flashbang will work properly or not.

I also gave the ear protection to the RD mod despite it not being a
combat MOD, because frankly it made sense, it's a bomb proof armor, It
should also protect you from loud noises.

## Changelog

🆑
removal: Armor booster module has been removed.
balance: Jetpack module energy drain has been massively reduced.
balance: armor on the Magnate,Safegaurd and sec modsuits has been
considerably increased.
balance: Sec MOD plates have been transferred from RnD to Cargo.
balance The Infiltrator MOD now comes with the shock absorption module
pre-installed.
balance: Nukie MODsuits hav a bit more complexity.
fix: Nukie MODs now have the same flash protection as the other suits
with welding protection.
balance: night visor module comes pre-installed in the syndie mods, no
longer consumes complexity,drains less power and doesn't conflict with
the other visor MODules.
removal: Nightvision MODule removed from the uplink.
balance: Combat MODs and RDs now grant earing protection when the suit
is active.
/🆑

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
2025-07-19 20:29:31 -04:00
Da Cool Boss 915c41497e Rewrites description of agent IDs, splits limited-slot and unlimited-slot IDs more cleanly (#92097) 2025-07-19 20:29:27 -04:00
EnterTheJake ec0a685866 Several balance changes to Combat MODsuits (#91944)
## About The Pull Request

atomization of https://github.com/tgstation/tgstation/pull/91702 with a
few changes.

- armor booster module has been removed, nukie suits are now always
fully armored and EVA proof.

- Jetpack modules have had their power drain reduced considerably.

- Cap,Hos and Sec MODs armor values have been bumped up (similar to the
old hardsuit values).

- Sec armor plates are now a cargo import.

The nf suit now comes with the Shock absorber pre-installed.

- Fixes Nukie suits not having T4 flash protection.


- All combat modsuits now have ear protection by default when the suit
active (Cap,Sec,Hos,Syndie,ERT, Death Squad, Ninja and RD.)

- Night visor module now comes preinstalled in the syndie mods and
doesn't conflict with other vision modules, nor it costs complexity,
power drain reduced, the module itself has been removed from the uplink.

- Increases the complexity on the nukie suits by 2 points.

- all traitor modules now cost 1 less TC.

## Why It's Good For The Game

**armor booster removal**

I really dislike how this module works, it's a constant hassle having to
manually swap mode depending on the pressure, it's just an annoyng
memory check that punishes you with chip damage when not respected.

The choice of wheter wearing a mod or not doesn't really apply to
nuclear operatives since they wear these things all the time and losing
half of your armor in space never really made a ton of sense to begin
with.

**Jetpack power drain buff**

The drain on this thing is absolute fucking nuts, it eats high capacity
cells in a matter of minutes, power should be a limiting factor to using
these things but it shouldn't tank your battery health this quickly.

**Cap,Sec,Hos MODs buffs**

Back when Fikou introduced MODsuits, one point he clarified in the
design doc is that "Combat stuff usually leads to uninteresting design,
it makes the suits do everything for everyone"

I don't want to diss on the dude (Love you bud), but I don't think his
point makes a ton of sense.

Combat stuff, on this case Combat mods should be built with Combat in
mind.

In all fairness he then has a paragraph addressing why the crew based
combat suits should have low armor, but it still rings hollow to me.

Armored or not, being slower than your average spessman is enough to
make you an easy target or to never be able to chase anyone on foot,
even with their armor increased I don't see players having them
constantly on all the time, the slowdown is a hard enough disincentive.

The Magnate and HoS mods specifically are unique pieces of gear, and
they are usually assigned to 2 of the most important (and prone to
assassination) roles on the station.

There's also a weird paradox with some of the modules they come equipped
with the sec MODs, the pepper spray and the projectile dampener are
built around getting hit, which is a hard sell when your armor is so low
you might as well just die straight up.

Out of respect to Fikou's will of not wanting to grant the crew the
ability to mass produce combat MODs, I removed the sec modplates from
the techweb and moved em as a cargo import.

**Uplink MODules Price reduction**

These were originally priced with progression in mind, traitor
specifically has become considerably weaker since they lost access to
avenues to generate extra TCs.

It's hard to justify getting a suit when most weapons in the uplink cost
more than half of your budget, let alone the modules.

**Shock absorption into the inf suit**

This module is pretty much already mandatory if you don't want to lose
fights in one hit, wearing a syndie modsuit makes you giga valid to
everyone on station and any traitor worth their salt will buy this
module regardless anyway; it just punishes new players who don't know
better.


**Night Visor MOD changes**

This module is completely useless, nobody ever uses it, because it
conflicts with other vision modules, and it's completely redundant since
Thermal vision already comes packed with NV on their own.

**Complexity increase on the Nukie suits + T4 flashing protection
added**

The nukie suits have honestly quite limited complexity for the role they
are supposed to fill , the T4 flash protection missing from the suit is
unintended as we made any other MODsuit have T4 protection already, Moth
Nukies rejoice.

**Ear Protection on combat MODs (oh boy)**

Listen, as of right now we have a total of 2 counters for flashbangs, a
Bowman or being deaf.

A sealed, airtight suit shouldn't offer less protection against loud
noises than a mere headset.
baddies that usually pack these suits usually have a Bowman anyway,
Nukies have it, ninja can easily teleport into a sec outpost and get it,
it's a bit more tricky for traitor since they usually have to invest in
an emag to quickly take the set or kill a security officer.

At least now if you see a baddie roll up in a suit you no longer have to
play hypotheticals wheter your flashbang will work properly or not.

I also gave the ear protection to the RD mod despite it not being a
combat MOD, because frankly it made sense, it's a bomb proof armor, It
should also protect you from loud noises.

## Changelog

🆑
removal: Armor booster module has been removed.
balance: Jetpack module energy drain has been massively reduced.
balance: armor on the Magnate,Safegaurd and sec modsuits has been
considerably increased.
balance: Sec MOD plates have been transferred from RnD to Cargo.
balance The Infiltrator MOD now comes with the shock absorption module
pre-installed.
balance: Nukie MODsuits hav a bit more complexity.
fix: Nukie MODs now have the same flash protection as the other suits
with welding protection.
balance: night visor module comes pre-installed in the syndie mods, no
longer consumes complexity,drains less power and doesn't conflict with
the other visor MODules.
removal: Nightvision MODule removed from the uplink.
balance: Combat MODs and RDs now grant earing protection when the suit
is active.
/🆑

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
2025-07-19 14:14:58 +10:00
Da Cool Boss af45bab672 Rewrites description of agent IDs, splits limited-slot and unlimited-slot IDs more cleanly (#92097) 2025-07-15 18:50:35 -06:00
SyncIt21 5b26bd9b9f GMM correctly adjusts ordered materials with proper feedback (#92009)
## About The Pull Request
- Fixes #82910

Cargo now adjusts the material market quantity & prices when the shuttle
is called from the order console itself instead of adjusting it after
the shuttle arrives 1 minute later. This has 2 implications
- If the market crashes 1 minute after calling the shuttle i.e when it
arrives, the ordered quantities are not affected because it retrieved
those sheets from the market at the time of calling the shuttle from the
order console
- If some orders could not be satisfied because there were not enough
materials at the time of calling the shuttle then instead of arriving
with an empty crate a detailed summary is displayed explaining which
orders could not be delivered & why, even cancelling the order if needed

**a) Order adjusted**
![Screenshot
(489)](https://github.com/user-attachments/assets/39aa8746-8848-4415-a23d-c0a7cbd433db)

**b) Order adjusted & cancelled**
![Screenshot
(491)](https://github.com/user-attachments/assets/7a800f55-47d9-4d22-b871-c67858c8329a)

**c) Order fully cancelled**
![Screenshot
(492)](https://github.com/user-attachments/assets/e3231156-aaa8-44f5-b50a-2a8bd34d9064)


## Changelog
🆑
fix: ordering materials from the GMM won't result in empty crates & will
display detailed feedback if there weren't enough sheets in the market
/🆑
2025-07-11 18:07:42 -04:00
SyncIt21 177dc73236 GMM correctly adjusts ordered materials with proper feedback (#92009)
## About The Pull Request
- Fixes #82910

Cargo now adjusts the material market quantity & prices when the shuttle
is called from the order console itself instead of adjusting it after
the shuttle arrives 1 minute later. This has 2 implications
- If the market crashes 1 minute after calling the shuttle i.e when it
arrives, the ordered quantities are not affected because it retrieved
those sheets from the market at the time of calling the shuttle from the
order console
- If some orders could not be satisfied because there were not enough
materials at the time of calling the shuttle then instead of arriving
with an empty crate a detailed summary is displayed explaining which
orders could not be delivered & why, even cancelling the order if needed

**a) Order adjusted**
![Screenshot
(489)](https://github.com/user-attachments/assets/39aa8746-8848-4415-a23d-c0a7cbd433db)

**b) Order adjusted & cancelled**
![Screenshot
(491)](https://github.com/user-attachments/assets/7a800f55-47d9-4d22-b871-c67858c8329a)

**c) Order fully cancelled**
![Screenshot
(492)](https://github.com/user-attachments/assets/e3231156-aaa8-44f5-b50a-2a8bd34d9064)


## Changelog
🆑
fix: ordering materials from the GMM won't result in empty crates & will
display detailed feedback if there weren't enough sheets in the market
/🆑
2025-07-11 15:00:35 -04:00
Sealed101 9f36be654d Kills the impostor infinite pizza and fixes the actual infinite pizza (#91689)
## About The Pull Request

Box slicing was fucking up on pizzaboxes from cargo because the pizza
from those boxes weren't actually placed in the pizzabox contents. Ghost
pizza. What's more, slicing a pizza spawned in a infinite pizzabox would
brick the funny property of said box since you would only ever get one
type of slice that's bound to not be someone's favorite. Also the way
the cargo order populates the boxes works in such a way that it would
not pre-slice the pizza, unlike pre-built pathed pizza boxes that do, in
fact, pre-slice their pizza.

So all that's fixed.

## Why It's Good For The Game

Fixes #91688
Fixes infinite pizza box getting stuck on the type that was sliced in
the box.

## Changelog

🆑
fix: killed the impostor infinite pizza
fix: the One True infinite pizza no longer gets stuck on a single pizza
type if the pizza conjured by the box gets sliced
fix: the cargo pizza order now pre-slices the pizza, because that's what
all pizza places have been doing since the dawn of time and our favorite
supplier PizzNTe has been forcefully convinced to not break this sacred
tradition
/🆑
2025-06-21 22:36:02 -04:00
Sealed101 bdc4c31335 Kills the impostor infinite pizza and fixes the actual infinite pizza (#91689)
## About The Pull Request

Box slicing was fucking up on pizzaboxes from cargo because the pizza
from those boxes weren't actually placed in the pizzabox contents. Ghost
pizza. What's more, slicing a pizza spawned in a infinite pizzabox would
brick the funny property of said box since you would only ever get one
type of slice that's bound to not be someone's favorite. Also the way
the cargo order populates the boxes works in such a way that it would
not pre-slice the pizza, unlike pre-built pathed pizza boxes that do, in
fact, pre-slice their pizza.

So all that's fixed.

## Why It's Good For The Game

Fixes #91688
Fixes infinite pizza box getting stuck on the type that was sliced in
the box.

## Changelog

🆑
fix: killed the impostor infinite pizza
fix: the One True infinite pizza no longer gets stuck on a single pizza
type if the pizza conjured by the box gets sliced
fix: the cargo pizza order now pre-slices the pizza, because that's what
all pizza places have been doing since the dawn of time and our favorite
supplier PizzNTe has been forcefully convinced to not break this sacred
tradition
/🆑
2025-06-20 11:26:20 -06:00
Goat 788f38a21a [MDB Ignore] Makes toolset arms a subtype of arm implants (#91029) 2025-05-29 16:16:13 -04:00
Tim 92549836ab Fix shuttle engines anchored state not matching engine_state (#91345)
## About The Pull Request
Building a shuttle engine from a circuit has a misaligned state where
you can weld it immediately because it thinks the engine is already
anchored when it is not. This results in welded engines being able to be
dragged and moved around.

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

## Changelog
🆑
fix: Fix shuttle engines built from a circuit board having it's
`anchored` state not matching the correct `engine_state`. This would
consider the engine to be anchored already when it was not and allow
someone to weld it despite it being able to be dragged and moved around.
/🆑
2025-05-29 16:16:10 -04:00
Bloop 655b66bdd0 Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
Revival of https://github.com/tgstation/tgstation/pull/86482, which is
even more doable now that we have rustg iconforge generation.

What this PR does:

- Sets up every single GAGS icon in the game to have their own preview
icon autogenerated during compile. This is configurable to not run
during live. The icons are created in `icons/map_icons/..`
- This also has the side effect of providing accurate GAGS icons for
things like the loadout menu. No more having to create your own
previews.

![FOuGL6ofxC](https://github.com/user-attachments/assets/e5414971-7f13-4883-9f7f-a8a212b46fe8)

<details><summary>Mappers rejoice!</summary>

![StrongDMM_1oeMSoRHXT](https://github.com/user-attachments/assets/83dcfe4c-31be-4953-98f3-dff90268bbc4)

![StrongDMM_uyqu3CggPn](https://github.com/user-attachments/assets/7896f99e-2656-40e1-a9da-3a513882365a)

</details>

<details><summary>Uses iconforge so it does not take up much time during
init</summary>

![dreamdaemon_u4Md3Dqwge](https://github.com/user-attachments/assets/17baaff8-5d5e-4a4d-ba8f-9dd548024155)

</details>

---

this still applies:

Note for Spriters:

After you've assigned the correct values to vars, you must run the game
through init on your local machine and commit the changes to the map
icon dmi files. Unit tests should catch all cases of forgetting to
assign the correct vars, or not running through init.

Note for Server Operators:

In order to not generate these icons on live I've added a new config
entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in
the config.txt

No more error icons in SDMM and loadout.

🆑
refactor: preview icons for greyscale items are now automatically
generated, meaning you can see GAGS as they actually appear ingame while
mapping or viewing the loadout menu.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-29 16:14:43 -04:00
Goat 640e692c87 [MDB Ignore] Makes toolset arms a subtype of arm implants (#91029) 2025-05-28 01:11:27 -04:00
Tim cfa838fee7 Fix shuttle engines anchored state not matching engine_state (#91345)
## About The Pull Request
Building a shuttle engine from a circuit has a misaligned state where
you can weld it immediately because it thinks the engine is already
anchored when it is not. This results in welded engines being able to be
dragged and moved around.

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

## Changelog
🆑
fix: Fix shuttle engines built from a circuit board having it's
`anchored` state not matching the correct `engine_state`. This would
consider the engine to be anchored already when it was not and allow
someone to weld it despite it being able to be dragged and moved around.
/🆑
2025-05-26 20:23:46 +00:00
Bloop cb51a652a9 Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
## About The Pull Request

Revival of https://github.com/tgstation/tgstation/pull/86482, which is
even more doable now that we have rustg iconforge generation.

What this PR does:

- Sets up every single GAGS icon in the game to have their own preview
icon autogenerated during compile. This is configurable to not run
during live. The icons are created in `icons/map_icons/..`
- This also has the side effect of providing accurate GAGS icons for
things like the loadout menu. No more having to create your own
previews.


![FOuGL6ofxC](https://github.com/user-attachments/assets/e5414971-7f13-4883-9f7f-a8a212b46fe8)

<details><summary>Mappers rejoice!</summary>


![StrongDMM_1oeMSoRHXT](https://github.com/user-attachments/assets/83dcfe4c-31be-4953-98f3-dff90268bbc4)


![StrongDMM_uyqu3CggPn](https://github.com/user-attachments/assets/7896f99e-2656-40e1-a9da-3a513882365a)

</details>

<details><summary>Uses iconforge so it does not take up much time during
init</summary>


![dreamdaemon_u4Md3Dqwge](https://github.com/user-attachments/assets/17baaff8-5d5e-4a4d-ba8f-9dd548024155)

</details>

---

### Copied from https://github.com/tgstation/tgstation/pull/86482 as
this still applies:

Note for Spriters:

After you've assigned the correct values to vars, you must run the game
through init on your local machine and commit the changes to the map
icon dmi files. Unit tests should catch all cases of forgetting to
assign the correct vars, or not running through init.

Note for Server Operators:

In order to not generate these icons on live I've added a new config
entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in
the config.txt


## Why It's Good For The Game

No more error icons in SDMM and loadout.

## Changelog

🆑
refactor: preview icons for greyscale items are now automatically
generated, meaning you can see GAGS as they actually appear ingame while
mapping or viewing the loadout menu.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-24 15:21:02 -07:00
MrMelbert 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
MrMelbert 685ca9db69 [MDB Ignore] Damp Rag can now get dirty / Repaths damp rag (it's no longer a cup) (#90700)
## About The Pull Request

- 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.

## Why It's Good For The Game

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.

## Changelog

🆑 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-16 13:49:27 -07:00
Aliceee2ch f57c93c2a0 Mech thermal guns (#90928)
## About The Pull Request

PR adds new unique weapons for mechs - thermal cannons. You can only buy
them in cargo in the "armory" category for 5k, which adds cooperation
between cargo and science (maybe even security, since you need their
access to open the crate).
Thermal guns only work better in pairs, allowing them to reload faster.
You can't have 2 of the same thermal guns (not that you could use them
anyway even if you could install the same ones)

Sprites by: https://github.com/sylvia-from-fulp-station


https://github.com/user-attachments/assets/d78504b9-90b8-4f8b-b850-fa96dd8ef554

## Why It's Good For The Game

Mechs don't need buffs, but a greater variety of weapons. Thermals will
be a good example of combining both energy weapons and ballistic weapons
(which mechs lack so much, since all we have from ballistics is Hades,
which does not damage at all). It will also be, in my opinion, the first
interesting weapon that not only shoots, but also gives some bonuses
when used correctly.

## Changelog


🆑
add: Added heavy thermal guns for mechs. Works on the principle of
regular hand guns. Can only be purchased in cargo, as they are
experimental.
/🆑
2025-05-15 16:12:28 -04:00
Jacquerel 9968f94721 Regal Rat cleanup & minor changes (#91012)
## About The Pull Request

Since #90505 added another entry to it the Regal Rat Riot ability, which
turns maintenance creatures into versions loyal to the rat, has become
sort of unmanageable (and to be honest it was a bit gross to start
with).
Instead of having a big if/else list (which was making the same range
check multiple times...) that sets stats on a bunch of mobs, I delegated
it to the mobs themselves and instead of changing some stats of the
existing mobs we just turn them into a new mob which can be spawned or
placed separately by mappers or admins if they want.

Other stuff I changed:

Riot (the ability which transforms mobs into minions) no longer spawns a
mouse if it fails to find anything. Instead you have a chance to fish
mice out of disposals bins while digging out trash and items.

Domain is now a toggle which activates itself every 6 seconds rather
than a button you manually click every 6 seconds.

Riot makes a visual effect when used.

Rare Pepe randomisation is done via a random spawner instead of the mob
modifying a bunch of its own properties in Initialise.

A bunch of mobs now automatically follow you after being tamed. I wrote
this assuming I was going to add it to the rioted mobs but then didn't
end up doing that because you might want them to immediately attack
someone.
My rule of thumb is that if I think you'd want the mob to attack someone
the moment it is befriended I didn't add this and if you wouldn't I did.

I changed some of the regal rat minion names, and some of them can now
spawn from gold slime which couldn't before.

## Why It's Good For The Game

This proc sucked and now it's nicer.

As for the other changes;
- A tamed mob immediately following you is nice feedback and saves you a
click as it's likely to be your first action. Also removes some admin
panel shitcode I added.
- I changed Domain to a toggle because you generally want to use it on
cooldown and someone suggested it on this PR and it sounded like a good
idea.
- I saw someone in Discord complaining that the previous flow of
recruiting rats by hitting Riot with nothing around to summon one,
waiting, hitting it again to convert one rat, and waiting again was
tedious and annoying which I agree with.
This method improves the quality of life by separating these two actions
but _also_ as a side effect reduces a regal rat's ability to secretly
stockpile 50 rats in a hidden maintenance room because most disposal
bins are in slightly more visible areas, they'll actually need to go and
make a mess somewhere someone can see them.


## Changelog

🆑
balance: Regal Rats can now grab mice out of disposal bins, and no
longer spawn them with the Riot ability.
balance: The Riot ability no longer needs to be used once for each
slightly different kind of mob in your radius.
balance: The Regal Rat Domain ability is now toggled on and off.
balance: Several kinds of mob will immediately start following you once
tamed.
balance: Rats, hostile frogs, and evil snails can be created via gold
slime reaction.
/🆑
2025-05-15 16:05:41 -04:00
Aliceee2ch 497d0b83af Mech thermal guns (#90928)
## About The Pull Request

PR adds new unique weapons for mechs - thermal cannons. You can only buy
them in cargo in the "armory" category for 5k, which adds cooperation
between cargo and science (maybe even security, since you need their
access to open the crate).
Thermal guns only work better in pairs, allowing them to reload faster.
You can't have 2 of the same thermal guns (not that you could use them
anyway even if you could install the same ones)

Sprites by: https://github.com/sylvia-from-fulp-station


https://github.com/user-attachments/assets/d78504b9-90b8-4f8b-b850-fa96dd8ef554

## Why It's Good For The Game

Mechs don't need buffs, but a greater variety of weapons. Thermals will
be a good example of combining both energy weapons and ballistic weapons
(which mechs lack so much, since all we have from ballistics is Hades,
which does not damage at all). It will also be, in my opinion, the first
interesting weapon that not only shoots, but also gives some bonuses
when used correctly.

## Changelog


🆑
add: Added heavy thermal guns for mechs. Works on the principle of
regular hand guns. Can only be purchased in cargo, as they are
experimental.
/🆑
2025-05-14 21:11:12 +10:00