Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Fixes SS13.register_signal on parent_qdeleting signal in lua causing an error (#76282) ## About The Pull Request Potato renamed comp_lookup to _listen_lookup, which wasn't updated in the lua script. This PR changes the SS13 lua script to properly access the correct variable ## Why It's Good For The Game Bugfix ## Changelog Co-authored-by: Watermelon914 <[email protected]> * Fixed lua-created atoms from hard deleting (#77391) ## About The Pull Request Lua created atoms hard delete because they get added to a references list without ever being cleared. This fixes that by registering a qdeleting signal on them and removing them from the list on delete. ## Why It's Good For The Game Harddel fixes ## Changelog :cl: fix: Fixed a hard delete that would occur with lua-created atoms. /:cl: --------- Co-authored-by: Watermelon914 <[email protected]> * Fixes some lua problems, specifically with qdeling callbacks and adds lua utility functions (#77468) ## About The Pull Request See title. Callbacks were getting deleted in SS13.lua which is non-ideal. They should be automatically collected by the garbage collector. Also adds some utility lua functions like SS13.is_valid, SS13.stop_tracking, SS13.new_untracked, SS13.type and SS13.qdel ## Why It's Good For The Game Fixes some harddel issues, as well as callbacks clogging up the garbage subsystem. ## Changelog :cl: admin: Added new lua functions: SS13.is_valid, SS13.stop_tracking, SS13.new_untracked, SS13.type and SS13.qdel /:cl: --------- Co-authored-by: Watermelon914 <[email protected]> * Expands the SS13.lua module by adding loop helpers and functions to get the script runner. (#79081) ## About The Pull Request `SS13.get_runner_client()` and `SS13.get_runner_ckey` will return the client and the ckey respectively of the user who ran the lua script. Can be unreliable after the first sleep or yield. The SS13 module can now be made local as the tables that need to be accessed globally have been moved to their own global variables. Added `SS13.start_loop(time, amount, func)`, `SS13.end_loop(id)`, `SS13.stop_all_loops()` that allow lua scripts to more easily make loops. Removed the `timer` parameter from these functions, which specified the timer subsystem to use. Documentation on all new added functions have been added in the lua/README.md ## Why It's Good For The Game Getting the client who ran the script and the ckey that ran the script is useful for self contained scripts that are looking for an entrypoint (e.g. location to spawn some item/mob/structure). `dm.usr` is a special variable used for other purposes and can be unreliable when used this way even if there haven't been any sleeps or yields yet, so having a dedicated variable and function to handle it makes things easier. Being able to make the SS13 module local allows for more self-contained scripts. Although this isn't super helpful because `require` will still load the same object for all lua scripts loaded on the same state. Basic looping helpers allow for lua scripts to more easily create loops without needing to recursively do a `set_timeout` or to do a `while(true) do SS13.wait(1) end` loop. ## Changelog :cl: admin: Added SS13.get_runner_ckey() and SS13.get_runner_client() which stores the ckey and returns the client of the user who ran the lua script. Can be unreliable if accessed after sleeping. admin: Added timer loop helpers to the SS13.lua module, check the docs admin: The SS13.lua module can now be made local without causing any errors. /:cl: --------- Co-authored-by: Watermelon914 <[email protected]> * More lua harddel fixes (#77556) ## About The Pull Request Fixes some more lua harddel problems with lingering refs on the gc_guard variable. This variable has been changed to a list instead and will get cleared every time the SSlua subsystem fires so that lua instantiated objects that are not tracked by the subsystem will essentially delete themselves on the next tick, aka whenever the lua script sleeps. Also removed the unnecessary and not completely functional lua_reference_cleanup proc which wasn't even being called reliably because the signal handler was the datum itself. ## Why It's Good For The Game Fixes more harddel bugs, increases consistency. Co-authored-by: Watermelon914 <[email protected]> * Update auxlua DLL to work on the latest BYOND * Official auxlua update is out, use that instead of my personal build --------- Co-authored-by: Watermelon914 <[email protected]> Co-authored-by: Watermelon914 <[email protected]>
- Loading branch information