Whatever you do, if it warrants the use of something like
`handle_atom_del`, chances are `Exited` can do it better, as most of
these cases involve movables that shouldn't be moved out of their loc
(`Destroy` forcefully moves movables to nullspace) without calling
specific procs, and for the remaining few, `handle_atom_del` doesn't
even cover the eventuality of a movable being deleted outside the source
atom, so it's quite garbage.
Beside, I feel confident in saying `handle_atom_del()` is older than the
DCS, an echo on the workarounds done at the time.
## About The Pull Request
As the title says. Adds a bunch more stat changes to various different
items and a somewhat simple way of modifying them whilst minimizing
side-effects as much as possible.
Added a new negative curse of polymorph suffix that can randomly
polymorph you once you pick up the item.
Curse of hunger items won't start on items that are not on a turf.
Curse of polymorph will only activate when equipped.
Bodyparts, two-handed melees, bags, guns and grenades, to name a few,
have a bunch of type-specific stat changes depending on their quality.
Some items won't gain fantasy suffixes during the RPG loot event, like
stacks, chairs and paper, to make gamifying the stats a bit harder.
I'm sure there'll still be other ways to game the event, but it's not
that big of a deal since these are the easiest ways to game it.
High level items also have a cool unusual effect aura
## Why It's Good For The Game
Makes the RPG item event cooler. Right now, it's a bit lame since
everything only gains force value and wound bonus on attack. This makes
the statistic increases more type-based and make it interesting to use
It's okay for some items to be powerful since this is a wizard event and
a very impactful one too. By making the curse of hunger items not spawn
on people, it'll also make it a less painful event too.
## Changelog
🆑
add: Expanded the RPG loot wizard event by giving various different
items their own statistic boost.
/🆑
---------
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
## About The Pull Request
Further continous organizing and cleaning the Icons folder. There are
still some minior nitpicks left to do, but I reached my daily sanity
expenses limit again, and the faster these get in the less issues for
both me and others later. Also cleans some mess I caused by my blindness
last PR.
## Why It's Good For The Game
Saner spriters = better sprites
## About The Pull Request

Seeing this pattern repeated over various sections of code was starting
to piss me off
## Why It's Good For The Game
Lessens chance to cause errors with mind traits, ensures consistent
behavior, makes it easier to change how mind traits work if necessary.
## Changelog
hopefully not player facing
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
I was reading over components and saw one called jousting, I vividly
remember it being mentioned every so often but I've never seen it
in-game. Turns out the SINGLE case for it is when you are using a spear
on a borg. The code itself was also very over the place, making it a
little confusing to figure out what it did.
I tried cleaning the file up as much as I could, and since I wanted to
see this in-game more often, I made some player-facing changes too:
- You can now joust from any vehicle, not just borgs (Secway, ATV,
scooter, Charger holoparasite)
- Added jousting to the broom, pitchfork, captain's sabre, and energy
sword while active (ONLY esword, NOT desword).
- Added examine text to indicate this feature exists.
Extra notes:
Esword gains half the damage increase and half the knockdown chance than
other ways of jousting
Broom only gets 25% damage increase from jousting, since the broom is
already pretty strong I thought it would be better off as something used
mostly to knockdown.
Spears have to travel a longer distance than other weapons to get their
jousting benefits (since it's supposed to be a ghetto weapon)
Jousting now takes the minimum distance needed into account when
handling knockdown chance & damage dealt, so travelling 5 tiles will no
longer be 100% chance of knockdown if you need a minimum distance of 3
tiles to joust (it will instead be 40%, since you've only traveled 2
tiles in 'jousting' mode).
## Why It's Good For The Game
This is an underused component and I thought it would bring some pretty
cool interactions, especially for Holoparasite & Janitors, as a new way
to use vehicles to your advantage when it's otherwise seen as just a
slowdown.
## Changelog
🆑
balance: Jousting now works on anything you're buckled to, not just
Cyborgs.
balance: Brooms, Pitchforks, the Captain's Sabre, and Energy swords can
now be used for jousting.
balance: Spears need to travel a longer distance to joust now.
balance: Jousting's knockdown and damage now only gets stronger after
you've traveled the minimum tiles needed to joust.
/🆑
## About The Pull Request
Adds a user check to a line and makes it early return now.
## Why It's Good For The Game
Thrown items don't always have a mob throwing them.
## Changelog
🆑
fix: Fixed snatcherprods potentially giving held objects a one-way
ticket to nullspace if thrown at someone by something that's not a mob.
/🆑
## About The Pull Request
Updates a few Null Rod sprites, and few non null rod sprites, including
the Supermatter sword.

## Why It's Good For The Game
Old sprites give me a headache, so does doing inhands, which I will get
around to, but at least the icon sprites look better.
## Changelog
🆑
image: Updated several Null Rod Graphics. Also updated: the supermatter
sword.
/🆑
## About The Pull Request
Removes some boilerplate from transforming component, uses traits in a
similar way to the two-handed component
Also fixes#74955 (If it's still broken?)
## Why It's Good For The Game
Makes it a bit cleaner to work with. Cause I wanna do something with
this in the future maybe.
## Changelog
🆑 Melbert
fix: Fixed e-cutlasses and bananium swords having invisible inhands
code: Removed boilerplate from transforming component
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Assistants get a new liver trait, maintenance metabolism. This trait
only lets them process maintenance drugs, grey bull, and pump-up for 20%
more time and gives them a probably-positive 2 minute moodlet when
ingesting these.
The officer's sabre has gained a small amount of bloodthrist for
assistants!
Fixed liver masters being unable to inspect the liver of scientists.
## Why It's Good For The Game
> Assistants get a new liver trait, maintenance metabolism. This trait
only lets them process maintenance drugs, grey bull, and pump-up for 20%
more time and gives them a probably-positive 2 minute moodlet when
ingesting these.
This trait is pretty much entirely here for the actual
liver-identification of assistants the sabre uses, though I didn't want
to just add an empty trait so I gave it the above effects as pretty damn
harmless effects. I'm sure the maints will dislike even this so I'm open
to anything.
> The officer's sabre has gained a small amount of bloodthirst for
assistants! Or at least their livers.
I find the concept of the sabre having a bane against assistants
amusing, and it wouldn't hurt to give them something that may help
against tiders. As a smidgen of fairness, the detection is tied to the
liver - if they want to take less damage they can have it replaced,
though the captain can also help with that by disemboweling organs. The
liver being used for something that isn't reagents processing might be a
bit controversial, but like I said, I'd rather have that than have it
permanently, intrinsically tied to a job.
> Fixed liver masters being unable to inspect the liver of scientists.
Ballmer metabolism quacks like a duck, traits like a duck, and thus
should be able to be duck inspected by the duck master, since there is
no practical difference between it and other 'official' metabolisms.
## Changelog
🆑
add: Assistants get a new liver trait, maintenance metabolism. This
trait only lets them process maintenance drugs, grey bull, and pump-up
for 20% more time and gives them a probably-positive 2 minute moodlet
when ingesting these.
add: The officer's sabre has gained a small amount of bloodthrist for
assistants!
fix: Fixed liver masters being unable to inspect the liver of
scientists.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Signals were initially only usable with component listeners, which while
no longer the case has lead to outdated documentation, names, and a
similar location in code.
This pr pulls the two apart. Partially because mso thinks we should, but
also because they really aren't directly linked anymore, and having them
in this midstate just confuses people.
[Renames comp_lookup to listen_lookup, since that's what it
does](102b79694f)
[Moves signal procs over to their own
file](33d07d01fd)
[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](335ea4ad08)
[Does something similar to the attackby comsigs (PARENT ->
ATOM)](210e57051d)
[And finally passes over the examine
signals](65917658fb)
## Why It's Good For The Game
Code makes more sense, things are better teased apart, s just good imo
## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
## About The Pull Request
See the title. Doing so by adding a new arg for damage type to
`check_shields()` and `hit_reaction()`. The other way would had involved
a couple istype checks for item or projectile damage type, but this is a
longer term solution and can tackle more than just that.
## Why It's Good For The Game
Fixes#74876.
## Changelog
🆑
fix: Stops shields getting broken by pillows and disablers.
/🆑
## About The Pull Request
Abductors can now use any baton instead of just their special baton.
## Why It's Good For The Game
Abductors are a bit fucked if they lose their baton and are unable to
buy one from their shop. Sure they can just use flashes or maint-fu but
those methods are hard and or unreliable. (if they manage to lose their
baton, they probably aren't that robust anyways). This PR gives more
leeway if you fuck up as an abductor.
## Changelog
🆑
balance: The mothership which abductors came from has worked very hard
to train their field agents how to use batons from their specimen's
habitat
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Now whenever an attack is blocked, the sound will play and deflection
with the item now plays sound too:
https://github.com/tgstation/tgstation/assets/42353186/1a0cc5b7-f2af-4d72-88d7-57cc11f5baa3
The parry.ogg was updated to a better-sounding one
https://github.com/tgstation/tgstation/assets/42353186/5ffc53d8-0b3c-4e6b-9256-b7b9735918bc
Every item now has a "block_sound" that can be set, it determines what
sound is played when you block an attack with it.
Cult items no longer have their own way of fuckery to play parry sounds,
now they use this system as well.
Now shield bash sound is 80% smaller after cutting out all of its noise
and silence.
## Why It's Good For The Game
Adds feedback on whether the attack was blocked or not, signalling both
to the attacker and defender that it didn't go through even if the
animation played, which is a great QoL. Same with the deflection sound
(although deflection is still pretty visible, the sound would not hurt)
New sounds add more flavour to the weapons, especially the energy sword,
giving it even more badassery.
Cutting down the noise from the shield bash sound has made it better to
listen and saved some kilobytes of information. And making every item
use the universal system for blocking sounds, removing cultist items'
own code for playing parrying sounds.
## Changelog
🆑 DrDiasyl aka DrTuxedo#0931
qol: Now blocking an attack will play a sound and display a spark
effect, giving back feedback
sound: parry.ogg was updated to a better-sounding version
sound: shieldbash.ogg no longer has noise and unnecessary silence
sound: New block_shield.ogg and block_blade.ogg for shields and energy
swords
code: Cultists items no longer have their own code for playing parrying
sounds
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
## About The Pull Request
HackMD: https://hackmd.io/RE9uRwSYSjCch17-OQ4pjQ?view
Feedback link: https://tgstation13.org/phpBB/viewtopic.php?f=10&t=33972
Adds a Coroner job to the game, they work in the Medical department and
have their office in the Morgue.
I was inspired to make this after I had played my first round on
Paradise and messed around in there. The analyzer is copied from there
(https://github.com/ParadiseSS13/Paradise/pull/20957), and their
jumpsuit is also mostly stolen from it (i just copied the color scheme
onto our own suits).
Coroners can perform autopsies on people to see their stats, like this

They have access to Medbay, and on lowpop will get Pharmacy (to make
their own formaldehyde). They also have their own Secure Morgue access
for their office (doubles as a surgery room because they are edgelords
or whatever) and the secure morgue trays.
Secure Morgue trays spawn with their beepers off and is only accessible
by them, the CMO, and HoS. It's used to morgue Antagonists. Security's
own morgue trays have been removed.
The job in action
https://cdn.discordapp.com/attachments/950489581151735849/1102297675669442570/2023-04-30_14-16-06.mp4
### Surgery changes
Autopsies are a Surgery, and I tried to intertwine this with the
Dissection surgery.
Dissections and Autopsies both require the Autopsy scanner to perform
them, however you can only perform one on any given body. Dissections
are for experiments, Autopsies is for the paper of information.
Dissected bodies now also give a ~20% surgery speed boost, this was
added at the request of Fikou as a way to encourage Doctors to let the
Coroner do their job before reviving a body.
I also remember the Medical skill, which allowed Doctors to do surgery
faster on people, and I hope that this can do something like that
WITHOUT adding the potential for exploiting, which led to the skill's
downfall.
### Morgue Improvements
Morgue trays are no longer named with pens, they instead will steal the
name of the last bodybag to be put in them.
Morgue trays are also removed from Brig Medical areas and Robotics, now
they have to bring their corpses to the Morgue where the Coroner can
keep track and ensure records are properly updated.
### Sprite credits
I can't fit it all in the Changelog, so this is who made what
McRamon
- Autopsy scanner
Tattax
- Table clock sprites and in-hands
CoiledLamb
- Coroner jumpsuits & labcoats (inhand, on sprite, and their respective
alternatives)
- Coroner gloves
- CoronerDrobe (the vending machine)
## Why It's Good For The Game
This is mostly explained in the hackmd, but the goal of this is:
1. Increase the use of the Medical Records console.
2. Add a new and interesting way for Detectives to uncover mysteries.
3. Add a more RP-flavored role in Medical that still has mechanics tied
behind it.
## Changelog
🆑 JohnFulpWillard, sprites by McRamon, tattax, and Lamb
add: The Coroner, a new Medical role revolving around dead corpses and
autopsies.
add: The Coroner's Autopsy Scanner, used for discovering the cause for
someone's death, listing their wounds, the causes of them, their
reagents, and diseases (including stealth ones!)
qol: Morgue Trays are now named after the bodybags inside of them.
balance: The morgue now has 'Secure' morgue trays which by default don't
beep.
balance: Security Medical area and Robotics no longer have their own
morgue trays.
balance: Dissected bodies now have faster surgery speed. Autopsies also
count as dissections, however they're mutually exclusive.
/🆑
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
basically ex_act's implementation on basic mobs would call parent and
then react to it's value, this is presumably to do the first check about
space vine mutations and whatever. the problem is that the `/mob/living`
implementation would itself also call parent, and that would always
return null because `/atom/proc/ex_act` doesn't have a set return value.
So, this simply would _always_ early return, with ex_act presumably
*never* working on basic mobs for at least four months now.
I decided to then change up the return values for pretty much all
implementations of `ex_act()` since there was no rhyme or reason to
returning null/FALSE/TRUE, and documenting why it's like that.
Just to make sure I wasn't breaking anything doing this (at least on
base implementations), I wrote a unit test for all of the three major
physical types in game (objs, mobs, turfs) because i am a paranoid
fuckar. we should be good to go now though.
## Why It's Good For The Game
i noticed this because placing c4's on sargeant araneus wouldn't
actually damage it whatsoever. now it actually does the stated 30
damage, but araneus has like 250 health so it doesn't actually matter in
the long run. whatever at least it does the damn 30 now.
also adds a unit test for this specific case as well as a range of other
cases to ensure this stuff doesn't silently break in this way anymore
Ladies, Gentlemen, Gamers. You're probably wondering why I've called you
all here (through the automatic reviewer request system). So, mineral
balance! Mineral balance is less a balance and more of a nervous white
dude juggling spinning plates on a high-wire on his first day. The fact
it hasn't failed after going on this long is a miracle in and of itself.
This PR does not change mineral balance. What this does is moves over
every individual cost, both in crafting recipes attached to an object
over to a define based system. We have 3 defines:
`sheet_material_amount=2000` . Stock standard mineral sheet. This being
our central mineral unit, this is used for all costs 2000+.
`half_sheet_material_amount=1000` . Same as above, but using iron rods
as our inbetween for costs of 1000-1999.
`small_material_amount=100` . This hits 1-999. This covers... a
startlingly large amount of the codebase. It's feast or famine out here
in terms of mineral costs as a result, items are either sheets upon
sheets, or some fraction of small mats.
Shout out to riot darts for being the worst material cost in the game. I
will not elaborate.
Regardless, this has no functional change, but it sets the groundwork
for making future changes to material costs much, MUCH easier, and moves
over to a single, standardized set of units to help enforce coding
standards on new items, and will bring up lots of uncomfortable balance
questions down the line.
For now though, this serves as some rough boundaries on how items costs
are related, and will make adjusting these values easier going forward.
Except for foam darts.
I did round up foam darts.
Adjusting mineral balance on the macro scale will be as simple as
changing the aforementioned mineral defines, where the alternative is a
rats nest of magic number defines. ~~No seriously, 11.25 iron for a foam
dart are you kidding me what is the POINT WHY NOT JUST MAKE IT 11~~
Items individual numbers have not been adjusted yet, but we can
standardize how the conversation can be held and actually GET SOMEWHERE
on material balance as opposed to throwing our hands up or ignoring it
for another 10 years.
## About The Pull Request
Title.
Also, to make bodypart code slightly nicer, I retooled some variables to
be part of a new bitfield called bodypart_flags.
## Why It's Good For The Game
We've been trying to move away from the species datum for limb stuff
precisely because of funny shenanigans like this, no?
## Changelog
🆑
refactor: Implanted foreign limbs will no longer be wiped by species
change.
/🆑
This tracks the seconds per tick of a subsystem, however note that it is
not completely accurate, as subsystems can be delayed, however it's
useful to have this number as a multiplier or ratio, so that if in
future someone changes the subsystem wait time code correctly adjusts
how fast it applies effects
regexes used
git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i
's/DT_PROB/SPT_PROB/g'
git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i
's/delta_time/seconds_per_tick/g'
## About The Pull Request
title. mostly relevant for downstreams. still kinda funny to think about
## Why It's Good For The Game
no man should be banished to the stutter dimension for 40 more seconds
after being batonged. also i feel like this is more of a tweak if
anything but i don't see a tweak option so balance it is?
## Changelog
🆑
fix: The contractor baton now only gives you up to 40 seconds of
stuttering, instead of making you stutter for 40 seconds more after
every hit.
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
Basically, calls force say on humans that get electrocuted.
This also applies to baton hits, although they use a probability check.
## Why It's Good For The Game
I just think force_say() is a funny and underutilized feature of tgui
say.
## Changelog
🆑
add: Being electrocuted will most of the time make you blurt out
whatever you were typing. This includes batons. Be careful.
/🆑
## About The Pull Request
This sprite file had been a dumping ground for miscellaneous sprites for
the past decade. It's bloated and full of random kinds of icons and even
has a few unused ones. It's time to reorganize them into their own
separate dmi's based on theme.
## Why It's Good For The Game
Better organization and easier access when looking for stuff.
## Changelog
🆑
imageadd: Split all icons in weapons_and_items.dmi to their own
categories
imagedel: Removed some unused icons
/🆑
## About The Pull Request
De-ICs the bluespace tag, instead presenting the same information in an
OOC format.

This does not alter the actual information shown (besides a slight
change to wording for the armor-piercing/block values, though the
thresholds are the same).
P.S. I don't know if this is tagged correctly- it doesn't seem to neatly
fit any category. (When are we getting the Tweak tag back?)
## Why It's Good For The Game
The bluespace tag has sorta been an oddity since it was introduced.
While the rationale behind its addition was sound- we want players to
have information without code-diving, but not necessarily anything too
concrete- the actual stuff surrounding that information has always felt
off. Why exactly are we finding items that have lain undisturbed on
lavaland for centuries that have a bluespace tag? What magical source of
information are they drawing from? Basically, in its attempt to make OOC
information IC-relevant, it creates more plot holes than it solves, and
ultimately it does so to no real benefit. Hence, I feel it's best that
we just stop trying to present this in an IC format.
## Changelog
🆑
qol: Bluespace tags are gone. The information contained within is still
available in the same way, just in a more out-of-character format.
/🆑
## About The Pull Request
Refactors regenerate organs to be slightly more intelligent in handling
organ changes and replacements.
Noteably:
- We don't remove organs that were modified by the owner; such as
changing out your heart for a cybernetic
- We early break out of the for loop if they aren't supposed to have an
organ there and remove it
- We check for the organ already being correct, and just healing it and
continuing if it is
Also changes the names of some of the organ helpers into snake_case
### Mapping March
Ckey to receive rewards: N/A
## Why It's Good For The Game
## Changelog
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
Adds the Snatcherprod, the telecrystal version of the teleprod. It
yoinks an item out of the victim's hand, and puts it into yours. Or on
the ground, if your hands are full.
You make it like you would a teleprod, but using a telecrystal instead.
## Why It's Good For The Game
It was a funny joke I observed. Also I'm deeply sleep deprived and so my
better judgement eludes me during these capricious moments.
## Changelog
🆑
add: Adds the Snatcherprod. Like a teleprod, but it steals stuff from
peoples hands instead. Made using a telecrystal, rather than a bluespace
crystal.
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Internal_organs now also contains external organs, so the naming was
incorrect
Requested by @tralezab in #72734
Also removed some now incorrect 'as anythings' that assumed everything
in the internal_organs list was an internal_organ (which is a lie since
I put extorgans in there which means runtimes and unintentionakl
behaviour
🆑
fix: fixes deadly harvesting just taking harmless extorgans
code: renames internal_organs to organs now that it can also contain
external_organs
/🆑
## About The Pull Request
The original issue caused by #70037
Esword issue caused by #73716
Originally the transforming component did not override the inhand icon
state of the the item on its own (instead putting the onus on the item
itself if they wanted unique behavior). It was changed to always update
inhand icon state, most of which don't have one
I don't really like this fix, it should be explicit "I want inhand to
change" and not default, but this will work for now
Also the PR that fixed the Jaws issue didn't actually set the var they
created
Fixes#73805Fixes#73711 (Actually)
## Why It's Good For The Game
Invisible sword bad
## Changelog
🆑 Melbert
fix: Fixed a eswords, some tools, and some other misc. items from being
invisible while extended / active
fix: Teleshields and other misc items not extending in hand when active
fix: Switchblades click on extend again
fix: Pendrivers click on extend
/🆑
## About The Pull Request
This prevents stunbatons being turned on to full stun mode if the
station is not in a red alert emergency.
## Why It's Good For The Game
The decision to limit the use of stunbatons in TGStation to red alert
emergencies is due to the general degradation of the melee combat design
space in the game. The stunbaton's ability to stun and knock down
opponents with ease has made it the go-to weapon for many players,
leading to a lack of diversity in melee combat strategies.
This over-reliance on stunbatons has made other melee weapons, such as
knives or clubs, obsolete in many situations. This not only limits
player choice but also reduces the overall challenge and fun of melee
combat in the game.
By restricting the use of stunbatons to red alert emergencies, players
are encouraged to explore other melee weapons and develop new
strategies, making the game more engaging and challenging. It also
ensures that the use of stunbatons is reserved for critical situations,
making combat encounters more meaningful and immersive.
## Changelog
🆑 oranges
add: Stunbatons now require a red alert to activate stun mode
/🆑
## About The Pull Request
The click cooldown after attacking with a weapon can now be controlled
with a var. A var can also be set for secondary attack cooldown, if
unset it is the same as the weapon's normal attack speed.
The two weapons who already had hardcoded mechanics to achieve this
effect (see: The Stinger, Hyper Frequency Blade) have been converted to
this system.
## Why It's Good For The Game
Future varying of weapon qualities and admin shenanigans.
## Changelog
🆑
code: Greater support for variability in weapon attack speed
admin: Admins are now able to grief you by hitting you with a toolbox 10
times in one second.
/🆑
## About The Pull Request
most energy sword-like weapons have had their demolition_mod increased
to 1.5x (from 1x). energy scalpels did not receive this buff, as they're
easily crew-accessible and I don't want to deal with a balance flamewar.
this affects damage vs. robots, objects, structures, etc.
the melee part of the mecha damage unit test now accounts for
demolition_mod.
## Why It's Good For The Game

## Changelog
🆑 ATHATH
balance: Most energy sword-like weapons have had their demolition_mod
increased to 1.5x (from 1x). This affects damage vs. robots, objects,
structures, etc. Energy scalpels did not receive this buff.
/🆑
## About The Pull Request
I forgot in https://github.com/tgstation/tgstation/pull/68418 to make it
also work against security batons, this PR fixes that. Security batons
now will not knockdown you if you have baton resistance trait.
## Why It's Good For The Game
Baton resistance is useless against security batons because knockdown,
even if it is short is still a guaranteed disarm, that can leave you
without your cool nukie desword and make you die.
## Changelog
🆑
fix: Fixes security stunbatons knockdowning you even if you have baton
resistance trait
/🆑
Necessary for #72292 to work effectively, and probably not very useful
out of that context. Split out of its own PR because this is long and
boring.
I want to make sure that we're catching actual mistakes there, and not
just experiencing side effects of how shitty the attack chain is.
## About The Pull Request
closes#72348
Title
## Why It's Good For The Game
My bad
## Changelog
Heres the script I used this time if you want to
```cs
var baseDir = Environment.CurrentDirectory;
var allFiles = Directory.EnumerateFiles($@"{baseDir}\code", "*.dm", SearchOption.AllDirectories).ToList();
var known = new Dictionary<string, List<KeyValuePair<string, int>>>();
foreach (var file in allFiles)
{
var fileLines = File.ReadAllLines(file);
for (var i = 0; i < fileLines.Length; i++)
{
var line = fileLines[i];
if (line.StartsWith("/datum/armor/"))
{
var armorName = line.Replace("/datum/armor/", "").Trim();
if (!known.ContainsKey(armorName))
known[armorName] = new List<KeyValuePair<string, int>>();
var knownList = known[armorName];
knownList.Add(new KeyValuePair<string, int>(file, i));
}
}
}
Console.WriteLine($"There are {known.Sum(d => d.Value.Count)} duplicate armor datums.");
var duplicates = new Dictionary<string, List<int>>();
foreach (var (_, entries) in known)
{
var actuals = entries.Skip(1).ToList();
foreach (var actual in actuals)
{
if (!duplicates.ContainsKey(actual.Key))
duplicates[actual.Key] = new List<int>();
duplicates[actual.Key].Add(actual.Value);
}
}
Console.WriteLine($"There are {duplicates.Count} files to update.");
foreach (var (file, idxes) in duplicates)
{
var fileContents = File.ReadAllLines(file).ToList();
foreach (var idx in idxes.OrderByDescending(i => i))
{
string line;
do
{
line = fileContents[idx];
fileContents.RemoveAt(idx);
}
while (!String.IsNullOrWhiteSpace(line));
}
File.WriteAllLines(file, fileContents);
}
```
## About The Pull Request
Updated crafting menu, adding a lot of new functions and recipes that
were not in the crafting menu before.
<img alt="cult"
src="https://user-images.githubusercontent.com/3625094/206009533-aec3a1dd-cbe5-45eb-8515-1b75fabb65c5.PNG">
<img alt="nH77dLyyGx"
src="https://user-images.githubusercontent.com/3625094/206009786-b6706f70-0599-40bf-b051-8f499de43abd.png">

https://user-images.githubusercontent.com/3625094/206009841-738e4a03-0660-45b7-8d83-15eeb6501967.mp4
## Why It's Good For The Game
It is easier to use, and it has a lot of recipes that were spread
throughout the game, some of which weren't even on the wiki.
Crafting and cooking now count about 1200 recipes in total, including
conditionally available ones.
## Changelog
🆑
qol: Rewrote the crafting/cooking menu UI
qol: Split crafting and cooking menus in two different menus
qol: Crafting is no longer blocking the entire UI, only the "Make"
buttons are disabled
qol: Added stack crafting recipes to the crafting menu
qol: Added cooking recipes that were absent in the crafting menu before
(tool recipes, machine recipes, reactions)
qol: Added option to search recipes by title
qol: Added option to filter recipes by required materials/ingredients
qol: Added food types to the cooking menu, highlighting diet of your
species (liked, disliked foods)
qol: Added total nutrition value of the result to the cooking menu
qol: Added option to filter cooking recipes by the food type of the
resulting food
qol: Added "Can make" category that lists all currently craftable
recipes throughout all categories
refactor: changed categories and reshuffled some items in them
code: Reagents now have default container to get an icon from the
reagent datum
code: Objects now have `desc_controls` var for OOC information about
mouse controls that are visible on examine, but not in the description
fix: Fixed alignment on many food icons
fix: Fixed missing icon for beef stroganoff
/🆑
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
## About The Pull Request
This changes stamina damage from a damage that affects limbs (like brute
and burn) to a damage that affects the body at whole (such as tox or
oxy)
Stamina being run like brute or burn is rooted all the way back to when
it was halloss, and used exclusively for holodeck items and
hallucinations.
Most coders probably didn't even know that stamina worked like this, and
most implimentatiosn of stmaina mechanics use a generic "adjust stamina"
or a "apply_damage(type = stamina zone - body_zone_chest)" to avoid the
issues that come when stamina is evenly distributed among limbs (and
some limbs only count as a fraction to stamina damage total)
The only thing that is truly lost here, is disabling limbs (arms and
legs) with stamina damage, by aiming specifically at them with disablers
(batons always apply their stamina damage to the chest, no matter where
they hit) our through smashing limbs on tables.
The idea of making an opponent drop a weapon out of pain is fun, but
stamina doesn't support it, or make sense in context.
A depth filled limb-based pain system that has interactions with
painkillers and replaces damage based move slowdown would be fun, and
maybe something that could be implemented in the future.
## Why It's Good For The Game
The biggest draw here, is that it will make stamina easier to maintain
## Changelog
🆑 itseasytosee
code: Stamina no longer affects individual limbs.
/🆑
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
No one thought of this during the PR, so what's up
Abductors have chunky fingers for some reason, further proving that
species is a bad idea and the only playable mob should be pun pun.
Adds a 'chunky finger usable' var to let Abductor batons allow people
with chunky fingers to use it.
Makes the code compatible with 515.1594+
Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword
And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.
@tgstation/commit-access Since the .proc/stuff is pretty big change.
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Add pillows you can hit someone you hate with it until they collaspe from exhaustion. The pillow can be made with cloth
* Adds a Pillow juggernaut suit, this suit allows you to automatically hit people with a pillow when you bump into them. It can be made from pillows and duct tape via the crafting menu
* Adds a bumpattack component, this can be added to any item and allows the user to auto attack on bump with a target, used for the juggernaut suit.
* Adds a Pillow hat an alternative to the paperbag hat, also made from duct tape and pillow. Very fashionable!
add: Clown/mime pillows
* The beds in dorm now come properly equipped with a pillow
fix: Fixed a bunch of missing inhand icons.
fix: Fixed cables in electrical toolboxes not randomizing their colors.
fix: Fixed the wrong colored icon showing when trying to make cable cuffs out of cables.
fix: The collectable SWAT helmet is now using the proper icon again!
refactor: Pipecleaners and power cables now share a unified color system, so they're once again available in ALL the same colors.
imageadd: Updated the screwdriver belt overlay to represent the newer sprite.
imageadd: Added a bunch of new inhand icons. Special thanks to Twaticus for doing the helmets! <3
fix: Wirecutters now have an icon when inside a belt again!
admin: Added a new omnitool subtype that allows you to spawn all items in a typepath!
fix: Explorer gaskmasks now properly reflect their adjusted state when held.
fix: Fixed balaclavas having the wrong icon when pulled up.
fix: Fixed the base energy sword (admin spawn only) being invisible.
fix: The rainbow energy sword is now a little bit more rainbowy!
fix: Fixed an tk exploit with orange handcuffed shoes.
fix: The traitor outfit in the select equipment panel is now actually functional!
About The Pull Request
Shadowpeople
brain now holds their healing properties.
while possible to extract the brain and put them in another species, the burn-in-light downside really makes it a lot more worth it to just stay a shadowperson and enjoy their other benefits than to swap.
Now use burning eyes from nightmares instead of an unsprited nightvision granting eyeball.
surgery.dmi split up
surgery_ui.dmi holds zone selection ui things for research
surgery_tools.dmi holds surgical tools
/organs folder holds organs.dmi, and species specific organ files for flies and shadowpeople
flies don't put in their random organs because of dmi memes, all their UNIQUE organs will be in the .dmi
Why It's Good For The Game
moving behavior onto the organ moves us closer to species as a blueprint, not species as something that magically grants immutable bonuses.
surgery.dmi is poorly described, holds many different things, and conflicts often because of it.
Changelog
cl
add: Shadowpeople now heal from their brains! Their brain-tumor-thingy!
code: split up surgery.dmi
/cl
Moves singulo and supermatter dmis into obj/engine, renamed from obj/tesla_engine
Moves Halloween, Christmas, and misc holiday items to obj/holiday
Moves lollipops to obj/food
Moves crates, closets, and storage to obj/storage
Moves assemblies to obj/assemblies
Renames decals.dmi to signs.dmi ...because they're signs and not decals
Moves statues, cutouts, instruments, art supplies, and crayons to obj/art
Moves balloons, plushes, toys, cards, dice, the hourglass, and TCG to obj/toys
Moves guns, swords, shields to obj/weapons