## About The Pull Request
Heretic summon rituals are broken right now to not consume items; this
means infinite summons for one set of items. This PR fixes that.
## Why It's Good For The Game
Exploits bad
Fixes https://github.com/tgstation/tgstation/issues/85925
## Changelog
🆑 Bisar
fix: The Nanotrasen Emergency Religious Response Team has blessed the
station; heretic summon rituals now actually consume resources, fixing
infinite summon loops.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request

*The Miami Mutilator is at large once again. Thank god we have such
hardboiled detectives as Manny Pardo on the case.*
This pull request allows for players to use white crayons, which have
now been renamed to sticks of chalk, to generate outlines of dead or
"dead" bodies found throughout the station in an attempt to let
detectives actually set up crime scenes as opposed to, more typically,
just causing them.
Players will attempt to draw a chalk outline if the target is a mob and
the mob is dead (or fake-dead), using a single charge of the
crayon/chalk. Also, adds a quick macro so that we can get the proper
left/right orientation of the dead mob for reference.
## Why It's Good For The Game
Detective should have more thematic, simple ways to organize crime
scenes in-round, and what better way to do that then through existing
items and mechanics that we already have. Also, I was 100% shocked to
learn that these have always been white crayons as opposed to sticks of
chalk, which certainly seems odd. In essence, this change doesn't really
let you do anything "new", but just makes it easier and simpler to do so
in a regular round without nearly as much fiddling.
This mechanic exists exclusively within the afterattack of sticks of
chalk as opposed to all crayons for thematic reasons, but I'm not 100%
sold on that and it would be simple to move over to all crayons if
people feel strongly about that.
## Changelog
🆑
add: White crayons (Renamed to Sticks of Chalk) may now be used on dead
bodies to draw a body outline onto the ground easily.
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
## About The Pull Request
This PR does a couple of minor things:
Makes the job debug logging a bit easier to follow.
Minorly brings some SSjob code up to code standards, converting proc
names to snake_case and doing some otherm is cleanup.
Refactored some stuff into different procs, updated some comments.
And some major things:
Changes the job assignment logic.
Old behaviour
> Assign dynamic priority roles
> Force one Head of Staff (if possible)
> Assign all AIs
> Assign overflow roles (bugged in 2 ways)
> Shuffle the available jobs list once, at the start of the random job
assignment loop
> Pick and assign random jobs for random players from High prefs down,
with a priority on Head of Staff roles
> Handle everyone that couldn't be assigned a random job
New behaviour
> Assign dynamic priority roles
> Assign all Head of Staff roles to players with High prefs
> If no Head of Staff was made in the above way, force one Head of Staff
(if possible)
> Assign all AIs
> Assign overflow roles (fixed)
> Prioritise and fill unfilled head roles at each job priority pref
level, from High prefs down.
> Build a list of all jobs that each unassigned player could be eligible
for at the above pref level.
> Pick a job from that list at random and assign it to the player.
> Handle everyone that couldn't be assigned a random job.
In reality there should be little impact on overall job assignment, the
code changes read more as semantics. For example, the priority check for
filling Head slots will have the same candidate pool in both old and new
versions, but in the new version we're more clearly saying that Heads
are important and we want to prioritise filling them for the sake of
round progression even though the outcome in new and old is the same.
A key change will lead to an increase in assistants - Overflow fixes.
Currently the code block to do early assignments to the Overflow role
doesn't work - or works but not as you'd expect. The idea was is that
because enabling the Overflow role in the prefs menu is an On/Off toggle
that sets the job to High priority when enabled and prevents any other
High priority pref, players that have the Overflow role enabled will
**always** get it. It's their highest priority job with infinite slots.
So we do a pass right at the start to give everyone with the Overflow
role enabled that role and save us wasting time later on in random job
code giving them that same role but with more work.
The problem is the code for this only assigns the Overflow role to
people with it set to Low priority in their prefs, resulting in log
readouts like:
```
[2024-07-27 09:49:43.469] DEBUG-JOB: DO, Running Overflow Check 1
[2024-07-27 09:49:43.469] DEBUG-JOB: Running FOC, Job: /datum/job/assistant, Level: Low Priority
[2024-07-27 09:49:43.472] DEBUG-JOB: FOC player job enabled at wrong level, Player: Radioprague, TheirLevel: Medium Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.472] DEBUG-JOB: FOC player job enabled at wrong level, Player: Caluan, TheirLevel: High Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.473] DEBUG-JOB: FOC player job enabled at wrong level, Player: Caractaser, TheirLevel: High Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.473] DEBUG-JOB: FOC player job enabled at wrong level, Player: Apsua, TheirLevel: High Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.475] DEBUG-JOB: FOC player job enabled at wrong level, Player: Bebrus2, TheirLevel: Medium Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.475] DEBUG-JOB: AC1, Candidates: 0
```
Where nobody gets pre-assigned the overflow role because their prefs are
all set to the High priority from being toggled... Except wait a second,
some people have it at Medium priority when it should just be a No
Role/High Priority Role toggle?
And herein we meet a problem. My hypothesis is that traits and stuff
that change the overflow have allowed players to set the "ordinary"
overflow role of Assistant to Medium and/or Low priority.
This still shows as enabled in the prefs menu, but leads to an outcome
where a player with assistant enabled is assigned Cook instead.
```
[2024-07-27 09:49:47.775] DEBUG-JOB: DO, Running Overflow Check 1
[2024-07-27 09:49:47.775] DEBUG-JOB: Running FOC, Job: /datum/job/assistant, Level: Low Priority
...
[2024-07-27 09:49:43.475] DEBUG-JOB: FOC player job enabled at wrong level, Player: Bebrus2, TheirLevel: Medium Priority, ReqLevel: Low Priority
...
[2024-07-27 09:49:47.987] DEBUG-JOB: Running AR, Player: Bebrus2, Job: /datum/job/cook, LateJoin: 0
```
So players with the Overflow job pref set to Low (an unexpected state,
should be disabled or High) would be guaranteed to get that role if none
of the higher priority Head of Staff/AI/Dynamic roles took over via the
bugged "force overflow for people with the pref enabled" proc.
Players with the Overflow job pref set to High would be guaranteed to
get that role if none of the higher priority Head of Staff/AI/Dynamic
roles took over via the random job assignment code giving them their
Highest priority role thanks to the infinite job slots of the Overflow.
And players with the Overflow job pref set to Medium (an unexpected
state, should be disabled or High) would get Assistant if the shuffle
step of the available jobs list put Assisstant before any of the other
jobs they had prefs enabled for at Medium that weren't already filled,
otherwise they'd get another random job.
This code is now changed to ignore the priority the player has set when
looking for people to fill the overflow role. As long as it **is**
enabled, the player will get it unless they're forced into a dynamic
ruleset role (AI when malf rolls) or a Head of Staff role due to their
other prefs (they have RD set to med or low, and no other player has a
Head of Staff at high so they get randomly picked and miss the overflow
role).
This will increase the number of assistants in shifts where their pref
state has Assisstant in the bugged Medium priority, but doesn't change
it for bugged Low and not-bugged High/On priority.
On the other side of the coin, we have how the random jobs are picked.
They're kinda not random, and I noticed this reading the logs then
reading the code.
The list of available jobs to pick from is randomly shuffled - but only
**once**. All players pull from a list of jobs in the same order. So you
end up with a log block like this:
```
[2024-07-27 09:49:47.985] DEBUG-JOB: DO pass, Player: Pierow, Level:3, Job:Botanist
[2024-07-27 09:49:47.985] DEBUG-JOB: Running AR, Player: Pierow, Job: /datum/job/botanist, LateJoin: 0
[2024-07-27 09:49:47.985] DEBUG-JOB: Player: Pierow is now Rank: Botanist, JCP:0, JPL:2
[2024-07-27 09:49:47.986] DEBUG-JOB: DO pass, Player: Daddos, Level:3, Job:Botanist
[2024-07-27 09:49:47.986] DEBUG-JOB: Running AR, Player: Daddos, Job: /datum/job/botanist, LateJoin: 0
[2024-07-27 09:49:47.986] DEBUG-JOB: Player: Daddos is now Rank: Botanist, JCP:1, JPL:2
[2024-07-27 09:49:47.986] DEBUG-JOB: FOC job filled and not overflow, Player: Bebrus2, Job: /datum/job/botanist, Current: 2, Limit: 2
[2024-07-27 09:49:47.987] DEBUG-JOB: FOC player job not enabled, Player: Bebrus2
[2024-07-27 09:49:47.987] DEBUG-JOB: DO pass, Player: Bebrus2, Level:3, Job:Cook
[2024-07-27 09:49:47.987] DEBUG-JOB: Running AR, Player: Bebrus2, Job: /datum/job/cook, LateJoin: 0
[2024-07-27 09:49:47.988] DEBUG-JOB: Player: Bebrus2 is now Rank: Cook, JCP:0, JPL:1
[2024-07-27 09:49:47.988] DEBUG-JOB: FOC player job not enabled, Player: Redwizz
[2024-07-27 09:49:47.988] DEBUG-JOB: FOC job filled and not overflow, Player: Redwizz, Job: /datum/job/cook, Current: 1, Limit: 1
```
The list is shuffled into an order of something like `list("Scientist",
"Botanist", "Cook", "Sec Officer", ...)` then iterated over for each
player. So every random job selection goes:
> "Does Player1 have Scientist enabled and at the right priority? No?
Okay, Botanist? Yes? You get botanist."
> "Does Player2 have Scientist enabled and at the right priority? No?
Okay, Botanist? Yes? You get botanist."
> "Does Player3 have Scientist enabled and at the right priority? No?
Okay, Botanist has no slots left so we'll remove it from the list. Okay,
Cook? Yes? You get cook."
> "Does Player4 have Scientist enabled and at the right priority? No?
Okay, Cook has no slots left so we'll remove it from the list. Okay, Sec
Officer? ..."
This can lead to stacked individual departments if it gets randomly
rolled to the start of the list in the shuffle, and completely empty
departments if they end up at the end.
On high pop shifts this is probably less of an issue. Player prefs add
noise to this and as departments at the front fill up, those at the back
pick up some of the lower pref players.
But have you ever had a shift where there's just like... No fucking sec
even though there's tons of players? The logging (before I made changes
in this PR) was a bit ass, but my hypothesis there is that sec officer
was shuffled right at the end of the random job list, so every other
department was filled up before sec officers were picked.
To mitigate this, I made the list shuffle every single time the game
picks a random available job for the player. This should lead to a more
balanced selection of available jobs by avoiding situations where the
code is biased towards packing some departments by accident.
## Why It's Good For The Game
Overflow fixes mean people who go to their prefs and see the Overflow
Role is On will all have the same experience - They will be the Overflow
role.
More random random job selection should prevent individual departments
having a jobs be stacked when it would have otherwise been possible for
a more balanced selection but the code unintentially biased random
departments to be overstaffed and understaffed each shift.
## Changelog
🆑
fix: Having the Overflow Role set to On will properly ensure you get
that role at a High priority as intended by the game code.
fix: Job selection is now a little bit more random. Fixes an
unintentional bias in random job assignment that could lead to
feast-or-famine for roles where everyone is assigned one job and nobody
is assigned another job.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
This is something I originally planned to do, but I was just kinda too
tired for.
The Wisp Void is a square area where voidwalker victims are dumped.
## Why It's Good For The Game
The area is completely black. You can run into a wall for 60 seconds and
not know you're not moving. Now it sends you to the opposite side, you
probably wont even notice since literally the entire room is black (you
might see wisps move, but meh)
## Changelog
🆑
qol: The Voidwalker wisp void now loops you
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Hello everybuddy, your number three rated coder-failure here to clean up
some mess. This PR accomplishes some of the more major structural clean
up changes I wanted to do with /obj/ folder, but decided to wait on
until wallening gets merged, and so, time has come. Several things to
still be done, although I know these cleaning PR's are quite a load, so
will wait for this one to get done with first.
## Why It's Good For The Game
Saner spriters, better sprites, less annoyance. Also deleted a whole
load of redundancy this time around, a lot of sprites which existed
simultaniously in two places now got exit their quantum superposition.
## About The Pull Request
Currently, if you remove someone's BB status, and there's no more
members on the team - the empty BB team will still exist, and appear on
the roundend report.
## Why It's Good For The Game
No reason for empty teams to exist, and they clog up the roundend
report.
## Changelog
🆑
fix: Empty blood brother teams will now be cleaned up, instead of
clogging up the roundend report.
/🆑
<!-- 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
Fixes#85571
## Why It's Good For The Game
Just a push in the direction of a de-jank'd wallening
## Changelog
🆑
fix: bedsheets are laid on beds properly now
/🆑
<!-- 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
Closes#84603
It overrode one of its parent args, resulting in parent code not
assigning a var and runtiming when trying to spawn a blade
## Changelog
🆑
fix: Blade heretic ascension now gives you floating blades once again
/🆑
## About The Pull Request
Deja Vu perk now blacklists all centcom areas, not just the ship itself.
It also now teleports you to where you were before the teleport, instead
of teleporting you to the same spot every time.
Closes#85737
## Why It's Good For The Game
In its current implementation it makes you borderline immortal as it
stores your health, but also makes it impossible to escape the station
as you will be teleported to where you first arrived on the station,
stealing your greentext. This way its gives the player a more balanced,
but riskier experience
## Changelog
🆑
balance: Deja Vu perk now teleports you to where you were before the
last teleport, instead of where you arrived on the station
fix: Deja Vu can no longer be used to return to the wizard ship
/🆑
## About The Pull Request
I added TRAIT_UNKNOWN to the code for picking up and dropping potted
plants. Picking them up will make you totally anonymous (and
suspicious). This is the same thing that infiltrator suit and heretic
shadow cloak does.
I also added in some code that changes your displayed name to the name
of the item, and then I had to jiggle ID code a bit so it wouldn't
display your worn ID; it'll now display the forced name of the tactical
object.
## Why It's Good For The Game
Becoming an absolute master of disguise by hiding with a potted plant is
hilarious. Causing people to become immensely paranoid of anyone holding
a potted plant is very on-brand. Dropping the potted plant to reveal
you're in full infiltrator gear or heretic aura is also a funny double
bluff. The total anonymity afforded by this is balanced out by the fact
that you have to use both hands to hold the plant so you can't defend
yourself at all if you're making use of it.
## Changelog
🆑 Bisar
add: The interns remembered to water the plants around the station;
their foilage is so thick that it totally hides the identity of anyone
holding them!
/🆑
---------
Co-authored-by: Ubuntu <ubuntu@ip-172-26-7-23.us-east-2.compute.internal>
## About The Pull Request
### **why**
Cult spells that spawn items in your hand no longer have strings as
paths
## Changelog
🆑
code: Cult magic item paths are no longer strings
/🆑
## About The Pull Request
Since it +=d a new sound it ended up modifying a global ambience list,
applying the sound to 5 other lists (5 areas had this behavior)
Equating it to a new list created by summing up the old one and the
sound should fix this behavior
## Changelog
🆑
fix: Heretic sacrifice area no longer modifies global ambience lists
/🆑
## About The Pull Request
This makes the "Man I fucking love glass." voidwalker meme objective
line actually show up now. Rather than being appended to the end of your
objective, it can roll as its own objective line at a 5% chance.
## Why It's Good For The Game
It's funny, and wasn't meant to be inaccessible in the first place.
## Changelog
🆑 Rhials
grammar: The "man I love glass" voidwalker message can show up in your
objectives now.
/🆑
## About The Pull Request
This one's a bit complex, stay with me here.
So, the ERT system has support for enforcing all ERT members to be
human, or if they will be spawned as their selected species.

This addresses plasmamen by including plasmamen outfits that are
equipped prior to the actual outfit they're given, added in #56987.

Despite this support, plasmamen never spawn as plasmamen, as they are
missing the `ERT_SPAWN` changeflag. This is because as the body is
created, the ERT spawning system human-ifies them to prevent them from
exploding. This system existed in place prior to #56987, but it didn't
work.

Fortunately(?) #58870 fixed it, but in doing so nullified the work done
in #56987 as plasmamen could no longer be plasmamen when the
`plasmaman_outfit` check was reached. They had already become human.
If this reads a bit weirdly its because this was originally just going
to be an issue report. I finished writing it and decided "well why not
just fix it instead dorkus".

## Why It's Good For The Game
Fixes a problem caused by, ironically, a logic fix.
## Changelog
🆑 Rhials
fix: Centcom ERT hiring standards have been expanded to include
plasmamen, again.
/🆑
## About The Pull Request
Basically what the title says. Abductors cannot be converted by
bloodbrother/revs/cult. They will NOT show up as having a mindshield,
however.
## Why It's Good For The Game
Abductors are, by design, incredibly strong. You are not meant to be
able to win against them, and this is reflected policy-wise by the fact
that they're a restricted antagonist. However, this is still a problem
when conversion antags get involved. If an abductor becomes a cultist or
a revolutionary, then suddenly every other player who isn't also
converted has to deal with an abductor without the normal restrictions.
It's not fun to play against and in general just shouldn't happen.
## Changelog
🆑
balance: Abductors (the antag, not the species) can no longer be
converted by any antagonist.
/🆑
## About The Pull Request
Turns out HANDS and FEET coverage doesn't actually apply armor to the
body, at all, making it entirely useless. Despite this, a lot of
clothing still does it! So I added ARMS and LEGS flags to gloves/shoes
that do it respectively and wrote a unit test for it that will yell out
a list of all items missing coverage while having non acid/bio/fire
armor (three snowflake types)
as discusses with melbert on discord
## Why It's Good For The Game
...features working as intended?
## Changelog
🆑
balance: Multiple gloves/shoes that had armor values but failed to apply
them got fixed
/🆑
## What's going on here
Kept you waitin huh!
This pr resprites most all walls, windows and other "wall adjacent"
things to a 3/4th perspective, technical term is "tall" walls (we are
very smart).
If you're trying to understand the technical details here, much of the
"rendering tech" is built off the idea of split-vis. Basically, split a
sprite up and render it on adjacent turfs, to prevent seeing "through"
walls/doors, and to support seeing "edges" without actually seeing the
atom itself.
Most of the rest of it is pipelining done to accommodate how icons are
cut.
## Path To Merge
Almost* all sprites and code is done at this point.
There are some things missing both on and off the bounty list, but that
will be the case forever unless we force upstream (you guys) to stop
adding new shit that doesn't fit the style.
I plan on accepting and integrating prs to the current working repo
<https://github.com/wall-nerds/wallening> up until a merge, to make
contribution simpler and allow things like bounties to close out more
easily
This pr is quite bulky, even stripping away map changes it's maybe 7000
LOC (We have a few maps that were modified with UpdatePaths, I am also
tentatively pring our test map, for future use.)
This may inhibit proper review, although that is part of why I am
willing to make it despite my perfectionism. Apologies in advance.
Due to the perspective shift, a lot of mapping work is going to need to
be done at some point. This comes in varying levels of priority. Many
wallmounts are offset by hand, some are stuck in the wall/basically
cannot be placed on the east/west/north edges of walls (posters), some
just don't look great good in their current position.
Tests are currently a minor bit yorked, I thought it was more important
to get this up then to clean them fully.
## What does it look like?






## Credits
<details>
<summary>Historical Mumbojumbo</summary>
I am gonna do my best to document how this project came to be. I am
operating off third party info and half remembered details, so if I'm
wrong please yell at me.
This project started sometime in late 2020, as a product of Rohesie
trying to integrate and make easier work from Mojave Sun (A recently
defunct fallout server) with /tg/.
Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man
is insane) was working with tall walls, IE walls that are 48px tall
instead of the normal 32. This was I THINK done based off a technical
prototype from aao7 proving A it was possible and B it didn't look like
dogwater.
This alongside oranges begging the art team for 3/4th walls (he meant
TGMC style) lead to Rohesie bringing on contributors from general /tg/,
including actionninja who would eventually take over as technical lead
and Kryson, who would define /tg/'s version of the artstyle. Much of the
formative aspects of this project are their work.
The project was coming along pretty well for a few months, but ran into
serious technical issues with `SIDE_MAP`, a byond map_format that allows
for simpler 3/4th rendering.
Due to BULLSHIT I will not detail here, the map format caused issues
both at random with flickering and heavily with multiz.
Concurrent with this, action stepped down after hacking out the
rendering tech and starting work on an icon cutter that would allow for
simpler icon generation, leaving ninjanomnom to manage the project.
Some time passed, and the project stalled out due to the technical
issues. Eventually I built a test case for the issues we had with
`SIDE_MAP` and convinced lummox jr (byond's developer) to explain how
the fuckin thing actually worked. This understanding made the project
theoretically possible, but did not resolve the problems with multi-z.
Resolving those required a full rework of how rendering like, worked. I
(alongside tattle) took over project development from ninjanomnom at
this time, and started work on Plane Cube (#69115), which when finished
would finally make the project technically feasible.
The time between then and now has been slow, progressive work. Many many
artists and technical folks have dumped their time into this (as you can
see from the credits). I will get into this more below but I would like
to explicitly thank (in no particular order) tattle, draco, arcanemusic,
actionninja, imaginos, viro and kylerace for keeping the project alive
in this time period. I would have curled up into a ball and died if I
had to do this all myself, your help has been indispensable.
</details>
<details>
<summary>Detailed Credits</summary>
Deep apologies if I have forgotten someone (I am sure I have, if someone
is you please contact me). I've done my best to collate from the git
log/my memory.
Thanks to (In no particular order):
Raccoff: Being funny to bully, creating threshold decals for airlocks
aa07: (I think) inspiring the project
ActionNinja: Laying the technical rock we build off, supporting me
despite byond trying to kill him, building the icon cutter that makes
this possible
ArcaneMusic: Artistic and technical work spanning from the project's
start to literally today, being a constant of motivation and positivity.
I can't list all the stuff he's done
Armhulen: Key rendering work (he's the reason thindows render right), an
upbeat personality and a kick in the ass. Love you arm
Azlan: Damn cool sprites, consistently
Ben10Omintrix: You know ben showed up just to make basic mobs work, he's
just fuckin like that man
BigBimmer: A large amount of bounty work, alongside just like, throwing
shit around. An absolute joy to work with
Capsandi: Plaques, blastdoors, artistic work early on
CapybaraExtravagante: Rendering work on wall frames
Draco: SO MUCH STUFF. Much of the spritework done over the past two
years is his, constantly engaged and will take on anything. I would have
given up if not for you
Floyd: Early rendering work, so early I don't even know the details.
Enjoy freedom brother
Imaginos16: A guiding hand through the middle years, handled much of the
sprite review and contribution for a good bit there
Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of
effort dissecting feedback with a focus on making things as good as they
can be at the jump
Infrared: Part of the impetus for the project, made all the xenomorph
stuff in the MS style
Jacquerel: A bunch of little upkeep/technical things, has done so much
sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES)
Justice12354: Solved a bunch of error sprites (and worked out how to
actually make prs to the project) Thanks bro!
Kryson: Built the artstyle of the project, carrying on for years even
when it was technically dying, only stopping to casually beat cancer. So
much of our style and art is Kryson
KylerAce: Handled annoying technical stuff for me, built window frame
logic and fully got rid of grilles.
LemonInTheDark: Rendering dirtywork, project management and just so much
fucking time in dreammaker editing sprites
Meyhazah: Table buttons, brass windows and alll the old style doors
Mothblocks: Has provided constant support, gave me a deadline and
motivation, erased worries about "it not being done", gave just SO much
money to fill in the critical holes in sprites. Thanks moth
MTandi: Contributed art despite his own blackjack and hookers club
opening right down the road, I'm sorry I rolled over some of your
sprites man I wish we had finished earlier
Ninjanomnomnom: Consulted on gags issues, kept things alive through some
truly shit times
oranges: This is his fault
Rohesie: Organized the effort, did much of the initial like, proof of
concept stuff. I hope you're doin well whatever you're up to.
san7890: Consulting on mapper UX/design problems, being my pet mapper
Senefi: Offsetting items with a focus on detail/the more unused
canidates
SimplyLogan: Detailed map work and mapper feedback, personally very kind
even if we end up talking past each other sometimes. Thank you!
SpaceSmithers: Just like, random mapping support out of nowhere, and
bein a straight up cool dude
Tattle: A bunch of misc project management stuff, organizing the
discord, managing the test server, dealing with all the mapping bullshit
for me, being my backup in case of bus. I know you think you didn't do
much but your presence and work have been a great help
Thunder12345: Came out of nowhere and just so much of the random
bounties, I'm kind of upset about how much we paid him
Time-Green: I hooked him in by fucking with stuff he made and now he's
just doin shit, thanks for helping out man!
Twaticus: Provided artistic feedback and authority for my poor feeble
coder brain, believed in the project for YEARS, was a constant source of
❤️ and affirmation
unit0016: I have no god damn idea who she is, popped out of nowhere on
the github one day and dealt with a bunch of annoying
rendering/refactoring. Godspeed random furry thank you for all your
effort and issue reports
Viro: A bunch of detailed spriting moving towards 3/4ths, both on and
off the wallening fork. If anyone believed this project would be done,
it was viro
Wallem: Artistic review and consultation, was my go-to guy for a long
time when the other two spritetainers were inactive
Waltermeldon: Cracked out a bunch of rendering work, he's the reason
windows look like not dogwater. Alongside floyd and action spent a TON
of time speaking to lummox/unearthing how byond rendering worked trying
to make this thing happen
ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin
bugaboo that was living in my brain like it was nothing. Love you
brother
And finally:
The Mojave Sun development team. They provided a testbed for the idea,
committed hundreds and hundreds of hours to the artstyle, and were a
large reason we caught issues early enough to meaningfully deal with
them. Your work is a testament to what longterm effort and deep detailed
care produce. I hope you're doing well whatever you're up to. Go out
with a bang!
</details>
## Changelog
🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan,
Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd,
Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson,
KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom,
oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner,
SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016,
Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team!
add: Resprites or offsets almost all "tall" objects in the game to match
a 3/4ths perspective
add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: = <stewartareid@outlook.com>
Co-authored-by: Capsandi <dansullycc@gmail.com>
Co-authored-by: ArcaneMusic <hero12290@aol.com>
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com>
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com>
Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com>
Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com>
Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Rob Bailey <github@criticalaction.net>
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
## About The Pull Request
All references to "Waffle Co" and "Waffle Company" have been scrubbed
and replaced with appropriate branding. "The Waffle Corporation" may be
shortened to "Waffle Corporation", "Waffle Corp" or "Waffle Corp." only.
All references to "Donk Corp." and "Donk Corporation" have been scrubbed
and replaced with appropriate branding. "Donk Company" may be shortened
to "Donk", "Donk Co" or "Donk Co." only.
## Why It's Good For The Game
Keeps these names consistant and lore accurate.
## Changelog
🆑
spellcheck: fixed many incorrect spellings of Waffle Corp and Donk Co.
/🆑
---------
Co-authored-by: BlueMemesauce <47338680+BlueMemesauce@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
While this runtime log is from MonkeStation, the associated code is the
same on /tg/, and thus the bugfix applies to both
```
[2024-08-02 22:29:45.372] runtime error: addtimer called with a callback assigned to a qdeleted object. In the future such timers will not be supported and may refuse to run or run with a 0 wait
- proc name: stack trace (/proc/_stack_trace)
- source file: code/__HELPERS/stack_trace.dm,4
- usr: Macie Carmichael (/mob/living/carbon/human)
- src: null
- usr.loc: the floor (102,80,2) (/turf/open/floor/iron/dark)
- call stack:
- stack trace("addtimer called with a callbac...", "code/controllers/subsystem/tim...", 621)
- addtimer(/datum/callback (/datum/callback), 12.45, 0, null, "code/modules/balloon_alert/bal...", 89)
- the rising blemish (/obj/effect/heretic_influence): balloon alert perform(Macie Carmichael (/mob/living/carbon/human), "influence drained")
- the rising blemish (/obj/effect/heretic_influence): balloon alert(Macie Carmichael (/mob/living/carbon/human), "influence drained")
```
## Why It's Good For The Game
bugfix, nya~
## 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 its 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. -->
🆑
fix: Fixed a runtime error after draining a heretic influence.
/🆑
<!-- 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
Spies can now pick a custom objective to override their auto-generated
ones.

Here's how it looks at roundend:

By default, the custom objective is set to "Rob the station blind."
Honestly I'm surprised they couldn't do this already.
## Why It's Good For The Game
Spies are a very low-stakes antag, they can lend themselves to letting
people pull low-stakes shenanigans. They should have the freedom to
declare their intent, so people reading the roundend report can
understand why they painted the entire station orange or slaughtered
that farm of innocent orphan mothroaches.
I am, of course, doing this all under the assumption that the
administration team (of which I am a part of) will not let people
setting their objective to "kill people for fun" fly when murderbone
otherwise wouldn't. It feels like that detail is a given but it warrants
addressing regardless -- I have to say it here or else someone will in
the comments.
## Changelog
🆑 Rhials
add: Spies can now pick their own custom objectives, if they so choose.
/🆑
## About The Pull Request
<img alt="0Jva48mReD"
src="https://github.com/user-attachments/assets/8b5ef2a2-c1dd-4561-89ef-15c0ca199e5d">
Renamed all seed packs to say "Apple seed pack" instead of "Pack of
apple seeds.
## Why It's Good For The Game
Shorter and better for UIs.
Easier to find the needed items in a list, the important part of the
name won't be truncated by ellipsis.
## Changelog
🆑
qol: Renamed seed packs to have the plant name at the beginning
/🆑
## About The Pull Request
Reverts spell invocation changes.
## Why It's Good For The Game
After seeing this on live for a while, I think it isn't quite worth it.
A lot of the spells sound better, but the most common ones don't, so it
just ends up being silly overall.
## Changelog
🆑
del: Revert "Heretic spell invocations now use one dead language per
path"
/🆑
## About The Pull Request
Currently discounts pick 3 random items, often resulting in low-cost
useless items being discounted due to the amount of junk in our uplinks.
This PR changes the number of discounts to be random between 4~6, and
makes sure that cheap items cannot get discounted anymore. Additionally,
each discount now is from a unique category as to ensure that you don't
get an uplink full of discounted gadgets and no weapons. This translates
to roughly half the categories having a discount, giving you a decent
chance of getting at least one weapon and gadget discount. Due to this,
traitor version of elite MOD no longer can be discounted.
Approved by Watermelon on discord.
## Why It's Good For The Game
Discounts are rather useless and act more as a lottery with a very small
chance of you actually rolling anything worthwhile. This will change
this into discounts being a "softer" version of bundles, giving you a
cheap loadout that you can opt into and allow it to shape your
playstyle. Only item really worth anything below 4 TC is airlock auth
card priced at 3, but 1 TC discount off of that won't change much for
you.
## Changelog
🆑
balance: Discounts now pick 4-6 items each from a unique category
balance: Items that cost below 4 TC cannot get discounted anymore
balance: Elite syndicate MODs for traitors can no longer get discounted
/🆑
## About The Pull Request


Adds the Abielle Smart-SMG to replace the pp-95 entirely.
The Abielle performs nearly identically to the pp-95 in nearly all
aspects, doing 0.5 less damage because it's not a projectile modifier on
9mm anymore.
What the Abielle does do majorly differently, is give it's bullets a
slight homing ability VS whatever you clicked on. This keeps the weapon
equally useless to it's predecessor at spraying blindly down hallways,
while rewarding careful aim with bullets that slightly track the target.
## Why It's Good For The Game
The surplus smg sucks, and I don't mean performance-wise (although it
certainly does, that's the idea). The surplus smg sucks because
typically you would be better suited using it as a melee weapon due to
the inaccuracy and low damage. Making the cheapo "I forgot to buy a
weapon" gun practically useless is super punishing especially for newer
ops who might not remember to buy a weapon first. The smartgun makes the
surplus smg still pretty shit compared to the other nukeops guns that
can down a man nearly instantly, but means that reinforcements or broke
ass nukeops can still be relatively effective so long as they can click
on a spaceman across the screen.
## Changelog
🆑
balance: The nukeops surplus smg, the pp-95, has been reworked into the
Abielle Smart-SMG. It performs nearly identically to the pp-95, however
it's projectiles get a slight homing ability towards whatever you click
on.
sound: New firing sounds for the surplus smg, credit to the m41 sound
effects from tgmc
image: New sprites for the surplus smg, made by me
/🆑
## About The Pull Request
This pull request removes the clipboard from the pool of heretic ritual
of knowledge items, specifically the "Easy" ones to obtain. The rest is
unchanged.
## Why It's Good For The Game
Clipboards are substantially harder to obtain than it's fellow objects
for the ritual.
- Shards are able to be made from glass from autolathes, maintenance
loot, protolathes, salvaged from structures
- Candles are printable from biomass, plenty of them in the chapel,
orderable, sometimes maintenance has them
- Paper is printable from biogen iirc and in huge quantities across the
entire station, you can also handcraft some or order it
- Everyone has a pen roundstart, obtainable from library, lathes, maints
- Flashlights are the same as above yet obtainable from most tool
closets and even emergency closets
- Crayons are able to be made with xenobiology, ordered, have a few map
spawns but are generally in good quantity and are maintenance loot.
The clipboard however is not printable, orders in sets of 2 for an
interesting sum in a suspiciously never ordered package, has lackluster
map spawns (One or two in cargo, one psychologist's), is sometimes
required in pairs if not more and it's severely more difficult to get. I
do not think anyone would miss this, as it's just tedious and too
low-supply to get. There are more batons on station then there are
clipboards, even organs are easier to access.
## Changelog
🆑
add: The heretic's ritual of knowledge no longer requires binoculars
add: Clipboards are craftable using a wood plank, an iron rod and
wirecutters
/🆑
## About The Pull Request
This PR prevents players from opening a BoH tear in the Heretic
dimension areas. It also introduces a new area flag, "NO_BOH", which can
be added to areas to replicate this behavior.
## Why It's Good For The Game
This prevents the (very unlikely) edge case that someone manages to open
a BoH tear in one of the funny hand rooms, which is bad not only because
it fucks over anyone else who gets sacrificed, but could also interfere
with other things on that z-level (shuttles, other Lazy Template areas,
etc).
Messing with some new code here, so if there's better ways to handle
this, by all means, chime in. This is a much more elegant method than
just banning anything but the station.
## Changelog
🆑 Vekter
fix: Fixes an exploit that allowed players to open a Bag of Holding rift
in the Heretic dimension.
/🆑
---------
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Fixes#85303, fixes#85278
Fixes planetary gravity not killing voidwalkers and voided people. I
used a screen alert but I shouldve used a status effect screen alert
(apparently it matters), causing runtimes and breaking it aaaa
Also someone refactored how pickup() works so it no longer gets called
if you dont pick it up by clicking it. I think it's a little dumb but I
can't find the PR that did it so whatever. Anyway it's not my fault
woohoo!!
## 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 its 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. -->
🆑
fix: Fixes void eater not refreshing
fix: Fixes planetary gravity not killing voidwalkers and voideds
/🆑
<!-- 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
This is a suggestion that was to me several months ago to add the
ability to pay credits to restock the black market. I liked the idea
because it'd add anothe small reason to buy the board, though I had
forgotten about it shortly after and just happened to remember it now.
So, yeah, you can swat the LTSRBT with a holochip to restock the
market(s). The price is shared amongst all pads and starts at 675
credits, but it doubles up everytime this is done, for obvious balance
purposes.
I've also updated included this new feature in the unit test, given the
LTSRBT new sprites and renamed the Blackmarket subsystem to Market,
because of how it can support different types of market datums, not just
the blackmarket
## Why It's Good For The Game
This adds one more reason to buy and build the LTSRBT and make markets
less dependant on the bad side of RNG, if you have the credits. It's a
bit of a money sink.
## Changelog
🆑
add: You can now restock the black market by hitting the LTSRBT with
enough credits. The price doubles each time this is done.
imageadd: Updated the LTSRBT sprites.
balance: Reintroduced the LTSRBT to cargo for 2000 credits vs the
original 4000 (the ansible and crystals to build it are included btw),
and slightly lowered the average blackmarket price for the same item to
account for shipping costs.
/🆑
## About The Pull Request
Hey hey party people. I watched a monkeymancer round last night. It was
hilarious, but the guy couldn't activate his ritual rune. Sucks!
Turns out, monkies don't call `attack_hand()`, they call `attack_paw()`.
This means that monkey dexterity was never the problem stopping the rune
from activating, but the fact that the attack chain was never even
trying to interact with the rune effect in the first place.
I've added a new atom interaction flag that routes through attack_paw,
so now monkies can be given their own specific interaction behaviors for
cases like this.

## Why It's Good For The Game
Closes#85267.
Also makes it a bit easier to make interact behaviors scalable to
monkies in the future.
## Changelog
🆑 Rhials
fix: Monkey wizards can now interact with grand ritual runes.
/🆑
## About The Pull Request
Voidwalker's potential objectives now better explain what they should be
doing as opposed to just being fluff. I like fluff, but we can have that
_and_ give extra guidance while better explaining to others during the
end round screen what the role should be doing.
## Why It's Good For The Game
Better objectives will help us focus Voidwalkers into doing what we want
them to do as opposed to using their cool glass-walking skills to be a
budget Nightmare.
## Changelog
🆑 Vekter
spellcheck: Reworded Voidwalker's objectives to be more descriptive of
their actual goals as opposed to just fluff.
/🆑
---------
Co-authored-by: ATH1909 <42606352+ATH1909@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
### Cybernetic variant surgeries
Many of the surgeries able to be performed on organic limbs now have a
version for robotic limbs. This includes;
### NONE OF THESE ARE SELF SURGERY OPTIONS
- Organ repair surgeries
- Stomach Pumps
- Blood filtering
- Autopsies
- Lobotomies
- Pacification
- Lipoplasty
- Amputation
- Brainwashing (including the Sleeper Agent protocol)
- Nerve Splicing and Nerve Grounding
- Vein Threading and Vein Muscle Membrane
- Ligament Hook and Ligament Reinforcement
- Cortex Folding and Cortex Imprint
These utilize mechanical steps and unique versions of their special step
that uses mechanical tools. But many of these are able to be performed
using standard surgery tools.
In fact, I've improved the chances for doing surgery using standard
tools for mechanical steps, recognizing that medical is often going to
end up with synths in medbay whether we like it or not.
### NONE OF THESE ARE SELF SURGERY OPTIONS
### Organ Repair Surgeries correct EMP Failure Cascades
When you repair a synthetic organ using the organ repair surgery, it
reverses the effects of organ failure from an EMP. That is, the
permanent failure of an organ. This allows for an alternative method to
replacing that organ wholesale, which makes treating synths a lot easier
for medical and EMPs less of a RNG death knell for people with
cybernetic organs. However, it still needs the surgery to correct the
error, so this isn't removing the danger of being EMP'd.
### Health Scanners report EMP Failure Cascades
Scanning someone with a cybernetic organ now actually tells you that the
organ is failing. Wow, why wasn't this already the case?
## Why It's Good For The Game
#### Surgeries
With the new techweb changes, augmented crew are becoming a lot, lot
more common place, as are the implantation of cybernetics. These are
required for research to be able to progress both medical and robotics
technology. Therefore, those using these items are becoming a lot more
common place.
However, our medical system is quite blind to these people as of the
moment. A lot of surgeries that are critical to recovering the
injured/dead do not work on them outright, and medical can't resolve the
problems that come with cybernetic organs entirely.
This change hopefully modernizes our surgeries to account for these
synthetic/cybernetically-altered crew members that neither forces people
to choose between taking them to medical or robotics (they're often
going to end up in medical regardless), and letting either department to
function as a place for these crew to obtain medical services.
Also gives them some cooler flavour to their surgeries, which I think is
the most important part of this change. It actually feels like you're
more than human without getting too much in the way of gameplay loops
and over complicating things.
Edit: To provide a bit of extra clarity on 'Why allow the advanced
surgeries?'
You can actually have the benefits of the advanced surgeries as an
augmented humanoid. The problem is that it has to take place before you
are augmented. They're not mutually exclusive, just slow to apply. There
isn't much reason for there not to be a method to apply them to robotic
people, particularly since augmentations are expected earlier in the
round than advanced surgeries.
#### EMP Failure and Detection
This mechanic is probably what people hate the most about cybernetics.
It is largely invisible, and forces you to have to go through a tedious
process of organ replacement on what could be any one of your organs,
since it wasn't being broadcast to the user which one is failing until
you are possibly already doubling over.
Now, it is easier for medical staff to identify if they have a
cybernetically enhanced patient in the midst of a failure cascade, and
have the means to resolve the problem. Robotics and cyborgs can too,
since sometimes they'll have the means usually to do the same operations
and detection.
## 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: Robotic variants of many of the standard and advanced humanoid
surgeries. You cannot perform self surgery with these surgeries.
balance: It is easier to do robotic surgeries with normal surgery tools.
qol: It is now possible to detect EMP organ failure cascades via health
scanners.
qol: EMP organ failure cascades can be reversed by doing organ repair
surgeries targeting the failing organ.
/🆑
<!-- 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. -->
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
it's - conjunction of "it" and "is"
its - possessive form of "it"
grammar is hard, and there were a lot of places where "it's" was used
where it shouldn't have been. i went and painstakingly searched the
entire repository for these instances, spending a few hours on it. i
completely ignored the changelog archive, and i may have missed some
outliers. most player-facing ones should be corrected, though
## Why It's Good For The Game
proper grammar is good
## Changelog
🆑
spellcheck: Numerous instances of "it's" have been properly replaced
with "its"
/🆑
## About The Pull Request
Renamed the Crimson Focus to the Crimson Medallion
Fixed harvesters not being properly bound to their master, nor dying
when they do
Fixed heads totally overriding cultist sacrifice rewards
Heretic blade now converts to a nullblade
Added wooshing, shaking, and glowing to flinging around with the heretic
blade
Removed the probability to not gain a reward when sacrificing a cultist
## Why It's Good For The Game
> Renamed the Crimson Focus to the Crimson Medallion
I heard bradley say this and it sounded better, differentiated it from
the amber focus, gave it a unique identity
> Fixed harvesters not being properly bound to their master, nor dying
when they do
Now you can track your master through the arrow though
> Fixed heads totally overriding cultist sacrifice rewards
Whoops
> Heretic blade now converts to a nullblade
Everyone loves these and it fits more-ish
> Added wooshing, shaking, and glowing to flinging around with the
heretic blade
I am the flavor master
> Removed the probability to not gain a reward when sacrificing a
cultist
This was 'pre-balancing' which is a cardinal sin in my books. It
shouldn't exist without a good reason, plus the implementation is poor.
## Changelog
🆑
spellcheck: Renamed the Crimson Focus to the Crimson Medallion
fix: Fixed harvesters not being properly bound to their master, nor
dying when they do
fix: Fixed heads totally overriding cultist sacrifice rewards
add: Heretic blade now converts to a nullblade
add: Added wooshing, shaking, and glowing to flinging around with the
heretic blade
balance: Removed the probability to not gain a reward when sacrificing a
cultist
/🆑
## About The Pull Request
Added Untie Shoes. This is a wizard spell that's seemingly weak but has
some power under the surface.
The first level unties, then knots shoes.
The second level allows you to tie jackboots and the like.
The third level allows you to summon shoes if the target has none.
And, for the true pranksters out there, the fourth level makes
invocations silent and gestureless.
Also, it always slows noncarbons down a bit.
It's also given to clowns after Jubilation, and the wizard themself, at
max level for the latter, if they dont have it already.
### Why would you ever pick this??
Knotted shoes make the wearer unable to walk without being stunned and
tripping on the floor. Let that sink in! Anyone hit twice by the spell
is forced to crawl around or risk stepping on broken glass. Worse, they
need to go through a looong process to untie their shoes to even drop
them.
This spell has infinite range, although casting from beyond screen range
or through zlevels multiplies the cooldown by ten, which is excellent
for softening up targets.
It's a 1-point, ranged, supportive spell with low cooldown, which makes
it excellent as a deterrent for harassing wizards at long range -
something they often lack answers to.
It's great for whittling down antimagic charges.
It's funny.
## Why It's Good For The Game
This spell is silly, comical, yet also very versatile and adds a rather
large amount of depth to Wizard while also expanding on shoe knotting,
which is inherently funny and rarely looked at.
I also wanted it to work through camera consoles because that's
EXTREMELY funny. The long cooldown should prevent it from being too
annoying.
## Changelog
🆑
add: Adds Untie Shoes, a 1-point wizard spell. It can be upgraded to
untie jackboots, summon shoes to untie, and become completely silent!
/🆑
## About The Pull Request
Balances
- Stops voidwalkers from breaking glass at all, and throwing items
Voidwalkers started using spears to break electrified windows to space
area's. Throwing bypasses too many safety checks, and shouldn't be their
main means of combat either way
- No hitting anyone in crit
Voidwalkers were using weapons to try and kill as many people as
possible without kidnapping
- Only able to pull people
Voidwalkers were dragging bags around with a personal armory. It also
just looks goofy as hell
- Increases space dive enter to 3 seconds (from 2) and decreases space
dive exit (from 2 seconds to 1)
The original value was pretty fast, and is being used to slip out of
combat if anyone ever comes after them. This is intended to a certain
degree, but it was a bit too strong
- Void Eater becomes blunt during use, needs kidnappings to refresh
Yeah... For some it's being used as a murderbone antag, forgoing
kidnappings completely. This change makes murderboning significantly
more difficult without bothering good faith players. It goes from 25
damage to 15 in 0.5 damage increments.
This slightly decreases take-down potentially against people with
low-mood, but clicks that go SCRUNGE release dopamine so it balances
- Gives voidwalkers chunkyfingers, preventing stun baton and gun use
Voidwalker originally had this, but I figured I'd keep it out to give
people to freedom to be more opportunistic in combat, but a significant
portion defaulted to getting a stunbaton as quick as possible so they
could avoid engaging in actual combat
- Removes eye slots
They're already flash immune. People don't know this so they're all
rushing sunglasses. It just looks weird when the space monster is
wearing glasses :/. They can still wear scarves if they decide to be
fashionable
- Void eater applies 10s of NODEATH
Yeah fuck it why not? It also prevents succumbing and takes out a lot of
cheese
- Removed Voidwalker armor
They had 10% brute and 20% burn armor. I didn't really think much about
the original change, figured they'd be too weak otherwise, but turns out
they're sufficiently strong and this kinda deviates from the intended
"ambush antag" by making them stronger in sustained combat
- Voided go to a safe turf instead of a random one
Actually just a mistake on my part. Dumping mute people in the turbine
plasma burn chamber is cruel, even for a coder
Fixes
- The Unsettle ability line of sight didn't check for line of sight :/
Addition:
- Gives Voidwalker telepathy. I originally kept it out because whatever
but honestly I think it's fine and gives them the chance to communicate
if they ever need to. I've also given the abilities it's own sprite and
background cause good vibes
## Why It's Good For The Game
The original testmerges I spectated went very well! I had it testmerged
on Terry and the rounds where I observed were played in very good faith
and played a spooky antag incredibly well. I've also seen others play
incredibly fun rounds!
It seems to have gone downhill a bit though (or Terry is high-RP?). I've
observed a few rounds on other servers and the way it's played is not
great. I originally kept as little handrails as I could as to give
people the most freedom possible in playing the spooky antag, but some
people dissappoint me so, so incredibly deeply.
It's just been merged but I'm already seeing players ignoring kidnap
mechanics in favor of roundremoving as many people as possible, giving
up any semblance of stealth in favor of carrying around mini armories.
Another spent it's time breaking windows to vent as much of the station
as possible. I also knew it would happen, but not this much. I probably
should've had this PR up a bit sooner but I've gotten really into
Hardrock TerraFirmaCraft (seriously it's _sooo_ good).
I can keep going "Argh, players!!" but honestly I've been incredibly
naive. These set of balance changes set out to cripple gameplay
optimizers while leaving good faithed players unaffected for the most
part, bringing it closer to the original design doc I wrote and away
from just being another murderbone machine
## Changelog
🆑
add: Gives voidwalker telepathy
fix: Fixes the Unsettle ability ignoring line of sight (which was it's
sole gimmick, im just dumb)
balance: Voidwalkers cannot break windows anymore or throw objects
balance: Voidwalkers can no longer harm people in crit
balance: Voidwalkers can only pull mobs
balance: Voidwalkers' space dive enter has been increased by 1 seconds,
but dive exit decreased by 1 second
balance: Void eater becomes blunt during use. Kidnap people to refresh
it
balance: Removes voidwalker glasses slot
balance: Gives voidwalkers chunky fingers
balance: Voidwalker applies NODEATH on hit
balance: Voided victims get dumped in safer places
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
Brainwashed brains are now truly smooth. Machine-washing brains (even
without a skillchip) smoothes them out and adds an examine line.

## Why It's Good For The Game
Brainwashing is a funny feature and this is a way to add more flavor to
it (and possibly make someone actually use it if they find the
skillchip)
## Changelog
🆑
image: Brainwashing victims now have smoothed out brain sprites without
those pesky wrinkles
/🆑
## About The Pull Request
Closes#85075
Everyone is dead, round has ended, no point in spamming screeching to
ghosts about a hundred new spore zombies
## Changelog
🆑
fix: Blob victory no longer spams spore zombie notifications to ghosts
/🆑
## About The Pull Request
Currently if you want to apply a HUD you usually add both its trait and
the HUD itself. Only exceptions are things like simplemobs where you
should avoid adding the hud trait since it adds security/med DB access
and such, but there is no cases where you'd want to apply the trait and
not apply the hud.
Requested by Melbert about a week ago.

## Why It's Good For The Game
This makes working with HUDs significantly easier, as you no longer have
to bother with manually adding/removing them. Also potentially removes
an edge case where if your hud could get removed while keeping the
trait.
## Changelog
🆑
refactor: HUD traits now apply their corresponding hud automatically
/🆑
## About The Pull Request
Adds input sanitization to the malf ai voice changer module.
## Why It's Good For The Game
XSS is bad.
## Changelog
🆑
fix: malf ai voice changer no longer accepts dangerous inputs
/🆑
Co-authored-by: afonamos <d.splinter@live.com>
## About The Pull Request
I was investigating a bug with hulk in which using it while damaged
doesn't put you back on full speed
I noticed `TRAIT_IGNOREDAMAGESLOWDOWN` on its own was subtly broken, in
that it did nothing if the user did not call `updatehealth` afterwards
And guess what, most (if not all) uses of the trait did not do this, so
it never applied correctly
So I nuked the trait entirely, made all uses of it use the same thing
morphine uses (`/datum/movespeed_modifier/damage_slowdown`)
And since I was auditing this I saw the ball module was broke, it
removed the immunity but never added it. Quick fix
I also cleaned up some Hulk stuff while I was in the area because I was
in the area. I removed all instances of `check_mutation` and replaced it
with trait checking because it made more sense.
I also also fixed a bug with the simple flying element never removing on
detach because I touched something that uses it for the above change.
## Changelog
🆑 Melbert
fix: Using hulk (and a myriad of similar effects) now properly updates
your movespeed to ignore the damage movespeed penalty
fix: Some things which temporarily make you fly don't make you fly
forever
fix: MODsuit ball module now properly makes you immune to damage
movespeed penalty when in ball form
fix: Adding Hulk via VV dropdown doesn't default to adding the strongest
hulk available (that which is used by the medieval pirates)
/🆑
## About The Pull Request
Add new spells category for wizards: Perks. perks are not really spells,
but useful (and not so useful) improvements for your wizard which
provide more variety for builds.
https://youtu.be/eeVvUkVE3xQ
All perks cost 2 points, they work without wizard’s uniform, cannot
refund, effect start only at the station (perks will not work at the
wizard’s base). Perk can only be purchased once.
9 added perks:
1. Four Hands - gives you 2 extra hands.
2. Worm Born - on death, wizard turns into a large worm and can no
longer return to his previous form.

3. Dejavu - every 60 seconds returns wizard to where he was 60 seconds
ago and restores his health to the amount he had 60 seconds ago.
4. Sale Off - When buying something from a book of spells, wizard has a
chance not to spend points for the purchase, depending on the purchase
price. 1/2/3/4 price chance 50/25/15/10%. You can no longer refund
purchases.
5. Gamble - Give wizard 2 random perks.
6. Heart Eater - By eating someone's heart, the wizard has a chance to
either increase his maximum HP and stamina by 25 or lose 10 percent of
his maximum HP but get a random mutation.
7. Slime Friends - Slimes is your friends now. Every 20 Seconds you
spend 50 nutriments to spawn random big angry slime.
8. Transparence - wizard becomes half transparent, any projectiles pass
through, but you loses 25% of max HP and you get a stalker who will
follow you to the station to kill you.
9. Magnetism - Wizard gain gravitational anomaly that orbit around him,
which attracts objects and people.
https://youtu.be/gp6ZtTrZu7I
## Why It's Good For The Game
Gives the wizard more options to create a fun and interesting builds
## Changelog
🆑
add: new wizard spells category - perks.
add: adds 9 wizard perks.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
Pretty much just sets the default food reagents for hearts to have 2.5u
love in addition to the base 5u nutriment.
Then makes the friendly quirk double the volume and contents of your
heart when it first gets applied, and also applying a 1.5 scale
transform to it so it looks bigger too.

The transform does still feel a bit wonky though.
## Why It's Good For The Game
It came to me in a dream.
Or more so, I think it's incredibly funny, both just to say and the
implied niche interactions from it.
Like hearts tasting like love, extracting love from people's hearts,
friendly people having Physically bigger hearts.
Really a sopping-with-blood still-beating heart is just the _best_ gift
for a friend.
It's still wildly more annoying to procure than just getting the k1ss
skillchip and using that to extract love.
## Changelog
🆑
add: Love is now stored in the heart.
balance: Characters with the Friendly quirk now have physically bigger
hearts.
/🆑
## About The Pull Request
Adds a new trait TRAIT_TOSS_GUN_HARD (which currently comes from the
Sleeping Carp scroll, ninja MODsuit, berserk armor, being a medieval
pirate or highlander). The owner of this trait deals an additional
**10-20** (depending on the size of the weapon) damage to the enemy by
throwing a gun, and also knocks them for 0.5 seconds. If a ballistic
weapon **with a magazine** was thrown, then the magazine is removed and
the bolt is racked, and if **without a magazine**, then all cartridges
(revolvers) or chambered one is removed. Here's a preview of how it
works:
https://github.com/tgstation/tgstation/assets/126676387/2a56eb74-6d37-4343-a685-3bf7159ab628
## Why It's Good For The Game
It's classic

## Changelog
🆑
add: If you can't shoot a gun, then... JUST TOSS IT AT THEM (for 0.5
seconds of knockdown and 10-20 an additional brute damage)
/🆑
---------
Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
## About The Pull Request
Fixes the very hilarious issue of reinforcements spawning with... the
same amount of TC a normal clown operative would get, leading to...
infinite TC glitch.
Fixes#84915
## Why It's Good For The Game
Fixes a bug which breaks the intended balance of clown op uplink.
## Changelog
🆑 MrDas
fix: Clown operative reinforcements' uplink no longer break the
syndicates' economy by creating TC from nothingness.
/🆑
## About The Pull Request
Glasses given to the overwatch agent have list of HUDs but don't
actually do anything with it, making them basically reagent scanner
shadys.
## Why It's Good For The Game
They were pretty clearly intended to have those HUDs but didn't actually
apply them. They are given to an *overwatch* agent for god's sake.
## Changelog
🆑
fix: Fixes overwatch glasses not adding HUDs
/🆑