From b650608b8ca778bbfa1f470d9f5ceffaaaf40266 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Fri, 11 Jul 2025 08:11:11 +0200 Subject: [PATCH] Fultons and fulton beacons can no longer be used in NOTELEPORT areas (#92060) ## About The Pull Request ***Partially*** resolves #92011 - the issue with smuggling fultons inside of the domain is still present (wtf), this only prevents usage of fultons in NOTELEPORT areas and moving in/out of LOCAL_TELEPORT areas ## Changelog :cl: fix: Fulton packs can no longer be used to enter/escape bitrunning domains /:cl: --- code/modules/mining/fulton.dm | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index 175edfc4f80..d05370b273f 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -41,6 +41,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) continue if(extraction_point.beacon_network in beacon_networks) possible_beacons += extraction_point + if(!length(possible_beacons)) balloon_alert(user, "no beacons") return @@ -67,11 +68,18 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) balloon_alert(user, "not linked!") beacon_ref = null return . + var/area/area = get_area(thing) if(!can_use_indoors) - var/area/area = get_area(thing) if(!area.outdoors) balloon_alert(user, "not outdoors!") return . + if(area.area_flags & NOTELEPORT) + balloon_alert(user, "unable to activate!") + return + var/area/target_area = get_area(beacon) + if(area != target_area && ((area.area_flags & LOCAL_TELEPORT) || (target_area.area_flags & LOCAL_TELEPORT))) + balloon_alert(user, "unable to activate!") + return if(!safe_for_living_creatures && check_for_living_mobs(thing)) to_chat(user, span_warning("[src] is not safe for use with living creatures, they wouldn't survive the trip back!")) balloon_alert(user, "not safe!") @@ -186,10 +194,17 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) icon_state = "folded_extraction" /obj/item/fulton_core/attack_self(mob/user) - if(do_after(user, 1.5 SECONDS, target = user) && !QDELETED(src)) - new /obj/structure/extraction_point(get_turf(user)) - playsound(src, 'sound/items/deconstruct.ogg', vol = 50, vary = TRUE, extrarange = MEDIUM_RANGE_SOUND_EXTRARANGE) - qdel(src) + var/area/user_area = get_area(user) + if(user_area.area_flags & NOTELEPORT) + balloon_alert(user, "unable to deploy!") + return + + if(!do_after(user, 1.5 SECONDS, target = user) || QDELETED(src)) + return + + new /obj/structure/extraction_point(get_turf(user)) + playsound(src, 'sound/items/deconstruct.ogg', vol = 50, vary = TRUE, extrarange = MEDIUM_RANGE_SOUND_EXTRARANGE) + qdel(src) /obj/structure/extraction_point name = "fulton recovery beacon"