* Polymorph belt blacklists several biotypes instead of allowing only organics (#78229)
## About The Pull Request
Title; this makes the belt able to morph into _more_ mobs, but _less
problematic/abusable_ mobs hopefully. It still only functions on
basic/simple_animals, however.
~~Headslugs get a `MOB_UNDEAD` bioflag to prevent morphing into them
completely. Though catching a sentient ling slug and morphing everyone
into it is funny, it's only funny the first 5 times someone does it.
(disclaimer: this is an approximation, i did not actually see a
polymorph belt in-game because i currently play miner and like 10 games
a week tops)
Arguably, this isn't ideal, but it's the closest we get unless we rename
`MOB_EPIC` or something into `MOB_SPECIAL` and let that one be the go-to
bioflag for mobs we don't want **fun** things happen to.~~
`MOB_EPIC` is now `MOB_SPECIAL`. Headslugs get that.
I think the alternative methow could use whatever the gold cores use to
determine what to spawn but that would shift the mobs available for the
belt even more and I can't be assed to figure out how _much_ of a shift
that would be. Dragons or slimes or lavaland mobs would be out, for
example. Don't really vibe with that.
Fixes headslug's description bit that discerns a sentient slug from an
AI one showing up on a dead slug. It can't move while it's dead, no
matter its mind/AI.
Also adds simple dmdoc comments to the defines to help discern a few of
them more easily. Non-quip text suggestions welcome.
## Why It's Good For The Game
- Resolves#77756
- Resolves#78227
More mobs available for the funny belt but less _fun_ mobs should allow
for more stable use of the damn thing. Arguably, some of the mobs that
have been found to be incompatible with the belt are simply lacking a
`MOB_ORGANIC` flag, some of them with no apparent reason. However,
blacklisting potentially problematic biotypes should be easier to design
the unwanted mobs around.
Also consistency, less all-ling stations, code clarity. Whatever.
## Changelog
🆑
balance: polymorph belt now blacklists mobs that are undead, humanoid,
robotic or spiritual (in nature, not religiously), as well as megafauna
balance: however, this means that it works with more mobs that it should
logically work with, like slimes/bugs/lightgeists etc
fix: fixed headslug shenanigans with the polymorph belt hopefully for
good this time
fix: fixed headslug description mentioning its movement despite the slug
being dead
/🆑
* Polymorph belt blacklists several biotypes instead of allowing only organics
---------
Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
* humpback emergency shuttle (#78021)
## About The Pull Request

adds that thing
has a medbay, brig is at the air supply controls, air supply is there to
make sure the shuttle doesnt get depressurized when people go to the
outside part to see spess
also has a bar
also forces a carp shuttle event but it should be usually the passive
carp one
## Why It's Good For The Game
it could probably bring another cool layout to the shuttle roster
## Changelog
🆑
add: humpback emergency shuttle
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@ users.noreply.github.com>
* humpback emergency shuttle
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@ users.noreply.github.com>
* Allow spawner component to be instantiated with an empty list (#78188)
## About The Pull Request
Supplementary to ffd3edc22bFixes#78172
The spawner component could be added to arbitrary items by admins but
would always throw an error because it was passed an empty list. Admins
were not capable of providing anything _other_ than an empty list to it
on init, due to limitations in our interface.
We (I but I had help) broke this in #73645 by removing the default
"spawns carp" list.
It is still silly for it to default to spawning carp, but instead it can
now be instantiated with an empty list without breaking, and an admin
can then VV it to further modify the list to what they actually want it
to do.
## Changelog
🆑
admin: Admins can add/remove the spawner component from arbitrary items
again.
/🆑
* Allow spawner component to be instantiated with an empty list
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Collected food fixes (#78190)
I went through the code and tried to find all of the remaining places we
forgot to update the arguments passed into `item/food/Initialize` after
more arguments were added to it, because there were a couple and they
caused things to stop working.
Most notably, golems were unable to eat anything because nothing would
correctly spawn "golem food".
_Additionally_ we were using a bunch of named arguments in new whenever
crafting or cooking food. This runtimed, causing the food not to init
properly.
_On top of that_ a late code review on a recent PR processed a list into
a string_assoc_list twice causing it to become null.
Finally, we were trying to check the food preferences of examining
ghosts or dogs or other non-human mobs. We shouldn't do that.
I also added a unit test for moth and golem food in the hopes that we'll
notice them breaking.
* Collected food fixes
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Canonizes Robot Yawns (#78175)
## About The Pull Request
Closes#77592
I agree that it's silly that robots shouldn't be able to yawn, but I
think that instead of removing the potential for this interaction to
occur outright (which can be done with moving around a check), it should
be embraced instead.
## Why It's Good For The Game

Robots fake-yawning to make them feel more realistic to the workers of
the station (and if they aren't station based, their once-creators
(which is fine because we removed swarmers)) and not being exempt from a
really cutesy niche interaction greatly appeals to me.
## Changelog
🆑
add: Ever see a robot yawn? Don't worry, it makes sense now.
/🆑
* Canonizes Robot Yawns
---------
Co-authored-by: san7890 <the@san7890.com>
* GAGS, recolorable and actually glowing glow shoes. (#78071)
## About The Pull Request
I've converted the gags_recolorable component into an element (it has no
var of its own) and the glow shoes icons to greyscale, added emissive
icon states for the shoes, both for its own sprite or when worn, and the
ability to recolor them with a spraycan (tbh a lot of clothing should be
recolorable with a spraycan in general but that's beyond the scope of
this PR)
Oh yeah, if you examine an item with the gags_recolorable element twice,
it now tells you can use a spraycan to recolor it.
## Why It's Good For The Game
They are called glow shoes yet don't glow, and the supposed glowing
stripes only come in a single flavor of blue. Truly the definition of
lame.
Overall, it looks as goofy as ever: I didn't put much effort into the
grayscale icons beyond the necessary:

## Changelog
🆑
image: The glow shoes from the ClothesMate now actually glow and can be
recolored, even with a spraycan.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* GAGS, recolorable and actually glowing glow shoes.
* Modular stuff
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Fixing this dead mouse related harddel (#78150)
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/78085
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23510
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23506

When the foodening added some args to the constructor of
`/obj/item/food` some instances of the constructor being passed stuff
got overlooked and were not updated.
This resulted in a mob ref potentially being passed in to
`starting_reagent_purity` in some cases, ultimately resulting in this
harddel.
@ SyncIt21 this is exactly the reason I was being so paranoid with #77946
the other day. Tracking constructor uses down can be such a pain when
they aren't prefaced with a type, and are almost guaranteed to get
overlooked during refactors if the compiler does not say anything about
it.
I hate DM.
edit: and I just tested this only to find a second bug with the ice
cream. I can confirm that it is in fact working now after fixing that
one too.
<details><summary>evil ice cream</summary>

</details>
## Why It's Good For The Game
Fixing a harddel that was causing many CI failures
## Changelog
🆑
fix: fixes creamatorium not producing any suspicious ice cream, and
fixes a dead mouse related harrdel
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Fixing this dead mouse related harddel
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Colossus' Titan's Finale ability has a 0.5 seconds delay before starting the attack (#78171)
## About The Pull Request
ided pls nerf
## Why It's Good For The Game
This motherfucker is horrid to fight with a crusher because the first
attack that he does in this action is a shotgun blast, which you just
eat with your face and die. The only reasonable way to trigger this
attack is with a ranged weapon or with a hiero's trophy, the former
being antithetical to the challenge/playstyle that is crusher mining and
the latter being wildly uncontrollable.
Half a second should be ample time to dodge out of harm's way before
server-lagging touhou begins.
## Changelog
🆑
balance: colossus' near-death attack now starts after a 0.5 seconds
delay
/🆑
* Colossus' Titan's Finale ability has a 0.5 seconds delay before starting the attack
---------
Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
* fix basic mobs ranged burst attacks (#78163)
## About The Pull Request
the burst attacks wasnt working because a cooldown in the ranged
component qwas added recently. this now moves the burst attacks option
to the component itself so even sapiant player mobs can use these burst
ranged attacks
## Why It's Good For The Game
fix basic mobs ranged burst attacks
## Changelog
🆑
fix: basic mobs can now use ranged burst attacks
/🆑
* fix basic mobs ranged burst attacks
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
* Adds special lung sprites for smoker quirk (#78119)
## About The Pull Request
What it says on the tin, adds special sprites for ethereal, plasmaman,
and regular lungs for if you use the smoker quirk.
Top is normal lungs, bottom is lungs if you use the smoker quirk

Adds some cool flavor and a visual difference between regular and smoker
lungs. Previously, smoker lungs looked identical to normal ones but had
less health and healed slower.
## Why It's Good For The Game
Details are nice, and it was weird there was no visual difference before
since realistically, smoking constantly makes your lungs very visually
different and deteriorate over time.
## Changelog
🆑
image: adds special sprites for lungs when you use the smoker quirk
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Adds special lung sprites for smoker quirk
---------
Co-authored-by: die_amond <58376695+dieamond13@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* [TEST-MERGE FIRST] Allows all limbs to be dismembered and significantly refactors wounds
* ah fuck it
* test
* edaawdawd
* Revert "edaawdawd"
This reverts commit 47be710fe61a1f4ca79212b29b3e88bf05ec9a3a.
* nothing but sheer hatred
* freaawd
* dzfxg
* Fixing some diffs here while we are at it.
* These are deprecated and should be removed
---------
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: nikothedude <simon.prouty@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* minebots basic bots (#78032)
## About The Pull Request
Transforms the minebots into basic robots. You can now command these
minebots to extract minerals for you. To activate automated mining mode,
simply instruct them with the command "mine." They will then proceed to
autonomously mine walls and gather ores. If you wish to make the bot
deposit all the collected ores, use the command "drop." Alternatively,
you can leave it in collection mode, and it will gather all the ores you
mine. Additionally, the bot now responds to several more commands; you
can instruct it to follow you, toggle its lights on or off by saying
"lights." In attack mode, it refrains from mining or collecting ores but
will engage in combat alongside you. If it detects you as deceased or
unconscious, it will alert all miners, request assistance, and relay
your coordinates via the mining communication channel. to power it on u
will need to feed it any type of ore first so it may listen to ur
commands
## Why It's Good For The Game
makes the non sapiant minebots more useful
## Changelog
🆑
refactor: the minebots have been refactored please report any bugs
add: minebots can now mine walls and collect ores automatically and they
will alert everyone if they find u dead
/🆑
* minebots basic bots
* Modular
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* `mob_transformation_simple` sends a `COMSIG_MOB_CHANGED_TYPE` signal, letting `content_barfer` mobs spit things out (#78093)
## About The Pull Request
Title; also makes bileworm devour message have a warning span.
~~it's a bit cheeky but i didn't want to add a deletion signal to the
content_barfer's signal list, and the wabbajack signal here kinda makes
sense?~~
## Why It's Good For The Game
Fixes#76791
## Changelog
🆑
fix: fixed bileworm evolution deleting anything they devoured; they will
now eject their contents upon evolution to vileworms
/🆑
* `mob_transformation_simple` sends a `COMSIG_MOB_CHANGED_TYPE` signal, letting `content_barfer` mobs spit things out
---------
Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
* Move some job related achievements into the job achievement category (#78092)
## About The Pull Request
Read title, this only affects the UI and not the database as far as I am
aware
## Why It's Good For The Game
The jobs category is painfully empty, only being home to four
achievements total. Meanwhile we have a ton of achievements inside the
miscellaneous category, a lot of which are not miscellaneous
achievements at all. Right now I just wanna focus on moving around
achievements from existing category to existing category though. This
improves achievement category spread overall by a small but necessary
amount.
## Changelog
🆑 distributivgesetz
code: Moved some job-related achievements from the misc category to the
jobs category.
/🆑
* Move some job related achievements into the job achievement category
---------
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
* Nerfs Confusion symptom for diseases (#77991)
## About The Pull Request
Removed the threshold for confusion symptom that adds illiteracy to the
disease.
Clamps confusion symptom's confusion to a maximum of 30 seconds.
Confusion as a debuff no longer guarantees random movement if you're
resting.
## Why It's Good For The Game
> Removed the threshold for confusion symptom that adds illiteracy to
the disease.
This virus makes you unable to actually treat yourself when cured, which
is frankly bonkers. Viruses are too virulent and it's rare that a doctor
actually gets to a biosuit in time to inoculate themselves, and if they
forget internals they're screwed anyways. People should be able to fix
their own got damn disease, this is asinine.
> Clamps confusion symptom's confusion to a maximum of 30 seconds.
The lack of clamping literally makes this symptom send your confusion
level to the fucking atmosphere, you can easily get upwards of 5 minutes
of confusion left because it doesn't clamp, adds 16 seconds per
activation, which is made even worse by the fact that confusion gets
stronger the more duration confusion has on you.
> Confusion as a debuff no longer guarantees random movement if you're
resting.
This remedies the last bit by not making it a literal guarantee that you
can't move in any direction after...... *3* triggers of confusion. It
should be obvious to anyone how absurd this is.
Honestly, it's plain as day that the only reason any of this ended up
like it is because of poor coding and oversights. This is just bringing
things down to their designed level.
## Changelog
🆑
del: Removed the threshold for confusion symptom that adds illiteracy to
the disease.
balance: Clamps confusion symptom's confusion to a maximum of 30
seconds.
qol: Confusion as a debuff no longer guarantees random movement if
you're resting.
/🆑
* Nerfs Confusion symptom for diseases
---------
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
* Replaces Ascended Blade Heretic stun imminuty with a stun absorption effect (it's not as cool as it sounds) (#78060)
## About The Pull Request
Instead of being completely immune to stuns after ascension, blade
heretics now have a stun absorption. This is the effect that His Grace
and the Bastard Sword use.
It functions similarly, in that it stops you from being hardstunned, but
the difference it is they are only immune to a limited amount of stuns
for a limited amount of time before it recharges.
Currently that number is 45 seconds of stuns, with a 2 minute recharge,
meaning if you take more than 45 seconds of stun effects you will stop
being immune.
Bear in mind this still provides full immunity to being stamcrit*, as
stam doesn't contribute towards "seconds stunned" number.
*Unless you used all 45 seconds of stun immunity then you will no longer
be immune until you recharge.
Also to compensate, I gave them a slightly modifier protecting against
knockdowns.
## Why It's Good For The Game
I forgot Stun Absorptions were a thing entirely when making this even
though I refactored the darn things.
Anyways, the reason why I'm doing this is that Stun Absorptions are just
a slightly more fair, less overt way of providing stun immunity, and I
think it fits the theme more.
You're supposed to be a master duelist, but being able to take on a
dozen people at once is not entirely intended (even though this is the
ascension, I know). Stun Absorptions lend better to that, since you run
out of stun juice eventually before you have to pull back.
Though ultimately this doesn't change very much, as we use very few
hardstuns now-a-days:
- A flashbang will contribute about 10 seconds of stun time
- A flash is similar to a flashbang
- Bodythrows and tackles are less than 5 seconds
- Beepsky, 10 seconds
- Stamcrit, 0 seconds, but you are still slowed by stamina damage
- A banana peel, default is roughly 6 seconds. <-- (This is why I gave
them a knockdown modifier)
However it does mean you can't really tank an AI stun turret all day.
That's Rust's thing. Go play Rust Heretic.
## Changelog
🆑 Melbert
balance: Ascended Blade Heretics no longer have blanket stun immunity,
they now have 45 seconds of stun absorption that recharges after 2
minutes - think His Grace. This doesn't affect stamcrit (still immune to
that) (assuming you haven't consumed all of your immunity charge) but
does affect hard CC such as slips, flashbangs, or beepsky.
balance: Ascended Blade Heretics now have a 0.75 modifier to incoming
knockdowns.
/🆑
* Replaces Ascended Blade Heretic stun imminuty with a stun absorption effect (it's not as cool as it sounds)
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* fix basic ranged mobs not chasing the victims (#78073)
## About The Pull Request
if the victim is outside the shooting distance the mob will go through
an endless cycle of finding the target and deleting the target instead
of chasing them
## Why It's Good For The Game
fix basic ranged mobs not chasing the targets
## Changelog
🆑
fix: basic ranged mobs will now chase victims
/🆑
* fix basic ranged mobs not chasing the victims
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
* Funny clown internals (#77963)
# About The Pull Request
This PR changes the internals that spawn inside the clown's survival box
for a new one with a rainbow sprite, higher O2 volume (same as the engi
ones) and a secondary gas on top of O2 to make things more interesting
for the clowns.
The gas options are:
BZ, which just adds hallucinations for the clown, without the brain
damage effect as it is in low percentages.
N2O will make the clown giggle and laugh, without the sleep.
Helium will give the clown a "funny voice".
These tanks are also added to the mail list of clown fans and the clown
costume crate at cargo.
And codersprites, I can polish them later if people think it is pixel
soup, I'm not happy with them that much, but making this looks good
might be above my paygrade...
<details><summary>Pics here</summary>
<p>


</p>
</details>
## Why It's Good For The Game
The main goal I have with this is to add more uses for Atmos Content to
other players in a flavorful way.
Atmos is not something the crew interacts in a positive way often and I
want to change that.
These tanks are something quite minor but flavorful IMO, also will make
people know Helium fucking exists...
The tanks *shouldn't* change much of the clown's round in a negative
way, and the default O2 internals are in every hallway's locker so even
if they don't want to deal with the hallucinations it is not a big deal
to dodge them.
## Changelog
🆑 Guillaume Prata
add: New funny internals for the clowns to spawn with. They come with O2
and a secondary gas between 3 options: BZ, Helium and N2O. Talk with a
"different tone" with Helium, giggle and laugh "uncontrollably" while
under the minor effects of N2O or have "fun" hallucinations while under
the minor effects of BZ.
balance: To not cut on how long the clown's O2 internals last due to the
mixed gases, the funny internals have 50% more gas volume, same as
engineers' internals.
/🆑
---------
Co-authored-by: CRITAWAKETS <sebastienracicot@ hotmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Funny clown internals
---------
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: CRITAWAKETS <sebastienracicot@ hotmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Renames the ex interdyne pirate shuttle (#78024)
## About The Pull Request
I saw #76676 has staled out and wasn't reopened with the required
changes, so I have done it myself, and renamed the map and the
template's suffix.
## Why It's Good For The Game
Now linux hosts can also experience being raided by angry pharmacists
from space.
## Changelog
🆑
fix: Ex-Interdyne pirates can now successfully spawn on case sensitive
host systems, such as Linux
/🆑
* Renames the ex interdyne pirate shuttle
---------
Co-authored-by: Profakos <profakos@gmail.com>
* Adds links to additional help documents on hackmd to the GAGS readme (#78027)
Just some additional links in the readme for coders and spriters, no
player facing changes. I'll update the guides themselves more as I see
what information people need or issues they have.
* Adds links to additional help documents on hackmd to the GAGS readme
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* megafauna no longer gib/dust you (#77731)
## About The Pull Request
megafauna now gut you instead of gibbing or dusting
colossus bolts still dust to prevent bodychair cheese
## Why It's Good For The Game
shaft miners are already hard to recover(or impossible in the case of
dusting), having to go through lavaland and likely near the megafauna
itself. This should still be punishing enough for losing to a megafauna
as it removes their heart, lungs and liver from their body while still
leaving it intact, just easier to recover.
## Changelog
🆑
balance: megafauna will now gut instead of dusting or gibbing
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* megafauna no longer gib/dust you
---------
Co-authored-by: 1393F <59183821+1393F@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Cursed Slot Machine Fixes (#77989)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
A lot of these were stuff I did in response to reviews but apparently
didn't test extremely thoroughly. My bad.
* The proc for checking if the machine is in use is split out into its
own thing for clarity, and for potential reuse.
* The signal is no longer fucked up so you can actually get more than
one curse out of the slot machine as intended.
* Admin heals (and admin heals only) can remove the status effect. This
is just in case someone fucks up a variable when running an event and
wants to quickly heal some people while they varedit it to actually be a
proper event.
* Some nice code stuff while I was there, we don't need to be
typecasting to human anymore so it's nice to fix that.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Fixes are good.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
fix: The Cursed Slot Machine should now actually give you more than one
pull.
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
* Cursed Slot Machine Fixes
---------
Co-authored-by: san7890 <the@san7890.com>
* Added sounds for unlocking achievements. (#77968)
## About The Pull Request
Unlocking an achievement now plays a sound. Which sound is played
depends on the associated preference of the player, found in the Sound
category of the game preferences UI.
The current options are a [glockenspiel
ping](https://freesound.org/people/FunWithSound/sounds/456965/), a
[beeps jingle](https://freesound.org/people/Eponn/sounds/619838/) and a
["tada!"
fanfare](https://freesound.org/people/plasterbrain/sounds/397355/), with
the obvious fourth option to not play a sound at all.
All sounds are from Freesound and are public domain. As such,
attributions are not required. The sounds have been also converted to
.OGG mono 44.1 Khz in accordance to the standards.
## Why It's Good For The Game
Enhancing the player feedback for unlocking an achievement with
choosable sounds.
## Changelog
🆑
sound: Unlocking an achievement now plays a sound by default. You can
change it in the Sound category of the game preferences.
/🆑
* Added sounds for unlocking achievements.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* [NO GBP]Refactors how sheets are ejected from mat container (#77945)
## About The Pull Request
As #77936 pointed out an infinite while loop occurs in the recycler.
This was caused due to my recent mat changes as follows.
When the recycler eats up an item. If it found any material inside, it
would attempt to eject any sheets formed from it over here
https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/game/machinery/recycler.dm#L199
Inside this proc i first create the sheets in `null space` why is
explained in the comment
https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/datums/components/material/material_container.dm#L599-L600
After doing logging & stuff i then would move the sheets back into its
target turf so it could get merged again
https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/datums/components/material/material_container.dm#L607-L608
Unfortunately this would trigger `COMSIG_ATOM_ENTERED` signal which the
recycler is hooked onto. The recycler would then eat the newly ejected
sheets again, which would cause more sheets to be ejected, which would
again trigger the signal `COMSIG_ATOM_ENTERED` and you have your
infinite loop.
I did this because i had no clue how to stop the stack from merging when
it got spawned and this was a poor solution, so upon examining the code
i found there is a var to specifically stops stacks from merging
https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/game/objects/items/stacks/stack.dm#L81
Yup there is specific param called `merge=TRUE` which allows you to
explicitly stop stacks from merging. I now use this var and manually
merge stacks afterwards without calling `forceMove()` so it doesn't
trigger the recycler anymore which caused the infinite loops.
## Why It's good for the game
Writing checks to see if an object came from null space is weird. It
makes the code difficult to reason with as such situations never happen.
Now it makes sense for an atom to be moved "into" null space for e.g.
when it gets deleted but for an atom to "return back from it" never
happens and you shouldn't be bothered with figuring out how that
happened.
## Changelog
🆑
refactor: sheets are merged in a better way when ejected from machines &
material related stuff
/🆑
* [NO GBP]Refactors how sheets are ejected from mat container
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Progress bars & cleaning particles will centre on the tile occupied by large icon objects (#77940)
## About The Pull Request
Do_after bars always draw based on the top-left corner of the targetted
atom, for atoms with sprites that are larger than 32x32 this gives them
a weird offset instead of being centred, which bugs me.
I have tried my best to figure out a way to reverse this which does not
interfere with atoms which use pixel_x/pixel_y to visually appear to be
on a different tile.
## Why It's Good For The Game
Before:

he hates how you missed him completely 😦
After:

now you're cleaning his feet 🙂
## Changelog
🆑
image: progress bars and cleaning particles are now centered on the tile
occupied by the target, if it is a big sprite
/🆑
* Progress bars & cleaning particles will centre on the tile occupied by large icon objects
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* fixes lavaland megafauna spawn rates (#77977)
## About The Pull Request
fixes megafauna spawn rates by making them ignore the presence of other
mobs when deciding their ability to spawn
closestgstation/tgstation#77835
## Why It's Good For The Game
megafauna jumpscare
## Changelog
🆑
fix: Ash drakes, colossi, and Bubblegum spawn on Lavaland more often; a
sharp increase from the previous bugged amount of "basically never".
/🆑
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
* fixes lavaland megafauna spawn rates
---------
Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
* Syndicate mobs no longer drop """unspent""" shells (#77971)
## About The Pull Request
Fixes: #76815
The shells the basic syndicate mobs were dropping were not actually
unspent, but they were not updating their description. They do that now.
## Why It's Good For The Game
small bugfix
## Changelog
🆑 Seven
fix: Syndicate ranged mobs (and probably other basic mobs) properly
update their shell's description to show they are spent.
/🆑
* Syndicate mobs no longer drop """unspent""" shells
---------
Co-authored-by: Lufferly <40921881+Lufferly@users.noreply.github.com>
* Fixes some heretic bugs (?) (#77611)
## About The Pull Request
Items worn on a void cloak's suit storage are no longer visible on the
stripping menu.
Heretic influences protect the turf below them from leaving scannable fingerprints.
* Fixes some heretic bugs (?)
---------
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
* The Curse Of The Slot Machine - Now Clone-less
* The copy paste really needs to be gutted to the essentials
* Update burns.dm
---------
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Makes it easier to place tiles on multi-z holes (#77935)
## About The Pull Request
Adds the "open space click handler" to tile stacks, which makes it so
you don't have to pixel hunt for a turf on the BELOW z level in order to
fix a hole.
This exists on rods and rpds since they're often used to fix holes.
But wasn't added to tiles when they were made to be able to fix holes
directly, without rods.
Additionally, closes#77540 by having the open space click handler loop
up z levels so that it works if you're clicking on items from multiple z
levels away.
## Why It's Good For The Game
The current behavior can be very frustrating to work around, and appears
to not be intended.
## Changelog
🆑
fix: Made it easier to place tiles on multi z level holes
/🆑
* Makes it easier to place tiles on multi-z holes
---------
Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>