Merge pull request #21342 from phil235/TransitShit

Fixes transit tubes
This commit is contained in:
Cheridan
2016-11-05 17:21:24 -05:00
committed by GitHub
30 changed files with 1396 additions and 1558 deletions
+31 -58
View File
@@ -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
@@ -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
+49 -67
View File
@@ -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
+72 -93
View File
@@ -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
File diff suppressed because it is too large Load Diff
+21 -32
View File
@@ -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
+18 -1
View File
@@ -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
#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
-47
View File
@@ -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.
+2 -2
View File
@@ -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("<span class='notice'>[occupant] emerges from [src]!</span>",
"<span class='notice'>You climb out of [src]!</span>")
open_machine()
/obj/machinery/sleeper/relaymove(mob/user)
container_resist()
container_resist(user)
/obj/machinery/sleeper/open_machine()
if(!state_open && !panel_open)
+1 -2
View File
@@ -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
+30 -36
View File
@@ -195,16 +195,16 @@ Nah
return 1
var/dat = {"<B>Transit Tubes:</B><BR>
<A href='?src=\ref[src];tube=0'>Straight Tube</A><BR>
<A href='?src=\ref[src];tube=1'>Straight Tube with Crossing</A><BR>
<A href='?src=\ref[src];tube=2'>Curved Tube</A><BR>
<A href='?src=\ref[src];tube=3'>Diagonal Tube</A><BR>
<A href='?src=\ref[src];tube=4'>Junction</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_STRAIGHT]'>Straight Tube</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_STRAIGHT_CROSSING]'>Straight Tube with Crossing</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_CURVED]'>Curved Tube</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_DIAGONAL]'>Diagonal Tube</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_DIAGONAL_CROSSING]'>Diagonal Tube with Crossing</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_JUNCTION]'>Junction</A><BR>
<b>Station Equipment:</b><BR>
<A href='?src=\ref[src];tube=5'>Through Tube Station</A><BR>
<A href='?src=\ref[src];tube=6'>Terminus Tube Station</A><BR>
<A href='?src=\ref[src];tube=7'>Tube Blocker</A><BR>
<A href='?src=\ref[src];tube=8'>Transit Tube Pod</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_STATION]'>Through Tube Station</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_TERMINUS]'>Terminus Tube Station</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_POD]'>Transit Tube Pod</A><BR>
"}
user << browse("<HEAD><TITLE>[src]</TITLE></HEAD><TT>[dat]</TT>", "window=pipedispenser")
@@ -219,34 +219,28 @@ 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(TRANSIT_TUBE_STRAIGHT)
C = new /obj/structure/c_transit_tube(loc)
if(TRANSIT_TUBE_STRAIGHT_CROSSING)
C = new /obj/structure/c_transit_tube/crossing(loc)
if(TRANSIT_TUBE_CURVED)
C = new /obj/structure/c_transit_tube/curved(loc)
if(TRANSIT_TUBE_DIAGONAL)
C = new /obj/structure/c_transit_tube/diagonal(loc)
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(TRANSIT_TUBE_STATION)
C = new /obj/structure/c_transit_tube/station(loc)
if(TRANSIT_TUBE_TERMINUS)
C = new /obj/structure/c_transit_tube/station/reverse(loc)
if(TRANSIT_TUBE_POD)
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
+2 -3
View File
@@ -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("<span class='notice'>You see [user] kicking against the doors of [src]!</span>", "<span class='notice'>You start kicking against the doors...</span>")
+1 -1
View File
@@ -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()
@@ -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()
+1 -1
View File
@@ -886,7 +886,7 @@
else
return 0
/obj/mecha/container_resist()
/obj/mecha/container_resist(mob/living/user)
go_out()
+1 -2
View File
@@ -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
@@ -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
+1 -1
View File
@@ -126,7 +126,7 @@
return
..()
/obj/proc/container_resist()
/obj/proc/container_resist(mob/living/user)
return
/obj/proc/update_icon()
+2 -2
View File
@@ -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 << "<span class='notice'>You slam yourself into the side of [O].</span>"
container_resist()
container_resist(user)
/obj/structure/bodycontainer/proc/open()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
@@ -2,17 +2,21 @@
// A place where tube pods stop, and people can get in or out.
// Mappers: use "Generate Instances from Directions" for this
// one.
/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 +29,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 +49,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].", "<span class='notice'>You insert the [R].</span>")
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].", "<span class='notice'>You insert [R].</span>")
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 +69,23 @@
for(var/obj/structure/transit_tube_pod/pod in loc)
pod.visible_message("<span class='warning'>[user] starts putting [GM] into the [pod]!</span>")
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.", "<span class='notice'>You start emptying [pod]'s contents onto the floor...</span>")
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 +94,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 << "<span class='warning'>Empty the pod first!</span>"
return
user.visible_message("[user] removes the [pod].", "<span class='notice'>You remove the [pod].</span>")
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 +140,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))
@@ -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_tube_overlays()
/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)
for(var/obj/structure/transit_tube_pod/pod in src.loc)
user << "<span class='warning'>Remove the pod first!</span>"
return
user.visible_message("[user] starts to deattach \the [src].", "<span class='notice'>You start to deattach the [name]...</span>")
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 << "<span class='notice'>You deattach the [name].</span>"
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
@@ -151,143 +115,154 @@
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_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
/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)
// 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])]"
// 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_tube_overlays()
for(var/direction in tube_dirs)
if(direction in diagonals)
if(direction & NORTH)
create_automatic_decorative_corner(get_step(loc, NORTH), direction ^ 3)
create_tube_overlay(direction ^ 3, NORTH)
else
create_automatic_decorative_corner(get_step(loc, SOUTH), direction ^ 3)
if(direction & EAST)
create_tube_overlay(direction ^ 12, EAST)
if(direction & EAST)
create_automatic_decorative_corner(get_step(loc, EAST), direction ^ 12)
else
create_tube_overlay(direction ^ 12, WEST)
else
create_tube_overlay(direction)
else
create_automatic_decorative_corner(get_step(loc, WEST), direction ^ 12)
/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)
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)
// 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()
//Some of these are mostly for mapping use
/obj/structure/transit_tube/horizontal
dir = WEST
/obj/structure/transit_tube/diagonal
icon_state = "diagonal"
tube_construction = /obj/structure/c_transit_tube/diagonal
// 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()
/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)
if(text in direction_table)
return direction_table[text]
//mostly for mapping use
/obj/structure/transit_tube/diagonal/topleft
dir = WEST
var/list/split_text = splittext(text, "-")
/obj/structure/transit_tube/diagonal/crossing
density = 0
icon_state = "diagonal_crossing"
tube_construction = /obj/structure/c_transit_tube/diagonal/crossing
// 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
//mostly for mapping use
/obj/structure/transit_tube/diagonal/crossing/topleft
dir = WEST
var/list/directions = list()
for(var/text_part in split_text)
var/direction = text2dir_extended(text_part)
/obj/structure/transit_tube/curved
icon_state = "curved0"
tube_construction = /obj/structure/c_transit_tube/curved
if(direction > 0)
directions += direction
/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)
direction_table[text] = directions
return directions
/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
//mostly for mapping use
/obj/structure/transit_tube/crossing/horizontal
dir = WEST
@@ -4,58 +4,44 @@
/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"
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 << "<span class='notice'>Alt-click to rotate it clockwise.</span>"
//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 = initial(flipped) ? !flipped : flipped
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)
..()
@@ -64,18 +50,7 @@
return
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 +59,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 << "<span class='notice'>You start attaching the [name]...</span>"
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 << "<span class='notice'>You attach the [name].</span>"
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 +80,79 @@
// 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/diagonal/crossing
icon_state = "diagonal_crossing"
build_type = /obj/structure/transit_tube/diagonal/crossing
/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
@@ -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].", "<span class='notice'>You empty \the [src].</span>")
empty()
return
empty_pod()
else
user << "<span class='notice'>You free \the [src].</span>"
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].", "<span class='notice'>You remove [src].</span>")
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 << "<span class='notice'>You start trying to escape from the pod...</span>"
if(do_after(user, 600, target = src))
user << "<span class='notice'>You manage to open the pod.</span>"
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,25 @@
// 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
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
@@ -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 << "<span class='notice'>You struggle inside the cryotube, kicking the release with your foot... (This will take around 30 seconds.)</span>"
audible_message("<span class='notice'>You hear a thump from [src].</span>")
if(do_after(user, 300))
@@ -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))
@@ -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()
+2 -2
View File
@@ -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)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB