Bleeding edgy refresh (#303)

* not code stuff

* other things

* global vars, defines, helpers

* onclick hud stuff, orphans, world.dm

* controllers and datums

* game folder

* everything not client/mobs in modules

* client folder

* stage 1 mob stuff

* simple animal things

* silicons

* carbon things

* ayylmaos and monkeys

* hyoomahn

* icons n shit

* sprite fixes

* compile fixes

* some fixes I cherrypicked.

* qdel fixes

* forgot brain refractors
This commit is contained in:
Poojawa
2017-03-21 11:44:10 -05:00
committed by GitHub
parent 099a6c8764
commit f67e9f6d87
1476 changed files with 344416 additions and 40694 deletions
+194
View File
@@ -0,0 +1,194 @@
/obj/docking_port/mobile/arrivals
name = "arrivals shuttle"
id = "arrivals"
dwidth = 3
width = 7
height = 15
dir = WEST
port_angle = 180
callTime = INFINITY
ignitionTime = 50
roundstart_move = TRUE //force a call to dockRoundstart
var/sound_played
var/damaged //too damaged to undock?
var/list/areas //areas in our shuttle
var/list/queued_announces //people coming in that we have to announce
var/obj/machinery/requests_console/console
var/force_depart = FALSE
var/perma_docked = FALSE //highlander with RESPAWN??? OH GOD!!!
/obj/docking_port/mobile/arrivals/Initialize(mapload)
if(mapload)
return TRUE //late initialize to make sure the latejoin list is populated
preferred_direction = dir
if(SSshuttle.arrivals)
WARNING("More than one arrivals docking_port placed on map!")
qdel(src)
return
SSshuttle.arrivals = src
..()
areas = list()
var/list/new_latejoin = list()
for(var/area/shuttle/arrival/A in sortedAreas)
for(var/obj/structure/chair/C in A)
new_latejoin += C
if(!console)
console = locate(/obj/machinery/requests_console) in A
areas += A
if(latejoin.len)
WARNING("Map contains predefined latejoin spawn points and an arrivals shuttle. Using the arrivals shuttle.")
if(!new_latejoin.len)
WARNING("Arrivals shuttle contains no chairs for spawn points. Reverting to latejoin landmarks.")
if(!latejoin.len)
WARNING("No latejoin landmarks exist. Players will spawn unbuckled on the shuttle.")
return
latejoin = new_latejoin
/obj/docking_port/mobile/arrivals/dockRoundstart()
SSshuttle.generate_transit_dock(src)
Launch()
timer = world.time
check()
return TRUE
/obj/docking_port/mobile/arrivals/check()
. = ..()
if(perma_docked)
if(mode != SHUTTLE_CALL)
sound_played = FALSE
mode = SHUTTLE_IDLE
else
SendToStation()
return
if(damaged)
if(!CheckTurfsPressure())
damaged = FALSE
if(console)
console.say("Repairs complete, launching soon.")
return
//If this proc is high on the profiler add a cooldown to the stuff after this line
else if(CheckTurfsPressure())
damaged = TRUE
if(console)
console.say("Alert, hull breach detected!")
var/obj/machinery/announcement_system/announcer = pick(announcement_systems)
announcer.announce("ARRIVALS_BROKEN", channels = list())
if(mode != SHUTTLE_CALL)
sound_played = FALSE
mode = SHUTTLE_IDLE
else
SendToStation()
return
var/found_awake = PersonCheck()
if(mode == SHUTTLE_CALL)
if(found_awake)
SendToStation()
else if(mode == SHUTTLE_IGNITING)
if(found_awake && !force_depart)
mode = SHUTTLE_IDLE
sound_played = FALSE
else if(!sound_played)
hyperspace_sound(HYPERSPACE_WARMUP, areas)
sound_played = TRUE
else if(!found_awake)
Launch(FALSE)
/obj/docking_port/mobile/arrivals/proc/CheckTurfsPressure()
for(var/I in latejoin)
var/turf/open/T = get_turf(I)
var/pressure = T.air.return_pressure()
if(pressure < HAZARD_LOW_PRESSURE || pressure > HAZARD_HIGH_PRESSURE) //simple safety check
return TRUE
return FALSE
/obj/docking_port/mobile/arrivals/proc/PersonCheck()
for(var/M in (living_mob_list & player_list))
var/mob/living/L = M
if((get_area(M) in areas) && L.stat != DEAD)
return TRUE
return FALSE
/obj/docking_port/mobile/arrivals/proc/SendToStation()
var/dockTime = config.arrivals_shuttle_dock_window
if(mode == SHUTTLE_CALL && timeLeft(1) > dockTime)
if(console)
console.say(damaged ? "Initiating emergency docking for repairs!" : "Now approaching: [SSmapping.config.map_name].")
hyperspace_sound(HYPERSPACE_LAUNCH, areas) //for the new guy
setTimer(dockTime)
/obj/docking_port/mobile/arrivals/dock(obj/docking_port/stationary/S1, force=FALSE)
var/docked = S1 == assigned_transit
sound_played = FALSE
if(docked) //about to launch
if(!force_depart && PersonCheck())
mode = SHUTTLE_IDLE
if(console)
console.say("Launch cancelled, lifeform dectected on board.")
return
force_depart = FALSE
. = ..()
if(!. && !docked && !damaged)
console.say("Welcome to your new life, employees!")
for(var/L in queued_announces)
var/datum/callback/C = L
C.Invoke()
LAZYCLEARLIST(queued_announces)
/obj/docking_port/mobile/arrivals/check_effects()
..()
if(mode == SHUTTLE_CALL && !sound_played && timeLeft(1) <= HYPERSPACE_END_TIME)
sound_played = TRUE
hyperspace_sound(HYPERSPACE_END, areas)
/obj/docking_port/mobile/arrivals/canDock(obj/docking_port/stationary/S)
. = ..()
if(. == SHUTTLE_ALREADY_DOCKED)
. = SHUTTLE_CAN_DOCK
/obj/docking_port/mobile/arrivals/proc/Launch(pickingup)
if(pickingup)
force_depart = TRUE
if(mode == SHUTTLE_IDLE)
if(console)
console.say(pickingup ? "Departing immediately for new employee pickup." : "Shuttle departing.")
request(SSshuttle.getDock("arrivals_stationary")) //we will intentionally never return SHUTTLE_ALREADY_DOCKED
/obj/docking_port/mobile/arrivals/proc/RequireUndocked(mob/user)
if(mode == SHUTTLE_CALL || damaged)
return
Launch(TRUE)
user << "<span class='notice'>Calling your shuttle. One moment...</span>"
while(mode != SHUTTLE_CALL && !damaged)
stoplag()
/obj/docking_port/mobile/arrivals/proc/QueueAnnounce(mob, rank)
if(mode != SHUTTLE_CALL)
AnnounceArrival(mob, rank)
else
LAZYADD(queued_announces, CALLBACK(GLOBAL_PROC, .proc/AnnounceArrival, mob, rank))
/obj/docking_port/mobile/arrivals/vv_edit_var(var_name, var_value)
switch(var_name)
if("perma_docked")
feedback_add_details("admin_secrets_fun_used","ShA[var_value ? "s" : "g"]")
return ..()
+1 -1
View File
@@ -53,6 +53,6 @@
if(S.shuttleId == shuttle_id)
S.possible_destinations = "[landing_zone.id]"
user << "Landing zone set."
to_chat(user, "Landing zone set.")
qdel(src)
+7 -6
View File
@@ -2,6 +2,7 @@
name = "Shuttle Console"
icon_screen = "shuttle"
icon_keyboard = "tech_key"
light_color = LIGHT_COLOR_CYAN
req_access = list( )
circuit = /obj/item/weapon/circuitboard/computer/shuttle
var/shuttleId
@@ -50,29 +51,29 @@
usr.set_machine(src)
src.add_fingerprint(usr)
if(!allowed(usr))
usr << "<span class='danger'>Access denied.</span>"
to_chat(usr, "<span class='danger'>Access denied.</span>")
return
if(href_list["move"])
var/obj/docking_port/mobile/M = SSshuttle.getShuttle(shuttleId)
if(M.launch_status == ENDGAME_LAUNCHED)
usr << "<span class='warning'>You've already escaped. Never going back to that place again!</span>"
to_chat(usr, "<span class='warning'>You've already escaped. Never going back to that place again!</span>")
return
if(no_destination_swap)
if(M.mode != SHUTTLE_IDLE)
usr << "<span class='warning'>Shuttle already in transit.</span>"
to_chat(usr, "<span class='warning'>Shuttle already in transit.</span>")
return
switch(SSshuttle.moveShuttle(shuttleId, href_list["move"], 1))
if(0)
say("Shuttle departing. Please stand away from the doors.")
if(1)
usr << "<span class='warning'>Invalid shuttle requested.</span>"
to_chat(usr, "<span class='warning'>Invalid shuttle requested.</span>")
else
usr << "<span class='notice'>Unable to comply.</span>"
to_chat(usr, "<span class='notice'>Unable to comply.</span>")
/obj/machinery/computer/shuttle/emag_act(mob/user)
if(!emagged)
src.req_access = list()
emagged = 1
user << "<span class='notice'>You fried the consoles ID checking system.</span>"
to_chat(user, "<span class='notice'>You fried the consoles ID checking system.</span>")
+21 -14
View File
@@ -60,12 +60,11 @@
var/obj/item/weapon/card/id/ID = user.get_idcard()
if(!ID)
user << "<span class='warning'>You don't have an ID.</span>"
to_chat(user, "<span class='warning'>You don't have an ID.</span>")
return
if(!(access_heads in ID.access))
user << "<span class='warning'>The access level of \
your card is not high enough.</span>"
to_chat(user, "<span class='warning'>The access level of your card is not high enough.</span>")
return
var/old_len = authorized.len
@@ -119,7 +118,7 @@
// Launch check is in process in case auth_need changes for some reason
// probably external.
. = FALSE
if(ENGINES_STARTED || (!IS_DOCKED))
if(!SSshuttle.emergency || ENGINES_STARTED || (!IS_DOCKED))
return .
// Check to see if we've reached criteria for early launch
@@ -137,7 +136,7 @@
return
if(emagged || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS
user << "<span class='warning'>The shuttle is already about to launch!</span>"
to_chat(user, "<span class='warning'>The shuttle is already about to launch!</span>")
return
var/time = TIME_LEFT
@@ -323,8 +322,10 @@
if(time_left <= 50 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch
sound_played = 1 //Only rev them up once.
for(var/area/shuttle/escape/E in world)
E << 'sound/effects/hyperspace_begin.ogg'
var/list/areas = list()
for(var/area/shuttle/escape/E in sortedAreas)
areas += E
hyperspace_sound(HYPERSPACE_WARMUP, areas)
if(time_left <= 0 && !SSshuttle.emergencyNoEscape)
//move each escape pod (or applicable spaceship) to its corresponding transit dock
@@ -335,8 +336,10 @@
M.enterTransit()
//now move the actual emergency shuttle to its transit dock
for(var/area/shuttle/escape/E in world)
E << 'sound/effects/hyperspace_progress.ogg'
var/list/areas = list()
for(var/area/shuttle/escape/E in sortedAreas)
areas += E
hyperspace_sound(HYPERSPACE_LAUNCH, areas)
enterTransit()
mode = SHUTTLE_ESCAPE
launch_status = ENDGAME_LAUNCHED
@@ -347,10 +350,13 @@
SSshuttle.checkHostileEnvironment()
if(SHUTTLE_ESCAPE)
if(sound_played && time_left <= HYPERSPACE_END_TIME)
var/list/areas = list()
for(var/area/shuttle/escape/E in sortedAreas)
areas += E
hyperspace_sound(HYPERSPACE_END, areas)
if(areaInstance.parallax_movedir && time_left <= PARALLAX_LOOP_TIME)
parallax_slowdown()
for(var/area/shuttle/escape/E in world)
E << 'sound/effects/hyperspace_end.ogg'
for(var/A in SSshuttle.mobile)
var/obj/docking_port/mobile/M = A
if(M.launch_status == ENDGAME_LAUNCHED)
@@ -396,7 +402,7 @@
launch_status = EARLY_LAUNCHED
return ..()
else
usr << "<span class='warning'>Escape pods will only launch during \"Code Red\" security alert.</span>"
to_chat(usr, "<span class='warning'>Escape pods will only launch during \"Code Red\" security alert.</span>")
return 1
/obj/docking_port/mobile/pod/New()
@@ -414,6 +420,7 @@
possible_destinations = "pod_asteroid"
icon = 'icons/obj/terminals.dmi'
icon_state = "dorm_available"
light_color = LIGHT_COLOR_BLUE
density = 0
clockwork = TRUE //it'd look weird
@@ -423,7 +430,7 @@
/obj/machinery/computer/shuttle/pod/emag_act(mob/user)
if(!emagged)
emagged = TRUE
user << "<span class='warning'>You fry the pod's alert level checking system.</span>"
to_chat(user, "<span class='warning'>You fry the pod's alert level checking system.</span>")
/obj/docking_port/stationary/random
name = "escape pod"
@@ -499,7 +506,7 @@
if(security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA || unlocked)
. = ..()
else
usr << "The storage unit will only unlock during a Red or Delta security alert."
to_chat(usr, "The storage unit will only unlock during a Red or Delta security alert.")
/obj/item/weapon/storage/pod/attack_hand(mob/user)
return MouseDrop(user)
+2 -2
View File
@@ -29,5 +29,5 @@
if(last_request && (last_request + cooldown > world.time))
return
last_request = world.time
usr << "<span class='notice'>Your request has been recieved by Centcom.</span>"
admins << "<b>FERRY: <font color='blue'>[key_name_admin(usr)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) (<A HREF='?_src_=holder;secrets=moveferry'>Move Ferry</a>)</b> is requesting to move the transport ferry to Centcom.</font>"
to_chat(usr, "<span class='notice'>Your request has been recieved by Centcom.</span>")
to_chat(admins, "<b>FERRY: <font color='blue'>[key_name_admin(usr)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) (<A HREF='?_src_=holder;secrets=moveferry'>Move Ferry</a>)</b> is requesting to move the transport ferry to Centcom.</font>")
+4 -11
View File
@@ -29,22 +29,15 @@
/atom/movable/light/onShuttleMove()
return 0
/obj/machinery/door/onShuttleMove()
. = ..()
if(!.)
return
INVOKE_ASYNC(src, .proc/close)
// Close any attached airlocks as well
for(var/obj/machinery/door/D in orange(1, src))
INVOKE_ASYNC(src, .proc/close)
/obj/machinery/door/airlock/onShuttleMove()
shuttledocked = 0
for(var/obj/machinery/door/airlock/A in orange(1, src))
for(var/obj/machinery/door/airlock/A in range(1, src))
A.shuttledocked = 0
A.air_tight = TRUE
INVOKE_ASYNC(A, /obj/machinery/door/.proc/close)
. = ..()
shuttledocked = 1
for(var/obj/machinery/door/airlock/A in orange(1, src))
for(var/obj/machinery/door/airlock/A in range(1, src))
A.shuttledocked = 1
/mob/onShuttleMove()
if(!move_on_shuttle)
+6 -2
View File
@@ -13,6 +13,10 @@
duration = 3 * SHUTTLE_RIPPLE_TIME
/obj/effect/overlay/temp/ripple/New()
/obj/effect/overlay/temp/ripple/Initialize(mapload, time_left)
. = ..()
animate(src, alpha=255, time=SHUTTLE_RIPPLE_TIME)
animate(src, alpha=255, time=time_left)
addtimer(CALLBACK(src, .proc/stop_animation), 8, TIMER_CLIENT_TIME)
/obj/effect/overlay/temp/ripple/proc/stop_animation()
icon_state = "medi_holo_no_anim"
+37 -10
View File
@@ -1,5 +1,7 @@
//use this define to highlight docking port bounding boxes (ONLY FOR DEBUG USE)
// #define DOCKING_PORT_HIGHLIGHT
#ifdef TESTING
#define DOCKING_PORT_HIGHLIGHT
#endif
//NORTH default dir
/obj/docking_port
@@ -119,6 +121,7 @@
var/turf/T1 = locate(L[3],L[4],z)
for(var/turf/T in block(T0,T1))
T.color = _color
LAZYINITLIST(T.atom_colours)
T.maptext = null
if(_color)
var/turf/T = locate(L[1], L[2], z)
@@ -239,8 +242,7 @@
/obj/docking_port/mobile/Initialize(mapload)
..()
if(!mapload)
return
var/area/A = get_area(src)
if(istype(A, /area/shuttle))
areaInstance = A
@@ -312,6 +314,10 @@
//call the shuttle to destination S
/obj/docking_port/mobile/proc/request(obj/docking_port/stationary/S)
if(!check_dock(S))
testing("check_dock failed on request for [src]")
return
if(mode == SHUTTLE_IGNITING && destination == S)
return
switch(mode)
@@ -393,10 +399,10 @@
qdel(src, force=TRUE)
/obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1)
/obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1, animate_time)
var/list/turfs = ripple_area(S1)
for(var/t in turfs)
ripples += new /obj/effect/overlay/temp/ripple(t)
ripples += new /obj/effect/overlay/temp/ripple(t, animate_time)
/obj/docking_port/mobile/proc/remove_ripples()
for(var/R in ripples)
@@ -463,7 +469,9 @@
if(!A0)
A0 = new area_type(null)
for(var/turf/T0 in L0)
var/area/old = T0.loc
A0.contents += T0
T0.change_area(old, A0)
if (istype(S1, /obj/docking_port/stationary/transit))
areaInstance.parallax_movedir = preferred_direction
else
@@ -483,7 +491,9 @@
if(T0.type != T0.baseturf) //So if there is a hole in the shuttle we don't drag along the space/asteroid/etc to wherever we are going next
T0.copyTurf(T1)
T1.baseturf = destination_turf_type
var/area/old = T1.loc
areaInstance.contents += T1
T1.change_area(old, areaInstance)
//copy over air
if(isopenturf(T1))
@@ -497,15 +507,12 @@
if(rotation)
T1.shuttleRotate(rotation)
//lighting stuff
T1.redraw_lighting()
SSair.remove_from_active(T1)
T1.CalculateAdjacentTurfs()
SSair.add_to_active(T1,1)
T0.ChangeTurf(turf_type)
T0.redraw_lighting()
SSair.remove_from_active(T0)
T0.CalculateAdjacentTurfs()
SSair.add_to_active(T0,1)
@@ -555,6 +562,10 @@
a hyperspace ripple!</span>",
"<span class='userdanger'>You feel an immense \
crushing pressure as the space around you ripples.</span>")
if(M.key || M.get_ghost(TRUE))
feedback_add_details("shuttle_gib", "[type]")
else
feedback_add_details("shuttle_gib_unintelligent", "[type]")
M.gib()
else //non-living mobs shouldn't be affected by shuttles, which is why this is an else
@@ -602,8 +613,9 @@
/obj/docking_port/mobile/proc/check_effects()
if(!ripples.len)
if((mode == SHUTTLE_CALL) || (mode == SHUTTLE_RECALL))
if(timeLeft(1) <= SHUTTLE_RIPPLE_TIME)
create_ripples(destination)
var/tl = timeLeft(1)
if(tl <= SHUTTLE_RIPPLE_TIME)
create_ripples(destination, tl)
var/obj/docking_port/stationary/S0 = get_docked()
if(areaInstance.parallax_movedir && istype(S0, /obj/docking_port/stationary/transit) && timeLeft(1) <= PARALLAX_LOOP_TIME)
@@ -708,4 +720,19 @@
return S
return null
/obj/docking_port/mobile/proc/hyperspace_sound(phase, list/areas)
var/s
switch(phase)
if(HYPERSPACE_WARMUP)
s = 'sound/effects/hyperspace_begin.ogg'
if(HYPERSPACE_LAUNCH)
s = 'sound/effects/hyperspace_progress.ogg'
if(HYPERSPACE_END)
s = 'sound/effects/hyperspace_end.ogg'
else
CRASH("Invalid hyperspace sound phase: [phase]")
for(var/A in areas)
for(var/obj/machinery/door/E in A) //dumb, I know, but playing it on the engines doesn't do it justice
playsound(E, s, 100, FALSE, max(width, height) - world.view)
#undef DOCKING_PORT_HIGHLIGHT
+6 -8
View File
@@ -126,9 +126,7 @@
/obj/structure/table/abductor/wabbajack/proc/sleeper_dreams(mob/living/sleeper)
if(sleeper in sleepers)
sleeper << "<span class='revennotice'>While you slumber, you have \
the strangest dream, like you can see yourself from the outside.\
</span>"
to_chat(sleeper, "<span class='revennotice'>While you slumber, you have the strangest dream, like you can see yourself from the outside.</span>")
sleeper.ghostize(TRUE)
/obj/structure/table/abductor/wabbajack/left
@@ -152,7 +150,7 @@
status_flags = GODMODE // Please don't punch the barkeeper
unique_name = FALSE // disables the (123) number suffix
/mob/living/simple_animal/drone/snowflake/bardrone/New()
/mob/living/simple_animal/drone/snowflake/bardrone/Initialize()
. = ..()
access_card.access |= access_cent_bar
@@ -168,7 +166,7 @@
AIStatus = AI_OFF
stop_automated_movement = TRUE
/mob/living/simple_animal/hostile/alien/maid/barmaid/New()
/mob/living/simple_animal/hostile/alien/maid/barmaid/Initialize()
. = ..()
access_card = new /obj/item/weapon/card/id(src)
var/datum/job/captain/C = new /datum/job/captain
@@ -198,7 +196,7 @@
var/throwtarget = get_edge_target_turf(src, boot_dir)
M.Weaken(2)
M.throw_at(throwtarget, 5, 1,src)
M << "<span class='notice'>No climbing on the bar please.</span>"
to_chat(M, "<span class='notice'>No climbing on the bar please.</span>")
else
. = ..()
@@ -248,11 +246,11 @@
for(var/obj/I in counted_money)
qdel(I)
mover << "Thank you for your payment! Please enjoy your flight."
to_chat(mover, "Thank you for your payment! Please enjoy your flight.")
approved_passengers += mover
return 1
else
mover << "You don't have enough money to enter the main shuttle. You'll have to fly coach."
to_chat(mover, "You don't have enough money to enter the main shuttle. You'll have to fly coach.")
return 0
/mob/living/simple_animal/hostile/bear/fightpit
+1 -1
View File
@@ -72,7 +72,7 @@ var/list/blacklisted_cargo_types = typecacheof(list(
var/list/empty_turfs = list()
for(var/turf/open/floor/T in areaInstance)
if(T.density || T.contents.len)
if(is_blocked_turf(T))
continue
empty_turfs += T
+4 -2
View File
@@ -5,6 +5,7 @@
circuit = /obj/item/weapon/circuitboard/computer/syndicate_shuttle
icon_screen = "syndishuttle"
icon_keyboard = "syndie_key"
light_color = LIGHT_COLOR_RED
req_access = list(access_syndicate)
shuttleId = "syndicate"
possible_destinations = "syndicate_away;syndicate_z5;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s"
@@ -19,7 +20,7 @@
if(href_list["move"])
var/obj/item/weapon/circuitboard/computer/syndicate_shuttle/board = circuit
if(board.challenge && world.time < SYNDICATE_CHALLENGE_TIMER)
usr << "<span class='warning'>You've issued a combat challenge to the station! You've got to give them at least [round(((SYNDICATE_CHALLENGE_TIMER - world.time) / 10) / 60)] more minutes to allow them to prepare.</span>"
to_chat(usr, "<span class='warning'>You've issued a combat challenge to the station! You've got to give them at least [round(((SYNDICATE_CHALLENGE_TIMER - world.time) / 10) / 60)] more minutes to allow them to prepare.</span>")
return 0
board.moved = TRUE
..()
@@ -42,6 +43,7 @@
name = "syndicate assault pod control"
icon = 'icons/obj/terminals.dmi'
icon_state = "dorm_available"
light_color = LIGHT_COLOR_BLUE
req_access = list(access_syndicate)
shuttleId = "steel_rain"
possible_destinations = null
@@ -50,7 +52,7 @@
/obj/machinery/computer/shuttle/syndicate/drop_pod/Topic(href, href_list)
if(href_list["move"])
if(z != ZLEVEL_CENTCOM)
usr << "<span class='warning'>Pods are one way!</span>"
to_chat(usr, "<span class='warning'>Pods are one way!</span>")
return 0
..()