mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-11 01:04:36 +01:00
827c4b3f99
* Add basic structure of z-level traits
* Restore space transitions and add z-level debug verb
* Restore proper ruin spawning and transit level creation
* Replace station_z_levels and related checks with traits
* Eliminate more uses of ZLEVEL_{STATION_PRIMARY,LAVALAND}
47 lines
1.3 KiB
Plaintext
47 lines
1.3 KiB
Plaintext
// Look up levels[z].traits[trait]
|
|
/datum/controller/subsystem/mapping/proc/level_trait(z, trait)
|
|
if (!z)
|
|
return null
|
|
var/list/trait_list
|
|
if (z_list)
|
|
var/datum/space_level/S = get_level(z)
|
|
trait_list = S.traits
|
|
else
|
|
var/list/default_map_traits = DEFAULT_MAP_TRAITS
|
|
trait_list = default_map_traits[z][DL_TRAITS]
|
|
return trait_list[trait]
|
|
|
|
// Check if levels[z] has any of the specified traits
|
|
/datum/controller/subsystem/mapping/proc/level_has_any_trait(z, list/traits)
|
|
for (var/I in traits)
|
|
if (level_trait(z, I))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
// Check if levels[z] has all of the specified traits
|
|
/datum/controller/subsystem/mapping/proc/level_has_all_traits(z, list/traits)
|
|
for (var/I in traits)
|
|
if (!level_trait(z, I))
|
|
return FALSE
|
|
return TRUE
|
|
|
|
// Get a list of all z which have the specified trait
|
|
/datum/controller/subsystem/mapping/proc/levels_by_trait(trait)
|
|
. = list()
|
|
var/list/_z_list = z_list
|
|
for(var/A in _z_list)
|
|
var/datum/space_level/S = A
|
|
if (S.traits[trait])
|
|
. += S.z_value
|
|
|
|
// Get a list of all z which have any of the specified traits
|
|
/datum/controller/subsystem/mapping/proc/levels_by_any_trait(list/traits)
|
|
. = list()
|
|
var/list/_z_list = z_list
|
|
for(var/A in _z_list)
|
|
var/datum/space_level/S = A
|
|
for (var/trait in traits)
|
|
if (S.traits[trait])
|
|
. += S.z_value
|
|
break
|