From 51d1319ed15bf06362717772cea1a7db2d76f973 Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 2 Nov 2016 22:55:36 +0100 Subject: [PATCH 1/5] Make transit tube code less shit. --- code/__HELPERS/type2type.dm | 47 --- code/game/machinery/Sleeper.dm | 4 +- code/game/machinery/dna_scanner.dm | 3 +- code/game/machinery/pipe/pipe_dispenser.dm | 49 ++- code/game/machinery/suit_storage_unit.dm | 5 +- code/game/machinery/washing_machine.dm | 2 +- .../mecha/equipment/tools/medical_tools.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/game/objects/effects/spiders.dm | 3 +- .../items/weapons/implants/implantchair.dm | 8 +- code/game/objects/objs.dm | 2 +- code/game/objects/structures/morgue.dm | 4 +- .../structures/transit_tubes/station.dm | 153 +++++--- .../structures/transit_tubes/transit_tube.dm | 329 ++++++++---------- .../transit_tube_construction.dm | 169 +++++---- .../transit_tubes/transit_tube_pod.dm | 130 +++---- .../components/unary_devices/cryo.dm | 2 +- .../kitchen_machinery/gibber.dm | 5 +- .../friendly/drone/drones_as_items.dm | 2 +- code/modules/recycling/disposal-unit.dm | 4 +- icons/obj/atmospherics/pipes/transit_tube.dmi | Bin 10656 -> 47945 bytes .../atmospherics/pipes/transit_tube_pod.dmi | Bin 1586 -> 0 bytes .../pipes/transit_tube_station.dmi | Bin 7200 -> 0 bytes 23 files changed, 442 insertions(+), 483 deletions(-) delete mode 100644 icons/obj/atmospherics/pipes/transit_tube_pod.dmi delete mode 100644 icons/obj/atmospherics/pipes/transit_tube_station.dmi diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index a0219d21cb3..fbc398239d9 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -347,53 +347,6 @@ for(var/t in test_times) /proc/isLeap(y) return ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0)) -// A copy of text2dir, extended to accept one and two letter -// directions, and to clearly return 0 otherwise. -/proc/text2dir_extended(direction) - switch(uppertext(direction)) - if("NORTH", "N") - return 1 - if("SOUTH", "S") - return 2 - if("EAST", "E") - return 4 - if("WEST", "W") - return 8 - if("NORTHEAST", "NE") - return 5 - if("NORTHWEST", "NW") - return 9 - if("SOUTHEAST", "SE") - return 6 - if("SOUTHWEST", "SW") - return 10 - else - return 0 - - - -// A copy of dir2text, which returns the short one or two letter -// directions used in tube icon states. -/proc/dir2text_short(direction) - switch(direction) - if(1) - return "N" - if(2) - return "S" - if(4) - return "E" - if(8) - return "W" - if(5) - return "NE" - if(6) - return "SE" - if(9) - return "NW" - if(10) - return "SW" - else - return //Turns a Body_parts_covered bitfield into a list of organ/limb names. diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index f0d948b3948..1e280750ff9 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -60,13 +60,13 @@ if(state_open) icon_state += "-open" -/obj/machinery/sleeper/container_resist() +/obj/machinery/sleeper/container_resist(mob/living/user) visible_message("[occupant] emerges from [src]!", "You climb out of [src]!") open_machine() /obj/machinery/sleeper/relaymove(mob/user) - container_resist() + container_resist(user) /obj/machinery/sleeper/open_machine() if(!state_open && !panel_open) diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 327ded8f465..ffde197e872 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -78,8 +78,7 @@ open_machine() -/obj/machinery/dna_scannernew/container_resist() - var/mob/living/user = usr +/obj/machinery/dna_scannernew/container_resist(mob/living/user) var/breakout_time = 2 if(state_open || !locked) //Open and unlocked, no need to escape state_open = 1 diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 713e8580cff..2caf79e6daf 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -203,8 +203,7 @@ Nah Station Equipment:
Through Tube Station
Terminus Tube Station
-Tube Blocker
-Transit Tube Pod
+Transit Tube Pod
"} user << browse("[src][dat]", "window=pipedispenser") @@ -219,34 +218,26 @@ Nah if(!wait) if(href_list["tube"]) var/tube_type = text2num(href_list["tube"]) - if(tube_type <= 4) - var/obj/structure/c_transit_tube/C = new/obj/structure/c_transit_tube(src.loc) - switch(tube_type) - if(0) - C.icon_state = "E-W" - if(1) - C.icon_state = "E-W-Pass" - if(2) - C.icon_state = "S-NE" - if(3) - C.icon_state = "NE-SW" - if(4) - C.icon_state = "W-NE-SE" + var/obj/structure/C + switch(tube_type) + if(0) + C = new /obj/structure/c_transit_tube(loc) + if(1) + C = new /obj/structure/c_transit_tube/crossing(loc) + if(2) + C = new /obj/structure/c_transit_tube/curved(loc) + if(3) + C = new /obj/structure/c_transit_tube/diagonal(loc) + if(4) + C = new /obj/structure/c_transit_tube/junction(loc) + if(5) + C = new /obj/structure/c_transit_tube/station(loc) + if(6) + C = new /obj/structure/c_transit_tube/station/reverse(loc) + if(7) + C = new /obj/structure/c_transit_tube_pod(loc) + if(C) C.add_fingerprint(usr) - else - switch(tube_type) - if(5) - var/obj/structure/c_transit_tube/station/C = new/obj/structure/c_transit_tube/station(src.loc) - C.add_fingerprint(usr) - if(6) - var/obj/structure/c_transit_tube/station/reverse/C = new/obj/structure/c_transit_tube/station/reverse(src.loc) - C.add_fingerprint(usr) - if(7) - var/obj/structure/c_transit_tube/station/block/C = new/obj/structure/c_transit_tube/station/block(src.loc) - C.add_fingerprint(usr) - if(8) - var/obj/structure/c_transit_tube_pod/C = new/obj/structure/c_transit_tube_pod(src.loc) - C.add_fingerprint(usr) wait = 1 spawn(15) wait = 0 diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index e6e918aeebf..f489ba77993 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -257,10 +257,9 @@ return 1 /obj/machinery/suit_storage_unit/relaymove(mob/user) - container_resist() + container_resist(user) -/obj/machinery/suit_storage_unit/container_resist() - var/mob/living/user = usr +/obj/machinery/suit_storage_unit/container_resist(mob/living/user) add_fingerprint(user) if(locked) visible_message("You see [user] kicking against the doors of [src]!", "You start kicking against the doors...") diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 2347ed99fb5..d5c7528ff3e 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -169,7 +169,7 @@ /obj/machinery/washing_machine/relaymove(mob/user) container_resist(user) -/obj/machinery/washing_machine/container_resist(mob/user) +/obj/machinery/washing_machine/container_resist(mob/living/user) if(!busy) add_fingerprint(user) open_machine() diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index af916014ca2..0f3e88fcfb6 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -212,7 +212,7 @@ return 1 return -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/container_resist() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/container_resist(mob/living/user) go_out() /obj/item/mecha_parts/mecha_equipment/medical/sleeper/process() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index fef5921b1ea..a4f7cd62457 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -886,7 +886,7 @@ else return 0 -/obj/mecha/container_resist() +/obj/mecha/container_resist(mob/living/user) go_out() diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index ec70faca2da..7b208c7fca6 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -190,8 +190,7 @@ /obj/structure/spider/cocoon/New() icon_state = pick("cocoon1","cocoon2","cocoon3") -/obj/structure/spider/cocoon/container_resist() - var/mob/living/user = usr +/obj/structure/spider/cocoon/container_resist(mob/living/user) var/breakout_time = 1 user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 60bd02fc777..f1952affa8e 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -51,7 +51,7 @@ data["ready_implants"] = ready_implants data["ready"] = ready data["replenishing"] = replenishing - + return data /obj/machinery/implantchair/ui_act(action, params) @@ -114,8 +114,7 @@ ready = TRUE update_icon() -/obj/machinery/implantchair/container_resist() - var/mob/living/user = usr +/obj/machinery/implantchair/container_resist(mob/living/user) if(state_open) return user.changeNext_move(CLICK_CD_BREAKOUT) @@ -131,7 +130,7 @@ open_machine() /obj/machinery/implantchair/relaymove(mob/user) - container_resist() + container_resist(user) /obj/machinery/implantchair/MouseDrop_T(mob/target, mob/user) if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) @@ -189,4 +188,3 @@ log_game("[key_name_admin(user)] brainwashed [key_name_admin(C)] with objective '[objective]'.") return 1 - \ No newline at end of file diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 5dc5e6c1722..626c5bb1917 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -126,7 +126,7 @@ return ..() -/obj/proc/container_resist() +/obj/proc/container_resist(mob/living/user) return /obj/proc/update_icon() diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index cc76039228d..fcc933460e6 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -80,12 +80,12 @@ new /obj/item/stack/sheet/metal (loc, 5) qdel(src) -/obj/structure/bodycontainer/container_resist() +/obj/structure/bodycontainer/container_resist(mob/living/user) open() /obj/structure/bodycontainer/relay_container_resist(mob/living/user, obj/O) user << "You slam yourself into the side of [O]." - container_resist() + container_resist(user) /obj/structure/bodycontainer/proc/open() playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index 3155c49b9be..0ed904cb4a7 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -2,17 +2,25 @@ // A place where tube pods stop, and people can get in or out. // Mappers: use "Generate Instances from Directions" for this // one. + +#define STATION_TUBE_OPEN 0 +#define STATION_TUBE_OPENING 1 +#define STATION_TUBE_CLOSED 2 +#define STATION_TUBE_CLOSING 3 + /obj/structure/transit_tube/station name = "station tube station" - icon = 'icons/obj/atmospherics/pipes/transit_tube_station.dmi' - icon_state = "closed" + icon_state = "closed_station0" exit_delay = 1 enter_delay = 2 tube_construction = /obj/structure/c_transit_tube/station + var/open_status = STATION_TUBE_CLOSED var/pod_moving = 0 var/cooldown_delay = 50 var/launch_cooldown = 0 var/reverse_launch = 0 + var/base_icon = "station0" + var/boarding_dir //from which direction you can board the tube var/const/OPEN_DURATION = 6 var/const/CLOSE_DURATION = 6 @@ -25,19 +33,15 @@ STOP_PROCESSING(SSobj, src) return ..() -// Stations which will send the tube in the opposite direction after their stop. -/obj/structure/transit_tube/station/reverse - tube_construction = /obj/structure/c_transit_tube/station/reverse - reverse_launch = 1 - /obj/structure/transit_tube/station/should_stop_pod(pod, from_dir) return 1 -/obj/structure/transit_tube/station/Bumped(mob/AM as mob|obj) - if(!pod_moving && icon_state == "open" && istype(AM, /mob)) +/obj/structure/transit_tube/station/Bumped(atom/movable/AM) + if(!pod_moving && open_status == STATION_TUBE_OPEN && ismob(AM) && AM.dir == boarding_dir) for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && pod.dir in directions()) - AM.loc = pod + if(!pod.moving) + AM.forceMove(pod) + pod.update_icon() return @@ -49,19 +53,18 @@ return for(var/obj/structure/transit_tube_pod/pod in loc) return //no fun allowed - var/obj/structure/transit_tube_pod/T = new/obj/structure/transit_tube_pod(src) - R.transfer_fingerprints_to(T) - T.add_fingerprint(user) - T.loc = src.loc - T.setDir(turn(src.dir, -90)) - user.visible_message("[user] inserts the [R].", "You insert the [R].") + var/obj/structure/transit_tube_pod/TP = new(loc) + R.transfer_fingerprints_to(TP) + TP.add_fingerprint(user) + TP.setDir(turn(src.dir, -90)) + user.visible_message("[user] inserts [R].", "You insert [R].") qdel(R) /obj/structure/transit_tube/station/attack_hand(mob/user) if(!pod_moving) if(user.pulling && user.a_intent == "grab" && isliving(user.pulling)) - if(icon_state == "open") + if(open_status == STATION_TUBE_OPEN) var/mob/living/GM = user.pulling if(user.grab_state >= GRAB_AGGRESSIVE) if(GM.buckled || GM.has_buckled_mobs()) @@ -70,26 +73,23 @@ for(var/obj/structure/transit_tube_pod/pod in loc) pod.visible_message("[user] starts putting [GM] into the [pod]!") if(do_after(user, 15, target = src)) - if(GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.has_buckled_mobs()) + if(open_status == STATION_TUBE_OPEN && GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.has_buckled_mobs()) GM.Weaken(5) src.Bumped(GM) break else for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && pod.dir in directions()) - if(icon_state == "closed") + if(!pod.moving && (pod.dir in tube_dirs)) + if(open_status == STATION_TUBE_CLOSED) open_animation() - else if(icon_state == "open") + else if(open_status == STATION_TUBE_OPEN) if(pod.contents.len && user.loc != pod) user.visible_message("[user] starts emptying [pod]'s contents onto the floor.", "You start emptying [pod]'s contents onto the floor...") if(do_after(user, 10, target = src)) //So it doesn't default to close_animation() on fail - if(pod.loc == loc) + if(pod && pod.loc == loc) for(var/atom/movable/AM in pod) - AM.loc = get_turf(user) - if(ismob(AM)) - var/mob/M = AM - M.Weaken(5) + AM.forceMove(get_turf(user)) else close_animation() @@ -98,46 +98,41 @@ /obj/structure/transit_tube/station/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/crowbar)) - for(var/obj/structure/transit_tube_pod/pod in loc) - if(pod.contents) - user << "Empty the pod first!" - return - user.visible_message("[user] removes the [pod].", "You remove the [pod].") - var/obj/structure/c_transit_tube_pod/R = new/obj/structure/c_transit_tube_pod(src.loc) - pod.transfer_fingerprints_to(R) - R.add_fingerprint(user) - qdel(pod) + for(var/obj/structure/transit_tube_pod/P in loc) + P.deconstruct(FALSE, user) else return ..() /obj/structure/transit_tube/station/proc/open_animation() - if(icon_state == "closed") - icon_state = "opening" + if(open_status == STATION_TUBE_CLOSED) + icon_state = "opening_[base_icon]" + open_status = STATION_TUBE_OPENING spawn(OPEN_DURATION) - if(icon_state == "opening") - icon_state = "open" - + if(open_status == STATION_TUBE_OPENING) + icon_state = "open_[base_icon]" + open_status = STATION_TUBE_OPEN /obj/structure/transit_tube/station/proc/close_animation() - if(icon_state == "open") - icon_state = "closing" + if(open_status == STATION_TUBE_OPEN) + icon_state = "closing_[base_icon]" + open_status = STATION_TUBE_CLOSING spawn(CLOSE_DURATION) - if(icon_state == "closing") - icon_state = "closed" - + if(open_status == STATION_TUBE_CLOSING) + icon_state = "closed_[base_icon]" + open_status = STATION_TUBE_CLOSED /obj/structure/transit_tube/station/proc/launch_pod() if(launch_cooldown >= world.time) return for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && turn(pod.dir, (reverse_launch ? 180 : 0)) in directions()) + if(!pod.moving) pod_moving = 1 close_animation() sleep(CLOSE_DURATION + 2) - if(icon_state == "closed" && pod) - pod.follow_tube(reverse_launch) + if(open_status == STATION_TUBE_CLOSED && pod && pod.loc == loc) + pod.follow_tube() pod_moving = 0 return 1 return 0 @@ -149,13 +144,63 @@ /obj/structure/transit_tube/station/pod_stopped(obj/structure/transit_tube_pod/pod, from_dir) pod_moving = 1 spawn(5) + if(reverse_launch) + pod.setDir(tube_dirs[1]) //turning the pod around for next launch. launch_cooldown = world.time + cooldown_delay open_animation() sleep(OPEN_DURATION + 2) pod_moving = 0 - pod.mix_air() + if(!qdeleted(pod)) + pod.mix_air() + +/obj/structure/transit_tube/station/init_tube_dirs() + switch(dir) + if(NORTH) + tube_dirs = list(EAST, WEST) + if(SOUTH) + tube_dirs = list(EAST, WEST) + if(EAST) + tube_dirs = list(NORTH, SOUTH) + if(WEST) + tube_dirs = list(NORTH, SOUTH) + boarding_dir = turn(dir, 180) + + +/obj/structure/transit_tube/station/flipped + icon_state = "closed_station1" + base_icon = "station1" + tube_construction = /obj/structure/c_transit_tube/station/flipped + +/obj/structure/transit_tube/station/flipped/init_tube_dirs() + ..() + boarding_dir = dir + + +// Stations which will send the tube in the opposite direction after their stop. +/obj/structure/transit_tube/station/reverse + tube_construction = /obj/structure/c_transit_tube/station/reverse + reverse_launch = 1 + icon_state = "closed_terminus0" + base_icon = "terminus0" + +/obj/structure/transit_tube/station/reverse/init_tube_dirs() + switch(dir) + if(NORTH) + tube_dirs = list(EAST) + if(SOUTH) + tube_dirs = list(WEST) + if(EAST) + tube_dirs = list(SOUTH) + if(WEST) + tube_dirs = list(NORTH) + boarding_dir = turn(dir, 180) + +/obj/structure/transit_tube/station/reverse/flipped + icon_state = "closed_terminus1" + base_icon = "terminus1" + tube_construction = /obj/structure/c_transit_tube/station/reverse/flipped + +/obj/structure/transit_tube/station/reverse/flipped/init_tube_dirs() + ..() + boarding_dir = dir -// Tube station directions are simply 90 to either side of -// the exit. -/obj/structure/transit_tube/station/init_dirs() - tube_dirs = list(turn(dir, 90), turn(dir, -90)) \ No newline at end of file diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 78cdd062fc4..279241561f7 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -1,66 +1,52 @@ -// Basic transit tubes. Straight pieces, curved sections, -// and basic splits/joins (no routing logic). -// Mappers: you can use "Generate Instances from Icon-states" -// to get the different pieces. + /obj/structure/transit_tube + name = "transit tube" icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' - icon_state = "E-W" + icon_state = "straight" density = 1 - layer = ABOVE_OBJ_LAYER + layer = LOW_ITEM_LAYER anchored = 1 + climbable = 1 var/tube_construction = /obj/structure/c_transit_tube - var/list/tube_dirs = null + var/list/tube_dirs //list of directions this tube section can connect to. var/exit_delay = 1 var/enter_delay = 0 - // alldirs in global.dm is the same list of directions, but since - // the specific order matters to get a usable icon_state, it is - // copied here so that, in the unlikely case that alldirs is changed, - // this continues to work. - var/global/list/tube_dir_list = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) - /obj/structure/transit_tube/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 return !density -// When destroyed by explosions, properly handle contents. -/obj/structure/transit_tube/ex_act(severity, target) - ..() - if(!qdeleted(src)) - for(var/atom/movable/AM in contents) - AM.forceMove(loc) - -/obj/structure/transit_tube/contents_explosion(severity, target) - for(var/atom/movable/AM in contents) - AM.ex_act(severity, target) - -/obj/structure/transit_tube/New(loc) +/obj/structure/transit_tube/New(loc, newdirection) ..(loc) - - if(tube_dirs == null) - init_dirs() + if(newdirection) + setDir(newdirection) + init_tube_dirs() + generate_decorative_tubes() /obj/structure/transit_tube/Destroy() - for(var/atom/movable/AM in contents) - AM.forceMove(loc) + for(var/obj/structure/transit_tube_pod/P in loc) + P.deconstruct(FALSE) return ..() +/obj/structure/transit_tube/singularity_pull(S, current_size) + if(current_size >= STAGE_FIVE) + deconstruct(FALSE) + /obj/structure/transit_tube/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/wrench)) - if(copytext(icon_state, 1, 3) != "D-") //decorative diagonals cannot be unwrenched directly + if(tube_construction) //decorative diagonals cannot be unwrenched directly for(var/obj/structure/transit_tube_pod/pod in src.loc) user << "Remove the pod first!" return user.visible_message("[user] starts to deattach \the [src].", "You start to deattach the [name]...") - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + playsound(src.loc, W.usesound, 50, 1) if(do_after(user, 35/W.toolspeed, target = src)) user << "You deattach the [name]." - var/obj/structure/R = new tube_construction(src.loc) - R.icon_state = src.icon_state - src.transfer_fingerprints_to(R) + var/obj/structure/c_transit_tube/R = new tube_construction(loc) + R.setDir(dir) + transfer_fingerprints_to(R) R.add_fingerprint(user) - src.destroy_diagonals() qdel(src) else if(istype(W, /obj/item/weapon/crowbar)) for(var/obj/structure/transit_tube_pod/pod in src.loc) @@ -68,21 +54,6 @@ else return ..() -//destroys disconnected decorative diagonals -/obj/structure/transit_tube/proc/destroy_diagonals() - for(var/obj/structure/transit_tube/D in orange(1, src)) - if(copytext(D.icon_state, 1, 3) == "D-") //is diagonal - var/my_dir = text2dir_extended(copytext(D.icon_state, 3, 5)) - var/is_connecting = 0 - for(var/obj/structure/transit_tube/N in orange(1,D)) - if( (( get_dir(D,N) == turn(my_dir, -45) && D.has_exit(turn(my_dir, 90)) ) || \ - ( get_dir(D,N) == turn(my_dir, 45) && D.has_exit(turn(my_dir, -90))) ) && \ - D != src ) - is_connecting = 1 - break - if(!is_connecting) - qdel(D) - // Called to check if a pod should stop upon entering this tube. /obj/structure/transit_tube/proc/should_stop_pod(pod, from_dir) return 0 @@ -91,18 +62,11 @@ /obj/structure/transit_tube/proc/pod_stopped(pod, from_dir) return -// Returns a /list of directions this tube section can connect to. -// Tubes that have some sort of logic or changing direction might -// override it with additional logic. -/obj/structure/transit_tube/proc/directions() - return tube_dirs - - /obj/structure/transit_tube/proc/has_entrance(from_dir) from_dir = turn(from_dir, 180) - for(var/direction in directions()) + for(var/direction in tube_dirs) if(direction == from_dir) return 1 @@ -111,7 +75,7 @@ /obj/structure/transit_tube/proc/has_exit(in_dir) - for(var/direction in directions()) + for(var/direction in tube_dirs) if(direction == in_dir) return 1 @@ -126,7 +90,7 @@ var/in_dir_cw = turn(in_dir, -45) var/in_dir_ccw = turn(in_dir, 45) - for(var/direction in directions()) + for(var/direction in tube_dirs) if(direction == in_dir) return direction @@ -156,138 +120,151 @@ // "Generate Instances from Icon-states" option to get all // variations. Additionally, as a separate proc, sub-types // can handle it more intelligently. -/obj/structure/transit_tube/proc/init_dirs() - if(icon_state == "auto") - // Additional delay, for map loading. - spawn(1) - init_dirs_automatic() - - else - tube_dirs = parse_dirs(icon_state) - - if(copytext(icon_state, 1, 3) == "D-" || findtextEx(icon_state, "Pass")) - density = 0 - - - - -// Initialize dirs by searching for tubes that do/might connect -// on nearby turfs. Create corner pieces if nessecary. -// Pick two directions, preferring tubes that already connect -// to loc, or other auto tubes if there aren't enough connections. -/obj/structure/transit_tube/proc/init_dirs_automatic() - var/list/connected = list() - var/list/connected_auto = list() - - for(var/direction in tube_dir_list) - var/location = get_step(loc, direction) - for(var/obj/structure/transit_tube/tube in location) - if(tube.directions() == null && tube.icon_state == "auto") - connected_auto += direction - break - - else if(turn(direction, 180) in tube.directions()) - connected += direction - break - - connected += connected_auto - - tube_dirs = select_automatic_dirs(connected) - - if(length(tube_dirs) == 2 && tube_dir_list.Find(tube_dirs[1]) > tube_dir_list.Find(tube_dirs[2])) - tube_dirs.Swap(1, 2) - - generate_automatic_corners(tube_dirs) - select_automatic_icon_state(tube_dirs) - - - -// Given a list of directions, look a pair that forms a 180 or -// 135 degree angle, and return a list containing the pair. -// If none exist, return list(connected[1], turn(connected[1], 180) -/obj/structure/transit_tube/proc/select_automatic_dirs(connected) - if(length(connected) < 1) - return list() - - for(var/i = 1, i <= length(connected), i++) - for(var/j = i + 1, j <= length(connected), j++) - var/d1 = connected[i] - var/d2 = connected[j] - - if(d1 == turn(d2, 135) || d1 == turn(d2, 180) || d1 == turn(d2, 225)) - return list(d1, d2) - - return list(connected[1], turn(connected[1], 180)) - - - -/obj/structure/transit_tube/proc/select_automatic_icon_state(directions) - if(length(directions) == 2) - icon_state = "[dir2text_short(directions[1])]-[dir2text_short(directions[2])]" - +/obj/structure/transit_tube/proc/init_tube_dirs() + switch(dir) + if(NORTH) + tube_dirs = list(NORTH, SOUTH) + if(SOUTH) + tube_dirs = list(NORTH, SOUTH) + if(EAST) + tube_dirs = list(EAST, WEST) + if(WEST) + tube_dirs = list(EAST, WEST) +//phil235 must deconstruct on Move() +//phil235 remember to update the maps! // Look for diagonal directions, generate the decorative corners in each. -/obj/structure/transit_tube/proc/generate_automatic_corners(directions) - for(var/direction in directions) - if(direction == 5 || direction == 6 || direction == 9 || direction == 10) +/obj/structure/transit_tube/proc/generate_decorative_tubes() + for(var/direction in tube_dirs) + if(direction in diagonals) if(direction & NORTH) - create_automatic_decorative_corner(get_step(loc, NORTH), direction ^ 3) + create_decorative_tube(direction ^ 3, NORTH) - else - create_automatic_decorative_corner(get_step(loc, SOUTH), direction ^ 3) +// else +// create_decorative_tube(direction ^ 3, SOUTH) - if(direction & EAST) - create_automatic_decorative_corner(get_step(loc, EAST), direction ^ 12) - - else - create_automatic_decorative_corner(get_step(loc, WEST), direction ^ 12) + if(direction & EAST) + create_decorative_tube(direction ^ 12, EAST) + else + create_decorative_tube(direction ^ 12, WEST) + else + create_decorative_tube(direction) // Generate a corner, if one doesn't exist for the direction on the turf. -/obj/structure/transit_tube/proc/create_automatic_decorative_corner(location, direction) - var/state = "D-[dir2text_short(direction)]" - - for(var/obj/structure/transit_tube/tube in location) - if(tube.icon_state == state) - return - - var/obj/structure/transit_tube/tube = new(location) - tube.icon_state = state - tube.init_dirs() +/obj/structure/transit_tube/proc/create_decorative_tube(direction, shift_dir) + var/image/I + if(shift_dir) + I = image(loc = src, icon_state = "decorative_diag", dir = direction) + switch(shift_dir) + if(NORTH) + I.pixel_y = 32 + if(SOUTH) + I.pixel_y = -32 + if(EAST) + I.pixel_x = 32 + if(WEST) + I.pixel_x = -32 + else + I = image(loc = src, icon_state = "decorative", dir = direction) + add_overlay(I) -// Uses a list() to cache return values. Since they should -// never be edited directly, all tubes with a certain -// icon_state can just reference the same list. In theory, -// reduces memory usage, and improves CPU cache usage. -// In reality, I don't know if that is quite how BYOND works, -// but it is probably safer to assume the existence of, and -// rely on, a sufficiently smart compiler/optimizer. -/obj/structure/transit_tube/proc/parse_dirs(text) - var/global/list/direction_table = list() - if(text in direction_table) - return direction_table[text] +//Some of these are mostly for mapping use +/obj/structure/transit_tube/horizontal + dir = 8 - var/list/split_text = splittext(text, "-") - // If the first token is D, the icon_state represents - // a purely decorative tube, and doesn't actually - // connect to anything. - if(split_text[1] == "D") - direction_table[text] = list() - return null +/obj/structure/transit_tube/diagonal + icon_state = "diagonal" + tube_construction = /obj/structure/c_transit_tube/diagonal - var/list/directions = list() +/obj/structure/transit_tube/diagonal/init_tube_dirs() + switch(dir) + if(NORTH) + tube_dirs = list(NORTHEAST, SOUTHWEST) + if(SOUTH) + tube_dirs = list(NORTHEAST, SOUTHWEST) + if(EAST) + tube_dirs = list(NORTHWEST, SOUTHEAST) + if(WEST) + tube_dirs = list(NORTHWEST, SOUTHEAST) - for(var/text_part in split_text) - var/direction = text2dir_extended(text_part) - if(direction > 0) - directions += direction +/obj/structure/transit_tube/diagonal/topleft + dir = 8 - direction_table[text] = directions - return directions + +/obj/structure/transit_tube/curved + icon_state = "curved0" + tube_construction = /obj/structure/c_transit_tube/curved + +/obj/structure/transit_tube/curved/init_tube_dirs() + switch(dir) + if(NORTH) + tube_dirs = list(NORTH, SOUTHWEST) + if(SOUTH) + tube_dirs = list(SOUTH, NORTHEAST) + if(EAST) + tube_dirs = list(EAST, NORTHWEST) + if(WEST) + tube_dirs = list(SOUTHEAST, WEST) + +/obj/structure/transit_tube/curved/flipped + icon_state = "curved1" + tube_construction = /obj/structure/c_transit_tube/curved/flipped + +/obj/structure/transit_tube/curved/flipped/init_tube_dirs() + switch(dir) + if(NORTH) + tube_dirs = list(NORTH, SOUTHEAST) + if(SOUTH) + tube_dirs = list(SOUTH, NORTHWEST) + if(EAST) + tube_dirs = list(EAST, SOUTHWEST) + if(WEST) + tube_dirs = list(NORTHEAST, WEST) + + +/obj/structure/transit_tube/junction + icon_state = "junction0" + tube_construction = /obj/structure/c_transit_tube/junction + +/obj/structure/transit_tube/junction/init_tube_dirs() + switch(dir) + if(NORTH) + tube_dirs = list(NORTH, SOUTHEAST, SOUTHWEST)//ending with the prefered direction + if(SOUTH) + tube_dirs = list(SOUTH, NORTHWEST, NORTHEAST) + if(EAST) + tube_dirs = list(EAST, SOUTHWEST, NORTHWEST) + if(WEST) + tube_dirs = list(WEST, NORTHEAST, SOUTHEAST) + +/obj/structure/transit_tube/junction/flipped + icon_state = "junction1" + tube_construction = /obj/structure/c_transit_tube/junction/flipped + +/obj/structure/transit_tube/junction/flipped/init_tube_dirs() + switch(dir) + if(NORTH) + tube_dirs = list(NORTH, SOUTHWEST, SOUTHEAST)//ending with the prefered direction + if(SOUTH) + tube_dirs = list(SOUTH, NORTHEAST, NORTHWEST) + if(EAST) + tube_dirs = list(EAST, NORTHWEST, SOUTHWEST) + if(WEST) + tube_dirs = list(WEST, SOUTHEAST, NORTHEAST) + + +/obj/structure/transit_tube/crossing + icon_state = "crossing" + tube_construction = /obj/structure/c_transit_tube/crossing + density = 0 + +/obj/structure/transit_tube/crossing/horizontal + dir = 8 diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm index 83f8ee855d5..e2a7caf6894 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm @@ -4,58 +4,46 @@ /obj/structure/c_transit_tube name = "unattached transit tube" icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' - icon_state = "E-W" //icon_state decides which tube will be built + icon_state = "straight" //icon_state decides which tube will be built density = 0 - layer = ABOVE_OBJ_LAYER //same as the built tube + layer = LOW_ITEM_LAYER //same as the built tube anchored = 0 + var/flipped = 0 + var/build_type = /obj/structure/transit_tube + var/flipped_build_type + var/base_icon /obj/structure/c_transit_tube/examine(mob/user) ..() user << "Alt-click to rotate it clockwise." -//wrapper for turn that changes the transit tube formatted icon_state instead of the dir -/obj/structure/c_transit_tube/proc/tube_turn(angle) - var/list/badtubes = list("W-E", "W-E-Pass", "S-N", "S-N-Pass", "SW-NE", "SE-NW") - var/list/split_text = splittext(icon_state, "-") - for(var/i=1; i<=split_text.len; i++) - var/curdir = text2dir_extended(split_text[i]) //0 if not a valid direction (e.g. Pass, Block) - if(curdir) - split_text[i] = dir2text_short(turn(curdir, angle)) - var/newdir = jointext(split_text, "-") - if(badtubes.Find(newdir)) - split_text.Swap(1,2) - newdir = jointext(split_text, "-") - icon_state = newdir +/obj/structure/c_transit_tube/proc/tube_rotate() + setDir(turn(dir, -90)) /obj/structure/c_transit_tube/proc/tube_flip() - var/list/split_text = splittext(icon_state, "-") - //skip straight pipes - if(length(split_text[2]) < 2) - return - //for junctions, just swap the diagonals with each other - if(split_text.len == 3 && split_text[3] != "Pass") - split_text.Swap(2,3) - else if(length(split_text[1]) == 2 && length(split_text[2]) == 2) //diagonals - split_text[1] = copytext(split_text[1],1,2) + copytext(split_text[2],2,3) - split_text[2] = copytext(split_text[2],1,2) + ((copytext(split_text[2],2,3) == "E") ? "W" : "E") - //for curves, swap the diagonal direction that is not in the same axis as the cardinal direction - else - if(split_text[1] == "N" || split_text[1] == "S") - split_text[2] = copytext(split_text[2],1,2) + ((copytext(split_text[2],2,3) == "E") ? "W" : "E") + if(flipped_build_type) + flipped = !flipped + var/cur_flip = flipped + if(initial(flipped)) + cur_flip = !cur_flip + if(cur_flip) + build_type = flipped_build_type else - split_text[2] = ((copytext(split_text[2],1,2) == "N") ? "S" : "N") + copytext(split_text[2],2,3) - icon_state = jointext(split_text, "-") + build_type = initial(build_type) + icon_state = "[base_icon][flipped]" + else + setDir(turn(dir, 180)) // disposals-style flip and rotate verbs /obj/structure/c_transit_tube/verb/rotate() - set name = "Rotate Tube CW" + set name = "Rotate Tube" set category = "Object" set src in view(1) if(usr.incapacitated()) return - tube_turn(-90) + tube_rotate() /obj/structure/c_transit_tube/AltClick(mob/user) ..() @@ -65,17 +53,7 @@ if(!in_range(src, user)) return else - rotate() - -/obj/structure/c_transit_tube/verb/rotate_ccw() - set name = "Rotate Tube CCW" - set category = "Object" - set src in view(1) - - if(usr.incapacitated()) - return - - tube_turn(90) + tube_rotate() /obj/structure/c_transit_tube/verb/flip() set name = "Flip" @@ -84,25 +62,20 @@ if(usr.incapacitated()) return - tube_flip() -/obj/structure/c_transit_tube/proc/buildtube() - var/obj/structure/transit_tube/R = new/obj/structure/transit_tube(src.loc) - R.icon_state = src.icon_state - R.init_dirs() - R.generate_automatic_corners(R.tube_dirs) - return R /obj/structure/c_transit_tube/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/wrench)) user << "You start attaching the [name]..." - src.add_fingerprint(user) + add_fingerprint(user) + playsound(src.loc, I.usesound, 50, 1) if(do_after(user, 40/I.toolspeed, target = src)) - if(!src) return + if(qdeleted(src)) + return user << "You attach the [name]." - var/obj/structure/transit_tube/R = src.buildtube() - src.transfer_fingerprints_to(R) + var/obj/structure/transit_tube/R = new build_type(loc, dir) + transfer_fingerprints_to(R) qdel(src) else return ..() @@ -110,51 +83,75 @@ // transit tube station /obj/structure/c_transit_tube/station name = "unattached through station" - icon = 'icons/obj/atmospherics/pipes/transit_tube_station.dmi' - icon_state = "closed" + icon_state = "closed_station0" + build_type = /obj/structure/transit_tube/station + flipped_build_type = /obj/structure/transit_tube/station/flipped + base_icon = "closed_station" -/obj/structure/c_transit_tube/station/tube_turn(var/angle) - src.setDir(turn(src.dir, angle)) +/obj/structure/c_transit_tube/station/flipped + icon_state = "closed_station1" + flipped = 1 + build_type = /obj/structure/transit_tube/station/flipped + flipped_build_type = /obj/structure/transit_tube/station -/obj/structure/c_transit_tube/station/tube_flip() - src.tube_turn(180) - -/obj/structure/c_transit_tube/station/buildtube() - var/obj/structure/transit_tube/station/R = new/obj/structure/transit_tube/station(src.loc) - R.setDir(src.dir) - R.init_dirs() - return R // reverser station, used for the terminus /obj/structure/c_transit_tube/station/reverse name = "unattached terminus station" + icon_state = "closed_terminus0" + build_type = /obj/structure/transit_tube/station/reverse + flipped_build_type = /obj/structure/transit_tube/station/reverse/flipped + base_icon = "closed_terminus" -/obj/structure/c_transit_tube/station/reverse/buildtube() - var/obj/structure/transit_tube/station/reverse/R = new/obj/structure/transit_tube/station/reverse(src.loc) - R.setDir(src.dir) - R.init_dirs() - return R +/obj/structure/c_transit_tube/station/reverse/flipped + icon_state = "closed_terminus1" + flipped = 1 + build_type = /obj/structure/transit_tube/station/reverse/flipped + flipped_build_type = /obj/structure/transit_tube/station/reverse -// block, used after the terminus of a transit tube station, decorative only -// code-wise they're normal tubes but they're ~speshul~ because they care about the dir instead of the icon_state -// in that sense they're the same as stations and can reuse their flip and rotate verbs -/obj/structure/c_transit_tube/station/block - name = "unattached tube blocker" - icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' - icon_state = "Block" -/obj/structure/c_transit_tube/station/block/buildtube() - var/obj/structure/transit_tube/R = new/obj/structure/transit_tube(src.loc) - R.icon_state = src.icon_state - R.setDir(src.dir) - R.init_dirs() - return R +/obj/structure/c_transit_tube/crossing + icon_state = "crossing" + build_type = /obj/structure/transit_tube/crossing + + +/obj/structure/c_transit_tube/diagonal + icon_state = "diagonal" + build_type = /obj/structure/transit_tube/diagonal + + +/obj/structure/c_transit_tube/curved + icon_state = "curved0" + build_type = /obj/structure/transit_tube/curved + flipped_build_type = /obj/structure/transit_tube/curved/flipped + base_icon = "curved" + +/obj/structure/c_transit_tube/curved/flipped + icon_state = "curved1" + build_type = /obj/structure/transit_tube/curved/flipped + flipped_build_type = /obj/structure/transit_tube/curved + flipped = 1 + + +/obj/structure/c_transit_tube/junction + icon_state = "junction0" + build_type = /obj/structure/transit_tube/junction + flipped_build_type = /obj/structure/transit_tube/junction/flipped + base_icon = "junction" + + +/obj/structure/c_transit_tube/junction/flipped + icon_state = "junction1" + flipped = 1 + build_type = /obj/structure/transit_tube/junction/flipped + flipped_build_type = /obj/structure/transit_tube/junction + //transit tube pod //see station.dm for the logic /obj/structure/c_transit_tube_pod name = "unattached transit tube pod" - icon = 'icons/obj/atmospherics/pipes/transit_tube_pod.dmi' + icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' icon_state = "pod" anchored = 0 density = 0 diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 8bbe93ec1c2..01c77ca4e3c 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -1,93 +1,104 @@ /obj/structure/transit_tube_pod - icon = 'icons/obj/atmospherics/pipes/transit_tube_pod.dmi' + icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' icon_state = "pod" animate_movement = FORWARD_STEPS anchored = 1 density = 1 + layer = BELOW_OBJ_LAYER var/moving = 0 var/datum/gas_mixture/air_contents = new() /obj/structure/transit_tube_pod/New(loc) - ..(loc) - + ..() air_contents.assert_gases("o2", "n2") air_contents.gases["o2"][MOLES] = MOLES_O2STANDARD * 2 air_contents.gases["n2"][MOLES] = MOLES_N2STANDARD air_contents.temperature = T20C - // Give auto tubes time to align before trying to start moving - spawn(5) - follow_tube() /obj/structure/transit_tube_pod/Destroy() - empty() + empty_pod() return ..() +/obj/structure/transit_tube_pod/update_icon() + if(contents.len) + icon_state = "pod_occupied" + else + icon_state = "pod" + /obj/structure/transit_tube_pod/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/crowbar)) if(!moving) - for(var/obj/structure/transit_tube/station/T in loc) - return + playsound(src.loc, I.usesound, 50, 1) if(contents.len) user.visible_message("[user] empties \the [src].", "You empty \the [src].") - empty() - return + empty_pod() else - user << "You free \the [src]." - var/obj/structure/c_transit_tube_pod/R = new/obj/structure/c_transit_tube_pod(src.loc) - src.transfer_fingerprints_to(R) - R.add_fingerprint(user) - qdel(src) + deconstruct(TRUE, user) else return ..() +/obj/structure/transit_tube_pod/deconstruct(disassembled = TRUE, mob/user) + if(!(flags & NODECONSTRUCT)) + var/atom/location = get_turf(src) + if(user) + location = user.loc + add_fingerprint(user) + user.visible_message("[user] removes [src].", "You remove [src].") + var/obj/structure/c_transit_tube_pod/R = new/obj/structure/c_transit_tube_pod(location) + transfer_fingerprints_to(R) + R.setDir(dir) + empty_pod(location) + qdel(src) + /obj/structure/transit_tube_pod/ex_act(severity, target) ..() if(!qdeleted(src)) - for(var/atom/movable/AM in contents) - AM.forceMove(loc) + empty_pod() /obj/structure/transit_tube_pod/contents_explosion(severity, target) for(var/atom/movable/AM in contents) AM.ex_act(severity, target) -/obj/structure/transit_tube_pod/container_resist() - var/mob/living/user = usr +/obj/structure/transit_tube_pod/singularity_pull(S, current_size) + if(current_size >= STAGE_FIVE) + deconstruct(FALSE) + +/obj/structure/transit_tube_pod/container_resist(mob/living/user) if(!moving) user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT user << "You start trying to escape from the pod..." if(do_after(user, 600, target = src)) user << "You manage to open the pod." - src.empty() + empty_pod() -/obj/structure/transit_tube_pod/proc/empty() - for(var/atom/movable/M in src.contents) - M.forceMove(loc) +/obj/structure/transit_tube_pod/proc/empty_pod(atom/location) + if(!location) + location = get_turf(src) + for(var/atom/movable/M in contents) + M.forceMove(location) + update_icon() /obj/structure/transit_tube_pod/Process_Spacemove() if(moving) //No drifting while moving in the tubes return 1 else return ..() -/obj/structure/transit_tube_pod/proc/follow_tube(reverse_launch) +/obj/structure/transit_tube_pod/proc/follow_tube() set waitfor = 0 if(moving) return moving = 1 - var/obj/structure/transit_tube/current_tube = null var/next_dir var/next_loc var/last_delay = 0 var/exit_delay - if(reverse_launch) - setDir(turn(dir, 180) )// Back it up - for(var/obj/structure/transit_tube/tube in loc) if(tube.has_exit(dir)) current_tube = tube @@ -130,6 +141,9 @@ density = 1 moving = 0 + var/obj/structure/transit_tube/TT = locate(/obj/structure/transit_tube) in loc + if(!TT || (!(dir in TT.tube_dirs) && !(turn(dir,180) in TT.tube_dirs))) //landed on a turf without transit tube or not in our direction + deconstruct(FALSE) //we automatically deconstruct the pod // Should I return a copy here? If the caller edits or del()s the returned // datum, there might be problems if I don't... @@ -165,7 +179,7 @@ // Goal is to balance towards equal pressure, but ensure some gas // transfer in both directions regardless. // Feel free to rip this out and replace it with something better, - // I don't really know muhch about how gas transfer rates work in + // I don't really know much about how gas transfer rates work in // SS13. var/transfer_in = max(0.1, 0.5 * (env_pressure - int_pressure) / total_pressure) var/transfer_out = max(0.1, 0.3 * (int_pressure - env_pressure) / total_pressure) @@ -178,42 +192,30 @@ -// When the player moves, check if the pos is currently stopped at a station. -// if it is, check the direction. If the direction matches the direction of -// the station, try to exit. If the direction matches one of the station's -// tube directions, launch the pod in that direction. /obj/structure/transit_tube_pod/relaymove(mob/mob, direction) - if(istype(mob, /mob) && mob.client) - // If the pod is not in a tube at all, you can get out at any time. - if(!(locate(/obj/structure/transit_tube) in loc)) - mob.loc = loc - mob.client.Move(get_step(loc, direction), direction) - mob.reset_perspective(null) - - //if(moving && isspaceturf(loc)) - // Todo: If you get out of a moving pod in space, you should move as well. - // Same direction as pod? Direcion you moved? Halfway between? - + if(istype(mob) && mob.client) if(!moving) for(var/obj/structure/transit_tube/station/station in loc) - if(dir in station.directions()) - if(!station.pod_moving) - if(direction == station.dir) - if(station.icon_state == "open") - mob.loc = loc - mob.client.Move(get_step(loc, direction), direction) - mob.reset_perspective(null) + if(!station.pod_moving) + if(direction == turn(station.boarding_dir,180)) + if(station.open_status == STATION_TUBE_OPEN) + mob.forceMove(loc) + update_icon() + else + station.open_animation() - else - station.open_animation() - - else if(direction in station.directions()) - setDir(direction) - station.launch_pod() - return - - for(var/obj/structure/transit_tube/tube in loc) - if(dir in tube.directions()) - if(tube.has_exit(direction)) + else if(direction in station.tube_dirs) setDir(direction) - return \ No newline at end of file + station.launch_pod() + return + + for(var/obj/structure/transit_tube/TT in loc) + if(dir in TT.tube_dirs) + if(TT.has_exit(direction)) + setDir(direction) + return + +#undef STATION_TUBE_OPEN +#undef STATION_TUBE_OPENING +#undef STATION_TUBE_CLOSED +#undef STATION_TUBE_CLOSING \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 2dff383d41c..8fdea6dbee9 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -165,7 +165,7 @@ ..(user) return occupant -/obj/machinery/atmospherics/components/unary/cryo_cell/container_resist(mob/user) +/obj/machinery/atmospherics/components/unary/cryo_cell/container_resist(mob/living/user) user << "You struggle inside the cryotube, kicking the release with your foot... (This will take around 30 seconds.)" audible_message("You hear a thump from [src].") if(do_after(user, 300)) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 62532557e49..041a05a9f6e 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -85,9 +85,8 @@ /obj/machinery/gibber/attack_paw(mob/user) return src.attack_hand(user) -/obj/machinery/gibber/container_resist() - src.go_out() - return +/obj/machinery/gibber/container_resist(mob/living/user) + go_out() /obj/machinery/gibber/attack_hand(mob/user) if(stat & (NOPOWER|BROKEN)) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index 077265552de..b58d8ff259e 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -74,7 +74,7 @@ /obj/item/clothing/head/drone_holder/relaymove() uncurl() -/obj/item/clothing/head/drone_holder/container_resist() +/obj/item/clothing/head/drone_holder/container_resist(mob/living/user) uncurl() diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm index b8dc88cede9..86c24dd9316 100644 --- a/code/modules/recycling/disposal-unit.dm +++ b/code/modules/recycling/disposal-unit.dm @@ -154,8 +154,8 @@ attempt_escape(user) // resist to escape the bin -/obj/machinery/disposal/container_resist() - attempt_escape(usr) +/obj/machinery/disposal/container_resist(mob/living/user) + attempt_escape(user) /obj/machinery/disposal/proc/attempt_escape(mob/user) if(src.flushing) diff --git a/icons/obj/atmospherics/pipes/transit_tube.dmi b/icons/obj/atmospherics/pipes/transit_tube.dmi index 517a3b238cd67caaf72a67da7ae95973c71f7244..96083f5fb2c440d9c3fdc2b890b817cb1f1dde87 100644 GIT binary patch literal 47945 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%0Dhu-4C#uAK6qVeL`n-Cs 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%0Dy}D(0dp3J_viC zhP?-(-a~Qki&5{(F_zo`?f|#4H|!7K7DW23poRiH^qBN_CB31dhwPh%Avd-MBf~Jy z*F*L#vTRDtu53P*Dt3A>LddNN*vgIQH zLDT+hYMG{t98PmZ{poi`A9u(yR9nFM# z*uE5jvVSB34gV+vTK*9TH2rH6X#3YBK=7|cfZ|`3Kq8Q!1v2GOiWbV17ZbF_OnEs) zTh5ge3bceqIi*5N>C}@-tfW>stwu}hl{Xe>8yn@V724KLd2@-jxmDg?qiyf|k=~DJ zB<~Mg5CA@=^Pc=n?>~7LJ16v?UtXSlF~A}NSX>ZbkpV130IwCmYfk{<3gB`_wIIN9 zK40D%0BXUadk_+U;O#AF0njCx)jF3Izhu+avL&1M0^nUd2=g!09E4O+YV%PFzi3ry zH=?4IS2^HKv%%`4)_<&OeO;FGw%e_j%WL-UtLGJEyZZl3vPS%}-DX=k*lsugYZ_o( z>raKr_a{b*!X^9rJFjrL`ltcuH-rFed+INU`1#+4_(kcKqbQzemTuQHz*-)_ac0kq z1j}W!c)eT(Y^!GRTI2xIyYBpjkvFz{|HigzmhY7T9CZNaJOF+dU9Ag5gA{QPb_0l} zDdIHb2bvRrAW-22B0;FF_54tc7>fCe4W;KUR+x)X*Lp8pt}&NmB>*geQm$(NbS9nG z0O(A+p^OO!pkw24EB6O3c(uFl&FL)&+5v;&0muFR!2ff9;4_SP2c1#)d7b+MUtt*Y zj(X!T{JP5hfoK=U347R`#PKfbx<8O4sqArknk3@;15p&m`-DC2Pxf&f@d@&R!}npo z_vH!>{(gV>=HDOq`KtW01&@N@>xX}TAUPZ|f^-sjoSkW9f8#}yH1mHrB%J#Lzki?E z_s{(&30?9@l9FH-eg6G6?H5I-WS>sCdti28BY zwqKUrO0z*6iwFw;aU7JW%>9ANe{d{Zg<)0p%O1-JjscgT?%2#Qr$y6#(To``gV9NU zJeIFo6+X)kb3C5x^D3520=D!D`QOy~pcrm->9-h~L2ZA-AxP7JB4~|OGQKJQL7KAl zTQC36l?i&nohE0c48vB=RT9)Kc2P5ClmnV9xBvhE07*qoM6N<$g3!X-mjD0& diff --git a/icons/obj/atmospherics/pipes/transit_tube_station.dmi b/icons/obj/atmospherics/pipes/transit_tube_station.dmi deleted file mode 100644 index ca8515fded7f283fe9fb3d0b5b1720aee453724d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7200 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 Z-Rt4V$+^}De&q)-xnO?2^qf<~e*sy5_Xq$0 From 98dbf0e8639a7468fde6d04f2a5201ff847ddeb8 Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 3 Nov 2016 02:23:28 +0100 Subject: [PATCH 2/5] updating maps. --- .../map_files/DreamStation/dreamstation04.dmm | 89 ++++------ .../EfficiencyStation/EfficiencyStation.dmm | 122 ++++++------- _maps/map_files/MetaStation/MetaStation.dmm | 116 ++++++------ _maps/map_files/MiniStation/MiniStation.dmm | 165 ++++++++---------- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 53 +++--- 5 files changed, 231 insertions(+), 314 deletions(-) diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index 17a76c2cfa6..bdf32233fe4 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -2608,23 +2608,20 @@ /turf/open/space, /area/space) "afa" = ( -/obj/structure/transit_tube{ - icon_state = "E-SW" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved/flipped{ + dir = 4 + }, /turf/open/space, /area/space) "afb" = ( -/obj/structure/transit_tube, /obj/structure/lattice, +/obj/structure/transit_tube/horizontal, /turf/open/space, /area/space) "afc" = ( /obj/structure/lattice/catwalk, -/obj/structure/transit_tube{ - tag = "icon-E-W-Pass"; - icon_state = "E-W-Pass" - }, +/obj/structure/transit_tube/crossing/horizontal, /turf/open/space, /area/space) "afd" = ( @@ -2634,15 +2631,15 @@ /area/space) "afe" = ( /obj/structure/window/reinforced/fulltile, -/obj/structure/transit_tube, +/obj/structure/transit_tube/horizontal, /turf/open/floor/plating, /area/aisat) "aff" = ( -/obj/structure/transit_tube, /obj/structure/cable/blue{ tag = "icon-1-2"; icon_state = "1-2" }, +/obj/structure/transit_tube/horizontal, /turf/open/floor/plasteel/darkblue/corner{ tag = "icon-darkbluecorners (WEST)"; dir = 8 @@ -2653,11 +2650,7 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/structure/transit_tube/station/reverse{ - tag = "icon-closed (NORTH)"; - icon_state = "closed"; - dir = 1 - }, +/obj/structure/transit_tube/station/reverse/flipped, /turf/open/floor/plasteel/black, /area/aisat) "afh" = ( @@ -2665,11 +2658,6 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/structure/transit_tube{ - tag = "icon-Block (WEST)"; - icon_state = "Block"; - dir = 8 - }, /turf/open/floor/plasteel/darkblue/corner{ tag = "icon-darkbluecorners" }, @@ -2759,10 +2747,8 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate) "aft" = ( -/obj/structure/transit_tube{ - icon_state = "NE-SW" - }, /obj/structure/lattice, +/obj/structure/transit_tube/diagonal, /turf/open/space, /area/space) "afu" = ( @@ -3047,10 +3033,8 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate) "agf" = ( -/obj/structure/transit_tube{ - icon_state = "S-NE" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved, /turf/open/space, /area/space) "agg" = ( @@ -3110,9 +3094,7 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate) "ago" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/space, /area/space) "agp" = ( @@ -3155,10 +3137,8 @@ /turf/open/floor/mineral/titanium, /area/shuttle/syndicate) "agu" = ( -/obj/structure/transit_tube{ - icon_state = "N-S-Pass" - }, /obj/structure/lattice, +/obj/structure/transit_tube/crossing, /turf/open/space, /area/space) "agv" = ( @@ -4680,11 +4660,10 @@ /turf/open/space, /area/solar/auxport) "akd" = ( -/obj/structure/transit_tube{ - tag = "icon-N-SE"; - icon_state = "N-SE" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved/flipped{ + dir = 1 + }, /turf/open/space, /area/space) "ake" = ( @@ -4797,24 +4776,23 @@ /turf/open/space, /area/space) "akt" = ( -/obj/structure/transit_tube{ - tag = "icon-E-NW"; - icon_state = "E-NW" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved{ + dir = 4 + }, /turf/open/space, /area/space) "aku" = ( /obj/structure/window/reinforced/fulltile, -/obj/structure/transit_tube, +/obj/structure/transit_tube/horizontal, /turf/open/floor/plating, /area/engine/engineering) "akv" = ( -/obj/structure/transit_tube, /obj/structure/cable/green{ tag = "icon-1-2"; icon_state = "1-2" }, +/obj/structure/transit_tube/horizontal, /turf/open/floor/plasteel/darkblue/corner{ tag = "icon-darkbluecorners (NORTH)"; dir = 1 @@ -4836,11 +4814,6 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/structure/transit_tube{ - tag = "icon-Block (WEST)"; - icon_state = "Block"; - dir = 8 - }, /turf/open/floor/plasteel/darkblue/corner{ tag = "icon-darkbluecorners (EAST)"; dir = 4 @@ -105938,7 +105911,7 @@ aac aaa aaa aaa -aeZ +aae agf ago agu @@ -105965,7 +105938,7 @@ agu ago ago akd -aks +aae aae aae alN @@ -106194,9 +106167,9 @@ aaa aac aaa aaa -aeZ +aae aft -afu +aae afN agv agG @@ -106221,7 +106194,7 @@ agG ajr ajz aae -ake +aae akt aae aaa @@ -106450,9 +106423,9 @@ aak aaa aac aaa -aeZ +aae aft -afu +aae afN agb aaa @@ -106706,9 +106679,9 @@ aar aak aaa aac -aeZ +aae aft -afu +aae afN agb aae @@ -106964,7 +106937,7 @@ abl abl abl afa -afu +aae afN agb aaa @@ -107734,7 +107707,7 @@ adT aej aey abl -afd +afb aae afP aaa diff --git a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm index 37b2c3283dd..d1d01ac0338 100644 --- a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm +++ b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm @@ -49158,9 +49158,6 @@ /turf/open/floor/plating, /area/engine/engineering) "bTM" = ( -/obj/structure/transit_tube{ - icon_state = "E-SW" - }, /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ @@ -49168,23 +49165,26 @@ d2 = 2; icon_state = "1-2" }, +/obj/structure/transit_tube/curved/flipped{ + dir = 4 + }, /turf/open/floor/plating, /area/engine/engineering) "bTN" = ( -/obj/structure/transit_tube/station{ - dir = 1 - }, /obj/structure/transit_tube_pod{ dir = 4 }, /obj/structure/window/reinforced, +/obj/structure/transit_tube/station{ + dir = 1 + }, /turf/open/floor/plating, /area/engine/engineering) "bTO" = ( -/obj/structure/transit_tube{ - icon_state = "W-SE" - }, /obj/structure/window/reinforced, +/obj/structure/transit_tube/curved{ + dir = 8 + }, /turf/open/floor/plating, /area/engine/engineering) "bTP" = ( @@ -49668,19 +49668,14 @@ /turf/open/floor/plasteel/bar, /area/maintenance/starboard) "bUR" = ( -/obj/structure/transit_tube{ - icon_state = "S-NE" - }, /obj/structure/window/reinforced{ dir = 1 }, /obj/structure/lattice, +/obj/structure/transit_tube/curved, /turf/open/space, /area/space) "bUS" = ( -/obj/structure/transit_tube{ - icon_state = "D-NW" - }, /obj/structure/window/reinforced{ dir = 1 }, @@ -51826,9 +51821,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "bZc" = ( -/obj/structure/transit_tube{ - icon_state = "N-S-Pass" - }, +/obj/structure/transit_tube/crossing, /turf/open/space, /area/space) "bZd" = ( @@ -53734,16 +53727,13 @@ name = "Arrivals" }) "cdv" = ( -/obj/structure/transit_tube{ - icon_state = "N-SE" - }, /obj/structure/window/reinforced, +/obj/structure/transit_tube/curved/flipped{ + dir = 1 + }, /turf/open/space, /area/space) "cdw" = ( -/obj/structure/transit_tube{ - icon_state = "D-SW" - }, /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ @@ -53766,10 +53756,10 @@ /turf/open/space, /area/space) "cdz" = ( -/obj/structure/transit_tube{ - icon_state = "N-SW" - }, /obj/structure/window/reinforced, +/obj/structure/transit_tube/curved{ + dir = 1 + }, /turf/open/space, /area/space) "cdA" = ( @@ -53917,9 +53907,6 @@ name = "\improper Telecoms Control Room" }) "cdS" = ( -/obj/structure/transit_tube{ - icon_state = "E-NW" - }, /obj/structure/window/reinforced{ dir = 1 }, @@ -53929,26 +53916,29 @@ d2 = 2; icon_state = "1-2" }, +/obj/structure/transit_tube/curved{ + dir = 4 + }, /turf/open/floor/plating, /area/tcommsat/computer{ name = "\improper Telecoms Control Room" }) "cdT" = ( -/obj/structure/transit_tube/station, /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/transit_tube/station, /turf/open/floor/plating, /area/tcommsat/computer{ name = "\improper Telecoms Control Room" }) "cdU" = ( -/obj/structure/transit_tube{ - icon_state = "W-NE" - }, /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/transit_tube/curved/flipped{ + dir = 8 + }, /turf/open/floor/plating, /area/tcommsat/computer{ name = "\improper Telecoms Control Room" @@ -55900,16 +55890,20 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "ciD" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall_f12" +/obj/structure/window/reinforced{ + dir = 1 }, -/area/shuttle/escape) +/obj/structure/lattice, +/turf/open/space, +/area/space) "ciE" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall_s9"; - dir = 2 +/obj/structure/window/reinforced{ + dir = 1 }, -/area/shuttle/escape) +/obj/structure/lattice, +/obj/structure/transit_tube/curved/flipped, +/turf/open/space, +/area/space) "ciF" = ( /obj/structure/shuttle/engine/propulsion, /turf/closed/wall/mineral/titanium, @@ -102645,20 +102639,20 @@ bOQ bnG bxg bxg -bTL +bxg bUR -bVY -bVY -bVY +aik +aik +aik bZc -bVY -bVY +aik +aik bZc -bVY -bVY -bVY +aik +aik +aik cdv -cdR +cen cen cen ceY @@ -103417,7 +103411,7 @@ bnG bRv bDA bTO -ahQ +ciD aab aab aab @@ -103428,7 +103422,7 @@ aab aab aab aab -cdy +ajH cdU ceq ceM @@ -103673,20 +103667,20 @@ bOU bnG bxg bxg -bTP -ahR -bVY -bVY -bVY +bxg +ciE +aik +aik +aik bZc -bVY -bVY +aik +aik bZc -bVY -bVY -bVY +aik +aik +aik cdz -cdV +cen cen ceN cfb diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index c2885b4335d..a1d27ff3731 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -37682,22 +37682,20 @@ /turf/open/space, /area/space) "bnj" = ( -/obj/structure/transit_tube{ - icon_state = "E-SW" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved/flipped{ + dir = 4 + }, /turf/open/space, /area/space) "bnk" = ( -/obj/structure/transit_tube{ - icon_state = "E-W-Pass" - }, /obj/structure/lattice, +/obj/structure/transit_tube/crossing/horizontal, /turf/open/space, /area/space) "bnl" = ( -/obj/structure/transit_tube{ - icon_state = "W-SE" +/obj/structure/transit_tube/curved{ + dir = 8 }, /turf/open/space, /area/space) @@ -38825,9 +38823,7 @@ /turf/open/space, /area/space) "bph" = ( -/obj/structure/transit_tube{ - icon_state = "NE-SW" - }, +/obj/structure/transit_tube/diagonal, /turf/open/space, /area/space) "bpi" = ( @@ -38853,9 +38849,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/transit_tube{ - icon_state = "S-NW" - }, +/obj/structure/transit_tube/curved/flipped, /turf/open/floor/plasteel/darkblue/corner{ dir = 1 }, @@ -40072,18 +40066,20 @@ /turf/closed/wall/r_wall, /area/space) "brs" = ( -/obj/structure/transit_tube/station{ - reverse_launch = 1 - }, /obj/structure/sign/securearea{ pixel_y = 32 }, +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 1 + }, +/obj/structure/transit_tube_pod{ + dir = 4 + }, /turf/open/floor/plasteel/darkblue/corner{ dir = 4 }, /area/engine/break_room) "brt" = ( -/obj/structure/transit_tube, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -40094,12 +40090,10 @@ icon_state = "4-8"; pixel_y = 0 }, +/obj/structure/transit_tube/horizontal, /turf/open/space, /area/space) "bru" = ( -/obj/structure/transit_tube{ - icon_state = "E-W-Pass" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -40110,10 +40104,10 @@ icon_state = "4-8"; pixel_y = 0 }, +/obj/structure/transit_tube/crossing/horizontal, /turf/open/space, /area/space) "brv" = ( -/obj/structure/transit_tube, /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -40124,12 +40118,10 @@ icon_state = "4-8"; pixel_y = 0 }, +/obj/structure/transit_tube/horizontal, /turf/open/space, /area/space) "brw" = ( -/obj/structure/transit_tube{ - icon_state = "W-NE-SE" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -40140,6 +40132,9 @@ icon_state = "4-8"; pixel_y = 0 }, +/obj/structure/transit_tube/junction/flipped{ + dir = 8 + }, /turf/open/space, /area/space) "brx" = ( @@ -40191,10 +40186,6 @@ /turf/open/space, /area/space) "brA" = ( -/obj/structure/transit_tube/station{ - icon_state = "closed"; - dir = 4 - }, /obj/structure/window/reinforced{ dir = 8 }, @@ -40207,6 +40198,9 @@ icon_state = "4-8"; pixel_y = 0 }, +/obj/structure/transit_tube/station{ + dir = 4 + }, /turf/open/floor/plasteel/black, /area/construction/hallway{ name = "\improper MiniSat Exterior" @@ -40941,10 +40935,6 @@ /turf/open/floor/wood, /area/crew_quarters/heads) "bsD" = ( -/obj/structure/transit_tube{ - dir = 4; - icon_state = "Block" - }, /obj/machinery/status_display{ density = 0; layer = 4; @@ -41621,12 +41611,12 @@ dir = 4; pixel_x = 0 }, -/obj/structure/transit_tube{ - icon_state = "W-SE" - }, /obj/machinery/ai_status_display{ pixel_y = 32 }, +/obj/structure/transit_tube/curved{ + dir = 8 + }, /turf/open/floor/plasteel/darkblue/corner{ dir = 4 }, @@ -41672,8 +41662,8 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/transit_tube{ - icon_state = "E-NW" +/obj/structure/transit_tube/curved{ + dir = 4 }, /turf/open/space, /area/space) @@ -41682,9 +41672,6 @@ dir = 4; pixel_x = 0 }, -/obj/structure/transit_tube{ - icon_state = "D-NE" - }, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -41729,9 +41716,7 @@ /turf/open/space, /area/space) "btP" = ( -/obj/structure/transit_tube{ - icon_state = "NW-SE" - }, +/obj/structure/transit_tube/diagonal/topleft, /turf/open/space, /area/space) "btQ" = ( @@ -41748,8 +41733,8 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/transit_tube{ - icon_state = "N-SW" +/obj/structure/transit_tube/curved{ + dir = 1 }, /turf/open/floor/plasteel/darkblue/corner{ dir = 8 @@ -42938,17 +42923,17 @@ /turf/open/space, /area/space) "bvL" = ( -/obj/structure/transit_tube{ - icon_state = "E-NW" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved{ + dir = 4 + }, /turf/open/space, /area/space) "bvM" = ( -/obj/structure/transit_tube{ - icon_state = "W-NE" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved/flipped{ + dir = 8 + }, /turf/open/space, /area/space) "bvN" = ( @@ -42956,9 +42941,6 @@ dir = 1; pixel_y = 1 }, -/obj/structure/transit_tube{ - icon_state = "D-NW" - }, /obj/structure/lattice, /turf/open/space, /area/space) @@ -137700,7 +137682,7 @@ bhK cWO bhK brr -bsE +aOx btL aOx bjF @@ -141042,7 +141024,7 @@ aaa aaa aaf aaa -btN +brt aaa aaf aaa @@ -144125,9 +144107,9 @@ aaf aaa aaa aaf -bpg +aaa brw -btO +aaa aaf aaa aaa @@ -144381,11 +144363,11 @@ aaa aaf aaf aaf -bni +aaf bph -brx +bry btP -bvK +aaf aaa aaa aaa @@ -144639,9 +144621,9 @@ aaf aaa aaa bnj -bpi +aaa bry -bpf +aaa bvL aaa aaa @@ -145153,9 +145135,9 @@ bhM bhM aPX bnl -bpj +aOr brz -btQ +aOr bvM aaa aaa @@ -145409,7 +145391,7 @@ aNi bhN bhN aPX -bnm +aNi bpk brA btR diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index d23543cb8b4..d8c96381a3d 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -9028,10 +9028,8 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "tP" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, /obj/structure/window/reinforced/fulltile, +/obj/structure/transit_tube, /turf/open/floor/plating, /area/engine/engineering) "tQ" = ( @@ -9288,10 +9286,8 @@ }, /area/hallway/primary/central) "uw" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, /obj/structure/window/reinforced/fulltile, +/obj/structure/transit_tube, /turf/open/floor/plating, /area/tcommsat/computer) "ux" = ( @@ -12330,10 +12326,10 @@ }, /area/engine/engineering) "BH" = ( -/obj/structure/transit_tube/station/reverse{ - dir = 8; - icon_state = "closed" +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 4 }, +/obj/structure/transit_tube_pod, /turf/open/floor/plating/warnplate{ dir = 8 }, @@ -12446,10 +12442,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "BW" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, -/obj/structure/transit_tube_pod, +/obj/structure/transit_tube, /turf/open/floor/plating/warnplate{ dir = 8 }, @@ -12535,8 +12528,8 @@ /turf/open/floor/plasteel, /area/engine/engineering) "Ci" = ( -/obj/structure/transit_tube{ - icon_state = "N-SE" +/obj/structure/transit_tube/curved/flipped{ + dir = 1 }, /turf/open/space, /area/space) @@ -12576,10 +12569,10 @@ /turf/open/space, /area/space) "Cp" = ( -/obj/structure/transit_tube{ - icon_state = "E-NW" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved{ + dir = 4 + }, /turf/open/space, /area/space) "Cq" = ( @@ -12587,15 +12580,13 @@ /turf/open/space, /area/space) "Cr" = ( -/obj/structure/transit_tube{ - icon_state = "E-W-Pass" - }, /obj/structure/lattice, +/obj/structure/transit_tube/crossing/horizontal, /turf/open/space, /area/space) "Cs" = ( -/obj/structure/transit_tube{ - icon_state = "W-SE" +/obj/structure/transit_tube/curved{ + dir = 8 }, /turf/open/space, /area/space) @@ -12658,10 +12649,8 @@ /turf/open/floor/plasteel, /area/engine/engineering) "CA" = ( -/obj/structure/transit_tube{ - icon_state = "S-NW" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved/flipped, /turf/open/space, /area/space) "CB" = ( @@ -13234,10 +13223,8 @@ /turf/open/floor/engine/vacuum, /area/engine/engineering) "DX" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, /obj/structure/lattice, +/obj/structure/transit_tube/crossing, /turf/open/space, /area/space) "DY" = ( @@ -13287,10 +13274,10 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate) "Ee" = ( -/obj/structure/transit_tube{ - icon_state = "N-SE" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved/flipped{ + dir = 1 + }, /turf/open/space, /area/space) "Ef" = ( @@ -13367,8 +13354,8 @@ /turf/open/space, /area/space) "Eq" = ( -/obj/structure/transit_tube{ - icon_state = "E-NW" +/obj/structure/transit_tube/curved{ + dir = 4 }, /turf/open/space, /area/space) @@ -13380,15 +13367,15 @@ /turf/open/space, /area/space) "Es" = ( -/obj/structure/transit_tube, /obj/structure/lattice, +/obj/structure/transit_tube/horizontal, /turf/open/space, /area/space) "Et" = ( -/obj/structure/transit_tube{ - icon_state = "W-SE" - }, /obj/structure/lattice, +/obj/structure/transit_tube/curved{ + dir = 8 + }, /turf/open/space, /area/space) "Eu" = ( @@ -13435,10 +13422,8 @@ }, /area/tcommsat/computer) "EB" = ( -/obj/structure/transit_tube{ - icon_state = "NW-SE" - }, /obj/structure/lattice, +/obj/structure/transit_tube/diagonal/topleft, /turf/open/space, /area/space) "EC" = ( @@ -13625,9 +13610,7 @@ /turf/open/floor/plasteel/black, /area/engine/gravity_generator) "Fh" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating/warnplate{ dir = 4 }, @@ -13747,9 +13730,8 @@ /turf/open/floor/plating, /area/space) "Fw" = ( -/obj/structure/transit_tube/station/reverse{ - icon_state = "closed"; - dir = 4 +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 8 }, /turf/open/floor/plating/warnplate{ dir = 4 @@ -13852,10 +13834,6 @@ /turf/closed/wall/mineral/plastitanium, /area/space) "FK" = ( -/obj/structure/transit_tube{ - icon_state = "Block"; - dir = 1 - }, /turf/open/floor/plating/warnplate{ dir = 4 }, @@ -14521,8 +14499,9 @@ /turf/open/floor/plating/airless, /area/shuttle/supply) "Hk" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/supply) +/obj/structure/transit_tube/horizontal, +/turf/open/space, +/area/space) "Hl" = ( /obj/structure/shuttle/engine/heater{ icon_state = "heater"; @@ -50249,7 +50228,7 @@ BH BW tP Ci -Co +am am yB CY @@ -50505,7 +50484,7 @@ qI qI qI yB -Cj +aa Cp am yB @@ -50763,7 +50742,7 @@ aa aa aa aa -Cq +Hk am yB CX @@ -51020,7 +50999,7 @@ aa aa aa aa -Cq +Hk am yB Da @@ -51277,7 +51256,7 @@ aa aa aa aa -Cq +Hk am yB yB @@ -51791,7 +51770,7 @@ aa aa aa aa -Cq +Hk am aa aa @@ -52048,7 +52027,7 @@ aa aa aa aa -Cq +Hk am aa aa @@ -52305,7 +52284,7 @@ aa aa aa aa -Cq +Hk am aa aa @@ -52562,7 +52541,7 @@ aa aa aa aa -Cq +Hk am aa aa @@ -52820,7 +52799,7 @@ aa aa aa Cs -Co +am am aa aa @@ -53076,21 +53055,21 @@ aa aa aa aa -Cj +aa CA -CK -Db -Db -Db -Db +Cq +Cq +Cq +Cq +Cq DX -DZ DX -Db -Db -Db +DX +Cq +Cq +Cq Ee -Ep +aa aa aa aa @@ -53346,7 +53325,7 @@ am am am am -Ef +am Eq aa aa @@ -53604,7 +53583,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -53861,7 +53840,7 @@ aa aa aa am -Er +Cr aa aa aa @@ -54118,7 +54097,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -54375,7 +54354,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -54632,7 +54611,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -54889,7 +54868,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -55146,7 +55125,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -55403,7 +55382,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -55660,7 +55639,7 @@ aa aa aa am -Er +Cr aa aa aa @@ -55917,7 +55896,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -56174,7 +56153,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -56431,7 +56410,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -56688,7 +56667,7 @@ aa aa aa am -Cq +Hk aa aa aa @@ -56945,7 +56924,7 @@ aa aa aa am -Er +Cr aa aa aa @@ -57460,7 +57439,7 @@ aa aa am Et -Co +am am am am @@ -57716,9 +57695,9 @@ aa aa aa am -Ef +am EB -Co +am Ea uR uR @@ -57974,7 +57953,7 @@ aa aa am am -Ef +am CA uw Fh diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 075efa3cc66..e41194808f9 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -55526,9 +55526,6 @@ /turf/open/floor/plating, /area/shuttle/syndicate) "crh" = ( -/obj/structure/transit_tube{ - icon_state = "Block" - }, /turf/open/floor/plating/warnplate{ dir = 8 }, @@ -55671,12 +55668,10 @@ /turf/open/floor/plasteel/warning, /area/hallway/secondary/entry) "crA" = ( -/obj/structure/transit_tube/station{ - dir = 8; - icon_state = "closed"; - reverse_launch = 1 - }, /obj/structure/transit_tube_pod, +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 4 + }, /turf/open/floor/plating/warnplate{ dir = 8 }, @@ -55835,9 +55830,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "crR" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating/warnplate{ dir = 8 }, @@ -55884,10 +55877,8 @@ /turf/open/floor/plating, /area/engine/engineering) "crY" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, /obj/structure/window/reinforced/fulltile, +/obj/structure/transit_tube, /turf/open/floor/plating, /area/engine/engineering) "crZ" = ( @@ -55973,8 +55964,8 @@ /turf/open/space, /area/space) "csi" = ( -/obj/structure/transit_tube{ - icon_state = "N-SE" +/obj/structure/transit_tube/curved/flipped{ + dir = 1 }, /turf/open/space, /area/space) @@ -55987,8 +55978,8 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "csl" = ( -/obj/structure/transit_tube{ - icon_state = "E-NW" +/obj/structure/transit_tube/curved{ + dir = 4 }, /turf/open/space, /area/space) @@ -55999,12 +55990,12 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "csn" = ( -/obj/structure/transit_tube, +/obj/structure/transit_tube/horizontal, /turf/open/space, /area/space) "cso" = ( -/obj/structure/transit_tube, /obj/structure/lattice, +/obj/structure/transit_tube/crossing/horizontal, /turf/open/space, /area/space) "csp" = ( @@ -56200,18 +56191,18 @@ /turf/open/space, /area/space) "csM" = ( -/obj/structure/transit_tube, /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/transit_tube/crossing/horizontal, /turf/open/space, /area/space) "csN" = ( -/obj/structure/transit_tube, +/obj/structure/transit_tube/horizontal, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "csO" = ( /obj/structure/window/reinforced/fulltile, -/obj/structure/transit_tube, +/obj/structure/transit_tube/horizontal, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "csP" = ( @@ -56240,9 +56231,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "csU" = ( -/obj/structure/transit_tube/station{ - reverse_launch = 1 - }, +/obj/structure/transit_tube/station/reverse, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "csV" = ( @@ -94052,7 +94041,7 @@ crA crR crY csi -csL +aaa aaa aaf aag @@ -94308,7 +94297,7 @@ cqY cqY cqY cig -csh +aaa csl aaa aaf @@ -95080,7 +95069,7 @@ aaa aaa aaf aaa -csp +csn aaa aaf aag @@ -96108,7 +96097,7 @@ aaa aaa aaf aaa -csp +csn aaa aaf aag @@ -97136,7 +97125,7 @@ aaa aaa aaf aaa -csp +csn aaa aaf aag @@ -99449,7 +99438,7 @@ aaa aaa aaf csD -csT +ctb csV ctb ctj From 7959535d05ce16a774ac5dcd8ab28168af81904a Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 3 Nov 2016 18:29:10 +0100 Subject: [PATCH 3/5] updating pubbystation with new transit tube types. --- _maps/map_files/PubbyStation/PubbyStation.dmm | 1446 ++++++++--------- 1 file changed, 699 insertions(+), 747 deletions(-) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index fc536d95b46..79b7ff1fe2c 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2349,9 +2349,6 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/aisat_interior) "afs" = ( -/obj/structure/transit_tube{ - icon_state = "Block" - }, /turf/open/floor/plating/warnplate{ dir = 9 }, @@ -2466,10 +2463,8 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "afL" = ( -/obj/structure/transit_tube/station{ - dir = 8; - icon_state = "closed"; - reverse_launch = 1 +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 4 }, /turf/open/floor/plating/warnplate{ dir = 8 @@ -2582,9 +2577,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "aga" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating/warnplate{ dir = 8 }, @@ -2677,9 +2670,7 @@ /area/ai_monitored/turret_protected/aisat_interior) "agk" = ( /obj/structure/window/reinforced/fulltile, -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "agl" = ( @@ -2837,9 +2828,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "agz" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating/airless, /area/space) "agA" = ( @@ -3063,9 +3052,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/main) "agY" = ( -/obj/structure/transit_tube{ - icon_state = "N-S-Pass" - }, +/obj/structure/transit_tube/crossing, /turf/open/floor/plating/airless, /area/space) "agZ" = ( @@ -9822,9 +9809,7 @@ /area/bridge) "aud" = ( /obj/structure/window/reinforced/fulltile, -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating, /area/bridge) "aue" = ( @@ -10362,9 +10347,7 @@ /turf/open/floor/plasteel, /area/bridge) "auZ" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating/warnplate{ dir = 8 }, @@ -10777,10 +10760,8 @@ /area/bridge) "avY" = ( /obj/structure/transit_tube_pod, -/obj/structure/transit_tube/station{ - dir = 8; - icon_state = "closed"; - reverse_launch = 1 +/obj/structure/transit_tube/station/reverse{ + dir = 8 }, /turf/open/floor/plating/warnplate{ dir = 8 @@ -11452,11 +11433,6 @@ /turf/open/floor/plasteel, /area/bridge) "axn" = ( -/obj/structure/transit_tube{ - tag = "icon-Block (NORTH)"; - icon_state = "Block"; - dir = 1 - }, /turf/open/floor/plating/warnplate{ dir = 8 }, @@ -47085,9 +47061,6 @@ /turf/open/floor/plating, /area/maintenance/aft) "bRV" = ( -/obj/structure/transit_tube{ - icon_state = "Block" - }, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating/warnplate{ dir = 4 @@ -47236,10 +47209,8 @@ /area/maintenance/aft) "bSm" = ( /obj/structure/transit_tube_pod, -/obj/structure/transit_tube/station{ - dir = 4; - icon_state = "closed"; - reverse_launch = 1 +/obj/structure/transit_tube/station/reverse{ + dir = 4 }, /turf/open/floor/plating/warnplate{ dir = 4 @@ -47351,9 +47322,7 @@ /turf/open/space, /area/space) "bSx" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating/warnplate{ dir = 4 }, @@ -47446,9 +47415,7 @@ /area/engine/engineering) "bSJ" = ( /obj/structure/window/reinforced/fulltile, -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating, /area/engine/engineering) "bSK" = ( @@ -47512,9 +47479,7 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "bSQ" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating, /area/space) "bSR" = ( @@ -47729,9 +47694,7 @@ name = "Bomb Testing Asteroid" }) "bTo" = ( -/obj/structure/transit_tube{ - icon_state = "N-S-Pass" - }, +/obj/structure/transit_tube/crossing, /turf/open/floor/plating, /area/space) "bTp" = ( @@ -48007,10 +47970,8 @@ /turf/open/floor/plating, /area/tcommsat/computer) "bTZ" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, /obj/structure/window/reinforced/fulltile, +/obj/structure/transit_tube, /turf/open/floor/plating, /area/tcommsat/computer) "bUa" = ( @@ -48045,9 +48006,7 @@ /turf/open/floor/plating, /area/tcommsat/computer) "bUe" = ( -/obj/structure/transit_tube{ - icon_state = "N-S" - }, +/obj/structure/transit_tube, /turf/open/floor/plating/warnplate{ dir = 4 }, @@ -48092,10 +48051,8 @@ /turf/open/space, /area/space) "bUm" = ( -/obj/structure/transit_tube/station{ - dir = 4; - icon_state = "closed"; - reverse_launch = 1 +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 8 }, /turf/open/floor/plating/warnplate{ dir = 4 @@ -48153,11 +48110,6 @@ /turf/open/floor/plating, /area/tcommsat/computer) "bUt" = ( -/obj/structure/transit_tube{ - tag = "icon-Block (NORTH)"; - icon_state = "Block"; - dir = 1 - }, /turf/open/floor/plating/warnplate{ dir = 4 }, @@ -48811,579 +48763,143 @@ /obj/item/weapon/stock_parts/scanning_module, /turf/open/floor/plasteel/black, /area/tcommsat/server) -"bXN" = ( -/obj/item/weapon/wrench, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bXM" = ( -/turf/open/floor/plasteel/warning{ - dir = 4 - }, -/area/assembly/chargebay) -"bXL" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -29 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bXK" = ( -/obj/structure/chair, -/obj/structure/sign/poster{ - pixel_x = 32 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/apmaint) -"bXJ" = ( -/obj/item/chair, -/obj/item/trash/popcorn, -/turf/open/floor/plating{ - broken = 1; - icon_state = "platingdmg3" - }, -/area/maintenance/apmaint) -"bXI" = ( -/obj/structure/closet/radiation, -/obj/structure/sign/poster{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bXH" = ( -/obj/item/trash/tray, -/obj/item/weapon/reagent_containers/food/snacks/badrecipe, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bXG" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark{ - name = "JoinLate" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bXF" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Arrivals Shuttle Airlock" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bXE" = ( -/turf/open/floor/plasteel/warning{ - dir = 5 - }, -/area/assembly/chargebay) -"bXD" = ( -/obj/structure/sign/poster{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 - }, -/area/hallway/primary/central) -"bXC" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = 27 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 - }, -/area/hallway/primary/central) -"bXB" = ( -/obj/structure/sign/poster{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/hallway/primary/central) -"bXA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/poster{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/hallway/primary/central) -"bXz" = ( -/turf/closed/wall/r_wall, -/area/library{ - name = "Lounge" - }) -"bXy" = ( -/obj/machinery/atmospherics/components/unary/tank/air, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bXx" = ( -/obj/machinery/airalarm{ - pixel_y = 22 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bXw" = ( -/obj/structure/frame/machine, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bXv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/crew_quarters/bar) -"bXu" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/floor/plasteel/green/side, -/area/hydroponics) -"bXt" = ( -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bXs" = ( -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bXr" = ( -/obj/structure/disposalpipe/segment{ +"bVS" = ( +/obj/machinery/camera/motion{ + c_tag = "MiniSat External Port"; dir = 8; - icon_state = "pipe-c" + network = list("MiniSat") }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bXq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/turf/open/space, +/area/space) +"bVT" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/glass_command{ + name = "AI Core"; + req_access_txt = "65" }, -/obj/machinery/firealarm{ +/turf/open/floor/plasteel/white, +/area/wreck/ai) +"bVU" = ( +/obj/machinery/camera/motion{ + c_tag = "MiniSat External Starboard"; dir = 4; - pixel_x = -28 + network = list("MiniSat") + }, +/turf/open/space, +/area/space) +"bVV" = ( +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "Station Intercom (AI Private)"; + pixel_x = 0; + pixel_y = 24 + }, +/turf/open/floor/bluegrid, +/area/wreck/ai) +"bVW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 2; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 }, /turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bXp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"bXo" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bXn" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster{ - pixel_y = 32 - }, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bXm" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/bar) -"bXl" = ( -/obj/machinery/door/airlock/glass{ - name = "Kitchen"; - req_access_txt = "25;28" - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/kitchen) -"bXk" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/corner{ - dir = 8 - }, -/area/hydroponics) -"bXj" = ( -/turf/open/floor/plasteel/green/corner{ - dir = 8 - }, -/area/hydroponics) -"bXi" = ( -/turf/open/floor/plating{ - broken = 1; - icon_state = "platingdmg3" - }, -/area/maintenance/apmaint) -"bXh" = ( -/turf/open/floor/plating{ - burnt = 1; - icon_state = "panelscorched" - }, -/area/maintenance/apmaint) -"bXg" = ( -/obj/structure/chair/stool, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/bar) -"bXf" = ( -/obj/effect/landmark/start{ - name = "Assistant" - }, -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bXe" = ( -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 1 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/bar) -"bXd" = ( -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bXc" = ( -/obj/machinery/newscaster{ - pixel_y = 1 - }, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"bXb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/poster{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central) -"bXa" = ( -/obj/structure/table/wood/fancy, -/obj/item/toy/cards/deck, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/bar) -"bWZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bWY" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/hydroponics) -"bWX" = ( -/obj/effect/landmark/start{ - name = "Botanist" - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel, -/area/hydroponics) -"bWW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/wood/normal, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bWV" = ( -/obj/structure/table/reinforced, -/obj/item/weapon/book/manual/barman_recipes, -/obj/item/weapon/reagent_containers/glass/rag, -/turf/open/floor/plasteel/darkred/side{ - dir = 8 - }, -/area/crew_quarters/bar) -"bWU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bWT" = ( -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/hydroponics) -"bWS" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/obj/machinery/airalarm{ - pixel_y = 22 - }, -/turf/open/floor/plasteel/arrival{ - dir = 1 - }, -/area/hallway/secondary/entry) -"bWR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bWQ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/corner{ - dir = 1 - }, -/area/hydroponics) -"bWP" = ( -/turf/open/floor/plasteel/green/corner{ - dir = 4 - }, -/area/hydroponics) -"bWO" = ( -/obj/structure/grille/broken, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bWN" = ( -/obj/item/device/flashlight/lantern, -/obj/structure/window/reinforced, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"bWM" = ( -/obj/structure/window/reinforced, -/obj/item/device/flashlight/lantern, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"bWL" = ( -/obj/item/weapon/reagent_containers/glass/bucket, -/turf/open/floor/plasteel, -/area/hydroponics) -"bWK" = ( -/turf/closed/wall/r_wall, -/area/security/checkpoint2{ - name = "Customs" - }) -"bWJ" = ( -/turf/closed/wall/r_wall, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) -"bWI" = ( -/obj/effect/decal/remains/human, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bWH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/bar) -"bWG" = ( -/obj/structure/closet, -/obj/item/weapon/canvas/twentythreeXnineteen, -/obj/item/weapon/canvas/nineteenXnineteen, -/obj/item/weapon/canvas/twentythreeXtwentythree, -/obj/item/weapon/storage/crayons, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bWF" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bWE" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"bWD" = ( -/obj/machinery/door/airlock/glass{ - name = "Emergency Shuttle Cargo Hold"; - req_access_txt = "0" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bWC" = ( +/area/wreck/ai) +"bVX" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/teleporter) -"bWB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/blue/corner{ - dir = 8 - }, -/area/hallway/primary/central) -"bWA" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 - }, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"bWz" = ( -/obj/machinery/camera{ - c_tag = "Dormitory Toilets"; - dir = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/locker/locker_toilet{ - name = "\improper Restrooms" - }) -"bWy" = ( -/obj/machinery/light/small{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 }, /turf/open/floor/plating, -/area/maintenance/apmaint) -"bWx" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 8; +/area/wreck/ai) +"bVY" = ( +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/AIsatextAP) +"bVZ" = ( +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "MiniSat Entrance"; + dir = 2; + network = list("MiniSat") + }, +/turf/open/space, +/area/space) +"bWa" = ( +/obj/structure/closet/l3closet, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"bWb" = ( +/obj/structure/closet/bombcloset, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"bWc" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/sign/barsign, +/turf/open/floor/plating, +/area/maintenance/fsmaint) +"bWd" = ( +/turf/closed/wall/r_wall, +/area/security/hos) +"bWe" = ( +/obj/machinery/button/door{ + id = "supplybridge"; + name = "Space Bridge Control"; + pixel_x = 0; + pixel_y = -27; req_access_txt = "13" }, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bWw" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 4; - req_access_txt = "13" +/turf/open/space, +/area/space) +"bWf" = ( +/obj/effect/landmark/start{ + name = "Security Officer" }, -/turf/open/floor/plating, -/area/maintenance/apmaint) -"bWv" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/locker/locker_toilet{ - name = "\improper Restrooms" - }) -"bWu" = ( -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating{ - broken = 1; - icon_state = "platingdmg3" - }, -/area/maintenance/fpmaint2{ - name = "Brig Maintenance" - }) -"bWt" = ( -/obj/machinery/porta_turret/ai{ - dir = 8 - }, -/turf/open/floor/plasteel/darkblue, -/area/ai_monitored/turret_protected/ai_upload) -"bWs" = ( -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/fpmaint2{ - name = "Brig Maintenance" - }) -"bWr" = ( -/turf/open/floor/plating{ - broken = 1; - icon_state = "platingdmg3" - }, -/area/maintenance/fpmaint2{ - name = "Brig Maintenance" - }) -"bWq" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) -"bWp" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 +/area/security/main) +"bWg" = ( +/obj/effect/landmark/start{ + name = "Security Officer" }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/fpmaint2{ - name = "Brig Maintenance" - }) -"bWo" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/open/floor/plating{ - broken = 1; - icon_state = "platingdmg1" - }, -/area/maintenance/fpmaint2{ - name = "Brig Maintenance" - }) -"bWn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"bWh" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -24 }, +/turf/open/floor/plating, +/area/maintenance/fsmaint) +"bWi" = ( +/obj/item/weapon/storage/secure/safe{ + pixel_x = -22; + pixel_y = 32 + }, +/turf/open/floor/plasteel/darkred/side, +/area/security/hos) +"bWj" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"bWk" = ( +/turf/closed/wall/r_wall, +/area/maintenance/fore) +"bWl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/holopad, /turf/open/floor/plasteel, /area/crew_quarters/sleep) "bWm" = ( @@ -49400,145 +48916,581 @@ dir = 4 }, /area/bridge) -"bWl" = ( +"bWn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep) +"bWo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/maintenance/fpmaint2{ + name = "Brig Maintenance" + }) +"bWp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/fpmaint2{ + name = "Brig Maintenance" + }) +"bWq" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bWr" = ( +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, +/area/maintenance/fpmaint2{ + name = "Brig Maintenance" + }) +"bWs" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/fpmaint2{ + name = "Brig Maintenance" + }) +"bWt" = ( +/obj/machinery/porta_turret/ai{ + dir = 8 + }, +/turf/open/floor/plasteel/darkblue, +/area/ai_monitored/turret_protected/ai_upload) +"bWu" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, +/area/maintenance/fpmaint2{ + name = "Brig Maintenance" + }) +"bWv" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/locker/locker_toilet{ + name = "\improper Restrooms" + }) +"bWw" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 4; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bWx" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 8; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bWy" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bWz" = ( +/obj/machinery/camera{ + c_tag = "Dormitory Toilets"; + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/locker/locker_toilet{ + name = "\improper Restrooms" + }) +"bWA" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27; + pixel_y = 0 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/shuttle/escape) +"bWB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/blue/corner{ + dir = 8 + }, +/area/hallway/primary/central) +"bWC" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/teleporter) +"bWD" = ( +/obj/machinery/door/airlock/glass{ + name = "Emergency Shuttle Cargo Hold"; + req_access_txt = "0" + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"bWE" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/turf/open/floor/plasteel/hydrofloor, +/area/hydroponics) +"bWF" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bWG" = ( +/obj/structure/closet, +/obj/item/weapon/canvas/twentythreeXnineteen, +/obj/item/weapon/canvas/nineteenXnineteen, +/obj/item/weapon/canvas/twentythreeXtwentythree, +/obj/item/weapon/storage/crayons, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bWH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bWI" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bWJ" = ( +/turf/closed/wall/r_wall, +/area/hallway/secondary/exit{ + name = "\improper Departure Lounge" + }) +"bWK" = ( +/turf/closed/wall/r_wall, +/area/security/checkpoint2{ + name = "Customs" + }) +"bWL" = ( +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/hydroponics) +"bWM" = ( +/obj/structure/window/reinforced, +/obj/item/device/flashlight/lantern, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"bWN" = ( +/obj/item/device/flashlight/lantern, +/obj/structure/window/reinforced, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"bWO" = ( +/obj/structure/grille/broken, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bWP" = ( +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/hydroponics) +"bWQ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/green/corner{ + dir = 1 + }, +/area/hydroponics) +"bWR" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bWS" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + tag = "icon-intact (EAST)"; + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 22 + }, +/turf/open/floor/plasteel/arrival{ + dir = 1 + }, +/area/hallway/secondary/entry) +"bWT" = ( +/turf/open/floor/plasteel/green/side{ + dir = 4 + }, +/area/hydroponics) +"bWU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bWV" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/book/manual/barman_recipes, +/obj/item/weapon/reagent_containers/glass/rag, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, +/area/crew_quarters/bar) +"bWW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair/wood/normal, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bWX" = ( +/obj/effect/landmark/start{ + name = "Botanist" + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/hydroponics) +"bWY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/green/side{ + dir = 8 + }, +/area/hydroponics) +"bWZ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bXa" = ( +/obj/structure/table/wood/fancy, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/bar) +"bXb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sign/poster{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/neutral/corner, +/area/hallway/primary/central) +"bXc" = ( +/obj/machinery/newscaster{ + pixel_y = 1 + }, +/turf/closed/wall, +/area/crew_quarters/kitchen) +"bXd" = ( +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; + dir = 1 + }, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bXe" = ( +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; + dir = 1 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/bar) +"bXf" = ( +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; + dir = 1 + }, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bXg" = ( +/obj/structure/chair/stool, +/turf/open/floor/carpet{ + icon_state = "carpetsymbol" + }, +/area/crew_quarters/bar) +"bXh" = ( +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/apmaint) +"bXi" = ( +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, +/area/maintenance/apmaint) +"bXj" = ( +/turf/open/floor/plasteel/green/corner{ + dir = 8 + }, +/area/hydroponics) +"bXk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/green/corner{ + dir = 8 + }, +/area/hydroponics) +"bXl" = ( +/obj/machinery/door/airlock/glass{ + name = "Kitchen"; + req_access_txt = "25;28" + }, +/turf/open/floor/plasteel/black, +/area/crew_quarters/kitchen) +"bXm" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/bar) +"bXn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/poster{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bXo" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + tag = "icon-intact (EAST)"; + icon_state = "intact"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"bXp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /obj/machinery/holopad, /turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"bWk" = ( -/turf/closed/wall/r_wall, -/area/maintenance/fore) -"bWj" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"bWi" = ( -/obj/item/weapon/storage/secure/safe{ - pixel_x = -22; - pixel_y = 32 - }, -/turf/open/floor/plasteel/darkred/side, -/area/security/hos) -"bWh" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plating, -/area/maintenance/fsmaint) -"bWg" = ( -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/area/hallway/primary/central) +"bXq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/plasteel, -/area/security/main) -"bWf" = ( -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ +/obj/machinery/firealarm{ dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/security/main) -"bWe" = ( -/obj/machinery/button/door{ - id = "supplybridge"; - name = "Space Bridge Control"; - pixel_x = 0; - pixel_y = -27; - req_access_txt = "13" - }, -/turf/open/space, -/area/space) -"bWd" = ( -/turf/closed/wall/r_wall, -/area/security/hos) -"bWc" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/sign/barsign, -/turf/open/floor/plating, -/area/maintenance/fsmaint) -"bWb" = ( -/obj/structure/closet/bombcloset, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"bWa" = ( -/obj/structure/closet/l3closet, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"bVZ" = ( -/obj/structure/lattice, -/obj/machinery/camera/motion{ - c_tag = "MiniSat Entrance"; - dir = 2; - network = list("MiniSat") - }, -/turf/open/space, -/area/space) -"bVY" = ( -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/AIsatextAP) -"bVX" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/wreck/ai) -"bVW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 + pixel_x = -28 }, /turf/open/floor/plasteel/black, -/area/wreck/ai) -"bVV" = ( -/obj/item/device/radio/intercom{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "Station Intercom (AI Private)"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/bluegrid, -/area/wreck/ai) -"bVU" = ( -/obj/machinery/camera/motion{ - c_tag = "MiniSat External Starboard"; - dir = 4; - network = list("MiniSat") - }, -/turf/open/space, -/area/space) -"bVT" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_command{ - name = "AI Core"; - req_access_txt = "65" - }, -/turf/open/floor/plasteel/white, -/area/wreck/ai) -"bVS" = ( -/obj/machinery/camera/motion{ - c_tag = "MiniSat External Port"; +/area/crew_quarters/bar) +"bXr" = ( +/obj/structure/disposalpipe/segment{ dir = 8; - network = list("MiniSat") + icon_state = "pipe-c" }, -/turf/open/space, -/area/space) +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bXs" = ( +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; + dir = 4 + }, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bXt" = ( +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; + dir = 8 + }, +/turf/open/floor/plasteel/black, +/area/crew_quarters/bar) +"bXu" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel/green/side, +/area/hydroponics) +"bXv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/bar) +"bXw" = ( +/obj/structure/frame/machine, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bXx" = ( +/obj/machinery/airalarm{ + pixel_y = 22 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"bXy" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"bXz" = ( +/turf/closed/wall/r_wall, +/area/library{ + name = "Lounge" + }) +"bXA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sign/poster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/hallway/primary/central) +"bXB" = ( +/obj/structure/sign/poster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/hallway/primary/central) +"bXC" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = 27 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/hallway/primary/central) +"bXD" = ( +/obj/structure/sign/poster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/hallway/primary/central) +"bXE" = ( +/turf/open/floor/plasteel/warning{ + dir = 5 + }, +/area/assembly/chargebay) +"bXF" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Arrivals Shuttle Airlock" + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"bXG" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark{ + name = "JoinLate" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"bXH" = ( +/obj/item/trash/tray, +/obj/item/weapon/reagent_containers/food/snacks/badrecipe, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bXI" = ( +/obj/structure/closet/radiation, +/obj/structure/sign/poster{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"bXJ" = ( +/obj/item/chair, +/obj/item/trash/popcorn, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, +/area/maintenance/apmaint) +"bXK" = ( +/obj/structure/chair, +/obj/structure/sign/poster{ + pixel_x = 32 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/apmaint) +"bXL" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -29 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"bXM" = ( +/turf/open/floor/plasteel/warning{ + dir = 4 + }, +/area/assembly/chargebay) +"bXN" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plating, +/area/maintenance/apmaint) (1,1,1) = {" aaa From b0b5a90bd79bcd24242b02d67376e7bf3d35dca0 Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 3 Nov 2016 19:03:04 +0100 Subject: [PATCH 4/5] Requested changes --- code/__DEFINES/pipe_construction.dm | 19 +++++++- code/game/machinery/pipe/pipe_dispenser.dm | 35 +++++++------- .../structures/transit_tubes/station.dm | 4 -- .../structures/transit_tubes/transit_tube.dm | 44 +++++++++--------- .../transit_tube_construction.dm | 13 +++--- .../transit_tubes/transit_tube_pod.dm | 5 -- icons/obj/atmospherics/pipes/transit_tube.dmi | Bin 47945 -> 49355 bytes 7 files changed, 65 insertions(+), 55 deletions(-) diff --git a/code/__DEFINES/pipe_construction.dm b/code/__DEFINES/pipe_construction.dm index f19c19824ab..84c4563bf2f 100644 --- a/code/__DEFINES/pipe_construction.dm +++ b/code/__DEFINES/pipe_construction.dm @@ -38,4 +38,21 @@ Construction breaks otherwise #define DISP_END_OUTLET 7 #define DISP_END_CHUTE 8 #define DISP_SORTJUNCTION 9 -#define DISP_SORTJUNCTION_FLIP 10 \ No newline at end of file +#define DISP_SORTJUNCTION_FLIP 10 + +//Transit tubes +#define TRANSIT_TUBE_STRAIGHT 0 +#define TRANSIT_TUBE_STRAIGHT_CROSSING 1 +#define TRANSIT_TUBE_CURVED 2 +#define TRANSIT_TUBE_DIAGONAL 3 +#define TRANSIT_TUBE_DIAGONAL_CROSSING 4 +#define TRANSIT_TUBE_JUNCTION 5 +#define TRANSIT_TUBE_STATION 6 +#define TRANSIT_TUBE_TERMINUS 7 +#define TRANSIT_TUBE_POD 8 + +//the open status of the transit tube station +#define STATION_TUBE_OPEN 0 +#define STATION_TUBE_OPENING 1 +#define STATION_TUBE_CLOSED 2 +#define STATION_TUBE_CLOSING 3 \ No newline at end of file diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 2caf79e6daf..2f24b031074 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -195,15 +195,16 @@ Nah return 1 var/dat = {"Transit Tubes:
-Straight Tube
-Straight Tube with Crossing
-Curved Tube
-Diagonal Tube
-Junction
+Straight Tube
+Straight Tube with Crossing
+Curved Tube
+Diagonal Tube
+Diagonal Tube with Crossing
+Junction
Station Equipment:
-Through Tube Station
-Terminus Tube Station
-Transit Tube Pod
+Through Tube Station
+Terminus Tube Station
+Transit Tube Pod
"} user << browse("[src][dat]", "window=pipedispenser") @@ -220,21 +221,23 @@ Nah var/tube_type = text2num(href_list["tube"]) var/obj/structure/C switch(tube_type) - if(0) + if(TRANSIT_TUBE_STRAIGHT) C = new /obj/structure/c_transit_tube(loc) - if(1) + if(TRANSIT_TUBE_STRAIGHT_CROSSING) C = new /obj/structure/c_transit_tube/crossing(loc) - if(2) + if(TRANSIT_TUBE_CURVED) C = new /obj/structure/c_transit_tube/curved(loc) - if(3) + if(TRANSIT_TUBE_DIAGONAL) C = new /obj/structure/c_transit_tube/diagonal(loc) - if(4) + if(TRANSIT_TUBE_DIAGONAL_CROSSING) + C = new /obj/structure/c_transit_tube/diagonal/crossing(loc) + if(TRANSIT_TUBE_JUNCTION) C = new /obj/structure/c_transit_tube/junction(loc) - if(5) + if(TRANSIT_TUBE_STATION) C = new /obj/structure/c_transit_tube/station(loc) - if(6) + if(TRANSIT_TUBE_TERMINUS) C = new /obj/structure/c_transit_tube/station/reverse(loc) - if(7) + if(TRANSIT_TUBE_POD) C = new /obj/structure/c_transit_tube_pod(loc) if(C) C.add_fingerprint(usr) diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index 0ed904cb4a7..a9f758cf01d 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -3,10 +3,6 @@ // Mappers: use "Generate Instances from Directions" for this // one. -#define STATION_TUBE_OPEN 0 -#define STATION_TUBE_OPENING 1 -#define STATION_TUBE_CLOSED 2 -#define STATION_TUBE_CLOSING 3 /obj/structure/transit_tube/station name = "station tube station" diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 279241561f7..907f67f1b50 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -22,7 +22,7 @@ if(newdirection) setDir(newdirection) init_tube_dirs() - generate_decorative_tubes() + generate_tube_overlays() /obj/structure/transit_tube/Destroy() for(var/obj/structure/transit_tube_pod/P in loc) @@ -115,11 +115,6 @@ return enter_delay -// Parse the icon_state into a list of directions. -// This means that mappers can use Dream Maker's built in -// "Generate Instances from Icon-states" option to get all -// variations. Additionally, as a separate proc, sub-types -// can handle it more intelligently. /obj/structure/transit_tube/proc/init_tube_dirs() switch(dir) if(NORTH) @@ -132,29 +127,22 @@ tube_dirs = list(EAST, WEST) -//phil235 must deconstruct on Move() -//phil235 remember to update the maps! -// Look for diagonal directions, generate the decorative corners in each. -/obj/structure/transit_tube/proc/generate_decorative_tubes() +/obj/structure/transit_tube/proc/generate_tube_overlays() for(var/direction in tube_dirs) if(direction in diagonals) if(direction & NORTH) - create_decorative_tube(direction ^ 3, NORTH) - -// else -// create_decorative_tube(direction ^ 3, SOUTH) + create_tube_overlay(direction ^ 3, NORTH) if(direction & EAST) - create_decorative_tube(direction ^ 12, EAST) + create_tube_overlay(direction ^ 12, EAST) else - create_decorative_tube(direction ^ 12, WEST) + create_tube_overlay(direction ^ 12, WEST) else - create_decorative_tube(direction) + create_tube_overlay(direction) -// Generate a corner, if one doesn't exist for the direction on the turf. -/obj/structure/transit_tube/proc/create_decorative_tube(direction, shift_dir) +/obj/structure/transit_tube/proc/create_tube_overlay(direction, shift_dir) var/image/I if(shift_dir) I = image(loc = src, icon_state = "decorative_diag", dir = direction) @@ -176,7 +164,7 @@ //Some of these are mostly for mapping use /obj/structure/transit_tube/horizontal - dir = 8 + dir = WEST /obj/structure/transit_tube/diagonal @@ -194,9 +182,18 @@ if(WEST) tube_dirs = list(NORTHWEST, SOUTHEAST) - +//mostly for mapping use /obj/structure/transit_tube/diagonal/topleft - dir = 8 + dir = WEST + +/obj/structure/transit_tube/diagonal/crossing + density = 0 + icon_state = "diagonal_crossing" + tube_construction = /obj/structure/c_transit_tube/diagonal/crossing + +//mostly for mapping use +/obj/structure/transit_tube/diagonal/crossing/topleft + dir = WEST /obj/structure/transit_tube/curved @@ -266,5 +263,6 @@ tube_construction = /obj/structure/c_transit_tube/crossing density = 0 +//mostly for mapping use /obj/structure/transit_tube/crossing/horizontal - dir = 8 + dir = WEST diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm index e2a7caf6894..f2b0a3135de 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm @@ -4,7 +4,7 @@ /obj/structure/c_transit_tube name = "unattached transit tube" icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' - icon_state = "straight" //icon_state decides which tube will be built + icon_state = "straight" density = 0 layer = LOW_ITEM_LAYER //same as the built tube anchored = 0 @@ -23,9 +23,7 @@ /obj/structure/c_transit_tube/proc/tube_flip() if(flipped_build_type) flipped = !flipped - var/cur_flip = flipped - if(initial(flipped)) - cur_flip = !cur_flip + var/cur_flip = initial(flipped) ? !flipped : flipped if(cur_flip) build_type = flipped_build_type else @@ -52,8 +50,7 @@ return if(!in_range(src, user)) return - else - tube_rotate() + tube_rotate() /obj/structure/c_transit_tube/verb/flip() set name = "Flip" @@ -119,6 +116,10 @@ icon_state = "diagonal" build_type = /obj/structure/transit_tube/diagonal +/obj/structure/c_transit_tube/diagonal/crossing + icon_state = "diagonal_crossing" + build_type = /obj/structure/transit_tube/diagonal/crossing + /obj/structure/c_transit_tube/curved icon_state = "curved0" diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 01c77ca4e3c..d34cd74aad2 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -214,8 +214,3 @@ if(TT.has_exit(direction)) setDir(direction) return - -#undef STATION_TUBE_OPEN -#undef STATION_TUBE_OPENING -#undef STATION_TUBE_CLOSED -#undef STATION_TUBE_CLOSING \ No newline at end of file diff --git a/icons/obj/atmospherics/pipes/transit_tube.dmi b/icons/obj/atmospherics/pipes/transit_tube.dmi index 96083f5fb2c440d9c3fdc2b890b817cb1f1dde87..c3c7bdc07fe1e1124ad116350b9b4068fb4bce65 100644 GIT binary patch delta 26270 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 O2t92htuhU}(EkD|No>;q delta 24813 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 cCtbRRS Date: Thu, 3 Nov 2016 19:19:32 +0100 Subject: [PATCH 5/5] Removed another outdated comment --- code/game/objects/structures/transit_tubes/transit_tube.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 907f67f1b50..8391f1b6819 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -35,7 +35,7 @@ /obj/structure/transit_tube/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/wrench)) - if(tube_construction) //decorative diagonals cannot be unwrenched directly + if(tube_construction) for(var/obj/structure/transit_tube_pod/pod in src.loc) user << "Remove the pod first!" return