## About The Pull Request
fixes a runtime when trying to unregister the move signal from the ghost
## Why It's Good For The Game
fix a runtime when loading ghosts to a mulebot
## Changelog
🆑
fix: fix a runtime when loading ghosts to a mulebot
/🆑
## About The Pull Request
Situation: areas have a list of all turfs in their area.
Problem: `/area/space` is an area and has a 6 to 7 digit count of turfs
that has to be traversed for every turf we need to remove from it. This
can take multiple byond ticks just to preform this action for a single
space rune
Solution: split the list by zlevel, and only search the right zlevel
list when removing turfs from areas.
replaces `area.get_contained_turfs()` with a few new procs:
* `get_highest_zlevel()` - returns the highest zlevel the area contains
turfs in. useful for use with `get_turfs_by_zlevel`
* `get_turfs_by_zlevel(zlevel)` - returns a list of turfs in the area in
a given zlevel. Useful for code that only cares about a specific zlevel
or changes behavior based on zlevel like lighting init.
* `get_turfs_from_all_zlevels()` - the replacement for
`get_contained_turfs()`, renamed as such so anybody copying/cargo
culting code gets a hint that a zlevel specific version might exist.
Still used in for loops that type checked so byond would do that all at
once
* `get_zlevel_turf_lists()` - returns the area's zlevel lists of lists
but only for non-empty zlevels. very useful for for loops.
The area contents unit test has been rewritten to ensure any improper
data triggers failures or runtimes by not having it use the helpers
above (some of which ensure a list is always returned) and access the
lists directly.
## About The Pull Request
I wanted to add the ability to shove people with shields by
right-clicking your target, just like how it works barehanded.
This also required a solid refactor of disarm code, effectively bringing
down the core of it to `mob/living` from `mob/living/carbon` or
`mob/living/carbon/human`. This also means you can shove simple mobs
inside closets, bins and on tables.
Xenos and borgs are pretty much immune to regular disarms, but using a
shield will work (borgs and royal xenos are immune to the knockdown).
The riot shield armor has been balanced. It now tanks melee attacks
pretty well, but will break against bullets in just about 2 to 4 hits
depending on the bullet damage. I've always found the lack of sturdiness
of the riot shields for what they're supposed to be good for a bit
detrimental.
Because I've refactored an item flag into a trait, I've had to add a new
MOD module that grants protection from shove knockdown and staggering;
found pre-installed in the administrative MODsuit, but I've also added
it to the black market to make it cooler.
You can bash people with the strobe shield on combat mode.
## Why It's Good For The Game
Currently, shields are simply items that take a held slot in return of
some block chance without being anything special, save for the strobe
shield's integrated flash I guess, but are also a botherance as most
crumple under the duress of less than half a dozen attacks. Meanwhile
swords and other weapons with blok chance just don't care.
TL;DR, I want them a bit more remarkable, and flexible as a tool.
Of course, this ended up in a larger refactor because the right-click /
disarm code was inconsistent.
## Changelog
🆑
add: Shields (and pillows) can be used to shove people around the same
way barehanded right-clicking does. Xenos and borgs can actually be
moved this way.
add: Added a new MODsuit module, the bulwark module, which prevents
knockdown and staggering from shoving, and getting pushed away by thrown
objects. Inbuilt for the safeguard MODsuit, but one might also it in the
black market.
refactor: Disarming has been refactored. You can now shove simple
critters onto tables and into bins and closets
balance: Shields now take their own armor values and the armor
penetration of the attack they blocked when damaged. This means shields
are a bit sturdier now.
balance: Riot shields can tank a lot more damage against melee weapons,
but less against bullets.
qol: strobe shields can now be used to bash people while combat mode is
on.
/🆑
## About The Pull Request
Partial Revert of https://github.com/tgstation/tgstation/pull/80800
Assuming every num passed in the parameters of `add_mood_effect` is a
`timeout_mod` is incorrect, because there can be mood events that take a
numeric arg which is not meant to be multiplied against the timeout.
This leads to the same issue as multiplying it with strings essentially
(in one case, shown below, this results in a negative duration of a
timer).


Plus having a keyword arg that may or may not actually be what the
keyword arg claims to be is really confusing and bad.
Instead here's what I propose: passing in an instantiated mood datum
itself, which has been modified, and copying the timeout from it before
discarding it.
It is not as clean as I'd prefer either, but at least it's logically
sound and the intent is clear, and it's the best I can think of short of
a major refactor of the entire system for this one small thing which is
only being used by food quality.

## Why It's Good For The Game
Clearer, less smelly code.
## Changelog
🆑
code: removed the timeout_mod arg from add_mood_event, which was only
used for one thing and causes more issues than it's worth
/🆑
## About The Pull Request
Emptying the access list of an ID is a totally legit thing to do, so
let's stop throwing errors because vibebots have no access at all.
## Why It's Good For The Game
Fewer runtimes.
## Changelog
Nothing changes.
Pretty self explanatory. I suppose this isn't a 100% fix or refactor,
since it adds a UI for their features and makes it removable, but also
these never happen
🆑
code: The mushroom cap is now an external organ (jungle station will
never happen)
fix: Mushpeople caps are no longer solid black
/🆑
## About The Pull Request
Alternative title: "Baby's third pr: surprise say code refactor"
While testing sign language I worked out that if the first message sent
after toggling sign language involves speaking directly into a radio, it
proceeds to use the wrong verb. After several hours of digging through
say and telecomms code, I worked out the cause:
the `verb_say` on humans is primarily updated to match tongue data
during the verb _selection_ method `say_mod()` in `human_say.dm`, and as
a consequence this meant the verb wasn't updated to the correct one
until far after it had been copied to a virtualspeaker, leading to the
incorrect verb being used for the radio message.
This pr fixes this by refactoring this verb updating behaviour to be in
a new method `update_verbs()`, which we then call _before_ attempting to
call `radio()` to avoid wrongful copying and thus fixing the bug.
There's theoretically also cases where the previous behaviour would use
the wrong verb if one lost or gained a tongue between radio messages, or
the wrong verb from those picked from a list for some simple/basic
animals, but those are significantly less common.
To note, I gave the new `update_verbs()` method the same arguments as
the `say_mod()` method it got split out of, but having gone through all
instances of it being used for this I don't feel it actually *needs*
those arguments. So I'm unsure whether it should keep them or not.
Opened as a draft for now for sanity's sake, and also cause, y'know, it
touches say code.
## Why It's Good For The Game
It was _really_ annoying.
## Changelog
🆑
fix: Signers no longer use the wrong verb when speaking directly into a
radio for the first message after toggling sign language.
refactor: Moved the updating of verb variables into a new method which
is called earlier in living's say, which should avoid this happening for
other things which updated their verbs the same way.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Fixes#80926, fixes#80372
The tongue, eyes, ears and brain vars were also being updated and
cleared elsewhere, runtiming whenever a regular head got dismembered and
then emptied, which would eventually cause a harddel due to improper
clean-up
I've fixed the errant proc and just removed those vars because I don't
like having duplicate references for no reason (they should always
already be in contents)
Not player facing
## About The Pull Request
bileworms will no longer infintely try to eat what they already ate
## Why It's Good For The Game
fixes#80948
## Changelog
🆑
fix: fix bileworm ai going insane after eating someone
/🆑
## About The Pull Request
Adds few (3) log registers and (2) visible messages for interactions
like; mob hits solid turf (wall for instance), mob gets hit by
obj/machinery and log register for mob gets hit by item without "living
thrower"
Edit: adds additional logregister and chat message when mob hit by non
carbon mob
## Why It's Good For The Game
Fixes#76085
And on top of that, PR is supposed to make situations where players are
being hurt or moved by objects without direct interactions with the
second player (if he does exist) a bit more trackable for player and log
divers.
## Changelog
🆑
qol: Players are now able to see in chat when they are being hit by
obj/machinery, got crushed into dense turf or get hit by thrown non
carbon mob.
admin: Scenarios like mob hits dense turf, obj/machinery hits mob, item
without "living thrower" hitting mob, mob gets hit by thrown non carbon
mob now appear in logs.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
In a previous PR (https://github.com/tgstation/tgstation/pull/79661), I
noted that a lot of moodlets tended to have their timeouts break because
it was passing their names and whatnot as a parameter, that gets fed
into the timeout modifier parameter, causing the timeout multiplier to
break, because BYOND type-agnosticism means that it can multiply a
number (timeout_mod) by text (a name or some other object), resulting in
0 - which makes a moodlet permanent. This is probably not intended.
This fixes that in two ways:
- Adding a `1` to potentially applicable moodlets (searched for with a
regex of `.add_mood_event(.*, .*,)`) just to make sure the timeout
doesn't get multiplied out weirdly.
- Making the add_mood_event thing CRASH() if the timeout_mod is bad.
If someone else wants to come up with a solution better than this,
please do.
## Why It's Good For The Game
Maybe having your arm permanently fall asleep after getting it
reattached sucks, moodlet-wise. (Being stuck with permanent
positive/negative moodlets is probably not intended.)
## Changelog
🆑
fix: Moodlets with parameters/effects e.g. limb reattachment moodlets
should probably disappear more appropriately.
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
Title.
## Why It's Good For The Game
This way the mob will still look aligned with the tile it's standing on.
## Changelog
🆑
fix: Animals enlargened by the fugu gland are now visually aligned with
the turf they're standing on.
/🆑
## About The Pull Request
This PR fixes Rat King's abilities to no longer require clicking twice
(once on the ability button, once somewhere in the world space), instead
bringing them back to their original behavior of just needing to click
once on the ability button to activate them.
## Why It's Good For The Game
Fixes the abilities to return to their original activation behavior.
Pretty sure it was a mistake to not have click_to_activate set to FALSE
when the abilities got ported over to mob_cooldown actions, especially
since these abilities don't have any sort of aiming component to them.
## Changelog
🆑
fix: Rat King's abilities no longer require the user to click twice in
order to activate them.
/🆑
## About The Pull Request
This PR makes changeling eggs work again. Apparently at some point, they
stopped working entirely, as they never properly got added as an organ
to the victim's body (ironically because we were doing TOO MUCH work,
not too little). This PR also changes how changeling eggs keep track of
time until they hatch in order to make it more consistent.
## Why It's Good For The Game
Changeling eggs should work, right? Also, making the egg timer not
completely reliant on a passed in magic number and the whimsies of
Life() being proc'd when it should be consistently for 4 minutes should
make the egg feel more reliable to use.
## Changelog
🆑
fix: Changeling eggs laid by headslugs work again
fix: Changeling egg incubation times should feel much more consistent,
hatching after 4 minutes
/🆑
## About The Pull Request
See #80673
I took a nap and got an idea how to make it better, so here we are
Less snowflake code, very robust, very good
Technically runs way more checks so it is slower but eh I believe it's
worth it in this case
Fully tested, it works as it should
## Changelog
🆑
code: The check that prevents your stuff from dropping when you have
robotic parts is now more robust
/🆑
## About The Pull Request
`Trigger` has two args for CD actions, first is trigger flags and second
is target of the action (for AI). In this case it forgot the first.
## Changelog
🆑 Melbert
fix: Blood Drunk Miner (Hunter version) should dash a bit more.
/🆑
## About The Pull Request
What it says on the tin. The color you get from runechat is currently
tied to your `name`, which doesn't accurately reflect how your character
is speaking in all cases.
What this change means: now things like voice changer masks, changeling
mimicry, and voice change disease will now actually change the color of
your voice to match the mob you are speaking in the voice of.
As a result it should now be impossible to figure out whether someone is
voice changing from looking at their runechat color and knowing what the
real mob's color was.
## Why It's Good For The Game
Just feels like an oversight that it didn't do this in the first place.
## Changelog
🆑
fix: if your voice changes (e.g. through a voice changer or changeling
mimicry) your runechat will now appear as the mob you are speaking in
the voice of
fix: when doing emotes with your face obscured, your runechat color will
now appear as either that of Unknown or the mob you are wearing the id
of (if you are wearing a mask with someone else's id)
/🆑
## About The Pull Request
Fixes#80851Fixes#73622
Thanks to iprice for bringing this to attention and Isratosh for
assistance on Sybil.
This PR removes some (hopefully) redundant
if(!SSticker.HasRoundStarted()) checks which prevented roundstart mobs
from getting added to the living players list and pre-roundstart
observers from being added to the observers list.
This affected the ability for midround antagonists with a minimum
population requirement to spawn when they should have been able to,
pre-roundstart observers could not get polled for ghost roles, and some
other silliness regarding antagonists which considered the living
station population.
Nobody is really sure why this check was here in the first place outside
of some sanity check with an unknown purpose. The only thing it would
impact at one point was regal rats, but you can't play as regal rats
pre-roundstart anymore, and even then they should be counted amongst the
living players of the round, no? Since players can spawn in before
roundstart only with admin goofiness now, hopefully removing these
checks won't break anything.
## Why It's Good For The Game
This was preventing pretty much any midround antagonist from being
picked to spawn outside of Sleeper Agents in most cases. Also,
pre-roundstart observers should have access to midround antags and other
observer-related activies.
## Changelog
🆑
fix: Dynamic midround rolls will properly consider roundstart players as
part of the living population again, allowing antagonists with a minimum
population value to spawn when they should be able to.
fix: Players who observe before roundstart can be considered for
midround ghost roles again.
fix: Some antagonists which had elements that scale with living station
population now function properly again.
/🆑
## About The Pull Request
Adds a limit to burn damage that can be caused by freezing temperatures.
## Why It's Good For The Game
Fixes https://github.com/tgstation/tgstation/issues/80302
## Changelog
🆑 LT3
fix: Morgue trays and freezing temperatures will no longer husk bodies
fix: Organs outside bodies will properly receive cold damage
/🆑
## About The Pull Request
Replaces natural beheading (doing a lot of damage to the head) with
cranial fissures, which split your skull in half.

While you have this wound, your eyes can be pulled out of your head with
bare hands, and slipping will spill your brain out of your head.
Removes beheading objective from traitor.
Zombies can be beheaded all the same.
Any other way of beheading, such as surgery or amputation shears, is
still possible.
Closes#80439
## Why It's Good For The Game
I've enjoyed seeing the results of the test merge to remove natural
beheading. At 947 beheadings in a week, 1 in every 7 deaths resulted in
a beheading. This makes it significantly easier to remove people from
rounds as the brain is generally critical to actually reviving someone.
While round removal is fine, it should be something that is
intentionally performed with enough effort. Mass round removals ought to
require a significant amount of effort. There are plenty of ways to
round remove someone, but it ought not be an incidental choice.
The effects of beheading removal have shown some interesting anecdotal
highlights (nothing here is backed up with stats, so take it with a
grain of salt):
1. As a whole, people did not really replace it with anything. The
biggest alternative has been lighting people on fire, but this has not
been done at a significant enough scale at all to be a noteworthy
problem, and is still fixable with enough effort.
2. Cult and rev rounds have played out far more interestingly. In one
round I was adminning a head of staff who intended to behead every
revolutionary they saw, but because they didn't, the back and forth
continues. I've also had opportunities to revive head revs that I am
skeptical would've been available to me otherwise.
Complete removal of beheading was not chosen as it does not feel right
for a repeated fire axe to the head to do basically nothing. The current
implementation is intended to be something that is just not useful
enough to do on everyone you see, but is still appreciably an effect.
## Changelog
🆑
balance: Instead of too much damage to the head beheading someone, it
will now split their skull in half. While their skull is open, you can
rip out their eyes with your hands. and they will spill their brain out
of their head if they slip.
balance: The Path of Blades ascension will accept either a beheaded
person, or someone with their skull split open.
del: Removed the beheading objectives from traitor.
/🆑
## About The Pull Request
Fixes#80566
Fixes the wrong arguments being passed to
`COMSIG_LIVING_EARLY_UNARMED_ATTACK`.
It now properly receives the proximity flag.
Changes clicking with handcuffs to no longer always assume no proximity.
Replaces some checks for hands blocked to some checks for
`can_unarmed_attack` (which, currently, JUST checks for hands blocked,
but this is good for future reasons, just in case)
## Changelog
🆑 Melbert
fix: Strong arm implant users can shove more correctly.
/🆑
## About The Pull Request

Tin. Just more uncovering of some of these image harddels.
`blueprint_data` is a list of images.
I also went through the code and looked for any more instances of images
being qdeleted that I could find.
## Why It's Good For The Game
Hard dels begone
## Changelog
🆑
fix: fixes an /image harddel in station blueprints
code: cleaned up some more /image qdels
/🆑
## About The Pull Request
instead of 0 additive slowdown now they have 1.2, moving at a
comfortable pace now
previously if you did not react fast enough and they hit you even once
you could not outrun them because damage slowdown and they moved
ridicilously fast like an assistant on crack
## Why It's Good For The Game
fixes#79799
## Changelog
🆑
fix: After a raid on the local drug mafia in the sector by TerraGov, the
Russian Mobsters no longer have access to easy drugs and as a result are
no longer 24/7 running faster than the average spaceman.
/🆑
## About The Pull Request
uhh touch with empty hand and off combat mode and they change combat
mode now
## Why It's Good For The Game
fixes#80584
## Changelog
🆑
fix: you can use your hand to make minebots go into combat mode again
/🆑
## About The Pull Request
There were several instances of this being misspelled as 'kenetic'
rather than kinetic. This fixes that.
## Why It's Good For The Game
oughe
## Changelog
🆑
spellcheck: Corrects every misspelled 'kenetic' in the codebase.
/🆑
## About The Pull Request
Ghosts can examine people to see Wanted Status and view their Sec
Records which show crimes
## Why It's Good For The Game
More fun observer experience. You can already see the "W" hud, so more
info is nice

## Changelog
🆑
qol: Ghosts can now view Wanted Status and Sec Records by examining
people
/🆑
## About The Pull Request
bots will automatically add things it cant reach to a temporary
blacklist and ignore them until the blacklist is cleared. this however
can cause issues if u move out of the way of a stationary medbot while
its healing u, so it deems u unreachable and not try to heal u until the
blacklist is cleared
## Why It's Good For The Game
bots will automatically add things it cant reach to a temporary
blacklist and ignore them until the blacklist is cleared. this however
can cause issues if u move out of the way of a stationary medbot while
its healing u, so it deems u unreachable and not try to heal u until the
blacklist is cleared
## Changelog
🆑
fix: stationary medbots will no longer ignore u for a while if u move
out of their way while healing
/🆑
## About The Pull Request
Tin. This was another /image hard del that I came across within a given
round. AFAIK this was occurring because `updateallghostimages()` removes
refs of these images from GLOB.ghost_images_default and
GLOB.ghost_images_simple, and this proc was being called after
`QDEL_NULL()`. So they were still in the lists at the time of the
qdeletion. We don't need to be qdeleting them at all though so let's
just set them to null.

## Why It's Good For The Game
Reduces the lag.
## Changelog
🆑
fix: fixed an /image hard del in ghost code
/🆑
## About The Pull Request
Guardian abilities (given to the host) now work while unconscious/crit,
just as it worked when it was verbs in the stat menu, which was lost
when it got turned into an action button.
## Why It's Good For The Game
Brings back the old behavior where creators in critical condition / put
to sleep can still communicate with their holoparasite, allowing
guardians to still receive orders while the host is incapacitated.
The chat box that comes up from pressing the button already works if you
open it before being incapacitated, so it's just the button itself that
needs to work,
## Changelog
🆑
fix: Guardian host's ability buttons now works while the host is
sleeping/unconscious.
/🆑
## About The Pull Request
Don't put the element on the item itself, put it on the thing it's being
applied to
## Changelog
🆑 Melbert
fix: Fixed Fugu Gland applying to mobs incorrectly
/🆑
## About The Pull Request
- **Removed attack_slime**. Most of the attack_slime content has been
moved to a proc that signs up for COMSIG_LIVING_UNARMED_ATTACK. Its
ugly, but will make converting slimes to a basic mob easier. They now
use attack_animal for now, which might cause some unexpected
interactions. Hopefully when they are converted to basic mobs, these can
be cleared up properly.
- This caused some issues with cyborgs, who used to get only half damage
dealt to them. As refactoring this would have been too much of a
difficult task without much real gain, after much pondering, I have
decided that since slimes can always flash cyborgs with each of their
strikes, maybe cyborgs should only fear slimes that have electric
charges in them. In addition, slimes electric charges decrease now after
they successfully zap an cyborg, making them more consistent with the
zaps that affect carbons. AIs are still fully immune to slimes.
- The slime.dm and slime.life files were extremely bloated, and
unorganized. I have created two new files, defense.dm and ai.dm. I have
moved the various attack_by/attack_hand/etc procs to defense.dm. Ai.dm
now contains every single proc the slime's "AI" uses; this should help
getting a clearer picture of the current functionality, which should aid
with basic mob conversion and decision tree creation. The remaining
files have been slightly organized, with overrides in front, and new
procs at the back.
- Created a proc for swapping out Adult and Baby states of a slime.
Previously, attack_slime was in many cases ignoring fields like
melee_damage_lower and melee_damage_upper, replacing it with magic
numbers based on the slime's lifestate. Now these values are hard set by
these procs. This has caused slimes to be more consistent, though baby
slimes might do a bit less damage on the low end. I am tempted to turn
these in datums in the future, or as part of this PR.
- Removed baby slime's chance to accidentally attack a window/grille by
bumping into it, they had 0 object damage anyways, unlike adult slimes,
so there was no reason not to early return.
- The proc of `handle_feeding` assumed adjustBruteLoss and adjustToxLoss
return positive values when damage has been done, when in reality, it
returns the total health change along with its direction. This meant
slimes would fell off simple or basic mobs after a single bite. This has
been fixed.
- Also updated the warning before the slime type defines, as they were
out of date.
- I have removed the bespoke spacewalk override for slimes, which should
allow them to drift, should gravity go out.
- The nutrition stats are assigned only once, when the slime grows up,
instead of compared to being an adult every life tick
## Why It's Good For The Game
Less duplicated code.
This refactor should help in the basic mob conversion process.
Cyborgs have an easier time wrangling slimes, who could previously kill
them in three hits, if charged. They are mostly encased in metal, they
should feel fine when not hit with electric attacks.
Lets slimes feast on delicious corgis.
## About The Pull Request
Whenever a carbon mob (players and monkeys for example) throws
something, it makes a small motion forward similar when striking
someone. It also makes a noise when throwing something.
https://streamable.com/ikjytk?src=player-page-share
The sound, volume, and pitch will change depending on the weight of the
item, the thrown distance, and your power levels for throwing.
Also fixes a small oddity in chat saying that dwarves were throwing
"really hard" things despite being weaker than a normal human.
This was noticed from a downstream (Skyrat) and I thought this could be
something added upstream.
The original credits go to [Gandalf2k15](https://github.com/Gandalf2k15)
and [Azarak](https://github.com/Azarak)
## Why It's Good For The Game
Currently, when you throw something, your sprite stands still, silent,
and motionless, as an item suddenly appears from _somewhere_. Depending
on how fast the projectile is, you can't see who has thrown it until you
check the chat.
Making your sprite motion when throwing gives a better feedback on who
has thrown something while also being aesthethically nice. If punching
things makes your sprite move and make noise, then throwing could also
have this same visual.
## Changelog
🆑
image: Throwing things has now a sprite animation forward your target.
sound: Throwing things also has a sound accompagnying it.
spellcheck: Dwarves don't throw things hard like hulks. Instead their
throws are described as "flimsily".
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
The list formatting for these sounds got all messed up somehow. This
just puts it in line with the code standards.
## Why It's Good For The Game
I can look at this code without feeling mild despair
## Changelog
N/A
## About The Pull Request
See name, losing your jumpsuit with a robot chest/legs no longer spills
your stuff over the floor
## Why It's Good For The Game
Having a robot chest allows you to use the belt and ID inventory slots,
with legs adding pockets respectively, even when you don't have a
jumpsuit. Losing it probably shouldn't drop all your stuff when the
slots for it are still valid.
## Changelog
No idea if this is a qol, fix, add, or balance change. Feel free to edit
this to whichever one it's supposed to be
🆑
fix: Having an inorganic chest/legs no longer makes you drop your ID,
belt or pocketed stuff upon losing your jumpsuit
/🆑
## About The Pull Request
if the creator of the statue got deleted, it might cause a hard delete.
also i noticed this variable wasnt being used so i removed it and
instead directly added the ref of the creator to the mob's faction list.
also i noticed the proc that was setting it had alot of nested
typechecks so i split it into child procs
## Why It's Good For The Game
fixes a hard delete
## Changelog
not player facing
## About The Pull Request
This pull request adds a new path.
The cross path is between ash and lock.
Credit to Fury McFlurry for the following sprites:
ring_leader_effect
The path goes as follows:
Moonlight Troupe
Grasp of Lunacy
Smile of the moon
> Sidepaths:
Mind Gate
Ashen Eyes
Mark of Moon
Ritual of Knowledge
Lunar Parade
Moonlight Amulette
> Sidepaths:
Curse of Paralasys
Unfathomable Curio
Unsealed Arts
Moonlight blade
Ringleaders Rise
> Sidepaths:
Ashen Ritual
Last Act
Moonlight Troupe:
The first knowledge of path of moon, lets you make Lunar Blades with 2
iron and a knife
Grasp of Lunacy:
The grasp of this path hides your name for 15 seconds after use, but
more importantly it causes the person hit with the grasp
to hallucinate everyone as indistinct human like figures.
Smile of the Moon:
A pointed spell that causes temporary blinding, muting, deafening and
confusing on the person its targeted at, these effects
last longer the less sanity your victim has.
https://github.com/tgstation/tgstation/assets/120136161/db7cfaaa-8fe2-4f20-aa78-c17c17be4d63
Mindgate:
Lock-Moon. This spell causes you and your victim brain damage, the
victim also suffers a short amount of hallucinations
and also 20 oxyloss.
https://github.com/tgstation/tgstation/assets/120136161/11d15acd-11d0-4e7d-a180-6481b18e9fd9
Mark of Moon:
When applied this paths mark pacifies the victim and they remain
pacifist until attacked or until the mark is detonated, when
detonated the victim is left confused.
https://github.com/tgstation/tgstation/assets/120136161/41e601b5-76d4-4765-8b49-ada7de09feb7
Lunar Parade:
A spell that sends out a projectile that causes people hit by it to
follow the projectile whilst being unable to move. The
projectile also bounces around and is really useful to get people off
your back during chases.
https://github.com/tgstation/tgstation/assets/120136161/cddc8390-e8aa-4d68-b1a5-ab181e941a9b
Unfathomable Curio:
Transmute 3 rods, a brain and a belt into an Unfathomable Curio a belt
that can hold blades and items for rituals. Whilst worn
will also veil the heretic, allowing them to take 1 hit without
suffering damage, this veil will recharge quickly outside of
combat. If examined the examiner suffers brain damage and temporary
brain damage, and if a non-heretic uses it once the shield is damaged
the non-heretic user suffers massive brain damage and a permanent
uncurbable brain trauma. Lock-moon
Unsealed Arts:
Allows you to transmute a canvas and an additional item to create a
piece of art, these paintings have different effects depending on the
additional item added. Lock-moon
Possible paintings:
The sister and He Who Wept:
Additional atoms: Eyes.
When a non-heretic looks at the painting they will begin to hallucinate
everyone as heretics.
The First Desire:
Additional atoms: Any bodypart.
Increases the hunger of non-heretics, when examined drops an organ or
body part at the painting.
Great chaparral over rolling hills:
Additional atoms: Any grown food.
Spreads kudzu when placed, when examined grants a flower to the heretic.
Lady out of gates:
Additional atoms: Gloves.
Causes non-heretics to scratch themselves until they remove their
jumpsuit, when examined removes all your mutations.
Climb over the rusted mountain:
Additional atoms: Trash.
Causes non-heretics to rust the floor they walk on and when examined
gives you a cool moodlet
These effects are mitigated for a few minutes when a non-heretic
suffering an effect examines the painting that caused the
effect. Except for great chapparal which spawns kudzu at their feet, and
Lady out of gates which gives them a random negative mutation.
https://github.com/tgstation/tgstation/assets/120136161/1d1bdd2f-cda5-4430-b3af-4742f98a59a8https://github.com/tgstation/tgstation/assets/120136161/4e843ae4-9786-4e9b-8681-582713f4c789
Moonlight Amulette:
Allows the heretic to transmute 2 sheets of glass, a pair of eyes, a
brain and a tie. If the amulette is used on someone with low
sanity they go berserk attacking everyone if their sanity isnt low
enough it decreases their mood. Optionally you can add a
poppy in the ritual to further decrease their mood on hit.
https://github.com/tgstation/tgstation/assets/120136161/ab820b3f-e7e6-407a-9a1a-93d49c0d7387
Moonlight Blade:
Causes the heretics blades to do brain and sanity damage whilst causing
hallucinations. The blades also cause giggling and
laughter on hit.
Ringleaders Rise:
An AoE spell that deals more brain damage the lower the sanity of the
victim, also causes hallucinations that last longer the
lower the sanity of the victim. If the victims sanity is low enoughit
causes them to go insane, the spell then halves their sanity.
This spell is on a longer cooldown and is more meant to be used as a
payoff or an instigator for a fight. The AoE area is 7 tiles
https://github.com/tgstation/tgstation/assets/120136161/4de85ba2-448a-485c-b739-77fcce86c0cb
Last Act:
The ascension lowers the cooldown of all the heretics spells by 33% and
increases the AoE range of Ringleaders Rise. The main
effect of this ascension is a passive sanity drain and hallucination
aura, if you have low sanity in the aura you will start to suffer
brain damage and if you reach the bottom you gain an aura of
hallucinations thus spreading the moon heretics influence
further. Not only that but roughly 1/5th of the crew will rise in
support of you becoming mini-heretics called acolytes that will attempt
to obey your commands!
I had videos showing off everything but they were too big for github
sadly so I will have to think of some other way to showcase all this
stuff.
This pr also adds a new optional atoms system which means that you can
have rituals that can be improved by adding additional atoms, like for
example moonlight amulette.
Feel free to give some suggestions for further ascension effects.
## Why It's Good For The Game
I feel like heretic is really missing a playstyle around insanity and
this slots neatly in to feel that gap. For being an eldritch antag of
horrors there is surprisingly little interaction with the sanity system
and I feel like this makes up for it, heretic is also missing some
distractions which is where the paintings can really shine and the
hallucinations which breed paranoia.
## Changelog
🆑
add: A new heretic path opens up! Gaze up at the great sky for the path
of the moon opens and the lie shall be slain in pursuit of ultimate
truth!
fix: Fixes the syndicate delusion not working
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
`/datum/crystal_warp_theme` and `/datum/dimension_theme` both do very
similar, if not identical behaviors, so we can combine them pretty
painlessly.
## Why It's Good For The Game
This gives the crystal more options for themes to pick from, and the
dimensional anomaly more wacky themes to pick from.
## Changelog
🆑 Melbert
refactor: Refactored the area transformation colossus crystal effect to
use the same system dimensional anomalies use. That means the colossus
crystal now has access to some dimensional themes (bamboo, plasma,
glass) and the dimensional anomaly now has access to some colossus
themes (jungle, alien).
/🆑
## About The Pull Request
fixes#80552
removes a single if statement that makes borgs dgasp when dying to _not_
gibbing, which they already did
from what i checked mob/living/silicon/death(gibbed) didnt do much, but
idk if its something important
## Why It's Good For The Game
Cyborgs couldnt play dead since a single dgasp meant the cyborg wasnt
dead
## Changelog
🆑
fix: Cyborgs do not deathgasp twice when dying anymore
/🆑
## About The Pull Request
turns hygenic bots into basic bots. also now PAIs and people can play as
hygeinebots. and they can wear hats
## Why It's Good For The Game
transforms hyginebots into basic bots. their old AI used to handle all
the logic. i moved some of the logic to the mob itself so players can
also clean (or burn) things. also this pr will add pathing limits to
bots, in the case the jps movement thinks it can reach something, but
actually cant, in which case the bot will give up the chase
## Changelog
🆑
refactor: hygeinebots are now basic bots. please report all the bugs
fix: fixes hygenebots not being able to patrol
add: hygeinebots can now be controlled by Players
/🆑
Holodeck takes apart all hologram atoms, blindly. This breaks a lot, but
most notably people.
I've also went and given monkeys organs again, which were removed in
#79068. This broke incredibly hard, because monkeys can't live without
DNA or organs (who would've thought)
Fixes#80369, #79184🆑
fix: Holodeck monkeys are properly cleaned up now
fix: Holodeck monkeys have organs now
/🆑
Look they're so happy and wont gib on deload

---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
The zlevel movement verbs Up and Down didn't check for if you were
remotely controlling something else before issuing its movement. This
was perceivable when trying to use an advanced camera console like the
Xenobiology consoles and attempting to use the hotkeys for those verbs,
for instance in a station like Tramstation where Xenobiology and
Cytology span two z-levels.
## Why It's Good For The Game
This behavior is similar to the way the AI eye moves, and it works there
- so I have to assume this check was left out by accident. By fixing it,
it'll make some xenobiologist lives easier, and prevents confusion from
there being a HUD action for something without a hotkey in that case.
## Changelog
:cl:Echomori
fix: trying to move up or down while controlling an advanced camera
console now properly moves the camera up or down, not your body
/🆑
## About The Pull Request
The loop variable was from before we started applying the `as anything`
key and single-letter. Also there was a small runtime which comes from
calling `stage_act` on a cured/deleted disease.
## Why It's Good For The Game
Runtimes bad, updated code good.
## Changelog
N/A
Fixes#80640
I got a heart attack when I saw the issue report, but it was borg only.
The bugs between drones and borgs were completely unrelated
Borg polymorph would tear your brain out and kill you instead of putting
your brain in the MMI and your identity in the borg
🆑
fix: Fixes borg polymorph
/🆑
## About The Pull Request
Felinids play the sound effect that humans do when using the *gaspshock
emote
## Why It's Good For The Game
Seems like an obvious oversight and I was told on discord it was fine to
PR
## Changelog
🆑 PapaMichael
sound: added *gaspshock emote sound effect to felinids
/🆑
# attempt 2 of #80569 (no rizz, gyatt, or mothblocks this time)
# created via https://github.com/AlexMorgan3817/ss13-vox
## About The Pull Request
69 or so roughly new phrases
words of note: felinid, jolly, christmas, lightbulb, present, presents,
lizard, lizardperson, never, thanks, while, was, okay, had, her, some
numbers, ever
wordlist used (duplicates inside:)
[common.txt](https://github.com/tgstation/tgstation/files/13765603/common.txt)
https://github.com/tgstation/tgstation/assets/70376633/adaa1607-8c18-4fed-a6e8-1b7ac0db3303https://github.com/tgstation/tgstation/assets/70376633/ffbd1b1d-6b2c-4921-ae77-45ea4056348f
## Why It's Good For The Game
vox shenanigans
## technobabble
anyway so getting the shitty project running took me 80 hours or so over
many attempts but
the linked fork has less of that poetry python bullshit
just dont install python3.6 its pointless, install python3
anyway so run sudo python3 setup.py
follow instructions till it actually works
generate.sh will not work well so just run "sudo python3 create.py"
directly
also you could just skip the sudo part by just running sudo -i before
all that
create.py will create both voices for vox_masc and vox_fem for some
reason but you could avoid that by removing masc or whatever the fuck
the sex is called from create.py to save some time by doing fem solely
also you should set codebase to tg in codebase.yaml and replace
tglist.jinja2 in templates with this
```
GLOBAL_LIST_INIT(vox_sounds, list(
{%- for sex, phrases in SEXES.items() %}
{%- for phrase in phrases %}
"{{- phrase.id -}}" = 'sound/vox_fem/{{- phrase.id -}}.ogg',
{%- endfor %}
{%- endfor %}
))
```
which should create roughly correct code for tg but you still need to do
some text work
like removing duplicates n stuff and moving sounds from dist/sounds to
the actual proper sound folder
anyway thank you for coming to my rant
## Changelog
🆑
add: 69(roughly?) new vox phrases
/🆑