Commit Graph

1068 Commits

Author SHA1 Message Date
shayoki f601a6ddaf Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 2026-06-03 01:23:54 -05:00
1393F 223a0d609d Removes remaining references to the flagellant robes (#96219) 2026-05-27 19:48:00 -04:00
Alexis 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

fixes https://github.com/Bubberstation/Bubberstation/issues/5549

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
SmArtKar 93ea8085cb Datumizes material effects, slots, and material spears (#95341) 2026-04-11 09:15:07 +10:00
Twaticus c77e009876 Nugget Box Resprite + Nuggets/Wings/Fries Containers (#95537) 2026-03-28 18:33:53 -04:00
SmArtKar b42ebeb4c2 Adjusts all get_temperature() accesses to compare it to a value (#95236)
## About The Pull Request

``get_temperature()`` returns a value in kelvins, not a boolean. Trying
to treat it as such will result in ***any*** item with a thermal value,
like condensers, being treated as a lighter.

## Why It's Good For The Game

Consistency, allows us to have actually functioning cooling items that
don't act like lighters all the time.

## Changelog
🆑
fix: Condensers can no longer be used to ignite things
/🆑
2026-02-24 21:05:44 -05:00
SmArtKar a3498fdcd7 Material Science 1: A bunch of math (#95090) 2026-02-22 16:53:51 +11:00
MrMelbert ef28e00690 [MDB Ignore] Refactors gauze, adds Tourniquets (#95041)
## About The Pull Request

1. Refactors gauze

Removes gauze var from `/stack`, adds a shared parent between tape and
gauze.
Behavior of "sticking thing on limb" is now a bit more generic, with
there being a component to facilitate it and a framework on `/bodypart`

Closes #92990

2. Adds Tourniquets

A first aid item, when attached to a limb it reduces blood loss from
that limb by 90%.
However while attached you walk slower (if on a leg), interact slower
(if on a arm), and yes, you rapidly die if you put it on your head

Paramedic belts have their starting equipment changed again for the
500th time.
Surgical tape -> Tourniquet
Bone gel -> Bonesetter

<img width="604" height="224" alt="image"
src="https://github.com/user-attachments/assets/443dd5c0-44a3-4ccb-9f6a-c561bbf2fba9"
/>

## Why It's Good For The Game

Adds some more variety for field treatment of bleeding wounds, and in
the future we can add things like "improvised tourniquets" or
"improvised splints" with wooden planks.

## Changelog

🆑 Melbert
add: Adds Tourniquets. While attached to a limb, reduces blood loss from
that limb by 90%, but makes you walk / interact slower. (Or if you put
it on your head, you die.)
add: You can purchase Tourniquets from the premium section of the
medical vendor
add: Paramedic belt setup has changed yet again: Surgical tape replaced
with Tourniquet, Bone gel replaced with Bonesetter.
add: You can use all forms of tape as splint - like Gauze. Will secure a
fracture but won't stop your blood from exiting.
refactor: Refactored gauze entirely, report any strangeness with it (or
tape, or tourniquets)
/🆑
2026-02-15 08:30:57 +01:00
nevimer 00ccf0c6b5 Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts:
#	.github/CODEOWNERS
#	.github/workflows/compile_changelogs.yml
#	.github/workflows/stale.yml
#	SQL/database_changelog.md
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/__DEFINES/atom_hud.dm
#	code/__DEFINES/inventory.dm
#	code/__DEFINES/mobs.dm
#	code/__DEFINES/species_clothing_paths.dm
#	code/__DEFINES/subsystems.dm
#	code/__DEFINES/surgery.dm
#	code/__HELPERS/global_lists.dm
#	code/_globalvars/lists/maintenance_loot.dm
#	code/_globalvars/traits/_traits.dm
#	code/controllers/subsystem/minor_mapping.dm
#	code/controllers/subsystem/processing/quirks.dm
#	code/controllers/subsystem/shuttle.dm
#	code/datums/components/palette.dm
#	code/datums/components/surgery_initiator.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/hud.dm
#	code/datums/mood.dm
#	code/datums/mutations/chameleon.dm
#	code/datums/quirks/negative_quirks/nyctophobia.dm
#	code/datums/status_effects/debuffs/debuffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/slime/slime_leech.dm
#	code/datums/weather/weather.dm
#	code/game/data_huds.dm
#	code/game/objects/items.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/frog_statue.dm
#	code/game/objects/items/rcd/RLD.dm
#	code/game/objects/items/robot/items/hypo.dm
#	code/game/objects/items/stacks/medical.dm
#	code/game/objects/items/stacks/wrap.dm
#	code/game/objects/items/storage/garment.dm
#	code/game/objects/items/tools/medical/defib.dm
#	code/game/objects/items/weaponry.dm
#	code/game/objects/items/weaponry/melee/misc.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/game/objects/structures/curtains.dm
#	code/game/objects/structures/dresser.dm
#	code/game/objects/structures/girders.dm
#	code/game/objects/structures/maintenance.dm
#	code/game/objects/structures/mirror.dm
#	code/modules/admin/greyscale_modify_menu.dm
#	code/modules/admin/verbs/light_debug.dm
#	code/modules/antagonists/ashwalker/ashwalker.dm
#	code/modules/antagonists/heretic/knowledge/starting_lore.dm
#	code/modules/antagonists/ninja/ninjaDrainAct.dm
#	code/modules/art/paintings.dm
#	code/modules/client/preferences.dm
#	code/modules/client/verbs/ooc.dm
#	code/modules/clothing/head/wig.dm
#	code/modules/events/disease_outbreak.dm
#	code/modules/holodeck/holo_effect.dm
#	code/modules/jobs/job_types/head_of_security.dm
#	code/modules/jobs/job_types/security_officer.dm
#	code/modules/library/skill_learning/generic_skillchips/point.dm
#	code/modules/mining/lavaland/ash_flora.dm
#	code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/basic/guardian/guardian.dm
#	code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
#	code/modules/mob/living/carbon/carbon.dm
#	code/modules/mob/living/carbon/human/human.dm
#	code/modules/mob/living/carbon/human/human_defines.dm
#	code/modules/mob/living/carbon/life.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob/living/living_defines.dm
#	code/modules/mob/mob.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mod/mod_control.dm
#	code/modules/mod/modules/modules_general.dm
#	code/modules/modular_computers/computers/item/computer_ui.dm
#	code/modules/paperwork/paper.dm
#	code/modules/paperwork/paperbin.dm
#	code/modules/power/lighting/light.dm
#	code/modules/projectiles/guns/energy/kinetic_accelerator.dm
#	code/modules/projectiles/projectile.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/food_reagents.dm
#	code/modules/reagents/chemistry/reagents/other_reagents.dm
#	code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
#	code/modules/research/xenobiology/crossbreeding/_clothing.dm
#	code/modules/research/xenobiology/crossbreeding/prismatic.dm
#	code/modules/surgery/advanced/brainwashing.dm
#	code/modules/surgery/advanced/lobotomy.dm
#	code/modules/surgery/amputation.dm
#	code/modules/surgery/blood_filter.dm
#	code/modules/surgery/bodyparts/_bodyparts.dm
#	code/modules/surgery/brain_surgery.dm
#	code/modules/surgery/cavity_implant.dm
#	code/modules/surgery/coronary_bypass.dm
#	code/modules/surgery/gastrectomy.dm
#	code/modules/surgery/healing.dm
#	code/modules/surgery/limb_augmentation.dm
#	code/modules/surgery/organ_manipulation.dm
#	code/modules/surgery/revival.dm
#	code/modules/surgery/sleeper_protocol.dm
#	code/modules/surgery/surgery_helpers.dm
#	code/modules/surgery/surgery_step.dm
#	code/modules/unit_tests/_unit_tests.dm
#	code/modules/unit_tests/designs.dm
#	code/modules/unit_tests/icon_state_worn.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png
#	icons/map_icons/clothing/head/_head.dmi
#	icons/map_icons/clothing/shoes.dmi
#	icons/map_icons/items/_item.dmi
#	icons/mob/huds/hud.dmi
#	icons/mob/inhands/64x64_lefthand.dmi
#	icons/mob/inhands/64x64_righthand.dmi
#	icons/obj/machines/computer.dmi
#	tgui/packages/tgui/interfaces/OperatingComputer.jsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
#	tgui/packages/tgui/interfaces/SurgeryInitiator.tsx
#	tools/icon_cutter/check.py
2026-02-12 23:50:09 -05:00
MrMelbert baeb6e4fe2 Adds doppler radar towers with an anomaly core "upgrade" (#94893)
## About The Pull Request

1. Adds doppler radar towers to Lavaland and the Icemoon

Weather radios now need a doppler radar on the target z-level to get an
accurate reading. Without a radar tower, the expected timing of incoming
storms will be off by a random factor.

Lavaland and the Icemoon both have a few towers mapped into them. 

The towers themselves can be constructed with plasteel if they some how
get destroyed. They also have an in built GPS.

Each tower requires a cable connection to function. They need a pretty
small amount of power to function.

2. Adds anomalous radar towers

Attaching a weather anomaly core to a radar tower results in an
anomalous radar tower.

<img width="260" height="409" alt="image"
src="https://github.com/user-attachments/assets/3430b0aa-0bbc-44df-ae75-67c2c3cca5a6"
/>

This allows you to cancel ongoing storms **or summon storms yourself**. 
Each cancellation and summon uses a percentage of the core's charge.
After the charge runs dry, the core is destroyed, and the tower goes
back to being normal.

Yes, you can construct a radar tower on the station to summon storms on
the station, *including* rad storms.
All storms summoned abide by radstorm rules, meaning maint is safe. 
Summoning onto the station uses significantly more charge.

3. Limits weather anomaly cores to 5

Because they are charge based and spamming weather events all round
would be annoying, slightly lowers the max core count.

## Why It's Good For The Game

Weather manipulation seems super appropriate for weather anomaly cores.
Initially it was just going to be the machine, but then I thought "what
if I want the frame of the machine to be available roundstart on
Lavaland to encourage cooperation with miners" and then I thought "what
if it tied into the weather radios, which opens up rare sabotage
methods"

So that's how we got here. The towers exist to facilitate the anomaly
use while also allowing enterprising traitors to sabotage, potentially
leaving their target unaware in a storm.

## Changelog

🆑 Melbert
add: Adds doppler radar towers to Lavaland and the Icemoon. These towers
ensure weather radios have accurate readings.
add: Adding a weather anomaly core to a radar tower upgrades it, giving
you control of weather - allowing you to cancel storms or even spawn a
weather event of your choice. However, the core will expire after use,
requiring replacement.
add: You can construct radar towers with plasteel. Even on the station.
Yes, you can summon weather onto the station.
balance: Limits weather anomaly cores to 5. 
/🆑
2026-01-28 20:04:50 +00:00
Nick 12fabce357 Katanas now have their own respective sheaths, adds leather crafting recipes for katana sheaths (#94939) 2026-01-28 13:09:44 +02:00
SmArtKar 71a232f03b Makes lizard skin and lizardskin items inherit their "donor's" skin color (#94751)
## About The Pull Request

As title says, skin butchered from humans (currently only applies to
lizardskin) now inherits their owner's skin color, and so do items
(lizardskin boots and hats) made from it.

Also this PR gagsifies lizardskin hats and boots for this very reason.

## Why It's Good For The Game

Consistency, when you butcher a purple lizard you should get purple
lizard boots.

## Changelog
🆑
add: Made lizard skin and lizardskin items inherit their "donor's" skin
color
/🆑
2026-01-12 00:29:35 +00:00
Tim 5d894ca0cd Add gavel hammer and block recipes (#94595) 2025-12-27 21:30:27 -05:00
SyncIt21 468b351b86 Axes grind & juice vars into procs (#94592)
## About The Pull Request
Inspired by #94233. `grind_results`(list) & `juice_typepath`(typepath)
are only used when grinding & juicing after which the atom is deleted.
This means if that object is not processed these vars occupy memory &
don't do anything.

Now these values are only generated on demand by calling their
respective procs. Considering how these vars are on the obj level the
memory savings are quite significant

## Changelog
🆑
refactor: grinding & juicing have been refactored to occupy low memory.
Report bugs on github
code: improved grinding & juicing code
/🆑
2025-12-25 20:40:35 +01:00
Tim 826d2b4638 Add recipes for flare, washer machine, lamp, lantern, cabinet, alien closet, and large metal box (#94283) 2025-12-21 14:00:19 +01:00
LT3 609291a67a Fix oversized icon display on crafting menu (#94186) 2025-12-19 18:38:45 +01:00
Stalkeros 44691ec969 Adds a fifty sandbag stack as an object (#94488)
## About The Pull Request
Title.
You can now spawn in/map in/exist in sandbags in a stack of fifty.
<img width="1004" height="338" alt="изображение"
src="https://github.com/user-attachments/assets/3a0bf21c-20b3-4773-b5be-52ca3aca130b"
/>
<img width="566" height="549" alt="изображение"
src="https://github.com/user-attachments/assets/403fa312-1643-4223-b3c6-57e9cb3e8d7c"
/>
## Why It's Good For The Game
This should prove useful for mappers and admins who'll require sandbags
at one or another point.
~~See I needed sandbags for a map I'm making and varediting a stack into
a fifty-stack felt wrong.~~
## Changelog
🆑 Stalkeros
add: Stack of fifty sandbags
/🆑
2025-12-16 22:02:46 -05:00
Matrix (Selena Rohrmann) fdaf0a85c8 Brown retro sofa is now craftable (#94385)
## About The Pull Request

The "old ratty sofa" can now be crafted! Crafted version is called the
"retro sofa." Also grouped all craftable sofas under one dropdown menu
to reduce UI clutter.

<img width="702" height="439" alt="retro sofa coded"
src="https://github.com/user-attachments/assets/18a6f462-ffaf-4c8e-a64a-8247e9222578"
/>

## Why It's Good For The Game

The brown sofa looks right at home in cozy places like maints, library,
bar, even the command quarters. We had the model as a map spawn, so I
thought it'd be nice to give players the option to craft them too. Goes
well with wood! Also, reduced UI clutter by putting all sofas into one
drop-down menu.
2025-12-15 20:12:52 -06: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
Bloop 7754938c72 Makes a bunch of lists lazy (#94239)
## About The Pull Request

Empy lists. There are a lot of 'em.

<img width="981" height="512" alt="image"
src="https://github.com/user-attachments/assets/b94b041a-2904-466b-ab89-54bd1de11b4e"
/>

Going through ways to reduce memory I found a few easy ones here. Wires,
the edible component, the seethrough component. None of these are really
a concern when it comes to needing lists in memory for performance
reasons. Wires aren't going to be cut most of the time for each door. A
lot of food does not have any junkiness. Seethrough component lies
dormant most of the round. Etc.

Making lists lazy in these cases should be a no brainer.

Everything I tested still seems to work exactly the same.

## Why It's Good For The Game

Frees memory that is just taking up space a lot of the time.

## Changelog

Not player-facing, this is all under-the-hood stuff.
2025-12-03 13:42:16 -07:00
FalloutFalcon 0ff70f7497 adds the cardboard crates to spawners and crafting (#94110) 2025-12-03 11:26:33 +01:00
Ghom 0b0c5ea91e Unit test material checks are now performed on all crafting recipes by default. All stack recipes now transfer mats to the results (#92620)
## About The Pull Request
Extends the part of the crafting unit test that ensures consistency
between the total mats of the components of a recipe (or rather, the
result of said recipe) and a generic instance of the same type as its
result, previously only implemented on food recipes.

## Why It's Good For The Game
This ensures a degree of consistency with the material composition of
various objects in the game. I couldn't do it in the original PR as that
one was too big already and it took months to get it merged, and have
the relative bugs fixed.

Currently a WIP as I slowly deal with the unit test reports.

## Changelog

🆑
refactor: Follow-up to the crafting/material refactor from months ago.
All objects crafted with stacks now inherit their mat composition (not
necessarily the effects and color) by default, while previously only a
few things like chair, sinks and toilets did. Report any object looking
or behaving weirdly as a result.
fix: The material composition of ammo boxes is no longer a 1/10 of what
it's supposed to be. It was a shitty hack to make it harder to recycle
empty ammo boxes. Instead, they lose materials as they're emptied now.
/🆑
2025-12-02 18:29:01 -05: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
SyncIt21 81427cd5cf Unit tests, refactor & realignment for map loaded wall mounts (#93662)
## About The Pull Request
This 1st has to be PR'd so the integration tests can point out all
wallmounts that could not find a support structure to mount on. I then
will do many map edits to align them onto the closest atom

Yes we no longer use wall mount but atom mounted component. All objects
that are mounted on windows/tables & fences now also fall off when
destroyed

It'll probably be a WHILE before I can fix all wall mounts. Long day.
Expect me to misalign many stuff to fix failing CI so make sure to
provide suggestions when possible

Improved wallmount code overall
- Fixes #93793


## Changelog
🆑
fix: fixes all incorrectly maploded wall mounts that aren't actually
hanging on any support structure
fix: objects mounted on tables, windows & fences also fall off now when
destoryed
qol: lights can be mounted on windows
qol: cameras can be mounted on windows
qol: buttons can be mounted on tables
refactor: improved how wall mounts interact with objects as a whole
report bugs on github
/🆑
2025-11-18 22:37:12 -07: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
Ghom e5be2d0f91 Sensors can now be printed, removed and installed on jumpsuits. HANDCRAFTED jumpsuits no longer have sensors by default (also mild crafting refactor) (#93121)
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2025-10-18 11:43:38 +02:00
xPokee 5e629dff04 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-10-03 07:05:54 -04:00
Ghom a28575aa82 [NO GBP] Fixing more issues with sand (you can make sand walls again, also ghost glass sheets?) (#93215)
## About The Pull Request
Apparently wall construction code is snowflaked and indented as fuck
(and the same goes for door assemblies). I'm not bothering refactoring
everything with them, only to reduce the indentation, changing a couple
vars and overall making it easier to work with them later. This includes
wall construction not being hardcoded to sheets but include the
possibility to use other kind of stacks as well (if you don't count the
snowflake interaction with iron rods). In layman's terms, this means you
can make walls made out of sand (distinct from sandstone) again.

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

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

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

## Changelog

🆑
fix: You can once again make sand walls.
fix: Deconstructing an autolathe with sand in it should now drop sand.
/🆑
2025-10-02 19:12:11 +03:00
xPokee 9b282a850e Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-09-17 11:45:44 -04:00
XiskaVZ d96d7718e5 Complete Metal H2 armor Rework (#4663)
## About The Pull Request

Complete rework of the metal hydrogen armor for atmos. Rebalancing the
stats, crafting recipe, and most importantly new sprites for planti and
digi. EDIT: Teshari sprites now included.

## Why It's Good For The Game

The metal hydrogen armor has been a direct downgrade to nearly every
single other atmospherics tool, modsuits, firesuits, etc. Despite being
the hardest piece of atmospherics equipment to make. Taking around 45-60
minutes depending on skill level. Plus it was just extremely ugly. Its
now gotten an immense buff, with significantly better resistances before
and guess what... ITS ACTUALLY FIREPROOF NOW, among that its been made
into a "firesuit upgrade" requiring an atmospherics firesuit/helmet +
metal hydrogen to craft. specific stats will be listed in changelog.

it was also highly voted as seen below.

https://discord.com/channels/1059199070016655462/1071095123145924679/1374831845337993367

## Proof Of Testing

I've tested this extensively and made sure 0 errors occurred during the
process.

<img width="474" height="511" alt="image"
src="https://github.com/user-attachments/assets/6b38c4d4-dbf0-4a19-9f1d-7d67943777a4"
/>
<img width="84" height="78" alt="image"
src="https://github.com/user-attachments/assets/9b01e970-ed65-4cce-bc5f-402e9174d34d"
/>
<img width="88" height="81" alt="image"
src="https://github.com/user-attachments/assets/10a218eb-9ee9-432f-b346-092440a28ca8"
/>

## Changelog

🆑
add: Added Elder Atmos crafting recipes
del: Removed metal H2 Armor stack craft
image: Resprited Metal H2 Armor, digitigrade and plantigrade
spellcheck: Fixed a typo with the Metal H2 Axe
code: Changed metal H2 armor stack crafting
balance: Metal H2 Fireaxe force_wielded from 15 > 20 
Metal H2 Fireaxe wound_bonus from -15 > -10
balance: Elder Atmosian Armor Set Buffs
Stat buffs across the board, including several flag changes to better
fit the armor.
/🆑
2025-09-14 20:36:55 +03:00
FalloutFalcon d2f34e33be moves abstract_type up to datum, spawners wont spawn them (#92909)
## About The Pull Request
moves all implementations (im aware of) for "Im a parent type dont spawn
me please" to the datum layer to standardized behavior
adds a standerized proc for filtering out "bad" items that we dont want
spawning. applies to it the subtype vendor, gifts, and a new spawner and
mystery box for a random gun (neither playerfacing)
"port" of https://github.com/shiptest-ss13/Shiptest/pull/4621



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

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

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

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

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

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

## Why It's Good For The Game


## Changelog

🆑
balance: sand is now made of sand and not glass. Get a welder if you
plan to shove it into a protolathe.
del: Removed now useless sand blocks.
/🆑
2025-09-09 15:08:45 -04:00
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
Pepsilawn 6717ec176a Removes Blood Beam's ability to turn iron sheets into cult metal (#92647)
## About The Pull Request

Blood beam, while supposed to be quite costly can be used after slicing
the throat of a single monkey.
You could then, put as many iron sheets on the floor as you wanted, aim
your blood beam at it (aiming away from the center of the station
recommended) and convert potentially multiple full stacks of it 1:1 into
cult metal.

## Why It's Good For The Game

Cultists already have a dedicated spell for creating cult metal
requiring plasteel instead, which is usually harder to gather in bulk
especially early on. That interaction completely overshadows it. As a
fun fact, it's also older than the change that moved the construct spell
from iron to plasteel so it's likely somebody just forgot.
2025-08-26 16:50:23 -05:00
SmArtKar 6419867c56 Fixes metal hydrogen being blocked from all material storages (#92691)
## About The Pull Request

It should be invulnerable to damage, not completely indestructible by
all means
Closes #92540

## Changelog
🆑
fix: Fixed metal hydrogen being blocked from all material storages
/🆑
2025-08-24 19:41:01 +02: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
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
Maximal08 601e8d8f6f Computer and machine construction qol (#92323) 2025-08-04 20:53:35 -04:00
Maximal08 e3379e36db Computer and machine construction qol (#92323) 2025-07-31 19:43:09 +02:00
Roxy c5a98f3634 Fix "shatter on floor" behavior failing on stacks with only 1 left (#92049) 2025-07-11 20:33:03 -04:00
Roxy b112246e28 Fix "shatter on floor" behavior failing on stacks with only 1 left (#92049) 2025-07-12 02:18:26 +02:00
Jacquerel 43aa3d40d8 Platforms (#91559)
![image](https://github.com/user-attachments/assets/32a5f39a-59b8-46c3-8418-1a089379d6a4)

This PR adds "platforms" to the game, a port of the window frames from
the Wallening branch but with no windows attached.
You can craft them with two stacks of many kinds of materials.
Functionally they're basically just tables for standing on and act as a
decorative tool allowing you to make raised areas like stages.
Largely as far as I can tell I _think_ these were sprited by @Krysonism
although it's a little hard to check if there's any that were done by
someone else.

You can walk directly from tables to platforms (and crates) and vice
versa. You can also tableslam people onto them.

This PR also comes with "steps" (AKA small stairs)
You can use steps to walk onto platforms (or tables, or crates) without
needing to do the climbing action first.

![dreamseeker_umhbakZ4lE](https://github.com/user-attachments/assets/675e815b-8901-49d2-81b1-64ef7a56cd31)
If you try to run through them the wrong way you will trip.
Right now they only come in "Iron" flavour. Maybe one day someone will
sprite some wooden ones, or other varieties.

Basically the intention is to use them to build a little stage or altar
or maze or something. They don't have a lot of non-decorative purpose.

Don't be alarmed by the touched files list. It's mostly sprites and
there's barely even any code in this PR. It's almost entirely elements
and boilerplate.

Mappers keep asking me to add these.
Salvages some sprites from the Wallening project which we can still use.
You can make a really really big multitile pizza.

🆑 Jacquerel, Smartkar, sprites by Kryson
add: Added "platforms", or "half-walls" which are a kind of decorative
block similar to tables which you can walk around on.
add: You can walk freely between tables, platforms, and crates that
happen to be near tables or platforms.
add: You can construct iron steps to traverse tables and platforms
without needing to climb on, but try not to trip over them.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2025-07-11 18:07:40 -04:00
Jacquerel 7146a6bb10 Platforms (#91559)
## About The Pull Request


![image](https://github.com/user-attachments/assets/32a5f39a-59b8-46c3-8418-1a089379d6a4)

This PR adds "platforms" to the game, a port of the window frames from
the Wallening branch but with no windows attached.
You can craft them with two stacks of many kinds of materials.
Functionally they're basically just tables for standing on and act as a
decorative tool allowing you to make raised areas like stages.
Largely as far as I can tell I _think_ these were sprited by @Krysonism
although it's a little hard to check if there's any that were done by
someone else.

You can walk directly from tables to platforms (and crates) and vice
versa. You can also tableslam people onto them.

This PR also comes with "steps" (AKA small stairs)
You can use steps to walk onto platforms (or tables, or crates) without
needing to do the climbing action first.

![dreamseeker_umhbakZ4lE](https://github.com/user-attachments/assets/675e815b-8901-49d2-81b1-64ef7a56cd31)
If you try to run through them the wrong way you will trip.
Right now they only come in "Iron" flavour. Maybe one day someone will
sprite some wooden ones, or other varieties.

Basically the intention is to use them to build a little stage or altar
or maze or something. They don't have a lot of non-decorative purpose.

Don't be alarmed by the touched files list. It's mostly sprites and
there's barely even any code in this PR. It's almost entirely elements
and boilerplate.

## Why It's Good For The Game

Mappers keep asking me to add these.
Salvages some sprites from the Wallening project which we can still use.
You can make a really really big multitile pizza.

## Changelog

🆑 Jacquerel, Smartkar, sprites by Kryson
add: Added "platforms", or "half-walls" which are a kind of decorative
block similar to tables which you can walk around on.
add: You can walk freely between tables, platforms, and crates that
happen to be near tables or platforms.
add: You can construct iron steps to traverse tables and platforms
without needing to climb on, but try not to trip over them.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2025-07-11 07:21:02 +00:00
Sealed101 2fb7c12a02 Cyborgs can no longer shatter glass while no glass is stored in the synthesizer + TK glass shatter fix (#91798)
## About The Pull Request

Title; also introduces a stack trace in case a non-borg tries to shatter
a <1 sheet stack. Moves shard creation to `drop_location()` instead of
`user.loc` so shattering glass with TK won't magic shards under your
feet.

## Why It's Good For The Game

no issue opened for this one apparently, weird
anyway, less bug good

## Changelog

🆑
fix: fixed borgs being able to shatter glass into shards when there's no
glass in the synthesizer
fix: shattering sheets into shards with telekinesis will place the
shards at the stack, not at the user's feet
/🆑
2025-07-04 16:41:49 -04:00
Sealed101 318d341ef7 Cyborgs can no longer shatter glass while no glass is stored in the synthesizer + TK glass shatter fix (#91798)
## About The Pull Request

Title; also introduces a stack trace in case a non-borg tries to shatter
a <1 sheet stack. Moves shard creation to `drop_location()` instead of
`user.loc` so shattering glass with TK won't magic shards under your
feet.

## Why It's Good For The Game

no issue opened for this one apparently, weird
anyway, less bug good

## Changelog

🆑
fix: fixed borgs being able to shatter glass into shards when there's no
glass in the synthesizer
fix: shattering sheets into shards with telekinesis will place the
shards at the stack, not at the user's feet
/🆑
2025-07-01 14:33:27 +01:00
SyncIt21 ef5b60a920 Stacks check for invalid amounts (#91656)
## About The Pull Request
Alleviates #91603

As in it does not fix it because i have not been able to reproduce it.
It now checks for invalid values and defaults to `amount`(which is 1)
during `Initialize()` and not null so we don't have to pass the number
`1` when creating a single sheet.
 
A stack trace is thrown for <= 0 sheet amounts so we can debug & fix
stuff

## Changelog
🆑
code: stacks error on invalid amounts, removed manual passing of number
`1` when creating a single stack in many cases
/🆑
2025-06-21 22:21:56 -04:00
SyncIt21 ff13dcadab Stacks check for invalid amounts (#91656)
## About The Pull Request
Alleviates #91603

As in it does not fix it because i have not been able to reproduce it.
It now checks for invalid values and defaults to `amount`(which is 1)
during `Initialize()` and not null so we don't have to pass the number
`1` when creating a single sheet.
 
A stack trace is thrown for <= 0 sheet amounts so we can debug & fix
stuff

## Changelog
🆑
code: stacks error on invalid amounts, removed manual passing of number
`1` when creating a single stack in many cases
/🆑
2025-06-18 15:28:35 +02:00
MrMelbert bc2215667f Re-refactors batons / Refactors attack chain force modifiers (#90809)
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack

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

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

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