mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
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 🆑 fix: Fixed a hard delete that would occur with lua-created atoms. /🆑 --------- Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
This commit is contained in:
@@ -168,4 +168,12 @@ GLOBAL_PROTECT(lua_usr)
|
|||||||
for(var/datum/lua_editor/editor as anything in editor_list)
|
for(var/datum/lua_editor/editor as anything in editor_list)
|
||||||
SStgui.update_uis(editor)
|
SStgui.update_uis(editor)
|
||||||
|
|
||||||
|
// Called by lua scripts when they add an atom to var/list/references so that it gets cleared up on delete.
|
||||||
|
/datum/lua_state/proc/clear_on_delete(datum/to_clear)
|
||||||
|
RegisterSignal(to_clear, COMSIG_QDELETING, PROC_REF(on_delete))
|
||||||
|
|
||||||
|
/datum/lua_state/proc/on_delete(datum/to_clear)
|
||||||
|
SIGNAL_HANDLER
|
||||||
|
references -= to_clear
|
||||||
|
|
||||||
#undef MAX_LOG_REPEAT_LOOKBACK
|
#undef MAX_LOG_REPEAT_LOOKBACK
|
||||||
|
|||||||
@@ -17,9 +17,12 @@ end
|
|||||||
|
|
||||||
function SS13.new(type, ...)
|
function SS13.new(type, ...)
|
||||||
local datum = dm.global_proc("_new", type, { ... })
|
local datum = dm.global_proc("_new", type, { ... })
|
||||||
local references = SS13.state.vars.references
|
if datum then
|
||||||
references:add(datum)
|
local references = SS13.state.vars.references
|
||||||
return datum
|
references:add(datum)
|
||||||
|
SS13.state:call_proc("clear_on_delete", datum)
|
||||||
|
return datum
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function SS13.await(thing_to_call, proc_to_call, ...)
|
function SS13.await(thing_to_call, proc_to_call, ...)
|
||||||
|
|||||||
Reference in New Issue
Block a user