Commit Graph
462 Commits
Author SHA1 Message Date
shayoki f601a6ddaf Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 2026-06-03 01:23:54 -05:00
SmArtKarandGitHub f3283799e7 Reworks lavaland tendrils into minibosses (#96186) 2026-06-02 21:00:15 +10:00
SmArtKarandGitHub 5db9271022 Makes mining mobs prioritize humans over raptors (#96134) 2026-05-27 23:51:59 -04:00
MrMelbertandGitHub 49d502ac9b Optimizes grid check event a bit (+minor fixes) (#96075) 2026-05-27 20:43:58 -04:00
Y0SH1M4S73RandGitHub 18af823b19 Taking damage from attacks while on synthpax grants temporary immunity to synthpax (#95950)
## About The Pull Request

Whenever you take damage from an attack while metabolizing synthpax, you
become immune to specifically synthpax's pacification for a number of
seconds equal to the damage taken (max. 5 seconds). Additional instances
of damage add to the immunity timer.

## Why It's Good For The Game

Peacekeeper borgs have largely used synthpax as a way to make sure an
antagonist can't fight back as security arrests them, or, when their
laws permit, as they kill said antag themselves. This seems like a
severe abuse from the cyborgs, and/or any security that ordered the borg
to take this course of action. Synthpax should be used either to
de-escalate conflict between individuals the borg's laws require them to
protect, or to ensure that a threat cannot harm individuals they are
bound to protect until appropriate responders arrive, while leaving
minimal room to weaponize the pacification effect.
2026-05-22 06:40:47 +00:00
+37 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

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

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
SmArtKarandGitHub 479ac46740 Reworks goliaths, slightly changes watchers/legions/brimdemons/lobstrocities (#96028)
## About The Pull Request

Goliaths no longer instantly stun the mobs they hit with their tentacle
for full 10 seconds, instead leashing them to the spot they were grabbed
at or dragging them towards themselves. The ranged tetris-piece attack
has been changed to a full cross which tethers the target preventing
them from moving away more than 1 tile, while the line and the ring
attacks tether the mob directly to the goliath itself and drag them in.



https://github.com/user-attachments/assets/0b566a12-17ae-4a8a-97ac-5734c89c83d4

The tentacles can be manually removed after standing for 6 seconds, or
by hitting them for 75 damage total (3 PKC swings, or 5 bayonet hits).
They also naturally retract after 10/15 (cross/line and ring) seconds
like before.
Goliaths themselves have received a massive speed boost, going from 3
second movement delay to 1.2 seconds (150% buff) and no longer can
friendly fire with their tentacles (and ancient goliaths have their
trophy drop guaranteed)

Brimdemons, lobstrocities, watchers and legions also received some
changes:
- Brimdemons no longer can wound with their beams (they were basically
guaranteed to land a nasty burn wound with the initial blast), but are
now affected by laser armor and their beam DOT (not the initial 25 burn
damage upon firing) has been increased from 5 to 7. Their blasts can now
be interrupted by hitting them from their side or from their back
- Lobstrocities have had their retreat distance decreased from 8 to 6,
making them much less likely to randomly lose aggro on the miner (their
aggro range is 9 tiles, meaning that even a single tile of movement on
miner's part will result in lobsters losing interest in them when on CD)
- Watchers now try to stick to 3-5 (previously 4-6) tiles of distance
between themselves and their target, and legions try to maintain 4-6
tiles of distance as opposed to running away completely. This should
make fighting both of them more interesting and engaging, and make
dealing with them during vents less cancerous.

Sprites for the tentacle item and mob overlay are by thgvr from
https://github.com/shiptest-ss13/Shiptest/pull/2432

## Why It's Good For The Game

Goliaths are extremely outdated in their attack design, 10 second
hardstuns are basically a guaranteed death if there are any other mobs
around and aren't very engaging to fight on their own as they are very
easy to evade with 3 second movement delays.
Change to lobstrocities should just make their AI less jank, and
watcher/legion range changes should make them less slippery when
fighting with PKC or zero range PKA, or during vent defense.

## Changelog
🆑 SmArtKar, thgvr
balance: Goliaths no longer hardstun, but instead bind and drag their
targets in with their tentacles. They are, however, much faster now.
balance: Brimdemon beams can no longer wound, but deal a bit more DOT
damage. Their beams can also be interrupted by hitting them from the
side or back in melee.
balance: Watchers and legions now try to maintain a few tiles of
distance from their targets instead of retreating.
fix: Lobstrocity AI should no longer sometimes flee out of their aggro
range when retreating.
/🆑
2026-05-12 19:16:02 +01:00
MrMelbertandGitHub 01c26ef5c4 Solar arrays don't check for the pressence of space vines every process tick (#96010)
## About The Pull Request

Replaces the space vine check in solar `/process` with a turf trait

## Why It's Good For The Game

Just cleans up this random bespoke interaction for something more
reusable

## Changelog

🆑 Melbert
code: Solar arrays don't check for the pressence of space vines every
process tick
/🆑
2026-05-11 11:17:46 -04:00
BloopandGitHub b3770614c1 Makes invisimins actually invisible to regular ghosts, plus qol improvements (#95856) 2026-05-05 10:00:22 -04:00
MrMelbertandGitHub cee225fecb Moves hair and eyes into standing overlays (#95781) 2026-05-04 22:50:36 +02:00
MrMelbertandGitHub aae24b1ab2 Sect of the Dream God (#95643)
## About The Pull Request

Adds a new chaplain sect, the sect of the Dream God

This sect gains favor from dreaming and blessing dreamers. 

Their blessing only works on sleeping mobs - hitting a sleeping mob with
your bible will cause it to start dreaming, and if it's already
dreaming, grant favor. Either way, the mob is healed.

For 0 favor, you can **Banish Nightmare** - offering a Nightmare's
corpse rewards favor for banishing bad dreams. If the Nightmare has a
heart, you are rewarded with a special **Sacred Heart** which heals you
while dreaming and sleeping. You can also offer a Nightmare's heart on
its own without the body attached.

For 0 favor, you can **Deaconize Dreamers** - you can deaconize up to 3
dreamers.

For 50 favor, you can have a **Dream Portent** - This rite immediately
makes you fall asleep, and grants you a dream related to something going
on in the round. It may provide insight into something you otherwise
don't know about. If you take damage, the effect ends early.

<img width="374" height="126" alt="image"
src="https://github.com/user-attachments/assets/7c4e12fe-8456-411c-9d39-691e4ac2312d"
/>

For 100 favor, you can **Dream Projection** - this rite allows you to
pick one of your deacons, and forces you to become an imaginary friend
of that deacon. For the duration of the effect you are asleep. If you
are woken up or take damage, the effect ends. If the deacon dies, the
effect ends early.

<img width="492" height="294" alt="image"
src="https://github.com/user-attachments/assets/4e2f6810-15cd-41af-a69f-daa6ddca671a"
/>

For 200 favor, you can give you and your followers **Dream Protection**
- While sleeping and dreaming all damage taken is reduced.

For 200 favor, you can start a **Slumber Party** - All nearby mobs (who
can't block magic and some other asterisks) fall asleep and share a
dream. This form of sleep heals the mob rapidly (also heals holy people
even more).

## Why It's Good For The Game

A new sect for chaplains to sink their teeth into. This one brings a
unique niche, focused around sleeping and fortune telling.

## Changelog

🆑 Melbert
add: Adds the Sect of the Dream God, a new option for chaplains.
/🆑
2026-04-29 00:01:56 +01:00
Y0SH1M4S73RandGitHub a54141bed8 [I **NOT** ded] Heart Eater only works with sentient beings' hearts (+heart ripping). (#95677)
## About The Pull Request

You now only gain the benefits of the heart eater perk by eating a heart
taken from a mob with a mind. In order to make this not completely
useless for any wizard without the Smite spell, the heart eater perk now
grants the user the ability to tear the heart out of incapacitated or
dead carbons by targeting their chest with an empty hand in combat mode.
This can be done on one person at a time per hand, so subtle synergy
with the four arms perk.

## Why It's Good For The Game

Getting 80% damage resistance, stacking linearly with armor to
potentially grant total immunity to conventional sources of damage,
should require a lot of effort and putting yourself into significant
risk of getting killed.

## Changelog

🆑
balance: Wizards with the Heart Eater perk are only invigorated by the
hearts of sentient beings.
add: To facilitate the taking of hearts from sentient beings, the Heart
Eater perk lets you tear the heart out of the chest of an incapacitated
or dead being by targeting their chest with an empty hand in combat
mode.
/🆑
2026-04-20 18:20:59 +01:00
John WillardandGitHub 774c07cd9b Basic mob stat panel gutting (#95543)
## About The Pull Request

Changes Guardian HUD to use action buttons instead of HUD elements,
which means their buttons
1. Can now be moved
2. Can be binded

Other Holoparasite HUD changes:

1- Moves some special buttons like explosive's explosion ability to be
where the "Toggle Mode" button typically is, to be consistent with some
other modes (assassin, gas) that also works like their unique ability.
2- Gives non-dextrous holoparasites the ability to move floors, since
they float.
3- Fixes dextrous holoparasites having 2 health HUDs
4- Moves "Check Guardian Type" verb to a new action button meant to
mimick the Antag UI Info button.

Gives Soulscythes a Combat mode indicator

Locks Revenant's combat mode indicator (cause it does nothing)

Adds another hoverable HUD element, basic mobs can now hover over their
healthdoll to see their Health %

<img width="85" height="123" alt="image"
src="https://github.com/user-attachments/assets/ad660ba4-296c-4699-9ec4-03a6e7b97880"
/>
<img width="95" height="101" alt="image"
src="https://github.com/user-attachments/assets/12d4d9d3-cf2c-4c52-81aa-17ce538b9d48"
/>


Adds a Unit Test to ensure all basic mobs have a HUD that shows some
form of health & combat mode (unless unnecessary like Revenants), to not
lose any information from basic mob conversion now that they lose the
stat panel.

## Why It's Good For The Game

This is yet another supplement of
https://github.com/tgstation/tgstation/pull/95383 - Removing stat panel
entries for all basic mobs is a great move towards lessening the
reliance of mobs on the stat panel.

This is also just good QoL for Holoparasites, especially since their
stat panel had 2 entries for "Master HP" and your "Own" HP, despite
Holoparasites not even having their own HP at all.

## Changelog

🆑
qol: Holoparasites' abilities are now action buttons, so you can rebind
or move them.
qol: Holoparasites now have floor change buttons.
fix: Holoparasites and Soulscythes now have a combat mode indicator.
fix: Dextrous holoparasites now have their inventory slot again while
non-dextrous had it taken away (not that they could use it).
/🆑
2026-04-13 17:05:57 -06:00
TimandGitHub d2e5e35d68 Keen Nose Quirk - The Smell of Discovery (#95697)
## About The Pull Request
This adds a new positive quirk called "**Keen Nose**" that costs 3
points.

It lets you examine any open container with reagents to smell them. It
generates the smell based on the taste description. Also added an effect
to pepper spray, where it causes you to lose your sense of smell
temporarily.

This quirk is blacklisted against the Anosmia quirk, which is the
opposite. (no sense of smell)

## Why It's Good For The Game
Since there is a serious lack of positive quirks, I figured this one
might be useful as a utility quirk. It's a niche thing that could come
in handy. Keep in mind, there are several ways to identify chemicals,
like using the bartender's beer goggles, the science goggles, a chem
machine, or just eyeballing the color. Also, many chems have overlapping
taste descriptions (several different things taste like "death") so it's
not foolproof.
2026-04-13 13:03:26 -05:00
Cameron LennoxandGitHub 8eb46a0487 Makes TRAIT_IRRADIATED no longer spell funny (#95755)
## About The Pull Request
Makes TRAIT_IRRADIATED show up as "ir**rad**iated" instead of
"ir**add**iated"
2026-04-13 12:35:26 -05:00
MrMelbertandGitHub bad46d8600 Walking in snow leaves snowprints, snowstorms clear them (#95569)
## About The Pull Request

<img width="444" height="318" alt="image"
src="https://github.com/user-attachments/assets/d2b21460-0b11-499a-b05e-33d3a9768e71"
/>

Walking through snow or sand leaves behind a trail of prints similar to
that of bloody footprints (they use the old sprites, in fact). Like
bloody footprints, you can examine them to get a hint at what left the
prints (shoe type or leg type if barefoot).

When weather comes through (snow storm or sand storm), all prints will
be cleared off. During a raging snow or sand storm, you won't leave
prints at all.

Snowprints can be filled with snow to remove them as well. 

Some equipment or effects will stop you from leaving snowprints (ski
shoes, ice shoes*, heretic's cloak of shadows). Also you obviously don't
leave prints if you're flying or crawling or riding something.

**We don't have snow shoes* 

## Why It's Good For The Game

Initially I made this as a cute little detail, but I realized it has far
reaching implications for play on Icebox (and many, many sandbox
applications)

On Icebox, any average joe can run into the wastes and become
untraceable, which makes it almost impossible to track down antagonists.
Snowprints... are a method for tracking people who run off into the
snow.

But you can play around it - You can make fake trails and retrace your
steps. You can wait for a snowstorm to clear your tracks. You can even
fill in your tracks with snow if you're patient. Alternatively,
acquiring snow shoes means you leave no trail... or you could learn to
fly, crawl through the snow, use a vehicle, so on.

If you're assigned to assassinate a miner, you can follow their
snowprint trail as they head into the wastes. However, this may only
works early in the round, as the caverns have no snowstorm to clear
prints - as miners come and go, it will become harder to follow trails.

Speaking of miners, they can follow their co-workers trail if they get
injured, or look for prints to see if a ruin has been looted. Similarly
if a crew member falls down to the mining layers, they could find a
miner's trail to follow it back to the station.

And If you're a paramedic and someone was wounded out in the wastes, you
might be able to find their trail to track them down. But you can't
dilly-dally, as the storm will wipe away any chance of that.

Ultimately I think a small detail like this has some big potential for
emergent gameplay which could be cool. My intent is not to affect
antagonists too negatively, so more tools to avoid leaving prints (snow
shoes) could be added.

## Changelog

🆑 Melbert
add: Walking in snow or sand leaves behind prints. You can examine the
turf to see what left the prints, like with bloodprints.
add: Snowstorms or sandstorms clear away any footprints left behind in
the snow or sand.
add: Some equipment or effects, like skis or snowshoes, prevent you from
leaving prints in the snow.
add: You can fill in snowprints with snow. 
/🆑
2026-04-03 15:32:09 +01:00
RusselNotSCPandGitHub 4ceac8f297 Classic Cocktails 2: The liqueurening (#95392)
## About The Pull Request
TL;DR: "What do you mean we didn't have a negroni in the game before?"

This adds three new very commonly used liqueurs to the game: A bitter
red aperitivo, an herbal liqueur, and maraschino liqueur. Additionally,
it adds 15 new classic cocktails that use these new liqueurs.
Mechanically relevant drinks include:

- The Poet's Dream, which can grant non-heretics the ability to dream
like them
- The Garibaldi, which grants revolutionaries the determination to shrug
off their wounds
- The Jungle Bird, which soothes the supermatter when ingested by those
around it
- The Thermonuclear Daiquiri, which causes you to glow (and very rarely
emit high-energy nuclear particles)
- and more!

Full list here: https://hackmd.io/@0lHAWBNkSXixU4v6xxYS_w/SkYjyDofbg

![Sequence
01](https://github.com/user-attachments/assets/23066f45-4ab9-4f2c-a16b-1d53bfb09ffb)

On the non-player facing side of things, this also refactors the heretic
dream code a bit and adds a trait that enables non-heretics to have
heretic dreams, which could easily be used by other things (ie if anyone
wanted to make a perk or something that does this)

Also, special thanks to MrMelbert and ChipPotato for helping me out with
coding stuff in the discord!
## Why It's Good For The Game

This is good for the game for more or less the same reasons as my first
classic cocktail PR #92955 is good for the game: More variety gives
bartenders more to do and a greater range of drinks to base gimmicks off
of, and adding more cocktails to the game which are commonly served in
IRL bars decreases awkward, RP breaking moments where someone orders a
cocktail that's a staple you can find just about anywhere but which
isn't in the game. Additionally, the new liqueurs are commonly used in
many other classic and modern cocktails, which people can use to make
cocktails in future projects.
## Changelog
🆑
add: Added three new liqueurs, with bottles available in the
booze-o-mat.
add: Added 15 new cocktails that use the aforementioned liqueurs.
/🆑
2026-03-26 16:12:33 +11:00
MrMelbertandGitHub 6734968a57 Adds a 0 point quirk that turns your body into a recovered crewmember (effectively) on DNRing (#95469)
## About The Pull Request

Adds `Thanatorenasia`, a 0 point neutral quirk

Those with `Thanatorenasia`, upon DNRing, their body will be made into a
"recovered crewmember" - meaning when the body is revived, ghosts will
be polled and allowed to take control over it

The body will retain `Thanatorenasia` after the fact, so the new
controller can DNR as well, continuing the cycle

## Why It's Good For The Game

A random idea I had based on a recent interaction that I thought could
be cool character gimmick. Every time someone dies, they get revived
with a different player, so they act differently, think differently, and
don't remember the rest of the round.

## Changelog

🆑 Melbert
add: Adds Thanatorenasia, a 0 point neutral quirk that turns your body
into a "recovered crewmember" if you choose to DNR - meaning if revived,
any ghost could take control of it
refactor: Refactored "ghostrol on revive" behavior a fair bit, report
any oddities with it / the spawners menu
/🆑
2026-03-22 19:01:48 -06:00
LemonInTheDarkandGitHub 3729ee3ef3 Getting Mad at Parallax (Includes Boomerspace!) (#95382)
## About The Pull Request

I want to do stuff with parallax (like placing stuff in the backdrop and
moving it around), but I'm in my not doing 100 things in one pr arc so
we're doing this piecemeal.

To start, I wanted to try adding oldspace back as a parallax layer. This
is something I was considering when it was first removed but never got
around to, so here we are.

I started by [writing a rust
program](https://github.com/LemonInTheDark/old_space_gen) to fabricate
the required icon state, then realized that all the different parts of
space have their own animation delays. There's no way I could make one
icon state with all them looping, so instead I split them up into
multiple components and then overlayed them together.

This works, but is infeasible (my gpu died) at the scale required for
parallax (17 480x480 sets, 15 unique delays per 1 set) so I used render
targets to render one copy, then mirror it to the rest of the overlays.
This works wonderfully, and gets us down to (on my machine) a gpu cost
comprable with about medium parallax intensity.

I'm open to making these tile bound but I thought making them look "far
away" feels better.

In the process of all this I got very mad at the existing parallax code,
soooooooo

Parallax layers are no longer stored on the client, they are stored on
and managed by the parallax home atom that holds them for display. Said
atom also tracks all the information about how they are selected.

Parallax layers no longer take a hud as input, instead expecting a
client. (we were just swapping them back and forth and I thought it was
dumb).

Parallax no longer tries to support passing in a mob that does not
actually own the hud it is displayed on. This feature wasn't even being
used anymore because it was fully broken, so all it was doing was making
the code worse.

Parallax no longer has to do a full refresh anytime something about WHAT
layers are displayed might have changed. We cache based off the
variables we care about, and use the change in state to determine what
should happen (this is improved by moving "rendering the layers" fully
to the control of the home datum).

Parallax no longer directly modifies the hud's plane masters, instead
relying on trait based signals to manipulate them (this avoids wasted
time in the common event of a needless parallax prefs check).

Parallax no longer has 2 procs that are only called together to
"remove/readd/update" the layers, instead doing both in a new check()
proc.

Cleans up some plane master cruft to do with tracking/managing huds
(might break, tested, think it's fine).

## Why It's Good For The Game


https://github.com/user-attachments/assets/79138a0f-9f6d-447d-843e-0d237db13276

## Changelog
🆑
add: Added an option for rendering space parallax with old space sprites
(the ones from before we invented parallax), they're animated and I feel
quite pretty.
fix: Space parallax should hopefully behave a little more consistently
now
refactor: Rewrote a lot of how space parallax handled itself, please
yell at me if any bugs make themselves known
/🆑
2026-03-20 14:46:30 +13:00
TimandGitHub 5602082624 Spiders can now be tamed and ridden (#95194)
## About The Pull Request
This lets people ride and tame spiders by feeding them mouse, lizard,
moth, fly, and worm meat. You can only do this when a spider is a
spiderling or young; once it's fully grown, it's no longer possible.

This also refactors some tameable code to use `TRAIT_TAMED` instead of
setting variables on mobs individually.

## Why It's Good For The Game
It looks cool.

<img width="1920" height="1080" alt="dreamseeker_97k7fgzdhv"
src="https://github.com/user-attachments/assets/87d53102-468d-4dd7-b0a7-004f9a98df17"
/>


## Changelog
🆑
add: Spiders can now be tamed and ridden. They eat mouse, lizard, moth,
fly, and worm meat and can only be tamed when they are spiderlings or
young.
code: Refactored tameable code to use TRAIT_TAMED instead of setting
individual variables on each mob.
/🆑
2026-03-15 19:20:57 +00:00
JacquerelandGitHub a5c9662caa You can draw faces on bots (#95258)
## About The Pull Request

Adds the ability to use a pen or crayon or spraycan to draw a face or
eyes onto certain bots
This allows people who miss the pareidolia of the old medkit sprite to
fix it themselves
You can clean it off again using most cleaning products, if you disagree

<img width="649" height="220" alt="image"
src="https://github.com/user-attachments/assets/de4869b8-9ac1-4c79-8890-bd95fd4fcaa1"
/>

I think from looking at this screenshot apparently I haven't enabled
pixel perfect 2x on my laptop for which i should be executed, sorry

I didn't add any for ones not pictured here because I couldn't think of
a good way to draw them but it's simple enough to expand.
The face will be coloured with whatever ink you used to draw it, I was
just lazy and only used a regular pen in this picture
How are all of the non-white drawing implements adding that white
circle? Don't worry about it

This comes in the form of a component so if you want to make other
things easily graffitable then you can do that
I ironically called it the defaceable component even though it's used to
add faces

## Why It's Good For The Game

It seems like something people have been wanting and it seemed like a
cute idea

## Changelog

🆑
add: You can draw faces onto some bots using a pen, crayon, or spraycan
/🆑
2026-03-05 12:55:05 +13:00
5243b00d6b Echolocation effect revamp (#95016)
## About The Pull Request

Revamps Echolocation effect

- Echolocation no longer pulses, at least, not as noticeably. The world
around you is consistently black and white, and objects will fade into
view as you approach or fade out of view as you move away.
- Echolocaters are now really blind. But you can still "see", so long as
you're not also deaf.
- Echolocaters can now "hear" mobs through walls, ie, see mobs through
walls like thermal vision.
- While echolocating you have the option of selectively ignoring things
which would make the screen busier - currently, blood, items, and floor
objects like vents or holopads.


https://github.com/user-attachments/assets/d559482c-e6e2-4b97-8387-54bca4074db0


https://github.com/user-attachments/assets/aeddd805-230c-4e82-b93f-1e537f4186eb

## Why It's Good For The Game

Echolocation is such a cool effect but it currently is basically
unplayable
This revamp aims to make it more playable, particularly by making it
update constantly so you can react easier.

## Changelog

🆑 Melbert
balance: Revamped echolocation effect entirely. Now updates constantly,
rather than on a cooldown.
balance: Echolocaters can filter out certain objects that they would
really prefer not to see at the moment.
balance: Echolocaters are mechanically (but not visually) blind, which
means they have flash immunity and whatnot. Because of course they are.
balance: Echolocater lose their ability to echolocate if they've gone
deaf. Then you're truly fully blind.
balance: Echolocaters can see (or rather, hear) mobs through walls.
refactor: Refactored Prosopagnosia to make the effect a bit more
generic.
/🆑

---------

Co-authored-by: Jordan Dominion <dominion@tgstation13.org>
2026-02-22 19:13:37 +00:00
MrMelbertandGitHub a91f04d435 Being absorbed now makes you into an imaginary friend of the changeling (#94956)
## About The Pull Request

When you get absorbed by a changeling, you get made into an imaginary
friend of the changeling that absorbed you

<img width="349" height="185" alt="image"
src="https://github.com/user-attachments/assets/03b00f37-8428-49c9-90c0-c165429e0674"
/>

<img width="290" height="223" alt="image"
src="https://github.com/user-attachments/assets/b40fe663-736b-4184-a50f-18376905a79a"
/>

<img width="682" height="161" alt="image"
src="https://github.com/user-attachments/assets/982102da-7e15-4a9c-93ef-3e12dc72d7d8"
/>

This imaginary friend doesn't show up on health scan (obviously), and
they communicate via hivemind chat, meaning all other changelings are
capable of hearing them

If your body is revived, you get yoinked out of the hivemind as you'd
expect
You also have a button to eject yourself from the hivemind (if you
prefer to observe).
And the ling themselves has a button to eject people from their hivemind
that are being annoying

## Why It's Good For The Game

Makes being absorbed a little less of a bummer, now you can tag along
and maybe even give them some tips about how your character would act if
they choose to disguise as you.

## Changelog

🆑 Melbert
add: When you get absorbed by a changeling, you get made into an
imaginary friend of the changeling that absorbed you.
refactor: Refactored how people are returned to their bodies after
occupying separate bodies, such as bitrunners and ghost roles. Report
any oddities or failure to return correctly.
/🆑
2026-02-14 16:26:24 +00:00
nevimer 00ccf0c6b5 Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts:
#	.github/CODEOWNERS
#	.github/workflows/compile_changelogs.yml
#	.github/workflows/stale.yml
#	SQL/database_changelog.md
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/__DEFINES/atom_hud.dm
#	code/__DEFINES/inventory.dm
#	code/__DEFINES/mobs.dm
#	code/__DEFINES/species_clothing_paths.dm
#	code/__DEFINES/subsystems.dm
#	code/__DEFINES/surgery.dm
#	code/__HELPERS/global_lists.dm
#	code/_globalvars/lists/maintenance_loot.dm
#	code/_globalvars/traits/_traits.dm
#	code/controllers/subsystem/minor_mapping.dm
#	code/controllers/subsystem/processing/quirks.dm
#	code/controllers/subsystem/shuttle.dm
#	code/datums/components/palette.dm
#	code/datums/components/surgery_initiator.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/hud.dm
#	code/datums/mood.dm
#	code/datums/mutations/chameleon.dm
#	code/datums/quirks/negative_quirks/nyctophobia.dm
#	code/datums/status_effects/debuffs/debuffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/slime/slime_leech.dm
#	code/datums/weather/weather.dm
#	code/game/data_huds.dm
#	code/game/objects/items.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/frog_statue.dm
#	code/game/objects/items/rcd/RLD.dm
#	code/game/objects/items/robot/items/hypo.dm
#	code/game/objects/items/stacks/medical.dm
#	code/game/objects/items/stacks/wrap.dm
#	code/game/objects/items/storage/garment.dm
#	code/game/objects/items/tools/medical/defib.dm
#	code/game/objects/items/weaponry.dm
#	code/game/objects/items/weaponry/melee/misc.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/game/objects/structures/curtains.dm
#	code/game/objects/structures/dresser.dm
#	code/game/objects/structures/girders.dm
#	code/game/objects/structures/maintenance.dm
#	code/game/objects/structures/mirror.dm
#	code/modules/admin/greyscale_modify_menu.dm
#	code/modules/admin/verbs/light_debug.dm
#	code/modules/antagonists/ashwalker/ashwalker.dm
#	code/modules/antagonists/heretic/knowledge/starting_lore.dm
#	code/modules/antagonists/ninja/ninjaDrainAct.dm
#	code/modules/art/paintings.dm
#	code/modules/client/preferences.dm
#	code/modules/client/verbs/ooc.dm
#	code/modules/clothing/head/wig.dm
#	code/modules/events/disease_outbreak.dm
#	code/modules/holodeck/holo_effect.dm
#	code/modules/jobs/job_types/head_of_security.dm
#	code/modules/jobs/job_types/security_officer.dm
#	code/modules/library/skill_learning/generic_skillchips/point.dm
#	code/modules/mining/lavaland/ash_flora.dm
#	code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/basic/guardian/guardian.dm
#	code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
#	code/modules/mob/living/carbon/carbon.dm
#	code/modules/mob/living/carbon/human/human.dm
#	code/modules/mob/living/carbon/human/human_defines.dm
#	code/modules/mob/living/carbon/life.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob/living/living_defines.dm
#	code/modules/mob/mob.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mod/mod_control.dm
#	code/modules/mod/modules/modules_general.dm
#	code/modules/modular_computers/computers/item/computer_ui.dm
#	code/modules/paperwork/paper.dm
#	code/modules/paperwork/paperbin.dm
#	code/modules/power/lighting/light.dm
#	code/modules/projectiles/guns/energy/kinetic_accelerator.dm
#	code/modules/projectiles/projectile.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/food_reagents.dm
#	code/modules/reagents/chemistry/reagents/other_reagents.dm
#	code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
#	code/modules/research/xenobiology/crossbreeding/_clothing.dm
#	code/modules/research/xenobiology/crossbreeding/prismatic.dm
#	code/modules/surgery/advanced/brainwashing.dm
#	code/modules/surgery/advanced/lobotomy.dm
#	code/modules/surgery/amputation.dm
#	code/modules/surgery/blood_filter.dm
#	code/modules/surgery/bodyparts/_bodyparts.dm
#	code/modules/surgery/brain_surgery.dm
#	code/modules/surgery/cavity_implant.dm
#	code/modules/surgery/coronary_bypass.dm
#	code/modules/surgery/gastrectomy.dm
#	code/modules/surgery/healing.dm
#	code/modules/surgery/limb_augmentation.dm
#	code/modules/surgery/organ_manipulation.dm
#	code/modules/surgery/revival.dm
#	code/modules/surgery/sleeper_protocol.dm
#	code/modules/surgery/surgery_helpers.dm
#	code/modules/surgery/surgery_step.dm
#	code/modules/unit_tests/_unit_tests.dm
#	code/modules/unit_tests/designs.dm
#	code/modules/unit_tests/icon_state_worn.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png
#	icons/map_icons/clothing/head/_head.dmi
#	icons/map_icons/clothing/shoes.dmi
#	icons/map_icons/items/_item.dmi
#	icons/mob/huds/hud.dmi
#	icons/mob/inhands/64x64_lefthand.dmi
#	icons/mob/inhands/64x64_righthand.dmi
#	icons/obj/machines/computer.dmi
#	tgui/packages/tgui/interfaces/OperatingComputer.jsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
#	tgui/packages/tgui/interfaces/SurgeryInitiator.tsx
#	tools/icon_cutter/check.py
2026-02-12 23:50:09 -05:00
44f6846306 Adds structural weakpoints that can spawn on station (#94839)
## About The Pull Request

This PR was originally described to me by @AnturK and I implemented a
few elements of it to the best of my ability, then I promptly forgot
about it for the last 2 months.

This PR adds in randomly spawning structural weakpoints, using much of
the same mechanics of spawning in hidden satchels. If identified using a
T-ray scanner, they can be fixed using a welder by crew. More
excitingly, if a weakpoint is subject to an explosion, it will propagate
a crack, using a random line of turfs, then calling `ex_act()` on each
one with a small callback chain. Finally, cracks will form additional
weakpoints if caused this way, though are almost certainly going to be
noticeable, unlike before where they can spawn undertile.

With this addition, I've added a negative station trait, that will
increase the number of structural weakpoints that will spawn in a given
round. In a normal round, 3 weakpoints will spawn on the station, where
with the station trait, 4-8 weakpoints will spawn across the map.

Weakpoints come in 1 flavor practically, with a larger subtype being
spawnable by admins. The vars for weakpoints also happen to be fully
var-edit-able for admin purposes, including the explosion intensity that
can cause the weakpoint to trigger, the number of sub-cracks, if
additional weakpoints can spawn, etc.

You may also seal weakpoints using sticky tape.

## Why It's Good For The Game

Weakpoints feel like an interesting modifier to a map, where if caught
early can prevent a bad situation becoming worse. Otherwise, weakpoints
could very quickly cause chaos on the map, but despite their
description, aren't capable of causing **too** much destruction that
they can cause a shuttle call unless they're being manipulated by
traitors or antagonists. Though low odds, the idea of a player
welder-bombing a door or an IED going off related to the current
situation in a round, being exacerbated by pure chance due to being near
an IED seems really, REALLY funny.

## Changelog

🆑
add: Stations can now spawn with Structural weakpoints. If they're
subject to an explosion, they'll crack open a tear in the station's
turfs. If you spot one, make sure to weld it or seal it with sticky tape
to fix one. Or not!
add: Adds a negative station trait that greatly increases the number of
weakpoints that can spawn on station.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2026-02-06 16:12:31 -05:00
SmArtKarandGitHub 8e63bdd337 Moves disfiguration to be handled by the head instead of the mob itself (#94948)
## About The Pull Request
TRAIT_DISFIGURED and physical disfiguration are now handled by the head
bodypart rather than being on the mob itself. This is mostly for
internal purposes, but it does mean that:
- Players can now perform plastic surgery on torn off heads.
- Disfigured mobs' heads keep their face hidden, and when attached to a
different body won't magically get repaired and vice versa, attaching a
new head to a disfigured corpse no longer disfigures it.
- Robotic (and other non-huskable) heads no longer become disfigured
from husking
- Also in the rare case of grafting a head torn off from a husk onto
another body, they no longer permanently turn into an Unknown. (lol)

## Why It's Good For The Game

Saner code, we generally want limb-specific behaviors to be on limbs
themselves and not on the mob. Also yeah that one weird edge case.
~~Husks are next on the chopping block~~

## Changelog
🆑
qol: Plastic surgery can now be done on detached heads.
refactor: Refactored how disfiguration is handled to be stored on head's
side
fix: Robotic (and other non-huskable) heads no longer become disfigured
from husking
fix: Attaching a head from a husk to a different body no longer
permanently turns them into an Unknown.
/🆑
2026-01-28 20:25:25 +00:00
MrMelbertandGitHub bf22a388ca People become desensitized to death from exposure (#94924)
## About The Pull Request

Desensitized is no longer binary yes/no, now scales from 0.1x to 1x (or
beyond, I guess)

Desensitized jobs start as 0.5x desensitized (which is the threshold for
being considered "truly desensitized")
Some antags are now 0.1x to 0.25x desensitized

Witnessing death of a fellow human gives you slight desensitization
(currently -0.025x).
A normal crewmember, after witnessing 20 deaths, is on par with a
roundstart desensitized crewmember.
Likewise a desensitized crewmember has almost no reaction to death after
witnessing 20 deaths.
Your own deaths count towards this value.

There's an achievement for managing to go from 1x to 0.1x across the
course of an entire round.

## Why It's Good For The Game

This is intended to contribute to the "story" people face across the
length of a round.
Rounds with few overall deaths results in crewmembers regularly getting
shocked, but bloodbaths results in crewmembers "dehumanizing and facing
the bloodshed".

## Changelog

🆑 Melbert
add: Desensitization to death is no longer binary - some antagonists are
now more used to it than others.
add: Witnessing the death of a fellow humanoid (or dying yourself) will
slightly desensitize you to future deaths.
add: Adds an achievement for managing to max out desensitization across
a round.
add: Desensitized crewmembers care less when splattered with blood.
add: Holodeck mobs have a reduced death mood impact.
/🆑
2026-01-28 20:22:07 +00:00
SmArtKarandGitHub 8d86b42a4e Ashwalkers are now desensetized to non-ashie deaths, and enjoy witnessing gibbings (#94961)
## About The Pull Request

Closes #94785
Also apparently we never passed dusted and gibbed to update_effects, so
more specific death moodlets didn't update their descriptions. Whoops.

## Changelog
🆑
qol: Ashwalkers are now desensetized to non-ashie deaths, and enjoy
witnessing gibbings
fix: Some specific death moodlets now properly register when their
target has been dusted or gibbed in their description
/🆑
2026-01-27 15:26:56 -05:00
JacquerelandGitHub faf2000100 Rust doesn't apply effects to people who aren't touching it (#94733)
## About The Pull Request

Heretic rusted tiles do not apply any effects to things which are
jaunting or inside vents.
They also don't apply any _negative_ effects to things that are flying
(but they do apply positive ones, just because flight is a cool thing to
have earned and it would be sad to lose your bonuses because you have
wings).

I also renamed the element so that it isn't named after the rust passive
(in fact, the rust heretics with that passive don't use the element) and
simply describes what it does, and removed a subtype in favour of just
passing in some arguments.

I also added a trait which bypasses the negative effects of standing in
rust, in case an admin creates a non-heretic creature and gives it rust
healing. They shouldn't have _both_ healing _and_ gain disgust and minor
damage from starting in rust (possibly the heretical harvester was being
effected by this?)

Finally I adjusted the `rust_heretic_act` and `rust_turf` procs to
remove a footgun I saw a developer fall into recently where they didn't
realise that the generically named "rust turf" proc actually assumes a
wizard did it, now if we add anything else that wants to non-magically
rust a turf then it will work the way you expect.
As a side effect this changes the two item sources of rust that heretics
get to actually use rust resistance rather than rusting every turf, I
set them to effect all inorganic turfs as a default.
And finally I noticed that rust heretic ascension was passing
"RUST_RESISTANCE_ABSOLUTE" as a value into its proc which reads `Should
not be rustable. EVER.` in its comment, which smelled like a bug. So I
changed it to just "things which should be rustable ever".

## Why It's Good For The Game

It is the logical way you would expect these things to work;
Heretics crawling in vents or (for instance) using space crawl should
not be healed for touching rust that they aren't touching, as they are
not readily accessible to other players. The idea of the rust healing is
that it's a tradeoff for exposing yourself in a visible "territory", so
you shouldn't be able to avoid it by being in that territory but
untouchable and invisible.
Similarly, players who have gained the ability to fly would not expect
to get sick from flying over rusty flooring. They're out of range.

## Changelog

🆑
balance: Eldritch rusted tiles don't apply their effects to anyone who
is jaunted or in vents, and don't apply negative effects to people who
are flying.
balance: Heretic items which apply rust (grenades and eldritch reagent)
check the rust resistance level of the turf rather than always rusting
it.
fix: Rust Heretics ascending don't rust unrustable turfs, like space
tiles.
/🆑
2026-01-15 12:43:39 +00:00
RikuTheKillerandGitHub c7e4e90004 Adds a new antag, the Blood Worm (#93787)
## LTS Document

Check this document before making any significant future changes to
blood worms, please.

https://hackmd.io/@RikuTheKiller/H1AHQSKNZx

## About The Pull Request

THIS PR SHOULD ABSOLUTELY BE TM'D FIRST

Blood worms are a new progression antag. When the event runs, 2
candidates are picked from ghosts and spawned in as blood worm
hatchlings, which then have to grow up, do a couple objectives and take
over the station.

Hatchlings are weak outside of a host, while juveniles can stand their
own reasonably well. Adults have high offensive power and can only be
dealt with using the right gear or a lot of luck and robustness. They're
meant to be a moment of glory for achieving maximum progression and they
can bootstrap the next hatchlings by gathering corpses before cocooning.

Each growth stage requires 30 seconds in a cocoon, which can only be
created after consuming a lot of blood. There's a falloff curve on a
per-blood-type basis, meaning you can't drain the same person over and
over again to reach adulthood. The medbay freezer is a priority target
for the blood worms and can get one of them to the juvenile stage if
fully ransacked.

It takes 500 blood to mature from hatchling to juvenile, and 1500 blood
to mature from juvenile to adult. You can only get up to 1000 blood from
synthetic sources like monkeys, and consuming synthetic blood is 30%
less efficient. Blood worms can also examine living targets to see how
much blood a target has, and how much growth the blood worm would gain
for consuming that blood.

Blood worms spawn in vents and have night vision for maneuvering in
maintenance. Hatchlings can ventcrawl, while juveniles can move around
by breaking things. Optionally, you can take over a host with a lot of
access like the Captain to go basically anywhere, especially if nobody
knows you killed the captain.

Behind the scenes, host-taking kicks the host's original mind to a
backseat mob. This needs the most testing in practice, but it's
confirmed that it returns the host's mind back to their body, at least
in testing.

All mob, ability and action sprites are made by INFRARED_BARON. Legal
rights were transferred to me after I paid for the commission.

Note, I've been working on this massive PR for quite a while, so
documenting every small change is really hard! Apologies for anything
I've missed. There's a lot.

Final note, admins can spawn these by either:
A. Trigger the midround event via the dynamic-panel verb, under the
Rulesets tab.
B. Giving someone the Blood Worm antag datum via the Traitor Panel in
the Player Panel for the target player. This will transform their mob
into a valid Blood Worm, with all of the associated objectives and such.

### Active Abilities
1. Leech Blood (No Host) - Lets the blood worm drain blood from living
targets and reagent containers. Uses an aggressive grab to restrain
living targets until leeching is over, which takes around a second to
initiate. Causes oxyloss during the leeching. NPC monkeys can't escape
from this and it floors targets as well.
2. Spit Blood (Both) - Multi-function ability, lets the blood worm fire
ranged corrosive blood spit at targets, melt restraints on their hosts
by right-clicking, and as an adult, shoot a burst of blood spit at a
target by right-clicking. Note of the right-click abilities, shooting
bursts can't be done while in a host. (to avoid unfair stealth kills)
Shooting a burst has a much longer cooldown than shooting normally. All
spit types cost blood to use.
3. Invade Corpse (No Host) - Lets the blood worm take a host for
themselves, consuming all of the host's blood and in essence, "becoming"
the host. Any bloodloss inflicted on the host is taken as damage to the
blood worm, and the blood worm retains its weakness to fire even in this
state. Burn damage itself no longer has any extra damage, though.
4. Leave Host (Host) - Title, literally just leaves the host after a
delay. Notably works even while the host is moving, dead, incapacitated
or otherwise fucked up in any way, shape or form.
5. Inject Blood (Host) - Lets the blood worm heal its host. The potency
of this increases as the worm grows up, but so does the cooldown and
blood consumption. This works on organ damage, injuries, etc.
6. Mature (No Host) - Makes the blood worm enter a cocoon for 30
seconds, emerging as the next growth stage. Requires an increasing
amount of consumed blood / growth as the blood worm uses it.
7. Reproduce (No Host, Adult Only) - Makes the blood worm enter a cocoon
for 30 seconds, with 4 hatchlings emerging out of it, including the
original blood worm, now reverted back into a hatchling as well.
8. Revive Host (Host) - If the host is in a viable state to be revived,
revives them after an animation sequence plays out.

### Passive Abilities
1. Space Immunity - Blood worms are immune to the cold, low pressures
and a lack of oxygen. Only the immunity to a lack of oxygen carries on
to hosts from this.
2. Organ Insertion - Blood worms can insert organs into their hosts by
right-clicking on them with the organ in-hand. This mainly exists to
deal with hosts that lack organs, and avoids the gotcha where an adult
blood worm ends up gutting their host by hitting them too hard, as they
can simply fix it on the spot.
3. Life Support - Blood worm hosts don't need a heart, lungs or a liver
to survive. Lungs are useful for speaking, and a liver is necessary to
process reagents.
4. Regeneration - Blood worms slowly heal over time. This is nowhere
near enough to overcome bleeding or heat damage, since it's 0.3 hp/s for
a hatchling, 0.4 hp/s for a juvenile and 0.5 hp/s for an adult.
5. Night Vision - Blood worms can see in the dark. This doesn't extend
to hosts.
6. Ventcrawling - Hatchling blood worms can ventcrawl.
7. Doorcrawling - Hatchling and juvenile blood worms can slide under
doors. Doing so takes 3 seconds for a hatchling and 5 seconds for a
juvenile.
8. HUD - Blood worms can tell how much blood targets have at a glance,
via a blood HUD bar exclusive to them. They can also tell apart other
blood worm hosts from normal people via an antag HUD. There's also an
examine message they can use on living targets for even more info.

### Weaknesses
1. Heat and Fire - Blood worms quickly die to heat, their bodies are
flammable and their blood will burn up if their host's core temperature
is too high. The main counter to this is getting a host with
flame-resistant gear.
2. Bleeding - While in a host, bleeding wounds will directly damage the
blood worm itself. How much a host needs to bleed before the worm dies
depends on their growth stage. Blood worm hosts keep bleeding even while
dead, so just keep hitting them and they'll die. Blood worms
automatically leave their hosts when they hit 10% health or lower, and
their hosts bleed 50% faster than normal people.
3. Stuns - Blood worms have no way of dealing with a stunned host other
than getting out. They can deal with any restraints by melting them,
though.
4. Testing - Security can order a blood worm testing crate from cargo,
either for a 20 minute cooldown via the security cargo interface
console, or for 10000 credits via the supply console. It contains 4
single-use testers that hurt a bit when applied, but are instant to use
and 100% accurate. The stopgap is that they're really fucking expensive
and only work once per item.

### Screenshot
<img width="280" height="132" alt="image"
src="https://github.com/user-attachments/assets/00d22361-997e-4347-a0bf-aa240de40727"
/>

## Why It's Good For The Game

Antagonist variety, mainly. This is basically Cortical Borers 2:
Electric Boogaloo.

Currently, we lack any antagonists with mind control abilities. That
really sucks!

I've also gotten a lot of positive feedback about the antagonist while
working on it.

This antagonist also has great potential for roleplay, as they can take
over hosts, surprise attack people by getting out of a dead corpse, talk
to each other using Wormspeak, etc.

I think we're also itching for variety on "pest" antagonists. Right now
we just have spiders and xenos. Everybody knows these two, so why not
mix it up a bit?

And as for balance? Blood worms are relatively easy to dispatch when you
know their weaknesses, which are extremely clear. Bleeding for hosts,
fire for either one, lasers for the worms themselves. As long as you get
the host in crit and keep hitting, you've pretty much won, and they
can't keep spamming Inject Blood forever since they'll quickly run out
of blood to use.
## Changelog
🆑
add: Added a new heavy roundstart/midround antagonist, the Blood Worm.
Credit to INFRARED_BARON for the sprites!
fix: Removing traits based on a source no longer causes issues with
trait signals.
fix: High-priority effects no longer double-trigger due to subsystem
issues.
fix: Weighted averaging in reagent merging code has been band-aid fixed.
It's not the best, but it works.
/🆑
2026-01-14 23:30:35 -06:00
Y0SH1M4S73RandGitHub 8348221b42 Fishing rods only apply materials to newly spawned fish. (#94745)
## About The Pull Request

Material fishing rods apply their materials any time they catch a fish,
even if that fish was fished from an aquarium. The math behind
calculating fish weight from materials results in exponential weight
growth, which becomes hyperexponential when you let the fish grow
through feeding.

This PR makes material rods only apply their materials to newly-spawned
fish, preventing repeated material application and the downstream
consequences thereof, including, but not limited to:
- Exporting fish for absolutely absurd, potentially infinite amounts of
money
- Setting a mob's next click delay and/or next move delay arbitrarily
far in the future
- Creating an item with infinite force. This:
  - Instantly breaks any destructible structure
- Sets a mob's health to `-nan`, making them immune to crit or death
from damage due to how `nan` works with comparisons (at least until they
receive any healing whatsoever)
- `nan`-flood the station by burning a plasma fish with infinite mass
- Freeze the server by putting a fish through a recycler, where it will
spend the rest of eternity in the loop that ejects sheets from its
material storage after recycling an item

## Why It's Good For The Game

These are some *fucking* nasty things to have happen, and stopping them
all with this one change is probably something that really needs done.

## Changelog

🆑
fix: A fishing rod's materials can only be applied to fish when they are
initially spawned from a fishing spot. This means you cannot repeatedly
apply a fishing rod's materials to the same single fish to increase its
mass without limits.
/🆑
2026-01-06 09:12:03 -05:00
MrMelbertandGitHub 5ef61fde05 Being drunk makes you a worse surgeon unless you land in the Balmer Peak (also Balmer Peak tweak) (#94674)
## About The Pull Request

1. Balmer Peak voicelines can only trigger if you are of a whimsical
personality
2. If you are drunk, you get worse at surgery (up to 12x worse at 100
drunkness). However if you are within the Balmer peak you are BETTER at
surgery (0.8x).

## Why It's Good For The Game

1. Balmer voicelines are super annoying so I figure it should be
restricted to characters that would say it ICly
2. Being drunk obviously means you're bound to screw up surgery, right?

## Changelog

🆑 Melbert
add: Scientists only say Balmer voicelines if they are whimsical
add: Surgery gets slower if the surgeon is drunk, UNLESS you land in the
Balmer Peak, then it's actually faster.
/🆑
2026-01-04 20:38:22 -07:00
SmArtKarandGitHub a4f0dcb76f Adds flaying, human butchering and limb surgeries (#94612)
## About The Pull Request

Merry Christmas!

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

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

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

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

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

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

## Why It's Good For The Game

While rather gruesome, I feel like the freedom which these mechanics
provide fits us pretty well. We already have plenty of nasty stuff and
this doesn't really go that much further, and a chef serving their own
leg in their dish is pretty funny. (Also you can scrape plasma off
plasmamen bones)
2025-12-31 12:55:39 -06:00
MrMelbertandGitHub bfdb237612 Spooky Scary Supreme Surgery (Rework) (#93697) 2025-12-19 18:42:58 +01:00
fc1cb7d16c Adds a fish trait extractor/injector to the marine utility node (and a bluespace fishing reel) (#94042)
## About The Pull Request
Huzzah! It's been a good while since I last added more fishing features
(instead I focused on small fixes now and then), but here I'm at it once
more.

This PR adds two designs to the Marine Utility techweb node (which
previously only had the bio-electric generator kit): The fish gene-gun
an as well as the bluespace fishing reel.

The fish gene-gun is a pretty easy concept. It's a device that takes
empty syringes. When used on a fish with an empty syringe loaded inside
it, It'll prompt the user to choose which trait to extract. Once the
trait is extracted, the syringe is replaced with a specialized 'fish
trait injector' containing said trait. You can then hit another fish
with the fish gene-gun again to inject the trait, or use it to remove
the injector, which can then be used on its own, or loaded into the
gene-gun later (the results are the same anyway). There are two caveats
though: Using the fish-gene gun on the same fish more than once
(extracting or injector) will kill it, and it also cannot be used on
dead fish. The fish can still be revived though.

The other thing is the bluespace fishing reel. It greatly increases the
cast range, and it also goes through walls and other solid objects and
is not disrupted by them. If used on objects, reeling the item in will
move it through wall and solid objects as well. Other than that. It's a
pretty standard fishing reel. However, it has one flaw, and that is it
cannot go through reinforced walls (as well as indestructible ones), so
no stealing from the armory etc.

## Why It's Good For The Game
I've been having some honest to god skill issues with aquariums at times
(they were also half-broken in the past but things have gone for the
better...). Some of the fish traits are good, some are bad, others are
utterly terrible (*looking at the anxious zip zap*) and kinda withhold
some of the potential stuff that can be done, which is what prompted me
to make this PR.

Also, bluespace fishing reel because ~~JoJo Vento Aureo reference~~ it's
such a neat concept.

## Changelog

🆑
add: Two items have been added to the The Marine Utility tech node: a
fish-gene gun to add and remove traits to/from fish, and a bluespace
fishing reel.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2025-12-18 01:02:25 +00:00
nevimer 6e9f2ccfc0 Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts:
#	.github/workflows/compile_all_maps.yml
#	.github/workflows/run_integration_tests.yml
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/_onclick/hud/credits.dm
#	code/controllers/subsystem/networks/id_access.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/game/machinery/doors/door.dm
#	code/game/objects/structures/crates_lockers/closets/secure/medical.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/modules/antagonists/malf_ai/malf_ai_modules.dm
#	code/modules/jobs/job_types/_job.dm
#	code/modules/loadout/categories/accessories.dm
#	code/modules/loadout/loadout_helpers.dm
#	code/modules/loadout/loadout_items.dm
#	code/modules/loadout/loadout_preference.dm
#	code/modules/mob/living/silicon/robot/robot_defense.dm
#	code/modules/mod/mod_theme.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/reagents/reagent_containers/cups/drinks.dm
#	code/modules/shuttle/mobile_port/variants/supply.dm
#	code/modules/surgery/organs/internal/eyes/_eyes.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png
#	icons/hud/screen_full.dmi
2025-12-15 18:12:29 -05:00
37daf7cf6c A new trait that prevents passing out from oxygen damage (#94240)
## About The Pull Request

A new trait, TRAIT_NO_OXYLOSS_PASSOUT, that prevents you from passing
out due to having over 50 oxyloss. Applied by taking nooart and being a
super hulk.

I couldn't replicate it, but if it's still a bug this definitely closes
#92771. Also I didn't remove the line in nooart that constantly removes
the knockedout trait from oxyloss for redundacy reasons. I mean if it's
going to keep removing the knockedout trait from hardcrit every turn
despite having nohardcrit that's probably intentional.

## Why It's Good For The Game

Bugfix I think. Also super hulks are supposed to be immune to everything
stun related and fight on no matter how much damage they've taken, so
yeah.

## Changelog

🆑
fix: Nooartrium patients and super hulks can no longer pass out from
oxygen damage
/🆑

Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
2025-12-01 16:36:20 -07:00
MrMelbertandGitHub 42f4df09a7 Tweaks ai escape_captivity behavior (#94224)
## About The Pull Request

Now: AI will break chairs they're buckled in
After PR: Ai will prefer to resist out of chairs if possible

Fixes #94222 , partially

Really I think this shouldn't be a subtree, orrrrr if it is it should be
enabled by combat.
It's weird that buckling a pet into a pet bed encourages them to get up
ASAP.
If a mob is completely docile or otherwise not trying to act, they
shouldn't freak out and break whatever they're sat in.

Alternatively pets need a behavior for seeking out a bed (but that's
more effort)

## Changelog

🆑 Melbert
fix: AI mobs will prefer to resist out of simple buckles (like being sat
in a chair or bed) rather than try to break the chair.
/🆑
2025-11-30 17:26:11 -07:00
nevimer baf3837ae8 Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
2025-11-29 22:49:21 -05:00
MrMelbertandGitHub c3b29b8823 Monkeys will avoid glass tables (#93997)
## About The Pull Request

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

## Why It's Good For The Game

Monkeys loooove glass tables

## Changelog

🆑 Melbert
qol: Monkeys will avoid stepping over glass tables
/🆑
2025-11-18 17:24:53 -07:00
RikuTheKillerandGitHub c7cb0674cc Preliminary blood refactor (#93854)
## About The Pull Request

Moves all blood handling into procs and adds ways to easily hook into
basically every basic blood behavior.

This PR is not meant to fix every single case of janky blood logic in
the game. The main point and motivation of this PR is to add hooks for
blood behaviors. This allows for way more flexibility with blood code.

I am not going to fix our 3000 instances of single-letter vars, wacky
blood transfers, etc. This is just the groundwork for future PRs to
build off of, and by itself, should do very little to change blood
behavior.

I also added a rigorous set of unit tests for verifying that all of the
basic blood volume procs work correctly.

## Why It's Good For The Game

Previously, blood was handled via directly reading/writing
[var/blood_volume]. This was INCREDIBLY inconsistent and there was no
way to hook into it. This PR makes blood handling way more consistent,
which is great for all sorts of features.
2025-11-13 11:45:36 -06:00
Roxy 71faa643bf Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-12 2025-11-12 16:44:13 -05:00
Fghj240andGitHub 6b2409065a Empaths is now a component instead of a trait (#93680)
## About The Pull Request

Empath has become a component instead of a trait, letting it store
variables or whatever components are good for. Also, it works slightly
differently for empath quirk users and moon heretics alike.

Additionally:
- You can only shiver when you see an evil person once. After that it
won't happen again.
- Empaths no longer get a mood debuff from seeing someone distressed. 
- Moon heretic empaths no longer get smited by evil people. 
- Moon heretic empaths aren't scared of evil people.

The component also supports empaths being able to tell if a fake dead
body is actually dead, and being able to use empath on yourself, but
those aren't enabled for the empath quirk or moon heretics. (Self-empath
would probably powercreep self aware)

## Why It's Good For The Game

While the empath quirk is incompatible with the evil quirk, the trait
wasn't. That means you could potentially become an evil empath and still
feel bad about other people feeling bad and get smited by other evil
people. Being an empath is different from having empathy, and there's
now a personality trait (compassionate) that has a very similar feature
so the mood debuff got axed and moon heretics can't get smited by
mending touch anymore.

I think being a heretic and looking into pierced realities probably
means you have the mental fortitude to not freak out when you see an
evil person. Evil people are (probably) a lot less scary than whatever
mind destroying thing is in those holes.

As for the only-getting-scared-once bit, freaking out when you see an
evil person is flavorful but annoying after it happens multiple times.
Especially if it happens after examining the same person multiple times.
2025-11-06 18:04:07 -06:00
Roxy d0ca474789 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-05 2025-11-05 19:43:07 -05:00
MrMelbertandGitHub cc936a6547 Removes some isdullahan checks (#93760)
## About The Pull Request

Deletes some `isdullahan` in revival code

## Why It's Good For The Game

I think having snowflake isdullahan checks in core revival code is
ontologically evil

## Changelog

🆑 Melbert
code: Small dullahan code cleanup post Halloween
/🆑
2025-11-03 18:22:01 -07:00
Roxy e28e9fbdba Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 2025-10-23 17:38:23 -04:00
GhomandGitHub ca2cc70322 Organ damage refactor/cleanup (#93436)
## About The Pull Request
So, my original goal was just a refactor for the emissive overlays of
eyes, as a way to implement the specular emissive introduced by smartkar
some time ago, but somehow I found myself dragged into a bigger refactor
or cleanup of organ damage, thresholds, failures. One of the main
problem was that there were no procs called when a organ suffered enough
damage to fail or when recovering from failure. It'd just enable or
disable a bitflag, leaving it up to subtypes to decide how to tackle
organ failure their own ways: diverse, funky and sometimes incompatible.
More often than not relying on their very own "update_thingamajig" kinda
procs that run whenever the organ takes damage, rather than just when
the threshold is reached (low, high, failure. There are however a couple
organs with their own quirky thresholds, I let those slide).

There's also a bit of old code, especially for ears, with the
`AdjustEarDamage` and temporary deafness both predating the framework
for organ damage as far as I know. It really needed a coat of fresh
paint.

Oh, there were also more than a handful of organs that still heavily
relied on some ORGAN_TRAIT source instead of the `organ_traits` list and
the two add/remove procs `add_organ_trait` or `remove_organ_trait`. This
include organs that lose or gain specific traits when failing et
viceversa.

~~Lastly, felinids (and the halloween ghost species) having reflective
eyes. It's just a nod to the tapetum lucidum that animals with night
vision often have (including cats), which is why their eyes are a bit
brighter in the dark. Felinids however, do not have night vision (nor do
ghosts). This is merely cosmetic.~~ Cut out for the time being due to
issues with the specular emissive...

## Why It's Good For The Game
Refactoring / cleaning up old organ code.

## Changelog

🆑
refactor: Refactored organ damage code a little. Hopefully there won't
be issues (otherwise report them).
/🆑
2025-10-21 16:52:28 -05:00
Roxy d14e538393 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 2025-10-15 19:34:41 -04:00
EnterTheJakeandGitHub a2c7c8e57b Heretic Antagonist Full Overhaul. (#92119)
## About The Pull Request

Heretic has received a complete overhaul. This PR touches nearly every
aspect of the antagonist. For readability's sake, not every change is
going to be listed in this pull request.

For the full list of changes please refer to the design doc:
https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g.

Code by Me, @Xander3359 and @Arturlang 

TGUI by @Arturlang 

Sprites by OrcaCora and GregorDM

Writing bits by @necromanceranne 

### Core changes

- Cross-pathing has been removed. Main knowledge spells are now
exclusive to their path (for the most part).

- For every main knowledge unlocked (save for the robes and the blade
upgrade), Heretics can choose one option from a draft of 3 random side
knowledges (this is a free point).

- Heretics can now purchase side knowledges from a new tab, the
"Knowledge Shop". Side-knowledges have been divided by tier (Stealth,
Defense, Summons, Combat and Main). Tiers are unlocked as you progress
toward your main path.

- Heretics now gain the grasp and mark upgrade immediately, but their
main knowledge choices cost twice as much (except for the first spell,
the robes and the blade upgrade).

- Path specific robes have been introduced! They come with their own set
of quirks.

- Each Path has received a passive ability. This passive is upgraded
when you first create your robes, and again when you complete the Ritual
of Knowledge.

- Paths have been rebalanced as a result of the removal of cross-path
progression. Cosmic and Moon paths have received soft reworks.

- Upon unlocking the path 2nd level or reaching a total of 8 points
worth of knowledge, Heretics will lose the ability to blade break (and
the limit on blades all together).

- Ascension now automatically calls the shuttle with no possibility of a
recall.

- Late join Heretic has been removed.

### New UI 
<img width="750" height="635" alt="moon path ui"
src="https://github.com/user-attachments/assets/184ef783-5c9c-48a1-a2f7-4807ca93e990"
/>


### Knowledge shop

<img width="787" height="669" alt="Knowledge shop"
src="https://github.com/user-attachments/assets/3dc89b84-8c70-4d47-b612-54396e3ea6e7"
/>




### Quality of life //General balance changes

- Heretics will now gain X-ray vision for a few seconds when nearby an
eldritch essence (this effect has a cooldown).

- Ritual of knowledge now requires 1 uncommon item instead of 2. You may
now use a stunprod instead of a baton to complete the ritual. Beartraps
have been removed from the list of possible reagents.

- The maximum number of possible sacrifices required to ascend has been
reduced from 6 to 5 while the minimum has been upped to 4.

- Codex Cicatrix no longer requires a special pen to be made.

### Passive abilities

- Heretics now start with a passive ability. You can find what it does
on the path info tab after a path has been selected, and what they gain
when upgraded.

- Crafting your first set of Eldritch robes will bump your passive to
level 2.

- Unlocking the 2nd level will subsequently unlock your "Ritual Of
Knowledge"

- Completing the ritual of knowledge or ascending will net you the final
level.

### Path Specific Robes

- Armorer's Ritual is no longer a side knowledge. Each path will have
their own unique version of the ritual. This is placed after the 2nd
spell in the tree.

- Robes can no longer be destroyed by fire and acid, grant t4 flash
protection (Moth Heretics stay winning) and protection against basic
syringes, to bring them on par with other antagonist's armor sets.

- The recipe to craft the robes is now a set of armor/vest, a mask (any
mask will do now, not just gas masks), plus the unique reagent required
for the blades (Plasma for Cosmic, Trash For Rust, match for Ash and so
on)

- Wearing the robes as a non-heretic may yield some unfortunate
side-effects.

### Moon Path Rework

Moon path  rework.

Moon Heretics gain immunity to brain traumas and slowly regenerate brain
health. Equipping the moon amulette channels its effects through the
moon blade; making it unblockable and cause sanity damage instead of
brute. Ring leader's Rise now summons an army of harmless clones that
explode when attacked; the explosion briefly stuns non-heretics and
cause sanity and brain damage to them. Moon blade can also now be used
when pacified and Moon spells are no longer blocked by regular anti
magic, only mind magic protection.


**Cosmic Path Rework**

Cosmic path has received the biggest batch of changes alongside Moon.
The path has been dead last in ascension and pickrate (less than 5%) for
almost 2 years. It did gain some popularity over the last few months,
reaching the highest ascension rate in the game (12%) while mantaining a
relatively low pickrate.

Cosmic sits in a weird spot, where pretty much every knowledge
surrounding the path is either mediocre or, in the case of the
ascension, dysfunctional. Yet it has maintained a smidge of relevancy
due to how quickly Cosmic heretics can capture and sacrifice targets
thanks to Star Touch.

As a result, the best course of action would be to rebalance the
entirety of the kit; granting the heretic more tools to manipulate space
and dictate the flow of a fight, while lessening their ability to end a
confrontation by instantly sleeping their opponents.

lastly The Star Gazer is now ghost controlled ; And they shoot lazers!

<img width="636" height="451" alt="gazer gag 3"
src="https://github.com/user-attachments/assets/601d6881-c042-4e42-8ce6-ac90cd27848b"
/>


## Why It's Good For The Game


### Ok...but why do we want this?

Again, if you want my full reasoning, please check my doc
https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g.

To keep it short and concise; Heretic is too complex and unintuitive for
its own good. Too impenetrable for new players and too abusable for
experienced players. This can be chalked up to a lot of poor design
decisions. But ultimately, what I believe being the biggest contributor
to the current status of Heretic is the ability to move into different
paths, also known as "Cross-Pathing".

### Cross Pathing my beloathed.

Cross-pathing, while cool in theory, overcomplicates the antagonist and
overloads them with power. Players dealing with the heretic are
incapable of working out what a given heretic can do. This also leads to
late game heretics having 3 rows Worth of action buttons and virtually
no weakness.

Over the last year, I've often received the understandable but also kind
of unfair accusations of making Heretic too powerful without a clear aim
or purpose.

My goal with the paths I've reworked over the last year (Rust,Void and
Blade) wasn't necessarily to just make them stronger (although that was
also part of the goal, as they were paths that were underperforming),
but for them to have more interactions with the sandbox and to better
live up to the fantasy presented to the player.

If an harbringer of frost gets countered by a cup of coffee, we probably
messed something up.


Unfortunately, the current incarnation of Heretic doesn't really allow
for surgical balance changes to specific paths. Every time a knowledge
gets buffed, we make every path that can easily tap onto that knowledge
stronger by default. It doesn't take a genius to understand why this
system is ultimately unsustainable.

### Blade Breaking

I feel that after a heretic has reached the near peak of their power,
they no longer need the ability to instantly escape any encounter. Check
my doc for my full reasoning.

## Less versatile, more specialized paths.

By removing cross-pathing, we remove a huge maintainability burden from
the antagonist. Paths can now be designed around clearer strengths and
weaknesses. They become easier to balance and less of an headache to
understand for everyone.

It also means we can give paths some needed quality of life quirks
without having to worry how such a change might have a knock-on effect
for other paths.

Ash heretics can finally let loose without dying by their own flames.
Cosmic Heretic can go to space without having to carry a modsuit. Moon
Heretic can use their abilities without fear of one random trauma
ruining their day, and so on.

### What a horrible night to have a curse...., wait how do I curse
people again?

As of right now the heretic tree has quite a hefty amount of trinkets
that pretty much never see use.

Partly because the tree itself is a nightmare to navigate. And partly
because why would anyone set up an elaborate plan or scheme when they
can unleash 2 rows of spell in the span of bunch of seconds.

Heretics mostly gravitate towards powers that push them towards greater,
more potent combat strength. If it doesn't contribute to killing people
quicker, it isn't worth doing for most. And given the opportunity cost
associated for taking those powers, they will remain that way so long as
there are better choices to be poached.

The new draft system encourages Heretics to play more with the tools at
their disposal. If you want to go for a specific combo from the side
path options, you may now do so by tapping into the knowledge shop.

Yes, the shop does include a few knowledges from the other paths. But
these are limited to 1 per path, are very expensive and can only be
unlocked very late into the shift.

## Drip Of the Mansus

The iconic heretic robe is actually sequestered to a side path that is
most easily access by only two paths at a time. Since heretic paths are
being made to be much more specialized, the most obvious way in which
this can be showcased is through an easily
identifiable outfit.

By using the robes, we can both telegraph WHAT heretic you are looking
at, and just how much power they've accumulated and when it is
reasonable to take the kid gloves off and treat them as a genuine
threat. If a heretic is in their
robes, that heretic is now a significantly more prominent danger to the
station.

It also serves as a useful means for gating some of the more powerful
effects of a heretic's path behind the robes, AND enable options for
disarming them of that power should they be captured without making it
something endemic to their mob.

A major problem with heretics is a lack of certainty as to how powerful
they have become. A heretics robes is one of the milestones to help
players dealing with heretics identify that.

### Will this be 100% fair and balanced?

This is a massive overhaul to a pretty complex and bloated antagonist.
I've done my best to show the changes to several maintainers and other
members of the community for their feedback. But at some point we'll
have to see how this behave in the environment to get a feel if
something is over or undertuned. (that's my way of saying, yes this is
likely gonna require a testmerge or two).

What I will say is that I'm not trying to change the core identity of
Heretic.

Heretics should have the upperhand in single encounters early on, be
able to joust a small group of players after they unlock their final
spell, and end the round when they ascend. They're a progression
antagonist. They should retain their payoff as well as pose a danger as
they grow stronger.

But if more players feel like they are more reliably able to play the
antagonist in more varied and interesting ways, rather than the
antagonist largely existing as a measuring stick for 'robustness' due to
its elitist design philosophy, then the rework has been a success. There
should be something for
everyone in the antagonist, as is true for all of our antagonist roles.
2025-10-15 22:34:51 +00:00
MrMelbertandGitHub 0800c75540 Artifically spawned mobs have a vastly reduced penalty for death moodlet (#93348)
## About The Pull Request

Closes #93285

Mood event from the death of a mob spawned "artificially" is 75% weaker,
lasts 80% the duration, and don't compound

An artificial monkey's death will now result 
- -8 * 0.25 * 0.5 = floor(1) = 1 strength moodlet for the average crew
member
   - ...Lasting 30 seconds (unless refreshed)
- -8 * 0.25 * 1.5 = floor(3) = 3 strength moodlet for animal friends
   - ...Lasting 1.5 minutes (unless refreshed)
- -8 * 0.25 = floor(2) = 2 strength moodlet for compassionate crew
members
   - ...Lasting 1 minute (unless refreshed)

Artifical spawning includes
- Moneky Cube
- Xenobiology Console
- "Life" reaction
- Summoned rats
- Spawner grenades
- Cult ghosts

Lemmie know if I'm missing any obvious spawns 

## Why It's Good For The Game

While funny it was not my intention to have Xenobiology / Genetics /
Virology nuke your mood.

## Changelog

🆑 Melbert
balance: Death of artifical mobs (such as monkey cube monkeys) result in
a 75% weaker, 80% shorter moodlet that does not compound with more
deaths.
/🆑
2025-10-11 00:14:54 +02:00