## About The Pull Request
If glimmering residue (revenant ectoplasm) is scattered in the vicinity
of a mirror, the revenant will be trapped inside it instead.
-When mirrors are cursed in this way, the reflections are shifty and
distorted, like the revenant's reflection when it's alive.
-In this state, the revenant may only communicate via telepathy with
people reflected in the mirror (it's more like "standing close to it",
but that's probably ok).
-If the mirror is broken, the revenant will reform. If it's catatonic, a
new candidate will be pulled, much like with ectoplasm reforming.
-If the mirror is destroyed in another way, the revenant will be
destroyed as well.
-There is a 1/500 chance that a mirror will be haunted roundstart
## Why It's Good For The Game
You can now torment the revenant by eternally trapping it if it really
pissed you off
## Changelog
🆑
add: you can now trap dormant revenants in mirrors
add: haunted mirrors may very rarely appear roundstart
/🆑
---------
Co-authored-by: l0 <-->
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
## About The Pull Request
Revenants, even while invisible, can be seen in the reflection of
mirrors
<img width="231" height="254" alt="image"
src="https://github.com/user-attachments/assets/135341b8-192c-4f9b-b9c3-0da2c96c6fac"
/>
They have an ethereal, ghostly effect applied to their reflection while
invisible (it's an animation so you can't see it in the picture), this
effect is removed if they become visible. It also doesn't apply when
reflecting in a magic mirror.
Additionally, "Defile" will now break mirrors, though not magic mirrors.
Also, Revenants no longer elevate over tables. They're ghosts after all.
## Why It's Good For The Game
It's a thematically appropriate way for a Revenant to reveal themselves
to the crew without, well, outright revealing themselves.
Also there's a hypothetical world where Medbay puts mirrors everywhere
to catch a Revenant.
## Changelog
🆑 Melbert
add: Revenants are always visible in mirror reflections, even while
invisible.
add: Revenant "Defile" now shatters mirrors.
qol: Revenants no longer elevate over tables.
/🆑
## About The Pull Request
Tin, the proc that's managing references should remove the thing from
the list before calling qdel on it. Also, it should not be calling qdel
on something that's already being qdeleted (which could happen before if
`nuke_reflection()` was reached via the `COMSIG_QDELING` signal).
<img width="1675" height="480" alt="firefox_xIIRCIbgdU"
src="https://github.com/user-attachments/assets/246be9de-6ff0-46a5-bf5e-1d0895fd9f55"
/>
## Why It's Good For The Game
Less hard deletes
## Changelog
Not player facing/should get the hard deletes tag
## About The Pull Request
Fixes#88607
Soft-requires #89358 since I used a proc I added in that in this PR
Mirror reflections from all directions now work as you would... maybe
expect them to work
Becoming a Vampire while in front of a mirror makes you immediately
disappear
https://github.com/user-attachments/assets/d9426da4-1cdc-446f-b501-fdab3ba1a32c
## Changelog
🆑 Melbert
fix: Mirror reflections should be more accurate now
fix: Becoming a Vampire while standing in front of a mirror correctly
vanishes you (rather than waiting to exit and enter the mirror's view)
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@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
Updates mirrors to fit wallening's style, sadly this does mean making
them smaller and only noticably reflective when facing south.


Closes#85836Closes#77476
<!-- 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
Currently they look like floating plates near walls instead of being
actual mirrors
## 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. -->
🆑
image: Mirrors have been successfully wallened
/🆑
<!-- 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. -->
Productionizes #80615.
The core optimization is this:
```patch
- var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
+ var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up.
```
We avoid a heap allocation in the form of copying the args over to a new
list. A/B testing shows this results in 33% better overtime, and in a
real round shaving off a full second of self time and 0.4 seconds of
overtime--both of these would be doubled in the event this is merged as
the new proc was only being run 50% of the time.
## About The Pull Request

Continuing the work of
https://github.com/tgstation/tgstation/pull/77850.
it started with finding one that was being missed and causing a
runtime...then I noticed a whole lot more. While I was doing this I
found callbacks that weren't being nulled in `Destroy()`, so I added
that wherever I found these spots as well as some general code cleanup.
There were a lot more of these than I initially hoped to encounter so
I'm labeling it as a refactor.
## Why It's Good For The Game
Fixes lots of runtimes, improves code resiliency.
## Changelog
🆑
refactor: fixed a bunch of instances of callbacks being qdeleted and
cleaned up related code
/🆑
## About The Pull Request
I was thoroughfully worried this would had been a cursed issue until I
figured it out. Mirror reflections now use render targets to copy the
appearance of the reflected movable, not vis overlays, with a couple
caveats.
## Why It's Good For The Game
This will fix#77431.
## Changelog
🆑
fix: Mirror reflections no longer display progress bars or runechat.
/🆑
## About The Pull Request
This is a revamp of #62638, which is in turn a remake of #49833, a
whooping 3 years old PR, that adds one component to the game, used by
mirrors, to do what it reads on the title. Thanks ChungusGamer for
reminding me about it.
This time with vampires not being shown in mirrors.
## Why It's Good For The Game
I'm going to post the old screenshots here since I've forgot to take
some during the latests tests, while I was busy cussing about a tiny
little detail I couldn't achieve (see the documentation on the component
path so I don't have to be verbose about it). They look more or less the
same, except the visuals look a little less cropped now, ergo
nicer-looking:

and here another from the previous attempt at PRing this:

## Changelog
🆑
image: Mirrors now display a reflection of the mobs next to them...
except for vampires.
/🆑