## 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
/🆑
Hi. I run one of the two downstreams and was working on Melberts ling
transformation PR.1
Turns out, if you have a lot of DNA features that have a lot of icons
associated with them, this unit test just shits itself with a bad icon
operation.
I spoke with Lemons over this and he helped point me in the right
direction, which lead to recaching the icons to prevent issues.
As it stands, this *probably* wouldn't happen on base /tg/ since DNA
features and their associated parts aren't a lot (compared to
elsewhere). But if/when more features gets added this should prevent any
issues.
## 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
This is something that I meant to do because it was a minor annoyance as
I was creating the tests but I never got around to it.
Because many of the failures occurred in procs it could be difficult to
pinpoint the exact line of the test where they were failing. It would
just be the line within the proc, and not the line where the proc was
called. So you'd have to sort of infer which one it was from the values
of `x` and `y` in `Expected x to be equal to y`.
Now each test failure will have a brief description and a line number
where `apply_damage()` / `verify_damage()` actually got called to make
it clearer. Like shown below.

## Why It's Good For The Game
Just a small QoL update for coders. Some typos fixed, too.
## Changelog
Nothing player facing though.
## 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
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
This is a PR I worked on last month, but had to put on hold while
dealing with some pressing issues with fishing feature, minigame and
other stuff, and because I had to atomize out some of the stuff
previously present here.
I've expanded on the fishing portal generator to do something other than
dispense guppies and goldfishes. It now has multiple settings,
unlockable by performing scanning experiments for fish types, available
from the get go, which also reward a meager amount of techweb points
upon completion. The generator can now be built too. No longer it has to
be ordered from cargo.
It can also be emagged for the syndicate setting, tho right now it only
dispenses donkfish and emulsijack, both otherwise impossible to get
outside of... exodrone adventures.
The advanced fishing rod now comes with an experiment handler component,
specific to the fish scanning experiment, that automatically scans
fished content. The node to get it now requires 2000 points and the
first fish scanning exp to be unock.
A new skillchip has been added, which adds a trait that changes the icon
of the fish shown in the minigame UI, giving some clues on what the
reward will be. The same trait is also gained by reaching the master
(penultimate) level of the fishing skill.
A new fish type has been added, with its own quirks. One of these quirks
included temporarily switching movement direction of the bait.
Currently, it can only be fished in the hyperspace and randomizer
setting of the fishing portal.
Screenshots:


## Why It's Good For The Game
The fishing portal generator is but a stale and underdeveloped prototype
of the fishing feature right now, so much I was thinking of removing it
at first. However, we also have a lot of fishes which are pretty much
unfishable, so I came up with the idea of adding new portal settings
that allow people to actually get them.
As for the skillchip and trait, it's but an extra to both the vending
machine in the library and the fishing skill itself, which has an
overall humble impact on the minigame.
## Changelog
🆑
add: Expanded the fishing portal generator. It now comes with several
portal options that can be unlocked by performing fish scanning
experiments, which also award a modest amount of techweb points.
balance: The fishing portal generator is now buildable and no longer
orderable. The board can be printed from cargo, service and science
lathes.
balance: Advanced fishing tech is no longer a BEPIS design. It now
requires the base fish scanning experiment and 2000 points to be
unlocked.
add: The advanced fishing rod now comes with an incorporated
experiscanner specific for fish scanning.
add: Added a new skillchip that may change the icon of the "fish" shown
in the minigame UI to less generic ones. Reaching master level in
fishing also does that.
qol: The experiment handler UI no longer shows unselectable experiments.
/🆑
## 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.
/🆑
## About The Pull Request
Heretic Rebalance
Researching the Main Knowledge paths that unlock Side Paths will grant
one Side Point that can be used only on those side paths. You can still
spend normal knowledge points on them if you wish.
Rune drawing time has been reduced from 30->20 seconds. Codex drawing
time has been reduced from 15->8.
Codex Cicatrix is now a roundstart knowledge, works as an amber focus
when held in-hand and opened, and has had its recipe changed to: 1 of
any non-standard pen (literally anything that isn't the base pen), any
book, and either animal hide OR a corpse, any kind.
Added support for using a list inside ritual requirements and a special
'snowflake check' rituals can utilize.
The first non-path knowledge, the Mansus Hand Mark, has had its cost
reduced from 2->1 points.
## Why It's Good For The Game
Heretic is an extremely top-heavy antagonist that is EXCEEDINGLY weak in
the early-game, free get out of jail card aside, and gets utterly
overwhelmed with options extremely quickly once hopping past the
mid-game hurdle. You're completely starved for knowledge points to the..
point that you feel like you can't blow any on side paths, even though
these are often essential as well!
Once you hop the hurdle - 40 minutes in, usually - you suddenly find
yourself blazing through path after path obtaining a ridiculous amount
of points that you don't know what to do with and unlocking spell after
spell all at once rather than slowly, meaning it becomes extremely hard
to keep focus and actually use these things - attempting to keep 5 new
spells in mind during combat will just cause you to stretch yourself
thin and die.
This PR is meant to address this by giving Heretics a lot more leeway on
the early game so they don't feel nearly as stifled as they are right
now, which will also, ideally, help them unlock singular abilities
earlier on so they can practice with them. **None of these changes are
straight buffs to combat ability, they simply relax the extremely tight
restrictions early-game heretics have.**
> Researching the Main Knowledge paths that unlock Side Paths will grant
one Side Point that can be used only on those side paths. You can still
spend normal knowledge points on them if you wish.
This idea in specific is supported by @MrMelbert - which I'm using as a
request to not instaclose this PR due to the slightly lower than neutral
GBP I have. He supports this specific bit at least and doesn't outright
disagree with me on the rest, as far as I'm aware from my last
conversation with him on the subject a while back. Besides, I have a
refactor on mirrors open!
Meta aside, this bit is meant to combat how claustrophobic early heretic
feels by allowing the guy to pick one of two side paths for free* after
unlocking that path's equivalent of Ash Jaunt, so they have *something*
to use besides their sword and stink hand at the start.
> Rune drawing time has been reduced from 30->20 seconds. Codex drawing
time has been reduced from 15->8.
The absurdly long drawing time is just extremely arduous and
frustrating. It's way too slow but just not enough to let you zone out,
and it has a ridiculously noticeable animation the whole way through
which guarantees you being found out if you're found out midway through.
It makes heretic even SLOWER early on as they need to set up one or
several bases which takes forever.
> Codex Cicatrix is now a roundstart knowledge, works as an amber focus
when held in-hand and opened, and has had its recipe changed to: 1 of
any non-standard pen (literally anything that isn't the base pen), any
book, and either animal hide OR a corpse, any kind.
Quite the buff, but I think all of these are good changes. Codex
Cicatrix being a roundstart change lets one decide - do they want to
rush the book to get multiplied influence strength, or do they want to
get all the influences ASAP? It also lets them set up bases quicker at,
again, the cost of having a blatantly evil item inside the bag.
The Codex recipe was annoyingly complicated, requiring you to run all
around the station in yet another of Heretic's many fetch quests just
for something that used to be part of the default kit, especially with
how annoying getting animal hide can be. Now it's a lot easier to
handle.
The Amber Focus bit is just as a panic option for heretics if they get
caught without one, at least they can use the book, and wielding a book
in combat is awesome.
> The first non-path knowledge, the Mansus Hand Mark, has had its cost
reduced from 2->1 points.
I don't think there ever really was a need to gate this behind two
points, it's the very first unlockable research and it needs you to get
two influences for some reason. The reasoning is probably 'heretic setup
time so they dont start at full strength', which is solid, but is
already well handled enough by their other systems and restrictions as
mentioned in the rest of the PR.
Heretics have been on a constant trend of just.. not doing anything.
Getting caught early and flopping or never managing to do things of
note. They need changes, not because They're UnderPowered And The
Competitive Balance Is Skewed, but because it's simply not that fun to
*be* a heretic with these issues, and not that fun to FIGHT a heretic
that merelay has a stink hand, a blade, two pieces of lint in their
pocket, and a dead rat.
I also think the Ritual of Knowledge should 1. not cost points, and 2.
be split across the 33% and 66% mark and give 2 points, but that's for
another PR.
## About The Pull Request
- Reworks transformation sting.
- Transformation sting is now temporary, lasting 8 minutes (number not
final) in humans.
- If used on a monkey, it lasts forever instead.
- While the target mob is dead or in stasis, the duration will not
progress, making it functionally infinite until revived and taken off
stasis, where it will resume its timer where it left off.
- Chemical cost reduced to 33
- DNA cost reduced to 2
- Removes TRAIT_NO_TRANSFORMATION_STING, instead just checks for
TRAIT_NO_DNA_COPY
- These were essentially the same traits, so I just combined the two
- Organizes some trait lists alphabetically
- Adds TRAIT_STASIS, to allow for reacting to mobs entering and exiting
stasis via COMSIGS
- Everything that checks IS_IN_STASIS now checks HAS_TRAIT TRAIT_STASIS,
which is probably more performant, so that's a bonus.
## Why It's Good For The Game
A lot of people don't like the current iteration of Transformation
Sting, me included
Right now it's only use is for a meme - you make the entire station into
felinids until you get lynched, and that's it.
It's not really a healthy ability for ling's current kit, so this pr
attempts to soft rework it to make it a bit more in line with how ling
should be acting - turning it into a source of short term confusion
between people, or using it on a body to cover your tracks.
This accomplish it two fold - One, it is now cheap enough to use twice
in rapid succession, allowing for quick on-the-spot "BE CONFUSED"
situations while you abscond. Two, as mentioned in the last paragraph,
you can poke a body of someone you murder to obfuscate the crime scene
and maybe help out in taking over someone's identity.
## Changelog
🆑 Melbert
balance: Transformation sting now lasts 8 minutes, down from permanent.
However, the effect is paused for dead and stasis mobs, making it
permanent SO LONG AS they stay dead or in stasis. The effect is also
permanent if used on a monkey.
balance: Transformation sting now costs 33 chemicals, down from 50.
balance: Transformation sting now costs 2 dna points, down from 3.
fix: Transformation sting works on monkeys again.
refactor: Refactored a bit of human randomization.
/🆑
## About The Pull Request
I remembered today that blob code is ass, especially blob spores.
There's still a lot to improve but I cleaned up _some_ of it by
converting these mobs.
Now they use a newer framework and more signal handling as compared to
circular references.
I _expect_ the behaviour here to largely be the same as it was or
similar. I haven't added anything fancy or new.
This is a reasonably big PR but at least all of the files are small?
Everything here touched every other thing enough that it didnt make
sense to split up sorry.
Other things I did in code:
- Experimented with replacing the `mob/blob` subtype with a component.
Don't know if this is genius or stupid.
- AI subtree which just walks somewhere. We've used this behaviour a lot
but never given it its own subtree.
- Blob Spores and Zombies are two different mobs now instead of being
one mob which just changes every single one of its properties.
- Made a few living defence procs call super, because the only thing
super does was send a signal and we weren't doing that for no reason.
Also added a couple extra signals for intercepts we did not have.
## Changelog
🆑
fix: Blob spores will respond to rallies more reliably (it won't runtime
every time they try and pathfind).
fix: Blobbernaut pain animation overlays should align with the direction
the mob is facing instead of always facing South
refactor: Blob spores, zombies, and blobbernauts now all use the basic
mob framework. They should work the same, but please report any issues.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Removes the fraction of unit tests I thought would be safe.
Not thrilled that I have to exclude ALL unit tests now, but hey.
The issue is that atmos attempts to process on a turf which hasn't
initialized yet.
## Why It's Good For The Game
Other PRs can pass checks now
## Changelog
N/A
<!-- 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
small tweaks for bitrunning
- ability disks grant a huge power spike which should let me balance
megafauna health more closely to the real thing
- added a check for bit avatars to skip dynamic midround checks
- more info for netpods mostly
<!-- 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
fixes#78513fixes#78575
<!-- 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. -->
🆑
add: Netpods and quantum servers now have more examination info
fix: You no longer lose antag status if you receive it in the vdom.
fix: Beach bar shouldn't have visible atmos piping anymore.
fix: Adds more lighting to the vaporwave vdom level.
balance: Buffed vdom megafauna health to compensate for new ability
disks.
/🆑
<!-- 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
Slightly changes the wording of the greyscale JSON check error.
The previous creates messages such as "Expected 1 but only found 3."
which implies it isn't finding enough, which isn't always the case.
## Changelog
🆑 LT3
spellcheck: Improved wording in greyscale JSON error message
/🆑
## About The Pull Request
- If a changeling's decoy brain is placed in an MMI, they will now be
prompted to speak through it.
- They can speak through the decoy even if incapacitated or dead (or
fake-dead).
https://github.com/tgstation/tgstation/assets/51863163/804bd48a-c4b8-4feb-b021-019ea70e4b8e
## Why It's Good For The Game
The oft-controversial ling MMI test has been brought up time and time
again so I figure I throw my cards in for a solution.
We want as few ways as possible for people to hard and fast discover
whether someone is an antag, especially changling which is supposed to
revel in paranoia. This soft-patches out a big way, the MMI test, in
which you place a ling's brain in an MMI to determine if it's vestigial
and therefore, a ling.
Now the ling player can provide some benefit of the doubt by speaking
through the brain as normal, appearing active while actually in their
body still.
## Changelog
🆑 Melbert
add: Changelings can now speak through their decoy brain if it is placed
in an MMI, to maintain the illusion they are actually dead and have been
debrained.
/🆑
## About The Pull Request
Fixes#71330
The brimdemon was basically already perfect (well, it has a novel means
of attacking) so I didn't get too fancy with this one, it's _largely_
just a straightforward conversion.
Following this change it's a little slower to back off, but better at
lining up with people in order to blast them. Additionally, its beam is
now a mob ability so you can give it to other mobs if you so desire.
Because I can't help doing a _little_ tinkering, Brimdemons now explode
2.5 seconds after they die, after a brief warning animation.
## Why It's Good For The Game
Simple mobs must die
## Changelog
🆑
add: Brimdemon corpses release an explosion shortly after death, just to
keep you on your toes.
refactor: Brimdemons now use the basic mob framework which (should)
improve their pathfinding somewhat. Please bug report any unusual
behaviour.
admin: The brimdemon's beam ability can be given to any mob, for your
Binding of Isaac event
/🆑
## About The Pull Request
this is a mob that was removed from the game since years ago. this pr
refactors them and readds them to the game. seedlings now can have
different colored petals!

to obtain this monster, botany can now grow them out of 'seedling' seeds
that they can find in the exotic seeds crate. this mob loves to help all
plants and when its grown out of the seed, it will help the botanists
look after their plants. it can water plants (if it finds a bucket),
remove weeds and remove dead plants. they will also use their solarbeam
ability to provide small healing to damaged plants. it will try to
refill its bucket with water if there is a water source near by. it will
also follow the orders of whoever harvested it.

traitors can buy a seed from the uplink that grows an evil version of
the seedlings, they can command them to attack people and use abilities
and to cause chaos on the station.
## Why It's Good For The Game
refacotrs the seedlings into basic mobs
## Changelog
🆑
refactor: seedlings have been refactored into basic mobs please report
any bugs
add: seedlings now can have different colored petals and can look after
botanys plants
add: seedlings are re-added to the game! they grow out of seedling seeds
obtainable from exotic seed crates or traitor uplink
/🆑
## About The Pull Request
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23763
Somewhere along https://github.com/tgstation/tgstation/pull/77739 and
the following fishing PR's this feature got overlooked and broken.
The args for `dispense_reward()` and `find_chasm_contents()` needed to
be updated as they were just wrong.
This sets them straight and adds an additional fishing unit test for the
rescue hook to hopefully prevent this edge case from being overlooked.
## Why It's Good For The Game
Rescue hooks work again, hooray.
## Changelog
🆑
fix: rescue hooks will once again drop the mob next to the fisherman
instead of just displaying a balloon alert and doing nothing
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Adds multi-z support for lazy templates
Also fixes some improper use and placement for turf flags
## Why It's Good For The Game
Shadow needs/wants this for bit runner maps.
Turf flags are also why lava has been generating in places it shouldnt.
(inside of ruins)
## Changelog
🆑
fix: Lava can no longer occasionally generate inside of previously
loaded templates and breach and/or destroy shit
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
## About The Pull Request
Teleport beacon can be turned on and off. Turning off only removes it
from the list of selectable locations on the teleporter, you can still
teleport to it. In this PR <s>I add weak_ref removal on turning off the
beacon (of which I'm not certain if that's a good solution, but seems to
work)</s> I use signals to handle turning off the teleportation.
## Why It's Good For The Game
You can turn off the beacon to stop someone teleporting to your location
and it doesn't mislead players into thinking disabled teleport beacon
cannot be teleported to anymore.
## Changelog
🆑
fix: You can no longer teleport to disabled beacon if the teleporter was
previously locked-on to it.
/🆑
## About The Pull Request
Heavily refactors wounds AGAIN.
The primary thing this PR does is completely change how wounds are
generated and added - while the normal "hit a guy til they bleed" stuff
works about the same, asking for a specific type of wound, say, like how
vending machines try to apply a compound fracture sometimes, isnt going
to work if we ever get any non-organic wounds, which the previous
refactor allowed.
With this PR, however...
* You can now ask for a specific type of wound via
get_corresponding_wound_type(), which takes wound types, a limb, wound
series, etc. and will try to give you a wound fitting those
specifications - but also, a wound that can be applied to a limb.
* This will allow for a vending machine to apply a compound fracture to
a human, but a collapsed superstructure (assuming my synth wounds go in)
to a robot
There are now new "series types" and "wound specific types" that allow
us to designate what series are "mainline" and randomly generatable, and
what are "alternate types" and must be generated manually - you can see
the documentation in wounds.dm.
The behavior of limping and interaction delays has been abstracted to
datum/wound from bone wounds to allow just, general ease of development
Pregen data now allows for series-specific wound penalties. Example: You
could set a burn wound's series wound penalty to 40, which would make
wound progression in the burn category easier - but it would not make it
any easier to get a slashing wound. As it stands wound penalties are for
wounds globally
Scar files are now picked in a "priority" list, where the wound checks
to see if the limb has a biostate before moving down in said list.
Example: Wounds will check for flesh first, if it finds it - it will use
the flesh scar list. Failing that, they then check bone - if it uses
that, it will use the bone scar list. This allows for significantly more
modular scars that dont even need much proc editing when a new wound
type is added
Misc changes: most initial() usage has been replaced by singleton
datums, wound_type is now wound_types and thus wounds can accept
multiple wound types, wounds can now accept multiple tool behaviors for
treatment, wounds now have a picking weight so we can make certain
wounds rarer flatly,
This PR also allows for wounds to override lower severity wounds on
generation, allowing eswords to jump to avulsions - but in spirit of
refactoring, this has been disabled by default (see pregen data's
competition_mode var).
## Why It's Good For The Game
Code quality is good!
Also, all the changes above allow wounds to be a MUCH more modular
system, which is one of its biggest problems right now - everything is
kinda hardcoded and static, making creative work within wounds harder to
do.
## Changelog
🆑
refactor: Refactored wounds yet again
fix: Wounds are now picked from the most severe down again, meaning
eswords can jump to avulsions
fix: Scar descs are now properly applied
/🆑
I went through the code and tried to find all of the remaining places we
forgot to update the arguments passed into `item/food/Initialize` after
more arguments were added to it, because there were a couple and they
caused things to stop working.
Most notably, golems were unable to eat anything because nothing would
correctly spawn "golem food".
_Additionally_ we were using a bunch of named arguments in new whenever
crafting or cooking food. This runtimed, causing the food not to init
properly.
_On top of that_ a late code review on a recent PR processed a list into
a string_assoc_list twice causing it to become null.
Finally, we were trying to check the food preferences of examining
ghosts or dogs or other non-human mobs. We shouldn't do that.
I also added a unit test for moth and golem food in the hopes that we'll
notice them breaking.
## About The Pull Request
Transforms the minebots into basic robots. You can now command these
minebots to extract minerals for you. To activate automated mining mode,
simply instruct them with the command "mine." They will then proceed to
autonomously mine walls and gather ores. If you wish to make the bot
deposit all the collected ores, use the command "drop." Alternatively,
you can leave it in collection mode, and it will gather all the ores you
mine. Additionally, the bot now responds to several more commands; you
can instruct it to follow you, toggle its lights on or off by saying
"lights." In attack mode, it refrains from mining or collecting ores but
will engage in combat alongside you. If it detects you as deceased or
unconscious, it will alert all miners, request assistance, and relay
your coordinates via the mining communication channel. to power it on u
will need to feed it any type of ore first so it may listen to ur
commands
## Why It's Good For The Game
makes the non sapiant minebots more useful
## Changelog
🆑
refactor: the minebots have been refactored please report any bugs
add: minebots can now mine walls and collect ores automatically and they
will alert everyone if they find u dead
/🆑
## About The Pull Request
During my first fishing related PR, I hadn't yet know that for the
`fish_counts` var to work, its contents also had to be within the
`fish_table` list, thus I ended up adding stuff that's not actually
fishable. Also there was no unit test to enforce that design, which is
lame.
## Why It's Good For The Game
Fixing the issues explained above. Basically #78019 but done right.
## Changelog
🆑
fix: You can now actually fish soggy wallets from toilets, rare ores on
ice moon, some boney stuff in oil puddles (good luck finding them) and
lube-fishes by the seawater.
/🆑
## About The Pull Request
The only thing that ever actually needed to use this (Paper Wizards)
were refactored in #76688 (46e819297a).
The AI is primitive compared to modern AI frameworks, and I'm pretty
sure anything that may have been needed to be re-used was recoded in the
paper wizard framework (or at least serves as a good template for coding
"bosses").
## Why It's Good For The Game
Yeeting deprecated formats is so poggers champion.
## Changelog
Nothing that players could care about.
## About The Pull Request
**_THIS PR UPDATES THE SCAR VERSION - ALL EXISTING SCARS WILL BE
WIPED_**
Expands the wound system functionality to support any type of limb at
all.
To do this, wounds have been significantly refactored. For starters,
wounds now use limb biotype instead of wound type for determining what
they can be applied to. They also use singleton instances for most "can
we apply this" checks instead if copy pasted initial().
Wounds now use a "wound series" instead of wound_type for determining
the, well, series. Previously, all WOUND_BLUNT wounds were considered
bone wounds, making it impossible to have multiple WOUND_BLUNT wounds at
once. Now, its based on wound series - bone wounds are of the blunt bone
wound series, and use the typical logic.
One change that results from this is the ability for everything with a
jointed limb to get a dislocation. Yes, this includes things like
prosthetics.
On the note of external and internal biotypes: Exterior are bones,
Interior is flesh. Interior protects exterior from slash until its
mangled, at which point it either exposes exterior to slash or allows
dismemberment if theres no exterior.
Basically - it acts the exact same way, except its not hardcoded, and
its more modular.
A lot, lot more changes were made - I cant name them all, but if youre
interested, you can read up. Wounds have more procs, more
modularization, and less hardcoding.
Sadly, scars have been updated in such a way so that the wound version
must be updated. Scars will be deleted.
## Why It's Good For The Game
As it stands, half the limbs in the game can't be dismembered. This
changes that, allowing every single limb to be dismembered.
The two dismemberment critera are now:
1. If able to get mangled flesh or bone, it can be dismembered once it
gets mangled flesh and bone (or JUST flesh if it only has a internal
biostate, vice vers afor bone if external only)
2. If it cant be dismembered by the above, it will have a chance to
dismember when at or above 80% of its total max damage
Finally, code being better is usually a good thing.
## Changelog
🆑
balance: Prosthetics and slimepeople can now have limbs dismembered
balance: Slimepeople can now receive slash wounds, but cannot bleed
balance: Most limbs can now be dislocated
refactor: Scar backend reworked, scars will be wiped as they update to
the new format
/🆑
## About The Pull Request
`is_banned_from(...)` expects a ckey.
`/obj/effect/mob_spawn/ghost_role/attack_ghost(...)` checks for role
bans by using key instead.
This can lead to players whose keys and ckeys are different being able
to evade certain ghost role bans; by accident or otherwise.
This PR takes a two-pronged approach. The first fixes ghost roles
passing in the key instead of the ckey to is_banned_from. This fixes the
bug, and makes it consistent with all other cases of
`is_banned_from(...)` being called.
The second is to redefine the behaviour of `is_banned_from(...)` to
accept either a ckey OR a key, since converting from key to canonical
key should be a fairly trivial operation. This prevents this specific
bug from ever occuring again, by making it intended functionality to
pass either key or ckey similar to how the roles param accepts either a
string role or a list of roles.
### ***Please review the code carefully, my changes to
`is_banned_from(...)` have not been tested. No logical flow should have
been changed.***
## Why It's Good For The Game
Ban systems working good.
## Changelog
🆑
fix: Fixes an issue where role banned players would be able to accept
certain ghost roles they're meant to be banned from.
/🆑
## About The Pull Request
There were a few things about that last cargo resprite that people
didn't quite agree with. The resprite had heart, but so did the
complaints. This aims to be the best of both worlds, keeping the "dark
cargo" resprite but making it blend better with the rest of the game.
First, this gets a few sprites that were missed:
Winter Coat
QM Winter Coat
QM Cloak
Beret (This is a Greyscale item so icon quality isn't something I can
change. Its just the best color I could get it now)
This also adds a skirt variant of the cargo shorts, the cargo shortskirt
As for the old sprites:
Fixes the contrast/palette on the new cargo sprites to make them less
violently black and dark

Redoes the Object sprites to better match the rest of the codebase's
objects, as well as fixing the same contrast/palette issue mentioned
above

And finally, adds **proper** rolled-down states to all of them

Smaller things:
- Renames "outfits" to "uniforms" (I've never seen any clothes called
"outfits" before and it seemed very out of place)
- Adjusts the mining suits code to have Name above Description like
every other item in this file
No Sealed I'm not doing the banner. And anybody who asks about
Cargorilla, they had a huge stockpile of the old uniform in the
gorilla's size that nobody else could really wear so they need to use it
all up
## Why It's Good For The Game
There was a lot of player (and spriter) feedback that should have been
taken into consideration; the one that stood out most to me was
@Draganfrukts, who even gave an example of a better palette - I
attempted to mesh both his idea and the original colors into a
combination that fits the game environment a lot better.
## Changelog
🆑
add: Cargo now once again has access to a "Cargo Shortskirt", a skirt
variant of their shorts!
image: tweaks and adjustments to the Cargo resprite have been made, as
well as respriting some missed icons such as the Winter Coats and QM
Cloak
/🆑
---------
Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
## About The Pull Request
Checking the achievements UI now shows a line below the Unlocked/Locked
status for normal achievements, informing the user of how many players
have unlocked said achievement. It also contains a tooltip; within it is
a percentile comparison with the most unlocked achievement.
Beside that, I've added a check in the achievement unit test to
ascertain that all award categories are actually present in the UI, and
as well moved all `ui_data` to `static_ui_date` considering it is not
the sort of interface that has to be constantly updated like an air
alarm or an APC.
Here's a screenshot of the UI, with the tooltip where my cursor would be
(the hot damn! achievement was var-edited of course):

## Why It's Good For The Game
This should provide some fundamental statistics for achievements, from
which contributors and players can deduct the rarity and bragging
rights.
## Changelog
🆑
qol: The Achievements UI now shows how many people have unlocked a given
achievement.
fix: The "Skills" Category for achievements should no longer be hidden.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Jordie0608 <4343468+Jordie0608@users.noreply.github.com>
## About The Pull Request
Hey there,
This was broken in an update from #74573
(3902973978), the RegEx was only catching
a fraction of the cases it was meant to be.
This is what we were finding on 74573 version of the RegEx:

This is what we should be finding for all of the cases that
`define_sanity` will need to check for:

This is what was broken as a consequence:

As stated in the introductory PR #74333
(ccef887efe), it's not the end of the
world if we miss unmanaged local defines, but it's still useful to have
this as a maintainability tool to ensure that everything remains as
clean as it possibly can. I wish we could do the whole matching method
like the aforementioned PR supposed could happen, but it simply doesn't
appear to work the way we want it to.
## Changelog
Nothing player facing.
I tried to experiment with `UNLINT()` but I got absolutely ganked by
getting the regex to work, so the fix for the FA Icon file may not be
super duper great unfortunately. Let me know if you have a showstopper
idea, this is just a stopguard so this PR can get merged and I don't
have to keep talking about unmanaged local defines while reviewing PRs.
## About The Pull Request
the goldgrub is now a basic monster. the goldgrub will now look for
walls to mine and look for ores to eat. if he finds any nearby humans he
will escape and dig away. also if he sense a storm is coming he will dig
away and only come back out when the storm is gone. the goldgrub will
escape from u but u can now befriend the goldgrub. if u feed him ores he
will love u and become ur pet u can ride him or make him follow u. he
will also help u mine, if u leave him to mine for a bit and come back to
him later u can ask him to spit out all the materials he mined and he
will give them to u. also if u feed him a bluespace ore, he will lay an
egg and have a baby. the goldgrub is very protective over this egg he
will drag it around with him. the goldgrub baby will follow his mom or
dad until he grows up to be like his mom or dad
## Why It's Good For The Game
give the goldgrub more character and now he can help miners to mine if
they befriend him
## Changelog
🆑
refactor: the goldgrub has been refactored please report any bugs
add: the goldgrub can now be tamed and he can have babys
/🆑
@LemonInTheDark wanted this to be able to hunt down the progress bar
hard dels.
Code is here:
https://gist.github.com/Mothblocks/06b415afd75672fb03637804435350d2
Intended to be reverted once we figure out the issue, or if we realize
it's not related. This library is not stable.
## About The Pull Request
Instead of a supernatural phobia, sacrificed people will now get a
HERESY phobia, which specifically targets heretic stuff, instead of all
of magic. Other heretics, however, do not get this, but instead get
knowledge points sapped from them, as their mind is ruined in a
different way than normal people. This comes with different flavour text
and a harsher but shorter lasting mood debuff. Also fixes some
"knowlege" code typos and places the star gazer and fire shark all in
under heretic_summon
## Why It's Good For The Game
Heretics, Wizards, Chaplains and Cultists will now be able to keep
playing the game after getting sacrificed without overdosing on
psicodine, while still retaining the phobia's original design purpose.
placing the fire shark and star gazer under the same type also is useful
as they share a lot of values. typos bad.
## Changelog
🆑
add: Sacrificed heretic targets will now receive a phobia of heresy
instead of a phobia of the supernatural. Sacrificed heretics will not
get this phobia, but will lose knowledge points instead.
/🆑
Huge thanks to Helg2 for doing the original PR and helping me with this
one, couldn't be done without them
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
## About The Pull Request
`init_possible_values()` now only ever returns a list of values instead
of both values and icons. The responsibility of icon generation has
moved from this proc to a new `icon_for(value)` proc, which returns the
icon/typepath of an atom. A runtime is thrown if any value does not have
an icon.
This boosts production initialization times by 3+ seconds, but is
primarily done to allow for further optimizations of this process. As an
example, it is a mapping of value -> icon so that in the code that
executes this we can have more fine grained control over tick overrun.
As a bonus, fixes#67092.
## About The Pull Request
What it says on the tin. First time ever making a unit test, so
critiques and feedback are very much appreciated.
If anyone thinks of other relevant edge cases, please do bring them up.
## Why It's Good For The Game
Requested in #77613 (71fe46511a), as the
fact it broke again is a regression. Will fail until that PR is merged,
as you might expect.
## About The Pull Request
I literally can't focus on anything nowadays, so I just did this to
break a never-ending chain of distress. Anyways, regal rats! These
fellas are mostly player controlled, but did have _some_ AI capabilities
(mainly tied to their actions), so that was incorporated too. Everything
should work as-expected (as well as look a shitload cleaner).
Instead of doing weird and awful conditional signals being sent out, I
made the `COMSIG_REGAL_RAT_INTERACT` (not the actual name) have a return
value so we can always rely on that working whenever we have that signal
registered on something we attack. I also cleaned up pretty much every
proc related to regal rats, gave them AIs to reflect their kingly nature
(and action capabilities (as well as move the action to
`mob_cooldown`)).
Since I thought they needed it, Regal Rats now get a special moniker!
This is stuff like "the Big Cheese" and what-not, like actual regents in
history. That's nice.
## Why It's Good For The Game
Two more off the list. Much better code to read. Way smarter rats with
spawning their army as part of a retaliatory assault (war). More sovl
with better regal rat names. The list goes on.
## Changelog
🆑
refactor: Regal Rats have been refactored into basic mobs. They should
be a bit smarter and retain their docility (until attacked, in which
case you should prepare to get rekt by summoned rats), and properly flee
when they can instead of just sit there as you beat them to death. The
framework for them interacting with stuff (i.e. opening doors while
slobbering on food) is a bit more unified too, now. They also have
cooler names too!
/🆑
FYI: Beyond a few code touchups, I haven't touched the actions at all. I
do not believe myself to be enthusiastic about fixing anything involving
the actions code as of this moment so that this PR is more overbloated
unless it's unbelievably stupid or easy to fix.
## About The Pull Request
Fixes#77709
I made a very smart and sensible and handsome change in a recent PR to
replace `mob/goliath/random` and `mob/watcher/random` subtypes with
spawner effects rather than mobs which qdel themselves on init sometimes
however I neglected to account for how the lavaland map generation was
reliant on those typepaths to space mobs apart
resultingly the map generator would attempt to place lavaland mobs about
12 spaces apart _unless_ they were goliaths or watchers which it would
spawn basically as much as it wanted wherever it wanted
## Why It's Good For The Game

## Changelog
🆑
fix: the goliath and watcher mating season has ended and population has
returned to normal levels
/🆑
## About The Pull Request
the mega arachnid is now a basic monster. he is a very tricky and
opportunistic creature he will plan his attacks carefully and only
attack the weak. he will first try to throw fleshy legcuffs at his
victims, if the victim becomes cuffed he will move in to attack him,
otherwise he will run away from him while trying to throw restraints at
his legs. while he is running away he will also release slippery acid to
slip his prey. also when he is looking for his prey, he will be
transparent for more stealth. after he finds his prey the transparency
will wear off. he is also a very stealthy creature, he will break any
lights and cameras near him and he can also climb trees to hide in them
while he is looking for a victim.
## Why It's Good For The Game
add more combat depth for the mega arachnid
## Changelog
🆑
refactor: the mega arachnid is now a basic monster ,please report any
bugs
feature: the mega arachnid now have an ability to slip victims
/🆑