## About The Pull Request
Fixes small typo errors in the embedding text when removing shrapnel
from patients, or yourself. Added the closing parenthesis to the
messages missing them, and removed the unnecessary punctuation inside
them.
Also fixes a typo in the nutriment pump cybernetic implant description,
saying "with" instead of "will".
## About The Pull Request
The light eater was working off of afterattack instead of interaction
for a lot of its light eating; now it works off interaction.
Incidentally, there was a 3 year old proc not being called when it broke
fixtures that gets called now; it turns out it's supposed to turn the
bulbs in light fixtures to ash.
## Why It's Good For The Game
Light eater was hungry, it gets to eat lights again
Fixes#84065
## About The Pull Request

Adds the nullblade, a nullrod variant that is a shortsword that deals
1d6 + A strength bonus derived from your attacking arm's lower and upper
melee force divided by 4 (plus any extra values from being sharpened or
enchanted).
But has the potential to do more damage if the target is debilitated in
some way or you attack them from behind. The sneak attack damage is 3d6,
and has a heavy wound chance.
The swingy nature of the damage means most of the time, this null rod is
much weaker than your standard null rod and struggles to even reasonably
compete with the other null rods unless you are orchestrating the
various methods to apply a sneak attack.
<details>
<summary>Overly complicated rules about sneak attacking
within:</summary>
You can sneak attack a target if;
- Your target is turned away from you.
- Your target is on the floor.
- Your target is unable to use their hands.
- You are standing in the same tile as your target.
- Your target is blind (sucks to be anyone with that quirk).
- Your target is staggered (from being shoved or recently tackled).
- Your target is confused (from being flashed or hit with a baton).
- Your target is being grabbed aggressively.
- Your target is spinning in place.
You cannot sneak attack a target if;
- Your target is a slime.
- Your target is incorporeal (this doesn't include revealed revenants).
- Your target is a mind reader, and you don't have anti-mind reading
technology fitted to your skull.
- A 50% chance of failure if your target does not need a heart.
- A 50% chance of failure if your target is some kind of Mansus entity,
which have weird anatomy.
- You are fucking blind.
Your sneak attacks are augmented by the following ways;
- +1d6 if your target is unconscious.
- +1d6 if you are Morbid and your target has been dissected.
- +2 if your target has been rebuked by the Eye of God.
- x0.5 if your target has recently been batonned. (This is way too easy
to combo together)
</details>
### Misc. stuff
I fixed the shortsword sprite having a misaligned handle to the rest of
the sword
I arranged the nullrod page to place the various subtypes into
categories, and removed some unnecessary subtyping.
Someone named a trait really poorly so I fixed that and also
alphabetized some traits.
## Why It's Good For The Game
I just thought a rogue-ish chaplain would be a neat change of pace to
the various tools of stabbing people to death that they already have. We
have a few chaplains sects that seem appropriate for this, and I enjoy
adding little minigames to our combat mechanics to make them more
engaging than simply stabbing people to death in a very direct fashion.
I had considered replacing one of the null rods that are kind of boring
or lack unique mechanics, but I'll hold off for now.
## About The Pull Request
- Fixes#84267
- Fixes#84264
- Fixes#84218
Adds `ALLOW_RESTING` to these actions. This should also fix some other
cases of mouse drop w are not aware of since it's at the `mob/living`
level. Also improved feedback messages for when an action cannot be
performed to help in debugging
## About The Pull Request
- Complete rewrite of borg omnitool code;
- - Borgs that use omnitools now have a "Omni Toolbox" that holds
whatever tools the Omnitool would cover. The toolbox keeps track of
Omnitool "Arms" in a list, as well as when to upgrade (or downgrade)
tool speed. The toolbox is not seen by the player directly.
- - Omnitool "Arms" will display available tools based on the Omni
Toolbox's contents. Selecting one does not move the tool out of the
toolbox, but instead simply overrides any following clicks with a melee
attack chain of the selected item. This is reminiscent of how borg
apparatus tools work. When selecting a tool, the Omnitool "arm" will
also set its own icon state to match the tool selected.
- - Because all Omnitool "arms" are using the same tools from the same
toolbox, actions done with one can be seen from another. For example,
using the first Omnitool to scan the Silo with the engineer borg's
multitool will update the tool's buffer, and it can be used later, even
if the multitool is selected by the second Omnitool.
- Because we're now using real tools, rather than a single tool item
faking tool usage via tool flags, almost all interactions with tools
should properly carry over.
- Added Cyborg versions of the medical toolset, for use with the Medical
Cyborg omnitool, so that we can finally use the really nice borg-version
medical tool sprites.
## Why It's Good For The Game
Easier to read code.
Fixes#83667Fixes#83537Fixes#83077Fixes#82918 partially; Heating beakers works, but the tile quick-swap
function will not function; the action is initiated by a click from the
tile stack rather than the crowbar.
## Changelog
🆑
fix: Refactored borg omnitool code, fixing most of the unique
interaction issues.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Previously, you couldn't pick up Ian because the clothing interface
would always open instead. Now, when you grab Ian (or any other corgi or
mob with the `can_be_held` trait) in an aggressive grip and pull him
towards you, you will take him into your hands!
## Why It's Good For The Game
...
You can hug Ian... That's enough
## Changelog
🆑
fix: you can hold Ian in your arms
/🆑
closes https://github.com/tgstation/tgstation/issues/84023
## About The Pull Request
if you pass nothing to `on_changed_bloody_shoes` it unregistered the
signal that leaves the footprints
## Changelog
🆑 Melbert
fix: Bloody footprints now go until you run out of blood on your feet
instead if only a single tile
/🆑
## About The Pull Request
So sparks were laying waste to every department that had sparks as a
little pizzazz particle effect, which turned out to be seemingly every
single department, and also just a bunch of random shit we had laying
around. That wasn't really the goal so I've reworked them, for now,
until I'm able to more comprehensively address how we handle things that
are combustible vs things that are actually dangerously flammable, which
we don't differentiate for now.
Sparks now send a signal to whatever thing is touching those sparks.
Right now I've specifically made pools of welding fuel, things made of
plasma, people covered in flammables, and cigarettes respond to this
signal. Sparks that touch objects with reagents in them will heat those
reagents marginally (approximately 40kelvin increase from 300 kelvin
underneath a popped lightbulb). There is also another signal
'HAZARDOUS_SPARKS' but as of this PR it is not used.
If you walk into sparks or get showered by them, the sparks will also
interact with any of your visible equipment (outerwear and held items),
but to reiterate, nothing besides the above stated items have
interactions with sparks... for now...
## Why It's Good For The Game
I won't apologize for being hilarious but turning departments into
fields of burnt boxes, tables, vegetables, and crates wasn't really the
intent.
Addresses #84169 and similar
## Changelog
🆑 Bisar
balance: Sparks have been heavily adjusted; they only affect items made
of plasma, pools of welding fuel, flammable people, cigarettes, and
items that contain reagents... for now. Their long-standing behavior of
igniting flammable gas has been untouched.
/🆑
## About The Pull Request
See changelog for shortlist
1. **Threat changes.** I was a bit unsatisfied with the rate of antag
spawns. These have been increased considerably. The clamped probability
has been increased from 1-10 to 5-15. The probability increases from 5
to 15 as domains are completed. Generally, in a standard round, the
chance of spawning at least one antag should be around ~50% at 7 domains
completed. Emagging a server doubles this rate.
2. **Map changes.** Starfront saloon was a cool idea on paper: A totally
modular map. However, it looked very uninspired and was so much of a
chore on the map loading system that it prompted players to admin help
how long it took, thinking it was broken. I've removed the map. I have
others I want to implement that don't look so bad.
3. **QoL changes**. Ghost observer experience is improved. Previously,
you could click netpods to view their avatar, and now you can click the
hololadder to return. I've included examine text to show this. The
server's examine text will now also give you clues that it's emagged
(ghost only). The examine text on hololadders has also been improved.
4. **Bitrunning antags.** These were designed as temporary, but they
were everything but. Spawning as one would prevent your revival, which
just isn't a good tradeoff for something that's going to get deleted in
a minute. Now, this system uses temp bodies just like CTF, so you can
return once you're dead. (exception: coming station side)
5. **Maps**: Syndicate assault is still one of my favorites, but there's
cheesy exploits like instantly breaking the display case to lock down
the ship, turning on turrets which are EXTRA lethal, etc. I've added
some pistols to the closets and removed some of these exploits.
6. **Cooldown**: Yes, no one seems to upgrade these ever, and it proved
a poor technique to encourage bitrunners to leave their rooms. I had
other plans to encourage this, not included here, so I think lowering
the cooldown time is beneficial. 3min -> 2min
> [!NOTE]
> File diff: removed a map
## Why It's Good For The Game
Closes#83787
General updates and QoL for bitrunning to keep it fresh. I was quite
disappointed with the scaling of threat, and most players haven't even
seen bitrunning antags except when I admin spawn them. These numbers
aren't hard set in my mind, and could be adjusted.
I generally want bitrunning easier to access and more "temporary" which
is in keeping with its design doc.
## Changelog
🆑
fix: Bitrunning made more illegal: Increased the rate at which antags
spawn.
fix: "Temporary" bitrunning antagonists and spawners are made actually
temporary. You will return to your original body after death, just like
CTF.
add: Added more examine text for ghosts to bitrunning equipment.
balance: Server cooldown reduced by 1 minute at base level.
add: As an observer, you can now switch views between station and
virtual domain by clicking the hololadder and netpod respectively.
del: Removed the starfront saloon BR map.
fix: Syndicate assault map: Added pistols, reduced exploits.
/🆑
## About The Pull Request
So my previous PR was to give ashwalker the settler trait so they'd get
some of the benefits of settler (better riding, fishing, and taming) but
it was suggested that Settler be atomized into different traits instead.
I've done that here.
Ashwalkers now get
TRAIT_ROUGHRIDER
TRAIT_BEAST_EMPATHY
TRAIT_EXPERT_FISHER
which will, respectively, make them better riders, better tamers, and
better at fishing. I also made a small change to the riding code that
references riding speed boosts for people with the ROUGHRIDER trait
(would, at the moment, only be ashwalkers and settlers) that gives
ashwalkers the maximum bonus, to represent their primal connection with
the beasts in the area.
## Why It's Good For The Game
Ashwalkers are described in the lore as being denizens of lavaland, the
same as all the other messed up shit down there. This change brings them
in line with that. The improvements to the handling of the settler trait
will also open up avenues for expanding or improving on related systems
## Changelog
🆑 Bisar
add: Ashwalkers are now better at riding, taming animals, and fishing.
code: Behavior for the settler trait has been partially atomized into
several traits instead.
/🆑
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
PR for collecting techweb feedback post merge and address valid issues
of #84024.
People seem to dislike the abundance of new experiments in the middle of
the tree, so reducing some requirements for those for now.
Also updated NT frontier app a bit, as people are confused with the
shell experiments.

## Why It's Good For The Game
Balancing out the new tree.
## Changelog
🆑
balance: Added ordnance to extra access of geneticists and roboticists
balance: Reduced parts scanning tests' machine count to 4 from 8
balance: Reduced augmented organs scanning tests mob count to 1 from 2
balance: Reduced equipped mech scanning test count to 1 from 2
balance: Added polycrystal option to bluespace crystal scan test
fix: Allowed NTNet relay in away circuit imprinter for NT Frontier app
qol: NT Frontier app installed on RD and Scientists` PDAs by default
qol: Updated NT Frontier app to be more user-friendly
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
## About The Pull Request
Replaces the Particle Acceleration Rifle, or the Beam Marksman Rifle,
with the Event Horizon Anti-Existential Beam Rifle.
In short, it shoots black holes.
It takes five cores to make.
It pretty much kills everything you point it at and their immediate
bystanders as well.
You can do this from the relative safety of a whole four screens away
thanks to it having a scope.
There can only ever be one vortex anomaly made in the round. The recipe,
however, always requires the maximum number of cores that can be made in
a round. If the number goes up for some reason (maybe someone wants to
add more vortex items), so does the total number of cores needed to make
an AEBR.
## Why It's Good For The Game
Firstly; the beam rifle? Awful. Jank code. Bad performance. Ancient
balancing considerations. Just too strong to bring out regularly against
specifically blobs, but completely fucking useless against anyone else.
So I'm hitting all these problems at once. I reduced a 600 line file to
less than 60. I've removed all that bad code. I've also made it
specifically unable to combat blobs at all because singularities send
blobs off to safety.
Secondly; this is maybe the first example of 'more cores = bigger
power'. The rifle was already utterly trash to have around, and I just
didn't think the way it worked currently could really excite anyone
enough to go on a big ol' quest to get it. Solution?
You will cause a shuttle call if you get this weapon.
## Changelog
🆑
add: Replaces the Particle Acceleration Rifle with the Event Horizon
anti-existential beam rifle. It shoots black holes. You can make this
in-game. That's right, YOU!
balance: Only one vortex anomaly can be made in a round.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
there is a very small chance vendrobes will have mothroaches inside.
this will become apparent as the clothes you buy will come out slightly
damaged and eaten. hitting the vendrobe with a weapon (or throwing the
weapon at it) will cause the mothroaches to come out and scatter
everywhere. mothroaches will now also seek out clothes to eat them
## Why It's Good For The Game
gives more character and depth to mothroach AI
## Changelog
🆑
add: vendrobes may have mothroaches inside them
add: mothroaches will now seek out clothes to eat them
/🆑
## About The Pull Request
The proc `can_perform_action()` now
- Accepts atoms & not just movables without runtiming. Fixes#83985
- It now uses `CanReach()` instead of `Adjacent()`. Allows you to
- Check if the target object is placed on top & not hidden
- Is the object inside another storage atom & such
- Properly checks for recursive locs. Before we were passing the direct
atom & not the type to `recursive_loc_check()` causing this proc to
always return true & giving us false positives. Now this proc has been
adjusted to accept both type paths & real atoms
- Removes `can_perform_turf_action()` since its now obsolete
## Changelog
🆑
fix: no more runtimes when dragging turfs onto other stuff
code: most actions now properly check for recursive locs & better
adjacency
/🆑
## About The Pull Request
First of all, updates `COMPONENT_CANCEL_MOUSEDROPPED_ONTO` in the same
way Melbert did for `COMPONENT_CANCEL_MOUSEDROP_ONTO`, so it will only
block other interactions if it succeeds. Second of all, makes the
climbable element compatible with buckling again, since the two
behaviors have a lot of overlap.
## Why It's Good For The Game
Fixes a bug (Fixes#83998) where the chaplain altar can't be buckled to.
There might be other, similar cases that I'm not aware of.
## Changelog
🆑
fix: The chaplain altar can once again be buckled to.
/🆑
## About The Pull Request
Added wires for toggling channels between Auto and Off to the APC.

## Why It's Good For The Game
Allows for a few interesting setups, such as:
- Connecting signaller to the lights channel to control lights remotely
or using proximity sensors/infrared lasers.
- Connecting signaller to the machinery channel to automatically disable
machine power usage in an area for power saving with signaller or
proximity sensors.
## Changelog
🆑
qol: APC has wires for machinery/lights/environment channels
/🆑
## About The Pull Request
Recently we allowed items held in your hands to catch fire if you catch
fire.
This makes sense but the code had a few oversights, then we reverted it.
This PR reintroduces the feature, but with a few refinements.
The basic feature is simple: If you are on fire then items you are
holding will also catch fire, in the same vein as items you are wearing
on your head or hands.
There are also a few caveats we forgot about the first time we added
this:
- If your gloves cannot catch fire, your held items will not catch fire
(because your hands aren't on fire).
- If you are extinguished, your held items will also be extinguished.
- Stopping, Dropping, and Rolling on top of any items will also
extinguish those items.
As part of this change, after an argument about whether or not this is
an oversight in coding-general, I've made the proc `get_equipped_items`
take a bitflag instead of a series of booleans as an argument and added
a new one for "include held items", so that we need no longer argue
about whether holding something counts as "equipping" it (in all other
parts of the game than this proc, it does). This is what gives the PR
most of its code footprint, don't be scared.
## Why It's Good For The Game
Items you are holding in your hands _should_ catch fire if everything
else on your person is on fire, and taking an item off of your body to
put it in your hands shouldn't protect it from fire, because those
things don't make intuitive sense.
If we want an item to be able to catch fire when worn, then it should do
so.
This might expose some issues where we were improperly setting the
flammability flags on items, but any weapon which will burn in your
hands now would also have burned if you were wearing it on your belt or
back, so making those issues more visible should be a bonus (we'll also
stop them from burning on your back or belt).
If you see someone holding a piece of paper that you really don't want
them to read you can now set them on fire to stop them from reading it,
whereas previously they would deftly hold the very flammable object out
of reach of their flaming body.
## Changelog
🆑
balance: Items held in your hands can catch fire.
balance: Items you are holding won't catch fire if your hands cannot
catch fire.
balance: When you stop being on fire so will items you are holding.
balance: If you roll around on your burning items they will stop being
on fire.
/🆑
## About The Pull Request
The only time people were added to the ambience SS's list is when you
log in, meaning if you toggle the preference on/off mid game, it does
nothing.
Fixes#61495
## Changelog
🆑 Melbert
fix: Enabling or disabling ambience mid round will properly enable or
disable ambience
qol: Added descriptions differentiating "Ship ambience" from "ambience"
/🆑
## About The Pull Request
Refactors body markings (lizard and moths) into the bodypart overlays
system
I've also renamed the icon states for lizard bodymarkings (downstreams
with lots of lizard body markings might have problems with this)
## Why It's Good For The Game
Gives us better controle over /human appearances. I didn't add any means
of actually changing them on the person (aside from genetics. how would
that even work? with a waterproof marker?), but makes it easy for
when/if I do. Also unloads mutant_bodyparts more, moving is yet closer
to full species dedatumization
## Changelog
🆑
refactor: Lizard and moth markings now use the bodypart overlay system
/🆑
## About The Pull Request
PR has been reworked a bunch! Changes in bold. Some of the **HATE** is
now outdated.
**Negative mutations now allow you to have more positive mutations, via
reducing your instability!**
**All mutations have been overall standardized via defines on their
instability values. Many mediocre positive mutations have had their cost
reduced significantly!**
```
/// Negatives that are virtually harmless and mostly just funny (language)
// Set to 0 because munchkinning via miscommunication = bad
#define NEGATIVE_STABILITY_MINI 0
/// Negatives that are slightly annoying (unused)
#define NEGATIVE_STABILITY_MINOR -20
/// Negatives that present an uncommon or weak, consistent hindrance to gameplay (cough, paranoia)
#define NEGATIVE_STABILITY_MODERATE -30
/// Negatives that present a major consistent hindrance to gameplay (deaf, mute, acid flesh)
#define NEGATIVE_STABILITY_MAJOR -40
/// Positives that provide basically no benefit (glowy)
#define POSITIVE_INSTABILITY_MINI 5
/// Positives that are niche in application or useful in rare circumstances (parlor tricks, geladikinesis, autotomy)
#define POSITIVE_INSTABILITY_MINOR 10
/// Positives that provide a new ability that's roughly par with station equipment (insulated, cryokinesis)
#define POSITIVE_INSTABILITY_MODERATE 25
/// Positives that are unique, very powerful, and noticeably change combat/gameplay (hulk, tk)
#define POSITIVE_INSTABILITY_MAJOR 35
```
Added a new height mutation: Acromegaly! It's the opposite of Dwarfism
and makes you uncannily tall. It also makes you hit your head 8% or 4%
(with synch) of the time you pass through airlocks. Wear a helmet!
**Injectors and activators' duration is now dependent on the
in/stability (absolute value) of the mutations to be injected! With a
minimum of 5-10-15 seconds for each type of injector. Also changed up a
bit how part upgrade cooldowns work, by making each tier reduce
cooldowns by 25-15-10% for each injector type.**
## Why It's Good For The Game
**> Negative mutations now allow you to have more positive mutations,
via reducing your instability!**
Genetics has been long in dire need of a rework. This isn't really one,
but it IS intended to increase genetics depth a bit and stave off its
stagnation, making it slightly more interesting than 'free shit', by
making it so **you can now gain more positive mutations, but you need to
figure out what you're going to take as a downgrade in turn.**
Genetic powers are heavily themed around comic book superheroes, and you
know what those had a lot? Debilitating drawbacks to their powers. Let's
replicate that.
**I intend to make a sister PR for this that adds more interesting
positive mutations (for the first time in decades) to genetics, so
there's an actual element of pick-and-choose involved**
> Added a new height mutation: Acromegaly! It's the opposite of Dwarfism
and makes you uncannily tall. It also makes you hit your head 8% or 4%
(with synch) of the time you pass through airlocks. Wear a helmet!
We have Super Tall. Let's add it to the game somewhere! With a fun
downside, of course.
**Gigantism is now a recipe mutation, mix Acromegaly with Strength to
get it.**
> **Injectors and activators' duration is now dependent on the
in/stability (absolute value) of the mutations to be injected! With a
minimum of 5-10-15 seconds for each type of injector. Also changed up a
bit how part upgrade cooldowns work, by making each tier reduce
cooldowns by 25-15-10% for each injector type.**
**Made no sense that a Glowy injector cost the same as a Hulk injector.
Just annoying. The cooldown is based on the absolute value, so a -30
instability injector would take ~30 seconds. This mostly so that
geneticists can't make a million modded syringe gun supersyringes**
## About The Pull Request
Change to using the more robust get_turf method to get locations, as all
pinpointers currently do.
## Why It's Good For The Game
The transcendent olfaction mutation is currently broken. When the target
is inside a container, its x y z becomes zero, so it will always say the
target is below you when comparing your z level to it, and it won't even
point in the right direction. This PR fixes that.
## Changelog
🆑
fix: Transcendent Olfaction mutation now works properly
/🆑
## About The Pull Request
Fixes#83906
So when I test the first issue I just whacked the guy and the checked VV
to see if it was tracking damage at all then I called it a day, turns
out while it was applying damage it was actually negative damage from
the crusher itself so while the final number of damage dealt may look
like "2500" the tracker tracked like "1400".
(I mean that's still a pretty interesting statistic is shows that the
crusher itself, with none of its special effects, does just under 60% of
the total damage dealt, so cool)
## Changelog
🆑 Melbert
fix: Crusher Fix For Real
/🆑
Closes#83956 (which doesn't actually fix the issue that a few possible
ways to fail surgery were missed.)
Fixes#83932🆑 ShizCalev
fix: Fixed some surgery failure states not properly setting the correct
mood event.
refactor: Minor refactor to how surgery events work, there is now better
support for per-surgery mood events!
/🆑
## About The Pull Request
Fixes#83972
Clicking on stuff in your bag with stuff that has
`openspace_item_click_handler` makes it think you're on a different z
level (which is technically true) so it overrides the click and does its
own thing.
So we check that z is not 0. Also move the return to be safe.
## Changelog
🆑 Melbert
fix: Fix inability to make r-glass by hand inside your backpack
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
As I turned this into a trait the other day I thought I might as well go
all the way.
This PR allows basic mobs to perform wound handling steps if not in
combat mode.
This chiefly means that:
- cats and dogs can lick your wounds clean (they have the "wound licker"
trait)
- gorillas can set a dislocated limb (they have hands)
- dextrous holoparasites can pluck the eyeballs out of someone's crushed
head (they also have hands)
Wolves have the wound licker trait but can't lick your wounds because
for some reason they can't drag humans and I couldn't be bothered to
figure out why that was set up that way. Also it would look stupid
because it would still do the attack forecast animation.
In order to facilitate being able to set bones, gorillas need to be able
to aggressively grab you.
While I was there I set it to allow them to strangle people to death
because... well they're gorillas. It's probably slower than they could
punch you to death, so I don't see the harm.
## Why It's Good For The Game
If felinids can lick your wounds to heal them why can't an ordinary cat?
An ordinary cat won't _often_ do this and I have not placed any such
behaviour into their AI tree, but a sapient Ian or Runtime might provide
extremely minor assistance in medbay.
Also Cargorilla setting your dislocated limbs seems very funny and like
something it should be allowed to do.
## Changelog
🆑
add: Cats and Dogs can lick slashing wounds clean.
add: Basic Mobs with hands can relocate dislocated bones, and pluck
eyeballs out of pulped skulls.
balance: Gorillas can strangle people.
/🆑
Yes, I know preventing the nuke disk teleporting to the icebox syndicate
base (or possibly the wendigo arena) is removing soul. Please don't kill
me :(
## About The Pull Request
Adds some missing variables to instances of get_safe_turf() so they will
only teleport to the given z-level.
Replaces some instances of get_safe_turf() with
get_safe_random_station_turf().
## Why It's Good For The Game
First, the differences between get_safe_turf() and
get_safe_random_station_turf():
### get_safe_turf()
- gets a random safe turf on a z-level (usually any of the staiton
z-levels), not accounting for the /area/
- should be used if you don't care if it spawns on the station or not,
or if you need to specifically teleport to a z-level
- not very expensive performance wise
### get_safe_random_station_turf()
- gets a random safe turf that will always be a station area, ignoring
z-level.
- should be used if you NEED the turf to be on a station's area
- slightly more expensive performance wise than get_safe_turf, but still
very cheap
Some code was using get_safe_turf() when it should've been using
get_safe_random_station_turf(), and some code that should be using
get_safe_turf() were incorrectly using the zlevels arg instead of zlevel
arg (Yes, there is a difference), or didn't include it at all.
All the changes were made to my best judgement. If you're curious about
a change, please ask and I will explain why I did it.
## Changelog
🆑 BurgerBB
fix: Tweaks some instances of get_safe_turf so things like the nuclear
disk doesn't accidentally teleport to the Icebox Syndicate Base
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
adds the flatpacker, it flatpacks machines

it is unlocked at industrial engineering
the default print time is 4.5 seconds, reduced by the servo tier divided
by 2
matter bins increase material capacity
better servos decrease material cost, and the flatpacker cannot print a
machine if it contains parts that are of a tier larger than the servos
tier
explained in this vid
https://github.com/tgstation/tgstation/assets/70376633/c26e4379-f49b-4b1d-a70c-61f1ba96a9e0
## Why It's Good For The Game
machine construction sucks, this should be more convenient, this does
not replace machine construction at all
compared to machine frames while this is faster and more convenient, it
is significantly more costly in materials, and a better servo is needed
to use higher tier parts, and the printed machines are always the lowest
required tier
## Changelog
🆑
add: the flatpacker, a machine unlocked at industrial engineering
/🆑
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
## About The Pull Request
- BoH + BoH = Singulo
- This time it has a unique animation associated with it spawning, it
starts off as a tear and then becomes a singulo after a short time.
- Max number of bluespace cores available to the crew reduced from 8 to
3
- Chucking a BoH into a singulo causes it to collapse in on itself.
(Supermatter charged singulos are immune.)
## Why It's Good For The Game
BoH is generally harder to acquire now which means we can bring back
soul
The max core number was reduced just to make sure it doesn't get spammed
too much. Four's a crowd.
It also might be the first time we actually hit a core limit
I thought it would be fun to make it so you can do something to stop it,
so if you're a bad enough dude and can make a third BoH, you can chuck
it into the bagulo to cause it to collapse. Singuloose generally ends
the round regardless so I thought letting people have hero moments would
be fun.
## Changelog
🆑 Melbert
balance: Re-adds Bagulo
balance: The max number of bluespace cores available to the crew has
been reduced to 3 (was: 8)
balance: Chucking a BoH into an uncharged singulo may save the station.
/🆑
## About The Pull Request
One should really err on the side of caution when preventing all humans
from being mousedroppable entirely
## Changelog
🆑 Melbert
fix: Human mousedropping
/🆑
## About The Pull Request
Same idea as #82656 but for ctrl click & ctrl shift click cause why not
- Does your signal & `can_perform_action()` checks using
`interaction_flags_click` flags before delegating the event down to
`ctrl_click()` proc.
- The one new change now is that `ctrl_click()` proc is now blocking,
meaning returning `CLICK_ACTION_SUCCESS` or `CLICK_ACTION_BLOCKING` will
stop the object from getting grabbed/pulled. So remember to return these
values if you want to stop the grab action or return `NONE` if you want
to process the click but still want the object to get grabbed as well
## Changelog
🆑
refactor: Ctrl click & Ctrl shift click has been refactored. Please
report bugs on GitHub
/🆑
## About The Pull Request
Mouse drag & drop has been refactored into its own attack chain. The
flowchart below summarizes it

Brief summary of each proc is as follows
**1. `atom/MouseDrop()`**
- It is now non overridable. No subtype should ever touch this proc
because it performs 2 basic checks
a) Measures the time between mouse down & mouse release. If its less
than `LENIENCY_TIME`(0.1 seconds) then the operation is not considered a
drag but a simple click
b) Measures the distance squared between the drag start & end point. If
its less than `LENIENCY_DISTANCE`(16 pixels screen space) then the drag
is considered too small and is discarded
- These 2 sanity checks for drag & drop are applied across all
operations without fail
**2. `atom/base_mouse_drop_handler()`**
- This is where atoms handle mouse drag & drop inside the world. Ideally
it is non overridable in most cases because it also performs 2 checks
- Is the dragged object & the drop target adjacent to the player?.
Screen elements always return true for this case
- Additional checks can be enforced by `can_perform_action()` done only
on the dragged object. It uses the combined flags of
`interaction_flags_mouse_drop` for both the dragged object & drop target
to determine if the operation is feasible.
We do this only on the dragged object because if both the dragged object
& drop target are adjacent to the player then `can_perform_action()`
will return the same results when done on either object so it makes no
difference.
Checks can be bypassed via the `IGNORE_MOUSE_DROP_CHECKS` which is used
by huds & screen elements or in case you want to implement your own
unique checks
**3. `atom/mouse_drop_dragged()`**
- Called on the object that is being dragged, drop target passed here as
well, subtypes do their stuff here
- `COMSIG_MOUSEDROP_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc
**4. `atom/mouse_drop_receive()`**
- Called on the drop target that is receiving the dragged object,
subtypes do their stuff here
- `COMSIG_MOUSEDROPPED_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc
## Why It's Good For The Game
Implements basic sanity checks across all drag & drop operations. Allows
us to reduce code like this
8c8311e624/code/game/machinery/dna_scanner.dm (L144-L145)
Into this
```
if(!iscarbon(target))
return
```
I'm tired of seeing this code pattern `!Adjacent(user) ||
!user.Adjacent(target)` copy pasted all over the place. Let's just write
that at the atom level & be done with it
## Changelog
🆑
refactor: Mouse drag & drop attack chain has been refactored. Report any
bugs on GitHub
fix: You cannot close the cryo tube on yourself with Alt click like
before
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
## About The Pull Request
Changed how tail regaining works.
* If it's your tail, an infinite debuff is replaced with a timed one
(new, on live there is no debuff)
* If it's not your tail but of same species, I guess it works, but we
are more sad (new)
* If it's not your tail AND of different species, we are horrified
(live)
Also a little clearing up of unused mood datums
## Why It's Good For The Game
Refactors good? Having your tail back good?
## About The Pull Request
Fixes bug where you can't interact with a shocked door without shock
protection even if it is depowered.
## Why It's Good For The Game
Prevents cheese where if you get lucky and depower a door, you can
easily find its shock wire and also easily test if budget insuls you
have work.
## About The Pull Request
Cult pylons will now slowly close bleeding wounds.
## Why It's Good For The Game
Pylons were never updated alongside wounds, so it's an EXTREMELY common
sight to see people dead or dying next to pylons purely from blood loss.
Even havign 4 pylons near isn't enough to help you up - it doesn't oxy
heal, so if you're in crit, you're fucked.
The blood cult should be able to deal with blood loss.
## Changelog
🆑
qol: Cult pylons slowly close bleeding wounds
refactor: allowed aura healing to clot wounds shut
/🆑
## About The Pull Request
Currently, stamina healing is a niche side effect on many drugs, besides
a few effects (mostly heretic powers, an obscure side effect of some
drinks) that actually contribute to a significant shift in gameplay
style when you use them. In this PR I significantly increased the
stamina recovery on almost every drug and some effects that provide it.
Points of interest (not completely inclusive):
Syndicate stimulants heal 12 instead of 5 stamina damage. This will
bring you out of stam crit in two cycles, and let you heal out of the
slowdown from the stamina damage from a baton strike. The current rate
of 5 takes 5 seconds to heal out of stam crit, and the stamina reset
takes place before you heal out of stamina damage slowdown.
Bath salts heal stamina at the rate stimulants used to. Meth heals
stamina slightly slower.
Changeling adrenaline will instantly bring you out of stam crit if
you're in it; otherwise, it will heal 10 stamina damage.
Ephedrine heals 4 stamina per life, instead of 1.
Being so drunk that you black out and give up your body to ghost control
will make you heal stamina more quickly than an ascended rust heretic.
You will also likely be dying of liver damage.
## Why It's Good For The Game
At the levels they are set, most of these stamina healing effects have
almost no effect on gameplay whatsoever except in the case of tanking a
couple of extra disabler shots (only in the case of the high end drugs),
or being able to do stamina consuming tasks slightly longer (breaking
boulders, grinding with pestle and mortar, working out, ???).
Adjusting these numbers would make these drugs an actual factor in
combat situations that rely on stamina crit (stun batons, ebows, stamina
damaging poisons and diseases). Most of the drugs already have side
effects such as brain and organ damage, which in the current state
hugely outweighs any reason to use most of them besides a few that give
a movespeed buff or prevent baton knockdown (ephedrine, stimulants).
This only affects stamina healing. There has been no change to any other
interactions with things that knock down or cause any other kind of
stun.
These changes are in consideration of the fact that taking stamina
damage puts you in a cooldown before you can recover your stamina
naturally. Effects that cause steady stamina damage will bottom out your
stamina the way they do now, unless you use something to heal it.
## Changelog
🆑
balance: Stamina healing has been significantly increased for most
reagents and passive effects.
/🆑
## About The Pull Request
After being put in stamcrit, future incoming stamina damage has
"diminishing returns" applied*.
The formula looks like `ceil(sqrt(amount of stamina damage) / 2) - times
you have taken stamina damage in stamcrit`.
This means eventually stamina based damage will do less than zero
damage, and thus, not contribute to keeping stamcrit active.
Very, very low amounts of stamina damage (such as from chems) contribute
to DR 1/20th the amount.
*_Note, this is not real diminishing returns because making it real
diminishing returns would be pointless, you are capped to 120 stamina
damage so 99.99% of the time you take stam damage while in stam crit
you're already capped. This is just faking the effect._
In its current stat this means that a stun baton will stop being able to
keep someone in stamcrit after the 5th hit, and a stock disabler will
stop being able to keep someone in stamcrit after the 4th hit.
## Why It's Good For The Game
Mostly just an experiment. I don't imagine it will shake up much about
the baton situation in its current state.
There's also no grace period after getting UP - so like you can just be
stamcritted right after anyways. Maybe there should be one? Food for
thought.
And yes of course you can just space out your hits, you're not clever
for thinking about that
## Changelog
🆑 Melbert
balance: Taking stamina damage in stamcrit has diminishing returns
associated, meaning you cannot be infinitely stamcrit.
/🆑
## About The Pull Request
- Afterattack is a very simple proc now: All it does is this, and all
it's used for is for having a convenient place to put effects an item
does after a successful attack (IE, the attack was not blocked)

- An overwhelming majority of afterattack implementations have been
moved to `interact_with_atom` or the new `ranged_interact_with_atom`
I have manually tested many of the refactored procs but there was 200+
so it's kinda hard
## Why It's Good For The Game
Afterattack is one of the worst parts of the attack chain, as it
simultaneously serves as a way of doing random interactions NOT AT ALL
related to attacks (despite the name) while ALSO serving as the defacto
way to do a ranged interaction with an item
This means careless coders (most of them) may throw stuff in afterattack
without realizing how wide reaching it is, which causes bugs. By making
two well defined, separate procs for handing adjacent vs ranged
interactions, it becomes WAY WAY WAY more easy to develop for.
If you want to do something when you click on something else and you're
adjacent, use `interact_with_atom`
If you want to do something when you click on something else and you're
not adjacent, use 'ranged_interact_with_atom`
This does result in some instances of boilerplate as shown here:

But I think it's acceptable, feel free to oppose if you don't I'm sure
we can think of another solution
~~Additionally it makes it easier to implement swing combat. That's a
bonus I guess~~
## Changelog
🆑 Melbert
refactor: Over 200 item interactions have been refactored to use a
newer, easier-to-use system. Report any oddities with using items on
other objects you may see (such as surgery, reagent containers like cups
and spray bottles, or construction devices), especially using something
at range (such as guns or chisels)
refactor: Item-On-Modsuit interactions have changed slightly. While on
combat mode, you will attempt to "use" the item on the suit instead of
inserting it into the suit's storage. This means being on combat mode
while the suit's panel is open will block you from inserting items
entirely via click (but other methods such as hotkey, clicking on the
storage boxes, and mousedrop will still work).
refactor: The detective's scanner will now be inserted into storage
items if clicked normally, and will scan the storage item if on combat
mode
/🆑
## About The Pull Request
To try and figure out the map-making process, I've made a little ruin to
add to Lavaland and hopefully pique the interest of any passing shaft
miners.

Currently, in-game it looks something like this

## Why It's Good For The Game
It's a nice bit of story for the shaft miners to come across while
blasting their way across the wasteland, with a few potential prizes
mixed with danger. At the very least, this should help increase the
variety of ruins available.
## Changelog
🆑
add: Added another ruin to Lavaland
/🆑
## About The Pull Request
There's a bug wherein you can use psychotic brawling as a pacifist if
you disarm, but rather than fix it I think leaning into it would be
really interesting. You get a big -20 mood debuff for 10 minutes, but
you can still harm people.
## About The Pull Request
Player characters afflicted with the RDS brain trauma now get the
gibbering language in addition to the ones they already know. the PR
looks like a webedit (it is) because i cannot clone repos because my
connection SUCKS but rest assured i tested it by just downloading it all
normally
## Why It's Good For The Game
someone who is insane may not always be able to articulate their ideas
in a way we might consider "language," either by accident or on purpose
just to show those stupid sheep. the greatest minds of the station need
to be able to speak to one another without persecution for their ideas
## Changelog
🆑 PowerfulAtom111
add: after a quick galactic meeting, insane people around the universe
can now speak gibbering to express their ideas free from the prying ears
of the walls
add: as an insane person, taking your meds deafens your ears to the holy
tongue all the other insane people are speaking
spellcheck: added a bit of text to the RDS quirk and the RDS medical
record text to highlight the insane's new abilities
/🆑
## About The Pull Request
Certain quirks like Signer get erased by slimeperson body splitting due
to improper usage of add_unique. This should fix that.
## Why It's Good For The Game
bugs bad
## Changelog
🆑
fix: Fixes certain quirks being erased by slimeperson cloning.
/🆑
## About The Pull Request
So this PR comes in two basic parts: the new ammo types and the minor
balance changes. I'll go over each separately.
**--- NEW AMMO TYPES ---**

-- Metallic Hydrogen Ammo: Made from Metallic Hydrogen, obviously. Has
middling damage and no dismemberment chance, but pierces through armor
and enemies like they weren't even there.
-- Zaukerite Slivers: Made from a zaukerite crystal. Does high toxic
damage, and has excellent wounding and embed chances, but lacking in
armor penetration. Also gives 1 second of blurry vision if it hits you!
-- Paper balls: Crafted from a sheet of paper. Mostly just a throwing
joke item, and 99% nonlethal like donksoft. Can be fired from a
crossbow, but also could be used if you wanted to have a snowball fight
on metastation.
-- Healium Crystal Bolts! Crafted (using menu) from the healium grenade
item. Heals 30 of brute/tox/burn, but puts who is hit by it to sleep for
three seconds, limiting its use in actual combat.
-- Supermatter Bolts: Dusts whoever you shoot it at! Absurdly
overpowered! Admin only!
-- A makeshift quiver, made from cutting a o2 tank in half, to store all
the ammo in.
**MINOR BALANCE CHANGES**
-- For some reason I thought the 357, which the traitor crossbow is a
direct competitor to, did 40 damage when making the first version of the
PR, instead of the reality of it doing 60. It's been buffed to 55
damage. (The basic engi one still does 35.)
-- I've been informed that generally, the stressed rebar crossbow isn't
ever used, as the misfire chance isnt worth the extra shot. As such, I
felt it was thematic to say that the stressing procedure involves
messing with the draw system in the fluff, and the stressed one now
takes half as long to rack.
**OTHER CRAP**
-- The rods now drop themselves if you shoot them at a wall. Hopefully.
-- Fixed the the non-bare wound chance on the traitor crossbow not being
increased from the base version.
-- Has a nice electronic discharge noise on firing.
## Why It's Good For The Game
I'm very happy with the reception of the rebar crossbow, and felt that
given it was an engi weapon at heart, giving it some engi-related
ammunition would fit it very well (and also have a good reason for
making zaukerite besides selling it.) The paper balls were more just so
the crew could able to shoot their buddies with it and not maim them.
As for the balance, I feel the tot crossbow being department restricted
is already a strong factor in it being infrequently seen, and if someone
is lucky enough to roll traitor in a job slot, it's a shame if their
job's items aren't worth it. The stressed variant is a similar case, and
I hope it's enough of a buff to encourage its use.
## Changelog
🆑 WebcomicArtist
add: Added zaukerite (high damage/embed, low AP) and metallic hydrogen
(High AP and piercing, but low embed) crossbow ammo for the rebar
crossbows
add: Added healium crystal ammo for the crossbow as well, which heals
whomever you shoot it at.
add: Added admin-only supermatter crossbow bolts that dust you, because
why the hell not.
add: Added non-harmful paper balls. Can be shot from a crossbow, or
thrown at co-workers.
add: Added a quiver made from cutting an o2 tank in half, to hold it
all.
image: added sprites for all the above.
balance: Traitor Engineer Crossbow ammo now does 55 damage instead of
45, to make it compete with revolver.
balance: Stressed Rebar Crossbow now has a shorter delay required to
rack it, but can shoot you in the face on misfire.
fix: fixed rebar crossbow shots not dropping items on hitting walls
fix: fixed traitor crossbow having worse wound chance than the base one
sound: added new crossbow firing sound effect
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
fixes the mood event not being applied, found in #83741🆑 ShizCalev
fix: The spooky element will now apply the spooked mood event when
someone is spooked.
fix: Fixed spookers getting a popup message when spooking mobs not
actively controlled by a player.
/🆑
also a minor grammar fix for the name of spooky skeletons.
## About The Pull Request
Title, warns you if you have anormal hook and gives you a heads up it
might work otherwise.
## Why It's Good For The Game
Everyone knows 'fish in chasm to get body', but not many people know
'you can ONLY use the rescue hook to get body'. This clarifies that! It
reduces misinformation and confusion.
## Changelog
🆑
qol: Adds a chat message for fishing in a chasm with a normal and rescue
hook, to clarify that only rescue hooks can drag up corpses.
/🆑
Implements some unused mood events found in #83741🆑 ShizCalev
fix: Seeing heretical stuff while having the heresy phobia will now
apply the heresy mood event.
fix: Seeing skeletons while having the skeleton phobia will now apply
the spooked (by skeletons) mood event.
/🆑