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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Various bugfixes (mostly ported from /tg/) #1985

Merged
merged 62 commits into from
Jun 3, 2024

Commits on May 24, 2024

  1. Configuration menu
    Copy the full SHA
    858e6a9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    6736b3a View commit details
    Browse the repository at this point in the history
  3. fix some weird runtimes

    Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    a6ac139 View commit details
    Browse the repository at this point in the history
  4. More runtime fixes

    Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    25d032f View commit details
    Browse the repository at this point in the history
  5. Fix a silly useless runtime

    Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    5efbe5f View commit details
    Browse the repository at this point in the history
  6. 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>
    2 people authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    ab73b83 View commit details
    Browse the repository at this point in the history
  7. 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>
    2 people authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    09a894b View commit details
    Browse the repository at this point in the history
  8. [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:
    larentoun authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    b7b4f0f View commit details
    Browse the repository at this point in the history
  9. random spawners now check if the destination turf is unblocked in a s…

    …traight 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
    mc-oofert authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    fb36d2b View commit details
    Browse the repository at this point in the history
  10. 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:
    Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    0cc2f9b View commit details
    Browse the repository at this point in the history
  11. 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:
    FernandoJ8 authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    3e559b7 View commit details
    Browse the repository at this point in the history
  12. [no gbp] Space Ruin bioscramblers shouldn't chase people around (tgst…

    …ation#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:
    Jacquerel authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    cf0d8ac View commit details
    Browse the repository at this point in the history
  13. Adds lag compensation for the supermatter zaps and some antagonists. (t…

    …gstation#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:
    Pickle-Coding authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    7a02939 View commit details
    Browse the repository at this point in the history
  14. Removes current destination for a shuttle in transit from the destina…

    …tion 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:
    Shadow-Quill authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    488a047 View commit details
    Browse the repository at this point in the history
  15. Fixes getting stuck in the leaning condition when you try to lean fac…

    …ing 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:
    vinylspiders authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    1384a0e View commit details
    Browse the repository at this point in the history
  16. "Explosive Planted" C4 ghost notification actually shows the C4 (tgst…

    …ation#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:
    13spacemen authored and Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    367991a View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    7343bd5 View commit details
    Browse the repository at this point in the history
  18. Fix jukebox runtimes

    Absolucy committed May 24, 2024
    Configuration menu
    Copy the full SHA
    2de8dee View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    5723927 View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    5c0c5c1 View commit details
    Browse the repository at this point in the history

Commits on May 25, 2024

  1. Configuration menu
    Copy the full SHA
    1aecdb6 View commit details
    Browse the repository at this point in the history

Commits on May 27, 2024

  1. Configuration menu
    Copy the full SHA
    07c442a View commit details
    Browse the repository at this point in the history

Commits on May 28, 2024

  1. Configuration menu
    Copy the full SHA
    5533c53 View commit details
    Browse the repository at this point in the history
  2. 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:
    Absolucy committed May 28, 2024
    Configuration menu
    Copy the full SHA
    555f86d View commit details
    Browse the repository at this point in the history

Commits on May 29, 2024

  1. Configuration menu
    Copy the full SHA
    5b2877a View commit details
    Browse the repository at this point in the history
  2. 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.
    san7890 authored and Absolucy committed May 29, 2024
    Configuration menu
    Copy the full SHA
    c618ebd View commit details
    Browse the repository at this point in the history
  3. moar bugfix? moar bugfix!

    Absolucy committed May 29, 2024
    Configuration menu
    Copy the full SHA
    9ca7e0f View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    99bd2c5 View commit details
    Browse the repository at this point in the history
  5. dammit

    Absolucy committed May 29, 2024
    Configuration menu
    Copy the full SHA
    022a75c View commit details
    Browse the repository at this point in the history
  6. Fix messed up port

    Absolucy committed May 29, 2024
    Configuration menu
    Copy the full SHA
    0529643 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    759ac10 View commit details
    Browse the repository at this point in the history

Commits on May 30, 2024

  1. Configuration menu
    Copy the full SHA
    6102fe8 View commit details
    Browse the repository at this point in the history
  2. Fix eigenstasium runtime

    Absolucy committed May 30, 2024
    Configuration menu
    Copy the full SHA
    424b238 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    1347de2 View commit details
    Browse the repository at this point in the history
  4. Fix random_(short_)color

    Absolucy committed May 30, 2024
    Configuration menu
    Copy the full SHA
    03984aa View commit details
    Browse the repository at this point in the history
  5. 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
    /🆑
    LemonInTheDark authored and Absolucy committed May 30, 2024
    Configuration menu
    Copy the full SHA
    c834eef View commit details
    Browse the repository at this point in the history
  6. weh proper fix

    Absolucy committed May 30, 2024
    Configuration menu
    Copy the full SHA
    8c1ada5 View commit details
    Browse the repository at this point in the history
  7. fix disappearing id cards

    Absolucy committed May 30, 2024
    Configuration menu
    Copy the full SHA
    966748b View commit details
    Browse the repository at this point in the history
  8. wehwehwehweh

    Absolucy committed May 30, 2024
    Configuration menu
    Copy the full SHA
    b4db520 View commit details
    Browse the repository at this point in the history
  9. fix some prisoner runtimes

    Absolucy committed May 30, 2024
    Configuration menu
    Copy the full SHA
    6b8d7a9 View commit details
    Browse the repository at this point in the history

Commits on May 31, 2024

  1. Configuration menu
    Copy the full SHA
    569f436 View commit details
    Browse the repository at this point in the history
  2. 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:
    Isratosh authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    981d25e View commit details
    Browse the repository at this point in the history
  3. Fixes camera ref cleanup in alarms processing (tgstation#78839)

    Not every alarm area has cameras.
    AnturK authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    a612702 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    849a7fd View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    84f2d60 View commit details
    Browse the repository at this point in the history
  6. Removes logging each lua function called on the dm side of things. (t…

    …gstation#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>
    2 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    ce04102 View commit details
    Browse the repository at this point in the history
  7. 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>
    2 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    eb20b1a View commit details
    Browse the repository at this point in the history
  8. Cleans up the SS13_base lua file and adds a new lua file for easily h…

    …andling 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>
    2 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    ae20832 View commit details
    Browse the repository at this point in the history
  9. Fixes SS13.register_signal throwing unclear errors when called on del…

    …eted 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>
    2 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    bd677a0 View commit details
    Browse the repository at this point in the history
  10. 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>
    2 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    affd800 View commit details
    Browse the repository at this point in the history
  11. 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>
    3 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    aa049d1 View commit details
    Browse the repository at this point in the history
  12. 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.
    ninjanomnom authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    0263347 View commit details
    Browse the repository at this point in the history
  13. 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>
    2 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    e039f9a View commit details
    Browse the repository at this point in the history
  14. Fixes modified MA overlays potentially causing duplicate overlays (tg…

    …station#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.
    ninjanomnom authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    5a15b3e View commit details
    Browse the repository at this point in the history
  15. Fixes sanitizing chemicals (Miner's Salve, Sterilizine, and Space Cle…

    …aner) 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:
    MrMelbert authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    c3b5aa6 View commit details
    Browse the repository at this point in the history
  16. 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>
    3 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    7ae6d3a View commit details
    Browse the repository at this point in the history
  17. 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>
    2 people authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    2d8e506 View commit details
    Browse the repository at this point in the history
  18. 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
    FlufflesTheDog authored and Absolucy committed May 31, 2024
    Configuration menu
    Copy the full SHA
    700dd24 View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    1e3ec58 View commit details
    Browse the repository at this point in the history

Commits on Jun 2, 2024

  1. Configuration menu
    Copy the full SHA
    ca65941 View commit details
    Browse the repository at this point in the history
  2. 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:
    LemonInTheDark authored and Absolucy committed Jun 2, 2024
    Configuration menu
    Copy the full SHA
    622a2a5 View commit details
    Browse the repository at this point in the history

Commits on Jun 3, 2024

  1. Configuration menu
    Copy the full SHA
    e4efb2c View commit details
    Browse the repository at this point in the history