Weakens stickman summoned from the summon stickman spell.
Its very toxic to play against it only encourages spamming stickmen who
die from 4 laser shots(even after the laser gun buff) This will lower
them to be either 1 hittable or 2 hittable depending what weapon you
have available as exchange of how fast they can be summoned.
Most people who do paper wizard tend to cheese it one or the other way
either trough atmos or having self revives as for example a changeling.
🆑 Improvedname
balance: Weakens summoned stickmen to be 1 or 2 hit
/🆑
This adds two new dropdown menus for AI preferences with holograms and
status displays. It also sets these preferences if admins transform a
player into an AI.
## About The Pull Request
Title.
I saw a comment on psyker code complaining about these species traits
(which admittedly, they suck) and heeded the call to turn all of this
crap into something defined almost entirely by the head bodypart.
## Why It's Good For The Game
Potential to simplify species code further in the future, by delegating
more visuals to bodyparts, which is where most of them should be
handled.
## Changelog
Should not be player facing, unless I fucked up.
---------
Co-authored-by: Time-Green <timkoster1@hotmail.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
[Reduces timer insertion cost by
80%](c9e5b285ed)
Timer name generation involved a LOT of string shit, some in ways where
the string only existed for a moment.
This costs a good bit of time, and can be reduced with only minimal
impacts on the end product, so let's do that. Includes a compile flag to
flip it back if we ever have trouble in future.
This is about 0.1s off init, since we do a lot of timer stuff then too
[Removes STOPPABLE flag from QDEL_IN, moves it to a bespoke
macro](e7a5d7f2a7)
Its a waste most of the time, tho I would LOVE to analyze at compile
time to work out if we care
## Why It's Good For The Game
I like it when we don't spend all of our cpu time just setting the name
var on timers. that's good and not bad.
This saves time fucking everywhere. 15% off explosions, 0.1 seconds off
init, bunch of time off foam. it's just good.
Cherry picked out of #76104 since that was too cluttered (sannnnnn)
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
<!-- 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
Targeting datums will target non-living movables which have livings
inside, such as mechas.
So this casting to living as a bad assumption.
## Changelog
🆑 Melbert
fix: Fix runtimes from Bileworms targeting mechas (or other objects
people are hiding in)
/🆑
## About The Pull Request
The axolotl sprites were based on the lizard sprites so now the axolotl
inhands and onheads will fuel the lizard equivalents to complete the
circle of life.
**Lizard inhands and onheads:**

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

**Space lizard inhands and onheads:**

The held weight of lizards has been changed to tiny because they look
like they could fit into your pocket. This value wasn't specified before
and it seems to default to normal weight, which seems a bit much for a
creature that's about the same size as a mouse.
## Why It's Good For The Game
More cute little animals to hold on your hands. And they can fit into
your pockets now too!
## Changelog
🆑
image: added lizard inhand- and onhead sprites
image: added space lizard inhand- and onhead sprites
fix: changed held weight class of lizards from normal to tiny
/🆑
adds the Vorpal Scythe, a special chaplain null rod variant, replacing
the Reaper Scythe, a not so special null rod variant.
When you choose the vorpal scythe, it comes as a shard that you implant
into your arm, similar to a cursed katana.
Once implanted, you can draw it at any time like an arm implant.
However, sheathing it again presents some problems. (Also, implanting
the organ gives you ``TRAIT_MORBID``, which I'll explain in a bit)
The Vorpal Scythe has 10 force, one of the weakest null rod variants for
force that isn't a joke null rod. However, it has exceptional armor pen
and also has 2 tiles of reach. So quite unique.
It also has a special beheading ability when you right-click someone.
This borrows some code from amputation shears, functioning pretty
similarly, except with a few additional ways to speed up the action and
restrictions. (It takes 15 seconds baseline to behead someone standing
and conscious, and speeds up or slows down based on factors such as
incapacitation and whether or not our scythe is already empowered)
When you successfully behead someone with a mind, the vorpal scythe
gains 20 force and can be safely stowed and drawn for 2 minutes.
Performing more death knells like this will reset the timer.
If it has not performed its 'death knell', or you haven't hit a living
mob, then it will cause severe damage to you if you ever try and stow it
(or its forced back into your arm). Just hitting a mob with the scythe
will sate it for 4 minutes. Unless it is a non-player monkey. Horrible
things. Just hitting mobs does not reset the timer on empowerment.
What this means is that the chaplain may be more hesitant to simply draw
their weapon on people. It also means that potentially, the chaplain
will not always have magic immunity, since they may end up stowing the
weapon away and be reluctant to draw it on a whim without either taking
damage for sheathing it without hitting something, or dealing with
having one less hand up until they can.
While empowerment only happens when you behead mobs with a mind,
beheading monkeyhumans and other mindless humans subtypes causes their
heads to become haunted! It's mostly harmless and largely just SpOoKy.
We don't want heads with actual players in them to go floating off to
space. (Does not work on monkey heads for sanity reasons)
When you have the Morbid trait, you think creepy stuff is cool and hate
saving peoples lives. You get a mood boost from graverobbing, autopsies,
dissections, amputations (including beheadings with the scythe and
amputations with the shears) and revival surgery. However, you get a
mood penalty when you tend wounds on the living, as well as a hefty
penalty when you perform CPR or defibrillate someone. I was thinking
Victor Frankenstein when I was choosing which actions had an associated
moodlet, so anything that I might have missed would be appreciated.
You also count as potentially cool with regards to haunted objects.
Ghosts think you're neat. (Revenants probably will still kill you if
they had the chance)
Changed hardcoded matter bins values to use defined
`SHEET_MATERIAL_AMOUNT` for following stuff: autolathe, protolathe, mech
fabricator and component printer.
`Material Access Bar` and `MaterialIcon` used for protolathes, circuit
printers and etc. now also use defined `SHEET_MATERIAL_AMOUNT`, via
static ui data, to prevent same issues in future.
Also changed some notes in /// parts just because why not.
## About The Pull Request
Fire stacks status effect no longer uses a weakref for the mob light, I
am pretty sure there was no real reason to use a weakref there.
Deleted weird luminescent glow dummy, now it just uses the standard
moblight obj.
Put all /obj/effect/dummy/lighting_obj together in a single file and
added a comment explaining why they exist.
(I severely dislike the /obj/effect/dummy typepath, but I am very much
unsure if just replacing all of them with /obj/effect/abstract would
break shit)
## Why It's Good For The Game
Code organization good
## About The Pull Request
[A common problem with explosions is an overabundance of
sleeping](6499077a09)
In an attempt to solve this issue, let's not continue to sleep and do
work in door closing if the door is already deleted
(This is caused by firelocks activating due to other adjacent objects
deleting, triggering an atmos update, and closing the firelocks before
they get bombed. I don't have a elegant way of resolving that core
problem, so let's just minimize the impact)
[Nukes a stupid sleep loop in airlock
code](5b16360520)
When an airlock was depowered, it would enter a sleep loop, decrementing
its delay by 1 second every well, one second, so long as it had the
right wires flipped
This is very stupid
Instead, let's use signals off wire changes and a combo of timer and
remaining time var to do this with JUST a timer
Most of the changes here are just swapping over wires to a setter to
make signal registration work\
## Why It's Good For The Game
Less sleeping around explosions means less dropped ticks after a bomb
goes off. Good just in general
Also this excises dumb boomer code and adds some hooks for other devs to
use (we should use wires more man)
## About The Pull Request
https://github.com/tgstation/tgstation/assets/7501474/a2d83ce8-eba1-42d9-a1f8-9d73f7c40b21
Adds shuttle events! Stuff can now start to happen outside the shuttle,
either benign or spicy (but usually just fun to watch)!
## Why It's Good For The Game
The shuttle escape sequence is an important part of the game, uniting
about every player surviving player. Recently, #71906 has made the
escape sequence more forgiving as well as more interesting by
conditionally doubling the playing field. The area outside the shuttle
is still mostly empty though, except for the few people being spaced,
daredevils and the occasional epic space fight.
This PR adds adds some space events to spice up the outside of the
shuttle! This both gives people something too look at, making the escape
sequence feel less static and more lively, as well as give people a
reason to go outside and get the full experience of ~being decapitated
by a meteor~ swimming with the fishes!
<details>
<summary>Shuttle Events</summary>
**Friendly carp swarm**
Spawns a group of carp that flies past the shuttle, completely friendly
unless provoked.
**Friendly meteors**
Spawns a lot of strong meteors, but they all miss the shuttle.
Completely safe as long as you don't go EVA
**Maintenance debris**
Picks random stuff from the maintenance spawn pool and throws it at the
shuttle. Completely benign, unless you get hit in the head by a toolbox.
Could get you some cool stuff though!
**Dust storm**
Spawns a bunch of dust meteors. Has a rare chance to hit the shuttle,
doing minimal damage but can damage windows and might need inflight
maintenance
**Alien queen**
One in every 250 escapes. Spawns a player controlled alien queen and a
ripley mech. RIP AND TEAR!! Really not that dangerous when you realize
the entire crew is on the shuttle and the queen is fat as fuck, but can
still be fun to throw people around a bit before being torn to shreds.
**ANGRY CARP**
Once in every 500 escapes. Spawns 12 normal carp and 3 big carps, who
may just decide to go through the shuttle or try and bust through the
window if you look at them wrong. Somewhat dangerous, you could stay
away from the windows and try to hide, or more likely shoot at them and
weld the windows
**Fake TTV**
Lol
**Italian Storm**
Once in every 2000 rounds. Throws pasta, pizza and meatballs at the
shuttle. Definitely not me going off the rails with a testing event
**Player controlled carp trio**
Once in every 100 escapes. Spawns three player controlled carp to harass
the shuttle. May rarely be a magicarp, megacarp or chaos carp. I can't
honestly see them do anything other than be annoying for 3 seconds and
die
There are some other admin only ones: a group of passive carps going
directly through the shuttle and just being little shits, and a magic
carp swarm
</details>
Events are selected seperately, there isn't a crazy weighting system,
each just has a chance to run, and multiple could run at once. They also
don't immediately trigger, so people can get settled a bit, and to make
sure just waiting out the more dangerous ones is still a valid strategy.
## Changelog
🆑
add: Adds shuttle events! If shuttle escapes weren't exciting before
(doubtful), they definitely are now! I'm joking it's mostly an
atmosphere thing.
admin: Adds an admin panel to interact with shuttle events, under the
Events tab: Change Shuttle Events
fix: Objects spawned in hyperspace will properly catch hyperspace drift
/🆑
There's a few things I'd like to do later (another PR) (honestly anyone
can do them because I suck at follow-ups), because this is too big as
is:
- Hijack triggered shuttle events
- More events (got a lot of cool suggestions, but I'm putting most of
them on hold)
- Maybe stration announcements if some more dangerous ones get added
- Structures appearing next to the escape shuttle???
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/75838
## Why It's Good For The Game
It's funny but it's a bad evil bug
## Changelog
🆑
fix: Exotic blood types no longer persist through species change if the
new species does not have an exotic blood type
/🆑
## About The Pull Request
Title.
Brute modifier and burn modifier are now handled by bodyparts. Cold
modifier and heat modifier are still handled by species, though
mmmmmaybe I'll make a PR addressing those later, yes?
## Why It's Good For The Game
Medical abominations will have even more consistent behavior!
Also bloating the species datum less is kinda good.
## Changelog
🆑
refactor: Species brute and burn damage modifiers are now handled by
bodyparts, instead of being universal. Go ham at the surgical bay.
/🆑
Moves the scope of the hit_list to the fire_stream proc. It gets passed
as a parameter that the other proc accesses instead of creating a new
list for everybturf.
## About The Pull Request
Moves the scope of the hit_list to the fire breath rather than creating
a new list for every turf action.
This is an untested webedit. I'll test this later.
## Why It's Good For The Game
Closes#75930
## Changelog
🆑
fix: Fix space dragon fire breath hitting the same target multiple times
in a single stream.
/🆑
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
# About The Pull Request
This removes the suicide check from positronic brains.
# Why It's Good For The Game
There seems to be 2 arguments for why suicide should forbid ghost roles:
1. "If they suicided they didn't want to play"
2. "antag rolling"
So let's look at each.
And an addendum on scope: This is meant only to apply to ghost roles
(and new characters from said roles); I do not wish to change that
people are not allowed back onto the same character they suicided on.
## "Suiciders left the round of their own choice and shouldn't be
allowed back in"
There are many, many ways in this game to end up with a character in a
state that's nearly/effectively unplayable, even if the controlling
player doesn't truly wish to completely leave. Some things can be
resolved with competent medical or science staff, but competent staff
are not always available in a round or might be beleaguered by round
events.
Then there are a number of conditions/states which the game provides no
path to resolve (save drastic measures like abandoning the
character/body, of course).
Or one might have simply become stuck in a place where rescue is
unlikely.
## Antag rolling
The problem here is this code does not particularly target antag
rollers. It paints such a broad brush that it simply catches everyone
whom might not know "No no, you have to **ghost** here, not suicide".
Even if an antag roller is stopped once, they'll easily bypass it next
time through the many, many means open to them - and if 'ghost' is made
effectively the same as 'suicide', it simply punishes people who got
stuck or similar even more.
Because of the wide range of means to kill oneself on a normal
character, to effectively stop antag rolling requires discerning intent
through context and patterns of one's actions. This might not be
possible in code until General Intelligence is a solved problem, and if
it is possible, this doesn't do it. It's a shotgun that kills everyone
in the room and if there happened to be an antag roller there, well,
even a stopped clock is right twice a day.
And then, of course, that the code was broken for so long would seem to
indicate it's not done that much.
## Practical Impact and Design Philosophy
Just from my personal observations, even wanting into a posibrain is a
niche thing usually only taken by a small number of the same players
round-to-round. In practice, whether this PR is merged or not likely
won't have a great impact on the game. But that could change if the
philosophy behind this check is applied to a wider number of things.
If someone wants to die, it's not hard. Walk out an airlock. Into the
supermatter. Blob, Xenos, or some other hazard present? Walk towards
them. Step in front of a shuttle. Turn on internals and wait a bit.
Countless other ways. Except, perhaps, if a character is disabled or
crippled or stuck, in which case use of a verb may be necessary.
In other games with much narrower sets of mechanics, it may be possible
to close certain paths on the assumption it would mostly be used for bad
faith reasons. In SS13, the sheer number of ways in which a good faith
character be "screwed" but not quite killed off, and which a bad faith
actor can find to kill themselves while bypassing restrictions placed on
verbs, means that I think this code's design philosophy is harmful to
the game and its good faith players.
# Changelog
🆑
del: Positronic brains no longer check for suicide verb use.
/🆑
## About The Pull Request
Basically #71396 but for armour penetration. The formula gets changed to
be the inverse function of stacking armour. An example is if you had 75%
armour. That is equivalent to having two sets of 50% armour stacked. If
the armour wearer gets hit by a 50% armour penetrating force, it is the
same as losing a piece of armour worth 50%, knocking the 75% protection
down to a 50% protection, instead of 25%.
## Why It's Good For The Game
Makes it more consistent with how armour stacking works. It also lets
very strong armour be less fragile to small armour penetration. Kinda
silly for 90% armour value to be half as effective if it gets hit by 10%
armour penetration. This also allows it to be much easier to balance
lavaland armour and fauna piercing, allowing fauna to pierce through
crew armour while still letting mining armour have significant
protection. That isn't included in this balance change, but it allows
the option for someone to do that without changing any armour values.
## Changelog
🆑
balance: Armour penetration calculation is now the inverse function of
armour stacking.
/🆑
## About The Pull Request
- Refactors the stun absorption list into a status effect
- Does a fair bit of cleanup around stun code
Weird thing involved in this.
Check out this define.
`IS_STUN_IMMUNE(source, ignore_canstun) ((source.status_flags & GODMODE)
|| (!ignore_canstun && (!(source.status_flags & CANKNOCKDOWN) ||
HAS_TRAIT(source, TRAIT_STUNIMMUNE))))`
Notice anything odd about it?
It only checks for `CANKNOCKDOWN`.
What does this mean?
Well, *every single* one of the stun procs used this macro for checking
stun immunity. Which means every method of stun checked the
`CANKNOCKDOWN`.
This means that, say you have a mob which has `CANSTUN` but not
`CANKNOCKDOWN`.
Intuitively this means that the mob cannot be knocked down, but can be
stunned.
But instead, this means the mob can't be stunned either.
This doesn't affect humans, they have all the status flags, but it does
affect some other mobs.
Alien adults (not queens) have `CANUNCONSCIOUS|CANPUSH`. Before, they
didn't have `CANKNOCKDOWN`, so they were fully immune to stuns and
sleeps. But now, they can be knocked unconscious.
However, overall it doesn't change much, as most mobs that flipped off
`CANKNOCKDOWN` flipped off the others too.
For consistency though it makes sense for these flags to work as they
imply.
- `incapacitate` didn't have a signal, now it does
## Why It's Good For The Game
More consistent, better code? I may use this in the future.
## Changelog
🆑 Melbert
refactor: Refactored Stun Absorptions (Bastard Sword, His Grace)
refactor: Refactored Stun Immunity. Note this means that some mobs
which, prior, were immune to all forms of incapacitation are now
vulnerable to some. Notably, adult non-queen xenomorphs are now
vulnerable to falling unconscious.
/🆑
If you latejoin, and arrivals environmental power is off (airlocks
depowered), you start with an emergency large crowbar in your hands (or
floor if both hands are full already)
Some arrival shuttles start with a crowbar, but its not enough if
someone already took it before you arrived.
Being stuck in airlock + firelock CBT especially with no air is very
shit (unless youre the CE or an Engineer who start with tools, unlikely)
Having a crowbar resolves movement
This PR is way less than the file changes make it seem like it is.
Okay, first, the boring part:
- Picking up burning items is now a signal registered on the burning
component itself, instead of being a direct /obj/item/attack_hand()
check
- Sear sound now has an SFX define for convenience, since it is very
commonly used
- Fire stacks when extinguished on mobs will no longer clean acid on
items (WTF?)
## About The Pull Request
Seemed like this emote never got updated to newer "wing organ"
standards.
This fixes some runtimes that are caused by humans without wings using
*wing.
## Why It's Good For The Game
Runtimes, makes the emote a bit more clear on how it's used
## Changelog
🆑 Melbert
fix: Runtimes from wingless humans using *wing
/🆑
## About The Pull Request
What it says on the tin. It was always meant to work like this, but the
code checked whether the positronic brain had the suicided trait rather
than the ghost trying to enter it.
Also removes a redundant check to see if the brainmob is qdeleted.
## Why It's Good For The Game
It's a bugfix.
## Changelog
🆑
fix: positronic brains now correctly reject the ghosts of people who
have used the suicide verb
/🆑
## About The Pull Request
Unit tests will now fail if there's a decal in a wall or open space
turf. Open space turf could be limiting to mappers but I don't think it
makes sense for decals (like dirt, glass shards, etc) to be floating
around in space in the exact same spot.
If there's a decal you want to put in space, decals have a
``turf_loc_check`` var that will bypass this.
**Important note: This is not changing existing behavior. Decals already
delete themselves when they spawn in these incorrect locations, we're
just avoiding them from spawning in the first place.**
### Changes I made
- Ash flora are now lava immune, rivers spawn after flora does, so I
decided that it would be easiest (and more flavorful) to have them be
lava-immune rather than to not have them spawn at all.
- Decals can now be spawned in non-turf locations. This is currently
done by mail, which can give you bones as part of the mail. Currently it
will just delete itself instead.
- Trading Card button is now on the same tile as their display, which
now uses an offset. Before it would spawn it on the tile next to it,
which could be a wall in some instances.
- Mirrors now have floating movement type. They ARE floating since
they're attached to the wall, and it prevents them from burning up due
to lava in the Pride ruin.
- I also added a broken mirror subtype because I thought the icon_state
check was terrible.
- Bubblegum called ``DestroySurroundings`` several times on the same
thing, I hopefully fixed some of that. Their charge ability also
registered ``COMSIG_MOB_STATCHANGE`` despite ``/datum/action`` doing it
by default, so I fixed that too.
## Why It's Good For The Game
Decals in walls is already a bad idea, but currently all it does is
delete it on Initialize. It would be better if we ensured they wouldn't
spawn in the first place.
## Changelog
🆑
fix: Lava will no longer burn 6 of the mirrors in pride ruin
fix: Lava will no longer burn plants that spawn in them.
/🆑
This PR gives a small update to the patch of eden lavaland ruin, and
adds a new item that can be used as an upgrade to the plasma mod core.
The idea around this item is that it's a flower that has absorbed all
the plasma and bad-vibes in the small area around the ruin, leaving an
area full of plants, and a flower full of energy. This flower can be
taken from the oasis and turned into a functional MOD core using some
wires. As a MOD core, it is the same as the plasma mod core, but has a
higher energy capacity, being equivalent to a super power cell. It also
gives you a cool pollen effect, and spawns butterflies around you while
your suit is active. These butterflies disappear when they get too far
away, or if the suit deactivates. They also don't leave corpses, so they
shouldn't cause too much clutter.
## About The Pull Request
Fixes two cases TTS trips over:
1. `COMSIG_MOB_SAY` handlers such as tongues and clothing overwrite the
TTS message, causing stuttered text to pass through to TTS, which
pronounces each stuttered letter individually. **Note:** This fix is to
simply swap the order of `COMSIG_MOB_SAY` and
`COMSIG_LIVING_TREAT_MESSAGE`, I couldn't determine any adverse effects
from this and it actually fixes other stuff (like properly stuttering
added speech from italian mustache).
2. Trims off repeated, consecutive consonants at the start of words in
all cases. This not only fixes lizard "ess-ess-speech" but also flymen
and snails speech. (though snails are still extremely broken)
## Why It's Good For The Game
lizards can ess-ess-speak properly
## Changelog
🆑
fix: fixed TTS tripping over stuttered text when other speech modifiers
are in effect
fix: fixed tedious TTS "ess-ess-speech" for lizards and other species
with repeated consonants
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
## About The Pull Request
This changes the Spaceman simplemobs into basic mobs.
They really didn't do anything besides stand around and retaliate, so no
new AI datums had to be added.
## Why It's Good For The Game
Scratch it from da list.
## Changelog
🆑
code: Spaceman simple mobs have been converted to basic mobs.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
## About The Pull Request
Putting the mostly unused mob height feature, also adds a new accepted
value between tall and tallest mob height (the latter option made a
further pixel taller).
## Why It's Good For The Game
This will put the tall, taller, tallest mob height to good use. It's a
pretty subtle change though.

Screenshot doesn't picture the new "tallest" mob height, which I
modified after seeing there was still some space avaible within the
tile.
## Changelog
🆑
qol: Basketball (the mini-game) player mobs have a chance to be taller
than the usual spaceman.
/🆑
## About The Pull Request
Ventcrawling mobs must now complete a 1 second long do_after before
exiting a vent.

## Why It's Good For The Game
Helps prevent those _wacky silly awkward moments_ where you speed into a
scrubber/vent and accidentally fling yourself out into the open. Having
a bit of a delay should reduce frustrations caused by situations like
these.
## Changelog
🆑 Rhials
qol: Ventcrawling mobs have a 1 second delay/warning before exiting the
ventilation.
/🆑
## About The Pull Request
So far, the offset is updated only when the user is lying down or
standing up, woops.
## Why It's Good For The Game
See the title.
## Changelog
🆑
fix: Fixed a small issue with mob resizing not promptly updating a body
offset variable.
/🆑
## About The Pull Request
Signals were initially only usable with component listeners, which while
no longer the case has lead to outdated documentation, names, and a
similar location in code.
This pr pulls the two apart. Partially because mso thinks we should, but
also because they really aren't directly linked anymore, and having them
in this midstate just confuses people.
[Renames comp_lookup to listen_lookup, since that's what it
does](102b79694f)
[Moves signal procs over to their own
file](33d07d01fd)
[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](335ea4ad08)
[Does something similar to the attackby comsigs (PARENT ->
ATOM)](210e57051d)
[And finally passes over the examine
signals](65917658fb)
## Why It's Good For The Game
Code makes more sense, things are better teased apart, s just good imo
## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
## About The Pull Request
Adds optional (disabled by default) respawn delay. If the player is
observer and have a body, it will firstly check the body. If the body is
destroyed or if there was none, then it will check observer's login
time.
## Why It's Good For The Game
Optional respawn delay is good, when you want players to comeback not
only as a midround event, but don't want them to not care about their
life. Also, if respawn is enabled, removes "money dupe" and other
problems with 0 respawn delay.
This proc can also be used for ghost-roles or anything else, where we
need to check how much time has elapsed since their death, but is not
implemented here.
## Changelog
🆑
add: Added optional respawn delay (disabled by default), which prevents
returning to lobby while dead.
/🆑
## About The Pull Request
Adds a few new quirks so allow for some more individuality from players!
~~They're set to 0 right now for TM purposes.~~ No TM, thus spoke
Melbert.
To-do:
- [x] Bilingual - Random extra language
- [x] ~~Mutated - Random mutation~~
- [x] Big Hands (fetish content???) - Big hands trait (can't use guns)
- [x] Soft-Spoken - Whisper permanently
- [x] Clumsy (not a packet dropper) - Clumsy trait (clown shit)
- [x] ~~Paroled Convict - Spawn with a tracking implant + prisoner
armband.~~
- [x] ~~Fashionista (headmins made me do it) - Lets you pick a scarf
roundstart.~~
- [x] The more the merrier.
## Why It's Good For The Game
Small changes at the cost of a negative quirk or two are a fun way to
develop the story. It's fun! These aren't game breaking and might lead
way to some interesting interactions!
## Changelog
🆑 Chadley
add: Adds some new quirks!!
add: Adds the bilingual quirk, which gives a new random language.
add: Adds the big hand quirk which stops the usage of most guns.
add: Adds the soft spoken quirk which forces you to whisper.
add: Adds the clumsy quirk enabling the clumsy trait.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Short and simple, just converts the changeling's headslug (that ability
they get that lets them infest another body) into a basic mob. Also
touches up some of the code, as well as split up the code such that the
headslug resides in the basic mobs folder, while the eggs are in the
changeling's antagonist folder, rather than one megafile for both.
No AI because this is 100% a player-controlled mob, it never exists in
any other context. No UpdatePaths for the same reason as well, this
shouldn't (and really doesn't) exist on maps because its sole purpose is
player-driven.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Knocks another one off the list, potentially clears up some janky code
with how this operated and just beautifies it overall. I also
standardized the name "headslug" in any applicable context because the
name "headcrab" is quite confusing. Some other code still refers to it
as headcrab/crab, but that's whatever, at least the paths are a-okay
now.
Also opens the door in case someone really wants these to be AI-powered?
That sounds really weird and I don't really support that idea, but it's
indeed possible.

Grow and regrow, the life cycle.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
refactor: Headslugs (the really small slug-like changeling form) are now
basic mobs. They only wander around aimlessly now instead of attacking
corpses all the time, and examining will let you know what type. Should
probably still smash them before they suddenly gain sapience...
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
## About The Pull Request
[Improves the documentation of DCS lists, removes old list of callback
docs that no longer
apply](c3821d9f5f)
[Adds a second signal register to decal rotating, adds a trait to
objects under a tile. STOP DIRECTLY READING HIDDEN LISTS I SWEAR TO
GOD](6b3f97a76a)
[Removes direct reads of the timer list, they were redundant
mostly](14fcd9f8a6)
[Please stop directly reading/modifying the traits list to ensure your
dna rot follows the
brain](ec0e5237ec)
[Marks internal datum lists as well internal with
_](57c6577ff6)
[57c6577](57c6577ff6)
Does the same to _clear_signal_refs() in hopes of keeping people from
touching it
## Why It's Good For The Game
They pissed me off.
Users should not be touching these lists, especially in ways that make
assumptions about their structure and are thus prone to breaking if that
ever changes.
Most of these are close to zero cost changes, using a wrapper to solve
the problem, or just yeeting it
Two aren't, Decals with a direction have gained a second signal register
on init, and things that sit underfloor (cables/pipes) now get a trait
when inserted there.
This should have a minimal impact on memory/init time, bugging
@Mothblocks about it just in case
## About The Pull Request
Mafia players are now sent to their last body when the Mafia game ends,
and in the meantime they have text saying why they are dead.
They can still be revived during this period, and when the game is up
they'll be forced back into their body if alive, if they are dead then
they'll just be able to re-enter their corpse as normal.
Also since I was poking around in Mafia stuff:
- I removed mafia observing because it was unused (this previously was
used to allow ghosts to see Changeling chat).
- I fixed it being a Draw when there was one Town or Changeling left.
- I fixed the role list showing some roles multiple times
- I fixed the Chaplain not being able to use their night ability (and
therefore being completely useless)
- I added prevention to prevent Admins from causing runtimes or straight
up crashing the server, with a very real chance it can happen purely by
accident, through the Admin UI.
I'm hoping to change how this actually does the job because I find it to
be very bad coding practices, but my problem is that everyone who signs
up for Mafia is a ghost, and they are added into the game through their
CLIENTS, so we don't have access on the mafia controller or the role, to
the player's previous body or mind, without this shit.
Also adds a new mafia board icon
Made by tatax and I find it fits more the theme of Mafia than the
current one.
New UI
## About The Pull Request
Hooks the stasis closet thingamajing into `COMSIG_LIVING_DEATH` instead
of checking the animal's stat on `process()`, which makes possessed
animals properly dump the stasis closet's contents upon death or gibbing
(which is death but cooler).
yeah uh this method is hilarious but it does protect the user's body
quite reliably at least lol
## Why It's Good For The Game
Fixes#75829
also probably makes cockroach death saner in some unreported way, this
`. = ..()` vs `..()` is above my non-existent paygrade but it keeps
popping up from time to time
## Changelog
🆑
fix: gibbing colossus possessor crystal possessed animals will no longer
stick the user's body and their stuff into the shadow realm. the animals
will properly drop your corpse when killed or gibbed
/🆑
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
## About The Why It's Good For The Game Pull Request Why It's Good For
The Game
These were accidentally removed from the log
## Changelog
🆑 Tattle
admin: mob tags are now part of the mob tag log again
/🆑
---------
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
## About The Pull Request
On the tin. No new fancy AI wheels or anything, just a simple port.
## Why It's Good For The Game
Knocks another one off the list, just really light stuff. They're a bit
smarter now too, I think the intention was them for them to be pet-like
as well (according to the code). Should be really rather easy to give
them the pet-like behaviors and elements if someone really wants to in
the future, just sorta paving the way for more work to be done to make
mobs more intricate/interesting.
## Changelog
🆑
refactor: Giant ants are now more capable of distinguishing friend and
foe.
/🆑
## About The Pull Request
On the tin. They have pretty much nothing in common with chickens, so no
subtyping. They are in the same folder to keep that whole thing tidy,
though.
Also includes fixes to `growth_and_differentiation` element that I made
for spiderlings, since some stuff was yorked without me realizing. It
pretty much worked flawlessly for these chicks otherwise though. It all
works fine now.
## Why It's Good For The Game
More verbose naming scheme (instead of "holo", we get "permanent"
chicks), smarter AI for chicks, knocks them off the list, etc. etc.
One thing that I wanted to do was to have chicks recognize their mother
(if they had one), but that would be way out of scope for this simple
port PR. I'll dwell on adding something cool for that in the future.
## Changelog
🆑
refactor: Chicks are now a bit smarter, be careful not to squish them!
/🆑
Let me know if the whole "COMPONENT_KILL" thing is cringe, I couldn't
figure out a better way to do it without abusing `GetComponent()` to
`qdel()` it that way.
## About The Pull Request
See #75795. I've checked in the code if similar mistakes were made,
though it seems this is the only one.
## Why It's Good For The Game
This will close#75795.
## Changelog
🆑
fix: Fixes thrown things being unblockable by shields or something.
/🆑
## About The Pull Request
Exactly what it says on the tin (snow legions only dropping ashen
skeletons, like tendril legions).
Also changes the name of the "fromtendril" variable to "from_spawner",
and comments it. Not sure if that warrants a changelong comment, but
I'll go ahead and assume no.
## Why It's Good For The Game
being able to farm snow legion portals for an endless tide of bodies
and/or equipment is a bit weird. also puts it a bit more in line with
the legions of Lavaland
## Changelog
🆑
balance: The source of the demonic portals that endlessly deposits snow
legions onto the Icemoon no longer preserves the bodies nor gear of the
damned (read: demon portal snow legions now only drop skeletons).
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
See the title. Doing so by adding a new arg for damage type to
`check_shields()` and `hit_reaction()`. The other way would had involved
a couple istype checks for item or projectile damage type, but this is a
longer term solution and can tackle more than just that.
## Why It's Good For The Game
Fixes#74876.
## Changelog
🆑
fix: Stops shields getting broken by pillows and disablers.
/🆑
## About The Pull Request
Abductors can now use any baton instead of just their special baton.
## Why It's Good For The Game
Abductors are a bit fucked if they lose their baton and are unable to
buy one from their shop. Sure they can just use flashes or maint-fu but
those methods are hard and or unreliable. (if they manage to lose their
baton, they probably aren't that robust anyways). This PR gives more
leeway if you fuck up as an abductor.
## Changelog
🆑
balance: The mothership which abductors came from has worked very hard
to train their field agents how to use batons from their specimen's
habitat
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
This PR is a re-pr of ##70522 , with some tweaks:
Notably:
- Wavespeak is not a say override, but instead uses a mindlink. Meaning
carp and space dragons can still talk verbally, but they can also use
telepathy to talk to all carp and the dragon.
- I would refactor Mind Linker a bit further to be a full datum rather
than a component but that's for another time.
- Removed the gravity aura component in favor of using the existing
forced gravity proximity monitor.
- Also fixed a bug involving that. Lol.
- Minor refactoring around the place.
- Reduced the volume on a lot of space dragon sounds.
- Edited the roundend report for Space Dragons to collate all entries
into one per player.

## Why It's Good For The Game
Space dragon still plays pretty "play lame win game" right now, the
optimal strategy for them is to find the cheesiest spot for a portal and
spam their stun / fire breath to make it unreachable.
I was a fan of the original PR so I updated it and brought it back.
## Changelog
🆑 IndieanaJones, Melbert
balance: Space Dragon can no longer choose its rift locations freely,
and instead is given 5 pre-determined locations to pick from instead
balance: Space Dragon itself has been buffed in order to support a more
confrontational playstyle, however its wing gust now requires a line of
sight to targets in order to affect them.
balance: Player Space Carp from rifts now have buffed health, but
reduced object damage values. They also gain a temporary speed boost
when hit by Space Dragon's fire breath instead of taking damage.
balance: Carp rift spawn times have been reduced, the healing AOE is now
a 3x3 instead of a 1x1, and apply normal gravity in a large radius
around them
balance: Space Dragon and rift carps now communicate on a private mind
link channel via action button similar to Raw Prophets and Slimepeople.
fix: Fixed Gravity Generator forced gravity not applying.
fix: Intern Announcer will no longer replace Space Dragon announcements.
qol: The roundend report for space dragons now collates all players who
played a carp into one entry, rather than one per carp spawned.
qol: Space Dragon sounds are much less ear piercingly loud.
/🆑
---------
Co-authored-by: IndieanaJones <mariosuperstar384@gmail.com>
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
## About The Pull Request
Added an argument to compose_message() (visible_name) that sets the name
of the speaker to their visible identity, for messages that can be seen
but not heard, and updated Hear() for sign language accordingly.
## Why It's Good For The Game
Before, your name was attached to your sign message as if you were using
your real voice. Now, your name on sign messages is based off your
visual identity.
It didn't make sense that signing revealed who you were even if you were
wearing a disguise. This appeared to be an oversight rather than an
intentional design decision.
## Changelog
🆑 Epoc
fix: Speaking in sign language no longer reveals your identity
/🆑
---------
Co-authored-by: alec-b-williams <alec.b.williams@wsu.edu>
Co-authored-by: san7890 <the@san7890.com>