mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 08:37:43 +01:00
reeee
This commit is contained in:
@@ -491,17 +491,26 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
var/y=arcsin(x/sqrt(1+x*x))
|
||||
return y
|
||||
|
||||
/atom/proc/GetAllContents()
|
||||
/atom/proc/GetAllContents(list/ignore_typecache)
|
||||
var/list/processing_list = list(src)
|
||||
var/list/assembled = list()
|
||||
if(ignore_typecache) //If there's a typecache, use it.
|
||||
while(processing_list.len)
|
||||
var/atom/A = processing_list[1]
|
||||
processing_list -= A
|
||||
if(ignore_typecache[A.type])
|
||||
continue
|
||||
processing_list |= (A.contents - assembled)
|
||||
assembled |= A
|
||||
|
||||
while(processing_list.len)
|
||||
var/atom/A = processing_list[1]
|
||||
processing_list -= A
|
||||
else //If there's none, only make this check once for performance.
|
||||
while(processing_list.len)
|
||||
var/atom/A = processing_list[1]
|
||||
processing_list -= A
|
||||
|
||||
processing_list |= (A.contents - assembled)
|
||||
processing_list |= (A.contents - assembled)
|
||||
|
||||
assembled |= A
|
||||
assembled |= A
|
||||
|
||||
return assembled
|
||||
|
||||
|
||||
@@ -419,17 +419,17 @@
|
||||
if(!SSticker.HasRoundStarted())
|
||||
add_blueprints(AM)
|
||||
|
||||
/turf/proc/empty(turf_type=/turf/open/space, baseturf_type, delmobs = TRUE, forceop = FALSE)
|
||||
/turf/proc/empty(turf_type=/turf/open/space, baseturf_type, list/ignore_typecache, forceop = FALSE)
|
||||
// Remove all atoms except observers, landmarks, docking ports
|
||||
var/static/list/ignored_atoms = typecacheof(list(/mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object))
|
||||
var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(),delmobs? ignored_atoms : ignored_atoms + typecacheof(list(/mob)))
|
||||
var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(ignore_typecache), ignored_atoms)
|
||||
allowed_contents -= src
|
||||
for(var/i in 1 to allowed_contents.len)
|
||||
var/thing = allowed_contents[i]
|
||||
qdel(thing, force=TRUE)
|
||||
|
||||
var/turf/newT = ChangeTurf(turf_type, baseturf_type, FALSE, FALSE, forceop = forceop)
|
||||
|
||||
|
||||
SSair.remove_from_active(newT)
|
||||
newT.CalculateAdjacentTurfs()
|
||||
SSair.add_to_active(newT,1)
|
||||
|
||||
@@ -20,26 +20,34 @@
|
||||
/datum/mapGeneratorModule/bottomLayer/massdelete
|
||||
spawnableAtoms = list()
|
||||
spawnableTurfs = list()
|
||||
var/deletemobs = TRUE
|
||||
var/deleteturfs = TRUE
|
||||
var/deleteturfs = TRUE //separate var for the empty type.
|
||||
var/list/ignore_typecache
|
||||
|
||||
/datum/mapGeneratorModule/bottomLayer/massdelete/generate()
|
||||
if(!mother)
|
||||
return
|
||||
for(var/V in mother.map)
|
||||
var/turf/T = V
|
||||
T.empty(deleteturfs? null : T.type, delmobs = deletemobs, forceop = TRUE)
|
||||
T.empty(deleteturfs? null : T.type, ignore_typecache = ignore_typecache, forceop = TRUE)
|
||||
|
||||
/datum/mapGeneratorModule/bottomLayer/massdelete/no_delete_mobs
|
||||
deletemobs = FALSE
|
||||
/datum/mapGeneratorModule/bottomLayer/massdelete/no_delete_mobs/New()
|
||||
..()
|
||||
ignore_typecache = typecacheof(list(/mob))
|
||||
|
||||
/datum/mapGeneratorModule/bottomLayer/massdelete/leave_turfs
|
||||
deleteturfs = FALSE
|
||||
|
||||
/datum/mapGeneratorModule/bottomLayer/massdelete/leave_turfs/New()
|
||||
..()
|
||||
ignore_typecache = typecacheof(list(/turf))
|
||||
|
||||
/datum/mapGeneratorModule/bottomLayer/massdelete/regeneration_delete
|
||||
deletemobs = FALSE
|
||||
deleteturfs = FALSE
|
||||
|
||||
/datum/mapGeneratorModule/bottomLayer/massdelete/regeneration_delete/New()
|
||||
..()
|
||||
ignore_typecache = typecacheof(list(/mob, /turf))
|
||||
|
||||
//Only places atoms/turfs on area borders
|
||||
/datum/mapGeneratorModule/border
|
||||
clusterCheckFlags = CLUSTER_CHECK_NONE
|
||||
|
||||
Reference in New Issue
Block a user