From 92633a4ec313862a266fad832822cd40c2fd7419 Mon Sep 17 00:00:00 2001 From: AffectedArc07 Date: Tue, 21 Jul 2020 16:40:50 +0100 Subject: [PATCH 1/2] Removes REACHABLE flag from lavaland --- _maps/cyberiad.dm | 2 +- _maps/delta.dm | 2 +- _maps/metastation.dm | 2 +- code/game/turfs/space/transit.dm | 5 ++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/_maps/cyberiad.dm b/_maps/cyberiad.dm index 81499ec8c75..644869502b4 100644 --- a/_maps/cyberiad.dm +++ b/_maps/cyberiad.dm @@ -17,7 +17,7 @@ z4 = lavaland #define MAP_TRANSITION_CONFIG list(\ DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL, STATION_CONTACT, REACHABLE, AI_OK)),\ DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\ -DECLARE_LEVEL(MINING, SELFLOOPING, list(REACHABLE, STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) +DECLARE_LEVEL(MINING, SELFLOOPING, list(STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) #define USING_MAP_DATUM /datum/map/cyberiad #elif !defined(MAP_OVERRIDE) diff --git a/_maps/delta.dm b/_maps/delta.dm index cf6acbcddb1..159fd8b01b3 100644 --- a/_maps/delta.dm +++ b/_maps/delta.dm @@ -22,7 +22,7 @@ Lovingly ported by Purpose2 to Paradise #define MAP_TRANSITION_CONFIG list(\ DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL, STATION_CONTACT, REACHABLE, AI_OK)),\ DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\ -DECLARE_LEVEL(MINING, SELFLOOPING, list(REACHABLE, STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) +DECLARE_LEVEL(MINING, SELFLOOPING, list(STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) #define USING_MAP_DATUM /datum/map/delta diff --git a/_maps/metastation.dm b/_maps/metastation.dm index 7747ad79fb8..03ba531f932 100644 --- a/_maps/metastation.dm +++ b/_maps/metastation.dm @@ -23,7 +23,7 @@ z7 = empty space #define MAP_TRANSITION_CONFIG list(\ DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL, STATION_CONTACT, REACHABLE, AI_OK)),\ DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\ -DECLARE_LEVEL(MINING, SELFLOOPING, list(REACHABLE, STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) +DECLARE_LEVEL(MINING, SELFLOOPING, list(STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) #define USING_MAP_DATUM /datum/map/metastation diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index a96cbae1269..8e0dedbdd44 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -94,8 +94,6 @@ var/max = world.maxx-TRANSITIONEDGE var/min = 1+TRANSITIONEDGE - var/_z = pick(levels_by_trait(REACHABLE)) //select a random space zlevel - //now select coordinates for a border turf var/_x var/_y @@ -113,7 +111,8 @@ _x = rand(min,max) _y = min - var/turf/T = locate(_x, _y, _z) + var/list/levels_available = levels_by_trait(REACHABLE) + var/turf/T = locate(_x, _y, pick(levels_available)) AM.forceMove(T) AM.newtonian_move(dir) From 1f99c6d5847f3a213d90e9f1391fd62742f9b4d6 Mon Sep 17 00:00:00 2001 From: AffectedArc07 Date: Wed, 22 Jul 2020 18:50:25 +0100 Subject: [PATCH 2/2] Makes it work better --- _maps/cyberiad.dm | 2 +- _maps/delta.dm | 2 +- _maps/metastation.dm | 2 +- code/game/turfs/space/transit.dm | 2 +- code/modules/space_management/level_traits.dm | 13 +++++++++++++ 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/_maps/cyberiad.dm b/_maps/cyberiad.dm index 644869502b4..3652328e8f4 100644 --- a/_maps/cyberiad.dm +++ b/_maps/cyberiad.dm @@ -17,7 +17,7 @@ z4 = lavaland #define MAP_TRANSITION_CONFIG list(\ DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL, STATION_CONTACT, REACHABLE, AI_OK)),\ DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\ -DECLARE_LEVEL(MINING, SELFLOOPING, list(STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) +DECLARE_LEVEL(MINING, SELFLOOPING, list(ORE_LEVEL, REACHABLE, STATION_CONTACT, HAS_WEATHER, AI_OK))) #define USING_MAP_DATUM /datum/map/cyberiad #elif !defined(MAP_OVERRIDE) diff --git a/_maps/delta.dm b/_maps/delta.dm index 159fd8b01b3..f944092131b 100644 --- a/_maps/delta.dm +++ b/_maps/delta.dm @@ -22,7 +22,7 @@ Lovingly ported by Purpose2 to Paradise #define MAP_TRANSITION_CONFIG list(\ DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL, STATION_CONTACT, REACHABLE, AI_OK)),\ DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\ -DECLARE_LEVEL(MINING, SELFLOOPING, list(STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) +DECLARE_LEVEL(MINING, SELFLOOPING, list(ORE_LEVEL, REACHABLE, STATION_CONTACT, HAS_WEATHER, AI_OK))) #define USING_MAP_DATUM /datum/map/delta diff --git a/_maps/metastation.dm b/_maps/metastation.dm index 03ba531f932..0941ffc453a 100644 --- a/_maps/metastation.dm +++ b/_maps/metastation.dm @@ -23,7 +23,7 @@ z7 = empty space #define MAP_TRANSITION_CONFIG list(\ DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL, STATION_CONTACT, REACHABLE, AI_OK)),\ DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\ -DECLARE_LEVEL(MINING, SELFLOOPING, list(STATION_CONTACT, HAS_WEATHER, ORE_LEVEL, AI_OK))) +DECLARE_LEVEL(MINING, SELFLOOPING, list(ORE_LEVEL, REACHABLE, STATION_CONTACT, HAS_WEATHER, AI_OK))) #define USING_MAP_DATUM /datum/map/metastation diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index 8e0dedbdd44..dda49fecdbd 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -111,7 +111,7 @@ _x = rand(min,max) _y = min - var/list/levels_available = levels_by_trait(REACHABLE) + var/list/levels_available = get_all_linked_levels_zpos() var/turf/T = locate(_x, _y, pick(levels_available)) AM.forceMove(T) AM.newtonian_move(dir) diff --git a/code/modules/space_management/level_traits.dm b/code/modules/space_management/level_traits.dm index 1d88f70454f..6aa3fa802a7 100644 --- a/code/modules/space_management/level_traits.dm +++ b/code/modules/space_management/level_traits.dm @@ -61,3 +61,16 @@ GLOBAL_LIST_INIT(default_map_traits, MAP_TRANSITION_CONFIG) /proc/level_name_to_num(name) var/datum/space_level/S = GLOB.space_manager.get_zlev_by_name(name) return S.zpos + +/** + * Proc to get a list of all the linked-together Z-Levels + * + * Returns a list of zlevel numbers which can be accessed from travelling space naturally + */ +/proc/get_all_linked_levels_zpos() + var/list/znums = list() + for(var/i in GLOB.space_manager.z_list) + var/datum/space_level/SL = GLOB.space_manager.z_list[i] + if(SL.linkage == CROSSLINKED) + znums |= SL.zpos + return znums