Commit Graph

5259 Commits

Author SHA1 Message Date
Ben10Omintrix
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
jimmyl
089059d7d3 atmospherics shield generator (#91055)
## About The Pull Request

(old video)


https://github.com/user-attachments/assets/4b04c372-05a2-4bab-b4a4-1b2c965061e5

unlocked by holographics research
put two facing eachother and turn one on to make a field that blocks
atmos, if not obstructed by wall
fields cannot be broken or clicked but the generators may (theyre
relatively weak)
requires external airlock access or apc access
uses area power, environmental channel
may be locked
may be screwed open to access wiring, has 1 wire that just toggles it

changes tiny fans on stations to use those

## Why It's Good For The Game

a better and rebuildable alternative to magic tiny fans 

## Changelog
🆑
add: atmospherics shield generator, unlocked by Holographics research
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-06-10 15:31:43 +02:00
MrMelbert
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
SmArtKar
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
Ghom
14fb86e3e8 Mutation code cleanup, mutations now have sources to avoid concurrency problems. (#91346)
## About The Pull Request
This PR aims to clean or bring up to date portions of code about dna,
the dna console and mutations. This includes taking care of or removing
some of the awful choices like the pratically useless
`datum/mutation/human` pathing, or the class variable, in favor of using
sources to avoid potential issues with extraneous sources of a mutation.

The files changed are over a hundred just because I removed the
`datum/mutation/human` path, but the actual bulk of the code is mainly
shared between the datum/dna.dm, _mutations.dm and dna_console.dm.

## Why It's Good For The Game
Mutation shitcode is hurting my future plans for infusions a little.
Also it's a much needed refactor. Drafted 'till I'm sure it works
without issues.

## Changelog

🆑
refactor: Refactored mutation code backend. Report any issue.
/🆑
2025-06-08 13:57:10 +02:00
Bloop
2bae025bfe Audits wash/cleaning signals + refactors wash() to ensure no needless mob updates occur (#91259)
## About The Pull Request

This has the potential to create a lot of needless mob updates which is
not great. Now should only update a mob's clothing if it was actually
washed.

This PR

1) ensures that all wash() procs return a bitflag.
2) ensures that `wash()` proccalls which result in expensive operations
like icon updates only do so when it is necessary

## Why It's Good For The Game

Updating mob sprites is expensive, and doing it when nothing has been
changed is bad.

## Changelog

Nothing really player facing
2025-06-02 18:54:53 +00:00
Ghom
4f6727024d Crafting refactor, implementing materials (#89465)
## About The Pull Request
My original plan was to just implement materials into crafting so that
items would inherit the materials of their components, allowing for some
interesting stuff if the material flags of the item allow it. However to
my dismay crafting is a pile of old tech debt, starting from the old
`del_reqs` and `CheckParts` which still contain lines about old janky
bandaids that are no longer in use nor reachable, up to the
`customizable_reagent_holder` component which has some harddel issues
when your custom food is sliced, and items used in food recipes not
being deleted and instead stored inside the result with no purpose as
well as other inconsistencies like stack recipes that transfer materials
having counterparts in the UI that don't do that.

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

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

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

## Changelog

🆑
refactor: Refactored crafting backend. Report possible pesky bugs.
balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge
different because of code standardization.
/🆑
2025-06-01 16:37:43 -07:00
John Willard
c51ee7efa5 Cyborgs now use storage datum (#90927)
## About The Pull Request

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

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


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

## Why It's Good For The Game

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

## Changelog

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

---------

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

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

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

- Closes #91039 

#### Examples

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


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

![dreamseeker_zyv9ssh5VN](https://github.com/user-attachments/assets/7b112854-b7e3-4bfe-b78b-199a55b5b051)
2025-05-31 19:38:07 -05:00
carlarctg
4ac2974e95 Adds support for PVP Bitrunning Domains (#89798)
## About The Pull Request

Adds support for PVP bitrunning domains. If min/max candidates are set
above 0, the virtual domain will search for any ghost spawners inside
and cause a randomly-selected ghost that signed up via poll to spawn
there. If no ghosts are signed up the process is cancelled.

Also adds content for them:
An outfit wardrobe that lets you select one of several possible outfits,
once.

![image](https://github.com/user-attachments/assets/485d854d-d0c4-43b8-9dc4-75fa9dd2f17f)

Not confident in my code, it's been in the works (as part of a
now-canned library heretic domain thing) for over a year
## Why It's Good For The Game

PvP domains are an underexplored concept. The beach domain is cloying
and overly simple. This adds support for newer and cooler domains as
long as there are ghosts for them.
## Changelog
🆑
code: Adds support for PVP Bitrunning Domains
/🆑
2025-05-31 13:33:47 +00:00
SmArtKar
a5eed384ce Colorblindness now prevents you from seeing wire colors (#91315)
Being colorblind now makes you see all wires in tones of grey.

Also fixes the eyechart not taking the monochromacy quirk into account
when checking for colorblindness

Makes the quirk/trauma a bit more immersive and can lead to funny
situations when you know which color to cut but can't find it.
2025-05-28 09:45:20 -04:00
Y0SH1M4S73R
9b54dbf974 Adds usb support to advanced camera consoles (#91235)
## About The Pull Request

This PR adds usb functionality to advanced camera consoles.

The advanced camera console component gets the last valid position
viewed from the console, which is usually the current viewed position,
unless you move the view into static.

The advanced camera target intercept outputs the position you left/right
click (except shift-clicking), and what you clicked on. This only works
for atoms the camera can actually see, even if you somehow glitch your
way into not seeing static on your client.

Equipment action components on circuits attached to a camera console
will add their actions to be used from the console.

## Why It's Good For The Game

Expands the use cases for the advanced camera console, providing a means
to extend their functionality, as well as a potentially powerful source
of input data for circuit users able to acquire illegal tech (or get the
board from a space ruin).

## Changelog

🆑
add: Advanced camera consoles now have usb ports. Connected circuits can
get the position the camera is viewing, get the location of targeted
entities, and provide the console with actions that the user can
activate.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2025-05-27 14:06:13 +12:00
Bloop
cb51a652a9 Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
## About The Pull Request

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

What this PR does:

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


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

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


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


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

</details>

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


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

</details>

---

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

Note for Spriters:

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

Note for Server Operators:

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


## Why It's Good For The Game

No more error icons in SDMM and loadout.

## Changelog

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

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-24 15:21:02 -07:00
LT3
53feeb12e3 Tram info plate [NO GBP] (#91062)
## About The Pull Request

Updates the tram info plate to the version integrated in the normal tram
wall, inadvertently replaced by the wallening floor plate.

<details>
<summary>Screenshot</summary>


![image](https://github.com/user-attachments/assets/3b3911a9-b91d-4fd7-89e4-5af17b2b2033)


![image](https://github.com/user-attachments/assets/8cb0eb94-400a-44b9-8ed7-90755cd7a191)

</details>

## Why It's Good For The Game

The floor mounted version was for a different tram.

## Changelog

🆑 LT3
image: Tram information plate is mounted properly on the wall again
/🆑
2025-05-22 08:39:37 +12:00
MrMelbert
315e84bca2 Adding space cleaner or water to a rag will consume as you clean to keep it fresher for longer (#91239)
## About The Pull Request

Follow up to #90700 because I had some ideas to expand upon it after the
fact

- Removes some now dead code in the sink. It can't reach these anymore
AFAIK.

- Makes use of the new blood helper.

- You can use spray bottles directly on rags and it will transfer
reagents from the spray to the rag.

- Rags with space cleaner in them will be more effective at cleaning
messes - the cleaner will be consumed to avoid bloodying the rag
entirely, allowing you to clean longer without needing to refresh the
rag.
- This is slightly more effective than just using space cleaner spray
alone in some situations (cleaning up footsteps), but slightly less
effective in others (full on pools of blood).
- Other "cleaning" reagents like Water will also have this effect, but
drastically weaker than space cleaner.

## Why It's Good For The Game

Being able to combine cleaning types is (kind of) the pinnacle of
janitor gameplay. I'm sure every janitor has had the epiphany that a mop
bucket full of space cleaner could be awesome, for example.

So thought "how do people ACTUALLY use rags? with a cleaning agent" - I
figured people spritzing a rag before wiping stuff down would pretty
easily transfer to SS13

## Changelog

🆑 Melbert
add: Adding Space Cleaner or Water to a rag will consume it as you clean
to keep the rag fresher for longer.
add: You can spray a rag with a spray bottle directly to transfer
reagents over.
/🆑
2025-05-20 21:19:15 -04:00
MrMelbert
5261efb67f Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request

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

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

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

## Changelog

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

The 2x damage modifier spears apply to lockers is now also applied on
thrown hit, rather than only on attack.

## Why It's Good For The Game

I believe this to be an oversight from when we codified
spear-locker-breaking. I see no reason as to why both methods wouldn't
work, and it makes it a bit less obtuse of an interaction (especially
for the boomers).

## Changelog

🆑 Melbert
fix: Spear 2x damage multiplier to secure lockers is now also applied on
thrown hit.
/🆑

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2025-05-17 18:05:53 +00:00
Tim
e698c965b3 Fix map_export admin verb not saving objects properly (#90998)
## About The Pull Request

When using the `map_export` admin verb the following things are fixed:
- All objects density, anchored, opacity, atom_integrity, and
resistance_flags vars are saved
- Multi-tile objects being spammed on all tiles the sprite reaches
- Dirt decals error icon
- Airlocks error icon and to save welded state
- Dark Wizard Simple Mobs error icon
- Closets to save welded, open, and locked states
- Air alarms to save name
- Air scrubbers/vents to save name and welded states
- APCs to save name, charge, cell, lighting, equipment, and
environmental states
- APCs spawning a duplicated terminal underneath it when one already
exists
- SMES to save charge, input, and output states
- Holodecks to revert any holodeck turfs to the empty turf and skip
saving any hologram items
- Photos and Paintings error icons
- Bloody Footprints error icons
- False Walls error icons
- Docking Ports runtimes because the map template var would change
- Effects (lasers, portals, beams, sparks, etc.) saving when they should
be omitted

I would have loved to get `component_parts` to save for machines and
turf decals, but perhaps that is for another day since it requires
complicated solutions.

Here are some before and after pictures:


![StrongDMM_209k6PXSaQ](https://github.com/user-attachments/assets/27f0a80b-3cbc-4862-a218-612d52fa0e4f)


![StrongDMM_5PdRfLTZ4l](https://github.com/user-attachments/assets/3bbfd724-4b51-47c5-8cff-02687250fc1e)


![StrongDMM_F4DPOGz5K7](https://github.com/user-attachments/assets/1130ded8-3062-469a-ad4a-d437d89a68da)


![StrongDMM_BIa554dsGv](https://github.com/user-attachments/assets/440d6b38-dbbf-47c0-ad9a-5165504d104e)

## Why It's Good For The Game
Better map saving code.

## Changelog
🆑
fix: Fix `map_export` admin verb not properly saving a massive amount of
objects.
/🆑
2025-05-16 22:43:09 -07:00
MrMelbert
685ca9db69 [MDB Ignore] Damp Rag can now get dirty / Repaths damp rag (it's no longer a cup) (#90700)
## About The Pull Request

- Damp rag is now no longer god's perfect cleaning tool. After blood,
the damp rag will collect it, and after cleaning a lot of blood, you can
no longer clean with the rag until you wash it in a sink (or with
cleaner or however you want)
- This means the rag will collect DNA in it as you clean, which gives
detectives an opportunity to investigate.
- It also means the DNA it collects will occasionally spread onto you,
meaning you will have to clean your gloves or hands.
- Cleaning vomit and such is (currently) unaffected (and does not dirty
the rag).
- Diseases are not currently transferred to the rag (but this would be
fun to add)

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

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

- Damp rag is no longer a cup.

## Why It's Good For The Game

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

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

## Changelog

🆑 Melbert
balance: Damp Rags can now get dirty when using them to clean blood,
passing blood DNA along.
add: Gauze now gets dirty when apply it to actively bleeding wounds.
Doesn't spread disease or anything, just passes blood DNA. It can be
cleaned in a sink.
del: Removed cloth on sink / gauze on sink interaction to make rags.
Just use the crafting menu
/🆑
2025-05-16 13:49:27 -07:00
Lucy
55025e40e5 Fixes false walls not properly smoothing with objects (#91113)
## About The Pull Request

Port of my downstream fix,
https://github.com/Monkestation/Monkestation2.0/pull/6622

This makes it so false walls properly restore `SMOOTH_OBJ` to their
`smoothing_flags` when closed.

<details>
<summary><h3>Before Fix</h3></summary>


https://github.com/user-attachments/assets/81000516-1cba-4d3c-988e-51582ed2741d

</details>

<details>
<summary><h3>After Fix</h3></summary>


https://github.com/user-attachments/assets/01cbbf04-b3d5-4e71-8a20-6bee77a6ab21

</details>

## Why It's Good For The Game

because having multiple false walls next to each other that look weird
after u open them once is annoying.

## Changelog
🆑
fix: False walls properly smooth with objects now, such as other false
walls.
/🆑
2025-05-16 17:00:45 +03:00
SmArtKar
a967549577 Fixes fireplace particle positioning (#91169)
## About The Pull Request

Closes #91150, fireplace lighting seems to be functional

## Changelog
🆑
fix: Fixed fireplace particle positioning
/🆑
2025-05-16 16:57:00 +03:00
OnlineGirlfriend
72436b9b8d [Ready] Add girlypop posters (#91102) 2025-05-13 01:57:43 -04:00
MrMelbert
51f7ac38db You fall down stairs if staggered (or in hard crit, or dead) (#90973)
## About The Pull Request

Trying to travel down stairs while staggered (like from a shove) will
result in you falling down the stairs

This means shove + shove results in someone tumbling down (but not just
a single shove)


https://github.com/user-attachments/assets/e5a9eaa5-28c7-4096-ac65-5f44a11196fd

## Why It's Good For The Game

Combats stair combat with stair combat. (Stair swapping is annoying and
jank, but giving players a way to punish stair swapping would help
counteract that.)

## Changelog

🆑 Melbert
balance: If you're staggered, and try to walk down stairs, you'll
instead fall down the stairs (stunning and causing damage).
balance: Hard crit and dead people will also roll down the stairs.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-05-10 14:33:58 +02:00
Joshua Kidder
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
Dani Glore
057dbf13b1 Add: Silicon Gender Preference (#90879)
## About The Pull Request

This PR adds a secondary character preference which allows you to pick
gender for silicon characters, and have the option of matching or
separating that with their character's main gender. Silicon gender is
displayed in their examine text as expected.

## Why It's Good For The Game

People will have a way to identify the gender of their characters when
playing as a cyborg and AI!

## Changelog

🆑 A.C.M.O.
add: Adds an option for picking silicon gender to secondary character
preferences. Matches the main gender preference by default.
add: Adds gender pronouns in cyborg/AI examine text.
/🆑
2025-05-03 01:20:36 -07:00
grungussuss
218255e33b fixes zeno's paradox for rust_heretic_act on windows (#90891)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
closes https://github.com/tgstation/tgstation/issues/90705
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

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

## Changelog

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

🆑 grungussuss
fix: fixed rust heretic hand not being able to destroy windows or
windoors
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
2025-05-02 16:55:51 +02:00
LemonInTheDark
a0a07e9f40 Unfucks /datum/browse code (#89994)
## About The Pull Request

What it was doing was by and large fine, HOW it was doing it SUCKED 
I've cleaned it up and the nearby code some, notable hits include: 
- random if check in secrets ui that was totally unused
- proc called add that actually set 
- lists not defined as such
- stupid var names
- proc args which did nothing
- code which did nothing
- oververbose code
- proc/var names with no spacing at all

Note: This might have changed behavior accidentally, I've done my best
to test but we'll need to look out for issue reports in coming days.

## Why It's Good For The Game

I was working on bitflag code and saw red, now it's 2 hours later.

## Changelog
🆑
code: Brought browser code up to standard with the rest of the codebase
admin: Hey lads, I cleaned up how non TGUI windows work on the backend,
please let me know if anything is broken! PING ME MOTHERFUCKER
/🆑
2025-04-25 17:36:34 -04:00
necromanceranne
6867da7943 Resolves some specific object repair behaviours not being acknowledged by duct tape (#90817)
## About The Pull Request

When duct tape repairs mechs, windows or clothing, it properly updates
icons and other effects that normally occur when repaired.

## Why It's Good For The Game

It ends up creating some weird interactions due to directly repairing
the objects integrity.

## Changelog
🆑
fix: Duct tape properly updates the various icons and visuals of mechs,
windows and clothing that it repairs.
/🆑
2025-04-25 15:36:45 +00:00
Ghom
339616ae78 You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request
People can now pet held mothroaches and pugs if they want to, or use
items on them, hopefully without causing many issues. After all, it only
took about a couple dozen lines of code to make...

...Oh, did the 527 files changed or the 850~ lines added/removed perhaps
catch your eye? Made you wonder if I accidentally pushed the wrong
branch? or skewed something up big time? Well, nuh uh. I just happen to
be fed up with the melee attack chain still using stringized params
instead of an array/list. It was frankly revolting to see how I'd have
had to otherwise call `list2params` for what I'm trying to accomplish
here, and make this PR another tessera to the immense stupidity of our
attack chain procs calling `params2list` over and over and over instead
of just using that one call instance from `ClickOn` as an argument. It's
2025, honey, wake up!

I also tried to replace some of those single letter vars/args but there
are just way too many of them.

## Why It's Good For The Game
Improving old code. And I want to be able to pet mobroaches while
holding them too.

## Changelog

🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑
2025-04-23 20:18:26 +00:00
SmArtKar
b626509622 [MDB IGNORE] Implements an automatic nearstation area tiler (#90660)
## About The Pull Request

Space turfs will now assign the nearspace area to themselves whenever
they're replaced, or lattice or catwalks are placed ontop of them. This
fixes lighting missing from player-created space structures until they
create a custom area, and resolves a similar issue with shuttle
ceilings. To track this we had ceilings spawn the "shit be fucked"
marker whenever they were created outside of nearspace, which is now
gone.
Shuttles bypass this autotiler for non-space areas, because they'd
replace it anyways.

**This does not work on mapload to cut down on init times**, mappers
still have to place nearstation areas on their maps where they place
some sort of a structure in space. They do not have to do this for
shuttle landing areas now, however.

Closes #84597

## Why It's Good For The Game

Shit be fucked markers created by ceilings are a god awful solution
because we have player-controlled shuttles with custom positioning, so
every time you moved a shuttle to a bottom level of any multiz map, you
get a bunch of them on your shuttle's roof.

## Changelog
🆑
fix: Fixed "shit be fucked" errors and missing lighting on shuttle
ceilings docked to bottom z levels of multiz maps
/🆑
2025-04-21 02:54:09 +02:00
SyncIt21
9bd45e2f3a Part 3: Storage Improvements (#90476)
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-04-20 12:02:29 +00:00
Wallem
b3d0dfa40a Ports some signs from the wallening & updates various others (#90581)
Updated a whole bunch of signs
2025-04-17 16:58:19 -04:00
FeudeyTF
85e547ab0d Detective Board UI update (#90591)
## About The Pull Request

I've updated the UI of the detective board to make it look more
detective-like. Also, it is not necessary to specify the name and
description of the evidence to be attached. If it is not specified,
these fields are taken from the item.



https://github.com/user-attachments/assets/51419478-5fa9-43d4-a903-992ab4f0c91d

(The detective smoked a cigar and is now coughing)

Before:

![old](https://github.com/user-attachments/assets/b900b488-8271-40df-ac7c-18b60c8f6bf5)
After:

![new](https://github.com/user-attachments/assets/6c9d19e7-d94b-4003-81b1-54d781fb62bc)

## Why It's Good For The Game

Better UI/UX

## Changelog

🆑 FeudeyTF
qol: Better UI/UX for detective's board
/🆑
2025-04-16 18:00:43 -07:00
John Willard
ff42163d0b Cult armor slowly kills non-cultists & can be exorcised. (#90557)
## About The Pull Request

Wizard and Cult armors were all thrown in randomly with all the rest of
the cult items so I moved them into their own files for organization,
documented each one, and made the hoodies copy the armor from the suit
they are apart of.

I also made 3 balance changes here:

1- Hardened cult armor (the spaceproof one), if worn by a non-cultist,
will cause random pierce and dislocation wounds to the wearer until they
take it off. From my personal testing this killed me in sub-3 minutes
while I was slower due to the dislocations.
2- Hardened cult armor can now be blessed with a bible, which will turn
it into a new set of chaplain armor. If the chap selected one already
then it'll be a new set, otherwise a random set.
3- The hardened cult armor found as icemoon loot has been replaced with
a new item, the wolf cloak, which is a hooded neck item that gives you a
wolf transformation spell


https://github.com/user-attachments/assets/597e259a-3de2-4d2e-a43a-7953ba5482dc

##### - Code bounty by Ezel/Improvedname

## Why It's Good For The Game

Hardened cult armor is the only type of cult suit that can be worn by
non-cultists, while every other gear has some way of stopping you
(including the blindfold and the flagellant's robes), this gives you
about 3 minutes time to use it and isn't a straight up "drop it lol".
For the blessing, it's a small interaction that gives one more thing
Chaplains can bless. Once Chaplains start blessing cult equipment we see
balance tipping in the station's favor, usually balance is not that much
of a concern, but this does give the Chaplain a way of expanding their
own experience (especially if they're Honorbound) in a round opening
more funny ways of roleplaying around a cult round.

## Changelog

🆑 Toriate, JohnFulpWillard
add: Adds a Wolf pelt cloak as an icemoon drop, replacing the hardened
Cult armor.
balance: Cult's hardened armor now deals bleeding and dislocating limbs
to non cultists who wear it, and can also be blessed into holy armor.
/🆑
2025-04-15 11:00:38 +00:00
Ben10Omintrix
a5b3e64c41 holograms now momentarily glitch out when u interact with them (#89689)
## About The Pull Request
adds a new visual effect for holograms ,such as holosigns and several
holoanimals, where they'll glitch out when walked through, attacked, or
when a thrown object passes through them


https://github.com/user-attachments/assets/5c18e48e-6ea5-4e57-a7d4-6a9323e317f5



## Why It's Good For The Game
i think its good for the sake of immersion. also, if pai players feel
like this might get annoying i have no problems excluding them from this
effect.

## Changelog
🆑
add: adds a new glitch-out effect for holograms when they're interacted
with
/🆑
2025-04-15 11:25:57 +01:00
SmArtKar
b49553bdf4 Refactors MODsuit module rendering and allows overslotted parts to show items they overslot when unsealed (#90414)
## About The Pull Request

MODsuit modules now render on the part they're attached to, that being
first part if required_slots is set, otherwise defaulting to the control
module. Instead of using icon ops and a cache, module masking (used by
armor boosters and insignias) will instead render the module on all
parts, each overlay alpha filtered using the worn piece as the mask. To
do this we also migrate modules to separate_worn_overlays, which fixes
the issue where they'd always get painted the same color as the back
piece, ignoring use_mod_colors's value (which is FALSE by default). So
now modules that inherit MOD's color like armor booster will be painted
accordingly to their piece.
This also means that modules actually layer properly, and don't go ontop
of items that they should be under.

Additionally, whenever gloves or boots overslot an item, the overslotted
item will still render underneath them if they're unsealed. Because it
looks weird when your gloves disappear when you extend your MODsuit
ones.


![dreamseeker_BaWjJBcMVO](https://github.com/user-attachments/assets/2b374913-7761-4b54-9bbd-cbd57d343fd6)

Look at that hip look, she'd have bare hands and ankles without this PR.

Closes #90370

## Why It's Good For The Game

Fixes a bunch of visual jank that looks weird, and overslotting
displaying overslotted item is just behavior you'd expect normally.

## Changelog
🆑
add: When a MODsuit piece overslots an item, it will now render beneath
that piece as long as its unsealed.
refactor: Refactored how MODsuit modules are rendered, report any bugs
on GitHub!
/🆑
2025-04-15 20:21:10 +12:00
MrMelbert
67dd51be79 Reworks language translations. Add partial language understanding. Bilingual update. (#90252)
## About The Pull Request

Fixes #89445 (well, technically. It fixes the bug associated but these
`say`s should really be emotes.)

Three things:

1. Reworks how language translation works.

Rather than scrambling a sentence into a language entirely, sentences
are now scrambled on a per-word basis.

Additionally, the 1000 most common words of a language are *never*
re-scrambled across the duration of a round. Once it's set it's set in
stone.

Example: (Sample / Old / New)


![image](https://github.com/user-attachments/assets/69be41fa-bc40-45f0-bd80-e24e799c9f38)

This allows for a number of things:

- More consistent translations, making it (more) viable to actually
"teach" someone words for something
- Maintaining emphasis such as caps (but not `||`, `++`, or `__` - at
least not yet)
- The following:

2. Adds partial language understanding

Some languages can understand portions of other languages.


![image](https://github.com/user-attachments/assets/b6eee2c7-f564-437b-8c7a-bd1d88a9b680)

This pr adds the following:
- Those who understand Beachtongue can understand 50% of Common and 33%
of Uncommon words.
- Those who understand Common can understand 33% of Beachtongue and 20%
of Uncommon words.
- Those who understand Uncommon can understand 20% of Common and 20% of
Beachtongue words.

3. Bilingual quirk has been expanded to accomodate these changes.

There are now two more preferences:
- Language Speakable
- You can toggle this, so you only understand the language, rather than
understand AND speak.
- Language Skill
- If you choose to be unable to speak the language, you can set how much
of the language you can understand, down to 10%.

## Why It's Good For The Game

Playing around languages is fun, but due to the way our translation
works, ALL context is immediately lost for what the other person may be
saying.

If the other person is shouting in all caps? Output language is normal
chatting. This is lame!

Even if someone is unable to understand you, there's a LOT you can
convey just by how you speak, and getting that across in game is quite
difficult when all translations get mauled so badly.

So this changes that. 

- Emphasis like caps lock is maintained, so you see someone shouting in
caps in a foreign language you can probably intuit something is wrong
(but not what is wrong!)
- Some languages can gleam bits of other languages, so you MIGHT be able
to pick out context if you pay close attention
- "Brother" languages will now feel more like "brothers" and not
completely divergent
- You can even "teach" someone words in your language - at least the
most common words! (Until next round)

## Changelog

🆑 Melbert
add: Languages can now have partial understanding of other languages.
More common English words are more likely to be mutually understood.
add: Those who understand Beachtongue can understand 50% of Common and
33% of Uncommon words.
add: Those who understand Common can understand 33% of Beachtongue and
20% of Uncommon words.
add: Those who understand Uncommon can understand 20% of Common and 20%
of Beachtongue words.
add: Bilingual quirk: You can now choose between being able to speak or
not speak the language
add: Bilingual quirk: You can now choose to have partial understanding
of your language, rather than full.
qol: If you speak in ALL CAPS in a foreign language, the translated
words will also be ALL CAPS.
qol: Many more forms of punctuation are now conveyed across
translations.
qol: The 1000 most common English words will now never be scrambled when
translating into other languages for the duration of the round. This
means you can actually "learn" some words if you are especially
attentive! (Until the next round at least)
refactor: Refactored language translations. Report if you see any super
odd looking translations.
fix: Force-says forcing you to speak common (such as cult invocations)
will now correctly force you to speak common (even if you don't know
common)
/🆑
2025-04-13 22:01:33 +01:00
MrMelbert
af0d361465 Demolition mod is inverted vs "soft" structures like spider webs (#90464) 2025-04-13 11:08:17 +02:00
SmArtKar
7b286d7e5b Fixes grilles not updating their overlays properly (#90520)
Caused by grilles weirdly hijacking their rendering code and preventing
any overlay updates which is baaad.
2025-04-13 01:01:50 -04:00
MrMelbert
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
KingkumaArt
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
Bloop
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
SmArtKar
acd8a1693f Moves manual boulder breaking to LMB, corrects tooltips (#90474)
## About The Pull Request

Per #90473, for some reason boulder breaking is right click exclusive
for items. Basicmobs also break boulders on left click, but the tooltip
claims they should use right click for it. Also cleaned up some related
code.

## Why It's Good For The Game

Doesn't really make sense to use exclusively right click for boulder
breaking, this can confuse newer players.

## Changelog
🆑
qol: Moved manual boulder breaking with tools to LMB, corrected boulder
tooltips suggesting incorrect mouse buttons for basicmobs.
/🆑
2025-04-08 22:40:28 +02:00
SmArtKar
e7fe01e1dd Fixes certain mobs runtiming when dusted (#90467)
## About The Pull Request

Certain mobs, like bots, delete on death. Also fixed an incorrect
deletion check in crematorium code.

## Changelog
🆑
fix: Fixed certain mobs runtiming when dusted
/🆑
2025-04-08 16:40:56 +02:00
Ghom
a2e141c859 Locking a storage item now locks you out of other storage items inside it. (#90243)
## About The Pull Request
This PR introduces the `set_locked()` proc, which I'll also need for
something else later.

## Why It's Good For The Game
I could still interact with the storage of a box I placed into a secure
safe after I locked the latter.

## Changelog

🆑
fix: Locking a storage item now locks you out of other storage items
inside it.
/🆑
2025-04-07 07:49:39 +02:00
Jacquerel
df54935215 You can cuff people to the tram rails (#90293)
## About The Pull Request


![dreamseeker_29qExNc2QS](https://github.com/user-attachments/assets/688e23ff-93df-4f51-990c-4bc475d344fb)

Handcuffed people can be buckled to the tram rails.
If the tram hits them then they will die badly.
If they're not shockproof and are buckled to a powered rail, it will zap
them repeatedly for a little bit of damage (but not a lot because you
probably want them to die from something else).
Unbuckling someone from a powered rail is also pretty dangerous.


While doing this I fucked around a bit with how the "is the tram deadly"
calculation worked because I didn't like how a deadly tram cuts your
head off but does literally no other damage. Now it pulverises _and_
beheads you.

## Why It's Good For The Game


![image](https://github.com/user-attachments/assets/5f1e4151-876f-467f-8d41-b7666129c7af)
Multiple people I spoke to believed this was already possible

## Changelog

🆑
add: Handcuffed people can now be tied to the tram rails
balance: tram rails will no longer electrocute you if they're not
powered
/🆑

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-04-03 15:54:02 +02:00
Singul0
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
TiviPlus
88c2213f1e Force UTC±0 for time2text logging and IC times (#90347)
## About The Pull Request
This won't actually do anything on live, since those are all set to
UTC±0 currently

Pins logging and IC uses of time2text to UTC±0 instead of using the
system timezone (byond default)
Timezones not being set to utc0 caused issues before (and is again)

All timezones are now passed explicitly to make it more likely it's
cargo culted properly at least

Deletes worldtime2text cus it was gameTimestamp default args

## Why It's Good For The Game
Server timezone changes probably shouldn't affect logging, round times,
file hashes, IC time, when you caught fish, etc

## Changelog
🆑
refactor: Logging and IC timestamps will now always use UTC±0 and not be
affected by server system timezone changes
fix: Station and round times will not longer be incorrect if the system
timezone is not UTC±0
/🆑

---------

Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com>
2025-04-01 22:08:15 +02:00
SmArtKar
6b83a91956 Revert "Refactor for storage initialization & organization (#89543)" (#90332)
## About The Pull Request

Reverts the storage initialization refactor and all subsequent related
PRs.
The original PR is below our standards both for code quality and
testing, and is majorly flawed at its core. This has been discussed with
other maintainers and headcoder(s?) over on discord. A lot of changes
from the PR could be brought over later, but in its current state it
should not have been merged.

- Closes #90322
- Closes #90313
- Closes #90315
- Closes #90320
- Closes #90312
- Closes #90344

## Why It's Good For The Game

This PR causes a series of major issues which cannot be resolved without
either completely rewriting a lot of the original PR, or bad code.
Not matching our standards is grounds for not merging a PR, and the fact
that a PR should not have been merged is a reason for a revert.

## Changelog
🆑
fix: Fixed a series of storage-related bugs caused by a refactor PR.
/🆑
2025-03-30 21:30:31 +00:00