diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 0b356b320b8..dac80e068a2 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -347,8 +347,7 @@ var/datum/subsystem/ticker/ticker
if(Player.stat != DEAD && !isbrain(Player))
num_survivors++
if(station_evacuated) //If the shuttle has already left the station
- var/turf/playerTurf = get_turf(Player)
- if(!playerTurf || playerTurf.z != ZLEVEL_CENTCOM)
+ if(!Player.onCentcom())
Player << "You managed to survive, but were marooned on [station_name()]..."
else
num_escapees++
diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm
index b437c7c41b7..803fa1a117f 100644
--- a/code/game/area/Space Station 13 areas.dm
+++ b/code/game/area/Space Station 13 areas.dm
@@ -1540,11 +1540,6 @@ proc/process_ghost_teleport_locs()
Used in gamemodes code at the moment. --rastaf0
*/
-// CENTCOM
-var/list/centcom_areas = list (
- /area/centcom
-)
-
//SPACE STATION 13
var/list/the_station_areas = list (
/area/atmos,
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 9b27a40ebbc..4ebda9f6a83 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -21,6 +21,16 @@
// replaced by OPENCONTAINER flags and atom/proc/is_open_container()
///Chemistry.
+/atom/proc/onCentcom()
+ var/turf/T = get_turf(src)
+ if(!T)
+ return 0
+ if(T.z != ZLEVEL_CENTCOM)
+ return 0
+ if(T.y > 160)
+ return 0
+ return 1
+
/atom/proc/throw_impact(atom/hit_atom)
if(istype(hit_atom,/mob/living))
var/mob/living/M = hit_atom
@@ -405,4 +415,4 @@ var/list/blood_splatter_icons = list()
return
/atom/proc/narsie_act()
- return
+ return
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index b4f640aa4c2..ab63a288f26 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -275,9 +275,8 @@
/datum/game_mode/cult/proc/check_survive()
acolytes_survived = 0
for(var/datum/mind/cult_mind in cult)
- if (cult_mind.current && cult_mind.current.stat!=2)
- var/area/A = get_area(cult_mind.current )
- if ( is_type_in_list(A, centcom_areas))
+ if (cult_mind.current && cult_mind.current.stat != DEAD)
+ if(cult_mind.current.onCentcom())
acolytes_survived++
if(acolytes_survived>=acolytes_needed)
return 0
diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm
index 2ae7f0fcece..2d3e4e1c380 100644
--- a/code/game/gamemodes/meteor/meteor.dm
+++ b/code/game/gamemodes/meteor/meteor.dm
@@ -32,8 +32,7 @@
if(player.stat != DEAD)
++survivors
- var/turf/T = get_turf(player)
- if(T && T.z == ZLEVEL_CENTCOM)
+ if(player.onCentcom())
text += "
[player.real_name] escaped to the safety of Centcom."
else
text += "
[player.real_name] survived but is stranded without any hope of rescue."
diff --git a/code/game/gamemodes/monkey/monkey.dm b/code/game/gamemodes/monkey/monkey.dm
index 29f3a209052..c2b2c835721 100644
--- a/code/game/gamemodes/monkey/monkey.dm
+++ b/code/game/gamemodes/monkey/monkey.dm
@@ -72,8 +72,7 @@
/datum/game_mode/monkey/proc/check_monkey_victory()
for(var/mob/living/carbon/monkey/M in living_mob_list)
if (M.HasDisease(/datum/disease/transformation/jungle_fever))
- var/area/A = get_area(M)
- if(is_type_in_list(A, centcom_areas))
+ if(M.onCentcom())
escaped_monkeys++
if(escaped_monkeys >= monkeys_to_win)
return 0
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 026e1e60d2f..cc1346f4bd6 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -206,8 +206,7 @@
/datum/game_mode/nuclear/declare_completion()
var/disk_rescued = 1
for(var/obj/item/weapon/disk/nuclear/D in world)
- var/disk_area = get_area(D)
- if(!is_type_in_list(disk_area, centcom_areas))
+ if(!D.onCentcom())
disk_rescued = 0
break
var/crew_evacuated = (SSshuttle.emergency.mode >= SHUTTLE_ENDGAME)
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index f990d3c0bf5..523ccd0d4f9 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -109,9 +109,7 @@ datum/objective/maroon/check_completion()
if(target && target.current)
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
return 1
-
- var/turf/T = get_turf(target.current)
- if(T.z == ZLEVEL_CENTCOM)
+ if(target.current.onCentcom())
return 0
return 1
@@ -252,7 +250,7 @@ datum/objective/escape/check_completion()
if(istype(location, /turf/simulated/shuttle/floor4)) // Fails traitors if they are in the shuttle brig -- Polymorph
return 0
- if(location.z == ZLEVEL_CENTCOM)
+ if(location.onCentcom())
return 1
return 0