From 573b074ac368f22195aa23c285ac6b1cee0330e3 Mon Sep 17 00:00:00 2001 From: Archie Date: Thu, 22 Jul 2021 23:55:52 -0300 Subject: [PATCH] Bluespace Anomaly Changes --- code/__HELPERS/unsorted.dm | 21 +++++++++++++++++++ .../dynamic/dynamic_rulesets_events.dm | 2 +- code/game/objects/effects/anomalies.dm | 4 ++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 831e92d4..3ceb1547 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1130,6 +1130,27 @@ B --><-- A if (target) return target +/proc/get_safe_random_station_turf_nochasm() //same method as above but with chasm detection + for (var/i in 1 to 5) + var/list/L = get_area_turfs(pick(GLOB.the_station_areas)) + var/turf/target + while (L.len && !target) + var/I = rand(1, L.len) + var/turf/T = L[I] + if(!T.density) + var/clear = TRUE + for(var/obj/O in T) + if(O.density) + clear = FALSE + break + if(ischasm(T)) //stop right there criminal scum + clear = FALSE + if(clear) + target = T + if (!target) + L.Cut(I,I+1) + if (target) + return target /proc/get_closest_atom(type, list, source) var/closest_atom diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm index cc56359c..7677ebbd 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm @@ -297,7 +297,7 @@ repeatable = TRUE //property_weights = list("extended" = 1) occurances_max = 2 - chaos_min = 3.0 + chaos_min = 1.2 /datum/dynamic_ruleset/event/anomaly_flux name = "Anomaly: Hyper-Energetic Flux" diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 10345e21..6d3df24e 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -227,6 +227,10 @@ for (var/atom/movable/A in urange(12, FROM )) // iterate thru list of mobs in the area if(istype(A, /obj/item/beacon)) continue // don't teleport beacons because that's just insanely stupid + if(isliving(A)) + var/turf/L = get_safe_random_station_turf_nochasm() //Safe and cuddly. + do_teleport(A, L, forceMove = TRUE, channel = TELEPORT_CHANNEL_BLUESPACE) + continue if(A.anchored) continue