Streamlines Life() a little (#96215)

## About The Pull Request

Main changes

- `handle_mutations` is gone, DNA Injectors are now managed via a status
effect
- `handle_diseases` is gone, disease stages are just handled via life
signal
- `handle_bodyparts` is gone, it was unused and in the future any
implementations should use a life signal
- `spec_life` is gone, the main content of it is now in `human/Life`,
most children implementations now use life signal, zombie tongues now
handle zombie groans
- Life signal was split in two (pre and active)

Other changes

- DNA injector code was cleaned up considerably
- HARS now alerts admins when you inject someone else with it like
Monkey
- `COPY_DNA_SE` is no longer mistakenly unused (meaning stuff like
transformation sting no longer copies "active mutations")

## Why It's Good For The Game

Across the course of a full round we spend the same amount of time doing
literally nothing in life as we spend on handling human breathing.

Now in the context of a full round this is 8 seconds. Which in the grand
scheme of things, not a whole lot, but if we can get a tiny performance
gain from... not doing literally nothing (especially when we can do
these things cleaner with signals) that's a win in my book

## Changelog

🆑 Melbert
refactor: Refactored dna injectors (both the ones that change appearance
and activate mutations), report any oddities with them like failing to
revert your appearance or mutations not applying correctly
code: Ever so slightly changed how diseases tick, report any oddities
code: Ever so slightly changed how some species mechanics tick, like
golems and slimes, report any oddities
code: The code behind printing appearance modifying dna injectors from
genetics has changed, report any oddities
code: Some backend transformation sting code changed slightly, report
any oddities
code: Zombie "idle" groaning is now tied to the tongue rather than the
species itself
admin: Force-injecting someone with HARS give an admin alert, the same
as force-injecting someone with Monkey
fix: Several methods of copying DNA (including transformation sting)
mistakenly copied "active mutations", this has been fixed
/🆑

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
This commit is contained in:
MrMelbert
2026-05-29 22:48:16 -06:00
committed by GitHub
co-authored by John Willard
parent 7cf48344fb
commit e68c1edad1
26 changed files with 270 additions and 301 deletions
@@ -420,6 +420,14 @@
disliked_foodtypes = NONE
// List of english words that translate to zombie phrases
var/static/list/english_to_zombie = list()
/// Spooky growls we sometimes play while alive
var/static/list/spooks = list(
'sound/effects/hallucinations/growl1.ogg',
'sound/effects/hallucinations/growl2.ogg',
'sound/effects/hallucinations/growl3.ogg',
'sound/effects/hallucinations/veryfar_noise.ogg',
'sound/effects/hallucinations/wail.ogg',
)
/obj/item/organ/tongue/zombie/proc/add_word_to_translations(english_word, zombie_word)
english_to_zombie[english_word] = zombie_word
@@ -475,6 +483,11 @@
message = capitalize(message)
speech_args[SPEECH_MESSAGE] = message
/obj/item/organ/tongue/zombie/on_life(seconds_per_tick)
. = ..()
if(owner.stat == CONSCIOUS && SPT_PROB(2, seconds_per_tick))
playsound(owner, pick(spooks), 50, TRUE, 10)
/obj/item/organ/tongue/alien
name = "alien tongue"
desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"."