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:
@@ -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 ..()
|
||||
@@ -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)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
..()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user