Commit Graph
14954 Commits
Author SHA1 Message Date
_0StevenandRoxy 2d8f7ed2d7 Fixes critter crate elevation issues. (#91609)
## About The Pull Request

Very simply put, we weren't actually unregistering the
`COMSIG_MOVABLE_MOVED` signal on detaching.
This was making it so that when you open a critter crate it doesn't
actually unregister the signal, meaning that it re-attaches a lot of its
effects to the turf the next time the crate moves. However, because it
wasn't actually *properly* attached anymore, breaking the crate wouldn't
unregister the turf.
So this was making it so that if you were to open a critter crate and
then move it immediately after, it would regain its ability to elevate
you as if it were closed, and this would linger even after it breaking.

This fixes that.
## Why It's Good For The Game

Fixes https://github.com/tgstation/tgstation/issues/91204.
## Changelog
🆑
fix: Critter crates no longer re-attain their ability to lift you
despite being open if you move one after opening it, and neither does
this lifting field stay after you destroy it.
/🆑
2025-06-15 15:54:33 -04:00
SmArtKarandRoxy 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
GhomandRoxy 975770b9fe Fixing more issues with genetics. tested [NO GBP] (#91565)
## About The Pull Request
Fixing more stuff because I didn't test it properly before.

## Why It's Good For The Game
It should work now. Fix #91560.

## Changelog


🆑
fix: Fixed mutation injectors.
fix: Fixed mutadone turning actual monkeys into humonkeys.
/🆑
2025-06-15 15:54:09 -04:00
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
GhomandRoxy f4cb2b13e4 Fixes dna consoles [NO GBP] (#91540)
## About The Pull Request
The value of the "ByondRef" key referenced the dummy mutation used for
alias and sequence and not the one actually from the mutations list of
the dna datum.

## Why It's Good For The Game
This will fix #91532.

## Changelog

🆑
fix: Fixed DNA consoles.
/🆑
2025-06-15 15:53:27 -04:00
SmArtKarandRoxy 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
SyncIt21andRoxy 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
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
GhomandRoxy 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
5d8e4f09ea Refactors book attackby into item interaction procs, adding screentips, minor qol (#91273)
## About The Pull Request

This mostly just refactors the book `attackby(...)` proc into
`item_interaction(...)`, with some side-effects and screentips.
Notable ones follow here:

We move carving away from combat mode, and instead based it on whether
our tool is a pure writing utensil, a pure carving tool, or both at once
like the captain's fountain pen. If it's a pure tool, both left click
and right click are its respective primary action. If it's both,
however, left click is vandalizing and right click is carving.
This tries to ensure the expected primary interaction is always
left-click, without blocking anything if it could do both.

We move the barcode scanner interaction to the barcode scanner instead.
There's no good reason for this to stay on the book itself.

We add `can_vandalize(...)` as a proc and move all checks in there, so
we can call it after every tgui input. We don't replace the
`to_chat(...)` calls here with balloon alerts because the additional
clarifying info is needed, and it keeps the 'soulful' blind message.

We add `get_attack_self_context(...)` as a proc for getting screentips
on hovering over it in your active hand, because both the bible subtype
and the syndicate bible _bible subtype_ want different screentips there
in different situations, and so while it's clunky it's much less clunky
than the alternatives I considered.

Making it use actual storage datums avoids subtypes needing to make
manual changes to it in the `carve_out(...)` proc, and is just good for
organization.

This doesn't add screentips to most bible-specific interactions, as I
deemed them outside of the scope of this pr.
Those are better off done atomized into another pr.
## Why It's Good For The Game

less attackby, more item interaction
screentips good

I think having the carving interaction on combat mode is unintuitive,
especially when that's the only interaction it can do.
This ensures the expected primary interaction is always left-click.
## Changelog
🆑
refactor: Refactored the book interaction chain. Please report any
issues.
fix: You can no longer vandalize carved out books if you carve it after
opening the input menu but before entering anything.
qol: Added screentips to book interactions.
qol: Added screentips to barcode scanner interactions.
qol: Carving out books no longer uses combat mode, instead using
left-click by default and right-click if your tool can also write.
Screentips account for this.
/🆑

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2025-06-15 15:42:24 -04:00
SmArtKarandRoxy 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
JacquerelandRoxy 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
JacquerelandRoxy afb60da430 Reduces ghost poll time for blackout drunk (#91497)
## About The Pull Request

Reduces the time spent selecting ghosts for the "blackout drunk" effect
from 20 seconds to 10

## Why It's Good For The Game

Your average person who triggers the "Blackout Drunk" effect (where
another player is put in control of their character) is roughly 45
seconds away from dying of liver failure (number I pulled out of my ass)
or at least getting knocked out for a long time due to the amount of
alcohol in their blood
20 of those seconds are spent polling for ghosts, meaning that the
length of time between someone else assuming direct control and the
character becoming permanently unconscious is frequently not really long
enough for them to do anything funny

You know when clicking this role that you're signing up for a good time
not a long time, but I think that also means people probably don't need
to think too long about whether they want to play it or not, so halving
the selection time gives you a full 10 seconds more time to tell
everyone in the bar that they're your best friends

Regular Split Personality traumas aren't so time critical and can
continue to enjoy a lengthier selection process to possibly gather more
candidates

## Changelog

🆑
qol: ghost candidates for blackout drunk are selected more quickly
/🆑
2025-06-15 15:42:08 -04:00
LemonInTheDarkandRoxy f722a840f0 Presistent clients now actually properly track clients between reloads (#91440) 2025-06-15 15:42:08 -04:00
GhomandRoxy 0eefbabe82 Fixing two fishing issues. (#91444) 2025-06-15 15:42:07 -04:00
RoxyandGitHub 01086f2a4b Fix antag banned people being able to roll obsessed (#3987)
## About The Pull Request

Because obsessed is treated as a weird antagonist not antagonist in the
code there's no checks for antag ban status before someone rolls it
meaning if someone with an antag ban rolls it it polls ghosts to take
over their body and then just forces them out. which sucks. Changes the
code so during the Obsessed Awakening event they will be passed over for
the role and if they end up with it from admin shenanigans it simply
won't apply

## Why It's Good For The Game

Randomly being wrenched out of your body for something you can't control
(storyteller picking Obsessed Awakening) sucks

## Proof Of Testing

Tested it on a local with two clients

## Changelog
🆑
fix: antag banned people will no longer roll obsessed and be forcefully
ghosted
/🆑
2025-06-08 00:08:55 -04:00
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
carlarctgandRoxy baa9f4f592 Adds the bloodroach (#91383)
## About The Pull Request

Adds bloodroaches.


![image](https://github.com/user-attachments/assets/2f122787-0a22-4ff3-9c9b-7e14ca479369)

These are cockroaches that have gorged themselves on blood in
maintenance. They're very gross!


![image](https://github.com/user-attachments/assets/1ff744ed-a61b-4f6b-8d1c-28664f7a953f)

Splatting one causes an explosion of blood all around the death
perimeter, splashing both turfs and mobs with blood.

They have a 1% chance of spawning in place of normal roaches.

They also spawn in:
- Abandoned crates, replacing the 30 roaches with 30 bloodroaches.
- As backup anomalous crystal possession targets.
- Grimy fridges

Added a trait given to things killed by pest spray, used to check on
death explosion for bloodroaches.
Changed roach spawns in maps to use mob spawners, so I can replace them
with bloodroaches 1% of the time.
## Why It's Good For The Game

Splatting a random roach in maintenance that explodes into blood sounds
hilarious. It also adds janitorial depth by requiring pest spray to
carefully eliminate these pests
## Changelog
🆑
add: Added bloodroaches, a rare variant of cockroaches that explode into
a shower of blood when squashed.
/🆑
2025-06-05 20:05:25 -04:00
BloopandRoxy 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
BloopandRoxy 9ef0768b1c Removes a couple of duplicate gag map_icons + fixes the gags_recolorable component + most lootpanel gags previews (#91341)
## About The Pull Request

Turns out there were a couple of black mask subtypes that I missed as
well as a prisoner uniform subtype.

Also fixes some bugs that are not related to the map icon pr to further
improve the situation with GAGS previews.

## Why It's Good For The Game

Smaller .dmis, working previews

## Changelog

🆑
fix: spraycan can now be used to recolor the gi, glow shoes, striped
dress, H.E.C.K. suit
fix: most GAGS items should now be showing up in the lootpanel again
/🆑
2025-06-05 20:05:18 -04:00
GhomandRoxy 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
John WillardandRoxy f5e9794dfb Oxygen tanks use progress bar (#91387)
## About The Pull Request

Tanks while used as internals gives a progress bar to show how full they
are, starting from the pressure when first starting to get used, when we
expect the player to know how much is in the tank, and ticking down as
it gets used. Alternative to this could be using the initial pressure,
but then it would remain at 100% for quite a while when you put more
than it starts off with.

This replaces the stat panel entry for them, this is a part of
https://hackmd.io/443_dE5lRWeEAp9bjGcKYw


![image](https://github.com/user-attachments/assets/a0d5c3db-fbbd-4598-8f02-53f24c81524d)

## Why It's Good For The Game

Adds a visual indicator to tell people how much air they've used since
toggling the tank's internals which is much better than the previous'
random numbers in stat panel.

## Changelog

🆑
qol: internal tanks gives a progress bar when you toggle them, allowing
you to see how much you've consumed so far.
/🆑
2025-06-05 19:52:06 -04:00
LucyandRoxy 7c4ec2c8cc Implement some more stuff for /datum/client_interface (#91403)
this adds the `persistent_client`, `fully_created`, `window_scaling`,
`byond_version`, and `byond_build` vars to `/datum/client_interface`, to
closer match the interface.

- `byond_version` and `byond_build` will always be set to
`world.byond_version` and `world.byond_build`
- persistent clients are only initialized for mock clients during unit
tests.
- i also slightly changed the `mock_client_uid` var so it's used in the
same way as mobs use `next_mob_id`
2025-06-05 19:52:06 -04:00
3c1505ac06 Cyborgs now use storage datum (#90927)
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

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.

🆑
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-05 19:49:49 -04:00
_0StevenandRoxy 36cdf384ba Fixes bugs related to transferring items to turfs, splits doing that off from dropItemToGround(...) (#91326)
## About The Pull Request

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

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

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

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

## Why It's Good For The Game

Fixes #91082.
Less jank 👍

## Changelog
🆑
fix: Placing an item on a table/turf via the alt-click menu actually
centers it, again.
fix: Certain items, like canvases or syringe guns, are no longer weirdly
offset when placed on tables.
fix: Placing items on racks, closets, crates, hoops, beds, conveyor
belts, and pin the tail corgi posters is animated again, instead of
instantly teleporting followed by the pickup animation.
fix: Placing a canvas on an easels no longer applies a random offset as
if dropped.
fix: Tucking in someone else actually animates the bedsheet from you to
them, instead of from them to them.
qol: Placing a canvas on an easel is animated.
/🆑
2025-06-05 19:47:40 -04:00
SmArtKarandRoxy 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
JeremiahandRoxy 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
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
John WillardandRoxy c5d84a2b20 Moves info buttons to the Escape menu (#91234)
This is my second contribution to the move towards removing the stat
panel (first one being https://github.com/tgstation/tgstation/pull/90572
)

This moves the info buttons at the top right of the game's screen
(Changelog, Rules, Wiki, etc) to the Escape menu, except for Fullscreen
which is now a pref instead. This means you can set Fullscreen to be on
permanently and every launch will automatically fullscreen you (the
viewport will be a little off because it only fixes it once
initialization is complete). This follows through rounds and auto
updates if you set your game to fullscreen with the OOC button or F11,
so players will learn about the pref after playing a round with
fullscreen enabled.

What the game now looks like

be a newscaster

https://github.com/user-attachments/assets/7871a226-1e0b-410d-a690-88f3616bebb0

This is something I wanted to do since the Esc menu was added but just
never got around to it, but here it is.

These buttons don't warrant being in the player's face 24/7 and since
we've want to remove the stat panel and this has to be somewhere, I
thought it would be a better fit in the Escape menu. It helps make the
Esc menu the tool players use to access their OOC tools and overall I
think improves the appearance of the game's screen to something more
like an actual game would look like, especially when our comparison is
SS14.

🆑
qol: Info buttons previously at the top right of your screen (Changelog,
wiki, forums) is now in the Escape menu.
qol: Fullscreen is now a preferences and will follow you through rounds.
/🆑
2025-06-05 18:49:10 -04:00
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
sippykotandGitHub c31642c524 lets chemical bags and fridges hold hypo stuff (#3934)
## About The Pull Request

see above
bag can hold medipens and hypovials
fridge can hold any hypospray

## Why It's Good For The Game

reduce clutter in medbay, more consistency, easier transport

## Proof Of Testing

line edit, passed all the checks 🐈

## Changelog
🆑
add: added more storage options to chemical bags and smartfridges -
hyposprays/medipens and hypovials
/🆑
2025-06-02 09:37:23 -06:00
Roxy 92b0cc3458 Fix some DB issues and lag (#91420)
- ~~The DB schema version define was set to 5.30, the changelog readme
said the latest was 5.28, and the sample insert query in the readme said
it was 5.31~~ (fixed in #91127) Changes the define and readme to 5.32
- Add new entry in readme to rename `character` column in `manifest`
table to `character_name`, because `character` is a reserved word in SQL
and every insert query is failing
- Changed the initial roundstart manifest queries from
number_of_players_readied_up individual insert queries to one mass
insert because I suspect this is add several extra seconds to the start
time

fix yes :)
🆑
server: increment DB schema version to 5.32
server: changed column name in manifest table from character to
character_name because the former is a reserved word
fix: changed round start manifest DB queries from dozens of individual
inserts to one mass insert
fix: hopefully fixed some lag on round start
/🆑
2025-06-01 16:18:43 -04:00
677038cffe Fixes oversight with the wizard's magic wand belt. (#3933)
## About The Pull Request

Fixes oversight with the wizard's magic wand belt.

## Why It's Good For The Game

Fixes oversight with the wizard's magic wand belt.

## Proof Of Testing

Fixes oversight with the wizard's magic wand belt.

## Changelog

🆑 BurgerBB
fix: Fixes oversight with the wizard's magic wand belt.
/🆑

---------

Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
2025-05-31 00:02:25 -04:00
Roxy ebcce8d3fb Fixes for #91029 2025-05-29 16:44:15 -04:00
John WillardandRoxy 25da3e86a6 Ghost settings UI (#91370)
This is part of my ongoing project to remove the Stat panel which you
can read/contribute to here: https://hackmd.io/443_dE5lRWeEAp9bjGcKYw

Replaces the pAI button at the bottom of Ghost's HUD with a new button
for Ghost settings

Default look

![image](https://github.com/user-attachments/assets/7b97287d-5f8b-40a4-b574-98ecaafa8533)

With fun verbs (admin only, the 2 buttons at the top right), No body,
and lag switches on (disables T-Ray and Zooming)

![image](https://github.com/user-attachments/assets/3ee9bb9b-389c-452c-8ff5-fbd0ee677fef)

The ghost icon next to "re-enter body" is the DNR button, which requires
double click.
Extra view is now easier to understand, 0 is "default", anything more is
extra vision you get. Goes to 3 for regular users, 7 for BYOND members.

Removes the "Ghost" tab from the stat panel entirely, this replaces it.

The Ghost tab of the stat panel is filled with barely functional stuff,
like "Jump to Mob" which allows you to jump to "oranges ear" which
teleports you to nullspace, or the 4 different jump to verbs for
different things which is irrelevant from the Orbit menu and the many
improvements it got over the years, and even the Notifications panel,
which seems pretty useful, but because it's delegated to a small button
filled with the rest of these it gets entirely drowned out.
This puts all the important things in front of the user at the click of
a button, meant to be easy to navigate and giving important information
first.

🆑
add: Added a 'Ghost settings' button, taking the spot of the pAI
candidate button and replacing the "Ghost" tab of the Stat panel. This
button contains buttons pertinent to your time as an Observer.
/🆑
2025-05-29 16:17:39 -04:00
SmArtKarandRoxy 0f8fc18054 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-29 16:16:13 -04:00
GoatandRoxy 788f38a21a [MDB Ignore] Makes toolset arms a subtype of arm implants (#91029) 2025-05-29 16:16:13 -04:00
MrMelbertandRoxy caa387f3a8 Revives Cargorilla (#91356)
## About The Pull Request

Completely undocumented change in #86624 which blacklisted Cargorilla
from random rolls

## Why It's Good For The Game

Monkey

## Changelog

🆑 Melbert
fix: Cargorilla is back
/🆑
2025-05-29 16:16:12 -04:00
Ben10OmintrixandRoxy fb2e22a5fc weasels (stoats) (#91030)
## About The Pull Request
adds stoats to the game! 

![stoatsss](https://github.com/user-attachments/assets/d22a5041-3249-40f4-8599-229c72dc4a19)

these are relatively friendly animals u can find in maints. they'll hunt
down mice and other smaller vermin (making them a janitor's best friend)
,and are nimble enough to crawl through pipes. They also love stealing
things as they will drag random objects they find lying around them.
additionally, you may find disposal bins that are shaking, this means
there's a stoat inside rummaging it for food. clicking eject or throwing
anything in the bin will cause the stoat to immediately jump out scared.
u can also tame them by feeding them eggs or dead mice.

## Why It's Good For The Game
further expands the mob pool of maints, establishing some sort of
ecosystem.

## Changelog
🆑
add: added stoats to the game
/🆑
2025-05-29 16:16:12 -04:00
SmArtKarandRoxy 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
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
_0StevenandRoxy 20ee6acdf8 Shuffle around fancy storage code, fix some stuff, minor changes (#91316)
## About The Pull Request

So this is all because of a leftover bit making all fancy holders set
their `max_slots` to the `spawn_count`, which of course would override
the custom storage datums.

https://github.com/tgstation/tgstation/blob/526e006583eee95d809b4062938072f78974ed78/code/game/objects/items/storage/fancy.dm#L33-L36
This just moves all of the fancy storage items away from
auto-calculating storage based on those vars entirely, making new
storage datums for all of the ones which didn't have one yet.
We also move this out of the misc file, because a misc file is
meaningless if everything together makes it bloated.

We also do some minor fixes and changes.
- The pickle jar could only hold seven small items, even though it'd
take ten pickles, so we make it hold ten small items.
- Coffee cartridge racks started with the sprite for 4 of them, so we
make it start with the sprite for 1 of them.
- Nugget fish in the bugget box :)
- We make a few of the visual storages with even amounts above 7 split
their storage up into two even rows, so their UI actually looks full
when full.
## Why It's Good For The Game

Less jank good 👍 

It feels kinda awkward when you have a full box of stuff, visually full
of stuff, and the storage UI is for a significant portion empty- but you
can't put in more.
This makes it so the full storage UI actually matches the object looking
full.

It's funny if Fryish, the nugget fish, can be stored in a nugget box.
## Changelog
🆑
balance: Egg boxes' storage UI is now 6 slots wide, such that it
contains an even dozen slots when full.
balance: The storage UIs for heart-shaped chocolate boxes, pickle jars,
and rolling paper packs are now 4, 5, and 5 slots wide respectively,
such that they fill the whole storage UI when full.
balance: Fryish and its fried snack cousins can now be stored in nugget
boxes.
fix: Pickle jars can actually hold the ten pickles they spawn with.
fix: Fertile egg boxes, coffee condiment displays, and coffee cart racks
have the right amount of slots.
fix: Coffee cart racks spawn with the sprite for holding 1 cartridge
like they do, rather than looking like they're holding 4 cartridges.
/🆑
2025-05-29 16:15:21 -04:00
jimmylandRoxy f6397560f6 minor deathmatch fixes (#91192)
## About The Pull Request
split personality may not roll if the target is in a deathmatch area
bolt of possession deals 25 brain damage if the target is in a
deathmatch area (8 hits for brain death)
removed a camera from the meta brig map
Disciple of Pete has 9 tile range signalers instead (that nobody uses
anyway lmao because you cant use them for minibombs or the other
grenades)

## Why It's Good For The Game

fixes #91171
fixes #90912
fixes #89212

## Changelog
🆑
fix: removed a camera from the deathmatch meta brig map, disciple of
pete has low-range signalers, deathmatch bolt of possession deals brain
damage instead, split personality may not roll in deathmatch
/🆑
2025-05-29 16:15:20 -04:00
fleurandRoxy 12490fc9fd Monkey plush (#91154) 2025-05-29 16:15:02 -04:00
655b66bdd0 Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
Revival of https://github.com/tgstation/tgstation/pull/86482, which is
even more doable now that we have rustg iconforge generation.

What this PR does:

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

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

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

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

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

</details>

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

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

</details>

---

this still applies:

Note for Spriters:

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

Note for Server Operators:

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

No more error icons in SDMM and loadout.

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

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-29 16:14:43 -04:00
62537564a4 Tarkon fixes and QOL changes (#3578)
## About The Pull Request

Couple things I missed when the push was done due to university
overwhelming me, and changing things to make it more fun to play.

Wavedef time reduced but can spawn more xenos
removed garbage stuff and added cooler new stuff to loot
more tanks of water and welding fuel (instead of 1)
more laithes, proto and otherwise around the station
the sink has been let go
etc, its a bug fix and such PR. 
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
qol: Requested QOL changes
fix:  Tarkon bugs I missed are fixed.
/🆑

---------

Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
2025-05-28 20:19:38 -04:00
BurgerLUAandGitHub 5cb02fb61e Non-living beings no longer glow from being irradiated. (#3548)
## About The Pull Request

Non-living beings no longer glow from being irradiated.

## Why It's Good For The Game

Massive GPU lag on the client from the amount of radiation filters any
time something is irradiated is not good. This PR makes it so that
radiation is no longer visible on things that aren't living. You can
still check if something is irradiated by scanning it with a Geiger
counter.

## Proof Of Testing

Untested.

## Changelog

🆑 BurgerBB
del: Non-living beings no longer glow from being irradiated.
/🆑
2025-05-26 22:48:46 -07:00
LT3andGitHub a091c5e86a Radiation storm event fixes/improvements (#3905)
## About The Pull Request

Fixes and tweaks to the radiation storm event.
- Actually enables/revokes emergency maintenance access like the
announcement says
- Removes the part of the announcement telling people to go to medbay at
the START of the radstorm
- Adjusts the announcement text to match the audio
- Fixes a check in minimum_security_level to ignore if emergency access
is already enabled
- Updated our alert proc with a new arg added by TG
- The weather alert sound plays to people on the impacted Z level,
making you aware the weather event started
- Deletes a duplicate radiation.ogg that exists for some reason

## Proof Of Testing

<details>
<summary>Screenshots/Videos</summary>

Shorter event announcement (No more 'please go to medbay')


https://github.com/user-attachments/assets/552e4eeb-a09e-4467-b69c-f10add7ecdb1

</details>

## Changelog

🆑 LT3
fix: Radiation storm event actually enables maintenance access
qol: Improved feedback and notifications for the radiation storm event
/🆑
2025-05-26 15:33:38 -07:00
Roxy ba988f2230 Refactor split_stack to two separate procs, fixes a hard delete in the process (#91306)
## About The Pull Request

I was trying to fix a hard delete and it became a whole thing
- Reworks `/obj/item/stack/proc/split_stack` to no longer also try to
put it in the user's hands, or take a user at all. The proc now purely
splits the stack and returns the new one
- Creates `/obj/item/stack/proc/split_n_take` which uses `split_stack`
and does the other behaviors like fingerprint adding and putting in the
user's hands
- Update usages of `split_stack` to either properly use it and remove
the code added to get around the put in hands behavior, or change them
to use `split_n_take` instead
- Fix a random bug in pipe bomb building I noticed while testing

## Why It's Good For The Game

Ultimately this fixes a hard delete with goldgrubs eating a piece of ore
while sitting on top of another piece of ore of the same type (the put
in hands behavior of split stack would cause the ore being consumed to
drop to the ground briefly, merge with the ore there, and then qdel
while still being moved to the goldgrub contents), but also added bonus
that it makes `split_stack` just split the stack and not some other
stuff too. Also a pipe bomb bug fix

## Changelog

🆑
fix: fixed being able to add seemingly infinite refined bluespace
crystals to pipe bombs
refactor: /obj/item/stack/split_stack no longer tries to move the stack
into the user's hands, use /obj/item/stack/split_n_take for that
/🆑
2025-05-24 22:07:11 -04:00