Commit Graph

4716 Commits

Author SHA1 Message Date
MrMelbert
4f2b55d05c Fix potential cleaner component runtimes (#92265)
## About The Pull Request

`pre_clean_callback` is asserted to be nullable, so this would runtime
if you have something with the default cleaner arguments

It probably shouldn't be invoked twice, anyways

## Changelog

Not player visible but could save a future coder or admin a minor
headache
2025-07-30 17:37:30 -04:00
MX0739
4e8f12644d Now you don't need to have 1 unit of water on the mop to use it with other reagents (#91880) 2025-07-30 17:37:26 -04:00
SmArtKar
007518d824 Fixes signal conflict hell on attachable seclights (#92222)
## About The Pull Request

This could get called **after** the component parent got deleted because
signals are saved before being called, so the overlay lighting component
unregging didn't prevent the call from going through. Pretty sure this
is the cleanest way to do this.

## Changelog
🆑
fix: Fixes seclights attached to objects runtiming when their parent
object gets deleted
/🆑
2025-07-30 17:37:24 -04:00
Ben10Omintrix
0c34b84939 fixes tamed pets sometimes attacking one another (#92200)
## About The Pull Request
tamed pets would not let previous grudges go so theyd attack one another
even after theyve both been tamed by the same owner. this fixes that

## Why It's Good For The Game
fixes tamed pets sometimes attacking one another

## Changelog
🆑
fix: fixes tamed pets sometimes attacking one another
/🆑
2025-07-30 17:37:23 -04:00
HometownFunky
34330a3e4a The LIGHT STEP trait makes you not squash micros (#4247)
## About The Pull Request

The light step trait, the trait that makes your character step lightly,
makes you not squash micros. Knockdown still applies.

(Also uses the correct pronouns for the interaction now)

## Why It's Good For The Game

![saw
this](https://github.com/user-attachments/assets/5d2f2377-b868-4e8b-a55a-3ee1e9b38b52)
It makes sense that characters who have a really light step wouldn't
break a micro's bones. This time it's tied to a positive quirk. Imo this
offers both an intuitive way of opting out of the crush content and a
fun interaction with our already existing quirk. Knockdown STILL applies
so you can't really cheese combat with micro quirks.

## Proof Of Testing

![John
McLightstep](https://github.com/user-attachments/assets/ed39b5b4-6090-4d3e-b2c5-9c21fbc1a8cc)


## Changelog


🆑
balance: Light Step makes you carefully step over micros, without
hurting them.
/🆑
2025-07-25 09:51:34 -07:00
necromanceranne
99d22a3b5b Ensures that components can stop attack_self() proc code from running on energy guns if it would return COMSIG_CANCEL_ATTACK_CHAIN (#92019)
## About The Pull Request

What it says on the tin.

## Why It's Good For The Game

Should a component potentially want to override the behaviour of energy
guns attack_self() proc, it will not be able to prevent this code from
running without this check.
2025-07-19 20:29:31 -04:00
EnterTheJake
93bd0c3607 Balance changes to the Wizard MOD and energy shields. (#91932)
## About The Pull Request

Wizard MOD is now bio,flash proof, and comes with the no slips module ,
and the Hilbert DNA lock module installed.

Energy shield charges on the battle shield module have been reduced from
15 to 5 but now regenerate over time.

energy shield charges are now only consumed if at least 3 damage is
dealt to the bubble.


## Why It's Good For The Game

atomization of this PR:
https://github.com/tgstation/tgstation/pull/91702 so I'm just gonna
copypaste the same reasoning.

**Wiz Modsuit changes**

Despite being the Mod given to arguably the highest possible threat a
station should face, this thing is insanely underwhelming.

It doesn't come packaged with even some basic immunities we would grant
to our common antagonists, the charges are limited and once they expire
this suit has nothing to offer besides basic space protection and some
decent armor.

The suit has been rebalanced to offer a wide array of protections and
have the Shield charges regenerate overtime to a maximum of 5, and it no
longer has any slowdown.

You might also want to reconsider using this as crew....

"That's a lot of stuff Jake, won't this make the suit overpowered?"

You can bet your spessman arse it will, Wizard is not supposed to be a
balanced antagonist in any way shape or form, but an absolute force of
chaos.

Given how everything else in the game has been powercept over the Years,
we left this poor dude behind, it's time to address that.

**Energy Shield MOD changes**

I don't think the Shield should expire if no damage (or a pitiful amount
of) hits the bubble, these have already been nerfed to only have 1
charge, it shouldn't require so little firepower (or none of) to
destroy.

## Changelog

🆑
balance: Wiz suit is now bio,flash proof, comes with the no slip and
Hilbert dna module installed, slowdown was removed.
balance: Energy shield charges on the battlemage module have been
reduced to 5 but now regenerate over time.
balance: energy shield charges now require a minimum of 3 total damage
to be consumed.
removal: you can no longer buy additional shield charges for the suit
using the spellbook.
/🆑

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
2025-07-19 20:29:26 -04:00
Time-Green
1d980ae50d Three Recovered Crew QoL's (#91983)
Three quality of life additions for recovered crew:
1. Jumpsuits are spawned in the crate, and no longer in the lockbox
2. Formaldehyde will no longer metabolize during the "soul pending" fase
so you don't have to constantly re-up them with it
3. Gives them 200cr starting money instead of 100. Also get a headset in
their lockbox now

## Why It's Good For The Game
1. This lets the reviver know what job they can expect to have, and make
more informed choices about which organs, implants and surgeries are
most beneficial to them. They can still change their mind, but it's
something I've always missed having and can help to tailor the
experience a bit
2. This is just annoying. Trying to revive them and not realizing the
formaldehyde is gone, and then realizing absolutely everything decayed,
is super fucking ass.
3. They get barely any starting gear, so some more money to help them
buy gear is really needed. The headset is just there to make it easier
to communicate with the department head or the HoP, it just gets you
going faster.
2025-07-19 20:29:26 -04:00
tattle
aedfc00bca Removes the shy component(s), mostly frees drones (#92027)
## About The Pull Request
Removes the shy component, which is exclusively used by drones. 

![image](https://github.com/user-attachments/assets/e515c357-2046-47d6-9803-e1f5a66c8fda)
Inspired by trying to use soap to clean a stain in atmos and getting
told by the game to kick rocks.

## Why It's Good For The Game
We have had the drone restrictions for 4 years, and every time I choose
to play drone I am forced to engage with the CBT of `this might break
your laws!` `if you face a direction while a mime is in the next room
you might break your laws!!`.

Drones have [individual
names](https://github.com/tgstation/tgstation/pull/78573), our logging
improves regularly, and station drones do not spawn without player
intervention.

This ALSO allows drones to use machinery like lathes, but retains drone
pacifism and dislike of interacting with mobs.

## Changelog

🆑 tattle
del: Removed the shy component, allowing drones to once again use a wide
array of items and perform actions near mobs
/🆑

---------

Co-authored-by: tattle <article.disaster@gmail.com>
2025-07-19 20:29:23 -04:00
HometownFunky
be589f46c3 Makes it so having WALKMODE on doesn't crush people with the micro quirks (#4212)
## About The Pull Request

Having WALK MODE on makes it so you don't give micros any wounds/damage.
Knockdown still applies.
## Why It's Good For The Game
Giving people a way to not accidentally squish micros is good, having it
tied to walkmode which everyone can turn on willingly and not just a
quirk like before (Pacifism) is also good. The knockdown is still there.
## Proof Of Testing

Tested it on a localhost
![it
works](https://github.com/user-attachments/assets/a81bd5a4-1244-45e3-b488-8e25cbe0fde5)
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
balance: Having WALK mode on makes you not squish micros.
/🆑
2025-07-13 22:47:26 -04:00
Jacquerel
43aa3d40d8 Platforms (#91559)
![image](https://github.com/user-attachments/assets/32a5f39a-59b8-46c3-8418-1a089379d6a4)

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

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

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

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

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

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

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

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

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2025-07-11 18:07:40 -04:00
MrMelbert
1099f45658 Cult music only plays on first scribe (#92074)
## About The Pull Request

First rune scribe plays the cult music stinger, all following ones just
use the sound for red alert.

I'd use airraid.ogg but that's used when Nar'sie is actually summoned.

## Why It's Good For The Game

Cool song but it's really loud and really long and really spammable

## Changelog

🆑 Melbert
qol: Cult's music stinger is only played on first attempt at scribing a
Nar'sie rune, following attempts will use the sound for red alert.
/🆑
2025-07-11 18:04:55 -04:00
LemonInTheDark
55b6200de8 Fixes overlay lighting failing to remove if power is set to 0 (#92026)
## About The Pull Request

These things are overlays, so if we modify them before we try and remove
them, we'll be trying to remove a different appearance, and it'll fail.

This means if you set power to 0 before any other light arg, you will
create a stuck underlay

## Why It's Good For The Game
Closes #91764
Enables #91726

## Changelog
🆑
fix: Hitting lit things with the light_eater will no longer sometimes
cause them to stay stuck, lit
/🆑
2025-07-11 18:04:55 -04:00
grungussuss
250ba145c6 trapdoor remote attackby to item_interaction (#91935)
## About The Pull Request
title
removed to_chats because the balloon alerts are more fitting here and
you don't need to look back at your chat for any information on these
## Changelog
🆑
refactor: refactored trapdoor remote interaction code
/🆑
2025-07-11 17:49:23 -04:00
Y0SH1M4S73R
4ab083dcd0 Adds the self-surgery skillchip as a fairly rare black market item (#91606)
## About The Pull Request

This PR adds a skillchip that allows the user to perform normal
surgeries on themselves, albeit with a 1.5x speed penalty and a flat 33%
increase to the probability of screwing up each step. You can find this
skillchip occasionally on the black market. It is also contraband, and
can be detected by n-spect scanners.

## Why It's Good For The Game

Provides a risky alternate means of obtaining surgical intervention,
such as if you either can't trust anybody else to do surgery on you or
can't be trusted to have certain surgeries done on you.

## Changelog

🆑
add: The Centcom Department of Import Control has become aware of the
use of highly-illegal and medically dubious self-surgery skillchips
aboard company stations. We suspect they are being sold to the station
through the black market.
/🆑
2025-07-11 17:37:20 -04:00
Roxy
159943c9b7 Fix crude shuttle blueprints being uncraftable (#91941) 2025-07-04 16:42:06 -04:00
Krysonism
26527f85e7 Da blobmob update! Indepedent strains, new sprites, egglike spores, fixes, sounds and buffs! #Cytology2025 (#91368)
This PR makes a number of changes focusing on improving the blob
minions, spores, nauts, zombies and their associated component.

The blob spore, blob zombie and blobbernaut has been resprited.

The spore and zombie have been lightly touched to preserve the most of
the original characteristics while given a cleaner look.

The spore and zombie have a partially desaturated version used to let
more of the strain colour through instead of them all ending up dark
brown.

The blobbernaut has been reshaded and the side sprite has been made
coherent with the front state, I made decided how the front state was
shaded should be the "canon" one (this might be a bit controversial but
the wild inconsistency was bugging me.)

The blobbernaut is a bit less veiny, but the veins look more natural and
use the strain complementary colour. Many combinations are cool, some
are a bit lacking due to the weird choices of complementary colour.

![image](https://github.com/user-attachments/assets/aee01fb1-5d3a-47ad-abd6-85096f8b8751)

![image](https://github.com/user-attachments/assets/732a4157-c7f6-4a43-ad46-62a505a97088)

Blob mobs can now have strains independently of an overmind.

The 15% mutation chance of vat grown creatures causes a spore or
blobbernaut to get a random strain.

When I first added the blob spore cell line, ghosts could click on cyto
blob spores to posses them, they would then presumably(?) but not
explicitly be free antags. This ability was lost when the blob spore
code was modernised.

Very few people knew about this, and no one grew blob spores anyway.

This feature is coming back in a big way, vat grown blob spores present
a new unique job hazard, they are automatically offered to ghost as an
extremely shitty, but free antag.

I have tested spawning like 15 antag pre-buff blob spores in a live
round and they failed completely to antagonise the crew effectively,
hopefully these buffed spores won't present too much of an issue to our
great administration team, if that ends up being the case, there are
many levers to pull to tone them down.

Blob spores prior to this PR were almost completely useless.

The main cause of this was the extremely dilute reagent smoke reaction;
10u divided over 20 seconds.

This resulted the smoke clouds dealing 0.15 - 0.6 DPS, a completely
negligible and useless amount.

The smoke reagent concentration has been massively increased(10u -> 40u)
and the smoke duration has been reduced(20s -> 8s).
The result of this is that blob spore clouds are something you want to
avoid standing in, but they provide less smoke cover for the blob and
nauts.

Blob spores have also gained the ability to vent crawl. Simple mobs that
can't either open doors or vent crawl feel super bad to play.

They also deal a little more melee damage, but this is still
pathetically low on account of their low attack speed.

I have adjusted their supplementary reagents and reduced the amounts of
spores produced per cycle(2 -> 1) to make them a bit harder to mass
produce.

I have not made this PR with the goal of buffing any particular strain,
but some changes have affected blob strain balance:

This was the only strain that was strongly mechanically tied to the
core.
In order to allow for independent debris devourer mobs, they can now eat
trash(or any item really), they are independent, they store these items
inside their mob, and use these for the debris devourer reactions.

If they have an overmind, the item gets sent to the core.

This should result in a nice buff to the strain, which I've been told is
one of the bad ones.

5 years back another contributor removed the ability of blobs and
blobbernauts to transfer reagents with their attacks(as their expose
method is vapour).

This was a completely undocumented change and possibly unintentional, so
I am reverting it by giving blob reagents penetrates_skin = VAPOR again.

This only really affects these two strains. It makes regenerative
materia much stronger, while barely having any effect on cryogenic
poison, because temperature normalisation changes has made it completely
ineffective even with much more reagent applied.

The spore reagent cloud buff might also give a boost to some strains
with good expose effects, like electromagnetic web.

Blob spores now drop spore sacks, they can be ground for spore toxin, or
cracked on a griddle to create an egg-like treat!

I also added a detoxification reaction to reduce the amount of toxin
when cooked, might not work yet because I think griddles may not
actually heat the food?

Blob spores bursting and blobbernauts dying have sound effects.

level 5 biohazard

🆑
image: blob mobs have been respectfully resprited.
add: vat grown blob mobs can sometimes get born with a blob strain.
add: blob spores drop spore sacks, crack them on the griddle.
add: debris devourer mobs can now eat trash, sending it to the core, if
there is one.
add: vat grown blob spores are now sentient and evil.
balance: blob spores now have much more concentrated smoke.
balance: blob spores can ventcrawl.
fix: regenerative materia and cryogenic poison strain blob tiles & nauts
now inject chems again.
sound: blob spores & blobbernaut now have death sound effects.
/🆑
2025-07-04 16:42:02 -04:00
Hatterhat
ccf9dd2d5e Food items should now pass down their intrinsic food materials during crafting (#91808)
## About The Pull Request

![image](https://github.com/user-attachments/assets/3bf777fc-2636-4b7d-8fef-dab10723e937)
Food items pass down their intrinsic materials during crafting, which
should prevent foods being crafted from meat being red and squishy. The
implementation might be too broad or kinda suck but it worked for the
problem items I tested it on (headcheese, crispy breaded headcheese,
moussaka, ballpark tsukune).

Also properly sets up `material_flags` to be a bitflag when viewing
variables.

## Why It's Good For The Game
Makes intrinsic food materials actually do what they're supposed to do
(prevent food being crafted with meat from being weirdly too meaty).

## Changelog

🆑
code: Materials bitflags should now show the bitflag interface in VV.
fix: Food items now pass down their intrinsic materials during
crafting/processing/microwaving/etc. etc.
/🆑

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-07-04 16:41:50 -04:00
SyncIt21
db73bb2579 Motorized wheelchairs can be upgraded again (#91823)
## About The Pull Request
- Fixes #91822

## Changelog
🆑
fix: motorized wheelchairs can be upgraded again
/🆑
2025-07-04 16:41:48 -04:00
Time-Green
2dbbe4f41d Voidwalker Rework | Basic Mob Edition + Bonus Antag (#91646)
Reworks the Voidwalker into a basic mob, including a lot of the balance
and mechanics!

Old (left), new (right)

![image](https://github.com/user-attachments/assets/5583db66-6025-4874-95dd-938aa828634c)![image](https://github.com/user-attachments/assets/2785c5cc-ccda-4ffd-bc1c-5bb278873d9b)

https://github.com/user-attachments/assets/22d6138f-11aa-4f7a-8600-2565e6578bcf

(little outdated)
https://youtu.be/cp1E3qPJGX4 (high res mirror)

**🟨Voidwalker mob changes🟨**
No longer a human species and no more void eater. Instead deals damage
by simple unarmed attacks.
Instead of dealing brute, the voidwalker does oxygen damage (4-5 hits to
knock out) with left-click, and slight brute on right click. Non-human
mobs automatically take brute damage instead of oxygen damage.

150 HP
33% burn armor

Yes it has hands, but it can only pick up and drop stuff

**🟨Window phase🟨**

![image](https://github.com/user-attachments/assets/82a330ee-16f8-46e4-a325-c894fc8931d6)
Instead of needing to smash a window with the void eater, moving through
windows simply leaves them passable for 5 seconds. Makes kidnapping a
lot easier, but also makes it easier for people to chase you

People who used the voided skull also leave windows passable for a short
bit.

**🟩Cosmic Charge🟩**
Standard charge ability, but only lets you charge towards space and
works while dragging people

**🟩The Vomitwalker🟩**
People you kidnapped now occasionally do the nebula vomit, which
voidwalkers can use to dive from and into

![image](https://github.com/user-attachments/assets/e483a0d2-a418-479e-89e5-1dcd71165140)
Diving into it is very fast but also removes the nebula vomit. You can
also kidnap people into the vomit (this doesn't remove the vomit).

There is also a little UI for tracking this. Clicking it while in space
dive teleports you to the next nebula vomit, if there are any.

![image](https://github.com/user-attachments/assets/8907f261-6395-44fb-86ea-0ed548aca3ab)

**🟨Voided people changes🟨**
Kidnapped people and people that used the cosmic skull are no longer
muted, but take 10% extra brute and occasionally leave behind glass
shards when taking a lot of damage.

Are no longer obliterated on a second encounter with voidwalkers.
Voidwalkers can't hurt people they've already voided (unless they really
want to), but instead just knock them out for 30s

Also the kidnapped do space vomit as I said earlier.

**🟩Sunwalker🟩**
Voidwalker variant made for pure murderbone. Has no camo and kindap
mechanics, but has a fiery charge, loads of damage and area igniting and
people ignition. It's admin, but I might change this later once I've had
some more time to think about it.

![image](https://github.com/user-attachments/assets/2383dc6e-2173-4449-b71b-367e81c55f88)

Other changes:
- Voidwindows no longer need to be space adjacent
- Unsettle works faster but can't be used in combat anymore
- Space camo now grants complete space invisibility
- Makes a lot of aspects easily moddable, so we can easily mod it into a
moistwalker in-game
- Taking a cosmic skull when you already used one gives you the old
voidwalker void eater arm. Additional uses just gives you more void
eater arms until you run out of hands
- I definitely forgot a lot more
- I made a cool voidwalker hud! It even has a unique space camo toggle

<details>
  <summary>Lot of text</summary>

Voidwalker was basically a snowflaked toghether human species because I
didn't know how to sprite, but I was able to work with species and
visual effects. Then I realized I can just commission sprites!

This also let me just cut out a lot of the snowflake code, because it's
no longer a human so half the things I didn't want them to be able to
do, they just literally cannot do.

Voidwalkers were in a bit of strange spot with kidnapping? There was
essentially no incentive, other than "smash spaceman = funny". They also
had issues doing, anything? There's surprisingly little space on a space
station, especially maps such as tram. Making the voided victims have
nebula vomit gives the voidwalker a reason to WANT to kidnap, by giving
them a way to appear basically anywhere on the station. I don't think
it's too overpowered. Voided people don't vomit that much, it's easily
cleanable and diving into it removes them, so they're limited usability.

Replacing the brute damage with oxygen damage also kinda... just makes
sense? I seriously contemplated letting them do stamina damage for the
first iteration, but opted not to do it because stamina damage has so
many hooks attached. Oxygen damage doesn't! It's also just incredibly
thematic, let's them bypass most armor and makes them more suited to
non-letha kidnappings.

Space camo making them completely invisible was also long overdue. It
was literally just urging people to turn up their gamma and turn down
their parallax settings. I thought it was an interesting mechanic, but
it's just straight up unfair and doesn't belong in a multiplayer game.
They now more frequently leave behind little glass shards, leave
particles from nebula vomit they leave from and have more unique sound
effects, so attentive (and lucky) people can still deduce if an area is
safe-ish.

I removed being able to shatter voided people because the mechanic was
deeply misunderstood. It was intended to give them a means of removing
people if they kept incessently bothering the voidwalker, but people
went out of their way to use this to roundremove people they had already
voided. The 30s sleep conveys my intention a lot better, and fits better
now that the voidwalker benefits from having as many voided people
vomitting all over the place.

The cosmic charge gives them some much needed survivability. My
experiences (in observing voidwalkers, I can never get the roll ;_;) is
that they're constantly one mistake away from complete obliteration. The
cosmic charge let's them get out quick despite their slow movement speed
in gravity. It also makes them stronger when fighting in space.

They got 33% burn armor so it's a tiny bit harder to wipe them away in a
single laser salvo, while still giving people ample opportunity to fight
them off . Also they're like glass or something so it fits thematically.

I gave them hands because I thought it was cool, might be a mistake idk

</details>

🆑 Time-Green, INFRARED_BACON
add: Voidwalker has been throughly reworked! Now you are even less safe!
admin: Adds admin-only Sunwalker mob
fix: Unsettle doesnt work on yourself anymore
fix: Space camo doesnt stop bobbing anymore
fix: Voidwalker windows now recharge on kidnap
runtime: Fixes healthanalyzers runtiming when scanning mobs without
reagent holders
/🆑
2025-07-04 16:41:45 -04:00
Tim
5a21a35e25 Fix martial arts gloves runtiming when destroyed while equip (#91892)
## About The Pull Request
If you wear the boxing gloves from the baseball field holodeck sim and
walk off, it causes a runtime where it gets deleted and then attempts to
drop it shortly after. The problem is the martial arts component
`Destroy()` nulls the martial arts style first, then later tries to
unlearn the style, which doesn't exist anymore. This causes the style to
never be properly forgotten.

You could theoretically abuse this to destroy several gloves while
wearing them to gain multiple martial arts styles.

## Why It's Good For The Game
Less runtimes and exploits.

## Changelog
🆑
fix: Fix martial arts gloves runtiming when destroyed while equip
/🆑
2025-07-04 16:33:38 -04:00
grungussuss
d333c0ed07 fix some typos in examine texts (#91770)
(cherry picked from commit c0b1cf6d58)
2025-06-26 19:54:07 -04:00
MrMelbert
5e8214e464 Adds some throwing datum nullchecks (#91720)
## About The Pull Request

A few places seem to call `hitby` or `throw_impact` without a throwing
datum to mimic the effect of colliding with something, which is cringe,
but I guess we should support it.

So we need to nullcheck for `get_thrower`, else it runtimes and cancels
the whole proc.

## Changelog

🆑 Melbert
fix: Glass shards from colliding with vendors or glass table hurt you
again.
/🆑
2025-06-21 22:36:02 -04:00
MrMelbert
c16ae8fe78 Use any item as a prosthetic arm, what's the worst that could happen? (#91573)
![image](https://github.com/user-attachments/assets/84290f87-8750-4972-8ef1-c22d0cde35a4)

Makes the chainsaw arm code generic, so you can attach any normal or
bulky sized item as an arm

Impl. detail:

Items-as-arms just use inhand sprites unless it has
`/datum/element/prosthetic_icon`. Currently used for chainsaws as the
only item with an implanted sprite.

Chainsaw arm nullrod now fully replaces the arm rather than being a
nodrop item.

When surgically adding any non-bodypart item, applying the item will
result in a loose fitting, and it might fall off on attack. The
following step (tape/suture) removes the fall chance.

Chainsaw arms are funny, but why stop at chainsaws beyond it being an
Evil Dead reference?

🆑 Melbert
add: Any normal or bulky sized item can be used as a prosthetic arm,
instead of just chainsaws.
/🆑
2025-06-21 22:35:58 -04:00
necromanceranne
690bfc04b4 Rebalances wound determination values, wounding escalation and wound armor to hopefully be less explosive (#91099)
This is a big one so please bear with me, wounds are complicated

We've decreased the max contributed damage to wound rolls from 35 to 25.
This results, after the exponent, a max possible wound roll of 1 to 91
before any modifiers (assuming the attack, after armor, is 25 or above).

The minimum value to wound is still 5.

Most wounds were contributing significant numbers per wound type to the
potential for a new wound to occur. Getting wounded once meant you were
getting wound a lot, but actually getting past that first wounding may
be the tricky part.

We have significantly reigned in the wound penalty that having a wound
contributes, and instead utilize the series wound penalty to allow same
type wounds to escalate themselves faster as a priority. Having wounds
still makes you more wound vulnerable, just not to such an extreme
degree.

The priority here for what wounds matter most for contributing to
overall wounding vulnerability is ``Infected BURNS > BURNS >
SLASH|PIERCE > BLUNT.``

Wound armor, unlike all other kinds of armor, was used as a additive
value to the wound roll modifiers rather than a multiplicative value.

We have reworked how wound armor is determined by changing how wound
modifiers are calculated.

Firstly, we're passing our entire injury roll into the
``check_woundings_mod()`` proc, as we're not treating this as a proc
that just adds values anymore.

Secondly, bare wound bonus only applies if there is no potential wound
protection from any source, as expected. But it comes last in the
calculations.

Thirdly, wound protection is applied to the injury roll last, after
wound bonuses from the attack, wound bonuses from other wounds and wound
bonuses from a disabled limb are applied. This does not include serial
wound bonuses, which are determined outside of this proc.

Wound protection comes from two sources. Clothing and limb wound
resistance. Your chest and head have an amount of wound resistance so
long as they are not mangled in any fashion. Being mangled means having
either a hairline fracture or a weeping avulsion wound.

Wound protection reduces the final injury roll by a percentage. Say our
roll is 50, and we have effectively 50% wound protection. The final roll
would be 25.

~~Most clothing have had their wound armor values changed. As a loose
rule, I used the highest of melee or bomb armor, except where that value
was 100, in which case I used the lowest instead. I'm basing this
decision on how embeds are calculated, which is attack type agnostic.~~

~~Some armor have inconsistent values because they are alternative
armors to an existing armor type or are hyperspecialized armor.
Ablative, bulletproof and security vests all share a value of 35,
despite the former two not having decent melee or bomb armor.~~

~~Some clothing missing wound armor that should have had them now have
wound armor.~~

~~This may need a bit of scrutiny in case one or two seem weirdly high.
Some have maybe become too low. Its a bit hard to say.~~

I changed it to ``exposed_wound_bonus`` to better represent when it
applies. You can be naked and still not be affected by this bonus if the
limb has wound resistance.

I'm not promising anything with this PR, but this is an attempt to
sanity check the values on wounds so that we're not seeing what the data
that determined the removal of beheading presented. An extreme
over-representation of tier 3 wounds. ~~And, from that, maybe I can
argue for beheadings coming back. That's my goal. I think beheadings
happened so much because the numbers were in need of work.~~ Well okay I
just wanna make wounds a bit more workable actually more than I want
beheadings.

Why is it that tier 3 wounds were so over-represented? Because wounds
will often force more severe wounds of other types by merit of any
wounds existing at all on a limb. Having **_a_** wound makes you more
wound prone for any kind of wound, and not just making you more likely
to suffer a more severe type of the same wound.

The threshold mechanic was intended to simulate making a wound worse,
but oddly just made a limb broadly more prone to getting worse from any
kind of attack to such a degree that future wound rolls of different
types were often going to start at the threshold necessary to be a tier
3 wound.

Dismemberment, mind you, requires you to suffer a flesh wound while you
have a bone wound of tier 2 or higher (with tier 3 giving a bonus to
this). You can do this readily via just a sharp weapon, because having a
mangled limb causes the wound to turn into a bone wound. Technically,
this is meant to be less likely as the effective damage for this wound
is halved. But the wound bonus from having a flesh wound was almost
always significant enough to kick your new bone wound up to a tier 3.

In other words; its not surprising that you saw so many beheadings,
because the system wanted to behead you as fast as it possibly can
thanks to all these escalating values.

Wound armor was only applied as a flat reduction on the roll. The
average for wound armor was 10. After receiving a single wound, you can
expect wound rolls to reach upwards of 100, even if the actual damage
roll was not particularly high, due to wound stacking bonuses form being
wounded.

This meant that wounds, if they happened, came thick and fast after the
first, regardless of what your protection might be to wounds. It was
just a matter of getting past the initial bump.

This is why effects that forced wounds were so powerful. They basically
made a given limb more prone to taking a wound without having to deal
with the protection problem first.

Finally, this is just a broad flaw with the system that is not its
fault. It is actually a problem that isn't a problem. Most people in the
game are not wearing helmets that protect their head. So most people are
going to suffer from a higher proclivity of being wounded if people are
aiming for the head. There is this...kind of cargo cult belief that
aiming for the head means you do more damage, or can stun someone if
you're lucky or what have you. It's entirely nonsense, but it has a
grain of truth in that people rarely wear, or even have access too,
headwear that provides wound protection or any protection at all. People
have jumpsuits, which are universally wound protected, but that isn't
true of the head. Look, the point is, they're not aiming at the head
because it is usually less armored, its for other reasons but it just so
happens to become true due to wounds and how wounds roll their type.

To soften this issue, I've decided to treat wound resistance as armor
until the limb suffers a tier 3 wound. This way, hits to the head MAY
not necessarily escalate to tier 3 instantly as they would on live even
from relatively low power weapons. Some weapons have very low force, but
have extreme bare wound bonuses. This should be less likely after this
change. I doubt this will necessarily make high damage high wound
weapons like energy swords any less prone to cutting you clean open, but
it might thanks to the reduction to contributed damage to the injury
roll. The system is now _a bit more random_.

🆑
balance: Wounds do not make you as vulnerable to suffering wounds of all
types as before. Instead, wounds make you more vulnerable to suffering
worse versions of themselves as a priority.
balance: Wound armor is now more impactful when protecting you from
wounds when you have already been wounded.
balance: Your head and chest are more difficult to wound until they have
been mangled; either from suffering from a weeping avulsion or a
hairline fracture.
code: Changed the variable for bare_wound_bonus to exposed_wound_bonus
to better explain what that variable is doing.
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2025-06-21 22:32:18 -04:00
SmArtKar
0712d9870c Planecube Optimizations and Job Security: Part One (#91696)
## About The Pull Request

This is an atomized revival of #82419, with this part containing the
simplest of its features:
- Fixes AO pref refreshing the wrong plane, thus not updating until you
swap bodies
- Removes supermatter's copypasted warp effect
- Culls distortion effects when they're not in use because its a chonky
filter
- Hides the escape menu when its, well, hidden
- Fixes hide_highest_offset not working upon parent's creation (we're so
good at our jobs hell yeah)
- Replaces runechat's AO dropshadow with an outline, because its barely
visible due to low opacity.

## Why It's Good For The Game

Our rendering performance is shit and we need to improve it, and the
first step in this task is optimizing planecube's simplest parts. The
next step is conditional culling, better non-multiz handling and
parallax rework/removal, but all of those need to be atomized as to
prevent the PR from sharing the fate of the original.

## Changelog
🆑
fix: Ambient Occlusion pref should now update immediately upon being
changed, instead of having to swap bodies or waiting for server restart
to get it updated.
code: Slightly improved rendering code/performance just a tiny bit.
/🆑
2025-06-21 22:21:57 -04:00
SyncIt21
ef5b60a920 Stacks check for invalid amounts (#91656)
## About The Pull Request
Alleviates #91603

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

## Changelog
🆑
code: stacks error on invalid amounts, removed manual passing of number
`1` when creating a single stack in many cases
/🆑
2025-06-21 22:21:56 -04:00
plsleavemealon
b8b5ef2aca Morbid surgery toolset (#91668)
## About The Pull Request

A morbid surgery toolset for coroners! Functions exactly like an
ordinary surgical toolset except it uses morbid tools instead of normal
tools! All stats are the same between them otherwise! So to clarify,
this means that these tools all have the CRUEL_IMPLEMENT tag, as they
inherit it from their parent tool. Making them faster for morbid
surgeries when used by someone with the morbid trait (ala coroner).

Also includes a way to craft the toolset:
Requires 1 surgical arm implant
and the following tools: wirecutter, screwdriver, and welder
**NOTE:** Cannot use an emagged surgical toolset.

Takes 10 seconds to craft!

Also made a second craft which allows you to change it back to normal
toolset too. Functions identically to the first but obviously requires a
morbid toolset to do so.

The morbid toolset does not have an emagged variant at this time.

## Why It's Good For The Game

More fun thematic tools for players to enjoy, and for coroners that
prefer to use toolsets now they don't have to give up their thematic
tools for them.

## Changelog

🆑
add: Adds a brand new morbid themed surgical toolset, along with a way
to craft it from a normal surgical toolset! These tools, much like their
non-augmented counterparts are faster at certain surgeries when used by
someone that is morbidly inclined.
/🆑


![image](https://github.com/user-attachments/assets/ae7b7d99-63db-415c-a4ff-3f5fbd00a60e)

![image](https://github.com/user-attachments/assets/78c5b1a9-7e08-4581-b893-7fb2a0af212f)
2025-06-21 22:21:50 -04:00
SmArtKar
b1bebf0f21 Fixes rolling paper runtiming when trying to stuff a blunt (#91666)
## About The Pull Request
The component was moving itself to, assigning as ``atom_parent`` and
then deleting the joint it just made, runtiming and failing to do
anything.
Closes #91665
Closes #91690

## Changelog
🆑
fix: Fixed rolling paper runtiming when trying to stuff a blunt
/🆑
2025-06-19 17:25:24 -04:00
SmArtKar
d858a64a78 Converts plasmaman limbs to bodypart effects instead of components (#91639)
## About The Pull Request

Removes self_ignition component and replaces it with a more performant
and cleaner bodypart effect system.
Additionally, fixes two issues where plasmamen would sometimes still be
set on fire/be affected by fire damage even when sealed, and where they
could have exposed hands but not get set ablaze.

- Closes #89277

## Why It's Good For The Game

self_ignition component is per-limb and thus causes plasmamen to tick
six times as much going through all of their equipment. This is plain
better.

## Changelog
🆑
fix: Plasmamen no longer should get perpetually stuck ablaze in rare
edge case scenarios
fix: Plasmamen need to wear gloves once again
code: Updated plasmamen limb tracking/effects to be more performant
/🆑
2025-06-15 15:55:02 -04:00
SmArtKar
15b2bc4e17 Ripley goliath plating now takes up an armor slot on the mech (#91480)
## About The Pull Request
Attaching goliath plating to mechs now requires and takes up an armor
slot.


![image](https://github.com/user-attachments/assets/cb2c6b97-95a5-4a82-b935-9ca7412fea03)

Also removed some now-unused values on armor modules

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

## Why It's Good For The Game

Currently you can get to melee armor cap on Ripley or Paddy by stacking
an armor booster with goliath armor (20 + 30 + nat 40 = 90) which is a
bit absurd. While its strong enough on ripley, a lot of both antagonist
and crew weapons (most, in fact) are melee and thus become absolutely
useless against an already very oppressive roundstart mech that Paddy
is. This makes goliath plates a better option than an armor booster that
you have to go down to lavaland to while preventing it from being
stacked to reach absurd numbers. Also could possibly lead to allowing
attachment of those to other mechs which I think could be neat.

## Changelog
🆑
balance: Ripley goliath plating now takes up an armor slot on the mech
/🆑
2025-06-15 15:54:21 -04:00
jimmyl
c12d2189e0 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-15 15:54:08 -04:00
SmArtKar
7223b5381f Fixes weird pipe/vent/cable rendering under glass and catwalk floors (#91454)
## About The Pull Request

Changes some logic in underfloor object and atmos component rendering to
make them look nicer when visible, but not accessible under floors. Also
changes how catwalks get rendered to improve their visuals when opened.

Before:


![image](https://github.com/user-attachments/assets/217070c6-3df7-4a25-8e83-557601f87d36)

After:


![image](https://github.com/user-attachments/assets/e568176f-c116-4a30-8212-6c6b879ed847)

## Why It's Good For The Game

Makes pipes look less shit. The rendering curse reigns eternal.

## Changelog
🆑
fix: Fixed vents and pipes partially poking out from under glass and
catwalk floors
/🆑
2025-06-15 15:52:32 -04:00
SyncIt21
c780349b12 Fixes lathes breaking on ore silo deletion (#91498)
## About The Pull Request
- Fixes #91494
- Fixes #91479
- Fixes #90533

The ORM disconnects the machines from its `Destroy()` proc by which time
its deleted flag has already been set to TRUE leading to an early
return, thus causing the silo to not disconnect properly

## Changelog
🆑
fix: lathes don't break on ore silo deletion
/🆑
2025-06-15 15:52:14 -04:00
throwawayuseless
82eed58e9d Makes psyker playable (#91490)
-# so help me space jesus if this doesn't compile despite working fine
on my local machine
Makes burdened chaplain and psyker pirates not blind, so that someone
playing them isnt assaulted by irregularly flashing monochromatic lights
on a black background. Instead the echolocation outlines will simply
pulse to highlight nearby objects regardless of lighting conditions or
other vision obscuring effects. adds support for if you want
psykerization to blind people or not.
keeps bitrunner psykers blind, since that's the point of the domain.
Just avoid those domains if you can't handle the effect, sorry.
A. It makes psyker an actual useful ability. I have personally seen, as
a ghost, psyker pirates fail to navigate out of their ship for a full
five minutes, and then die horribly because they are unable to actually
do anything because they're **Worse than blinded** since blindness has a
small radius of working vision.

B. In-game effects should not cause **real world eye pain and nausea**
thank you very much.

neat fact: blind seers only really work when the seer-ing makes up for
the blindness.

example of outline highlighting hidden underfloor objects (like that
satchel!) while user is not horribly blinded

![image](https://github.com/user-attachments/assets/04ce713d-5e4a-434d-b41a-5206240a27ff)

🆑
fix: blind psykers are not blinded twice by two different sources, head
and brain.
qol: Psyker bounty hunters and chaplains are no longer blinded by
default, so as to reduce the amount of eye strain from the echolocation
effect. The echolocation virtual domains remain as they are.
/🆑

---------

Co-authored-by: ThrowawayUseless <notarealemail@emailservice.fake>
2025-06-15 15:52:11 -04:00
Ghom
75e7ef6def Mutation code cleanup, mutations now have sources to avoid concurrency problems. (#91346)
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.

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.

🆑
refactor: Refactored mutation code backend. Report any issue.
/🆑
2025-06-15 15:50:31 -04:00
SmArtKar
442b57ba63 Fixes movespeed glitch on holy hoverboards (#91502)
## About The Pull Request

Caused by ``initial()`` usage on the base type, and speed modification
on the holy child. Since move_intent can only be run or walk, we're good
to just +- on the base type instead.
Closes #91492

## Changelog
🆑
fix: Fixed holy hoverboards being able to gain speed boosts via move
intent changing while in space
/🆑
2025-06-15 15:42:22 -04:00
Jacquerel
8db829ab93 Swarming mobs spread out immediately (#91499)
## About The Pull Request

Mobs will check for swarming when an atom inits on their tile as well as
when one enters it

## Why It's Good For The Game

I was fucking around with the Hive Head changeling power and noticed
that the bees it spawns tend to stack up instead of spread out nicely,
and I didn't like that.

![image](https://github.com/user-attachments/assets/0c42ffbb-0183-4d56-bcd7-2352c1e16efd)

## Changelog

🆑
fix: Small stacking mobs like mice and bees will attempt to spread out
visually within their tile as soon as they spawn rather than just when
moving
/🆑
2025-06-15 15:42:21 -04:00
Ghom
0eefbabe82 Fixing two fishing issues. (#91444) 2025-06-15 15:42:07 -04:00
nevimer
7f63a878d3 Micro Squishing & Quirk (for abusing small sprites and being SMALLER) (#3151)
## About The Pull Request

Adds some balance around small sprites. You get trampled easily if
you're smaller than normal, by pixel scale and not mutations.
## Why It's Good For The Game

Micro Balance, arguable enterprise resource content.

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

</details>

## Changelog
🆑
add: Three new micro-sized traits. They make you smaller at a cost.
balance: Micro characters get squished easily. They also have to duck
under people.
/🆑

---------

Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Shadow-Quill <44811257+Shadow-Quill@users.noreply.github.com>
2025-06-06 04:40:56 -04:00
Roxy
e2d80769c2 Fixes for #89465 2025-06-05 20:18:27 -04:00
Bloop
c906b85d30 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-05 20:05:19 -04:00
Ghom
1f3894e793 Crafting refactor, implementing materials (#89465)
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.

Improving the backbone of the crafting system. Also materials and food
code.

🆑
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-05 20:05:13 -04:00
SmArtKar
d841c9df40 [MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
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

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-06-05 19:47:01 -04:00
Jeremiah
a5a4b83a25 Sets prettier to run on the repo (#91379)
Prettier (an auto formatter) is set to only run within the tgui folder
currently. This removes that limitation, allowing it to automatically
format all supported files in the repo (.js, .html, .yml
[etc](https://prettier.io/docs/))

I made a few exceptions for bundled and generated files
I'm of the opinion that code should look uniform and am lazy enough to
want CTRL-S to format files without having to think beyond that
2025-06-05 19:13:02 -04:00
John Willard
b97f3779b2 Re-adds the Dragoon tomb ruin & Spear (#90781)
It was removed in https://github.com/tgstation/tgstation/pull/27799
because the spear was broken and the Flans' AI sucked with not-great
sprites and was all just one big reference. Original addition:
https://github.com/tgstation/tgstation/pull/22270

This re-adds it, updates the map (now using airless turfs) with extra
ambiance, using ash whelps (lavaland variation of ice whelps) instead of
Flans, re-adds the spear, and adds armor as well this time around.

The spear gives you a jump ability to crash down upon a player below
you, rather than teleporting to wherever you throw the spear at. You
can't attack while mid-air, you can go through tables but not
walls/doors, and you also can't un-dualwield or drop the spear mid-jump.
Landing on a mob deals double damage to them (36 to unarmored people),
while landing on objects deals 150 damage to them (taken from savannah's
jump ability, which was in turn taken from hulk's punching)
It's also got some extra throw force (24 compared to default spear's 20)

The armor has basic security-level armor but covers your whole body.
Does not include space protection, and can be worn by Ian.

Video demonstration

https://github.com/user-attachments/assets/a77c3a0d-17d2-4e8d-88b6-cdbca8b1f2c3

New sprites demonstration

https://github.com/user-attachments/assets/0e465351-5484-406f-8adc-ffa1ac180daf

Armor demonstration

https://github.com/user-attachments/assets/abdfcac6-65bf-443c-bde2-27d157ee3a80

Map

![436285657-104a555f-60dc-46f0-8283-a92db2ca5352](https://github.com/user-attachments/assets/a1677c9a-7157-4562-9703-5ad44c923e8d)

With the changes in https://github.com/tgstation/tgstation/pull/90771 I
had to mess with ash whelp abilities a bit, I decided to make them use
cold fire instead of hardcoding blue color on top of the fire sprites,
and it now acts accordingly too

https://github.com/user-attachments/assets/cfca0d70-d13d-4c73-996d-2d4a7519866d

The jump was taken from Savannah Ivanov, and Goof's bunny jumping.

This Re-implements a old spear that got removed for its buggyness/bad
mapping and on the authors request as well not wanting to deal with it.

Re-introduces the SkyBulge as a space ruin, referencing Dragoons from
Final Fantasy. this just like any normal spear, but using the savannah
jump mechanic, this allows you to close distances with the spear
avoiding ranged projectiles in the jump, and if you directly land on
your target you will do double the damage.

🆑 Ezel/Improvedname, Toriate, JohnFulpWillard
add: Re-added the Dragoon Tomb lair, now has a Skybulge spear and
Drachen armor.
balance: Ice whelps now spit out cold fire.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2025-06-05 18:50:51 -04:00
RadiantFlash7
cb2e5f367c Re-adds Tajaran Tackle Bonus (#3726)
## About The Pull Request
Re-adds the tajaran bonus for tackles for having tajaran ears removed in
#3443
## Why It's Good For The Game
The bonus was removed under the impression that Tajarans recieved a +4
to tackling, instead of a +2.
This is because of the +2 for having a tail in the tackling code.
However, the +2 for having a tail, is locked behind a trait that only
xenos have. Meaning that tajarans only ever had a +2, on par with moths.
Thus, there was no reason to remove the buff for tajarans. 

Edit: ~~As it was expressed to be concerns of people gamer maxing- Tails
also do not count towards or against defending unless it's a lizard
tail.~~ It seems TG broke this during refractoring, and now anyone with
a wagging tail has a bonus to preventing tackles; Which is- interesting.

Implanting a tajaran's ears, also do not effect tackling as you need the
feline grace trait to get a tackle bonus as well.


On that note I'll re-emphasize my reasoning for it from the original PR
#1513 :
Tajarans currently get unique eyes, which are incredibly weak to flashes
and welding, in exchange for minorish night vision capabilities.
However, they were also given unique sensitive ears which will pretty
much always be deafened from flashbangs. Theres no real upside to this-
so I figure making Tajaran ears apply a bonus to tackling would be a
good idea.
The buff is on par with moth's tackling skill, and thus fairly balanced.
Plus, cat pouncing memes is pretty great.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
add: Re-adds Tajaran tackle bonus, changed to 1+
/🆑

---------

Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
2025-06-04 20:01:33 -04:00
SmArtKar
1349ba89ad Neruwhine can no longer roll voidwalker traumas, fixes high gravity persisting after curing the trauma (#91147)
## About The Pull Request
Neruwhine can no longer roll Cosmic Neural Pattern or its stable
subtype.
Fixed the planetary gravity damage status effect not clearing itself
when you lose the voided trauma.
Closes #90702

## Why It's Good For The Game

Cosmic Neural Pattern is a voidwalker exclusive and is more of a magical
status effect than an actual brain trauma, so having it be temporarily
rollable is a bit stupid.

## Changelog
🆑
balance: Neruwhine can no longer roll voidwalker traumas.
fix: Fixed the planetary gravity damage status effect not clearing
itself when you lose the voided trauma.
/🆑
2025-05-29 16:16:11 -04:00
Y0SH1M4S73R
c31b82e597 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-29 16:16:10 -04:00
fleur
12490fc9fd Monkey plush (#91154) 2025-05-29 16:15:02 -04:00