diff --git a/code/modules/explorer_drone/control_console.dm b/code/modules/explorer_drone/control_console.dm index 208292c2437..7b371e8412b 100644 --- a/code/modules/explorer_drone/control_console.dm +++ b/code/modules/explorer_drone/control_console.dm @@ -131,6 +131,9 @@ target_site = locate(params["target_site"]) in GLOB.exploration_sites if(!target_site) return TRUE + if(!controlled_drone.check_blacklist()) + say("Error - An unauthorized object was found inside the cargo!") + return TRUE controlled_drone.launch_for(target_site) return TRUE if("explore") diff --git a/code/modules/explorer_drone/exodrone.dm b/code/modules/explorer_drone/exodrone.dm index 567d5a93412..72cf09bd81b 100644 --- a/code/modules/explorer_drone/exodrone.dm +++ b/code/modules/explorer_drone/exodrone.dm @@ -88,6 +88,15 @@ GLOBAL_LIST_EMPTY(exodrone_launchers) if(EXODRONE_IDLE) return "Idle." +// Searches for blacklisted items hidden inside containers +/obj/item/exodrone/proc/check_blacklist() + for(var/obj/item/contained_item in contents) + if(contained_item.contents) + for(var/subcontained_object in contained_item.get_all_contents()) + if(is_type_in_typecache(subcontained_object, GLOB.blacklisted_cargo_types)) + return FALSE + return TRUE + /// Starts travel for site, does not validate if it's possible /obj/item/exodrone/proc/launch_for(datum/exploration_site/target_site) if(!location) //We're launching from station, fuel up diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 4be299cd575..aba37b37a55 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -25,6 +25,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /obj/item/swapper, /obj/docking_port, /obj/machinery/launchpad, + /obj/machinery/exodrone_launcher, /obj/machinery/disposal, /obj/structure/disposalpipe, /obj/item/mail,