Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes Space Phase softlock #83241

Merged
merged 2 commits into from
May 17, 2024
Merged

Fixes Space Phase softlock #83241

merged 2 commits into from
May 17, 2024

Conversation

Absolucy
Copy link
Contributor

@Absolucy Absolucy commented May 15, 2024

About The Pull Request

It's very easy to get softlock if you try to use a codex as a focus for Space Phase - you'll drop the codex, resulting in you having no focus, and you can't re-cast Space Phase in order to exit the jaunt, requiring admin intervention in order to escape.

This just makes it so you're ejected from the phase if you ever lose your focus mid-cast, or if you lose consciousness (crit, dying, etc)

Why It's Good For The Game

Because softlocks are bad and unfun.

Changelog

馃啈
fix: You will now be ejected from Space Phase if you lose your focus or lose consciousness somehow during the jaunt.
/:cl:

@tgstation-server tgstation-server added the Fix Rewrites a bug so it appears in different circumstances label May 15, 2024
@DustanHache
Copy link

can you also make a check for being able to cast/eject while in crit?

@Absolucy
Copy link
Contributor Author

@DustanHache done

@Fikou Fikou merged commit c79cedc into tgstation:master May 17, 2024
20 checks passed
github-actions bot added a commit that referenced this pull request May 17, 2024
comfyorange added a commit that referenced this pull request May 17, 2024
@Absolucy Absolucy deleted the cosmic-jaunt-fix branch May 17, 2024 05:05
Absolucy added a commit to Absolucy/Monkestation that referenced this pull request May 17, 2024
## About The Pull Request

It's very easy to get softlock if you try to use a codex as a focus for
Space Phase - you'll drop the codex, resulting in you having no focus,
and you can't re-cast Space Phase in order to exit the jaunt, requiring
admin intervention in order to escape.

This just makes it so you're ejected from the phase if you ever lose
your focus mid-cast, or if you lose consciousness (crit, dying, etc)

## Why It's Good For The Game

Because softlocks are bad and unfun.

## Changelog
:cl:
fix: You will now be ejected from Space Phase if you lose your focus or
lose consciousness somehow during the jaunt.
/:cl:
Absolucy added a commit to Absolucy/Monkestation that referenced this pull request May 20, 2024
## About The Pull Request

It's very easy to get softlock if you try to use a codex as a focus for
Space Phase - you'll drop the codex, resulting in you having no focus,
and you can't re-cast Space Phase in order to exit the jaunt, requiring
admin intervention in order to escape.

This just makes it so you're ejected from the phase if you ever lose
your focus mid-cast, or if you lose consciousness (crit, dying, etc)

## Why It's Good For The Game

Because softlocks are bad and unfun.

## Changelog
:cl:
fix: You will now be ejected from Space Phase if you lose your focus or
lose consciousness somehow during the jaunt.
/:cl:
Absolucy added a commit to Absolucy/Monkestation that referenced this pull request May 20, 2024
## About The Pull Request

It's very easy to get softlock if you try to use a codex as a focus for
Space Phase - you'll drop the codex, resulting in you having no focus,
and you can't re-cast Space Phase in order to exit the jaunt, requiring
admin intervention in order to escape.

This just makes it so you're ejected from the phase if you ever lose
your focus mid-cast, or if you lose consciousness (crit, dying, etc)

## Why It's Good For The Game

Because softlocks are bad and unfun.

## Changelog
:cl:
fix: You will now be ejected from Space Phase if you lose your focus or
lose consciousness somehow during the jaunt.
/:cl:
Absolucy added a commit to Absolucy/Monkestation that referenced this pull request May 20, 2024
## About The Pull Request

It's very easy to get softlock if you try to use a codex as a focus for
Space Phase - you'll drop the codex, resulting in you having no focus,
and you can't re-cast Space Phase in order to exit the jaunt, requiring
admin intervention in order to escape.

This just makes it so you're ejected from the phase if you ever lose
your focus mid-cast, or if you lose consciousness (crit, dying, etc)

## Why It's Good For The Game

Because softlocks are bad and unfun.

## Changelog
:cl:
fix: You will now be ejected from Space Phase if you lose your focus or
lose consciousness somehow during the jaunt.
/:cl:
Absolucy added a commit to Absolucy/Monkestation that referenced this pull request May 24, 2024
## About The Pull Request

It's very easy to get softlock if you try to use a codex as a focus for
Space Phase - you'll drop the codex, resulting in you having no focus,
and you can't re-cast Space Phase in order to exit the jaunt, requiring
admin intervention in order to escape.

This just makes it so you're ejected from the phase if you ever lose
your focus mid-cast, or if you lose consciousness (crit, dying, etc)

## Why It's Good For The Game

Because softlocks are bad and unfun.

## Changelog
:cl:
fix: You will now be ejected from Space Phase if you lose your focus or
lose consciousness somehow during the jaunt.
/:cl:
dwasint pushed a commit to Monkestation/Monkestation2.0 that referenced this pull request Jun 3, 2024
* Fix runtime with mob tracking

* fix a harmless but annoying init runtime

* fix some weird runtimes

* More runtime fixes

* Fix a silly useless runtime

* The shuttle won't gib you anymore while you're in jaunt (tgstation#83134)

## About The Pull Request
As it's said in title, the shuttle will not gib you now while you in
jaunt. This applies to a mage, a (s)laughter demon, an ash heretic and
anything that uses spell "jaunt" and its child classes.
## Why It's Good For The Game
I think it's pretty counterintuitive that you can't be harmed by
anything in the jaunt, including an explosion, but if you accidentally
end up on the tile where the shuttle arrives, it deletes you. So, this
PR closes this logical hole.
## Changelog
:cl:
fix: The shuttle will no longer delete you while you are in jaunt
/:cl:

Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>

* Fix "Aheal" for ears deafness (tgstation#82448)

## About The Pull Request
Make the admin button "Aheal" and Magic Wand of Healing (resurrection)
actually full heal carbon's Ears.

File _ears.dm contains timer variable "deaf" that should be updated to 0
after complete healing.

But I think this must be properly code-refactored because looks like
it's just duplicates(?) standart variable "damage" for organ type.

## Why It's Good For The Game
Aheal - means FULLY HEAL.

## Changelog

:cl:
fix: aheal now properly heals ears deafness
/:cl:

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* [Fix] Visually closing fakewalls when in fact they shouldn't be closed (tgstation#81353)

## About The Pull Request

Moves update_appearance() proc further after checking if it can be
closed.

It was possible to stand inside an open falsewall, try to close it only
for it to "close" visually and don't change any properties.

## Why It's Good For The Game

Less bugs is good. No more fake-closed falsewalls.

## Changelog

:cl:
fix: Now falsewalls visually don't close when they shouldn't.
/:cl:

* random spawners now check if the destination turf is unblocked in a straight line (tgstation#82323)

## About The Pull Request
random spawners now check if the destination turf is unblocked in a
straight line


![image](https://github.com/tgstation/tgstation/assets/70376633/15fb4e23-95d1-473c-8bba-00b9497f0ca8)

(spammed grime spawner, nothing spawned behind glass)

## Why It's Good For The Game

bug

## Changelog
not player facing

* Fixes Space Phase softlock (tgstation#83241)

## About The Pull Request

It's very easy to get softlock if you try to use a codex as a focus for
Space Phase - you'll drop the codex, resulting in you having no focus,
and you can't re-cast Space Phase in order to exit the jaunt, requiring
admin intervention in order to escape.

This just makes it so you're ejected from the phase if you ever lose
your focus mid-cast, or if you lose consciousness (crit, dying, etc)

## Why It's Good For The Game

Because softlocks are bad and unfun.

## Changelog
:cl:
fix: You will now be ejected from Space Phase if you lose your focus or
lose consciousness somehow during the jaunt.
/:cl:

* Adjusts the font size of signatures to a reasonable value. (tgstation#75993)

## About The Pull Request

Changes the font size of signatures from 30px (pictured left) to 15px
(pictured right). I advise opening them in a separate tab, they're a
little less pixelated than they look.
Original          |         New
:-------------------------:|:-------------------------:

![image](https://github.com/tgstation/tgstation/assets/80640114/62178bc6-ce8b-4127-a086-8e656b3a6092)
|
![image](https://github.com/tgstation/tgstation/assets/80640114/9959e648-2bbe-4060-bcc8-1e87393c0a86)
## Why It's Good For The Game

I'm not sure why signatures were made to be this big, but it made them
hardly fit in any field and look jarring when compared to all the
surrounding text. They are now only slightly bigger than normal text
(12px) so that they stand out but aren't excessively large.
## Changelog
:cl:
spellcheck: adjusted font size from 30px to 15px
/:cl:

* [no gbp] Space Ruin bioscramblers shouldn't chase people around (tgstation#82649)

See title
They wouldn't lock on to people on the station from a space ruin, but
would to whoever entered their z level the second it was entered.
Also fixes bug where I changed `status_flags` to `status_effects` for
some reason which isn't where you look for godmode

We have a space ruin whcih several (coreless) anomalies spawn on, the
bioscrambler was put as an option because it was already immortal. It's
weird though to zone into the ruin and immediately have every anomaly in
there lock onto you, the best intended effect is probably for these ones
specifically not to be bloodthirsty.
We kind of only care about that behaviour on the station.

:cl:
fix: Anomalous Research ruin Bioscrambler anomalies won't home in on
targets
fix: Bioscrambler won't randomly drop its target for no reason
/:cl:

* Adds lag compensation for the supermatter zaps and some antagonists. (tgstation#78174)

Adds delta time scaling for changeling chemical generation, xenomorph
plasma generation, xenomorph resin healing (up to 8 seconds per tick to
prevent weird instant heal phenomena in extreme cases), and revenant
essence generation. This delta time scaling is based on the world's time
and the respective subsystem's last fire. This will help keep these
generation smooth even when their respective subsystem lags, preventing
lag from ruining the antagonists rounds. This can still slow down if the
actual world is slowing down, but that's fine because the rest of the
world will typically be slowing down proportionately so it's fair.

Fixes supermatter zap rate not scaling with its internal energy
properly. Ghilker forgot to scale the time reduction by seconds. It
should be much faster at higher energy levels, making the transition
between 0 and 5 GeV more smooth.

Supermatter zap power generation will scale by the world's delta time
between the supermatter's last zap, making power generation more
consistent even when atmos lags. Also prevents the supermatter zap rate
scaling from also scaling the power generation by extreme amounts,
keeping it linear and consistent for the first 5 GeV (>5GeV has cringe
power multipliers, but I'm going to ignore that for this PR, because I
want this to mainly be a consistency thing rather than a balance thing).
A 1.5GeV supermatter will be able to generate around 800kW* of power. I
forgot exactly what goal of power we want the roundstart SM to produce,
so I might change the scale if I find the target power generation.

* - By generate 800kW of power I mean the energy the actual zaps
contain. Tesla coils don't collect 100% of it. I'll test later to see
how much an actual roundstart SM will output to grid (ignoring SMES),
and I'll try to keep it as close as possible to what it was before this
PR assuming no lag.
Subsystems can disproportionately lag a lot more compared to the rest of
the subsystems and game. This can ruin antagonist rounds as it can slow
their chemicals, plasma or whatever generation grinding to a halt. The
delta time scaling will significantly reduce the impact of lag for these
antagonists, allowing them to play more normally even while the
subsystems their generators run on are lagging.

Supermatter zap rate was supposed to fire every 2.5 or something seconds
at 1.5GeV according to comments on older commits. I just assume they
accidentally forgot to scale their time reduction by seconds, as doing
that made it work accordingly.

For supermatter zap power generation delta time scaling, kinda same
reasoning as for the antagonists. We don't want power generation to stop
because atmos ss is being slow. Scaling between the zaps also prevents a
nonlinear boost to power generation making it even more absurd at higher
energy levels.
:cl:
balance: Supermatter zap power generation scales with the delta time
between its last zaps, preventing faster zapping from scaling power
generation to extreme levels.
fix: Fixes supermatter zap rate not scaling properly. It should zap much
faster at higher energy levels as intended.
qol: Changeling chemical generation scales with the world's delta time,
making its rate independent of subsystem lag.
qol: Revenant essence generation scales with the world's delta time,
making its rate independent of subsystem lag.
qol: Xenomorph plasma generation and resin healing scales with the
world's delta time, making their rates independent of subsystem lag.
/:cl:

* Removes current destination for a shuttle in transit from the destination list (tgstation#75170)

## About The Pull Request

Shuttles with multiple destinations will no longer show the current
destination as a selectable choice during transit.

<details>
<summary>Example</summary>
A shuttle has two possible destinations. A and B. <br>
While at A, the only valid destination is B and vice-versa. <br>
But while in transit to B, _both_ A and B can be chosen as destinations.
<br><br>
The change now hides B as a valid destination, as you are already going
there. <br>
It has the nice side effect of making shuttles with only two
destinations never showing a dropdown list while in transit.
</details>

## Why It's Good For The Game

Telling the shuttle to go to the same place as you're going to doesn't
do anything.

## Changelog
:cl:
qol: Shuttles will no longer show their current destination as a choice
while in transit.
/:cl:

* Fixes getting stuck in the leaning condition when you try to lean facing the wrong direction (tgstation#77002)

## About The Pull Request

What it says on the tin. Was just testing out
tgstation#76704 and noticed that if
you try to lean while facing the wrong direction, you get stuck in the
`is_leaning` state and are unable to lean again.

For the best chance of this not happening, I just moved it to the very
end of the `start_leaning()` proc.

## Why It's Good For The Game

Bugfix

## Changelog

:cl:
fix: fixed a bug that would cause you to be unable to lean again if you
tried leaning while facing the wrong direction
/:cl:

* "Explosive Planted" C4 ghost notification actually shows the C4 (tgstation#80694)

"Explosive Planted" C4 ghost notification actually shows the C4 on the
icon
It looks very strange seeing an image of just a wall, or just a
firelock, this give you info at a glance that "oh it's C4" rather than
having to read chat or hover over the alert
![Screenshot 2023-12-31
192717](https://github.com/tgstation/tgstation/assets/46101244/eef8c51c-1f86-48d4-8425-1622e9c1123b)

:cl:
qol: The "Explosive Planted" alert for C4 actually shows the C4
/:cl:

* uwu fancy shmancy coding features

* Fix jukebox runtimes

* various runtime bugfixes from live runtime logs

* Fix issues resulting from an elevated object being created inside of a non-turf atom (tgstation#83498)

## About The Pull Request

If an elevated object is initialized inside of a non-turf atom, it'll
still make the turf it is on elevated. Permanently. Which is weird.

## Why It's Good For The Game

Randomly elevated turfs are bad. Bugs bad.

## Changelog
:cl:
fix: Fix a rare issue where a turf would remain permanently "elevated"
if an elevated object was initialized inside of a non-turf object.
/:cl:

* Addresses Icon Smoothing Runtimes (tgstation#80171)

## About The Pull Request

Noticed this in the runtime logs on Terry:

```txt
[2023-12-07 02:30:12.334] RUNTIME: runtime error: /obj/structure/table/glass called smooth_icon() without being on a z-level
 - proc name: smooth icon (/atom/proc/smooth_icon)
 -   source file: code/__HELPERS/icon_smoothing.dm,172
 -   usr: null
 -   src: the glass table (/obj/structure/table/glass)
 -   src.loc: null
 -   call stack:
 - the glass table (/obj/structure/table/glass): smooth icon()
 - the glass table (/obj/structure/table/glass): smooth icon()
 - Icon Smoothing (/datum/controller/subsystem/icon_smooth): fire(0)
 - Icon Smoothing (/datum/controller/subsystem/icon_smooth): ignite(0)
 - Master (/datum/controller/master): RunQueue()
 - Master (/datum/controller/master): Loop(2)
 - Master (/datum/controller/master): StartProcessing(0)
```

Glass tables, on their qdeletion (which occurs when someone breaks one
by standing on it), call `QUEUE_SMOOTH_NEIGHBORS()`, which invokes the
smooth on potentially all other glass tables it's merged to. However,
since this is a queueing process that we halt if the MC is choked out or
we're overtiming elsewhere, it's possible that the queued object
`qdel()`s (like if someone is spamming throwing people on 2x1 glass
tables) between fires of `SSicon_smooth`.

Instead of doing a crash on a null z-level, let's check if we're
qdeleted first. It is not unreasonable to just simply early-return
because it is always possible that things just get qdeleted while
`SSicon_smooth` sleeps/postpones work when the server is crunching and
munching cpu time.
## Changelog
No affect to players.

* moar bugfix? moar bugfix!

* dammit

* Fix messed up port

* Fixes runtime with serializing photo metadata (tgstation#83562)

* fix improper RegisterSignal use

* Fix eigenstasium runtime

* Fix `random_(short_)color`

* Fixes smoothing breaking if a map is loaded post init (tgstation#81526)

We'd finish a set of atom creation, then try and smooth those atoms The
problem is they might try and smooth with an uninitialized neighbor,
which wouldn't have its smoothing vars parsed.

This fixes that by pooling "to be smoothed" things into a list based off
the source of the init stoppage, which we then release when we're done.

Also fixes things staying in mapload, even during a sleep. This can
cause massive headaches so it's good to avoid.

This has a cost but it's minuscule (on the order of like 0.006s (6ms
over all of init), so I'm happy with it.

Closes tgstation#77040

馃啈
fix: Maps loaded in after roundstart will no longer have broken
smoothing
/馃啈

* weh proper fix

* fix disappearing id cards

* wehwehwehweh

* fix some prisoner runtimes

* Fixes pete's examine runtime (tgstation#78837)

* Makes Gondolapods great again (tgstation#78900)

## About The Pull Request
Fixes tgstation#73310 

Bug fix for gondola supplypods generated with the Config/Launch
Supplypod admin verb. open_pod() now dumps the contents of the holder
reference it was passed (holder = src supplypod in all cases except for
the gondola pod) allowing gondola pods to actually deliver their cargo.
Mobs in the new gondola pod get their perspective reset instead of being
stuck in the void of nullspace until the pod opens. The mob's plane is
set on the pod opening to allow items to appear on top of the pod, and
reset to standard mob plane on closing.

In the case of a reversing pod, contents are properly stored in the
supplypod and the outgoing mob is qdel'd (new one is spawned when the
pod lands, holder != src should only be true in the case of the gondola
pod).

Fixed a runtime where glow_effect.plane was being modified while
glow_effect is null. Removes incorrect comment.

Everything tested locally.
## Why It's Good For The Game
Makes the gondola supplypod variant actually functional.
## Changelog
:cl:
admin: Gondola supplypods are functional again.
/:cl:

* Fixes camera ref cleanup in alarms processing (tgstation#78839)

Not every alarm area has cameras.

* Removes logging each lua function called on the dm side of things. (tgstation#83483)

## About The Pull Request
As the title says. This should significantly improve the performance of
running lua scripts.

## Why It's Good For The Game
There is a lot of performance overhead in logging each individual
function called by a lua script as can be seen in the following
screenshot:
This is a test done on a local server where I run the
`zombie_controller.lua` script that can be found on the auxlua-cookbook
repository with a lot of AI zombies spawned in.

![image](https://github.com/tgstation/tgstation/assets/37270891/fb8ee2d8-0b4c-49d7-823a-a552cde6cb10)

![image](https://github.com/tgstation/tgstation/assets/37270891/186c2cb0-82f9-4914-bd29-df19e1c0dbe1)

Logging these calls is not necessary as it doesn't provide any real
information to anyone looking for bad actors. Lua scripts are already
logged when ran and they can be examined to spot if the script being run
is done so in bad faith.

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>

* Fixes auxtools hanging on server shutdown. (tgstation#83050)

## About The Pull Request
Does a full shutdown of auxlua when the lua subsystem shuts down. This
should unpin the dll file.

Compare `AUXTOOLS_SHUTDOWN` code with `AUXTOOLS_FULL_SHUTDOWN`, let me
know if I'm mistaken:

### AUXTOOLS_SHUTDOWN


https://github.com/willox/auxtools/blob/bc5b2cf019f0f9b18f46b560a0f730d709171b55/auxtools/src/lib.rs#L346

### AUXTOOLS_FULL_SHUTDOWN


https://github.com/willox/auxtools/blob/bc5b2cf019f0f9b18f46b560a0f730d709171b55/auxtools/src/lib.rs#L365

## Why It's Good For The Game
Fixes auxlua keeping the dll pinned when the server is in a process of
shutting down.

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>

* Cleans up the SS13_base lua file and adds a new lua file for easily handling multiple signals on different objects. (tgstation#82458)

## About The Pull Request
Cleaned up the SS13.register_signal and SS13.unregister_signal, removing
the weird list shifting.
Also adds a new lua file that can be included for the use of registering
different signals on various datums and being able to clear them all in
1 function.
Removed the make_easy_clear_function option when registering a signal
via lua because I don't think it's used by anyone and it lacks any sort
of versatility. Users can just create their own function for clearing
signals from a datum.

Also updates the documentation for HARDDELETES.md as
COMSIG_PARENT_QDELETING was renamed to COMSIG_QDELETING

## Why It's Good For The Game
New handler file makes registering signals in batches a lot easier if
you want to clear them in one go without clearing unrelated callbacks on
the same datum. The list shifting in SS13.register_signal had pretty
significant performance problems, so removing that will make registering
and unregistering signals faster.

## Changelog
:cl:
admin: LUA - Adds a new library called handler_group. Include it in your
files by doing require('handler_group')
/:cl:

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>

* Fixes SS13.register_signal throwing unclear errors when called on deleted datums (tgstation#82597)

## About The Pull Request
See title

## Why It's Good For The Game
More descriptive error message

## Changelog
:cl:
fix: LUA: Registering a signal on a deleted datum will throw a more
descriptive error message.
/:cl:

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>

* Fixes lua breaking when registering signals on turfs (tgstation#83018)

## About The Pull Request
Signals don't get removed on turfs when they're deleted. This fixes that
so that it is reflected in lua as well.

## Why It's Good For The Game
Lua bugfixes

## Changelog
:cl:
fix: Fixed lua scripts breaking when turfs with registered signals get
deleted.
/:cl:

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>

* Micro-optimizes _SendSignal a bit (tgstation#83244)

## About The Pull Request
Instead of iterating over an assoc list and doing a list access, which
has a complexity of O(nlog(n)), it is better to just store a 2 tuple and
access that to get a complexity of O(n)
Check code to see what I mean.

## Why It's Good For The Game

![image](https://github.com/tgstation/tgstation/assets/37270891/1e5d68fa-2e19-473c-a870-e1e0277cbacc)
This is a very hot proc and it's worth micro-optimizing where we can.

The speed increase in doing the following code can be seen here:

![image](https://github.com/tgstation/tgstation/assets/37270891/1b7f00a3-b3c2-4976-b2ab-97eefbbd2459)
Higher is better.

The code that was benchmarked:
```dm
var/list/target = list()

/proc/testa()
    var/list/queued_calls = list()
    for(var/i in 1 to length(target))
        var/data = target[i]
        queued_calls.Add(data, 1)
    for(var/i in 1 to (length(queued_calls) / 2))
        var/a = queued_calls[i*2-1]
        var/b = queued_calls[i*2]

/proc/testb()
    var/list/queued_calls = list()
    for(var/data in target)
        queued_calls[data] = 1
    for(var/data in queued_calls)
        var/a = data
        var/b = queued_calls[data]

MAIN
	for(var/i in 1 to 100)
		target.Add("[i]")
    BEGIN_BENCH(2)
        BENCH_PHASE("New code", testa())
        BENCH_PHASE("Old code", testb())
    END_BENCH
```

## Changelog

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>

* Minor signals memory optimization (tgstation#79153)

This replaces the inner list of signals which tracked receivers with a
flat list instead of the previous keyed list that was used to prevent
duplicates. We have code already checking for duplicates before hand so
we can lean on that to assume the sender already has the receiver
listed. This should also be minutely more performant equal to about a
single if statement but I don't want to bother trying to profile
something so small.

* Fixed lights doing processing when they shouldn't need to. (tgstation#83313)

Lights would do processing if they spawned with a mock cell, since it
would never pass the conditional to see if the cell was full and stop
processing since the cell didn't exist. This fixes that by making it so
that having no cell equates to having a full one.

This is expected since whenever any charge is supposed to be used by the
cell, it will generate the cell which will have full charge.

Fixes a potential performance hog. Metastation dropped from 2800
processing machinery to 1900 after implementing this change.

No player facing changes

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>

* Fixes modified MA overlays potentially causing duplicate overlays (tgstation#78719)

Also optimizes the update_icon proc a little bit, especially as a round
goes on, since everything is stored as an appearance (or text, gross)
this allows us to only call on overlay update code if the managed
overlays change.

![dreamseeker_2023-10-01_18-45-55](https://github.com/tgstation/tgstation/assets/1234602/722a183a-dc19-4e7c-93ba-8a19cde9da5a)

This also fixes some sources of null overlays but it ended up being more
things than I should shove into this pr if I were to fix all of them.

Should probably be testmerged for a little bit to make sure nothing
weird comes from assuming everything being passed in has an appearance
var.

* Fixes sanitizing chemicals (Miner's Salve, Sterilizine, and Space Cleaner) not sanitizing burn wounds (tgstation#78851)

## About The Pull Request

This proc didn't pass itself to the reagents to actually do anything.

## Changelog

:cl: Melbert
fix: Miner's Salve, Sterilizine, and Space Cleaner now all properly
affect burn wounds
/:cl:

* Fixes runtimes in gas_mixture/proc/equalize (tgstation#75420)

## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/58055496/f124ccc1-9e8d-4701-b9cf-9635e1a1f1b2)

Basically, a gasmix's temp starts out at 0, and untouched the spacemix
is not updated until something shares with it.
Even if this doesn't for sure fix it, this is v dumb and worth doing
regardless

## Why It's Good For The Game


![image](https://github.com/tgstation/tgstation/assets/58055496/be8999ab-3da9-4e1d-93e3-88732faf2a8c)
Should close tgstation#75260, it's 4am I'm not gonna test this rn

---------

Co-authored-by: ZephyrTFA <matthew@tfaluc.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>

* Fixes race condition in Life() (tgstation#79934)

## About The Pull Request

This fixes the following runtime by adding sanity checking for
`reagents`:


![image](https://github.com/tgstation/tgstation/assets/13398309/6e83b958-5144-4822-aed6-7ee4bb3d779b)

It can be null, which I presume is from the mob being qdeleted in the
middle of a `Life()` tick but I'm not 100% sure of that.

The check for `QDELETED(src)` happens after `handle_organs()` and
`handle_dead_metabolism()`, which there was no protection against there
being a null reagent var for either of those procs.

I was debating moving the order of the procs around, but I decided
against it because I think it may be this way for a reason
(`organ.on_death()` gets called in `handle_organs()`), plus again I'm
not 100% sure that the `reagents` is being nulled from qdeletion.

## Why It's Good For The Game

Fixes a bug that kept coming up in CI

## Changelog

:cl:
fix: fixed a runtime in handle_dead_metabolism()
/:cl:

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* Fix sleep status effect not processing (tgstation#77637)

## About The Pull Request
Some fixes in tgstation#77219 brought up some weirdness with the sleep status
effect. Healium would perma-sleep people, and sleeping in general lost
the ability to heal minor wounds.

## Why It's Good For The Game
Fix bugs, wow healium is abusable right now

* Fix double-encoded trophy info

* Fixes holorecords not getting the color filter properly (tgstation#74999)

## About The Pull Request

Filters are weird, I just copied over the image copying we use for
standard human/ai work.

Additionally, adds support for datum "owners" for holograms, uses this
to hook records into the system.
This means holorecordings now properly support the ray effect

## Why It's Good For The Game

Closes tgstation#74975 

![image](https://user-images.githubusercontent.com/58055496/234726630-85cd00f6-26df-4514-b0bd-c07702b98fb6.png)
## Changelog
:cl:
fix: Holodisk recording gives the right vfx again. Bonus, the rays work
with it now too!
/:cl:

---------

Co-authored-by: paganiy <126676387+paganiy@users.noreply.github.com>
Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
Co-authored-by: Artemchik542 <32270644+Artemchik542@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: larentoun <31931237+larentoun@users.noreply.github.com>
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
Co-authored-by: Shadow-Quill <44811257+Shadow-Quill@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: ZephyrTFA <matthew@tfaluc.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Fix Rewrites a bug so it appears in different circumstances
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants