## About The Pull Request
It's exactly 6 months from April 1st, so this is a date for very serious
PRs only.
We've all seen that one tip at the beginning of the round:

So the afro must be really big, right? Having one must be a very large
sacrifice in the realm of pixel-based combat, right?
WRONG.

This is the largest afro currently available. Absolutely pathetic. It's
not even the largest hairstyle in terms of pixel volume.
Here's a bigger one.


The sprite overlaps the tile above by 6 pixels, which is noticeable, but
not enough to interfere significantly with gameplay (apart from having a
sacrificially larger hitbox).

This could already be done by creating a new .dmi file with larger,
non-square pixel bounds, but that's a less than elegant solution.
Instead, added a y offset var to hair sprite accessory datums.
## Why It's Good For The Game
The self-expressive merits of having more hairstyles should be
self-evident, so I will make a mathematical argument here.
Everyone knows that the coolness of an afro is determined by its volume.
As a 2-D sprite, the closet equivalent we have is area. An afro is,
approximately, a circle, so the area can be calculated as πR^2, with R
being the maximum distance from the top of the head to the top of the
sprite bounding box.
The current largest afro has a height of 6 pixels. This new afro has a
height of 12 pixels. As a result, impressiveness increases by a factor
of 4:
```math
coolness_{new\ \ afro} \over coolness_{old\ \ afro}
```
```math
π12^2 \over π6^2
```
```math
12^2 \over 6^2
```
```math
144 \over 36
```
```math
4
```
This means that, for the intrusion of a mere 6 pixels into our northern
neighbor's bounding box, we get **quadruple** the coolness.
## Changelog
🆑
add: Added Afro (Huge) hairstyle
/🆑
---------
Co-authored-by: Cruix <discoveryian2@gmail.com>
## About The Pull Request
- Kills `spec_death`, everything that used it is now signalized.
- Kills `spec_hitby`, nothing used it. Anything that did hypothetically
can use the signal.
- [x] I tested this PR
## Why It's Good For The Game
These are all bad and using signals is superior.
## Changelog
🆑 Melbert
code: Removed species death and species hitby, replaced any uses with
signals.
/🆑
## About The Pull Request
In PR #76817, the damage reduction for robotic limbs was changed from
being flat to being multiplicative in nature. This wasn't supposed to
have secondary mechanical effects on robot limbs, but as always a few
slipped by. This PR just cleans up a few of these unintended mechanical
changes.
First of all, the change made robotic limbs not fully immune to space
damage. They remained immune to damage from pressure but not damage from
temperature. Now people with only robotic limbs are immune to the
temperature damage and the moodlets caused by low or high temperature. I
have tested it, and it works for people who have all robotic limbs,
people who have some robotic limbs and some missing, and even the
extreme case of a nugget with H.A.R.S. who has nothing _but_ a robotic
chest.
Due to technical limitations (`apply_damage` doesn't have a
`required_bodytype` argument), people with some robotic limbs and some
organic will still take temperature damage on their robotic limbs.
Second of all, androids are once again immune to crit damage. Normally,
crit damage is just constant oxyloss, but this obviously doesn't work
for species that don't breath. Instead, those species take a small
amount of brute damage. Prior to the damage reduction change, this meant
that Androids were effectively immune to crit damage. Now they're immune
once again.
Finally, you can now cancel surgery on robotic limbs. I don't think this
bug was actually caused by the above PR, but I decided to fix it while I
was here.
Closes#77033.
## Why It's Good For The Game
The damage reduction change was explicitly not intended to make robotic
limbs not-spaceproof, so the first change is by definition a bugfix. As
far as I know, crit damage being brute for nobreath species is a much
more recent change than the existence of androids, so I think that also
qualifies as a bugfix.
## Changelog
🆑
fix: Having all augmented limbs will make you properly spaceproof once
again.
fix: Androids are immune to crit damage again.
fix: Surgery on robotic limbs can be canceled.
/🆑
## About The Pull Request
Fixes#78942
Don't give every heretic mob mirror walk
Also restores their spaceproofing.
The causes of this were respectively:
- I didn't type out the full typepath.
- I forgot.
## Changelog
🆑
fix: "Mirror Walk" is once more the domain of the Maid in the Mirror
rather than "every heretic summon"
fix: Heretic mobs can once again survive space
/🆑
Fixes#78953
## About The Pull Request
Basically the gist is that Space Dragon's special attack code was on
`AttackingTarget()` rather than whatever the hell simple animals
controlled by clients use (I didn't bother enough to look into the chain
to remember this). This was the complete wrong proc to use, and it NEVER
got executed. Anyways, we just hook into the signal for whatever the
simple animal proc is as well as clean up all the code, make everything
pretty, and most importantly:
MAKE THE DAMN CODE WORK
## Why It's Good For The Game
Either someone did not test their code at all, or some weird esoteric
change in the attack chain changed this somehow? I'm not sure when or
why this happened but it is guaranteed to be fixed now.
The code cleanup and tinkering I did means that it's gonna be about 10%
easier to port this over to a basic mob eventually (not doing a full
refactor when this shit is this broken, the code added here is modular
enough to the point where it's plug-n-play).
## Changelog
🆑
fix: Space Dragons can now, once again, tear down walls and eat corpses.
They also have regained their special damage modifier when attacking
mechs.
/🆑
## About The Pull Request
We accidentally lost this behaviour when we converted goats to basic
mobs.
_Formerly_ (and now again) goats had a 0.5% chance per second to simply
decide to attack you for no reason at all.
While attacking you they also have a 10% chance per second to get bored
of doing that and stop.
Additionally, we were outputting a fluff message every time you attacked
a goat which would spam chat if you were trying to fist fight each
other. I added a 20 second cooldown onto it.
As is often the case, implementing this led me down a bit of a rabbit
hole.
We were previously bypassing faction checks via a mixture of flags on AI
behaviours and blackboard keys.
I have moved this _entirely_ to the blackboard now, rather than making
targetting subtypes just to skip faction checks.
This entails having one blackboard key which is "by default do we care
about factions?" and another which is "are we currently ignoring
factions for some other reason?"
Retaliatory AI will generally enable the second flag, so you can get
pissed off at someone you would usually not mind hanging out with if
they start something with you. Certain mobs which want to hunt other
mobs but not be hunted in return just ignore factions entirely all the
time and use the former.
The upshot of this is that the default behaviour for expected default
retaliatory AI shouldn't require you to set any specific kind of
targetting datum and will Just Work.
In a similar vein because I was touching largely the same mobs I made
the "flee when injured" component apply its "don't flee because not
injured" flag instantly upon application rather than needing to manually
set it in the blackboard definition, so that also Just Works.
## Changelog
🆑
fix: Pete's anger management training has worn off, and he will once
again sometimes pick a fight with you for absolutely no reason.
qol: Attacking a goat will not spam messages so frequently.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
- Fixes#78919
- Adds `SHOULD_CALL_PARENT` to reagent `on_mob_life`, fixes a few places
which didn't call parent
- Off the top of my head I remembered holy water purposefully didn't
call parent to get a static metabolism rate. However #78657 added a
parent call to holy water, meaning it's been metabolizing out twice,
incredibly fast. Fixes that.
## Why It's Good For The Game
Reagent parent is fairly important as it handles removing the reagent
from the mob.
## Changelog
🆑 Melbert
fix: Fixes Mauna Loa, Monover, Silibinin, Granibitaluri not exiting your
system on metabolism
fix: Fixes holy water exiting your system at double the rate on
metabolism
fix: Holy Water no longer spams cultists with big text every time, it's
much more tame now
/🆑
## About The Pull Request
Let's see if these can be like 50% playable by Halloween
Fixes#70890 (mostly)
Also one half of #71020 but does not close it because they still cannot
hear audible messages
There was a list of issues in #70890 which are largely fixed by this,
but some of them were not _bugs_.
Anything which is simply an obvious consequence of "not having a head or
being able to wear anything on your head" isn't and cannot be fixed,
because this species doesn't have a head.
That means that all of these things are still true:
```
Dullahans have no radio
Can't get spaceproofed because without the helmet you still take pressure damage
Can't wear modsuits
Can't wear sunglasses or HUDs
Can't wear clown mask
```
The issue causing everything _else_ is that when we sever the head, we
remove the brain. Removing the brain removes the traits
`TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP`. Without these
three traits, Dullahans are blocked from several important actions.
Easy fix: Make these properties of the dullahan species independent of
whether they have a brain or not. Clearly they can do these things
without brains, on account of not having them.
Additionally I gave dullahans their own head subtype which preserves
internal organs, because their brains and eyes were decaying and giving
them brain trauma and blindness.
Finally, I changed a few things from checks in `spec_life` to signal
responses, because `spec_life` checks for "did I gain a head recently?"
are gross.
## Changelog
🆑
fix: Dullahans can read, strip people, and utilise tools.
fix: Dullahan brains and eyes will not decay while inside their living
severed head.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
In large PRs (#78782 (3415828c6b)), some
mistakes tend to be made.
Backend Fixes:
* Removes excess and un-necessary `on_creation()` procs for the status
effects. The work is already done in the parent
`/datum/status_effect/revenant`, no need to duplicate it.
User Facing Fixes:
* I copy-pasted too hard and accidentally nerfed the holy hand grenade's
effect on revenant. It was originally intended to stun for 10 seconds,
and I had no interest in changing that to 2 seconds. My bad.
* Revenant midrounds were broken because I thought observers had minds,
whoops. I really wish there was a better way to transfer clients into a
new mob than key mutations in these instances though.
* Revenant Harvesting is fixed, because I forgot that we would be
incapacitating the mob with the paralyze status effect. The proper flags
are now passed into the `do_after()` and it should now give you
delicious essence.
## Why It's Good For The Game
Mea culpa.
## Changelog
🆑
fix: The Holy Hand Grenade's effect on revealing a revenant had its
duration accidentally nerfed, it is now back to 10 seconds.
fix: Revenant midrounds should now properly run.
fix: Revenant harvesting should now let you actually pass the final
do_after so you can harvest that sweet essence.
/🆑Fixes#78925
## About The Pull Request
Adds a small new lavaland ruin, the Watchers' Grave.


You will need to figure out yourself how to find a way through the walls
surrounding it (it's not very hard).
This is mostly just atmospheric but also serves as a delivery vehicle
for a unique item; an orphaned Watcher egg.
(That's kind of it in terms of loot, unless you count a handful of
lavaland mob corpses and mushrooms).
You can either eat this (it's an egg), throw it at someone to spawn an
angry watcher, or keep hold of it for a while and see what happens.
<details>

That's right it's your very own baby watcher.
It orbits your head and shoots at lavaland creatures for unimpressive
damage. It won't ever intentionally shoot a player but they might walk
in front of it, as it doesn't hurt very much they will probably forgive
you.
If you die it will continue circling your corpse to guard it against
predation.
</details>
In creating this ruin I also added a new component called "corpse
description".
It provides some extra examine text to a corpse which is removed
permanently if the mob is revived.
There's a field you can varedit on corpse spawners (or make a subtype)
which will automatically apply it to spawned corpses.
You can use it for environmental storytelling. Or admins can use it to
make fun of how you died.
Also I fixed basic mobs runtiming when examined by ghosts.
## Why It's Good For The Game
More variety in map generation. It's cute.
Adds a tool that mappers might like.
## Changelog
🆑
add: Adds a new lavaland ruin where you can find a unique egg.
/🆑
## About The Pull Request
Now we can make basic mobs with hands easily so I did, they don't
actually use their hands for anything with AI.
In the future we can come back and share the monkey AI where they pick
up items to hit people with, but frankly few weapons are more deadly
than a gorilla's fists.
IIRC I didn't really change their behaviour much, this is mostly just a
straight conversion. Main difference is that they will prioritise eating
nearby bananas and fruit salads over punching people.
When I make these conversions nowadays I need to decide between "does
this attack at the speed that it did as an NPC mob or the speed it did
as a player?"
I am arbitrarily deciding that gorillas are usually not players and
electing for the former, but tell me if you disagree.
I also made "show basic inhand sprites" into a component shared by
Gorillas, Drones, and Dextrous Guardians (all also now available to
become basic, once I get around to it),
And I added an AI behaviour to run a basic emote. This is similar but
different to "random speech", which kind of sucks and needs rewriting
anyway.
Gorillas don't speak, only ooga.
## Why It's Good For The Game
https://www.youtube.com/watch?v=npuuTBlEb1U
## Changelog
🆑
refactor: Gorillas now use the basic mob framework. Please report any
unusual side effects.
/🆑
## About The Pull Request
theyre basicmobs now, tangling is an ability and also applies a leash
for the duration of the beam
they now have 100 HP
also when theyre not within 2 tiles range of space vines every Life tick
they take 20 damage(they have 100 max hp)
if they are in range however they heal 10 damage
theyre slightly slower too, and they deal 10-20 damage, from the
previous guaranteed 20 damage
also their attack cooldown is 0.2 seconds slower
the tangling does not automatically pull people but for the duration of
the tangle the victim is leashed to you
which means they cannot go out of range of you, so you can move
backwards to pull them closer (as seen in video)
https://github.com/tgstation/tgstation/assets/70376633/aed77f81-c564-4fcc-879e-7dd8a9b5c787
## Why It's Good For The Game
basicmob good
also fighting these dudes unprepared is a death sentence and being
caught unprepared is easy if kudzu decides to spawn in the middle of
fucking nowhere and rolls flowering, then absolutely does not listen to
the protect kudzu part and goes from the middle of nowhere to medbay to
murderbone
hopefully this should make them less proficient at shredding people and
make them actually defend kudzu instead of murderboning
## Changelog
🆑
refactor: venus human traps are basicmobs now
balance: venus human traps have 100 health
balance: venus human traps take damage out of range of kudzu, heal near
kudzu, are slightly slower, attack slower, and their damage output is
slightly more random
balance: also venus human trap tangle ability now needs you to actually
move backwards to pull victims
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
Replaces the Healing Touch component on Changeling-spawned Flesh Spiders
with the Regenerator component, as the comment helpfully suggests.
Flesh Spiders can no longer touch themselves to heal, instead they
automatically begin regenerating their health if they go four seconds
without taking damage. It takes 6 seconds to fully regenerate, so 10
seconds to fully heal from the edge of death (less if you're not that
injured).

Also I changed the sprite for flesh spider eggs to a different one we
already had rather than regular spider eggs tinted red, just because I
felt like it.
Would be cool to give the spiders their own sprite some time, but that's
for another PR.

_Additionally_ the flavour text for flesh spiders was kind of messed up
by being shoved into the objectives box and claiming that it was a
directive from a spider queen you don't have, so I gave them their own
slightly different antag datum to compensate.
It also actually mentions how you heal yourself, which previously was
down to trial and error or codediving.
In the course of doing this I decided to just... move flesh spiders to
their own type path. It _sort of_ made sense for them to be part of the
giant spider typepath, but they keep being modified by changes targetted
at "balancing the Giant Spiders antagonist" which this mob isn't related
to and doesn't have any reason to follow. The fact that a mob has
similar stats to another one isn't automatically a reason to share a
typepath, and now that I have looked a little at this mob I'm sort of
interested in branching it further away from "it's a spider mob but
spawned a different way" in the future.
Finally, this spider egg cluster and the midwife one would prompt ghosts
with a radial menu with a single option on it... that's a bit pointless,
so we'll bypass that menu if there is only one possible outcome.
## Why It's Good For The Game
Currently Flesh Spiders heal by clicking on themselves and standing
still for two seconds, restoring 50% of their HP. This means they can
fully regenerate over 4 seconds unless you stun them, and with 90 HP
you're not _that_ likely to kill one during the channel time.
This just feels like an odd way for the creature to operate,
regenerating instead gives it a hit-and-run strategy and adds more use
to their webs (maybe we should give them meatier or bloody webs at some
point? Might be cool).
Also clicking yourself to heal is just unintuitive and I suspect several
players just didn't realise they could do it in the first place.
## Changelog
🆑
balance: Flesh Spiders heal automatically over time if they go a short
time without taking damage, instead of healing large chunks by clicking
themselves and waiting two seconds.
qol: Spider egg clusters which only hatch into one kind of spider don't
ask you to select that one type from a radial menu with one option on
it.
qol: As a Flesh Spider, the game now tells you how you can heal
yourself.
/🆑
## About The Pull Request
Adds a base physical description proc to gameplay species, displays it
on magic mirrors. It will give a description of not the lore of the
species but in what way they differ from base species.
Fixes a bad subtype on magical mirrors.
Magical mirrors now give the user ADVANCEDTOOLUSER and LITERACY if they
lack either of them, so monkey wizards aren't softlocked.
## Why It's Good For The Game
## Changelog
🆑
qol: Adds a base physical description proc to gameplay species, displays
it on magic mirrors. It will give a description of not the lore of the
species but in what way they differ from base species.
fix: Fixes a bad subtype on magical mirrors.
fix: Magical mirrors now give the user ADVANCEDTOOLUSER and LITERACY if
they lack either of them, so monkey wizards aren't softlocked.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
I kind of hate cult as a whole, but I like these little guys. Let's
basic-ize them.
This PR begins the process with the harbinger of the Red Harvest, the
Harvester! Their actual capabilities have been changed very little,
except that most of their unique properties have been moved to
components and elements. The basic parent type of constructs has also
been set up to make the next bunch of conversions easier.
- Constructs capable of repair now receive the healing hands component.
Healing hands has been extended, to allow the healing particles to come
in custom colors, and to allow it to print the target's health if the
target is not a carbon.
- Repairing constructs also receive a new element: Structure repair is a
lighter-weight variant on healing hands that allows repairing clicked-on
atoms of specified types.
- Constructs capable of damaging walls, meanwhile, receive the wall
smasher element.
Harvesters in specific have two special elements:
- The existing "amputating limbs" element, making them instantly rip a
limb off of any carbon they attack. As before, if they attempt this on a
carbon with no arms or legs, the harvester will hear Nar'Sie's call to
bring the victim to her.
- A new "wall walker" element, allowing them to walk through walls of
specified type (cult walls for harvesters) and allowing them to drag any
atom through as well.
Other than laying the groundwork, there's not much else here. I started
with Harvesters specifically because they are only ever
player-controlled, which makes things easy.
I'm not completely happy with the use of healing hands here - it gets
the job done, but currently loses a bit of the previous flavor (a
healing beam as a visual; printing the target's health in cult span). I
may extend it further to allow this behavior.
I've included an UpdatePaths script, even if these things shouldn't be
mapped, just in case something fucky is going on on a downstream. You
never know.
## Why It's Good For The Game
Constructs, currently, occupy _19_ spots on the simple animal list. This
is something close to 10% of all the remaining ones. Also, like
everything to do with cult, construct code is janky, old, and
desperately in need of updating. This is the first step.
## Changelog
🆑
refactor: Harvester constructs have been updated to the basic mob
framework. This should have very little impact on their behavior, but
please report any issues.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Places "setting up being able to use hands" into an element so it can be
easily applied to non-carbon mobs.
## Why It's Good For The Game
This is one of the last roadblocks for basic mob implementation and
people were intimidated by it but it turns out this shit is easy, 90% of
this code is already just on `living` and I put a little bit more there.
The element _really_ only handles stuff like dropping items on death,
picking things up rather than biting them, and adding examine text.
This also removes some copy/pasted code between `simple_animal` and
`carbon` and unifies some behaviours which were implemented for some
dextrous simple animals but not others.
Changes to give Ian a single hand representing his mouth will come at a
later date.
## Changelog
🆑
qol: You can now see what drones and gorillas are holding by examining
them.
admin: It's now easier to give handless mobs hands by applying the
"dextrous" element.
balance: Spiders and Bears can now climb railings (you know if... they'd
rather do that than destroy them).
/🆑
makes holoparasites `MOB_SPECIAL` and gives them `SENTIENCE_HUMANOID`
only one is needed for the belt to fail copying it but uhhh i don't
think it should just be left hanging with no biotype at all thats just
weird
fixes#78578
## Changelog
🆑
fix: you can no longer polymorph belt into a holoparasite
/🆑
## About The Pull Request
Fixes a few runtimes with TTS and skips some code if TTS isn't enabled.
## Why It's Good For The Game
fixes...good???
## Changelog
🆑
fix: Fixes a few runtimes with TTS and skips some code if TTS isn't
enabled.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Fixes#74168
I was going to make changes to the changeling spacesuit so that it works
on Icebox but then I thought, why not _not_ do that.
This isn't a commonly picked adaption so why don't we make it a little
better.
What's more spooky, hearing a knock on the window and seeing a fat suit
outside? Or this?

Picking Void Adaption will now make you immune to low temperature and
pressure (but not high temperature and pressure) and you will stop
breathing. If you enter an area with low temperature or pressure then
your chemical regeneration rate will decrease until you leave that area.
Because it doesn't put a suit on you, it now also works during Lesser
Form.
While testing this I noticed that we weren't calling `Grant` on passive
changeling abilities for some reason, I replaced that with the
already-written interface for making "an action which doesn't give you a
button".
If people really _really_ miss the fat suit I guess I'll rework that
instead, but I think I like this more.
## Why It's Good For The Game
Makes a niche-pick ability more useful and easier to use.
Meteor Changelings who land on Icebox now don't roll a dice to see if
they get instantly knocked out by the atmosphere there.
## Changelog
🆑
balance: The Changeling Space Suit has been replaced by a new ability
which makes you passively spaceproof without replacing your clothing.
admin: Editing the atmos sensitivity variables on a basic mob during the
game will now actually do something.
/🆑
## About The Pull Request
Tin
The bundle includes revolver, holster, armored cowboy outfit, horse,
apples to tame said horse, and a complimentary lighter.
It costs 18tc, so it's a little more expensive than getting the revolver
& holster on their own, but you also get a horse so it's worth it.
## Why It's Good For The Game
This was intended as a lone-ops bundle so we can finally have some lone
rangers but I think having a crew of cowboy outlaws doing a "train
heist" for a nuke is really funny.
## Changelog
🆑 Wallem
add: Nuclear Operatives now have ready access to ancient cowboy
technology in the form of the Outlaw Bundle. Now you too can roll into
town on your horse.
/🆑
## About The Pull Request
I felt bad about taking all the "easy" ones, so let's change it up with
a decently difficult one. Revenants are now basic mobs! This alone
doesn't change much of anything because it pretty much overrode much of
simple_animal code. However we do a few new things.
* Multiple code improvements! No more weird proc names that aren't
`snake_case`, cleaner variable names, more dmdoccing, etc.
* Files are now reorganized, Rather than a 800-line dogshit monofile,
we're all nice now
* Multiple logic improvements, like early returns to make stuff more
readable and the like. many `isnull()` yes
* Instead of abusing key ownership logic, we use `mind.transfer_to()`
instead for much cleaner behavior when we need to change stuff
* Instead of iterating over the entire list of mobs to find dead mobs,
we use a new `revenant_relay()` system that automatically handles
broadcasting revenant messages to all observers and fellow revenants
(like `blob_talk()`)
* Instead of having a weird invisible "corpse", we move the revenant
inside the actual ectoplasm when they die. This drastically simplifies a
lot of wacky code that was completely useless since we still had the mob
to work with, but now it's a lot cleaner when it comes down to it.
* Some more hooks into stuff like `Life()` that might be useful for
other people in the same way this is.
* Less <span> crap, more macros, wahoo
* Uses an `examine_block()` for when we relay instructions to new
revenants. also cache those instructions to save time in the long run
* Revenants being stunned, inhibited, and revealed are now managed by
status effects rather than being chicanery on `Life()`
* Everything should now just in general be a lot nicer to work with.
This list is not exhaustive but a lot of the junk 7-year-old code has
been gutted and replaced with the modern standards.
There are stuff that I explicitly didn't touch and will not be touching
in this PR as it's already rather large.
* Revenant actions. I touched some proc names but I didn't alter the key
ways they work.
* Revenant movement. That's another can of worms.
* Revenant event code. I just made it use the transfer to system to make
a closed loop and that's about it.
* Revenant AI. They don't have any, it's an event/admin spawn. I'm not
adding AI here.
## Why It's Good For The Game
Revenants are more extensible now rather than being a real big
clusterfuck of bullshit, should be much easier to tweak stuff here and
there or logically follow how the code for this fella should go. The
number of weird revenant bugs should go down since we do stuff more
simply- but there could be some sleeper bugs that can bite us.
## Changelog
🆑
refactor: Revenants, the mob that's split between planes of Life and
Death, have been refactored into a basic mob. While this alone shouldn't
touch behavior, a lot of the backend code has been gutted and refactored
to try and furnish a better antagonist experience. This might mean that
some weird stuff can come up and around, report something if it's
utterly broken.
code: In order to better facilitate some code, you do not ghost outside
of a revenant on death, you simply get transferred into the ectoplasm.
You should still be able to speak with your ghost friends on how hard
you got wrecked or if you'll be able to resurrect though.
code: The timing on revenant stuff such as being revealed, stunned, and
inhibited (by holy weapons) should be tweaked a bit to allow better
management. This should mean that getting unstunned and such should be a
bit more precise now.
qol: Revenant instructions are now relayed in a neat little examine
block.
/🆑
## About The Pull Request
This PR does three things:
- Fixes fleeing, I broke it in a recent PR so mobs would walk to a
location then sort of stand there doing nothing. This is due to using
`>=` instead of `>`.
- Makes lobstrosities stop running and charge at you more responsively
(when they detect they can charge).
- Inverts the `BB_BASIC_MOB_FLEEING` blackboard key to
`BB_BASIC_MOB_STOP_FLEEING` so that the default behaviour is "to perform
the behaviour that you put on the mob" instead of to not do that.
## Why It's Good For The Game
Makes commonly used behaviour work properly.
Removes footgun we hand to ai developers.
## Changelog
🆑
fix: Cowardly mobs will consistently run away from you instead of
getting tired and just sort of standing there after an initial burst of
movement.
/🆑
## About The Pull Request
Makes the range where gibbing from too much blood extend to infinity
Also adds a message for swelling so there's more warning before you gib
## Why It's Good For The Game
Fixes#78786
It also fixes a wizard exploit apparently.
## Changelog
🆑
fix: fixed gibbing from having too much blood not working in some cases
/🆑
## About The Pull Request
Surprise, this just assumed a mob's mask is, well, a mask. But you can
wear many non-mask things in your mask, such as bread or roses.
## Changelog
🆑 Melber
fix: Wearing bread (or roses, or other non-mask things) no longer
prevents you from TTS speaking.
/🆑
## About The Pull Request
This PR reverts the slaughter/laughter demon melee speed to be the
default for player characters.
## Why It's Good For The Game
These guys are solely player-controlled, and I don't think this change
was intentional.
## Changelog
🆑
fix: Slaughter/Laughter demon melee cooldowns have been fixed and now
attack at the regular player character attack speed
/🆑
## About The Pull Request
ice demons are now basic mobs. they still have their behavior where they
can teleport around the player, run away from him and shoot him. they
now also have a new ability they will only use when they are on their
last legs, they will spawn weak and slow afterimage clones of
theirselves to attack the player. damaging these clones will also damage
the original ice demons. ice demons can also now be very easily
countered as they are very afraid of fires. they will run away from you
if they see u holding a lit torch/flare/welding tool and while running
away they will freeze the floors around them to try to slip u to stop u
from chasing them. ice demons now also get a new unique trophy! this
trophy will summon 2 friendly spirits that will help you kill ur target,
but these spirits will dissappear after a very short while.
https://github.com/tgstation/tgstation/assets/138636438/6a48fb15-f447-441a-91c6-48ca120dc22c
## Why It's Good For The Game
## Changelog
🆑
refactor: ice demons have been refactored into basic mbos. please report
any bugs
add: ice demons now have a unique trophy
/🆑
## About The Pull Request
As potato requested after the merge of #78744 these should have separate
concerns even if they are very similar.
In addition I improved how mob chains react to glide size changes, and
swapped PAIs to using these signals instead of an override of
`onBruteLoss` just because I can.
I tested it but the unit tests will catch me if i did it wrong
## Changelog
🆑
fix: Flesh Worms will move smoothly more consistently.
/🆑
## About The Pull Request
Hey there,
This just refactors sloths to the basic mob framework. Nothing new
should be added beyond them seeming a bit more sluggish and being a bit
smarter about the fights they pick/running away.
## Why It's Good For The Game
Three more subtypes off the list, we are now sub-200 simple animals left
to refactor. If people want to play catch with their sloth it should be
much easier to fit that in now.
## Changelog
🆑
refactor: Sloths are now basic mobs, however their overall sluggish
behavior shouldn't have changed much- let us know if anything is broken.
/🆑
## About The Pull Request
Raw Prophet and Armsy had fun stuff going on and merited their own PRs,
but the rest of these guys are basically just statblocks with abilities
so I converted them all at once.
Rust Walkers are present in a ruin and so have new AI which will
actually use their abilities. They rust the area around where they spawn
and throw their rust blast at people.
I also gave Flesh Stalkers AI even though nobody has put them in a map
because I thought it would be cool. This adds an AI behaviour where if
they're not doing anything else they will turn into an animal and chill
until someone's been around them for a bit, before attacking. They will
also use EMP almost immediately upon performing their ambush, which
kills the lights in that room. Spooky!
To support this I needed to make some changes to let AI continue
processing and targetting correctly while shapeshifted.
I didn't give Maids or Ash Spirits AI because they'd be really boring.
Other changes:
I made the maid in the mirror flicker when it takes examine damage
because the `visible_message` says it does but despite having the power,
nobody made it actually flicker...
## Why It's Good For The Game
No more simple mob heretic summons.
## Changelog
🆑
refactor: Rust Walkers, Ash Spirits, Flesh Stalkers, and The Maid in the
Mirror now use the basic mob framework. Please report any unusual
behaviour.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Saw that Frosty the Snowman's factions were strings instead of defines,
so I have made them use defines.
## Why It's Good For The Game
Defines are much safer and cleaner than using strings.
## Changelog
Nothing player facing
## About The Pull Request
Quick refactor, replaces `spec_updatehealth` with use of
`COMSIG_LIVING_HEALTH_UPDATE`.
`spec_updatehealth` was only used by one species, ethereals, and it was
used in a (in my opinion) janky way by calling `spec_updatehealth`
constantly.
This has one downside - `COMSIG_LIVING_HEALTH_UPDATE` is NOT sent if the
mob is in godmode, while `spec_updatehealth` was, which means godmoded
ethereals may not update 100% accurately according to their health
before entering godmode, but I doubt this will come into play often at
all.
- [x] I tested this PR
## Why It's Good For The Game
`updatehealth` is kinda hot, not turbo hot but a little hot, so this
helps performance a bit.
## Changelog
🆑 Melbert
refactor: Refactors how ethereals update their color when damaged.
/🆑
## About The Pull Request
This takes all the gib related procs:
- `gib()`
- `spawn_gibs()`
- `spill_organs()`
- `spread_bodyparts()`
And adds heavy documentation that communicates what the procs are used
for and how the different bitflags affect them. The difference is
noticeable:
`gib(TRUE, FALSE, FALSE, null)` vs `gib(DROP_ORGANS|DROP_BODYPARTS)`
The code is now much more legible which is important considering it's
used in a lot of places!
Another robust change, is that we had several places in the code where
there were double negatives like so:
```
/mob/living/carbon/spill_organs(no_brain, no_organs, no_bodyparts)
if(!no_bodyparts) // DOUBLE NEGATIVES ARE BAD M'KAY?!?
// do stuff here
```
This is a mindfuck to untangle. I inverted a lot of these parts so we
don't lose our sanity.
Last thing that was changed was a big `if()` loop in the `spill_organ()`
proc. This was refactored to just be a simple `for` loop with `continue`
statements where we needed to skip enabled bitflags. It's now shorter
and cleaner than before.
The only slight gameplay change this affects is that gibbing a mob now
guarantees to drop all items unless the `DROP_ITEMS` bitflag is
deliberately omitted. Some places like admin gib self, we don't want
this to happen.
## Why It's Good For The Game
Gib code is very old. (~15 years) People kept adding more arguments to
the procs when it should have been a bitflag initially. By doing it this
way, there is more flexibility and readability when it comes to adding
new code in the future.
## Changelog
🆑
refactor: Refactor gib code to be more robust.
qol: Gibbing a mob will result in all items being dropped instead of
getting deleted. There are a few exceptions (like admin gib self) where
this will not take place.
/🆑
## About The Pull Request
Refactors goats into basic mobs, pretty clean refactor. They're a bit
smarter when it comes to retaliating mobs, and they're still just as
good as ever when it comes to munching on good ol' plantlife. I also
(finally) turned Pete into a goat subtype just in case people want to
inject more behavior into him in the future.
## Why It's Good For The Game
Cleaner implementation of code when it comes to doing stuff like eating
kudzu or just lusting after flora.
## Changelog
🆑
refactor: Refactored goats into basic mobs! Not much should have changed
beyond their endless desire to retaliate should you attack them, they're
still just as good as chomping away plant life as ever.
/🆑
## About The Pull Request
There is a flag for the revive proc called `HEAL_NEGATIVE_MUTATIONS`. It
is supposed to make the revive heal negative and minor negative (e.g.
chav, medieval) mutations, but not positive mutations. However, it was
bugged and wouldn't heal any mutations. This PR just fixes it. Closes
#43547.
## Why It's Good For The Game
Its a bugfix.
## Changelog
🆑
fix: Adminheal will now properly clear negative mutations as intended.
/🆑
## About The Pull Request
the `drip` argument was being passed an inverted value.
Broke in https://github.com/tgstation/tgstation/pull/56056
## Changelog
🆑
fix: Blood once again appears as small drops instead of splatters during
minor bleeding.
/🆑
## About The Pull Request
Fixes#68614
Converts the Flesh Worm (Armsy) into a Basic Mob.
Most of its behaviour has been moved into a component which we can use
to make arbitrary mobs into linked lists of mobs.
To accomplish this I added a signal which is sent when you call any
`adjustXLoss` proc, let me know if my implementation is "calling the
same signal from several places" by a backdoor, I wanted to avoid
registering to 6 signals but I'll change it if I must.
While I was here I killed the unused "lesser" variant because we stopped
using it. Resultingly, Ascended Armsy doesn't need to distinguish itself
by inflating the sprite, so it doesn't. This means that now flesh worms
are using their sprites as intended to be displayed, but if people
really miss all of its segments being poorly scaled by the byond engine
then I guess I can restore it.
## Why It's Good For The Game

## Changelog
🆑
refactor: Flesh Worms are now basic mobs. Please report any unexpected
behaviour.
sprite: Flesh Worms are a little bit slimmer.
/🆑
## About The Pull Request
Might as well start on these now, should be easy enough.
The Raw Prophet actually comes with a couple of new components.
The `wheel` element is sort of like the `waddling` element in that you
give it to any movable atom to have it move like a raw prophet.

Whee!
The focused attacker component can be attached to any mob or item and
causes it to escalate its damage every time you attack the same target.
I'll be honest I consistently forget that the Raw Prophet does this.
The ones in the Ruin have the blinding gaze attack inherited from
Watchers instead of the point-target Blind spell in order to ensure that
you can actually "dodge" it.
I tried to make it jaunt if it got stuck but ran into too many problems.
Another time.
## Why It's Good For The Game
I do this to relax now.
## Changelog
🆑
refactor: Raw Prophets now use the basic mob framework. Please report
any unusual behaviour.
/🆑
## About The Pull Request
Characters with moth wings now have their own "flutter" noise for the
*flap emote, sampled from a bird taking off
https://freesound.org/people/Godowan/sounds/240476/
Moth species also have a death sound now, sampled from the iconic moth
scream
the *tremble emote, also "trembles in fear!" was changed to just
"trembles!"
## Why It's Good For The Game
Moths don't really have much in terms of _sound_. The only moth noise in
tgstation is moff scream (which I reckon could use some variety in the
future too)
The tremble emote has bothered me particularly for a long time; the
*tremble emote shouldn't be completed delegated to convey fear. *shiver
and *tremble are now essentially the same emote, but "shivers." is a lot
less severe then "trembles!".
## Changelog
:cl:FIoppie
sound: *flap now makes a fluttering noise for moth wings
sound: Moths now have a death sound
qol: *tremble emote now is just "trembles!" instead of "trembles in
fear!"
/🆑
## About The Pull Request
Fixes#78679
We made a change to synchronise mob attack speed when controlled by
players and when controlled by AI but this ended up reducing the attack
speed of a few mobs which are primarily controlled by players. This
wasn't meant to be a balance change, so we should revert it for those
mobs.
People can use it as a balance lever later if they want (preferably
after Swing Combat is merged).
## Changelog
🆑
fix: Spiders, Morphs, Fire Sharks, and Regal Rats no longer have a
reduced click speed.
/🆑
## About The Pull Request
Adds a new Wizard Ritual Finale effect which makes everything immortal.
By this I mean, 10 seconds after death a ghostly image of them will
appear somewhere near where the corpse was and then 50 seconds after
that the mob will return to life at that location.
This applies to every mob, everywhere.
This is likely to cause a little bit of disruption to the rest of the
round, so you can only do it after at least 30 minutes have passed.
After that the crew will have to figure out how to deal with their new
gift of immortality. It will involve throwing people into chasms and
lava, probably.

Here's a gif sped up for example purposes.
You can escape from the cycle of death and rebirth via suicide, purely
because it's pointless to try and force people to play the video game if
they don't want to.
Also I split all of these effects into their own files, the only new
code for those is in `immortality.dm`
shout out to Vekter for distracting Oranges while I posted this
wizard-related PR so I didn't get disapprovingly reacted for posting
magic shit (yet)
## Why It's Good For The Game
This might be _too_ much but I want to see what would happen.
It will allow us to simulate whether polite society can survive when
violence has no consequences.
## Changelog
🆑
add: Wizards who complete the grand ritual can now gift everyone with
eternal life
/🆑
## About The Pull Request
Short n' simple, just refactors these nasty buggers to be basic mobs.
Dirt-cheap AI for an admin-only spawn.
## Why It's Good For The Game
Smarter AI, less wack code, better implementation of certain aspects,
etc.
Also fixed a bug where these guys could be causing runtimes since they
would qdel mobs with a client by just adding a quick ghostize (the mob
will have had `death()` called on it already by that point so nothing
should realistically change anyways)
## Changelog
🆑
refactor: Supermatter Spiders have been refactored into basic mobs, on
the extremely off chance you spot one and also notice any weird bugs
regarding it, please report it.
/🆑