## About The Pull Request
Basic Mobs used to always trigger cooldown on clicks. This resulted in
missed attacks causing you to have a delay before you could attack
again, this makes it really punishing to play as a basic mob.
To resolve this I did a mini-refactor on basic mob's attack chain to
allow for the return values to determine whether we go on cooldown or
not. Preventing attacks that did nothing (due to not passing checks, or
simply not having any behavior) from causing cooldown.
This fixes#95605
## Why It's Good For The Game
being able to perform melee with the same rules as /human is only fair
## Changelog
🆑 DresserOnFire
fix: Fixes a bug where player-controlled basic mobs would get a cooldown
when their attacks miss
refactor: basic mob attack chain can now decided whether an attack
resulted in a cooldown or not.
/🆑
## About The Pull Request
Two main things.
Multiple instances of use of a proc in AI controllers seemingly assuming
the default behaviour will work for them, but what ends up happening is
`search_tactic` gets redefined and redefined with no defaut search range
parameter, so nothing ends up passed to the `search_tactic` child procs,
so they all call `oview` with `null` and this... somehow doesn't
runtime? Has behaviour that works some of the time??? I hate this
fucking language. Anyway.
Stoat steal items behaviour was completely broken and apparently was not
tested once since it was merged in. I've made the corrections I can, but
I haven't figured out why stoat AI never enters idle, so we have a
behaviour that leads to the stoat running up to an item, grabbing it,
and then just staying there, unmoving. I've sunk too many hours into
this, I'm just going to call it fixed and let someone else figure out
what exciting additions there need to be to a behaviour that was never
functional in the first place.
## Why It's Good For The Game
i don't know man i just want the pain to stop
okay, generally speaking, when people write AI behaviours, they want
those AI behaviours to do something and not just silently fail for six
months or longer
## Changelog
🆑
fix: Stoats have a chance to try and grab items like they always should
have.
/🆑
My original plan was to just implement materials into crafting so that
items would inherit the materials of their components, allowing for some
interesting stuff if the material flags of the item allow it. However to
my dismay crafting is a pile of old tech debt, starting from the old
`del_reqs` and `CheckParts` which still contain lines about old janky
bandaids that are no longer in use nor reachable, up to the
`customizable_reagent_holder` component which has some harddel issues
when your custom food is sliced, and items used in food recipes not
being deleted and instead stored inside the result with no purpose as
well as other inconsistencies like stack recipes that transfer materials
having counterparts in the UI that don't do that.
EDIT: Several things have come up while working on this, so I apologise
that it ended up changing over 100+ files. I managed to atomize some of
the changes, but it's a bit tedious.
EDIT: TLDR because I was told this section is too vague and there's too
much going on. This PR:
- Improves the dated crafting code (not the UI).
- replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion`
with `atom/on_craft_completion`.
- Reqs used in food recipes are now deleted by default and not stored
inside the result (they did nothing).
- Renames the customizable_reagent_holder comp and improves it (No
harddels/ref issues).
- Adds a unit test that tries to craft all recipes to see what's wrong
(it skips some of the much more specific reqs for now).
- In the unit test is also the code to make sure materials of the
crafted item and a non-crafted item of the same type are roughly the
same, so far only applied to food.
- Some mild material/food refactoring around the fact that food item
code has been changed to support materials.
Improving the backbone of the crafting system. Also materials and food
code.
🆑
refactor: Refactored crafting backend. Report possible pesky bugs.
balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge
different because of code standardization.
/🆑
## About The Pull Request
My original plan was to just implement materials into crafting so that
items would inherit the materials of their components, allowing for some
interesting stuff if the material flags of the item allow it. However to
my dismay crafting is a pile of old tech debt, starting from the old
`del_reqs` and `CheckParts` which still contain lines about old janky
bandaids that are no longer in use nor reachable, up to the
`customizable_reagent_holder` component which has some harddel issues
when your custom food is sliced, and items used in food recipes not
being deleted and instead stored inside the result with no purpose as
well as other inconsistencies like stack recipes that transfer materials
having counterparts in the UI that don't do that.
EDIT: Several things have come up while working on this, so I apologise
that it ended up changing over 100+ files. I managed to atomize some of
the changes, but it's a bit tedious.
EDIT: TLDR because I was told this section is too vague and there's too
much going on. This PR:
- Improves the dated crafting code (not the UI).
- replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion`
with `atom/on_craft_completion`.
- Reqs used in food recipes are now deleted by default and not stored
inside the result (they did nothing).
- Renames the customizable_reagent_holder comp and improves it (No
harddels/ref issues).
- Adds a unit test that tries to craft all recipes to see what's wrong
(it skips some of the much more specific reqs for now).
- In the unit test is also the code to make sure materials of the
crafted item and a non-crafted item of the same type are roughly the
same, so far only applied to food.
- Some mild material/food refactoring around the fact that food item
code has been changed to support materials.
## Why It's Good For The Game
Improving the backbone of the crafting system. Also materials and food
code.
## Changelog
🆑
refactor: Refactored crafting backend. Report possible pesky bugs.
balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge
different because of code standardization.
/🆑
Being colorblind now makes you see all wires in tones of grey.
Also fixes the eyechart not taking the monochromacy quirk into account
when checking for colorblindness
Makes the quirk/trauma a bit more immersive and can lead to funny
situations when you know which color to cut but can't find it.
Being colorblind now makes you see all wires in tones of grey.
Also fixes the eyechart not taking the monochromacy quirk into account
when checking for colorblindness
Makes the quirk/trauma a bit more immersive and can lead to funny
situations when you know which color to cut but can't find it.
## About The Pull Request
Since #90505 added another entry to it the Regal Rat Riot ability, which
turns maintenance creatures into versions loyal to the rat, has become
sort of unmanageable (and to be honest it was a bit gross to start
with).
Instead of having a big if/else list (which was making the same range
check multiple times...) that sets stats on a bunch of mobs, I delegated
it to the mobs themselves and instead of changing some stats of the
existing mobs we just turn them into a new mob which can be spawned or
placed separately by mappers or admins if they want.
Other stuff I changed:
Riot (the ability which transforms mobs into minions) no longer spawns a
mouse if it fails to find anything. Instead you have a chance to fish
mice out of disposals bins while digging out trash and items.
Domain is now a toggle which activates itself every 6 seconds rather
than a button you manually click every 6 seconds.
Riot makes a visual effect when used.
Rare Pepe randomisation is done via a random spawner instead of the mob
modifying a bunch of its own properties in Initialise.
A bunch of mobs now automatically follow you after being tamed. I wrote
this assuming I was going to add it to the rioted mobs but then didn't
end up doing that because you might want them to immediately attack
someone.
My rule of thumb is that if I think you'd want the mob to attack someone
the moment it is befriended I didn't add this and if you wouldn't I did.
I changed some of the regal rat minion names, and some of them can now
spawn from gold slime which couldn't before.
## Why It's Good For The Game
This proc sucked and now it's nicer.
As for the other changes;
- A tamed mob immediately following you is nice feedback and saves you a
click as it's likely to be your first action. Also removes some admin
panel shitcode I added.
- I changed Domain to a toggle because you generally want to use it on
cooldown and someone suggested it on this PR and it sounded like a good
idea.
- I saw someone in Discord complaining that the previous flow of
recruiting rats by hitting Riot with nothing around to summon one,
waiting, hitting it again to convert one rat, and waiting again was
tedious and annoying which I agree with.
This method improves the quality of life by separating these two actions
but _also_ as a side effect reduces a regal rat's ability to secretly
stockpile 50 rats in a hidden maintenance room because most disposal
bins are in slightly more visible areas, they'll actually need to go and
make a mess somewhere someone can see them.
## Changelog
🆑
balance: Regal Rats can now grab mice out of disposal bins, and no
longer spawn them with the Riot ability.
balance: The Riot ability no longer needs to be used once for each
slightly different kind of mob in your radius.
balance: The Regal Rat Domain ability is now toggled on and off.
balance: Several kinds of mob will immediately start following you once
tamed.
balance: Rats, hostile frogs, and evil snails can be created via gold
slime reaction.
/🆑
## About The Pull Request
Since #90505 added another entry to it the Regal Rat Riot ability, which
turns maintenance creatures into versions loyal to the rat, has become
sort of unmanageable (and to be honest it was a bit gross to start
with).
Instead of having a big if/else list (which was making the same range
check multiple times...) that sets stats on a bunch of mobs, I delegated
it to the mobs themselves and instead of changing some stats of the
existing mobs we just turn them into a new mob which can be spawned or
placed separately by mappers or admins if they want.
Other stuff I changed:
Riot (the ability which transforms mobs into minions) no longer spawns a
mouse if it fails to find anything. Instead you have a chance to fish
mice out of disposals bins while digging out trash and items.
Domain is now a toggle which activates itself every 6 seconds rather
than a button you manually click every 6 seconds.
Riot makes a visual effect when used.
Rare Pepe randomisation is done via a random spawner instead of the mob
modifying a bunch of its own properties in Initialise.
A bunch of mobs now automatically follow you after being tamed. I wrote
this assuming I was going to add it to the rioted mobs but then didn't
end up doing that because you might want them to immediately attack
someone.
My rule of thumb is that if I think you'd want the mob to attack someone
the moment it is befriended I didn't add this and if you wouldn't I did.
I changed some of the regal rat minion names, and some of them can now
spawn from gold slime which couldn't before.
## Why It's Good For The Game
This proc sucked and now it's nicer.
As for the other changes;
- A tamed mob immediately following you is nice feedback and saves you a
click as it's likely to be your first action. Also removes some admin
panel shitcode I added.
- I changed Domain to a toggle because you generally want to use it on
cooldown and someone suggested it on this PR and it sounded like a good
idea.
- I saw someone in Discord complaining that the previous flow of
recruiting rats by hitting Riot with nothing around to summon one,
waiting, hitting it again to convert one rat, and waiting again was
tedious and annoying which I agree with.
This method improves the quality of life by separating these two actions
but _also_ as a side effect reduces a regal rat's ability to secretly
stockpile 50 rats in a hidden maintenance room because most disposal
bins are in slightly more visible areas, they'll actually need to go and
make a mess somewhere someone can see them.
## Changelog
🆑
balance: Regal Rats can now grab mice out of disposal bins, and no
longer spawn them with the Riot ability.
balance: The Riot ability no longer needs to be used once for each
slightly different kind of mob in your radius.
balance: The Regal Rat Domain ability is now toggled on and off.
balance: Several kinds of mob will immediately start following you once
tamed.
balance: Rats, hostile frogs, and evil snails can be created via gold
slime reaction.
/🆑
## About The Pull Request
Melbert asked me to make this and I thought it'd be relatively easy and
plausibly useful so I did.
This PR adds a feature to the VV menu for mobs which allows you to apply
and configure an AI controller from a list of templates.
It's not as versatile as coding one would be, but it should be able to
accomodate a lot of generic scenarios.
Some examples of basic stuff you can set it up to do:
- Give Ian a machine gun he will fire at nearby people while staying
within a specified min/max range.
- Have Poly fire brimstone beams on cooldown at whoever is nearby
(although she won't bother trying to line up cardinally).
- Assign a gorilla to be someone's personal bodyguard which will follow
them around and attack anyone who hurts them.
I have also made an executive decision to remove the restriction that
basic ai controllers can only be placed on basic mobs.
We've removed _most_ non-basic simple mobs from the game, and also have
more recently updated most AI behaviours to work agnostically of whether
they are assigned to a basic mob or not... which means that they'll
largely work on carbons.
Coincidentally, this feature makes sure to ask if you want an AI
controller to remain active on a mob which already has a client.
Assigning an active AI controller to a live player which forces their
character to automatically attempt to run away from whoever the last
person to attack them was is ~~not recommended behaviour because it's
largely untested~~ highly recommended behaviour because I think it's
very funny (makes it very hard to play though).
I'm gonna do another PR some time which cleans up `random_speech` so
it's configurable and then let you slap that on whoever as well.
## Why It's Good For The Game
Enables a greater level of admin abuse.
## Changelog
🆑
admin: Added easier tooling for admins to add or change the AI
controllers on mobs
/🆑
## About The Pull Request
Melbert asked me to make this and I thought it'd be relatively easy and
plausibly useful so I did.
This PR adds a feature to the VV menu for mobs which allows you to apply
and configure an AI controller from a list of templates.
It's not as versatile as coding one would be, but it should be able to
accomodate a lot of generic scenarios.
Some examples of basic stuff you can set it up to do:
- Give Ian a machine gun he will fire at nearby people while staying
within a specified min/max range.
- Have Poly fire brimstone beams on cooldown at whoever is nearby
(although she won't bother trying to line up cardinally).
- Assign a gorilla to be someone's personal bodyguard which will follow
them around and attack anyone who hurts them.
I have also made an executive decision to remove the restriction that
basic ai controllers can only be placed on basic mobs.
We've removed _most_ non-basic simple mobs from the game, and also have
more recently updated most AI behaviours to work agnostically of whether
they are assigned to a basic mob or not... which means that they'll
largely work on carbons.
Coincidentally, this feature makes sure to ask if you want an AI
controller to remain active on a mob which already has a client.
Assigning an active AI controller to a live player which forces their
character to automatically attempt to run away from whoever the last
person to attack them was is ~~not recommended behaviour because it's
largely untested~~ highly recommended behaviour because I think it's
very funny (makes it very hard to play though).
I'm gonna do another PR some time which cleans up `random_speech` so
it's configurable and then let you slap that on whoever as well.
## Why It's Good For The Game
Enables a greater level of admin abuse.
## Changelog
🆑
admin: Added easier tooling for admins to add or change the AI
controllers on mobs
/🆑
## About The Pull Request
Commit messages should be descriptive of all changes.
The "incorrect `\The` macro capitalization" was intentional when it was
added, but as far as I know TG says "the supermatter" rather than "The
Supermatter," so it's incorrect now.
This is completely untested. I don't even know how you'd go about
testing this, it's just a fuckton of strings.
Someday I want to extract them and run NLP on it to catch grammar
problems...
## Why It's Good For The Game
Basic grammar pass for name strings. Should make `\the` work better and
avoid cases like `the John Smith`.
## About The Pull Request
this prevents corgi pop, as well as some other animals like cats, from
skyrocketing. there were some measures against this in the ai behavior
code, but they werent working properly.
## Why It's Good For The Game
fixes corgi pop skyrocketing, for the sake of performance
## Changelog
🆑
fix: corgi's population will no longer exponentially grow
/🆑
## About The Pull Request
there was no real benefit of using signals over proc overrides for many
of these cases.
## Why It's Good For The Game
registering signals on self when we can just override the proc is
un-necessary, im responsible for most of these so im just confronting
the sins of my past
## Changelog
🆑
/🆑
## About The Pull Request
``held_items`` can contain nulls and typecaches don't check if the
passed var is valid, so it just runtimed and never worked if at least
one hand was empty
## Changelog
🆑
fix: Fixed cats not begging people for food
/🆑
## About The Pull Request
- pet bonus element now works by getting an emote fed into it.
- all pets who had pet bonus emotes now have it as a proper emote they
can use if controlled by a player.
## Why It's Good For The Game
- standardises pet bonus so it's easier to give more behaviors to
petting, like sounds :3
- allows basic mobs controlled by players to use the emote at will,
which will allow them to react to situations more with emotes.
## Changelog
🆑 grungussuss
add: a lot of basic mobs and pets got new emotes
refactor: emotes triggered by petting pets work differently now, please
report any oddities with these behaviors.
sound: new emotes for basic mobs got sounds
/🆑
## About The Pull Request
Adds a new neutral station trait where people are able to bring their
personal pets to show off to the rest of the crew (or to donate to the
chef). Before joining, players will be able to customize their pets
https://github.com/user-attachments/assets/5a5cda18-e551-4f87-b649-67a6940ffc6a
u can set their name, gender, pet carrier color, and teach them give
them a unique dance sequence trick. if players dont wish to opt in, they
also have the choice not to
## Why It's Good For The Game
adds a new station trait which people can RP around, whether its by
competitively comparing pets, or resolving conflicts around pets being
killed/kidnapped. Ive also GAGsified pet carriers, so people can now
have the option to recolor those too
## Changelog
🆑
add: adds a new station trait, "bring your pet to work" day
/🆑
## About The Pull Request
Fixes alternate meow/purr from being restricted after an upstream
mirror.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>
## Changelog
🆑 LT3
fix: Alternate meow and purr emotes work again
/🆑
## About The Pull Request
so turns out `/datum/emote/living/basic/pet/cat/meow` doesn't work the
way I thought
## Changelog
🆑 grungussuss
fix: fixed all mobs being able to meow
/🆑
# Conflicts:
# code/modules/mob/living/basic/pets/cat/cat.dm
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.
This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).
And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.
## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.
Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.
Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

## Changelog
🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
## About The Pull Request
MEOW MEOW MEOW
Fixes meow and purr after TG added pet emotes. Also fixes a bunch of
third person keys used incorrectly.
<!-- Please make sure to actually test your PRs. If you have not tested
your PR mention it. -->
## Why It's Good For The Game
MEOW
## Proof Of Testing
https://github.com/user-attachments/assets/313f0141-56fd-43e1-9133-44c462b6c05f
## Changelog
🆑 LT3
fix: Fixed meow and purr emotes playing the pet line instead of the
emote line
/🆑
## About The Pull Request
there was no real benefit of using signals over proc overrides for many
of these cases.
## Why It's Good For The Game
registering signals on self when we can just override the proc is
un-necessary, im responsible for most of these so im just confronting
the sins of my past
## Changelog
🆑
/🆑
## About The Pull Request
- pet bonus element now works by getting an emote fed into it.
- all pets who had pet bonus emotes now have it as a proper emote they
can use if controlled by a player.
## Why It's Good For The Game
- standardises pet bonus so it's easier to give more behaviors to
petting, like sounds :3
- allows basic mobs controlled by players to use the emote at will,
which will allow them to react to situations more with emotes.
## Changelog
🆑 grungussuss
add: a lot of basic mobs and pets got new emotes
refactor: emotes triggered by petting pets work differently now, please
report any oddities with these behaviors.
sound: new emotes for basic mobs got sounds
/🆑
## About The Pull Request
Adds a new neutral station trait where people are able to bring their
personal pets to show off to the rest of the crew (or to donate to the
chef). Before joining, players will be able to customize their pets
https://github.com/user-attachments/assets/5a5cda18-e551-4f87-b649-67a6940ffc6a
u can set their name, gender, pet carrier color, and teach them give
them a unique dance sequence trick. if players dont wish to opt in, they
also have the choice not to
## Why It's Good For The Game
adds a new station trait which people can RP around, whether its by
competitively comparing pets, or resolving conflicts around pets being
killed/kidnapped. Ive also GAGsified pet carriers, so people can now
have the option to recolor those too
## Changelog
🆑
add: adds a new station trait, "bring your pet to work" day
/🆑
## About The Pull Request
so turns out `/datum/emote/living/basic/pet/cat/meow` doesn't work the
way I thought
## Changelog
🆑 grungussuss
fix: fixed all mobs being able to meow
/🆑
## About The Pull Request
refactors all behaviors to work through clicking. also removes some now
redundant behaviors. in the future ill try to generalize more of these
behaviors
## Why It's Good For The Game
makes AI controllers work through clicks which may help with swing
combat implementation
## Changelog
🆑
refactor: basic mob AI interactions has been refactored. please report
any bugs
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
<details>
- renamed ai folder to announcer
-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer
- separated the ambience folder into ambience and instrumental
-- ambience --
- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it
-- instrumental --
- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)
-- items --
- moved secdeath to hailer
- moved surgery to handling
-- effects --
- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects
-- vehicles --
- moved mecha into vehicles
created mobs folder
-- mobs --
- moved creatures folder into mobs
- moved voice into mobs
renamed creatures to non-humanoids
renamed voice to humanoids
-- non-humanoids--
created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg
-- humanoids --
-- misc --
moved ghostwhisper to misc
moved insane_low_laugh to misc
I give up trying to document this.
</details>
- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc
- [X] mobs
- [X] runtime
- [X] vehicles
- [ ] attributions
## Why It's Good For The Game
This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.
## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
## About The Pull Request
refactors pet behaviors, such as collars and pet cultists into elements.
also this is a first step to completely removing the pet subtype
## Why It's Good For The Game
this means itll be alot easier for coders to make their tameable mobs
able to wear pet collars without having to make them of the pet subtype,
which i also plan to do
## Changelog
🆑
refactor: refactors pet collars and cultist pets into elements
/🆑
## About The Pull Request
Closes#82746
PR #77569 replaced the clone damage inflicted by slimes with a lingering
damage over time effect which can be removed with water.
This is all well and good for humans who can spray themselves with fire
extinguishers, showers, or sinks... but most other mobs are not actually
capable of opearating any form of equipment which can make them wet.
This PR allows you to click on the debuff icon to shake the slime off
slowly over time (15 seconds to fully remove the debuff).
This is slower than the recovery time when wet.
Dogs, Cats, and by extension, Felinids are better at removing slime
because of their self-cleaning prowess (they're always licking weird
stuff off themselves). This is rarely helpful if you're not a Felinid,
because almost all cats and dogs have so little health that they will
hit the minimum health threshold and lose the debuff anyway by the time
they would be done.
In the very niche circumstance that a sentient wolf is attacked by a
slime they will appreciate this bonus.
## Why It's Good For The Game
This was a replacement for slimes inflicting clone damage (I am not sure
this even did anything for most simple mobs?) but essentially turned
slimes into an automatic death sentence for most forms of mob without
hands.
Technically the slime debuff cannot kill you and stops if you are under
10 HP, but this is small consolation for most of these mobs which cannot
heal themselves either.
You are still probably going to take between 30-60 damage during the 15
seconds of removing slime from your body.
## Changelog
🆑
balance: Corrosive slime left behind after a slime fails to eat you can
be scraped off with your hands, or shaken off in some other way, by
clicking on the debuff. This is slower and less effective than washing
it off using water.
/🆑
## About The Pull Request
cultists can now convert pets on their side. when you convert a pet, it
will become much more dangerous and obedient to you, it will also gain a
new dangerous AI. cultist pets will look for fellow dead cultists, and
revive them by dragging them to nearby revival runes and activating it.
if there is no revival runes around them then they will create their own
and drag u to it. u can give them commands to follow, attack, or to
create revival runes. they will also go around to crit non cultists so
cultists can convert them

they will also now feed on organs and blood for healing
## Why It's Good For The Game
adds a extra layer to cult, u can now command non-sentient pets to aid
you
## Changelog
🆑
add: cultists can now convert pets to their side
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Alternative title: "Resolve Jerry Tramstation's impotence."
While cats had all the other requirements for breeding, the ai subtree
for it returns early as no `BB_BABIES_PARTNER_TYPES` had been set for
the cat ai and thus it would never actually try to breed.
This pr just adds a `BB_BABIES_PARTNER_TYPES` value to
`code/modules/mob/living/basic/pets/cat/cat_ai.dm`, so they can actually
have kittens again.
## Why It's Good For The Game
Fixes cat breeding bug.
And c'mooooon, look at theeeeem:

## Changelog
🆑
fix: Jerry Tramstation can get laid again! (Fixed cat breeding.)
/🆑
## About The Pull Request
### Alternative title: "Remove kitten omniscience."
>If you were to ever have the hubris of entering a kitten's line of
sight while holding a food they like, like a dead mouse, they would
start pointing and meowing at you. It's their food, after all. You
should give it to them.
However, if you were to drop the item, they would continue pointing.
If you were to leave the area, they would continue pointing.
Even if you were to run, to hide, to break down and cry.
They would continue pointing. Meowing
Forever.
And Ever.
You can't run. You can't hide. You can't fool them.
That ever sweet scent stays with you, lingering. It marks you.
Wherever you are, whenever you are, the wretched beasts will know.
Even in death your corpse will be theirs to torment.
For you, oh marked one, this is now a fact of life.
_And you better bring your masters their food._
Putting aside how funny the kitten-based triangulation device is, this
feels like an oversight.
`/.../beacon_for_food/finish_action(...)` even tries to clear the
begging target from the blackboard, but
`/.../beacon_for_food/perform(...)` never actually passes in the key.
## Why It's Good For The Game
Kittens no longer beg at you forever wherever you are, even after
dropping the food they were begging for.

Like forever, wherever.


## Changelog
🆑
fix: Removed kitten omniscience. (They stop pointing at you now.)
/🆑
## About The Pull Request
When cats were turned into basic mobs it seems a few things were lost in
translation, being footsteps and cytology cell swabbing. All this pr
does is basically re-add the lines that did such, though _slightly
barely_ differently due to now being basic pets.
## Why It's Good For The Game
Lets you get feliform cells again. Also cats not having footstep sounds
feels eerie.
## Changelog
🆑
fix: Cats can be swabbed for feliform cells again.
sound: Cats have had their mastery of silent walking revoked, and have
their pitter-pattering footsteps back again.
/🆑
## About The Pull Request
Fixes#80566
Fixes the wrong arguments being passed to
`COMSIG_LIVING_EARLY_UNARMED_ATTACK`.
It now properly receives the proximity flag.
Changes clicking with handcuffs to no longer always assume no proximity.
Replaces some checks for hands blocked to some checks for
`can_unarmed_attack` (which, currently, JUST checks for hands blocked,
but this is good for future reasons, just in case)
## Changelog
🆑 Melbert
fix: Strong arm implant users can shove more correctly.
/🆑
## About The Pull Request
Consider this a continuation of
https://github.com/tgstation/tgstation/pull/80202

~~It seems I missed a few.~~
Edit: Modified per request to handle this more broadly. If a pawn gets
`qdel`'d, the ai controller should be set to off and get removed from
the list of active controllers, and all their actions should be
canceled.
Also adds some qdeleted checks to `finish_action()`, which can still run
after the pawn gets qdeleted as part of the `CancelActions()` chain.
## Why It's Good For The Game
Less spurious CI failures.
## Changelog
Nothing player facing really.
## About The Pull Request
<details><summary>A bunch of the numerous CI issues </summary>


</details>
You can view the full list of them here
https://github.com/Skyrat-SS13/Skyrat-tg/actions/runs/7148986054/job/19470671408.
What seems to be happening is, the `ai_controller` `fire()`s, and at
some point the the `pawn` var has become null from qdeletion. Many of
the `SelectBehaviors()` procs make use of that var, and then try to
access it without any safeties whatsoever.
I believe it is mainly happening because of long `do_after()`s and other
procs that sleep.
This PR just adds those safeties. I probably didn't get them all, but
this should fix the ones I have seen in CI. There may be a better
solution to cover all future cases of this but I will wait on feedback
to proceed. See below comments:
---
I don't know if you would rather this to always be checked at the
controller level instead (or in `able_to_plan()` perhaps?) but I could
do that if it's wanted. I wasn't sure if there were certain things that
depended on `SelectBehaviors()` running for cleanup so I opted against
that.
On that note, shouldn't we just be qdeleting the `ai_controller` when
the pawn gets qdeleted? Is that not already happening? And if not, is
there a reason for it? That would probably be the best way to handle
it...
## Why It's Good For The Game
I would like to stop seeing so many random CI failures, wouldn't you?
## Changelog
🆑
fix: fixes some AI runtimes that were caused by the pawn becoming null
/🆑
## About The Pull Request
- Falling down a z-level while standing up will apply the damage
directly to your legs.
- This damage has the chance of rolling wounds, so falling z-levels ->
broken legs.
- If you are lying down when you fall, the damage is spread through your
body like normal.
- Felinids who fall down a z-level while standing will always land on
their feet.
- Instead of being floored for 5 seconds / levels fallen, you will
receive a slowdown for 2 seconds / levels fallen.
- However, while they have cat reflexes, they do not have cat legs.
Landing on your feet will deal additional damage.
- For falling 1 z-level, this is ~18 damage (instead of ~12).
- For 2 z-levels, this is ~50 damage (instead of ~32).
- Cats (basic mobs) are capable of falling down z-levels without
sustaining damage.

## Why It's Good For The Game
Add some more depth to falling down. (No pun intended)
Rather than dropping down a level and walking it off after getting up,
you might dislocate your leg.
Also adds some more species interactions. Felines might be able to give
people the slip easier when dropping down into the undertram, thanks to
their cat-ness.
## Changelog
🆑 Melbert
add: Falling down a z-level while standing now damages your legs rather
than your entire body. This also means falling down multiple z-s may
rarely break your legs.
add: Felinids now land on their feet if they fall down a z-level while
standing. This replaces the knockdown with a short slowdown, and also
has the trade-off of causing more leg damage.
add: Cats can now fall z-levels without sustaining damage.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
I fucked up and made the cats always do 15 damage, should be doing
between 7 and 15 per hit.
## Why It's Good For The Game
Bug feex
## Changelog
🆑 Vekter
fix: Fixed damage ranging on feral cats
/🆑
## About The Pull Request
Feral Cats are just a hostile variant of cats that will fuck you up if
they see you. They are added solely for the sake of feral cat grenades -
a new, interesting, and fuzzy way to get out of a jam or just wreak
havoc around you. Each one costs 5 TC and spawns 5 really pissed off
cats to chase down assistants in the hallway.
They don't currently ignore traitors or the person who threw them - I
haven't worked out how to do that with our faction system (Hippie gave
them the syndicate faction but traitors don't get that on our codebase).
If anyone wants to contribute or help me suss that out it'll be cool,
otherwise just don't be around if there's nobody else for them to maul.
## Why It's Good For The Game
They're funny.
## Changelog
🆑 Vekter
add: Added a new hostile variant of cats, "feral cats".
add: Added a new traitor item, "feral cat grenades". For 5 TC, you too
can throw a grenade at someone and make five cats maul them to death.
/🆑