diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index 1457fa818bb..fd68fcac95f 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -171,24 +171,18 @@ var/global/datum/controller/supply_shuttle/supply_shuttle proc/send() var/area/from var/area/dest - var/area/the_shuttles_way switch(at_station) if(1) from = locate(SUPPLY_STATION_AREATYPE) dest = locate(SUPPLY_DOCK_AREATYPE) - the_shuttles_way = from at_station = 0 if(0) from = locate(SUPPLY_DOCK_AREATYPE) dest = locate(SUPPLY_STATION_AREATYPE) - the_shuttles_way = dest at_station = 1 + dest.clear_docking_area() moving = 0 - //Do I really need to explain this loop? - for(var/mob/living/unlucky_person in the_shuttles_way) - unlucky_person.gib() - from.move_contents_to(dest) //Check whether the shuttle is allowed to move diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 8970bd6951f..a20826004ae 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -298,4 +298,32 @@ // There's a gravity generator on our z level if(T && gravity_generators["[T.z]"] && length(gravity_generators["[T.z]"])) return 1 - return 0 \ No newline at end of file + return 0 + +/area/proc/clear_docking_area() + var/list/dstturfs = list() + var/throwy = world.maxy + + for(var/turf/T in src) + dstturfs += T + if(T.y < throwy) + throwy = T.y + + // hey you, get out of the way! + for(var/turf/T in dstturfs) + // find the turf to move things to + var/turf/D = locate(T.x, throwy - 1, T.z) + for(var/atom/movable/AM as mob|obj in T) + //mobs take damage + if(istype(AM, /mob/living)) + var/mob/living/living_mob = AM + living_mob.Paralyse(10) + living_mob.take_organ_damage(80) + //Anything not bolted down is moved, everything else is destroyed + AM.anchored = 0 + AM.Move(D) + if(istype(T, /turf/simulated)) + del(T) + + for(var/atom/movable/bug in src) // If someone (or something) is somehow still in the shuttle's docking area... + qdel(bug) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 7a7d7c45166..560807e92a5 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -427,6 +427,7 @@ var/global/floorIsLava = 0
Move Ferry
Move Mining Shuttle
+ Move Labor Shuttle

"} diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 25510344edc..20873efa2d3 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1926,15 +1926,22 @@ feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","ShM") var/datum/shuttle_manager/s = shuttles["mining"] - if(istype(s)) s.move_shuttle() - message_admins("\blue [key_name_admin(usr)] moved mining shuttle", 1) + if(istype(s)) s.move_shuttle(0) + message_admins("[key_name_admin(usr)] moved mining shuttle", 1) log_admin("[key_name(usr)] moved the mining shuttle") + if("movelaborshuttle") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","ShL") + var/datum/shuttle_manager/s = shuttles["laborcamp"] + if(istype(s)) s.move_shuttle(0) + message_admins("[key_name_admin(usr)] moved labor shuttle", 1) + log_admin("[key_name(usr)] moved the labor shuttle") if("moveferry") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","ShF") var/datum/shuttle_manager/s = shuttles["ferry"] - if(istype(s)) s.move_shuttle() - message_admins("\blue [key_name_admin(usr)] moved the centcom ferry", 1) + if(istype(s)) s.move_shuttle(0) + message_admins("[key_name_admin(usr)] moved the centcom ferry", 1) log_admin("[key_name(usr)] moved the centcom ferry") if("kick_all_from_lobby") if(ticker && ticker.current_state == GAME_STATE_PLAYING) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 8fadd57ba3f..1002d63f30b 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -21,33 +21,7 @@ datum/shuttle_manager/proc/move_shuttle(var/override_delay) fromArea = locate(location) //the location of the shuttle toArea = locate(fromArea.destination) - var/list/dstturfs = list() - var/throwy = world.maxy - - for(var/turf/T in toArea) - dstturfs += T - if(T.y < throwy) - throwy = T.y - - // hey you, get out of the way! - for(var/turf/T in dstturfs) - // find the turf to move things to - var/turf/D = locate(T.x, throwy - 1, 1) - //var/turf/E = get_step(D, SOUTH) - for(var/atom/movable/AM as mob|obj in T) - AM.Move(D) - // NOTE: Commenting this out to avoid recreating mass driver glitch - /* - spawn(0) - AM.throw_at(E, 1, 1) - return - */ - - if(istype(T, /turf/simulated)) - del(T) - - for(var/mob/living/carbon/bug in toArea) // If someone somehow is still in the shuttle's docking area... - bug.gib() + toArea.clear_docking_area() fromArea.move_contents_to(toArea) location = toArea.type @@ -74,8 +48,6 @@ datum/shuttle_manager/proc/move_shuttle(var/override_delay) return 1 - - /obj/machinery/computer/shuttle name = "Shuttle Console" icon = 'icons/obj/computer.dmi' @@ -108,11 +80,11 @@ datum/shuttle_manager/proc/move_shuttle(var/override_delay) if(id in shuttles) var/datum/shuttle_manager/s = shuttles[id] if (s.move_shuttle()) - usr << "\blue Shuttle recieved message and will be sent shortly." + usr << "Shuttle recieved message and will be sent shortly." else - usr << "\blue Shuttle is already moving." + usr << "Shuttle is already moving." else - usr << "\red Invalid shuttle requested." + usr << "Invalid shuttle requested." /obj/machinery/computer/shuttle/attackby(I as obj, user as mob)