diff --git a/code/datums/shuttle.dm b/code/datums/shuttle.dm index 96b6cdf73ae..18285b99a4c 100644 --- a/code/datums/shuttle.dm +++ b/code/datums/shuttle.dm @@ -79,7 +79,7 @@ var/password = 28011 var/can_link_to_computer = LINK_FORBIDDEN - //Whether the shuttle gibs or displaces stuff + //Whether the shuttle gibs or displaces stuff. Change this to COLLISION_DISPLACE to make all shuttles displace stuff by default var/collision_type = COLLISION_DESTROY var/list/control_consoles = list() @@ -88,6 +88,7 @@ /datum/shuttle/New(var/area/starting_area) .=..() + shuttles |= src if(starting_area) @@ -97,7 +98,7 @@ linked_area = starting_area else linked_area = starting_area - warning("Unable to find area [starting_area] in world - [src.type] ([src.name]) will be broken.") + warning("Unable to find area [starting_area] in world - [src.type] ([src.name]) won't be able to function properly.") password = rand(10000,99999) diff --git a/code/game/shuttles/taxi.dm b/code/game/shuttles/taxi.dm index 95ad8bf4013..53dfebfe657 100644 --- a/code/game/shuttles/taxi.dm +++ b/code/game/shuttles/taxi.dm @@ -30,6 +30,9 @@ var/global/datum/shuttle/taxi/b/taxi_b = new(starting_area = TAXI_B_STARTING_ARE stable = 1 //Don't stun everyone and don't throw anything when moving +/datum/shuttle/taxi/is_special() + return 1 + //TAXI A /datum/shuttle/taxi/a diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index e3029a069bb..76d2af1a6c2 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -846,6 +846,9 @@ var/global/floorIsLava = 0 Add a destination docking port to a shuttle
This will allow the shuttle to move to it.
+ Set a destination docking port to be a shuttle's transit area
+ Use the \"Edit a shuttle's parameters\" option belo to change how the transit area is used + Create a shuttle docking port
This will create a shuttle docking port at your location, facing the direction you are currently facing. Shuttle docking ports are used by shuttles to dock to destination docking ports.
@@ -853,7 +856,7 @@ var/global/floorIsLava = 0 If the shuttle has no control consoles linked to it, you'll have the option to create one at your location.
Send a shuttle
- This command allows you to send any existing shuttle to any destination docking port in the world.
+ This command allows you to send any existing shuttle to any destination docking port in the world. Cooldown, lockdown and other factors are respected.
Teleport to a shuttle

@@ -864,20 +867,20 @@ var/global/floorIsLava = 0 Show a shuttle's outline
This command will create a transparent overlay in the shape of a selected shuttle next to you. Its position is calculated as if it were docked at a docking port at your location. The overlay is only visible to you.
-

FUN COMMANDS:


+

FUN BUTTONS:


Turn current area into a shuttle
Send a shuttle to your current location
The shuttle will calculate its position as if you were a destination docking port (including the direction you're facing).
- Forcemove a shuttle
+ Teleport a shuttle
This command allows you to instantly move a shuttle to any destination docking port in the world OR to your location, with no regard for cooldowns and delays.
SUPERCHARGE a shuttle
Once you select a shuttle, its cooldown and movement delay will become 0, but it will sometimes miss its destination.
-

EMERGENCY STUFF:


+

EMERGENCY BUTTONS:


Toggle lockdown on a shuttle
Delete a shuttle
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 86df2ee3f49..a1972c8ae44 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -3254,6 +3254,8 @@ PlayerNotesPage(text2num(href_list["index"])) return + //-------------------------------------------------------------Shuttle stuff----------------------------------------------------------- + if(href_list["shuttle_create_destination"]) feedback_inc("admin_shuttle_magic_used",1) feedback_add_details("admin_shuttle_magic_used","DC") @@ -3284,17 +3286,41 @@ var/datum/shuttle/shuttle_to_link = select_shuttle_from_all(usr,"Select a shuttle to link to [port_to_link] ([port_to_link.areaname])","Admin abuse") if(!shuttle_to_link) return - var/choice = input(usr,"Would you like to make [port_to_link] ([port_to_link.areaname]) a transit area?","Admin abuse") in list("Yes","No") + if(shuttle_to_link.linked_port.must_rotate(port_to_link)) + port_to_link.dir = turn(shuttle_to_link.linked_port.dir, 180) - switch(choice) - if("No") - shuttle_to_link.add_dock(port_to_link) - if("Yes") - shuttle_to_link.set_transit_dock(port_to_link) + if(alert(usr,"[port_to_link] ([port_to_link.areaname]) will be rotated to match [shuttle_to_link.name]'s direction. Continue?","Admin abuse","Yes","No") == "No") + return + + shuttle_to_link.add_dock(port_to_link) message_admins("[key_name_admin(usr)] has added a destination docking port ([port_to_link.areaname]) at [port_to_link.x];[port_to_link.y];[port_to_link.z] to [shuttle_to_link.name] ([shuttle_to_link.type]) [formatJumpTo(get_turf(port_to_link))]", 1) log_admin("[key_name_admin(usr)] has added a destination docking port ([port_to_link.areaname]) at [port_to_link.x];[port_to_link.y];[port_to_link.z] to [shuttle_to_link.name] ([shuttle_to_link.type])") + if(href_list["shuttle_set_transit"]) + feedback_inc("admin_shuttle_magic_used",1) + feedback_add_details("admin_shuttle_magic_used","AT") + + var/list/L = list() + for(var/obj/structure/docking_port/destination/D in get_turf(usr) ) + var/name = "[D.name] ([D.areaname])" + L += name + L[name]=D + + var/obj/structure/docking_port/port_to_link = L[ (input(usr,"Select a new transit area for the shuttle","Admin abuse") as null|anything in L) ] + if(!port_to_link) return + + var/datum/shuttle/shuttle_to_link = select_shuttle_from_all(usr,"Select a shuttle of which you want to change transit area to [port_to_link] ([port_to_link.areaname])","Admin abuse") + if(!shuttle_to_link) return + + var/choice = input(usr,"Please confirm that you want to make [port_to_link] ([port_to_link.areaname]) a transit area for [shuttle_to_link.name] ([shuttle_to_link.type])?","Admin abuse") in list("Yes","No") + + if(choice == "Yes") + shuttle_to_link.set_transit_dock(port_to_link) + + message_admins("[key_name_admin(usr)] has set a destination docking port ([port_to_link.areaname]) at [port_to_link.x];[port_to_link.y];[port_to_link.z] to be [shuttle_to_link.name] ([shuttle_to_link.type])'s transit area [formatJumpTo(get_turf(port_to_link))]", 1) + log_admin("[key_name_admin(usr)] has set a destination docking port ([port_to_link.areaname]) at [port_to_link.x];[port_to_link.y];[port_to_link.z] to be [shuttle_to_link.name] ([shuttle_to_link.type])'s transit area") + if(href_list["shuttle_create_shuttleport"]) feedback_inc("admin_shuttle_magic_used",1) feedback_add_details("admin_shuttle_magic_used","SC") @@ -3629,7 +3655,7 @@ L+=name L[name]=D - var/choice = input(usr, "Select a location to FORCEmove [S.name]!", "Shuttle FORCEmovement") in L + var/choice = input(usr, "Select a location to force [S.name] to move to!", "Shuttle ") in L if(choice == "!!YOUR CURRENT LOCATION!!") var/area/A = get_area(usr) @@ -3644,8 +3670,8 @@ S.move_to_dock(temp) - message_admins("[key_name_admin(usr)] has FORCEmoved [capitalize(S.name)] to himself ([A.name], [temp.x];[temp.y];[temp.z])") - log_admin("[key_name(usr)] has FORCEmoved [capitalize(S.name)] to himself ([A.name], [temp.x];[temp.y];[temp.z])") + message_admins("[key_name_admin(usr)] has teleported [capitalize(S.name)] to himself ([A.name], [temp.x];[temp.y];[temp.z])!") + log_admin("[key_name(usr)] has teleported [capitalize(S.name)] to himself by ([A.name], [temp.x];[temp.y];[temp.z])") qdel(temp) return @@ -3655,8 +3681,8 @@ S.move_to_dock(D) - message_admins("[key_name_admin(usr)] has FORCEmoved [capitalize(S.name)] to [choice] ([D.x];[D.y];[D.z])") - log_admin("[key_name(usr)] has FORCEmoved [capitalize(S.name)] to [choice] ([D.x];[D.y];[D.z])") + message_admins("[key_name_admin(usr)] has teleported [capitalize(S.name)] to [choice] ([D.x];[D.y];[D.z])") + log_admin("[key_name(usr)] has teleported [capitalize(S.name)] to [choice] ([D.x];[D.y];[D.z])") return @@ -3762,3 +3788,5 @@ for(var/image/I in images) usr.client.images -= I return + + //------------------------------------------------------------------Shuttle stuff end--------------------------------- \ No newline at end of file