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:
@@ -115,8 +115,6 @@
|
||||
name = "synthesized banana peel"
|
||||
desc = "A synthetic banana peel."
|
||||
|
||||
/obj/item/grown/bananapeel/specialpeel/Crossed(AM)
|
||||
if(iscarbon(AM))
|
||||
var/mob/living/carbon/carbon = AM
|
||||
if(carbon.slip(40, src, FALSE))
|
||||
qdel(src)
|
||||
/obj/item/grown/bananapeel/specialpeel/Initialize(AM)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/slippery, 40)
|
||||
|
||||
+5
-3
@@ -1,8 +1,10 @@
|
||||
//These landmarks can be placed in rooms/ruins to set the baseturfs of every turf in the area. Easier than having potentially unlimited subtypes of every turf or having to manually edit the turfs in the map editor
|
||||
//Landmarks and other helpers which speed up the mapping process and reduce the number of unique instances/subtypes of items/turf/ect
|
||||
|
||||
/obj/effect/baseturf_helper
|
||||
|
||||
|
||||
/obj/effect/baseturf_helper //Set the baseturfs of every turf in the /area/ it is placed.
|
||||
name = "baseturf editor"
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon = 'icons/obj/items_and_weapons.dmi'
|
||||
icon_state = "syndballoon"
|
||||
var/baseturf = null
|
||||
layer = POINT_LAYER
|
||||
@@ -234,15 +234,11 @@
|
||||
|
||||
|
||||
/mob/proc/drop_all_held_items()
|
||||
if(!loc || !loc.allow_drop())
|
||||
return
|
||||
for(var/obj/item/I in held_items)
|
||||
dropItemToGround(I)
|
||||
|
||||
//Drops the item in our active hand.
|
||||
/mob/proc/drop_item()
|
||||
if(!loc || !loc.allow_drop())
|
||||
return
|
||||
var/obj/item/held = get_active_held_item()
|
||||
return dropItemToGround(held)
|
||||
|
||||
@@ -272,7 +268,7 @@
|
||||
//for when you want the item to end up on the ground
|
||||
//will force move the item to the ground and call the turf's Entered
|
||||
/mob/proc/dropItemToGround(obj/item/I, force = FALSE)
|
||||
return doUnEquip(I, force, loc, FALSE)
|
||||
return doUnEquip(I, force, drop_location(), FALSE)
|
||||
|
||||
//for when the item will be immediately placed in a loc other than the ground
|
||||
/mob/proc/transferItemToLoc(obj/item/I, newloc = null, force = FALSE)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if(!check_functionality())
|
||||
return FALSE
|
||||
|
||||
var/obj/item/paper/P = new/obj/item/paper(get_turf(holder))
|
||||
var/obj/item/paper/P = new/obj/item/paper(holder.drop_location())
|
||||
|
||||
// Damaged printer causes the resulting paper to be somewhat harder to read.
|
||||
if(damage > damage_malfunction)
|
||||
|
||||
@@ -177,10 +177,13 @@
|
||||
var/area/A = src.loc.loc
|
||||
|
||||
//if area isn't specified use current
|
||||
if(isarea(A) && src.areastring == null)
|
||||
if(areastring)
|
||||
src.area = get_area_instance_from_text(areastring)
|
||||
if(!src.area)
|
||||
src.area = A
|
||||
stack_trace("Bad areastring path for [src], [src.areastring]")
|
||||
else if(isarea(A) && src.areastring == null)
|
||||
src.area = A
|
||||
else
|
||||
src.area = get_area_by_name(areastring)
|
||||
update_icon()
|
||||
|
||||
make_terminal()
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#define SUPERMATTER_DANGER_PERCENT 50
|
||||
#define SUPERMATTER_WARNING_PERCENT 100
|
||||
|
||||
GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard)
|
||||
|
||||
/obj/machinery/power/supermatter_shard
|
||||
name = "supermatter shard"
|
||||
desc = "A strangely translucent and iridescent crystal that looks like it used to be part of a larger structure."
|
||||
@@ -131,6 +133,7 @@
|
||||
var/produces_gas = TRUE
|
||||
var/obj/effect/countdown/supermatter/countdown
|
||||
|
||||
var/is_main_engine = FALSE
|
||||
|
||||
/obj/machinery/power/supermatter_shard/Initialize()
|
||||
. = ..()
|
||||
@@ -143,7 +146,8 @@
|
||||
radio.listening = 0
|
||||
radio.recalculateChannels()
|
||||
investigate_log("has been created.", INVESTIGATE_SUPERMATTER)
|
||||
|
||||
if(is_main_engine)
|
||||
GLOB.main_supermatter_engine = src
|
||||
|
||||
/obj/machinery/power/supermatter_shard/Destroy()
|
||||
investigate_log("has been destroyed.", INVESTIGATE_SUPERMATTER)
|
||||
@@ -151,6 +155,8 @@
|
||||
QDEL_NULL(radio)
|
||||
GLOB.poi_list -= src
|
||||
QDEL_NULL(countdown)
|
||||
if(is_main_engine && GLOB.main_supermatter_engine == src)
|
||||
GLOB.main_supermatter_engine = null
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/power/supermatter_shard/examine(mob/user)
|
||||
@@ -584,6 +590,9 @@
|
||||
else
|
||||
L.show_message("<span class='italics'>You hear an unearthly ringing and notice your skin is covered in fresh radiation burns.</span>", 2)
|
||||
|
||||
/obj/machinery/power/supermatter_shard/engine
|
||||
is_main_engine = TRUE
|
||||
|
||||
// When you wanna make a supermatter shard for the dramatic effect, but
|
||||
// don't want it exploding suddenly
|
||||
/obj/machinery/power/supermatter_shard/hugbox
|
||||
@@ -599,6 +608,9 @@
|
||||
gasefficency = 0.15
|
||||
explosion_power = 35
|
||||
|
||||
/obj/machinery/power/supermatter_shard/crystal/engine
|
||||
is_main_engine = TRUE
|
||||
|
||||
/obj/machinery/power/supermatter_shard/proc/supermatter_pull(turf/center, pull_range = 10)
|
||||
playsound(src.loc, 'sound/weapons/marauder.ogg', 100, 1, extrarange = 7)
|
||||
for(var/atom/P in orange(pull_range,center))
|
||||
|
||||
@@ -121,8 +121,8 @@
|
||||
T.assume_air(gas)
|
||||
T.air_update_turf()
|
||||
|
||||
/obj/structure/disposalholder/allow_drop()
|
||||
return 1
|
||||
/obj/structure/disposalholder/AllowDrop()
|
||||
return TRUE
|
||||
|
||||
/obj/structure/disposalholder/ex_act(severity, target)
|
||||
return
|
||||
|
||||
@@ -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