[MIRROR] Exploration drones can no longer be used to get to centcom [MDB IGNORE] (#23597)

* Exploration drones can no longer be used to get to centcom (#78197)

## About The Pull Request
Fixes #73417
Implements a check for exploration drones to make sure that containers
inside the storage don't have blacklisted items in them before launch.
Now you won't able to hide beacons and living beings inside bluespace
body bags.

Also adds exploration drone launchers to cargo shuttle's blacklist to
prevent potential shenanigans in the future.

[I suck at explaining, so here's a poorly made video that shows how to
do this](https://www.youtube.com/watch?v=U45ifQGQxzI)

~also, why does it take 10 hours to get the "Time Waster" achievement.
how did 6 people even get it??~

## Why It's Good For The Game
centcom is scary and exploits are bad

## Changelog
🆑
fix: Exploration drones can't be used to reach Centcom anymore.
/🆑

* Exploration drones can no longer be used to get to centcom

---------

Co-authored-by: leaKsi <59278564+leaKsi@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-09-09 10:33:07 -04:00
committed by GitHub
co-authored by leaKsi
parent f8e387719a
commit a08ee56788
3 changed files with 13 additions and 0 deletions
@@ -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")
+9
View File
@@ -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
+1
View File
@@ -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,