## About The Pull Request
The AI I coded for spiders deciding where to make webs when they aren't
otherwise occupied would do so by finding the _closest_ valid tile,
which seemed like a good idea at the time. The problem with that is that
the "closest" algorithm we use has a predictable search pattern which
meant that spiders would always predictably make a diagonal line of webs
pointing South West, which looked very silly.
I've rewritten how they pick targets to introduce some randomness, which
causes them to properly spread out and make a nicer-looking structure:
which serves purely to annoy spacemen who need to pass through this
area.

I'll be honest I mostly did this while bored waiting for other PRs which
I require for my other branch to get merged.
## Why It's Good For The Game
This probably only annoyed me to be quite honest and if you left one
alone for long enough it would fill enough space that you couldn't tell
anyway, but it does look nicer now.
## Changelog
🆑
add: AI-controlled spiders will make more web-shaped webs.
/🆑
## About The Pull Request
Title.
## Why It's Good For The Game
Accidental coder speak.
## Changelog
🆑 distributivgesetz
spellcheck: Fixed some underscores in spiderling names.
/🆑
## About The Pull Request
i maked the mushrom from the simple monster to a basic monster so he is
dont a simple anymore but now he is a basic.i followe the instrucions in
the guide learn-ai.md to maked this pr. i also give the mushrom a extra
feture he will go and hunt food mushroms on the floor to ate them and
when he ate them he will heal small his hp
## Why It's Good For The Game
he is now a basic monster so he is not simple anymore. it is good
because he is a more advance ai and he will stil go and do the same stuf
he did when he is simple but he is now a basic
## Changelog
🆑
refactor: Mushrooms have been refactors, please report any
bugs/unintended behavior
add: the mushroom basic mob can eat the mushroom plant to heal itself
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Mobs would never emote or make sounds upon death because they set
themselves to "dead" before trying to run the emote and the emote can't
run while you are dead.
Also basic mobs didn't have the "it's dead" examine text, and should.
## Why It's Good For The Game
It's good for mobs to tell you when they have died.
Multiple basic mobs were implemented with this feature and apparently
never tested? Maybe we just broke it recently.
## Changelog
🆑
fix: Mobs can once again emote (with sound) when they die.
fix: Basic mobs will tell you whether they are alive if you examine
them.
/🆑
## About The Pull Request
Fixes#76484
Then I noticed some weird stuff which slipped through the PR and poked
at that too.
- Spiderlings and Spiders once more have names ending in (###)
- Removed an unused property on Spiderlings.
- Rewrote the descriptions for a bunch of web-abilities and web-objects
to be clearer and have better capitalisation.
- Refactored the "Web Carcass" ability to not extend from "lay web" as
it didn't need to perform most of that behaviour.
- Also I renamed it and made the description give you a hint about why
you would want to instantly spawn a statue.
- The web effigy now despawns at the same rate as the ability cools down
so you're not dumping spider statues all over the place.
- I made spiderlings move at about the same speed as humans except if
they're on webs in which case they're still pretty fast.
To be honest I am not certain an instant statue spawning button is great
to begin with and I didn't even know it was added to the game but I am
not interested in messing much with the balance for now.
This made me look at spiderlings enough that I'm going to try and make a
new sprite for them that isn't awful.
## Why It's Good For The Game
Lets you differentiate individual spiders a little bit.
Makes usage of abilities clearer.
## Changelog
🆑
balance: Guard spider web statues despawn as the ability comes back off
cooldown.
balance: Spiderlings now only move at light speed if they're on webs,
stay safe little guys.
fix: Spiders once again have random numbers after their names.
/🆑
## About The Pull Request
I hate looking at spiderlings. Mostly because they're an extremely fast
mob with no directional sprites or animations, so they appear to be a
rapid floating overlay.
I made some new ones. I don't know if they're objectively better but _I_
like them more.
Before:

After:

Unlike the old sprites they also have directional states and movement
animations so you can scurry around really fast without being a static
image (maybe they shouldn't be so fast? A question for another PR).
I spent like 30 minutes looking at GAGs and then realised not only would
the colours be a pain in the ass but it doesn't support movement states
anyway.
Additionally I made the "dead spiderling" item inherit the dead
spiderling icon state from that spiderling instead of always being the
generic one.
Oh also I think a typo made baby tarantulas completely invisible.
## Why It's Good For The Game
I hate looking at spiderlings.
## Changelog
🆑
image: New directional sprites for spiderlings, with movement
animations.
fix: Dead spiderlings will be the same colour as they were when they
were alive.
fix: Tarantula spiderlings are no longer invisible,
/🆑
## About The Pull Request
Allows the specifically coloured mouse subtypes to work. If you want a
brown mouse then by god you are going to get one.
## Why It's Good For The Game
I will be honest that I don't know if anyone even cares about this but I
guess it restore's Tom's consistent colour, which was presumably broken.
## Changelog
🆑
fix: Tom will now always be a brown rat, instead of a random colour, as
intended.
/🆑
## About The Pull Request
- Adds Roach Infusion to the DNA infuser.
- Bonuses include:
- All infused organs are 2x as healthy, notably your heart: Meaning
getting revived after being dead a while is easier
- When being attacked from behind or while lying down, take 50% less
damage from brute attacks
- Lose disgust 32x faster, making it a non-issue
- Higher toxin purge threshold (5 units, up from 3)
- Virus resistance (same as spaceacillin)
- 100 innate bomb armor, preventing explosions from gibbing you
- 90 innate bio armor
- Immunity to appendicitis, radiation, and to being gibbed by nuclear
bombs
- Downsides include:
- Knockdowns are 3x as long
- get 3x as hungry
- Ingest reagents to your stomach 1.5x slower
- Take 2x as much damage from toxins
- Toxins over the purge threshold deal 4x more liver damage (effectively
2x, as the liver has 2x health)
- Becoming a bug
- Roaches are gross
- Adds a way to kill roaches without having them splat. If they are
sprayed with bug spray, they will simply fall over, and can be scooped
up.
https://github.com/tgstation/tgstation/assets/51863163/5078c493-9e28-42cb-ae51-45fa25b67a34
## Why It's Good For The Game
More content for the DNA infuser, which benefits greatly from variety.
While initially it may seem like a lot of bonuses, a lot of them are
very niche, with the exception being the brute resilience which is the
big "actually useful" bonus you gain.
The infusion is intended to be given to Engineers, offering innate
Radiation immunity to allow them to work on the Supermatter without
needing a rad suit. Likewise, if the work goes south and the Supermatter
goes boom, their body will more than likely survive the blast.
## Changelog
🆑 Melbert
add: Adds the Roach infusion to the DNA infuser. Do you want to survive
a nuclear apocalypse? Visit genetics today.
add: Adds a way to kill Roaches without splatting them. Visit botany for
a spray bottle of pestkiller.
qol: Infuser book is more book-like
fix: DNA infuser correctly gives on-success feedback messages
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>

## About The Pull Request
There is a 10% chance of getting one of 3 new diseases when you eat
dirty things.
Things become dirty when left on the floor for [more than 5
seconds](https://en.wikipedia.org/wiki/Five-second_rule).
But you can wash (with any method you know from spraying water to
cleaning with soap) or cook them later to avoid this.

Packaged, bowled, canned food (any food that spawns package as trash
afterwards) is protected from this effect.
Makes crafted food spawn on nearby tables when the hands are full.
Except the one behind you.

#### New diseases:
40% chance:

40% chance (Vomiting is of special type that does not stun):

20% chance:

## Why It's Good For The Game
Things that are left on the floor for too long intentionally are trash
that should be disposed by janitor. If you make a meal or prepare a
medication, it makes sense that you should keep your product sanitized.
Things that are dropped unintentionally are supposed to be picked up
quickly. "Oops I dropped this pie, need to pick it up quickly before the
germs spread". 5 seconds are enough for this. If you didn't manage you
will be like "Oh dammit, now I need to wash this pie in a sink".
Now players will consider to not just throw items meant for eating onto
the floor neglecting the fact that it looks odd. If they still ignore
it, people who consume the items will receive a harmless but annoying
disease.
In general this PR aims to force some IC gameplay onto Medics, Chefs and
Botanists so that they care a bit more about things they make for other
players.
The items have a warning message saying that they are dirty and
dangerous, so the consumers have a way to detect dirty items and an
option to wash them with soap/rag/sink/shower/fire extinguisher to
remove the harmful part from the edible item.
So to avoid this, players just need to examine an item before eating it.
Botanists can spray a pile of fruits from a hose for the same effect,
and washed items that stay on floor dont regain germs until moved to
another tile.
Food that converts into another item during cooking (like meat slab
turning into steak) or crafting, will not retain the infection. This
kinda simulates the sanitizing during cooking.
Medics can use elevated structures (e.g. conveyor belt) to avoid getting
their pills dirty during creation in plumbing. Or they can wash the
pills they want to distribute in the shower before packaging them into
pill bottles or a bag.
## Changelog
🆑
add: Food and pills have a 10% chance to infect with one of three new
diseases on consumption when left for more than 5 seconds on the floor.
You can wash it to avoid disease. ChemMaster and Pill Press are added to
the list of elevated structures (Considered as tables for pills). Made
harvest spawn on top of hydrotrays to stay protected from germs.
add: Added three new advanced diseases: Gastritium, Carpellosis, Nebula
Nausea with static cures obtained by digesting dirty food.
fix: Food no longer decomposes on Hydrotrays, Grilles, Bonfires and all
dense kitchen machinery
code: Decomposition now uses `germ_sensitive` component and follows 5
second rule too.
qol: Crafted food items spawns on nearby tables (except the one behind
you) instead of dropping on floor when hands are full.
/🆑
## About The Pull Request
Fixes changelings not actually being put into their headslug
Fixes headslugs not putting their eggs into dead bodies
lowers the time that the headslug actually spawns to a second after a
changeling's body explodes
## Why It's Good For The Game
Bug fixes are good (I died and am mad), last resort is one of the
changeling's cooler abilities
Also the headslug spawning 3 seconds after the changeling exploded
looked terrible, if this was high for a reason let me know and I can
change it back
## Changelog
🆑 Seven
fix: Fixes changelings not being put into their headslug when using last
resort
fix: Fixes changeling headslugs not putting their eggs into dead bodies
/🆑
## Why It's Good For The Game
johnfulpwillard previously edited this to 2.5 seconds because their
delay of .2 seconds was ludicrously low
however at 2.5 seconds they're basically not a threat and will barely
shoot
now they fire every second, which i think is a happy medium between
'insanely slow' and 'insanely fast', so that they are still sizeably
deadly, but not at _nearly the slow firerate of the syndie shotgunner_
with none of the power
## Changelog
🆑
balance: Syndicate simplemob fire-rate raised to one shot per second.
/🆑
## About The Pull Request
This PR introduces a signal sent to the target when a lazarus injector
is being used on them, hence read the title.
EDIT: I've forgotten to add that Tom no longer counts toward the mice
population cap now, being unique.
## Why It's Good For The Game
Being items rather than simple/basic mobs, dead mice (without a mind
datum), bees and fishes cannot be revived by the lazarus injector. While
I agree that spending one for this may be an egregious waste of mining
points, it's still fleshing out the feature a bit.
## Changelog
🆑
add: You can now revive dead fishes, bees and (mindless) mice with a
lazarus injector.
balance: Tom, the mouse, no longer counts toward the mice population
cap.
/🆑
Weakens stickman summoned from the summon stickman spell.
Its very toxic to play against it only encourages spamming stickmen who
die from 4 laser shots(even after the laser gun buff) This will lower
them to be either 1 hittable or 2 hittable depending what weapon you
have available as exchange of how fast they can be summoned.
Most people who do paper wizard tend to cheese it one or the other way
either trough atmos or having self revives as for example a changeling.
🆑 Improvedname
balance: Weakens summoned stickmen to be 1 or 2 hit
/🆑
## About The Pull Request
Targeting datums will target non-living movables which have livings
inside, such as mechas.
So this casting to living as a bad assumption.
## Changelog
🆑 Melbert
fix: Fix runtimes from Bileworms targeting mechas (or other objects
people are hiding in)
/🆑
## About The Pull Request
The axolotl sprites were based on the lizard sprites so now the axolotl
inhands and onheads will fuel the lizard equivalents to complete the
circle of life.
**Lizard inhands and onheads:**

one of the sprites had a mistake and I didn't wanna redo the entire
picture so here's the updated sprite:

**Space lizard inhands and onheads:**

The held weight of lizards has been changed to tiny because they look
like they could fit into your pocket. This value wasn't specified before
and it seems to default to normal weight, which seems a bit much for a
creature that's about the same size as a mouse.
## Why It's Good For The Game
More cute little animals to hold on your hands. And they can fit into
your pockets now too!
## Changelog
🆑
image: added lizard inhand- and onhead sprites
image: added space lizard inhand- and onhead sprites
fix: changed held weight class of lizards from normal to tiny
/🆑
## About The Pull Request
https://github.com/tgstation/tgstation/assets/7501474/a2d83ce8-eba1-42d9-a1f8-9d73f7c40b21
Adds shuttle events! Stuff can now start to happen outside the shuttle,
either benign or spicy (but usually just fun to watch)!
## Why It's Good For The Game
The shuttle escape sequence is an important part of the game, uniting
about every player surviving player. Recently, #71906 has made the
escape sequence more forgiving as well as more interesting by
conditionally doubling the playing field. The area outside the shuttle
is still mostly empty though, except for the few people being spaced,
daredevils and the occasional epic space fight.
This PR adds adds some space events to spice up the outside of the
shuttle! This both gives people something too look at, making the escape
sequence feel less static and more lively, as well as give people a
reason to go outside and get the full experience of ~being decapitated
by a meteor~ swimming with the fishes!
<details>
<summary>Shuttle Events</summary>
**Friendly carp swarm**
Spawns a group of carp that flies past the shuttle, completely friendly
unless provoked.
**Friendly meteors**
Spawns a lot of strong meteors, but they all miss the shuttle.
Completely safe as long as you don't go EVA
**Maintenance debris**
Picks random stuff from the maintenance spawn pool and throws it at the
shuttle. Completely benign, unless you get hit in the head by a toolbox.
Could get you some cool stuff though!
**Dust storm**
Spawns a bunch of dust meteors. Has a rare chance to hit the shuttle,
doing minimal damage but can damage windows and might need inflight
maintenance
**Alien queen**
One in every 250 escapes. Spawns a player controlled alien queen and a
ripley mech. RIP AND TEAR!! Really not that dangerous when you realize
the entire crew is on the shuttle and the queen is fat as fuck, but can
still be fun to throw people around a bit before being torn to shreds.
**ANGRY CARP**
Once in every 500 escapes. Spawns 12 normal carp and 3 big carps, who
may just decide to go through the shuttle or try and bust through the
window if you look at them wrong. Somewhat dangerous, you could stay
away from the windows and try to hide, or more likely shoot at them and
weld the windows
**Fake TTV**
Lol
**Italian Storm**
Once in every 2000 rounds. Throws pasta, pizza and meatballs at the
shuttle. Definitely not me going off the rails with a testing event
**Player controlled carp trio**
Once in every 100 escapes. Spawns three player controlled carp to harass
the shuttle. May rarely be a magicarp, megacarp or chaos carp. I can't
honestly see them do anything other than be annoying for 3 seconds and
die
There are some other admin only ones: a group of passive carps going
directly through the shuttle and just being little shits, and a magic
carp swarm
</details>
Events are selected seperately, there isn't a crazy weighting system,
each just has a chance to run, and multiple could run at once. They also
don't immediately trigger, so people can get settled a bit, and to make
sure just waiting out the more dangerous ones is still a valid strategy.
## Changelog
🆑
add: Adds shuttle events! If shuttle escapes weren't exciting before
(doubtful), they definitely are now! I'm joking it's mostly an
atmosphere thing.
admin: Adds an admin panel to interact with shuttle events, under the
Events tab: Change Shuttle Events
fix: Objects spawned in hyperspace will properly catch hyperspace drift
/🆑
There's a few things I'd like to do later (another PR) (honestly anyone
can do them because I suck at follow-ups), because this is too big as
is:
- Hijack triggered shuttle events
- More events (got a lot of cool suggestions, but I'm putting most of
them on hold)
- Maybe stration announcements if some more dangerous ones get added
- Structures appearing next to the escape shuttle???
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
This PR gives a small update to the patch of eden lavaland ruin, and
adds a new item that can be used as an upgrade to the plasma mod core.
The idea around this item is that it's a flower that has absorbed all
the plasma and bad-vibes in the small area around the ruin, leaving an
area full of plants, and a flower full of energy. This flower can be
taken from the oasis and turned into a functional MOD core using some
wires. As a MOD core, it is the same as the plasma mod core, but has a
higher energy capacity, being equivalent to a super power cell. It also
gives you a cool pollen effect, and spawns butterflies around you while
your suit is active. These butterflies disappear when they get too far
away, or if the suit deactivates. They also don't leave corpses, so they
shouldn't cause too much clutter.
## About The Pull Request
This changes the Spaceman simplemobs into basic mobs.
They really didn't do anything besides stand around and retaliate, so no
new AI datums had to be added.
## Why It's Good For The Game
Scratch it from da list.
## Changelog
🆑
code: Spaceman simple mobs have been converted to basic mobs.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
<!-- 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
Short and simple, just converts the changeling's headslug (that ability
they get that lets them infest another body) into a basic mob. Also
touches up some of the code, as well as split up the code such that the
headslug resides in the basic mobs folder, while the eggs are in the
changeling's antagonist folder, rather than one megafile for both.
No AI because this is 100% a player-controlled mob, it never exists in
any other context. No UpdatePaths for the same reason as well, this
shouldn't (and really doesn't) exist on maps because its sole purpose is
player-driven.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Knocks another one off the list, potentially clears up some janky code
with how this operated and just beautifies it overall. I also
standardized the name "headslug" in any applicable context because the
name "headcrab" is quite confusing. Some other code still refers to it
as headcrab/crab, but that's whatever, at least the paths are a-okay
now.
Also opens the door in case someone really wants these to be AI-powered?
That sounds really weird and I don't really support that idea, but it's
indeed possible.

Grow and regrow, the life cycle.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
refactor: Headslugs (the really small slug-like changeling form) are now
basic mobs. They only wander around aimlessly now instead of attacking
corpses all the time, and examining will let you know what type. Should
probably still smash them before they suddenly gain sapience...
/🆑
<!-- 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. -->
## About The Pull Request
Hooks the stasis closet thingamajing into `COMSIG_LIVING_DEATH` instead
of checking the animal's stat on `process()`, which makes possessed
animals properly dump the stasis closet's contents upon death or gibbing
(which is death but cooler).
yeah uh this method is hilarious but it does protect the user's body
quite reliably at least lol
## Why It's Good For The Game
Fixes#75829
also probably makes cockroach death saner in some unreported way, this
`. = ..()` vs `..()` is above my non-existent paygrade but it keeps
popping up from time to time
## Changelog
🆑
fix: gibbing colossus possessor crystal possessed animals will no longer
stick the user's body and their stuff into the shadow realm. the animals
will properly drop your corpse when killed or gibbed
/🆑
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
## About The Pull Request
On the tin. No new fancy AI wheels or anything, just a simple port.
## Why It's Good For The Game
Knocks another one off the list, just really light stuff. They're a bit
smarter now too, I think the intention was them for them to be pet-like
as well (according to the code). Should be really rather easy to give
them the pet-like behaviors and elements if someone really wants to in
the future, just sorta paving the way for more work to be done to make
mobs more intricate/interesting.
## Changelog
🆑
refactor: Giant ants are now more capable of distinguishing friend and
foe.
/🆑
## About The Pull Request
On the tin. They have pretty much nothing in common with chickens, so no
subtyping. They are in the same folder to keep that whole thing tidy,
though.
Also includes fixes to `growth_and_differentiation` element that I made
for spiderlings, since some stuff was yorked without me realizing. It
pretty much worked flawlessly for these chicks otherwise though. It all
works fine now.
## Why It's Good For The Game
More verbose naming scheme (instead of "holo", we get "permanent"
chicks), smarter AI for chicks, knocks them off the list, etc. etc.
One thing that I wanted to do was to have chicks recognize their mother
(if they had one), but that would be way out of scope for this simple
port PR. I'll dwell on adding something cool for that in the future.
## Changelog
🆑
refactor: Chicks are now a bit smarter, be careful not to squish them!
/🆑
Let me know if the whole "COMPONENT_KILL" thing is cringe, I couldn't
figure out a better way to do it without abusing `GetComponent()` to
`qdel()` it that way.
## About The Pull Request
This PR is a re-pr of ##70522 , with some tweaks:
Notably:
- Wavespeak is not a say override, but instead uses a mindlink. Meaning
carp and space dragons can still talk verbally, but they can also use
telepathy to talk to all carp and the dragon.
- I would refactor Mind Linker a bit further to be a full datum rather
than a component but that's for another time.
- Removed the gravity aura component in favor of using the existing
forced gravity proximity monitor.
- Also fixed a bug involving that. Lol.
- Minor refactoring around the place.
- Reduced the volume on a lot of space dragon sounds.
- Edited the roundend report for Space Dragons to collate all entries
into one per player.

## Why It's Good For The Game
Space dragon still plays pretty "play lame win game" right now, the
optimal strategy for them is to find the cheesiest spot for a portal and
spam their stun / fire breath to make it unreachable.
I was a fan of the original PR so I updated it and brought it back.
## Changelog
🆑 IndieanaJones, Melbert
balance: Space Dragon can no longer choose its rift locations freely,
and instead is given 5 pre-determined locations to pick from instead
balance: Space Dragon itself has been buffed in order to support a more
confrontational playstyle, however its wing gust now requires a line of
sight to targets in order to affect them.
balance: Player Space Carp from rifts now have buffed health, but
reduced object damage values. They also gain a temporary speed boost
when hit by Space Dragon's fire breath instead of taking damage.
balance: Carp rift spawn times have been reduced, the healing AOE is now
a 3x3 instead of a 1x1, and apply normal gravity in a large radius
around them
balance: Space Dragon and rift carps now communicate on a private mind
link channel via action button similar to Raw Prophets and Slimepeople.
fix: Fixed Gravity Generator forced gravity not applying.
fix: Intern Announcer will no longer replace Space Dragon announcements.
qol: The roundend report for space dragons now collates all players who
played a carp into one entry, rather than one per carp spawned.
qol: Space Dragon sounds are much less ear piercingly loud.
/🆑
---------
Co-authored-by: IndieanaJones <mariosuperstar384@gmail.com>
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
## About The Pull Request
Adds defines for gasses and replaces uses I've found to instead use the
defines.
Can you believe I made this PR while trying to work with Xenos? This
sucks!
## Why It's Good For The Game
There's a lot of different uses of things like "o2" and "plasma", and
they are pretty inconsistent. In some places, it's "hydrogen", in others
it's "h2". In some it's "plasma", others "plasm". This unifies it all
under defines so it has a less chance of breaking in the future.
## Changelog
Nothing player-facing.
## About The Pull Request
https://www.youtube.com/watch?v=bcUuqKrnvVY <- me getting rid of every
simple animal one thing at a time
Turns lightgeists into a basic mob. There are a few key advantages into
its implementation that was previously impossible in the simple animal
framework, which is entirely possible now.
## Why It's Good For The Game
Lightgeists can actually have a bit of AI now, as a treat. They didn't
have it prior because I assume if they attacked anything, they would end
up healing it, and we didn't really have an option in the simple animal
AI to say "do not attack"... This really fixes that so they can wander
around a bit and look cute if some admin decides to spawn them in (but
the only way to get them outright is to use the anomalous crystal, which
auto-assigns a player). You don't see the AI if a player ghosts out of
the lightgeist because the lightgeist will delete itself on ghost
(previous behavior).
It also gets rid of some janky AttackingTarget() override that was
completely un-needed post-#73202.
## Changelog
Nothing really player facing.
## About The Pull Request
Whoops, forgot to add this in #75592.
## Why It's Good For The Game
Chickens were meant to bite back if you attacked them. This slipped my
mind to test for some reason.
## Changelog
🆑
fix: Chickens should now, once again, peck you in case you hit them.
/🆑
## About The Pull Request
On the tin, I keep trying to tackle the larger basic mob projects but
burn out, so just enjoy these small ones to just keep that list looking
lighter and less insurmountable.
No big complex AI either, it choppa the tail off. That's all you really
need to be honest.
## Why It's Good For The Game
The cat surgeon will be just that slightly smarter. I suppose they're
still a doctor, just simply infatuated with the thought of cat tails...

noooooo my tail!!!
## Changelog
🆑
code: Cat Surgeons are a bit more smarter about attacking threats to the
world around them on their endless pursuit for those felinid tails.
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
## About The Pull Request
Converts butterflies into basic mobs.
Also a little list organisation.
<details>
<summary>Yep, those are some butterflies alright</summary>

</details>
## Changelog
🆑
refactor: Converted butterflies to the basic mob system
add: Butterflies can now be grown in cytology
/🆑
## About The Pull Request
Removed spiderling from spawning from gold slimes.
## Why It's Good For The Game
Spiderling is not a dangerous mob, and spiders are already one of the
most spawned mobs from all the subtypes it has. I don't think they
should be in there.
## Changelog
🆑
fix: Removes spiderling from hostile gold spawns.
/🆑
Co-authored-by: san7890 <the@san7890.com>
Just another lightweight PR porting over a simple animal to the basic
mob framework with zero additional AI implementation (it's a killer
tomato- it spawns into the world to maul you. how much more intricate
does it need to be?).
This was pretty simple since they didn't have too much custom behavior,
and whatever they did have already had AI behavior. I got really burned
out the last two times I wrote intricate AI action/decision behaviors so
I'm just taking it light and doing the bare minimum.
one day our shackles will be free of the simple animal scourge. they're
also a bit more intelligent, and i daresay a bit cuter too now.
also that lizard gib animation has been sitting there for god knows how
long completely unseen, so let's actually hook it into the mob.
Basically making it so they stop other big creatures and each other from
moving
## About The Pull Request
they block each other and bigger mobs they arent meant to structure
spiderlings didn't do this for a reason
## Why It's Good For The Game
@san7890 made spiderlings from a structure to a mob great change but
they forgot a few things such as
1.Make it so spiderlings don't get tangled on webs (not fixed)
2. Make it so spiderlings speak spider and not galactic common ( fixed)
3. Make it so spiders don't have density ( This PR)
This is good for the game because creatures that are floor critters much
like roaches and mice shouldn't block full big mobs like humans other
spiders or each other (Also this is literary how it was before San just
forgot to add it)


## Changelog
🆑
fix: fixes spiderlings having density
/🆑
## About The Pull Request
Reliable web traversal is now governed by a trait instead of a type
check.
Spiderlings have that trait.
## Why It's Good For The Game
Spiderlings are spiders and shouldn't get stuck in webs.
Turning this into a trait means that we can make more things apply the
trait in future if we want, without having to expand a list of allowed
mobs.
## Changelog
🆑
fix: Spiderlings no longer get stuck in webs
/🆑
## About The Pull Request
Nerfs their firing speed from once every 0.2 seconds to once every 2.5
seconds
## Why It's Good For The Game
1. The mob that is NOT a 'burst' type mob, is firing every 0.2 seconds.
Kinda defeats the point of having them as two separate mobs, so this
aims to fix that.
2. Russian mobs. Turns out that letting them fire their strong-ass gun
every 0.2 seconds was kinda not a good idea. I had assumed making them a
Syndicate mob would be safe, and it technically is, it's just that
Syndicate mob is fucked itself.
## Changelog
🆑
balance: Default Syndicate and Russian gunners now fire every 2.5
seconds instead of every 0.2
/🆑
I forgot to make them temperature immune and only made it atmos immune
when converting them to basic mobs. WHOOPS.
This may or may not have also been killing the ghosts in the space diner
ruin this whole time.
## About The Pull Request
Inspired by #74967 and #68459 , and the fact that Tramstation regresses
very often -
Adds a unit test, `required_map_items`, which ensures that certain
typepaths which should definitely be mapped onto every map is mapped
onto every map
It can also be used to ensure that items which should not be mapped in
multiple times are not, among other things.
I included a few examples -
- Min 1, max inf of each head of staff stamps
- Min 1, max 1 departmental order consoles
- Min 1, max inf comms console
- Min 1, max 1 Pun Pun
- Min 1, max 1 Poly
- Min 1, max 1 Ian
If, in the future, a mapper decides they (for some reason) do not want a
certain previously-required item on their map, the test can be adjusted
such that it allows excluding or something, but currently it should be
for items which require conscious thought about.
#### QA: Why not make this a linter?
I attempted to make this a linter before realizing two things
1. Someone might make a spawner which spawns the items, or they might
get placed in a locker, in any case this accounts for everything on init
2. Linters run on every map, non-station maps included
So I went with a test
## Why It's Good For The Game
#50468#61013#74967
Why is it always the CMO stamp?
## Changelog
Not necessary (unless I find a map missing something, then this will be
updated)
basically ex_act's implementation on basic mobs would call parent and
then react to it's value, this is presumably to do the first check about
space vine mutations and whatever. the problem is that the `/mob/living`
implementation would itself also call parent, and that would always
return null because `/atom/proc/ex_act` doesn't have a set return value.
So, this simply would _always_ early return, with ex_act presumably
*never* working on basic mobs for at least four months now.
I decided to then change up the return values for pretty much all
implementations of `ex_act()` since there was no rhyme or reason to
returning null/FALSE/TRUE, and documenting why it's like that.
Just to make sure I wasn't breaking anything doing this (at least on
base implementations), I wrote a unit test for all of the three major
physical types in game (objs, mobs, turfs) because i am a paranoid
fuckar. we should be good to go now though.
## Why It's Good For The Game
i noticed this because placing c4's on sargeant araneus wouldn't
actually damage it whatsoever. now it actually does the stated 30
damage, but araneus has like 250 health so it doesn't actually matter in
the long run. whatever at least it does the damn 30 now.
also adds a unit test for this specific case as well as a range of other
cases to ensure this stuff doesn't silently break in this way anymore
Ladies, Gentlemen, Gamers. You're probably wondering why I've called you
all here (through the automatic reviewer request system). So, mineral
balance! Mineral balance is less a balance and more of a nervous white
dude juggling spinning plates on a high-wire on his first day. The fact
it hasn't failed after going on this long is a miracle in and of itself.
This PR does not change mineral balance. What this does is moves over
every individual cost, both in crafting recipes attached to an object
over to a define based system. We have 3 defines:
`sheet_material_amount=2000` . Stock standard mineral sheet. This being
our central mineral unit, this is used for all costs 2000+.
`half_sheet_material_amount=1000` . Same as above, but using iron rods
as our inbetween for costs of 1000-1999.
`small_material_amount=100` . This hits 1-999. This covers... a
startlingly large amount of the codebase. It's feast or famine out here
in terms of mineral costs as a result, items are either sheets upon
sheets, or some fraction of small mats.
Shout out to riot darts for being the worst material cost in the game. I
will not elaborate.
Regardless, this has no functional change, but it sets the groundwork
for making future changes to material costs much, MUCH easier, and moves
over to a single, standardized set of units to help enforce coding
standards on new items, and will bring up lots of uncomfortable balance
questions down the line.
For now though, this serves as some rough boundaries on how items costs
are related, and will make adjusting these values easier going forward.
Except for foam darts.
I did round up foam darts.
Adjusting mineral balance on the macro scale will be as simple as
changing the aforementioned mineral defines, where the alternative is a
rats nest of magic number defines. ~~No seriously, 11.25 iron for a foam
dart are you kidding me what is the POINT WHY NOT JUST MAKE IT 11~~
Items individual numbers have not been adjusted yet, but we can
standardize how the conversation can be held and actually GET SOMEWHERE
on material balance as opposed to throwing our hands up or ignoring it
for another 10 years.
## About The Pull Request
Turns out that Russian mobs are literally just Syndicate mobs, so I made
them subtypes of Syndicate basic mobs. This means we don't have to
maintain these two different mobs just to do the exact same thing.
I also removed unused subtypes of it so it's not clogging up.
Also this PR is inspired by a CI failure in [Birdshot
here](https://github.com/tgstation/tgstation/actions/runs/4841059293/jobs/8627176442?pr=75042)
## Why It's Good For The Game
I mostly explained in the About section, but this just helps future
maintaining by making these already copy-pastes of eachother, at least a
subtype instead.
## Changelog
🆑
refactor: Russian mobs are now subtypes of Syndicate basic mobs.
/🆑
If I could've made this more atomic, I would have in a heartbeat, trust
me.
## About The Pull Request
Hey there. People were mocking us for having spiderlings still be a
subtype of `/obj/structure`. I decided to take a lot of time to fix
that. A lot of behavior it was implementing was just pseudo-mob stuff,
so it was actually easier than it looked for the raw conversion. A lot
of the footwork on spider stuff in the basic framework was already done
previously by Jacquerel, so that was pretty nice.
However, there are two new things that weren't introduced in the code
that had to be put in.
A) A component to handle growth and differentiation into a mob. This may
have already existed, no clue. If it does (and it's NOT
evolutionary_leap), let me know.
B) AI Behavior to handle seeking out a vent, entering a vent, and then
exiting out of a different vent. I may have gone a bit wacky on the
code, but it certainly works as expected (spiderling goes in one vent,
exits the other). Let me know if you can think of a way it can be better
optimized, but it was deliberately written to be very failsafey in case
shit goes yonkers.
One fundamental difference between structure spiderlings and basic mob
spiderlings (beyond the AI and not just a random prob() check for
movement) is the fact that they had vent movement coded in... but we
_really_ don't need stuff like that for our intents and purposes. If the
range turns out to be too OP in the current framework, we can always
change it up a bit, but also there's a _lot_ of vents we can end up in
the station (my testing had one spiderling end up in the AI sat to get
obliterated).
## Why It's Good For The Game
Spiderlings aren't structures! They behave like a mob should! Players
can possess spiderlings! They work seamlessly with differentiating into
a giant spider! Better AI! More room for people to add into this very
under-utilized buggers!
## Changelog
🆑
refactor: Spiderlings are now basic mobs, report any complete
weirdness/deviation from known behavior. They should be a lot more
intelligent now though.
add: AI Spiderlings are super fragile, but they're also super fast,
especially when they get into a vent. Once they're in circulation, they
could end up everywhere! Maybe in the armory, maybe in a locked closet
in maintenance. Be sure to be vigilant and splat them whenever you can
to save the station from a whole lotta heartache!
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Now the stargazer does more damage to people in the area and prioritizes
mobs attacking them instead of random circuit bots 7 tiles away. It will
also slowly heal you. Makes some abilities create more carpet fields
when ascending. Increases combo times when ascending. Also makes the
Star Gazer die only when the owner dies. Star Gazer will explode when it
does die. Star Gazer has a damage aura that does heal the owner.
## Why It's Good For The Game
I have seen a lot of people complaining that the cosmic ascension isn't
good and not worth getting so I thought I would make it a little better.
## Changelog
🆑
balance: Star Gazer now explodes when it dies.
balance: Star Gazer will only die when the owner dies.
balance: Star Gazer will attack the most recent enemy that attacked him
when on autopilot.
balance: Star Gazer has an aura that slowly damages people and heals the
owner.
balance: Cosmic Ascension now buffs some spells.
/🆑
## About The Pull Request
Added the HOSTILE_SPAWN tag to rats. Otherwise, they can be spawned when
they shouldn't, like during the friendly life chemical reaction
## Why It's Good For The Game
Helps prevent accidental griefing with the friendly life reaction. I've
used the reaction to make fun pets for the station, only for a rat to
spawn and attack a crew mate.
## Changelog
🆑
add: Added hostile spawn tag to rats
/🆑
## About The Pull Request
Replaces weakref usage in AI blackboards with deleting signals
All blackboard var setting must go through setters rather than directly
## Why It's Good For The Game
This both makes it a ton easier to develop AI for, and also makes it
harder for hard deletes to sneak in, as has been seen with recent 515
prs showing hard deletes in AI blackboards
(To quantify "making it easier to develop AI", I found multiple bugs in
existing AI code due to the usage of weakrefs.)
I'm looking for `@Jacquerel` `@tralezab` 's opinions on the matter, also
maybe `@LemonInTheDark` if they're interested
## Changelog
🆑 Melbert
refactor: Mob ai refactored once again
/🆑
## About The Pull Request
deers only show up in the BEPIS but i decided that they would be easy
enough to turn into a basic mob (they were). it was so easy in fact that
i decided to dip my toes into coding AI behavior, and made them freeze
up whenever they see a vehicle. this required a lot of code in a bunch
of places that i was quite unfamiliar with before starting this project,
so do let me know if i glonked up anywhere and i can work on smoothing
it out.
## Why It's Good For The Game
one less simple animal on the list. deers staring at headlights is
pretty cool i think, neato interaction for when you do get them beyond
the joke the bepis makes
i'm also amenable to dropping the whole "deer in headlights" code if you
don't like that for w/e reason- just wanted to make them basic at the
very least
## Changelog
🆑
add: If you ever happen upon a wild deer, try not to ride your fancy
vehicles too close to it as it'll freeze up like a... you know where I'm
going with this.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
## About The Pull Request
https://user-images.githubusercontent.com/66640614/233747544-aac153b9-a100-486c-9a7a-4a436b8303b8.mov
Cows, pigs, and sheep make noise when their AI makes them speak.
~~Also House Flipper Farm DLC came out but that's incidental.~~
## Why It's Good For The Game
It's funny, also more sound effects are fun. Gives basic mob creators
more customizability.
## Changelog
🆑 Tattle
qol: basicmobs can now make sounds when their speech is triggered
qol: pigs will now make sounds and emote on their own
sound: cows, pigs, and sheep have new sound effects!
/🆑
---------
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Removes a bunch of sound files that we don't use and moves some sound
files into better locations. I'm hoping to get an archive repo for
sounds going, much like the
[map_depot](https://github.com/tgstation/map_depot) and
[SS13-sprites](https://github.com/tgstation/SS13-sprites).
EDIT: The old sound files are being moved here:
https://github.com/tgstation/SS13-sounds
Also increased the volume of the clownana rustle sound and clipped off
some dead air from shockwave_explosion
## Why It's Good For The Game
Removes a total of 1.95MB worth of unused sound files from the codebase.
## Changelog
🆑 Tattle
soundadd: increased the volume of the clownana rustle
/🆑
---------
Co-authored-by: tattle <article.disaster@gmail.com>