* Corgis now show their ID on examine (#73662)
## About The Pull Request
Lost feature when they were moved to basic mob
## Why It's Good For The Game
The intended feature is now back again !
## Changelog
🆑
fix: Corgis show their ID on examine.
/🆑
* Corgis now show their ID on examine
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixes Luminescence actions (#73802)
## About The Pull Request
- Add Component was supposed to use a named arg, quick fix
- While testing the fix I noticed it doesn't properly remove the
appearance when the item is lost, cuts the overlay on failures
## Why It's Good For The Game
Mothblox said this broke things (it was making a weakref of a callback
on accident)
## Changelog
🆑 Melbert
fix: Luminsecent slime actions correctly update their appearance when
integrating or ejecting slime cores
/🆑
* Fixes Luminescence actions
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes bread dog butchering producing error bread and adds some warnings to bread that shouldn't appear in-game. (#73783)
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/73765
Also adds some warnings and description to bread/breadslice so you can
more easily notice that something is wrong.
Not much to discuss i think.
## Why It's Good For The Game
You can get normal bread from butchering bread dog. And potentially less
issues with bread in future.
## Changelog
🆑
fix: fixed butchering bread dog spawning error bread.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Fixes bread dog butchering producing error bread and adds some warnings to bread that shouldn't appear in-game.
---------
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Adds logic to regal rat butchering, will now produce mouse meat. (#73715)
## About The Pull Request
Okay, I had fun with the alert system. Simply, this just adds 2 meat to
the butcher completion of regal rats. It's a pretty low amount of meat
considering that they look like this.

I chose a low number for the meat considering that players will still be
able to get a massive influx of meat from butchering the small rats.
## Why It's Good For The Game
Regal Rats are often dragged to the kitchen immediately upon being
killed, leaving confused chefs/assistants wondering why they only
received a crown upon successful butchering. Hopefully, this change will
leave people less baffled by the lack of meatiness from the huge
creatures.
## Changelog
🆑
qol: Regal Rats produce meat on butchering, reducing player confusion.
/🆑
* Adds logic to regal rat butchering, will now produce mouse meat.
---------
Co-authored-by: carshalash <carshalash@gmail.com>
* Refactor egg to chick logic into component (#73537)
Refactored how eggs growing into chicks is implemented, and
how the number of chickens and chicks are tracked. It's now possible for
admins to make anything into an egg.
- Instead of the "fertility" of an egg being whether or not it's
processing (along with the ugliness of adding a variable to a item
defined in another file), fertile eggs are now implemented via
components.
- The number of chickens in the world, and the number of chicks hatched
from egg throwing are now global variables, rather than static variables
on the class.
I've tried very hard to keep these changes completely feature freeze
compatible, any variation in the old behaviour is non-intended (at this
point).
* Refactor egg to chick logic into component
---------
Co-authored-by: Jack Edge <yellowbounder@gmail.com>
* Fixes humanoid examine easter egg's pronoun game (#73766)
Fixes#41175 - it's in the issue, I can't come up with anything funny to
put in the PR body.
## Changelog
🆑
spellcheck: fixed humanoid examine easter egg's pronoun usage
/🆑
* Fixes humanoid examine easter egg's pronoun game
---------
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Buff scythes, goats, and plantbgone vs PLANT biotypes (#72889)
This buffs scythes, goats, and plantbgone vs PLANT biotypes:
- Scythes now deal x1.5 damage to venus flytraps (3 hits to kill)
- Scythes now target the flower bud vines
- Goats now target flower bud vines and deal 15 damage to PLANT biotypes
- Goats have a eating sound whenever they bite PLANT biotypes
- Plantbgone now does 2 dmg per unit to PLANT biotypes (10 dmg per
spray)
- Plantbgone now has a 75% chance to remove weeds and deals large damage
to flower buds
- Weed control crates now come with a pair of leather gloves
- Golems are immune to thorn effects
- Any kind of thick glove material will prevent thorn effects when
attacking
- Flower buds will now take x4 damage from fire and sharp weapons
(unless they have fire trait)
- Regular scythes are now a sharp object
Also this fixes a few runtimes with spacevines and nulls. The bane
element now accepts `mob_biotypes` bitflags as an argument.
Before my changes:
- Plant-b-gone was doing 0.4 dmg per unit to PLANT biotypes (2 dmg per
spray)
- Scythes took 5 hits to kill venus flytraps
- Goats only affected podpeople
- Flower bud vines were being ignored by weed killing code
- Plantbgone only had a 50% chance to remove weeds (and this was very
inconsistent due to RNG)
- Botanical gloves and thick gloves didn't protect from thorns
- Golems were getting pierced by thorns despite having pierce immunity
- Flower buds were not taking the x4 damage like they should have been
- Regular scythes were not a sharp object, but other scythes
(chaplain's, megafauna loot) were sharp
This makes the weed killer crate more effective since people were
complaining about it being worthless vs vines and flower buds. These
changes give people more options to respond to threats vs plants.
🆑
add: Add a pair of leather gloves to weed control crate
balance: Mobs with the PLANT biotypes (venus flytraps, pod people,
killer tomatoes) are now much weaker vs scythes, goats, and plantbgone.
balance: Plantbgone is now more effective at destroying weeds.
balance: Regular scythes are now a sharp object
fix: Fixed scythes, goats, and plantbgone not affecting flower bud
vines.
fix: Thick and botanical gloves not protecting from thorns
fix: Golems not having pierce immunity from thorns
fix: Runtime where vines tried to spread into null turf
fix: Runtime where null vines that were destroyed were trying to spread
to nearby turfs
soundadd: Add eat food sound when goats eat plants
code: Improved goat targeting code
code: The bane element now accepts `mob_biotypes` bitflags as an
argument.
/🆑
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Fixes an issue with nightmare revival, Unit tests some fully heal stuff (#73612)
## About The Pull Request
- Same issue as Ethereals. Owner was `null`ed because the heart was
recreated. I opted for a more permanent solution, that being introducing
a new flag to avoid recreating organs.
- Adds some unit tests for fully heal stuff to make sure it works.
## Why It's Good For The Game
More cases of revival working as expected
## Changelog
🆑 Melbert
fix: Nightmare revival acts less funky - stops it from re-creating the
Light Eater.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Fixes an issue with nightmare revival, Unit tests some fully heal stuff
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Return to Tiny: Reworks heights to use filters, allows spacemen to have varying heights (#72344)
Re-pr of #66644 with some changes to get it working

- [x] ~~Huds get cut off~~ Resolved
- [x] ~~Very tall helmets get cut off~~ Resolved
- [x] Hair gets cut off
- [x] ~~Needs optimization before releasing to the world as a pref~~ jk
lol
Look at that fella so cute
🆑 Melbert, That REALLY Good Soda Flavor, FatFat, AndreyGusev
add: Spacemen can now have varying height. (Admin only for now)
add: Dwarfs are now slightly shorter, but look way better.
/🆑
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
* fix conflict
* clarity
* update rouny
* update screenshots
* Revert "update screenshots"
This reverts commit a5427a5238e574869fe364568b7f043bbd287c79.
* Fixes the dwarf screenshot.
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Medical/Security records now use the max/min age.
* merge conflict
* Refactors crew records (#72725)
I have attempted or otherwise started this project at least 4 times. I
am sick of it being on my calendar. The code needs it. I need it.
- This makes crew records a proper datum rather than assigning
properties record.fields.
- General, medical, and security records are merged.
- Did some slight refactoring here and there for things that looked
obvious.
- Wanted states are now defined (and you can suspect someone through
sechud)
- pAI (unrelated but annoying) had some poorly named exported types that
i made more specific
- Job icons are moved back to the JS side (I wanted to get icons for
initial rank without passing trim)
<details>
<summary>previews</summary>
Editable fields & security console

Medical records

Look and feel of the more current version

</details>
TGUI'd some of the worst UIs in the game.
Creating new records is made much simpler.
Manifest_inject is made readable.
Probably bug fixes
🆑
refactor: Crew records have been refactored.
refactor: Medical records -> TGUI
refactor: Security records -> TGUI
refactor: Warrants console -> TGUI
qol: Players are now alerted when their fines are paid off.
qol: Cleaned up sec hud examination text.
qol: Adding and deleting crimes is easier.
qol: Writing crimes in the console sets players to arrest.
qol: You can now mark someone as a suspect through sec hud.
/🆑
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* I've got something that now actually works
Just got to incorporate the records into what players can actually see.
* Turns out that client has already been transferred after all
* Adds the past records in the TGUI records (they're kinda ugly but it works, so y'know)
* Whoops
* Hate you too sometimes Prettier
* Fixes ghost roles using LITERAL records, which caused problems
* Fixes the leaks caused by ghost roles not getting their name right because of the stupid freaking special() proc
* I hate list operations man they're so stupid
* Fixes the stars on the crew manifest!
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: KathrinBailey <53862927+KathrinBailey@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Fixes the Seek your Master cult construct ability not having an icon. (#73648)
This ability had the wrong icon file used for it.
* Fixes the Seek your Master cult construct ability not having an icon.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Adds checkgrep for improper or missing atom Initialize args (`mapload`) (#72846)
## About The Pull Request
Adds a grep for atom initialize overrides which does not include mapload
Regex used
`^/(obj|mob|turf|area|atom)/.+/Initialize\((?!mapload).*\)`
Also replaced some space indentation with some tab indentation in some
other greps

## Why It's Good For The Game
See #69107, #61759, #61623
## Changelog
No player facing changes
* Missed by #8374
* Add (mapload) to a //Skyrat Edit so that it passes
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* check for client disconnect during hud updates (#73588)
## About The Pull Request
Noticed a few runtimes about trying to read a null.prefs and tracked it
down to these lines.
When you go to create a hud for a mob, you add it to the client's
screen, however adding to a client's screen is an internal byond
operation and as such will allow a client disconnection to be processed.
## Why It's Good For The Game
Client DC catching is good, and some comments stating why it's needed
* check for client disconnect during hud updates
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* Fixes some incorrect `flick_overlay_view` calls (#73618)
## About The Pull Request
This function only has two parameters, but there are a few cases which
believe it to have three or four, like `flick_overlay`.
`/atom/proc/flick_overlay_view(image_to_show, duration)`
## Changelog
🆑 Melbert
fix: Scan gates correctly flick their alarm overlays, I think they
already looked correct but now it's more correct
fix: If you are somehow a human without a species, the generic zap
animation should be more correct, even though this will probably never
ever happen
/🆑
* Fixes some incorrect `flick_overlay_view` calls
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes `TRAIT_NOBREATH` leaving Nitrous Oxide alerts (#73614)
## About The Pull Request
Missed some copypasta here.
N2O needed to be cleared when nobreath is gained.
## Changelog
🆑 Melbert
fix: Gaining nobreath in an N2O heavy environment doesn't make you
forever aware of it
/🆑
* Fixes `TRAIT_NOBREATH` leaving Nitrous Oxide alerts
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Mice retain their colors when they die. (#73508)
## About The Pull Request
When mice die the corpse they leave behind was always grey, they now
drop correctly colored corpses.
## Why It's Good For The Game
Bug fix.
## Changelog
🆑
fix: Mice will now retain their color when they die.
/🆑
* Mice retain their colors when they die.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Optimize cardboard cutouts saving 1.5s+ on init times (#73404)
New regression in init times. Closes
https://github.com/tgstation/dev-cycles-initiative/issues/32. CC @ Fikou
- Instead of creating a human and icon for *every* cardboard cutout when
initialized, only creates the one we're actually using. When you're
about to use a crayon, creates all of them.
- Instead of using getFlatIcon, uses appearances directly.
* Optimize cardboard cutouts saving 1.5s+ on init times
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes ooze mending globule not having a cooldown (#73482)
## About The Pull Request
Mending globule ability now actually has a cooldown.
## Why It's Good For The Game
Bugfix
## Changelog
🆑
fix: Fixes mending globule ability not having a cooldown
/🆑
* Fixes ooze mending globule not having a cooldown
---------
Co-authored-by: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
* Fixes throw messages to always say you threw it very hard (#73498)
## About The Pull Request
Fixes wrong check in throw messages to say "very hard throw" even if its
a weak one.
## Why It's Good For The Game
Actual correct description for throwing is good, at least thats what i
think
## Changelog
🆑
fix: fixed throwing description to always say "it was thrown very hard"
even when its not
/🆑
* Fixes throw messages to always say you threw it very hard
---------
Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
* Makes Shake() proc work (#73480)
## About The Pull Request
Fixes#72321Fixes#70388
The shake proc didn't work and hasn't for ages.
I remember it having worked at some point, but it was quite a long time
ago.
I cannot guarantee that the end result here is the same as it was, the
reason here being that I have no idea how this proc ever worked in the
first place. My limited understanding of the `animate` proc implies that
the previous implementation as written would never have acted as you
would expect it to, but clearly at some time in the past it did work. A
mystery.
As a result of the previous, possibly because the proc never _did_ work
as expected and just did something which looked vaguely correct most of
the time, both the default values and the values people were passing
into this proc were completely ridiculous.
Why would anyone ever want to pixel shift an object with a range of _15_
pixels in all directions? That's half a full tile! And why would you
want it to do this for 25 seconds?
So I also changed the values being passed in, because you really want
pretty small numbers passed into here most of the time.
Here's a video of everything that vibrates:
https://www.youtube.com/watch?v=Q0hoqmaXkKA
The exception is the v8 engine. I left this alone because it seems to
try and start shaking while in your hands, which doesn't work, and I
don't know how to fix that. This has potentially _also_ never worked.
## Why It's Good For The Game
Now you can see intended visual indicators for:
- Lobstrosities charging.
- Beepsky being EMPed.
- The Savannah Ivanov preparing to jump.
- The DNA infuser putting someone through the spin cycle.
- The mystery box admin item I had no previous idea even existed (fun
animations on this one).
- Anything else which wants to use this proc to create vibrating objects
in the future.
## Changelog
🆑
fix: Lobstrosities and Tarantulas will once more vibrate to let you know
they're about to charge at you.
fix: The Savannah Ivanov will once more vibrate to let you know it's
about to jump into the air.
fix: The DNA infuser will now vibrate to let people know that it's busy
blending someone with a dead animal.
/🆑
* Makes Shake() proc work
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Fixes a handful of zombie issues (#73489)
## About The Pull Request
- Fixes zombie suffering sudden death due to lacking a heart.
Infectious zombies don't have noblood but also don't have a heart, so
they suffered damage from it.
Resolves this by granting them `TRAIT_STABLEHEART`. I was unsure if they
should have `NOBLOOD` or not, so I err'd on the side with less
implications
Their higher-functioning counterpart has noblood, but I like seeing
zombies bleed, that's cool
- Fixes zombies not reviving due to lacking a heart
Same issue as above.
## Why It's Good For The Game
Fixes#73465Fixes#73466
## Changelog
🆑 Melbert
fix: Heartless zombies will now revive again
fix: Zombies no longer take constant ticking damage from lacking a heart
/🆑
* Fixes a handful of zombie issues
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Reworked PDA menu & NtOS themes (#73070)
## About The Pull Request
This is a port/rework of
https://github.com/yogstation13/Yogstation/pull/15735 - I changed a lot
of how it acted (some themes are locked behind maintenance apps).
The original author allowed this port to happen, and I really liked how
it looked there so I'd like to add it here.
### Applications
Removes the hardware configurator application, as all it did was show
you your space and battery now that all hardware was removed. These are
things your PC does by default, so it was just a waste of space.
Adds a Theme manager application instead, which allows you to change
your PDA's theme at will.
Adds a new Maintenance application that will give a new theme, however
it will also increase the size of the theme manager app itself as it's
bloatware.
### Menu
There's now a bar at the top of the menu showing 'special' tablet apps
which, for one reason or another, should stand out from the rest of the
apps. Currently this is PDA messenger and the Theme manager
Flashlight and Flashlight color is now only an icon, and is shown on the
same line as Updating you ID
https://cdn.discordapp.com/attachments/961874788706574386/1069621173693972551/2023-01-30_09-10-52.mov

### Themes
Adds a lot of themes to choose from, although SOME are hidden behind
Maintenance applications, which will give you a random theme. These are
bloatware however, so they come with some extra cost to the app's
required space storage.
Themes are now supported on ALL APPLICATIONS! If you have a computer
theme, you will have that theme in EVERY app you enter, rather than just
a select few.
ALSO also, emagging the tablet will automatically set & unlock the
Syndicate theme, which makes your PDA obvious but you can disguise it if
you wish through just re-painting it to something else.
https://cdn.discordapp.com/attachments/828923843829432340/1069565383155122266/2023-01-30_05-29-53.mov
### Preferences
This also adds a pref for theme, reworking the ringtone code to work
with it as well. I also removed 2 entirely unused PDA prefs just 'cause.
Screenshot not up-to-date, they now have proper names.

### Other stuff
Made defines for device_themes
Added support for special app-side checks to download files
Fixed programs downloading themselves TWICE because defines all had the
same definition
Removes the Chemistry computer disk as it was empty due to chemistry
app's removal
Removes the 'run_emag' proc, since apps can directly refer to the
computer to check for emag status instead.
Moved over and added better documentation on data computer files, and
moved the ordnance ones to the same file as the others.
## Why It's Good For The Game
It makes PDAs a lot more customizable while adding more features to
maintenance applications. I think the themes look cool and it fits with
PDAs being "personal" anyways.
I also explained most of my other arguments in the about section, such
as the hardware configuration application.
## Changelog
🆑 Chubbygummibear & JohnFulpWillard
add: A ton of new NtOS themes, which are accessible by the new Themify
application that comes with all PCs.
add: Emagging a PC now defaults it to the Syndicate option (and adds it
to go back to it if you wish)
add: There's a new maintenance app that gives you rarer themes
qol: The NtOS Main menu was moved around, added "header" applications
that are shown where the Flashlight is, such as your Theme manager and
PDA messenger.
code: Made defines for device_themes
code: Added support for special app-side checks to download files
code: Removes the 'run_emag' proc, since apps can directly refer to the
computer to check for emag status instead.
fix: Programs no longer download twice.
del: Removes the Chemistry computer disk as it was empty due to
chemistry app's removal
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Reworked PDA menu & NtOS themes
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Fixes dwarf unable to throw books (#73455)
## About The Pull Request
Fixes#73448
Dwarf gets a -1 to throw speed so any objects with a throw force of 1
would get a throw_speed of 0 therefore failing throw_at. This pr just at
a max() to the speed arg being passed
## Why It's Good For The Game
Dwarf is no longer too weak to throw books, plus knowledge is good!
## Changelog
🆑
fix: fixed weak dwarfs being too weak as to be unable to throw books
/🆑
* Fixes dwarf unable to throw books
---------
Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
* Stops AIs being disconnected from shells constantly from any form of healing (#73416)
## About The Pull Request
AIs have disconnect_shell called in their health update logic, which
makes sense but can be annoying
Let's just have it only disconnect shell if they are damaged or change
stat
## Why It's Good For The Game
Closes https://github.com/tgstation/tgstation/issues/73334
## Changelog
🆑
fix: You can no longer keep an AI trapped in their core by healing them
with a Rod of Asclepius
/🆑
* Stops AIs being disconnected from shells constantly from any form of healing
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* Fixes changing species causing you to drop held items, Fixes loss of right arm not applying typical "lost arm" effects (#73356)
## About The Pull Request
`drop_limb(special = TRUE)` will now no longer drop held items. This can
cause issues if people are misusing `special`, but if people are not
then it's fine, as it's supposed to be replaced just after.
Also cut out some copy-pasta from arm and leg `drop_limb`. Since they're
one unified type, they no longer needed to carry across both. This fixed
another bug
Also also, I was able to move the held index check out of core bodypart
code, and down to arm level. This MAY have side effects, which I'm
observing for.
## Why It's Good For The Game
Changing species let you drop no-drop items, super lame
## Changelog
🆑 Melbert
fix: Changing species no longer drops all held items
fix: Losing your right hand not un-cuffing you or dropping your gloves
/🆑
* Fixes changing species causing you to drop held items, Fixes loss of right arm not applying typical "lost arm" effects
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Underwear adjustment (#73327)
## About The Pull Request
Adds NO_UNDERWEAR to abductors, androids, and zombies.
## Why It's Good For The Game
These wacky fellows can't show off their freaky bodies while they are
wearing a tacky t-shirt.
## Changelog
🆑 itseasytosee
imagedel: Android abductors and skeletons have lost all modesty and have
stopped wearing underwear.
/🆑
* Underwear adjustment
---------
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
* Fixes Admin Make AI not working on observers (#73353)
## About The Pull Request
Using player panel `make ai` on an observer no longer fails to insert
the player into the created AI.
`ai/Initialize()` does a mind transfer, but observers don't have minds.
Fixes this by moving over any present keys if the player is mindless.
## Why It's Good For The Game
Helps in testing
## Changelog
🆑 Melbert
fix: Fixes player panel "make ai" button not fully working on observers
/🆑
* Fixes Admin Make AI not working on observers
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event (#73024)
## About The Pull Request
This PR description might be a bit rushed because I accidentally
submitted the PR and want to bang out a quick explanation of what this
is before people start asking questions.
Adds a new, rare, ghost-themed anomaly event -- The Ectoplasmic
Outburst.

This event increases in power as more ghosts orbit it, with three
important thresholds to meet.
If 10% or more of all active observers are orbiting the anomaly, an
effect will occur in the nearby area akin to the revenant's defile
spell, damaging flooring, windows, and making a mess.
If 35% or more are orbiting the anomaly, nearby objects in the effect
radius have a chance to become haunted, and will fling themselves at
anyone nearby for a bit. Spooky!
Now, at 50% or more participation, things get serious. Ghosts orbiting
the anomaly will be polled to be brought back into the world for a brief
period as a vengeful spirit, anchored to a SUPER spooky ghost portal.
The portal closes after two minutes (alternatively, smash it with a
toolbox) and deletes all of the ghosts it spawned. Vengeful spirits are
mostly just meant to smash stuff and be a nuisance while they can. It's
a wonderful opportunity to let deadchat desalinate a little.

Oh, also, the anomaly is deadchat controlled. With enough ghosts, you
could theoretically outrun anyone trying to neutralize it!
The associated reactive armor has an effect similar to the anomaly,
haunting nearby objects for a time when the wearer is struck. Not
particularly outstanding, but it can introduce an element of chaos into
a fight that your opponent might not expect.
## Why It's Good For The Game
Anomaly events are great for ghosts. Why not make one tailored just for
them!
Gives admins something to spawn when a wizard has killed half of the
crew but it's not quiiiite time for an ERT.
It's a bit of a silly event with a novelty reward, but I think it's rare
enough not to be a huge issue.
## Changelog
🆑 Rhials
add: Ectoplasmic Outburst anomaly event
add: Reactive Ectoplasm Armor
/🆑
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Starlight Polish (Space is blue!) (#72886)
<!-- 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
Adds support to underlays to realize_overlays
Ensures decals properly handle plane offsets
Fixes space lighting double applying if it's changeturf'd into. this
will be important later
Makes solar vis_contents block emissives as expected
Moves transit tube overlays to update_overlays, adds emissive blockers
to them
#### Adds render steps
An expansion on render_target based emissive blockers.
They allow us to hijack an object's appearance and draw it somewhere
else, or even modify it, THEN draw it somewhere else.
They chain quite nicely
Fixes shuttles deleting z holder objects
#### Makes space emissive, makes walls and floors block emissives
The core idea here goes like this:
We make space glow, and give its overlays some color
This way, the tile and space parallax remain fullbright, along with
anything that doesn't block emissives, but anything that does block
emissives will instead get shaded the color of starlight
This requires a bit of extra work, see later
This is done automatically with render relays, which now support
specifiying layer and color (Need to make an editor for these one of
these days)
The emissive blocking floor stuff requires making a second render plate
to prevent double scaling
Also adds some new layering defines for lighting, and ensures all turf
lights have a layer. We'll get to this soon
#### Makes things in space blue
We color them the same as starlight, by taking advantage of space being
emissive
This means that things in space that block emissive will block it
correctly and be colored blue by the light overlay, but space itself
will remain fullbright
This does require redefining what always_lit means, but nothing but
cordons use that so it's fineee
#### Makes glass above space glow, and some other stuff
Glass tiles that sit above space will now shine light with matching
color to the glasses color. This includes mat tiles.
Glass tiles (not mat because they have no alpha) also only partially
block emissives.
Adds a new proc that uses render steps to acomplish this, essentially
we're cutting out bits below X alpha and drawing what remains as an
emissive.
#### Modifies partial space showing to support glow
Essentially, alongside displaying space as an underlay, we also display
a light overlay colored like starlight.
That starlight overlay gets masked to only be visible in bits that do
not contain any alpha.
We also mask the turf lighting to not go into bits that have no alpha,
to ensure we get the effect we want.
This is done with that lighting layer thing I mentioned earlier.
#### Makes appearance realization's list output ordered
I want it output in order of overlay, sub overlay suboverlay, next
overlay
Need to use insert for that
## Why It's Good For The Game
Pretty!
Also having space be emissive is a very very good way to test for fucked
emissive blockers (If it's broken why are we even drawing the overlay)
I know for a fact mob blockers on lizards and socks are kinda yorked, I
think there's more
<details>
<summary>
Old
</summary>



</details>
<details>
<summary>
New
</summary>



</details>
## 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. -->
🆑
add: Space now makes things in it starlight faintly blue
fix: Glass floors that display space now properly let space shine
through them, rather then hiding it in the dark
add: Glass floors above space now glow faintly depending on their glass
type
/🆑
<!-- 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. -->
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* update modular
* Update _decal.dm
* Update _decal.dm
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Dominate & Lazarus Inject basic mobs. Lazarus Injected mobs don't fight each other. (#72440)
Fixes#72404
The Lazarus Injector doesn't currently work on basic mobs, but should.
Problem:
The EMPed state of the Lazarus Injector is intended to make a revived
mob hostile to everyone except you, including other mobs you have
revived wtih an EMPed Lazarus Injector.
This is trivial to achieve for Simple Mobs which essentially all share
the same AI, but I could not think of a single workable solution for
Basic Mobs which don't, or at least any which didn't come with a tedious
requirement to closely consider this niche item when programming any
additional AI.
Solution:
Change the default behaviour of the Lazarus Injector so this is not a
problem.
If all it does it make the mob loyal to you _and_ friendly to other mobs
which are loyal to you, then it's pretty easy because we can just use
the existing faction flags.
This is unambiguously a buff to using the item for nefarious purposes as
now if you revive four ice drakes and fulton them onto the station they
won't kill each other until only one is left, but is the only workable
solution I could really think of.
A lot of the very dangerous mining fauna can't be dragged so
transporting your army to the station still poses a question.
The alternate solution was just to replace the AI controller of any
emp-revived basic mob with a "zombie" AI controller, but this has the
problem that
A- It would now make things like cows and dogs into hostile creatures
when they previously weren't.
B- It loses any interesting behaviour the mob previously had and for
cases like Bileworms doesn't even make any sense (they'd try to walk and
just get stuck in place).
This ultimately leads to needing to make bespoke versions for various
mobs, which doesn't seem desirable from a maintainability standpoint.
As a side note it's still not a great idea to revive Bileworms _anyway_
as, their ability to move is tied to their ability to attack so once
they don't have a target they will just kind of sit there and if they
_do_ get a target their attempts to help you fight are difficult to
distinguish from attempts to kill you... but at least being able to
revive them makes it easier to make one sapient if you really want to
trap a player's mind inside a body which is incapable of leaving
lavaland.
Additional edit:
At Fikou's suggestion I've also added a sentience comparison proc to
`mob/living` and removed some code duplication which dealt with this
problem in the sentience/mind transfer potions, as well as added it to
the Dominate spell.
This device is meant to revive mobs and it shouldn't be required for
players to memorise an arbitrary list of which mobs it does and doesn't
work on.
Especially as the goal is eventually that all simple mobs should be
basic mobs.
This way of working is more intuitive, even if it is also stronger. I
was surprised when I used EMPed injectors and my "new minions" just
killed each other.
🆑
fix: You can now revive 'basic mobs' with a Lazarus Injector, such as
dogs, cows, axolotls, or carp.
fix: The same category of mobs can also now be effected by the Runic
Golem Dominate spell.
fix: Basic Mobs will switch target if they can no longer attack their
current target; meaning that if you become a Bileworm's friend it will
stop attacking you.
balance: Mobs injected with the Lazarus Injector while it is EMPed will
no longer attack other mobs revived by EMPed Lazarus Injectors.
/🆑
* Update code/modules/research/xenobiology/xenobiology.dm
* Update code/modules/research/xenobiology/xenobiology.dm
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Adjusts exclamation marks to forgotten 'loud' emotes. (#73326)
## About The Pull Request
A player expressed disappointment that as an artificer their yell ended
with a period and not an exclamation mark. They said it did not express
the hell of being a simple mob.
I think these are the only ones that needed to be corrected.
## Why It's Good For The Game
Exclamation marks show a heightened level of expression, heightened
expression allows for more in-depth roleplay, roleplay good.
## Changelog
🆑
spellcheck: Adjusted punctuation marks for several emotes.
/🆑
* Adjusts exclamation marks to forgotten 'loud' emotes.
---------
Co-authored-by: carshalash <carshalash@gmail.com>
Add investigate_deaths (#71112)
## About The Pull Request
Adds INVESTIGATE_DEATHS, an investigate category intended to better show
causes of death.


Also makes suicide_act take a `mob/living` as an argument instead of a
`mob`, and some minor style improvements since apparently I hate
atomicity.
## Why It's Good For The Game
Inspired by a mysterious death and dusting. More logging and leads for
admins investigating deaths.
Also fixes#59028
## Changelog
🆑 Tattle
admin: added investigate deaths to shed some more light on unusual
demises, dustings, and gibbings
/🆑
Co-authored-by: tattle <article.disaster@gmail.com>
(cherry picked from commit ad5debaaa1)
# Conflicts:
# code/datums/dna.dm
# code/game/machinery/washing_machine.dm
# code/game/objects/items/clown_items.dm
# code/game/objects/items/food/misc.dm
# code/game/objects/items/food/monkeycube.dm
# code/game/objects/items/stacks/sheets/glass.dm
# code/game/objects/items/storage/toolbox.dm
# code/game/objects/items/tools/crowbar.dm
# code/game/objects/items/tools/screwdriver.dm
# code/game/objects/items/tools/wrench.dm
# code/game/objects/items/weaponry.dm
# code/game/objects/structures/petrified_statue.dm
# code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm
# code/modules/mob/living/carbon/human/death.dm
# code/modules/mob/living/living_defense.dm
# code/modules/mob/living/simple_animal/guardian/guardian.dm
# code/modules/mob/living/simple_animal/hostile/headcrab.dm
# code/modules/paperwork/stamps.dm
# code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
# code/modules/reagents/chemistry/reagents/toxin_reagents.dm
# code/modules/shuttle/on_move.dm
# code/modules/spells/spell_types/touch/smite.dm
# code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>