Syncs maps, and a bunch of other things that no one will care about/notice/give fucks about until they break. Welcome to conflict hell. (#2460)
* fuck pubby * fuck you too ceres * ree * this is going to be a disaster isn't it * disaster * dme * -_- * tg * woops * proper sync * Welcome to conflict hell. * lets hope this fixes more things than it breaks * gdi * goddamnit
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
|
||||
/obj/docking_port/mobile/arrivals
|
||||
name = "arrivals shuttle"
|
||||
id = "arrivals"
|
||||
|
||||
@@ -20,7 +20,9 @@
|
||||
/obj/item/device/assault_pod
|
||||
name = "Assault Pod Targetting Device"
|
||||
icon_state = "gangtool-red"
|
||||
item_state = "walkietalkie"
|
||||
item_state = "radio"
|
||||
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
||||
desc = "Used to select a landing zone for assault pods."
|
||||
var/shuttle_id = "steel_rain"
|
||||
var/dwidth = 3
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
/obj/machinery/computer/shuttle/ferry
|
||||
name = "transport ferry console"
|
||||
circuit = /obj/item/circuitboard/computer/ferry
|
||||
shuttleId = "ferry"
|
||||
possible_destinations = "ferry_home;ferry_away"
|
||||
/obj/machinery/computer/shuttle/ferry
|
||||
name = "transport ferry console"
|
||||
circuit = /obj/item/circuitboard/computer/ferry
|
||||
shuttleId = "ferry"
|
||||
possible_destinations = "ferry_home;ferry_away"
|
||||
req_access = list(ACCESS_CENT_GENERAL)
|
||||
|
||||
var/aiControlDisabled = 1
|
||||
|
||||
/obj/machinery/computer/shuttle/ferry/proc/canAIControl(mob/user)
|
||||
return ((aiControlDisabled != 1));
|
||||
|
||||
/obj/machinery/computer/shuttle/ferry/attack_ai(mob/user)
|
||||
if(!src.canAIControl(user))
|
||||
return
|
||||
|
||||
/obj/machinery/computer/shuttle/ferry/request
|
||||
name = "ferry console"
|
||||
circuit = /obj/item/circuitboard/computer/ferry/request
|
||||
var/last_request //prevents spamming admins
|
||||
var/cooldown = 600
|
||||
possible_destinations = "ferry_home;ferry_away"
|
||||
|
||||
var/aiControlDisabled = 1
|
||||
|
||||
/obj/machinery/computer/shuttle/ferry/proc/canAIControl(mob/user)
|
||||
return ((aiControlDisabled != 1));
|
||||
|
||||
/obj/machinery/computer/shuttle/ferry/attack_ai(mob/user)
|
||||
if(!src.canAIControl(user))
|
||||
return
|
||||
|
||||
/obj/machinery/computer/shuttle/ferry/request
|
||||
name = "ferry console"
|
||||
circuit = /obj/item/circuitboard/computer/ferry/request
|
||||
var/last_request //prevents spamming admins
|
||||
var/cooldown = 600
|
||||
possible_destinations = "ferry_home;ferry_away"
|
||||
req_access = list(ACCESS_CENT_GENERAL)
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/machinery/computer/shuttle/ferry/request/Topic(href, href_list)
|
||||
..()
|
||||
if(href_list["request"])
|
||||
if(last_request && (last_request + cooldown > world.time))
|
||||
return
|
||||
last_request = world.time
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/machinery/computer/shuttle/ferry/request/Topic(href, href_list)
|
||||
..()
|
||||
if(href_list["request"])
|
||||
if(last_request && (last_request + cooldown > world.time))
|
||||
return
|
||||
last_request = world.time
|
||||
to_chat(usr, "<span class='notice'>Your request has been recieved by CentCom.</span>")
|
||||
to_chat(GLOB.admins, "<b>FERRY: <font color='blue'>[ADMIN_LOOKUPFLW(usr)] (<A HREF='?_src_=holder;secrets=moveferry'>Move Ferry</a>)</b> is requesting to move the transport ferry to CentCom.</font>")
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker
|
||||
name = "navigation computer"
|
||||
desc = "Used to designate a precise transit location for a spacecraft."
|
||||
z_lock = ZLEVEL_STATION
|
||||
jump_action = null
|
||||
var/datum/action/innate/shuttledocker_rotate/rotate_action = new
|
||||
var/datum/action/innate/shuttledocker_place/place_action = new
|
||||
var/shuttleId = ""
|
||||
var/shuttlePortId = ""
|
||||
var/shuttlePortName = ""
|
||||
var/list/jumpto_ports = list() //hashset of ports to jump to and ignore for collision purposes
|
||||
var/list/blacklisted_turfs
|
||||
var/obj/docking_port/stationary/my_port
|
||||
var/view_range = 7
|
||||
var/x_offset = 0
|
||||
var/y_offset = 0
|
||||
var/space_turfs_only = TRUE
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/GrantActions(mob/living/user)
|
||||
if(jumpto_ports.len)
|
||||
jump_action = new /datum/action/innate/camera_jump/shuttle_docker
|
||||
..()
|
||||
|
||||
if(rotate_action)
|
||||
rotate_action.target = user
|
||||
rotate_action.Grant(user)
|
||||
actions += rotate_action
|
||||
|
||||
if(place_action)
|
||||
place_action.target = user
|
||||
place_action.Grant(user)
|
||||
actions += place_action
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/CreateEye()
|
||||
var/obj/docking_port/mobile/M = SSshuttle.getShuttle(shuttleId)
|
||||
if(QDELETED(M))
|
||||
return
|
||||
eyeobj = new /mob/camera/aiEye/remote/shuttle_docker()
|
||||
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
|
||||
the_eye.origin = src
|
||||
the_eye.dir = M.dir
|
||||
var/area/A = get_area(M)
|
||||
if(QDELETED(A))
|
||||
return
|
||||
var/turf/origin = locate(M.x + x_offset, M.y + y_offset, M.z)
|
||||
for(var/turf/T in A)
|
||||
if(T.z != origin.z)
|
||||
continue
|
||||
var/image/I = image('icons/effects/alphacolors.dmi', origin, "red")
|
||||
I.layer = ABOVE_NORMAL_TURF_LAYER
|
||||
I.plane = 0
|
||||
I.mouse_opacity = 0
|
||||
var/x_off = T.x - origin.x
|
||||
var/y_off = T.y - origin.y
|
||||
I.pixel_x = x_off * 32
|
||||
I.pixel_y = y_off * 32
|
||||
the_eye.placement_images[I] = list(x_off, y_off)
|
||||
generateBlacklistedTurfs()
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/give_eye_control(mob/user)
|
||||
..()
|
||||
if(!QDELETED(user) && user.client)
|
||||
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
|
||||
user.client.images += the_eye.placement_images
|
||||
user.client.images += the_eye.placed_images
|
||||
user.client.view = view_range
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/remove_eye_control(mob/living/user)
|
||||
..()
|
||||
if(!QDELETED(user) && user.client)
|
||||
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
|
||||
user.client.images -= the_eye.placement_images
|
||||
user.client.images -= the_eye.placed_images
|
||||
user.client.view = world.view
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/placeLandingSpot()
|
||||
if(!checkLandingSpot())
|
||||
return FALSE
|
||||
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
|
||||
if(!my_port)
|
||||
my_port = new /obj/docking_port/stationary
|
||||
my_port.name = shuttlePortName
|
||||
my_port.id = shuttlePortId
|
||||
var/obj/docking_port/mobile/M = SSshuttle.getShuttle(shuttleId)
|
||||
my_port.height = M.height
|
||||
my_port.width = M.width
|
||||
my_port.dheight = M.dheight
|
||||
my_port.dwidth = M.dwidth
|
||||
my_port.dir = the_eye.dir
|
||||
my_port.loc = locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z)
|
||||
if(current_user && current_user.client)
|
||||
current_user.client.images -= the_eye.placed_images
|
||||
|
||||
for(var/V in the_eye.placed_images)
|
||||
qdel(V)
|
||||
the_eye.placed_images = list()
|
||||
|
||||
for(var/V in the_eye.placement_images)
|
||||
var/turf/T = locate(eyeobj.x + the_eye.placement_images[V][1], eyeobj.y + the_eye.placement_images[V][2], eyeobj.z)
|
||||
var/image/I = image('icons/effects/alphacolors.dmi', T, "blue")
|
||||
I.layer = ABOVE_OPEN_TURF_LAYER
|
||||
I.plane = 0
|
||||
I.mouse_opacity = 0
|
||||
the_eye.placed_images += I
|
||||
|
||||
if(current_user && current_user.client)
|
||||
current_user.client.images += the_eye.placed_images
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/rotateLandingSpot()
|
||||
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
|
||||
the_eye.dir = turn(the_eye.dir, -90)
|
||||
for(var/V in the_eye.placement_images)
|
||||
var/image/I = V
|
||||
var/list/coords = the_eye.placement_images[V]
|
||||
var/Tmp = coords[1]
|
||||
coords[1] = coords[2]
|
||||
coords[2] = -Tmp
|
||||
|
||||
I.pixel_x = coords[1] * 32
|
||||
I.pixel_y = coords[2] * 32
|
||||
var/Tmp = x_offset
|
||||
x_offset = y_offset
|
||||
y_offset = -Tmp
|
||||
checkLandingSpot()
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingTurf(turf/T)
|
||||
return T && (!blacklisted_turfs || !blacklisted_turfs[T]) && (!space_turfs_only || isspaceturf(T))
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/generateBlacklistedTurfs()
|
||||
blacklisted_turfs = list()
|
||||
for(var/V in SSshuttle.stationary)
|
||||
if(!V)
|
||||
continue
|
||||
var/obj/docking_port/stationary/S = V
|
||||
if(z_lock && (S.z != z_lock))
|
||||
continue
|
||||
if((S.id == shuttlePortId) || jumpto_ports[S.id])
|
||||
continue
|
||||
for(var/T in S.return_turfs())
|
||||
blacklisted_turfs[T] = TRUE
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingSpot()
|
||||
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
|
||||
var/turf/eyeturf = get_turf(the_eye)
|
||||
if(!eyeturf)
|
||||
return
|
||||
var/landing_spot_clear = TRUE
|
||||
for(var/V in the_eye.placement_images)
|
||||
var/image/I = V
|
||||
I.loc = eyeturf
|
||||
var/list/coords = the_eye.placement_images[V]
|
||||
var/turf/T = locate(eyeturf.x + coords[1], eyeturf.y + coords[2], eyeturf.z)
|
||||
if(checkLandingTurf(T))
|
||||
I.icon_state = "green"
|
||||
else
|
||||
I.icon_state = "red"
|
||||
landing_spot_clear = FALSE
|
||||
return landing_spot_clear
|
||||
|
||||
/mob/camera/aiEye/remote/shuttle_docker
|
||||
visible_icon = FALSE
|
||||
use_static = FALSE
|
||||
var/list/placement_images = list()
|
||||
var/list/placed_images = list()
|
||||
|
||||
/mob/camera/aiEye/remote/shuttle_docker/setLoc(T)
|
||||
..()
|
||||
var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin
|
||||
console.checkLandingSpot()
|
||||
|
||||
/mob/camera/aiEye/remote/shuttle_docker/update_remote_sight(mob/living/user)
|
||||
user.sight = BLIND|SEE_TURFS
|
||||
user.lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE
|
||||
user.sync_lighting_plane_alpha()
|
||||
return TRUE
|
||||
|
||||
/datum/action/innate/shuttledocker_rotate
|
||||
name = "Rotate"
|
||||
icon_icon = 'icons/mob/actions/actions_mecha.dmi'
|
||||
button_icon_state = "mech_cycle_equip_off"
|
||||
|
||||
/datum/action/innate/shuttledocker_rotate/Activate()
|
||||
if(QDELETED(target) || !isliving(target))
|
||||
return
|
||||
var/mob/living/C = target
|
||||
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin
|
||||
origin.rotateLandingSpot()
|
||||
|
||||
/datum/action/innate/shuttledocker_place
|
||||
name = "Place"
|
||||
icon_icon = 'icons/mob/actions/actions_mecha.dmi'
|
||||
button_icon_state = "mech_zoom_off"
|
||||
|
||||
/datum/action/innate/shuttledocker_place/Activate()
|
||||
if(QDELETED(target) || !isliving(target))
|
||||
return
|
||||
var/mob/living/C = target
|
||||
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin
|
||||
if(origin.placeLandingSpot())
|
||||
to_chat(target, "<span class='notice'>Transit location designated</span>")
|
||||
else
|
||||
to_chat(target, "<span class='warning'>Invalid transit location</span>")
|
||||
|
||||
/datum/action/innate/camera_jump/shuttle_docker
|
||||
name = "Jump to Location"
|
||||
button_icon_state = "camera_jump"
|
||||
|
||||
/datum/action/innate/camera_jump/shuttle_docker/Activate()
|
||||
if(QDELETED(target) || !isliving(target))
|
||||
return
|
||||
var/mob/living/C = target
|
||||
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/shuttle_docker/console = remote_eye.origin
|
||||
|
||||
playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, 0)
|
||||
|
||||
var/list/L = list()
|
||||
for(var/V in SSshuttle.stationary)
|
||||
if(!V)
|
||||
continue
|
||||
var/obj/docking_port/stationary/S = V
|
||||
if(console.z_lock && (S.z != console.z_lock))
|
||||
continue
|
||||
if(console.jumpto_ports[S.id])
|
||||
L[S.name] = S
|
||||
|
||||
playsound(console, 'sound/machines/terminal_prompt.ogg', 25, 0)
|
||||
var/selected = input("Choose location to jump to", "Locations", null) as null|anything in L
|
||||
if(QDELETED(src) || QDELETED(target) || !isliving(target))
|
||||
return
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
if(selected)
|
||||
var/turf/T = get_turf(L[selected])
|
||||
if(T)
|
||||
playsound(console, 'sound/machines/terminal_prompt_confirm.ogg', 25, 0)
|
||||
remote_eye.setLoc(T)
|
||||
to_chat(target, "<span class='notice'>Jumped to [selected]</span>")
|
||||
C.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static)
|
||||
C.clear_fullscreen("flash", 3)
|
||||
else
|
||||
playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, 0)
|
||||
@@ -78,7 +78,7 @@ All ShuttleMove procs go here
|
||||
return FALSE
|
||||
|
||||
// Called on atoms to move the atom to the new location
|
||||
/atom/movable/proc/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir)
|
||||
/atom/movable/proc/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
if(newT == oldT) // In case of in place shuttle rotation shenanigans.
|
||||
return
|
||||
|
||||
@@ -162,7 +162,7 @@ All ShuttleMove procs go here
|
||||
|
||||
/************************************Machinery move procs************************************/
|
||||
|
||||
/obj/machinery/door/airlock/beforeShuttleMove()
|
||||
/obj/machinery/door/airlock/beforeShuttleMove(turf/newT, rotation)
|
||||
. = ..()
|
||||
shuttledocked = 0
|
||||
for(var/obj/machinery/door/airlock/A in range(1, src))
|
||||
@@ -170,56 +170,55 @@ All ShuttleMove procs go here
|
||||
A.air_tight = TRUE
|
||||
INVOKE_ASYNC(A, /obj/machinery/door/.proc/close)
|
||||
|
||||
/obj/machinery/door/airlock/afterShuttleMove()
|
||||
/obj/machinery/door/airlock/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
shuttledocked = 1
|
||||
for(var/obj/machinery/door/airlock/A in range(1, src))
|
||||
A.shuttledocked = 1
|
||||
|
||||
/obj/machinery/camera/beforeShuttleMove()
|
||||
/obj/machinery/camera/beforeShuttleMove(turf/newT, rotation)
|
||||
. = ..()
|
||||
GLOB.cameranet.removeCamera(src)
|
||||
GLOB.cameranet.updateChunk()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/camera/afterShuttleMove()
|
||||
/obj/machinery/camera/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
if(can_use())
|
||||
GLOB.cameranet.addCamera(src)
|
||||
var/datum/camerachunk/chunk = GLOB.cameranet.getCameraChunk(x, y, z)
|
||||
chunk.hasChanged(TRUE)
|
||||
|
||||
/obj/machinery/telecomms/onShuttleMove(turf/T1)
|
||||
/obj/machinery/telecomms/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
if(. && T1) // Update listening Z, just in case you have telecomm relay on a shuttle
|
||||
listening_level = T1.z
|
||||
listening_level = z // Update listening Z, just in case you have telecomm relay on a shuttle
|
||||
|
||||
/obj/machinery/mech_bay_recharge_port/afterShuttleMove()
|
||||
/obj/machinery/mech_bay_recharge_port/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
recharging_turf = get_step(loc, dir)
|
||||
|
||||
/obj/machinery/atmospherics/afterShuttleMove()
|
||||
/obj/machinery/atmospherics/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
if(pipe_vision_img)
|
||||
pipe_vision_img.loc = loc
|
||||
|
||||
/obj/machinery/computer/auxillary_base/onShuttleMove(turf/T1)
|
||||
/obj/machinery/computer/auxillary_base/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
. = ..()
|
||||
if(z == ZLEVEL_MINING) //Avoids double logging and landing on other Z-levels due to badminnery
|
||||
SSblackbox.add_details("colonies_dropped", "[x]|[y]|[z]") //Number of times a base has been dropped!
|
||||
|
||||
/obj/machinery/gravity_generator/main/beforeShuttleMove()
|
||||
/obj/machinery/gravity_generator/main/beforeShuttleMove(turf/newT, rotation)
|
||||
. = ..()
|
||||
on = FALSE
|
||||
update_list()
|
||||
|
||||
/obj/machinery/gravity_generator/main/afterShuttleMove()
|
||||
/obj/machinery/gravity_generator/main/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
if(charge_count != 0 && charging_state != POWER_UP)
|
||||
on = TRUE
|
||||
update_list()
|
||||
|
||||
/obj/machinery/thruster/beforeShuttleMove()
|
||||
/obj/machinery/thruster/beforeShuttleMove(turf/newT, rotation)
|
||||
. = ..()
|
||||
. = TRUE
|
||||
|
||||
@@ -238,7 +237,7 @@ All ShuttleMove procs go here
|
||||
var/new_pos = supposed_node_connect.Find(real_node_connect[I])
|
||||
nodes[new_pos] = nodes_copy[I]
|
||||
|
||||
/obj/machinery/atmospherics/afterShuttleMove()
|
||||
/obj/machinery/atmospherics/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
var/missing_nodes = FALSE
|
||||
for(DEVICE_TYPE_LOOP)
|
||||
@@ -267,17 +266,17 @@ All ShuttleMove procs go here
|
||||
// atmosinit() calls update_icon(), so we don't need to call it
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/afterShuttleMove()
|
||||
/obj/machinery/atmospherics/pipe/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
var/turf/T = loc
|
||||
hide(T.intact)
|
||||
|
||||
/obj/machinery/navbeacon/beforeShuttleMove()
|
||||
/obj/machinery/navbeacon/beforeShuttleMove(turf/newT, rotation)
|
||||
. = ..()
|
||||
GLOB.navbeacons["[z]"] -= src
|
||||
GLOB.deliverybeacons -= src
|
||||
|
||||
/obj/machinery/navbeacon/afterShuttleMove()
|
||||
/obj/machinery/navbeacon/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
var/turf/T = loc
|
||||
hide(T.intact)
|
||||
@@ -289,7 +288,7 @@ All ShuttleMove procs go here
|
||||
GLOB.deliverybeacons += src
|
||||
GLOB.deliverybeacontags += location
|
||||
|
||||
/obj/machinery/power/terminal/afterShuttleMove()
|
||||
/obj/machinery/power/terminal/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
var/turf/T = src.loc
|
||||
if(level==1)
|
||||
@@ -297,14 +296,14 @@ All ShuttleMove procs go here
|
||||
|
||||
/************************************Item move procs************************************/
|
||||
|
||||
/obj/item/storage/pod/onShuttleMove()
|
||||
/obj/item/storage/pod/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
unlocked = TRUE
|
||||
// If the pod was launched, the storage will always open.
|
||||
return ..()
|
||||
|
||||
/************************************Mob move procs************************************/
|
||||
|
||||
/mob/onShuttleMove()
|
||||
/mob/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
if(!move_on_shuttle)
|
||||
return 0
|
||||
. = ..()
|
||||
@@ -328,26 +327,25 @@ All ShuttleMove procs go here
|
||||
if(movement_force["KNOCKDOWN"])
|
||||
Knockdown(movement_force["KNOCKDOWN"])
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/onShuttleMove()
|
||||
var/turf/oldT = loc
|
||||
/mob/living/simple_animal/hostile/megafauna/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
. = ..()
|
||||
message_admins("Megafauna [src] [ADMIN_FLW(src)] moved via shuttle from [ADMIN_COORDJMP(oldT)] to [ADMIN_COORDJMP(loc)]")
|
||||
|
||||
/************************************Structure move procs************************************/
|
||||
|
||||
/obj/structure/grille/beforeShuttleMove()
|
||||
/obj/structure/grille/beforeShuttleMove(turf/newT, rotation)
|
||||
. = ..()
|
||||
. = TRUE
|
||||
|
||||
/obj/structure/lattice/beforeShuttleMove()
|
||||
/obj/structure/lattice/beforeShuttleMove(turf/newT, rotation)
|
||||
. = ..()
|
||||
. = TRUE
|
||||
|
||||
/obj/structure/disposalpipe/afterShuttleMove()
|
||||
/obj/structure/disposalpipe/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
update()
|
||||
|
||||
/obj/structure/cable/afterShuttleMove()
|
||||
/obj/structure/cable/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
|
||||
. = ..()
|
||||
var/turf/T = loc
|
||||
if(level==1)
|
||||
@@ -355,26 +353,22 @@ All ShuttleMove procs go here
|
||||
|
||||
/************************************Misc move procs************************************/
|
||||
|
||||
/atom/movable/lighting_object/onShuttleMove()
|
||||
/atom/movable/lighting_object/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
return FALSE
|
||||
|
||||
/atom/movable/light/onShuttleMove()
|
||||
/atom/movable/light/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
return FALSE
|
||||
|
||||
/obj/docking_port/stationary/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force)
|
||||
var/obj/docking_port/mobile/docked_port = get_docked()
|
||||
if(!docked_port)
|
||||
docked_port = locate(/obj/docking_port/mobile) in newT
|
||||
|
||||
if(docked_port && locate(/obj/docking_port/stationary) in newT)
|
||||
return FALSE //There's a mobile dock that's moving to the new turf to be with another stationary dock! After all I did for them...
|
||||
/obj/docking_port/stationary/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
if(old_dock == src) //Don't move the dock we're leaving
|
||||
return FALSE
|
||||
|
||||
. = ..()
|
||||
|
||||
obj/docking_port/stationary/public_mining_dock/onShuttleMove()
|
||||
/obj/docking_port/stationary/public_mining_dock/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
id = "mining_public" //It will not move with the base, but will become enabled as a docking point.
|
||||
return 0
|
||||
|
||||
/obj/effect/abstract/proximity_checker/onShuttleMove()
|
||||
/obj/effect/abstract/proximity_checker/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
|
||||
//timer so it only happens once
|
||||
addtimer(CALLBACK(monitor, /datum/proximity_monitor/proc/SetRange, monitor.current_range, TRUE), 0, TIMER_UNIQUE)
|
||||
|
||||
@@ -71,6 +71,12 @@
|
||||
_y + (-dwidth+width-1)*sin + (-dheight+height-1)*cos
|
||||
)
|
||||
|
||||
//returns turfs within our projected rectangle in no particular order
|
||||
/obj/docking_port/proc/return_turfs()
|
||||
var/list/L = return_coords()
|
||||
var/turf/T0 = locate(L[1],L[2],z)
|
||||
var/turf/T1 = locate(L[3],L[4],z)
|
||||
return block(T0,T1)
|
||||
|
||||
//returns turfs within our projected rectangle in a specific order.
|
||||
//this ensures that turfs are copied over in the same order, regardless of any rotation
|
||||
@@ -535,7 +541,7 @@
|
||||
continue
|
||||
for(var/thing in oldT) //Needs to be this kind of loop in case, because of shuttle rotation shenanigans, the destination turf is the same as the source turf
|
||||
var/atom/movable/moving_atom = thing
|
||||
moving_atom.onShuttleMove(newT, oldT, rotation, movement_force, movement_direction) //atoms
|
||||
moving_atom.onShuttleMove(newT, oldT, rotation, movement_force, movement_direction, old_dock) //atoms
|
||||
moved_atoms += moving_atom
|
||||
oldT.onShuttleMove(newT, turf_type, baseturf_type, rotation, movement_force, movement_direction) //turfs
|
||||
var/area/shuttle_area = oldT.loc
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
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"
|
||||
possible_destinations = "syndicate_away;syndicate_z5;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s;syndicate_custom"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/machinery/computer/shuttle/syndicate/recall
|
||||
@@ -42,5 +42,18 @@
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate
|
||||
name = "syndicate shuttle navigation computer"
|
||||
desc = "Used to designate a precise transit location for the syndicate shuttle."
|
||||
icon_screen = "syndishuttle"
|
||||
icon_keyboard = "syndie_key"
|
||||
z_lock = ZLEVEL_STATION
|
||||
shuttleId = "syndicate"
|
||||
shuttlePortId = "syndicate_custom"
|
||||
shuttlePortName = "custom location"
|
||||
jumpto_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1)
|
||||
view_range = 13
|
||||
x_offset = -4
|
||||
y_offset = -2
|
||||
|
||||
#undef SYNDICATE_CHALLENGE_TIMER
|
||||
Reference in New Issue
Block a user