From d5b113a5e2c0dd0cd4e355125e5bcdcbfcac3488 Mon Sep 17 00:00:00 2001 From: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Date: Sat, 21 Jun 2025 14:21:48 +0300 Subject: [PATCH] [no gbp] fixes minebots crashing the server (#91746) ## About The Pull Request the element was wrongfully adding items to its list. since its meant to be a singleton, this list would get extremely large. ## Why It's Good For The Game closes #91738 ## Changelog :cl: fix: 50 minebots no longer crash the server /:cl: --- code/datums/elements/mob_access.dm | 12 ++++-------- code/modules/mob/living/basic/minebots/minebot.dm | 12 ++++++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code/datums/elements/mob_access.dm b/code/datums/elements/mob_access.dm index 04ef6ac9d59..b93dd043fcb 100644 --- a/code/datums/elements/mob_access.dm +++ b/code/datums/elements/mob_access.dm @@ -9,14 +9,10 @@ . = ..() if(!isliving(target)) return ELEMENT_INCOMPATIBLE - for(var/access_path in accesses) - if(!ispath(access_path)) - continue - var/datum/id_trim/job/trim = SSid_access.trim_singletons_by_path[access_path] - if(isnull(trim)) - continue - my_access += trim.access - + if(!length(accesses)) + stack_trace("attempted to assign an empty access list to a mob!") + return + my_access = accesses RegisterSignal(target, COMSIG_MOB_TRIED_ACCESS, PROC_REF(attempt_access)) /datum/element/mob_access/proc/attempt_access(datum/source, obj/door_attempt) diff --git a/code/modules/mob/living/basic/minebots/minebot.dm b/code/modules/mob/living/basic/minebots/minebot.dm index e847f08ba70..6c6ad8a208f 100644 --- a/code/modules/mob/living/basic/minebots/minebot.dm +++ b/code/modules/mob/living/basic/minebots/minebot.dm @@ -83,10 +83,7 @@ stored_gun = new(src) var/obj/item/implant/radio/mining/comms = new(src) comms.implant(src) - var/static/list/accesses = list( - /datum/id_trim/job/shaft_miner, - ) - AddElement(/datum/element/mob_access, accesses) + assign_access() /mob/living/basic/mining_drone/set_combat_mode(new_mode, silent = TRUE) . = ..() @@ -273,3 +270,10 @@ return . += combat_mode ? combat_overlay : neutral_overlay + +/mob/living/basic/mining_drone/proc/assign_access() + var/static/list/required_access + if(isnull(required_access)) + var/datum/id_trim/access_card = SSid_access.trim_singletons_by_path[/datum/id_trim/job/shaft_miner] + required_access = access_card.access + AddElement(/datum/element/mob_access, required_access)