Commit Graph
625 Commits
Author SHA1 Message Date
Alexis 88e84645b1 Merge commit '6b52b564a50e4f3091470529c683587e5de15d49' into upstream-sync-7-22-2026 2026-07-22 13:39:09 -04:00
GhomandGitHub 6eb2d1674a Implementing materials checks for techweb designs. (#96257)
## About The Pull Request
In similar fashion to what was done with crafting recipes last year,
this year it's time for techweb designs and printed items to be audited.
This is mostly just about consistency, we've a lot of items that can be
printed by protolathes, autolathes, circuit printers and techfab etc.
However they almost all (except most stacks, mainly) have custom
materials that do not match in one way or another with the materials
used by the design, which is what this PR is for.

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

TL;DR consistency and stuff

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

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

## Changelog

🆑
refactor: Refactored a few things with techweb designs (the ones for
autolathes, protolathes, circuit printers, mechfabs etc.) to make sure
that the materials of items that can be made from these designs more
closely match the materials used to make them.
fix: Lizard fries no longer need a plate to be made, like all other
treats that used to require plates in a distant past.
balance: Tweaked the materials cost of RCD, RDD and RCD cartridges.
image: Oven trays now have a more metallic hue.
balance: Plates printed printed from lathes won't shatter like ceramic
ones, in virtue of them being made out of iron instead.
/🆑
2026-07-06 00:13:02 -07:00
+37 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

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

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
IajretandGitHub e1464a5704 Fixes runtime from buckling basic mobs to surgery tables ( + fixes vitals monitor when doing so) (#95426) 2026-03-17 17:25:25 -04: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
SmArtKarandGitHub f58b8511f0 Refactors effect_system (#94999)
## About The Pull Request

This PR refactors ``effect_system``s to be a bit easier to use by
getting rid of ``set_up``, allowing ``attach()`` to be chained into
``start()`` and refactoring most direct system usages in our code to use
helper procs.

``set_up`` was unnecessary and only existed to allow ``New``'s behavior
to be fully overriden, which is not required if we split
sparks/lightning/steam into a new ``/datum/effect_system/basic`` subtype
which houses the effect spreading behavior. This allows us to roll all
logic from ``set_up`` into ``New`` and cut down on code complexity.
Chaining setup as ``system.attach(src).start()`` also helps a bit in
case no helper method exists

I've added ``do_chem_smoke`` and ``do_foam`` helpers, which respectively
allow chemical smoke or foam to be spawned easily without having to
manually create effect datums and reagent holders.

Also turns out we've had some nonfunctional effect systems which either
never set themselves up, or never started, so I fixed those while I was
at it (mostly by moving them to aforementioned helper procs)

## Why It's Good For The Game

Cleaner code, makes it significantly easier for users to work with. Also
most of our effect system usage was copypasta which was passing booleans
as numbers, while perfectly fine helper procs existed in our code.

## Changelog
🆑
refactor: Refactored sparks, foam, smoke, and other miscellaneous effect
systems.
refactor: Vapes now have consistent rigging with cigs using the new
system.
fix: Fixed some effects never working.
/🆑
2026-02-03 22:23:09 -05:00
MrMelbertandGitHub 36dc39053a Medical larp: Adds vitals monitors to medbay (#94704)
## About The Pull Request

Adds vitals monitors to medbay

<img width="368" height="292" alt="image"
src="https://github.com/user-attachments/assets/af32ef4b-5d20-4d9d-bb0d-bec554dd4dbc"
/>

These are wall mounted monitors that display a patient's state visually:
- The doll on the left shows bodypart damage + missing bodyparts
- The droplet next to the head shows blood level, from a bright red to a
grey
- The top bar shows heart rate (an approximation - stops when dead,
speeds up in hard crit), as well as overall health
- The second to the top shows respiration (stops when not breathing)
- Second from the bottom bar shows oxyloss level
- Bottom bar shows toxloss level

You can **examine** a vitals display to get a condensed health analyzer
output to your chat. (This lets the AI see health scans as well)

They beep as patient conditions betters or worsens, though I didn't add
any sound FX to it (yet), it's just a runechat message.

They can link to most machines that accept an occupant - such as cryo
cells and stasis beds - as well as operating tables.

They are printable in two forms - basic and advanced, the latter
requiring tech and does advanced scans on examine, rather than basic
scans.

The displays are mapped in every surgical theatre, as well as over most
stasis beds and by a few cryo cells.

## Why It's Good For The Game

I made these to cut down on juggling the health analyzer when trying to
determine how a patient is faring. (And also to add to medical larp.)

Currently while monitoring a patient's state you have to spam click them
with your scanner and fill up your chat.
This is cumbersome and distracts you from the rest of chat. 

The vitals display provides a visual feedback for how a patient is
doing, no spam clicking needed unless you need specific details like...
organ health.

Some other benefits:
- AI can now monitor patient health without a shell.
- Other doctors don't need to crowd around a patient, they can step back
to watch the screen instead.
- Visitors don't need to rush in and print an analyzer to see how a
patient is doing either.

## Changelog

🆑 Melbert
add: Adds vitals monitors, mapped into the medbay treatment center,
cryogenics, and every surgical theatre. They act as wall mounted health
scanners, providing visual feedback for a patient's health.
/🆑
2026-01-05 08:59:53 +13:00
MrMelbertandGitHub 02bbf845ea Redirect surgical tool clicks on surgical tables that have a surgical patient (#94711)
## About The Pull Request

if a surgery table has a patient on it, and you click it with a surgical
tool, it redirects the click to the patient instead of placing the tool
on the table

## Why It's Good For The Game

sometimes you misclick on the one pixel of transparency and the tool is
lost to the sands of time. this is annoying

## Changelog

🆑 Melbert
qol: If a surgery table has a patient on it, and you click it with a
surgical tool, it redirects the click to the patient instead of placing
the tool on the table
/🆑
2026-01-04 11:44:35 -07:00
MrMelbertandGitHub c6326e20f8 You can skip applying drapes to a mob bucked to operating tables or stasis beds (#94680)
## About The Pull Request

Applies `/datum/component/free_operation` when buckling mobs to stasis
beds or surgical tables

## Why It's Good For The Game

The only reason we still have drapes is because otherwise, trying to
help intent click on a mob with a saw will result in attempting surgery
instead of attacking them

In other words drapes serve as an explicit "I WANT TO PERFORM SURGERY"
check

However we can get that explicitness from other things, such as buckling
someone to the designated surgery places

This ultimately leaves drapes as **entirely optional** in a surgical
setting (...Maybe it can provide a speed bonus for being sanitary or
something?)

## Changelog

🆑 Melbert
add: You can skip the "apply drapes" step of surgery if the patient is
buckled to an operating table or stasis bed!
/🆑
2026-01-03 14:12:25 +00:00
SmArtKarandGitHub a4f0dcb76f Adds flaying, human butchering and limb surgeries (#94612)
## About The Pull Request

Merry Christmas!

This PR expands on the more gruesome areas of chef content, such as
cannibalism.
Human limbs can now be individually butchered for their meat and skin
with a knife or another butchering implement once the skin has been cut
and retracted (forks now can be used as bootleg retractors). If the limb
contains organs, those will need to be removed first, which also can be
quickly performed with a butchering tool at the cost of damaging the
inhards (head and chest will require the bone to be cut first, which can
be done with a butcher's cleaver if you don't have a saw)
You can also butcher humans whole by right clicking them with a
butchering implement on combat mode, which will attempt to gut/cut apart
the selected limb. Obviously this requires the limb to be prepped first,
so meat hooks/kitchenspikes now allow mobs strung on them to be operated
on without needing drapes. Its a pretty bad spot to be performing
surgeries at though, so beware! Torsos can only be butchered after all
other limbs have been. The gutting/butchering delay is based off the
owner's stat, halving if the limb is detached and doubling if the owner
is still alive and kicking.

<img width="392" height="265" alt="dreamseeker_D7QWbWKStd"
src="https://github.com/user-attachments/assets/050d7c25-3572-4b02-ae93-d8efefe54885"
/>

(The video is too large for github)
https://streamable.com/459a0y

After being butchered, most limbs will leave behind a nonfunctional
skeletal limb (with exceptions like jelly limbs with no skeleton inside)
which is always disabled. Skeleton chests husk their owner, so you'll
need to replace it first.
Gibbers now source their meat from the victim's limbs (and not their
species) at an RNG-based percentage based on the matter bin's tier.

As to allow individual limbs to be butchered, you can now perform (some)
surgeries on individual limbs. There are some obvious restrictions like
zombification or bioware surgeries, but most of the ones that make sense
can be performed on someone's chopped off head as long as you've got the
tools.
Wounds also contribute to surgeries now, major slash wounds count as
cut/open skin (and sealing the vessels would reduce their bleed rate),
and critical blunt wounds count as sawed bones.

I've refactored gibbers, butchering and meat spike code as well as fixed
some backend bugs while I was at it.

## Why It's Good For The Game

While rather gruesome, I feel like the freedom which these mechanics
provide fits us pretty well. We already have plenty of nasty stuff and
this doesn't really go that much further, and a chef serving their own
leg in their dish is pretty funny. (Also you can scrape plasma off
plasmamen bones)
2025-12-31 12:55:39 -06:00
BloopandGitHub e1d93b4168 [NO GBP] Fixes an oversight with tablesmash element (#94609)
## About The Pull Request

I neglected platforms, whoops. Also, while we are at it refactors to use
the connect_loc element further reducing instances of connect_loc_behalf
components, and fixes a bug in disarm code with checking for a flag
using && instead of & that I randomly stumbled upon

<details> <summary> Working </summary>

<img width="1461" height="804" alt="image"
src="https://github.com/user-attachments/assets/fa6fc773-94a8-488e-840d-d1d3d2070a29"
/>

</details>

## Why It's Good For The Game

Fixes a runtime

## Changelog

🆑
fix: fixes tablesmashing onto platforms
/🆑
2025-12-29 22:43:20 -05:00
BloopandGitHub cf14dcfc1a Converts 3 components into elements (#94589)
## About The Pull Request

`adjust_fishing_difficulty` is a good one to make into a bespoke element
since a number of the same clothing item are created in the wardrobe
system.

climb_walkable is also good due to how prevalent it is, and it is a bit
of a two for one since it also removes the need for the
`/component/connect_loc_behalf`

Also stops adding the on_climbable trait to literally everything in the
turf, it now only applies it to atoms with density. So no more pipes and
stuff getting trait lists created for no reason.

<details><summary> Tested + things still work as before </summary>

<img width="422" height="122" alt="image"
src="https://github.com/user-attachments/assets/b23696f5-cd16-4150-aeb3-14ea6bd256fc"
/>

</details>

## Why It's Good For The Game

Lessens overhead, fixes a bug as well.

## Changelog

🆑
fix: fixes a pushed crate not removing on_climbable trait properly off
the mob standing atop it
/🆑
2025-12-30 01:05:50 +01:00
BloopandGitHub e90fca25d4 Converts table_smash component into an element (#94585)
## About The Pull Request

<img width="573" height="30" alt="firefox_EhVA73C1LZ"
src="https://github.com/user-attachments/assets/f77baf9c-2585-4cb7-a08f-5ce8322b0a54"
/>

## Why It's Good For The Game

Less overhead and memory usage.

## Changelog

🆑
refactor: refactors table_smash component into an element
/🆑
2025-12-25 00:25:49 +01:00
MrMelbertandGitHub bfdb237612 Spooky Scary Supreme Surgery (Rework) (#93697) 2025-12-19 18:42:58 +01: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
BloopandGitHub 9c8a60a0b8 Removes some cargo cult string interpolations (#94210)
## About The Pull Request

Macros that are strings do not need to be doing this.

## Why It's Good For The Game

Less improper things to copy paste existing in the codebase
2025-11-30 13:25:45 -06: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
MrMelbertandGitHub c3b29b8823 Monkeys will avoid glass tables (#93997)
## About The Pull Request

Ai pathing will avoid turfs that have glass tables on them.

## Why It's Good For The Game

Monkeys loooove glass tables

## Changelog

🆑 Melbert
qol: Monkeys will avoid stepping over glass tables
/🆑
2025-11-18 17:24:53 -07: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
dieandGitHub 0204ab8fdd Canreach refactor (#93165)
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147

full credit to @Kapu1178 for the juice

instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
2025-10-07 20:28:59 +02:00
xPokee 5e629dff04 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-10-03 07:05:54 -04:00
TimandGitHub 3609384014 Fix custom materials on wood tables and racks (#93118)
## About The Pull Request
This fixes custom materials for a few objects:
- Wooden tables are now made of wood
- Racks are now made of iron
- Bone racks are now made of bone

Also the formatting was missing a space in between the `=` which was
annonying.

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

## Changelog
🆑
fix: Fix custom materials on wood tables and racks
/🆑
2025-09-26 15:19:18 +02: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
Winter FrostandGitHub c97eaa3195 de-hardcodes some of /obj/structure/table (#92740)
## About The Pull Request

Adds new variables and removes minor hardcoding with the
`/obj/structure/table` adding the variables
`var/flipped_table_icon`
`var/unflip_table_sound`
`var/flipped_table_sound`

## Why It's Good For The Game

This will provide more modular-ability, maintenance, and general care
for changes up and down the stream. allowing modules and individual
things to be made without affecting the /TG/ master files. Including
with these new sound variables, it allows further control over how
things should sound, not having to code-dive to find and change
anything. Making it much easier to control.

## Changelog

No player facing changes.
2025-08-29 18:59:23 -04:00
SmArtKarandGitHub c5eb346cbd Fixes table flipping sound/alert spam (#92648)
## About The Pull Request

Closes #92627 by restricting users to a single do_after at a time per
table

## Changelog
🆑
fix: Fixed table flipping sound/alert spam
/🆑
2025-08-21 02:41:46 +02:00
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
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
Ben10OmintrixandRoxy 482eb31036 fixes infinite recursion with surgery gas masks (#91608)
## About The Pull Request
there was an infinite recursion with masks being dropped over and over
again so the 'move' signal wasnt being unregistered from the mob holding
the mask. i figured the unequip signal wasnt needed anyway since we're
already registering a moved signal on the mask, which already handles
clearing signals from the holding mob upon being removed from their
inventory.

## Why It's Good For The Game
fixes #91607

## Changelog
🆑
fix: moving away from the surgery table with its mask no longer causes
lag
/🆑
2025-06-15 15:54:22 -04:00
cb3468a5ce Handrails, visual shuttle buckles, and buckling feedback changes (#91504)
## About The Pull Request

1. Adds Handrails, currently mapper only. [Sprite ported from
Baystation](https://github.com/Baystation12/Baystation12/blob/dev/icons/obj/structures/handrail.dmi).
This is just a small fluff object designed to be put onto shuttles.
Players can click on it (or mouse drop) to buckle to it (grab it),
keeping them from being thrown around on shuttle launch.


![image](https://github.com/user-attachments/assets/b5bba651-d6ad-4e12-bb13-988ad5bc64ca)

2. Adds Shuttle chair restraints. [Sprite ported from
Aurora](https://github.com/Aurorastation/Aurora.3/blob/master/icons/obj/structure/chairs.dmi),
though altered a decent amount. They flip up with no one seated and flip
down when someone buckles, but they have no gameplay effects (ie, they
don't require a do-after, they don't block hands, etc etc)


![image](https://github.com/user-attachments/assets/4118a174-2443-4da2-8126-649dccfdcb65)


![image](https://github.com/user-attachments/assets/d40fb7b4-f7d2-4052-8f6c-41dfda62cf95)

3. Some objects now have unique feedback messages for buckling - you sit
on chairs, or lay down on beds. This message will change depending on if
the mob is restrained, so it's a bit more obvious when someone is tied
to a chair vs just sitting down.


![image](https://github.com/user-attachments/assets/9ea1da9f-ae25-4008-8ca4-8202f7508290)

4. If you're buckled on a shuttle which has "knockdown" force, you won't
be paralyzed - instead, just knocked down and immobilized for a short
period (so you can still use your hands / act).

## Why It's Good For The Game

1. Gives mappers some additional fluff for shuttles, especially if their
shuttle has knockdown force.

2. Adds muh immersion to shuttle rides. Just a flavor thing.

3. Adds muh immersion to sitting down at the bar. Again just a flavor
thing.

4. I did this to make handrails work, but I can find an alternate
workaround if so desired.

## Changelog

🆑 Melbert, sprites from Baystation / Aurorastation
add: Adds grabbable handrails (mapper only for now)
image: Adds a visual effect to buckling to shuttle seats
qol: Different objects have different chat messages for buckling. 
qol: If you're buckled in on a violent shuttle ride, you will be knocked
down and immobilized, but not fully stunned (ie: can still use hands).
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2025-06-15 15:53:27 -04:00
SmArtKarandRoxy 5833b6429c Allows attaching breath masks and tanks to operating tables (#91112)
## About The Pull Request

Air tanks (ones that can slot into tank holders) and breath masks
(normal, surgical and muzzle, which has been repathed to be a subtype of
breath masks instead of being a subtype of a muzzle, for some reason)
can now be attached to operating tables, and removed using
wrenches/screwdrivers respectively.
Right-clicking on an operating table with a mask attached will put it in
your hand akin to defib paddles (similarly snapping back if you walk
away). Dragging the table with an attached tank onto the person lying on
it will attempt to connect their internals to the attached tank.

Also since I had to adjust the table sprite, its lights now change color
based on whenever there's an active patient and an active operating
computer.

##### This is a commission for Improvedname/Ezel

## Why It's Good For The Game

Anesthetics are incredibly clunky to use, as either the person
themselves, or you as a surgeon, need to equip the tank onto whoever is
being operated on, then equip and activate the mask. This should make
them a bit less tedious, so maybe they'll actually see some use.

## Changelog
🆑
add: You can now attach anesthetic tanks and breathing masks to surgical
tables.
/🆑
2025-06-15 15:53:25 -04:00
Ben10OmintrixandGitHub a7b88a1cf3 fixes infinite recursion with surgery gas masks (#91608)
## About The Pull Request
there was an infinite recursion with masks being dropped over and over
again so the 'move' signal wasnt being unregistered from the mob holding
the mask. i figured the unequip signal wasnt needed anyway since we're
already registering a moved signal on the mask, which already handles
clearing signals from the holding mob upon being removed from their
inventory.

## Why It's Good For The Game
fixes #91607

## Changelog
🆑
fix: moving away from the surgery table with its mask no longer causes
lag
/🆑
2025-06-13 20:57:29 +02:00
0343a41b42 Handrails, visual shuttle buckles, and buckling feedback changes (#91504)
## About The Pull Request

1. Adds Handrails, currently mapper only. [Sprite ported from
Baystation](https://github.com/Baystation12/Baystation12/blob/dev/icons/obj/structures/handrail.dmi).
This is just a small fluff object designed to be put onto shuttles.
Players can click on it (or mouse drop) to buckle to it (grab it),
keeping them from being thrown around on shuttle launch.


![image](https://github.com/user-attachments/assets/b5bba651-d6ad-4e12-bb13-988ad5bc64ca)

2. Adds Shuttle chair restraints. [Sprite ported from
Aurora](https://github.com/Aurorastation/Aurora.3/blob/master/icons/obj/structure/chairs.dmi),
though altered a decent amount. They flip up with no one seated and flip
down when someone buckles, but they have no gameplay effects (ie, they
don't require a do-after, they don't block hands, etc etc)


![image](https://github.com/user-attachments/assets/4118a174-2443-4da2-8126-649dccfdcb65)


![image](https://github.com/user-attachments/assets/d40fb7b4-f7d2-4052-8f6c-41dfda62cf95)

3. Some objects now have unique feedback messages for buckling - you sit
on chairs, or lay down on beds. This message will change depending on if
the mob is restrained, so it's a bit more obvious when someone is tied
to a chair vs just sitting down.


![image](https://github.com/user-attachments/assets/9ea1da9f-ae25-4008-8ca4-8202f7508290)

4. If you're buckled on a shuttle which has "knockdown" force, you won't
be paralyzed - instead, just knocked down and immobilized for a short
period (so you can still use your hands / act).

## Why It's Good For The Game

1. Gives mappers some additional fluff for shuttles, especially if their
shuttle has knockdown force.

2. Adds muh immersion to shuttle rides. Just a flavor thing.

3. Adds muh immersion to sitting down at the bar. Again just a flavor
thing.

4. I did this to make handrails work, but I can find an alternate
workaround if so desired.

## Changelog

🆑 Melbert, sprites from Baystation / Aurorastation
add: Adds grabbable handrails (mapper only for now)
image: Adds a visual effect to buckling to shuttle seats
qol: Different objects have different chat messages for buckling. 
qol: If you're buckled in on a violent shuttle ride, you will be knocked
down and immobilized, but not fully stunned (ie: can still use hands).
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2025-06-09 17:40:48 +00:00
SmArtKarandGitHub 7f693d1395 Allows attaching breath masks and tanks to operating tables (#91112)
## About The Pull Request

Air tanks (ones that can slot into tank holders) and breath masks
(normal, surgical and muzzle, which has been repathed to be a subtype of
breath masks instead of being a subtype of a muzzle, for some reason)
can now be attached to operating tables, and removed using
wrenches/screwdrivers respectively.
Right-clicking on an operating table with a mask attached will put it in
your hand akin to defib paddles (similarly snapping back if you walk
away). Dragging the table with an attached tank onto the person lying on
it will attempt to connect their internals to the attached tank.

Also since I had to adjust the table sprite, its lights now change color
based on whenever there's an active patient and an active operating
computer.

##### This is a commission for Improvedname/Ezel

## Why It's Good For The Game

Anesthetics are incredibly clunky to use, as either the person
themselves, or you as a surgeon, need to equip the tank onto whoever is
being operated on, then equip and activate the mask. This should make
them a bit less tedious, so maybe they'll actually see some use.

## Changelog
🆑
add: You can now attach anesthetic tanks and breathing masks to surgical
tables.
/🆑
2025-06-09 16:29:02 +01:00
_0StevenandRoxy 36cdf384ba Fixes bugs related to transferring items to turfs, splits doing that off from dropItemToGround(...) (#91326)
## About The Pull Request

Closes #91131.
The author currently has other priorities, and as I need it for
something else I am finishing it myself with the author's blessing.

Recently, we turned `transferItemToLoc(...)` into a proc intended to be
for transfers to non-turfs, with it now playing an animation to reflect
that.
However, this had the effect of leaving us with `dropItemToGround(...)`
for mob>turf transfers, which isn't _ideal_. It sends an 'item dropped'
signal, it randomizes offsets, and using it to transfer to a
non-`drop_location()` loc was implemented as an afterthought.

So in this pr we create a new proc, `transfer_item_to_turf(...)`, that
separates off the actual transferring, setting offsets, and animating
into its own proc.
Then `dropItemToGround(...)`, tables, racks, easels, closets, hoops,
beds, conveyor belts, pin the tail corgi posters, some other stuff, and
the `floor_placeable` element call such each with their own preferred
arguments.
While we could leave setting offsets out of it, because setting the
offsets after calling the animation works just fine, having them be set
before the animation felt like a more intuitive flow.

...While I would love to refactor the easel's incredibly questionable
`attackby(...)`, that is outside of the scope of this pr.

## Why It's Good For The Game

Fixes #91082.
Less jank 👍

## Changelog
🆑
fix: Placing an item on a table/turf via the alt-click menu actually
centers it, again.
fix: Certain items, like canvases or syringe guns, are no longer weirdly
offset when placed on tables.
fix: Placing items on racks, closets, crates, hoops, beds, conveyor
belts, and pin the tail corgi posters is animated again, instead of
instantly teleporting followed by the pickup animation.
fix: Placing a canvas on an easels no longer applies a random offset as
if dropped.
fix: Tucking in someone else actually animates the bedsheet from you to
them, instead of from them to them.
qol: Placing a canvas on an easel is animated.
/🆑
2025-06-05 19:47:40 -04:00
_0StevenandGitHub 412115c9b9 Fixes bugs related to transferring items to turfs, splits doing that off from dropItemToGround(...) (#91326)
## About The Pull Request

Closes #91131.
The author currently has other priorities, and as I need it for
something else I am finishing it myself with the author's blessing.

Recently, we turned `transferItemToLoc(...)` into a proc intended to be
for transfers to non-turfs, with it now playing an animation to reflect
that.
However, this had the effect of leaving us with `dropItemToGround(...)`
for mob>turf transfers, which isn't _ideal_. It sends an 'item dropped'
signal, it randomizes offsets, and using it to transfer to a
non-`drop_location()` loc was implemented as an afterthought.

So in this pr we create a new proc, `transfer_item_to_turf(...)`, that
separates off the actual transferring, setting offsets, and animating
into its own proc.
Then `dropItemToGround(...)`, tables, racks, easels, closets, hoops,
beds, conveyor belts, pin the tail corgi posters, some other stuff, and
the `floor_placeable` element call such each with their own preferred
arguments.
While we could leave setting offsets out of it, because setting the
offsets after calling the animation works just fine, having them be set
before the animation felt like a more intuitive flow.

...While I would love to refactor the easel's incredibly questionable
`attackby(...)`, that is outside of the scope of this pr.

## Why It's Good For The Game

Fixes #91082.
Less jank 👍

## Changelog
🆑
fix: Placing an item on a table/turf via the alt-click menu actually
centers it, again.
fix: Certain items, like canvases or syringe guns, are no longer weirdly
offset when placed on tables.
fix: Placing items on racks, closets, crates, hoops, beds, conveyor
belts, and pin the tail corgi posters is animated again, instead of
instantly teleporting followed by the pickup animation.
fix: Placing a canvas on an easels no longer applies a random offset as
if dropped.
fix: Tucking in someone else actually animates the bedsheet from you to
them, instead of from them to them.
qol: Placing a canvas on an easel is animated.
/🆑
2025-06-01 00:59:56 +00:00
Joshua KidderandRoxy 5e9a2224be Further advances in the pioneering field of animation-ing; putting stuff in machines, taking stuff out of machines, putting stuff in nearby containers (#90895)
## About The Pull Request

Putting stuff into and removing things from machine now plays a little
animation, and putting stuff INTO nearby containers now also plays an
animation. Putting stuff into containers on your person still does not
play an animation.
## Why It's Good For The Game



https://github.com/user-attachments/assets/68cd7db8-1349-4ae3-a5bc-7082839749dd
## Changelog
🆑 Bisar
image: Animations have been added to inserting/removing items from
machines, and to inserting things into containers that are not on your
person.
/🆑
2025-05-08 19:20:01 -04:00
Joshua KidderandGitHub 86f2347892 Further advances in the pioneering field of animation-ing; putting stuff in machines, taking stuff out of machines, putting stuff in nearby containers (#90895)
## About The Pull Request

Putting stuff into and removing things from machine now plays a little
animation, and putting stuff INTO nearby containers now also plays an
animation. Putting stuff into containers on your person still does not
play an animation.
## Why It's Good For The Game



https://github.com/user-attachments/assets/68cd7db8-1349-4ae3-a5bc-7082839749dd
## Changelog
🆑 Bisar
image: Animations have been added to inserting/removing items from
machines, and to inserting things into containers that are not on your
person.
/🆑
2025-05-08 09:38:51 +12:00
MrMelbertandShadow-Quill 6edd45a1ed Does my wooden table smashing reviews (#90569)
I left these reviews but didn't draft it and it got merged. (#89826)
2025-04-29 17:51:08 -06:00
334ed643a5 Allows you to put people through wooden tables, like a wrestling match. (#89826)
## About The Pull Request
<img width="161" alt="image"
src="https://github.com/user-attachments/assets/af923130-b928-4a66-a428-619f37f48616"
/>

Simply put, wooden tables (aka, both wood legs and top) have a 1 in 5
chance to break like glass ones when you stand on them.


## Why It's Good For The Game

More potential for funny, but harmless chaos is always nice, and given
wrestling is probably the most commonly played sport in this game, being
able to do tables matches felt fitting - but please do not let this pull
request distract you from the fact that in 1998, The Undertaker threw
Mankind off Hell In A Cell, and plummeted 16 ft through an announcer's
table.

## Changelog
🆑 Webcomicartist
add: People shoved onto wooden tables now have a 1 in 3 chance to break
it, for all your wrestling needs - but please do not let this pull
request distract you from the fact that in 1998, The Undertaker threw
Mankind off Hell In A Cell, and plummeted 16 ft through an announcer's
table.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2025-04-29 17:49:25 -06:00
BloopandShadow-Quill 4148bc92b6 Fixes the flipped table spawners (#90518)
## About The Pull Request

They weren't actually working turns out. There was a race condition with
icon smoothing, so it needs to be flipped after the table gets smoothed.
On top of that the dir wasn't being passed properly.

## Why It's Good For The Game

Stuff that actually works!

This will allow for things like this on mapload:


![image](https://github.com/user-attachments/assets/372297d7-2a30-4d85-8e89-91d14fd584d7)


## Changelog

🆑
fix: fixes flipped table spawners not initializing correctly
/🆑
2025-04-29 17:49:24 -06:00
268c088da7 Adds table flipping! Take 2.0 (#90156)
## About The Pull Request
Revives the long dead #80348. Right click a table to flip it over,
Useful for makeshift cover or ragequitting. Their integrity is equal to
that of the table you flipped. Some tables aren't able to be flipped
(reinforced tables, roller tables, etc).

I refactored it to be less snowflakey. so hopefully this passes with
only minor changes

![290775902-48414bb3-aaa9-467d-8edf-a170a98b1506](https://github.com/user-attachments/assets/3627c537-043e-4829-b38b-f68a7d382167)

![gambar](https://github.com/user-attachments/assets/ce04a6d1-e480-46f9-8913-041f86db8a9a)
## Why It's Good For The Game
I felt like we're lacking in the makeshift defense items. This is a
quicky way to plop up a shitty barricade for you to guard with. and also
really cool for roleplaying and such. also, this categorically goes
hard:

![gambar](https://github.com/user-attachments/assets/af593068-d9f3-49b0-9102-989ce2b4d3fb)
## Changelog
🆑
add: You can now flip tables by right clicking them!
/🆑

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2025-04-29 17:09:22 -06:00
MrMelbertandGitHub 52ece11d9d Does my wooden table smashing reviews (#90569)
I left these reviews but didn't draft it and it got merged. (#89826)
2025-04-13 00:55:36 -04:00
4e4cd7667c Allows you to put people through wooden tables, like a wrestling match. (#89826)
## About The Pull Request
<img width="161" alt="image"
src="https://github.com/user-attachments/assets/af923130-b928-4a66-a428-619f37f48616"
/>

Simply put, wooden tables (aka, both wood legs and top) have a 1 in 5
chance to break like glass ones when you stand on them.


## Why It's Good For The Game

More potential for funny, but harmless chaos is always nice, and given
wrestling is probably the most commonly played sport in this game, being
able to do tables matches felt fitting - but please do not let this pull
request distract you from the fact that in 1998, The Undertaker threw
Mankind off Hell In A Cell, and plummeted 16 ft through an announcer's
table.

## Changelog
🆑 Webcomicartist
add: People shoved onto wooden tables now have a 1 in 3 chance to break
it, for all your wrestling needs - but please do not let this pull
request distract you from the fact that in 1998, The Undertaker threw
Mankind off Hell In A Cell, and plummeted 16 ft through an announcer's
table.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2025-04-11 18:27:59 +02:00
BloopandGitHub 901d562e4d Fixes the flipped table spawners (#90518)
## About The Pull Request

They weren't actually working turns out. There was a race condition with
icon smoothing, so it needs to be flipped after the table gets smoothed.
On top of that the dir wasn't being passed properly.

## Why It's Good For The Game

Stuff that actually works!

This will allow for things like this on mapload:


![image](https://github.com/user-attachments/assets/372297d7-2a30-4d85-8e89-91d14fd584d7)


## Changelog

🆑
fix: fixes flipped table spawners not initializing correctly
/🆑
2025-04-09 22:36:28 -06:00
Waterpig 753d8e5ba4 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a 2025-04-08 18:58:45 +02:00
0107aecc73 Adds table flipping! Take 2.0 (#90156)
## About The Pull Request
Revives the long dead #80348. Right click a table to flip it over,
Useful for makeshift cover or ragequitting. Their integrity is equal to
that of the table you flipped. Some tables aren't able to be flipped
(reinforced tables, roller tables, etc).

I refactored it to be less snowflakey. so hopefully this passes with
only minor changes

![290775902-48414bb3-aaa9-467d-8edf-a170a98b1506](https://github.com/user-attachments/assets/3627c537-043e-4829-b38b-f68a7d382167)

![gambar](https://github.com/user-attachments/assets/ce04a6d1-e480-46f9-8913-041f86db8a9a)
## Why It's Good For The Game
I felt like we're lacking in the makeshift defense items. This is a
quicky way to plop up a shitty barricade for you to guard with. and also
really cool for roleplaying and such. also, this categorically goes
hard:

![gambar](https://github.com/user-attachments/assets/af593068-d9f3-49b0-9102-989ce2b4d3fb)
## Changelog
🆑
add: You can now flip tables by right clicking them!
/🆑

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2025-04-03 03:11:27 +01:00
_0StevenandGitHub 3b73af32c5 Table frame interaction refactor (#89880)
## About The Pull Request

So I was looking for `attackby(...)` instances to kill and, hey look,
table frames- oh what the fuck is this.
Oh why does this have the same checks like five times, across the parent
type and subtypes.

So this pr's primary point is to refactor the table frame
`attackby(...)` into `item_interaction(...)`, and by extension lower the
amount of weird `attackby(...)` override jank going on with them.
Instead of having all of the subtypes define their own almost exactly
the same table construction interactions, we use a single generic
interaction chain and add a new `get_table_type(...)` proc to let
subtypes override what tables to construct for what stacks.

We also move the assigning of frame-and-stack-related things to the
actual table types themselves, instead of specifying all these
interactions on the frame.

We also add screentips for deconstruction and table construction, again
using the `get_table_type(...)` proc so screentips can differentiate
between which stacks can and can't make a table for our table without
needing to change the screentips manually for the subtypes.

Beyond that is mostly generic clean-up.

I'm a bit icky on my implementation of
`/obj/item/stack/proc/get_table_type()`, because of hardcoding for
`/obj/structure/table/greyscale`, but I think it's better than the
alternatives.
This lets us use the old method of letting all `/obj/item/stack/sheet`
subtypes use the generic material table, but limit it to working as long
as they define a `material_type`. I feel it's better than letting broken
tables exist, needing to hardcode it on the table frame, or needing to
expect people to add the generic material table `table_type` whenever
they add a `material_type` (no one would do this).
## Why It's Good For The Game

Screentips good 👍
Less jank encountered good.
Specifically the inability to deconstruct table frames on right click
when tables can be deconstructed on right click has thrown me off so
many times it's wild.
## Changelog
🆑
refactor: Refactored table frame interactions, please report any issues.
fix: You can no longer make material-less material tables out of certain
items.
fix: Fancy tables remember which carpet was used to make them, and no
longer magically transmute carpets into simpler types.
fix: You can no longer stack abductor table frame-using tables
specifically.
qol: Added screentips for deconstructing table frames and constructing
tables out of them if the material you're holding can do so.
qol: Table frames can now also be deconstructed on right click for
parity with tables, in addition to left click.
qol: Table frame interactions use balloon alerts.
/🆑
2025-03-17 02:14:43 +01:00
52678d41b5 Everyone is kung fu fighting: Refactors martial arts / You can have multiple martial arts and swap between them (#89840)
## About The Pull Request

Refactors martial arts off the mind. Don't worry the martial arts you
learn still transfer with mindswap

Instead, they are just tracked on a list on the mob, and they also
independently track the datum that created them

This fixes a lot of jank with martial arts, like say, having your krav
maga gloves transfer across slime clones or something...

But it also opens an opportunity: As we track all martial arts
available, I added a verb (ic tab) that lets you swap between the ones
you know


![image](https://github.com/user-attachments/assets/6db1fc14-2859-444b-88ed-773962602f85)

(Some don't let you swap like that one brain trauma)

## Why It's Good For The Game

Aforementioned fixes a lot of jank

Recently martial arts have just been up and disappearing and this was
entirely spurred on by that bug

Probably fixes #84710 (haven't checked) 
Probably fixes #89247
Probably fixes #89948
Probably fixes #90067

## Changelog

🆑 Melbert
refactor: Refactored martial arts, if you notice any oddities like
managing to know two martial arts at once or having your powers
disappear, report it!
add: If you know multiple martial arts, such as krav maga from gloves
and cqc from a book, you can now swap between them at will via a button
in the IC tab!
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2025-03-16 03:16:49 +00:00
MrMelbertandRoxy 5a16f74fb3 Pixel adjustments to mobs are now sourced / Refactors riding (#89320)
Fixes #85980

- Pixel adjustments are now sourced

When tweaking a mob's pixel w, x, y, z, is is now done via `add_offsets`
and must have a source string associated

- Refactors riding

Refactors how riding component selects the offsets to use. It's now all
done via the getter rather than a weird mix of a var, a cache, and a
getter.

- Moves a bunch of animations to use `pixel_w` / `pixel_z`

Largely to prevent conflicts with adjustments to a mob's pixel position,
but also as many animations are not actual movements, but visual
movements. Floating is one such example.

It just works

🆑 Melbert
fix: Fixed grab offsets not showing for anything but passive grab
fix: Fix jank with mob offsets when riding things
refactor: Refactored riding component, particularly how it selects layer
and offsets. Report any oddities
refactor: Refactored pixel offsets of mobs. Report any oddities
/🆑
2025-03-12 16:00:01 -04:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00